4K扇区、4K簇、4K对齐是什么关系?
使用固态硬盘的朋友都听到过4K对齐这个概念。4K对齐和4K物理扇区、4K簇之间有着神秘的关系。
为了方便管理,文件在硬盘中的空间分配并不是按照字节来进行的,而是有一个最小的存取单位:簇(Cluster),也叫分配单元。分配单元的大小取决于文件系统,是一个可变的量。通常我们在Windows内使用的NTFS的分配单元默认是4KB。
起初,硬盘的物理扇区(Physical Sectors)和逻辑扇区(LBA sectors)大小都是512字节,这样无论NTFS文件系统的4K分配单元如何偏移,物理扇区和逻辑扇区都是一一对应关系。
后来,随着机械硬盘引入4K高级格式化以及固态硬盘的问世,硬盘的物理扇区从512字节扩增到4KB。这时,如果NTFS分配单元不能和物理扇区完成对齐的话,单次的读写操作就会被放大成多次读写,造成读写性能下降和硬盘实际写入量增加。
更令事态雪上加霜的是,自从DOS时代开始,第一个硬盘分区的相对于盘首的默认偏移量恰好不是4K的整数倍--31.5KB。除了老版本Windows分区时不能正确对齐4K之外,不少核心较老的WinPE维护系统也会造成4K不对齐,这使得很多习惯用Win PE进行系统安装的朋友,在不知不觉中造成了固态硬盘性能下滑和寿命缩短。
下图为4K对齐前后的东芝RC100 240G NVMe固态硬盘AS SSD Benchmark测速结果对比:
机械硬盘采用4K高级格式化是为了提高空间利用率,同时也对提升纠错能力有一定帮助。而固态硬盘则是由于闪存工作原理的限制,最小读写的单位是Page页,而在绝大多数固态硬盘当中给,Page页的大小被"定义"为4KB(尽管当代固态硬盘的Page页实际为16K大小,但固件对4K读写做了充足的优化)。
上图中的Main Area就是Page页当中的数据区,实际大小通常为16KB。Spare Area用于存储闪存ECC纠错信息等元数据。
可能有朋友会突发奇想,既然4K对齐问题中有NTFS文件系统4KB分配单元的因素,那么我把分配单元改小到512字节,是不是就完美解决4K不对齐问题了呢?
这个想法虽然很新奇,但是NTFS的默认分配单元设置为4KB是经过了充分考虑的结果, 过大的分配单元会造成存储空间的浪费(1K字节的文件页要占用最小一个分配单元的存储空间)。
分配单元过小则会影响效率。由于文件采用链式存储,过小的分配单元会增加所需存储单元的数量,增加磁盘碎片风险。虽然大家常说固态硬盘不怕磁盘碎片,但这句话的实际意思是固态硬盘在面临磁盘碎片时产生的性能影响远小于机械硬盘:固态硬盘的顺序读写速度页是远胜随机读写的,如果磁盘碎片太多,一些原本可以顺序读写的数据就变成了随机读写。
如果采用512字节作为NTFS的分配单元大小,AS SSD Benchmark会认为当前不存在4K对齐问题(文件分配单元和硬盘报告的扇区大小一致,都是512字节),但是性能相比正常4K分配单元并对齐的情况要差很多,这是因为无论是当代操作系统还是固态硬盘,都只为4K存取进行了优化。下图为东芝TR200固态硬盘,使用512分配单元与4K分配单元的性能对比:
多数固态硬盘报告自己的物理扇区大小是512字节,其实只是为了兼容某些系统和底层软件,里边的物理扇区早已经变成16KB,并由固件专为4KB以上存取做了优化。
以上就是4K物理扇区、4K文件分配单元、4K对齐的概念与关系。对于普通用户而言,使用微软原版系统镜像,在安装过程中正常对硬盘分区和格式化,4K就会自动对齐。如果通过AS SSD Benchmark发现了由于意外造成的不对齐现象,也可以通过免费的分区助手软件进行无损调整。
2022-05-06 03:17:45