磁盘分区的 4K 对齐(普及帖)
https://www.itsk.com/thread-385047-1-1.html
为了方便阅读和理解,本文将采用问答式行文。所以可以称为: 4K 对
齐十问
1、什么是 4K 对齐?早期的硬盘一个扇区的大小是 512 个字节,后来随之磁盘容量的
不断增加和读写效率提升的要求,国际硬盘协会制定了全新标准,将每个扇区的大小调整
为 4096 个字节,也就是 4KB,这种扇区又叫 4K 扇区。4K 对齐指的就是对磁盘分区时,让
分区的起始扇区位于某一个 4K 扇区的起始位置。
2、为什么会有 4K 不对齐?
当硬盘扇区改成 4K 扇区之后,为了兼容以前的标准,为了方便技术人员的固有思维,为了
保证靠扇区识别的旧的操作系统和应用软件不会出错,厂商把一个 4K 扇区虚拟成 8 个
512B 扇区
,以便和以前的单位统一。这样一来,从这 8 个扇区中的第一个扇区开始的分区,就是 4K
对齐了的,从其他 7 个扇区开始的分区,就是 4K 没有对齐的。
3、什么是簇和簇大小?
windows 为了提高数据读写速度,对分区空间进行了按簇划分,对于大于 2GB 的 NTFS 格式
的分区来说,windows 默认的簇大小是 4096 字节,也就是以 4KB 作为一个单位,所有的文
件都是对簇独占的,比如说一个 10KB 的文件,放在簇大小为 4K 的分区里,就会占掉 3 个
簇,所以实际占用空间为 12KB,如果一个文件夹里有 100 个 10KB 的文件,他们的实际大
小是 1000KB,但是占用空间却是 1200KB。但是如果把这些文件放到簇大小为 8K 的分区里,
每个 10KB 的文件就会占用 2 个簇,也就是 16KB,100 个文件实际大小仍是 1000KB,但占
用空间却是 1600KB。
4、簇大小有什么影响?
通过上一问,我们已经看出,簇大小较小时空间利用率较高,较大时会浪费更多空间,那
么为什么不把簇分的更小一些呢?这是因为 windows 在读取数据时是以簇为单位进行检索
的,识别到空白的簇会直接跳过,如果簇大小为 8K,识别 1MB 就是 128 个簇,如果簇大小
为 4K,同样识别 1MB 就是 256 个簇,如此一来就会在空白的簇上浪费掉更多的时间。也就
是说,簇越小,空间利用率越高,但读取速度也就越慢;反之,簇越大,空间利用率就越
低,但读取速度也就越快。NTFS 大分区的 windows 默认的簇大小一般是 4KB。
5、簇大小和 4K 对齐有什么关系?
windows 读写是按簇,磁盘读写则是按扇区,如果一个分区的起始扇区为一个 4K 扇区的第
2 个虚拟扇区,也就是 4K 没有对齐,那么对于簇大小为 4K 的分区,每一个簇都会被割裂