分区4k对齐那些事情

828 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情 在对磁盘进行分区时,有一个很重要的注意事项,就是要将分区对齐,不对齐可能会造成磁盘性能的下降。尤其是固态硬盘SSD,基本上都要求4K对齐。

1. 4k对齐

4K对齐指的就是对磁盘分区时,让分区的起始扇区位于某一个4K扇区的起始位置。

如果4k不对齐,会极大的降低数据写入和读取的速度,还会增加固态硬盘不必要的写入次数,影响寿命。

2 物理扇区的概念

硬盘的基本读写单位是“扇区”,对于硬盘的读写操作,每次读写都是以扇区为单位进行的,最少一个扇区,通常是512个字节。

近年来,随着对硬盘容量的要求不断增加,为了提高数据记录密度,于是出现了扇区大小为4096字节的银盘。这样的扇区称之为“物理扇区”。但是这样的大扇区会有兼容性问题,为了适配,将物理扇区在逻辑上划分成多个扇区片段(逻辑扇区)。实际读写的时候由硬盘内的软件负责在逻辑扇区和物理扇区之间进行转换,上层程序“感觉”不到物理扇区的存在。

  • 逻辑扇区是硬盘可以接受读写指令的最小操作单元,是操作系统及应用程序可以访问的扇区,多数情况下其大小为512字节。
  • 物理扇区是硬盘底层硬件意义上的扇区,是实际执行读写操作的最小单元。是只能由硬盘直接访问的扇区,操作系统及应用程序一般无法直接访问物理扇区。

3. 分区及其格式化

磁盘在使用之前必须要先分区并格式化。简单的理解:

  • 分区就是指从磁盘上划分出来的一大片连续的扇区。
  • 格式化则是对分区范围内扇区的使用进行规划。

格式化之后,就可以存储文件了。格式化程序会将分区里面的所有扇区从头到尾进行分组,划分固定大小的“簇”,并按照顺序进行编号。分区就会以“簇”为最小单位进行读写。文件的数据、属性等信息都可以保存到“簇”里面。

  • 簇越小,空间利用率越高,但读取速度也就越慢;
  • 反之,簇越大,空间利用率就越低,但读取速度也就越快。

4. 为什么要分区对齐?

为什么要分区对齐

由于磁盘总是以物理扇区为单位进行读写,在簇都没有对齐到物理扇区边缘的分区情况下,当要读取某个簇时,实际上总是需要多读取一个物理扇区的数据。比如要读取0号簇共4个逻辑扇区的数据,磁盘实际执行时,必须要读取0号和1号两个物理扇区共8个逻辑扇区的数据。同理,对“簇”的写入操作也是这样。显而易见,这样会造成读写性能的严重下降。

4.2 簇大小和4K对齐有什么关系?

windows读写是按簇,磁盘读写则是按扇区,如果一个分区的起始扇区为一个4K扇区的第2个虚拟扇区,也就是4K没有对齐,那么对于簇大小为4K的分区,每一个簇都会被割裂在两个不同的4K扇区里,那么当windows操作一个完整的4K簇的文件时,磁头就要对两个4K扇区进行操作,当存在大量4K左右小文件的时候,操作速度就会较低。而正确的4K对齐就会提升读写速度,尤其是小文件的读写速度。

总结:对于物理扇区大小与逻辑扇区大小不一致的磁盘,分区4K对齐才能充分发挥磁盘的读写性能。而不对齐就会造成磁盘读写性能的下降。

5. 如何才能对齐

用“物理扇区大小”除以“扇区大小”就能得到每个物理扇区所包含的逻辑扇区个数。这个数值就是我们要对齐的扇区个数的最小值。只要将分区起始位置对齐到这个数值的整数倍就可以了。

比如物理扇区大小是4096字节,逻辑扇区大小是512字节,那么4096除以512,等于8。我们只要将分区起始位置对齐到8的整数倍扇区就能满足分区对齐的要求。

以物理扇区包含的逻辑扇区个数为基准,对齐到实际的物理扇区大小才是正确的。

参考文献

分区4K对齐那些事,你想知道的都在这里

为什么固态硬盘需要4k对齐:调整后可以提升读写效率减少额外写入