通过对这个“分配单元大小”的了解,可以了解磁盘备份时是如何只备份已使用空间的原理。也是对前面一篇文章《disk2vmdk将开机的硬盘克隆为vmdk虚拟磁盘的开源小工具》 的一点补充。
- 字面意思
它的另一个描述词是簇,但是“分配单元”更好理解,大概意思是每次申请一块磁盘空间时,至少需要的大小。可能你只生成了个文件1字节,但是背后其实至少占用了4096字节。这个概念是在分区层面,不是在磁盘层。
- 怎么查看分区的“分配单元”大小
方法1.用Winhex打开该分区,查看簇(cluster)的大小。
方法2.根据分区头的信息自己计算
如下图 ,在偏移B C D的位置,偏移BC两个字节,倒序(大小端转换)后,整型值是0x0200(512字节,表示一个扇区的大小), 偏移D是一个字节的整型值8(表示一个簇由几个扇区组成), 512*8=4096
- 那么磁盘哪些单元已经分配了?
NTFS格式的分区用winhex打开后,可以发现根目录有个$Bitmap文件,在windows资源管理器下是隐藏的,这个文件由底层文件系统驱动模块操控,写文件或删除文件时会更新描述哪些单位被分配了或释放了。
查看该文件,通常可以看到一片片的FF,其实是要按位来解析,每个字节8个位,0表示未分配,1表示已分配。例如第一个字节FF,那么该字节总共8位,从低位算第一位是1,表示该分区的第1个单元(簇)已分配,第二位也是1,表示该分区的第2个单元(簇)已分配。以此类推,第二字节也是FF,从低位算第一位其实已经是$Bitmap的第9位了,表示该分区的第9个单元(簇)已分配。