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结点的知识.