物理扇区,逻辑扇区,簇,4K对齐等基础概念介绍
我们在使用disKgenius软件操作磁盘的时候,经常能遇到涉及到磁盘底层的操作,比如物理扇区,逻辑扇区,簇,4K对齐,MFT表,文件系统等等磁盘的基础概念。今天笔者来详细的介绍一下这些知识。
物理扇区
物理扇区是硬盘能操作的最小单元,物理扇区的常见大小是4KB。
早期的机械硬盘使用磁头在盘面上寻道来获取数据信息,盘面上最小的一块扇形的区域就是磁盘的一个物理扇区。它的形状类似于这样:

正是一个一个这样的扇形组成了整个磁盘盘面。
这一块小扇形一般可以存储4KB的数据。
所以一般情况下一个物理扇区的大小是4KB。
但这也不是绝对的,一个物理扇区可以存储多大的数据是硬盘制造商决定的,只是绝大多数硬盘制造商都制作4KB。一些企业级硬盘甚至可以达到8KB。
使用disKgenius软件可以查看磁盘的物理扇区大小。点击磁盘名称及可在右侧窗口查看。
逻辑扇区
逻辑扇区是硬盘给操作系统报告的最小寻址单元。由于历史遗留问题,在Windowsxp,dos等系统所处的年代,硬盘的物理扇区大小是512B,而不是现在的4KB。为了向下兼容,现在几乎所有的硬盘向操作系统报告的逻辑扇区大小都是512B。
由此可见,逻辑扇区是一个虚拟的扇区。
使用disKgenius软件可以查看磁盘的逻辑扇区大小,点击磁盘名称即可在右侧窗口查看。
在一般情况下,物理扇区=4KB,逻辑扇区=512B,则:
$$
4kb÷512b = 4×1024b÷512b = 8
$$
因此,每一个物理扇区被平均分为8份,8个逻辑扇区组成一个物理扇区。
硬盘分为两种:512e硬盘和4Kn硬盘。
在512e硬盘上,1物理扇区=8逻辑扇区(512 emulate)
在4Kn硬盘上,逻辑扇区=物理扇区=4KB(4K native)
大多数硬盘都是512e硬盘,一些较新型的硬盘是4Kn硬盘
簇
簇是文件系统分配文件的最小单元。常见的簇大小是4KB。
首先,先有了文件系统,才有簇。
文件系统是一簇一簇读取数据的,磁盘是一扇区一扇区读取数据的。
一个文件至少占用一个簇的空间。也就是说,当簇大小为4KB的时候,即使一个文件为1KB,那么他也要占用一个簇的空间,也就是占用4KB。
未被利用的那3KB被称为“内部碎片”。
这也是为什么我们看见一个文件或文件夹的大小和它占用空间不同的原因。
簇和逻辑扇区,物理扇区有什么关系呢?
为什么一般来说簇的大小和物理扇区的大小一样,都是4KB?难道这是巧合吗?
这便和4K对齐有关。
我们来看下图:

"底层"以4KB为单位长度,一段代表一个扇区。
"分区层"就是在磁盘上面划分分区。
如果4K对齐,那么情况就是上面的样子,4K未对齐,情况就是下面的样子。
4K对齐的情况下,分区的第一个逻辑扇区刚刚好落在磁盘的物理扇区的边界上。
4K对齐的情况下,分区的第一个逻辑扇区号×512B÷4K=整数。
簇是在分区被赋予文件系统后产生的,我们都知道格式化分区之后才能产生文件系统,格式化工具会让簇从分区起点开始向后连续分配。所以在簇大小等于物理扇区大小的整数倍的时候,只要分区起点4K对齐,簇也必然对齐。
为什么要让簇也和物理扇区4K对齐呢?
簇是文件系统可以操作数据的最小单元。也就是说,文件系统一簇一簇读写数据。
在簇和分区全都4K对齐的情况下,如果一个刚好4KB的文件存在于磁盘上,那么他刚刚好占满一个簇,刚刚好占满一个物理扇区,刚刚好占满八个逻辑扇区。
读取这个文件的时候,磁盘只需要读取他所占据的那个物理扇区即可,也就是只读取4KB的磁盘。
如果没有4K对齐呢?
如果一个分区的第一个扇区没有落在物理扇区的边缘,也就形成了上图中的第二种情况。这时,虽然簇还是4KB,但是一个簇就“骑跨”在两个物理扇区上。这时一个4KB大小的文件存储在这个簇上,那么就需要读写两个物理扇区。
这便是4K未对齐的问题。原本可以读取一个扇区解决的事情,现在却需要读取两个扇区,这大大降低了磁盘的读写效率,对于固态磁盘产生写放大,对于机械磁盘产生大量磁盘碎片,并减少磁盘寿命,降低读写速度,读写速度甚至减半。
所以4K对齐非常重要,为硬盘规划分区的时候一定不能忽视。
4K对齐的计算
$$
分区起始扇区号×逻辑扇区大小=物理扇区大小的整数倍
$$
簇的有限微调可以提升磁盘性能
在NTFS文件系统中,分区上的每一个文件信息(属性,扩展属性,权限,文件路径,所占用的簇号)元数据都被存储在MFT表上。
MFT表是NTFS文件系统的命根子,他也是以一个文件的形式存储在NTFS分区的根目录里的,但是一般不可见。
由于MFT表记录了一个文件占用的所有簇号,所以,我们可以通过增大簇的大小的方法减少一个文件占据的簇数量,以此精简MFT表。
这样做的优点是可以提升文件的读写速度,提高磁盘的响应速度,让读写速度更稳定,减少突然掉速的情况。
如何改变分区的簇大小?
只有在格式化分区的时候可以改变簇大小,格式化分区的时候选择分配单元大小,即可选择簇大小。默认的簇大小是4096B,也就是4KB。
什么时候建议更改簇大小?改为多少合适?
通过上面的介绍我们不难看出,如果我们经常读写小文件,那么如果设置过大的簇,必然会导致空间的浪费。因为如果设置簇为1MB,那么任何小于1MB的文件都会占用1MB的空间。
所以安装系统的分区不适合设置大簇。
如果一个分区几乎只存储单个大于1MB的文件,那么完全可以设置簇为1MB。但是如果设置簇过大,可能导致部分软件不兼容问题,而且超过1MB的簇大小对性能提升已经没有什么帮助了。所以,这种文件存储场景建议设置1MB簇大小就可以了。
1MB÷4KB=256,是整数,属于4K对齐的情况。
如何判断4K对齐?如何使分区4K对齐?
在disKgenius软件中,点击左侧一个磁盘的名称,点击上方“工具”,点击检查4K对齐情况即可。
但是disKgenius软件目前无法修复没有对齐的分区。
我们在使用disKgenius建立新分区的时候,可以配置4K对齐的参数。
新建分区的时候,有一个选择框:选择对齐到以下扇区数的整数倍。在这里可以选择逻辑扇区的整数倍。
通过查看被操作磁盘的逻辑扇区大小和物理扇区大小,我们可以确定有多少逻辑扇区组成一个物理扇区。在大多数情况下,物理扇区=4KB,逻辑扇区=512B。所以,8个逻辑扇区组成一个物理扇区。因此我们在选择对齐的时候,就需要选择至少为8个逻辑扇区的整数倍。8,16,32,64,128,256,512,1024,2048,4096都是8的倍数,都可以选择。
那么既然只要对齐到8个逻辑扇区就可以了,为什么disKgenius软件要提供那么多的8的倍数的选项呢?
disKgenius官方给出的解释是,这可以提高用户使用的自由度,提供更多的选择。
选择对齐到大数量扇区(如4096)和小数量扇区(如8)之间有什么区别吗?
肯定是有区别。选择大数量扇区会浪费更多的磁盘空间,但是这些浪费的空间微不足道。
稍微一动脑筋就可以想通。
首先,分区和分区之间是没有联系的。两个分区的的扇区并不需要严格的相接续。
在选择对齐到8个逻辑扇区的整数倍时:
如果第一个分区的最后一个逻辑扇区处于它所在物理扇区的中间某一处,那么为了4K对齐,下一个分区的第一个逻辑扇区就要向后平移,而不能与前一个分区直接相接续。由于设置的对齐扇区数是8,所以在极限的情况下,最多向后平移7个逻辑扇区就可以达到4K对齐。所以,中间的7个逻辑扇区就被闲置成为空闲空间,大小为7×512B=3584B。这3584B的空间就被浪费了。
在选择对齐到4096个逻辑扇区的整数倍时:
如果第一个分区的最后一个逻辑扇区处于它所在物理扇区的中间某一处,那么为了4K对齐,下一个分区的第一个逻辑扇区就要向后平移,而不能与前一个分区直接相接续。由于设置的对齐扇区数是4096,所以在极限的情况下,最多需要向后平移4095个逻辑扇区就可以达到4K对齐。所以,中间的4095个逻辑扇区就被闲置成为空闲空间,大小为4095×512B=2096640B=2047.5KB。这2047.5KB空间就被浪费了。
由上述分析可见,讨论这个问题没什么用。因为这些空间实在太小了,不值一提。
所以,只要保证是8的倍数,就可以实现4K对齐,不必考虑这个倍数具体的值。