扇区4k对齐

#Disk #分区格式 #分区对齐
Documnet:
扇区
扇区的概念来自于物理硬盘,扇区是硬盘最小的物理存储单元。
之前的硬盘比较小,扇区的大小是512B。后来硬盘容量变大了,扇区的大小变成了4K。
但是为了兼容以前的系统读写,又发明了一个逻辑扇区的概念。 所谓的逻辑扇区就是硬盘内部,将4K的物理扇区在逻辑上划分为多个扇区片段,并将其作为普通的扇区(一般为512字节大小)报告给操作系统及应用软件。实际读写时,由硬盘内的程序(固件)负责在逻辑扇区与物理扇区之间进行转换,上层程序“感觉”不到物理扇区的存在。
所以逻辑扇区是一个人为制造的概念,在操作系统要读写某个逻辑扇区时,硬盘底层在实际操作时都会读写逻辑扇区所在的整个物理扇区。
簇
文件系统是操作系统和硬盘之间的接口。当我们需要读取一个文件的时候,会请求相应的文件系统打开一个文件。但是操作系统无法对数目众多的扇区(逻辑扇区)进行寻址,所以操作系统就会将相邻的扇区组合在一起,形成一个簇(Cluster)。
而且操作系统为了更好地管理磁盘空间和更高效地从硬盘读取数据,规定一个簇中只能放置一个文件的内容。因此文件所占用的空间,只能是簇的整数倍。
==即使文件实际大小小于一个簇的大小,它也要占一个簇的空间==。
所以,一般情况下文件所占空间要略大于文件的实际大小,只有在少数情况下,即文件的实际大小恰好是簇的整数倍时,文件的实际大小才会与所占空间完全一致。
计算文件所占空间时,可以用如下公式:
簇数=取整(文件大小/簇大小)+1 所占空间=簇数×磁盘簇大小
分区和格式化
分区是指从磁盘上划分出来的一大片连续的扇区。
格式化则是对分区范围内扇区的使用进行规划。 比如文件数据的储存如何安排、文件属性储存在哪里、目录结构如何存储等等。
格式化程序会将分区里面的所有扇区从头至尾进行分组,划分为固定大小的“簇”,并按顺序进行编号。每个“簇”可固定包含一个或多个扇区,其扇区个数总是2的n次方。格式化以后,分区就会以“簇”为最小单位进行读写。文件的数据、属性等等信息都要保存到“簇”里面。
分区对齐
划分分区时,是以逻辑扇区为单位进行划分的,分区可以从任意编号的逻辑扇区开始。
如果分区的起始位置没有对齐到某个物理扇区的边缘,格式化后,所有的“簇”也将无法对齐到物理扇区的边缘。
如下图所示,每个物理扇区由4个逻辑扇区组成。分区是从3号扇区开始的。格式化后,每个簇占用了4个扇区,这些簇都没有对齐到物理扇区的边缘,也就是说,每个簇都跨越了2个物理扇区。
由于磁盘总是以物理扇区为单位进行读写,在这样的分区情况下,当要读取某个簇时,实际上总是需要多读取一个物理扇区的数据。比如要读取0号簇共4个逻辑扇区的数据,磁盘实际执行时,必须要读取0号和1号两个物理扇区共8个逻辑扇区的数据。同理,对“簇”的写入操作也是这样。显而易见,这样会造成读写性能的严重下降。
下面再看对齐的情况。如下图所示,分区从4号扇区开始,刚好对齐到了物理扇区1的边缘,格式化后,每个簇同样占用了4个扇区,而且这些簇都对齐到了物理扇区的边缘。
在这样对齐的情况下,当要读取某个簇,磁盘实际执行时并不需要额外读取任何扇区,可以充分发挥磁盘的读写性能。显然这正是我们需要的。
由此可见,对于物理扇区大小与逻辑扇区大小不一致的磁盘,分区4K对齐才能充分发挥磁盘的读写性能。而不对齐就会造成磁盘读写性能的下降。




