1 HFS文件系統概念
分層文件系統(Hierarchical File System,HFS)是一種由蘋果電腦開發,并使用在Mac OS上的文件系統。最初被設計用于軟盤和硬盤,同時也可以在在只讀媒體如CD-ROM上見到。
2 HFS文件系統開發過程
HFS首次出現在1985年9月17日,作為Macintosh電腦上新的文件系統。它取代只用于早期Mac型號所使用的平面文件系統Macintosh File System(MFS)。因為Macintosh電腦所產生的數據,比其它通常的文件系統,如DOS使用的FAT或原始Unix文件系統所允許存儲的數據更多。蘋果電腦開發了一種新式更適用的文件系統,而不是采用現有的規格。例如,HFS允許文件名最多有31個字符的長度,支持metadata和雙分支(每個文件的數據和資源支分開存儲)文件。
盡管HFS象其它大多數文件系統一樣被視為專有的格式,因為只有它為大多數最新的操作系統提供了很好的通用解決方法以存取HFS格式磁盤。
在1998年,蘋果電腦發布了HFS Plus,其改善了HFS對磁盤空間的地址定位效率低下,并加入了其它的改進。當前版本的Mac OS仍舊支持HFS,但從Mac OS X開始HFS卷不能作為啟動用。
3 構成方式
分層文件系統把一個卷分為許多512字節的“邏輯塊”。這些邏輯塊被編組為“分配塊”,這些分配塊可以根據卷的尺寸包含一個或多個邏輯塊。HFS對地址分配塊使用16位數值,分配塊的最高限制數量是65536。
組成一個HFS卷需要下面的五個結構:
1.卷的邏輯塊0和1是啟動塊,它包含了系統啟動信息。例如,啟動時載入的系統名稱和殼(通常是Finder)文件。
2.邏輯塊2包含主目錄塊(Master Directory Block,簡稱MDB)。
3.邏輯塊3是卷位圖(Volume Bitmap)的啟動塊,它追蹤分配塊使用狀態。
4.總目錄文件(Catalog File)是一個包含所有文件的記錄和儲存在卷中目錄的B*-tree。
5.擴展溢出文件(Extent Overflow File)是當最初總目錄文件中三個擴展占用后,另外一個包含額外擴展記錄的分配塊對應信息的B*-tree。
4 HFS和HFS+文件系統異同比較
HFS+文件系統是HFS 文件系統的更新版本,它改進了HFS 文件系統的結構和對數據管
理中存在的不足。HFS+文件系統的主要特點體現在以下幾個方面:
(1)采用32bit 記錄分配塊數量
HFS 和HFS+文件系統對磁盤卷采用分塊進行分配,將一個卷分成等大的分配塊。HFS
文件系統采用16bit 來記錄分配塊的數量,最多只能描述216個分配塊。而對于HFS+文件系
統,采用32bit 來記錄分配塊的數量,最多能描述232 個分配塊。對于Mac 系統上的非空數
據,都必須占用整數個分配塊,也就是說,即使一個數據只有一個字節,也要占用一個分配
塊。而HFS+文件系統增大了每個卷分配塊的數量,可以使分配塊的單位空間更小,從而達
到減少存儲空間浪費的目的。
(2)目錄樹節點大小增加到4KB
HFS 文件系統的目錄樹節點大小為512 字節,由于HFS+文件系統目錄樹索引節點需要
存儲附加指針和節點描述符兩個關鍵值,HFS+文件系統的目錄樹節點大小增加到4KB。
(3)單一文件大小得到提升
HFS 文件系統的單一文件大小上限為231bit,而HFS+文件系統的單一文件大小最大可
達到263bit。
(4)支持長文件名
HFS 文件系統對文件名最長支持到31 個字符,而HFS+文件系統對文件名采用Unicode
編碼,最長達到255 個字符。
5 HFS文件系統恢復案例詳解
在HFS+文件系統里,卷頭位于卷的2號扇區,并在卷尾倒數第二個扇區有個備份,下圖是一個完整的卷頭的圖:
各字節含義:
0x00~0x01:2個字節,簽名標志0x482B(H+);
0x02~0x03:2個字節,版本;
0x04~0x07:4個字節,屬性;
0x08~0x0B:4個字節,最后裝載版本;
0x0C~0x0F:4個字節,日志信息塊;
0x10~0x13:4個字節,建立時間;
0x14~0x17:4個字節,修改時間;
0x18~0x1B:4個字節,備份時間;
0x00~0x23:4個字節,文件數;
0x24~0x27:4個字節,文件夾數;
0x28~0x2B:4個字節,分配塊大小字節數,默認為4096;
0x2C~0x2F:4個字節,總塊數;
0x30~0x33:4個字節,空閑塊數;
0x34~0x37:4個字節,下一個分配塊號;
0x38~0x3B:4個字節,資源交叉組大小;
0x3C~0x3F:4個字節,數據交叉組大小;
0x40~0x43:4個字節,下一目錄ID;
0x44~0x47:4個字節,寫入計數;
下圖是winhex模板分析的結果
借助于對HFS+卷頭的理解,我們可以很容易的用R-studio來恢復蘋果系統的數據.如果要分析蘋果系統的raid,我們還要弄懂i結點的知識.