HFS+文件系统Winhex模版源码及模版下载[url]http://www.tysjhf.com/jszl/[/url]
u 在HFS+文件系统中,磁盘被分成512字节的逻辑块,称为“扇区”。所有的扇区从0开始编号,直到磁盘的最大扇区数减1。
u 在一个文件卷内,HFS+把所有的扇区分成等大的组,称其为“分配块(allocateion blocks),一个分配块占用一组连续的扇区。
提示:其实,
HFS+
中的分配块类似于
FAT32
、
NTFS
中的簇,甚至可以说是相同的,只是工作环境与名称不同而已。
Ø 分配块的大小为2的整数次幂,且大于等于512字节。这个值在卷初始化时被设定,并且在卷存在的过程中不能被修改,除非重新对卷进行初始化。
Ø HFS+用32-bit记录分配块的数量,因此,最多可以管理2的32次方个分配块。
注意:一般情况下,分配块的大小为
4KB
,这是最优化的分配块大小。
u 所有的文件结构,包括卷头,都包含在一个或者几个分配块中(也有例外的情况比如the alternate volume header--备份卷头,后面介绍)。这点不同于HFS,HFS中的特殊结构(包括启动块、主目录块和位图)不属于任何分配块。
提示:用每分配块的大小字节数(在
HFS
卷标头偏移
20H
~
24H
、或
HFS
+的卷标头中偏移
28H
~
2BH
处的
4
个字节表示)除以
512
字节(每扇区字节数)所得到的“每分配块大小扇区数,直接乘以分配块号就可以得到一个分配块的第一个扇区所在位置。
u 为了减少文件碎片的产生,HFS+在为文件分配存储空间的时候,会尽可能地为其分配一组连续的分配块或块组。块组的大小通常为分配块大小的整数倍,这个值在卷头中说明。
注意:域文件(
extend files
)在实际存储过程中并不严格遵循这一算法,在卷头和目录记录中记录它的“块组”值并不是必需的,只需要有存储它们的值的空间就可以了。
u 对于非连续存储的文件,Mac OS采用“下一可用分配策略”为其分配存储空间。即当Mac OS接收到文件空间分配请求时,如果首先找到的空闲空间无法满足请求的空间大小,则继续从下一个找到的空闲块开始继续分配,如果这次找到的连续空闲空间足够大,则根据请求空间的大小分配“块组”大小的整倍数空间给这个文件。
本文转自老骥伏枥51CTO博客,原文链接:http://blog.51cto.com/sjhfml/140318,如需转载请自行联系原作者