扇区
概念: 扇区,顾名思义,每个磁盘有多条同心圆似的磁道,磁道被分割成多个部分。每部分的弧长加上到圆心的两个半径,恰好形成一个扇形,所以叫做扇区。扇区是磁盘中最小的物理存储单位。
扇区大小: 512B -> 4KB
扇区(Sector)大小是固定的,默认情况下,每个扇区(Sector)为512字节,2009年后,硬盘厂商开始发布4KB字节扇区的硬盘了,4KB扇区硬盘已经在消费级市场广泛应用。但是同一块硬盘上的扇区大小一定是一致的。不可能存在多种不同大小的扇区。
逻辑扇区、物理扇区
物理扇区是磁盘上真实存在对应的扇区;
逻辑扇区是由于扇区大小由512B变成4KB后, 为了与老系统兼容,操作系统层面上提出来的一个概念,是为了方便操作系统读取写入硬盘数据而设置的, 给系统进行识别后,可以通过一定的公式与物理地址对应再找到到指定的物理扇区上去。
由来
关于物理扇区(physical setctor)与逻辑扇区,这个还得扯上扇区大小,由于近年来,随着对硬盘容量的要求不断增加,为了提高数据记录密度,硬盘厂商往往采用增大扇区大小的方法,于是出现了扇区大小为4096字节的硬盘。我们将这样的扇区称之为“物理扇区”。但是这样的大扇区会有兼容性问题,有的系统或软件无法适应。为了解决这个问题,硬盘内部将物理扇区在逻辑上划分为多个扇区片段并将其作为普通的扇区(一般为512字节大小)报告给操作系统及应用软件。这样的扇区片段我们称之为“逻辑扇区”。实际读写时由硬盘内的程序(固件)负责在逻辑扇区与物理扇区之间进行转换,上层程序“感觉”不到物理扇区的存在。
逻辑扇区是硬盘可以接受读写指令的最小操作单元,是操作系统及应用程序可以访问的扇区,多数情况下其大小为512字节。我们通常所说的扇区一般就是指的逻辑扇区。物理扇区是硬盘底层硬件意义上的扇区,是实际执行读写操作的最小单元。是只能由硬盘直接访问的扇区,操作系统及应用程序一般无法直接访问物理扇区。一个物理扇区可以包含一个或多个逻辑扇区(比如多数硬盘的物理扇区包含了8个逻辑扇区)。当要读写某个逻辑扇区时,硬盘底层在实际操作时都会读写逻辑扇区所在的整个物理扇区。
参考: 存储基础知识:扇区与块/簇——带物理结构图
块/簇
**概念:**块(Block)/簇(Cluster)是逻辑上的概念,或者说是虚拟出来的概念(逻辑概念)。 分别对应Linux与Windows操作系统中的概念。
通俗的来讲,在Windows下如NTFS等文件系统中叫做簇;在Linux下如Ext4等文件系统中叫做块(block)。每个簇或者块可以包括2、4、8、16、32、64…2048、4096等2的n次方个扇区。
为什么要用磁盘块/簇?
A:
- 读取方便:由于扇区的Size比较小,数目众多时寻址时比较困难,所以操作系统就将相邻的扇区组合在一起,形成一个块,再对块进行整体的操作。(操作系统通过操作块, 来间接操作底层磁盘对扇区的读取,先找街道再找门户)
- 分离对底层的依赖:操作系统忽略对底层物理存储结构的设计。通过虚拟出来磁盘块的概念,在系统中认为块是最小的单位。
扇区与块/簇的区别
磁盘的读写基本单位是扇区。
- 磁盘的原理,物理实现,磁盘控制器是按照扇区这个单位读取等操作数据的。
文件系统就是操作系统的一部分,所以**文件系统读写(操作文件)**的最小单位是块。
- 操作系统是通过块/簇来做为单位读取等操作数据的。
and
从磁盘的物理结构来看存取信息的最小单位是扇区,一个扇区是512字节;
从操作系统对硬盘的存取管理来看,存取信息的最小单位是簇,簇是一个逻辑概念,一个簇可以是2、4、8、16、32或64个连续的扇区。
一个簇只能被一个文件占用,哪怕是只有1个字节的文件,在磁盘上存储时也要占用一个簇,这个簇里剩下的扇区是无用的。例如用NTFS文件系统格式化的时候默认是8个扇区组成一个簇,即4096字节。所以你如果保存了一个只有1字节的文件(例如字母N),它在磁盘上实际也要占用4096字节(4K),所以“簇”也可以理解为操作系统存取信息的最小单位。
QA:
Q、为什么磁盘块大小必须是扇区大小的整数倍呢?
A: 磁盘读取数据的基本单位就是一个扇区的大小,一个块的大小对于磁盘来说就是一次获取数据读取的扇区数*扇区大小,如果是整数倍的扇区数对于磁盘的IO更好,速度更快,也会更合理的利用资源。否则会对扇区进行分割。
Q、那么分成“大簇”和“小簇”有什么区别呢?
A:我如果硬盘下很多小文件,那么每一个小文件,都会占用一个“簇”。虽然这些小文件都小于一个“簇”。
“大簇”和“小簇”当然有很多区别,但是最大的区别是:“小簇”会节省空间,而“大簇”则反之。“大簇”的优势在于有益于文件的读取存取,简单而不严谨的说就是提升硬盘性能。
“大簇”——读取存取速度快,占用空间大
“小簇”——读取存取速度慢,占用空间小
而现在TB时代,即便是“大簇”大家完全也HOLD住,即便你全部是几KB、几字节的小文件。“大簇”盘也不会“小簇”盘多占出太多空间,但是性能的提升确是最少几倍的,特别是面对大型程序或者游戏的时候。
4K
4K对齐的意思是对齐到磁盘开头的4K这个数值。和按4K来格式化不是一回事。
Ans1: 4K对齐
随着时代发展,硬盘容量不断扩展,使得之前定义的每个扇区512字节不再是那么的合理,于是将每个扇区512字节改为每个扇区4096 个字节,也就是现在常说的“4K扇区”。随着NTFS成为了标准的硬盘文件系统,其文件系统的默认分配单元大小(簇)也是4096字节,为了使簇与扇区相对应,即使物理硬盘分区与计算机使用的逻辑分区对齐,保证硬盘读写效率,所以就有了“4K对齐”的概念。
新标准的”4K扇区”的硬盘在厂商为了保证与操作系统兼容的前提下,也将扇区模拟成512B(逻辑扇区),会默认定义为4096字节大小为一个簇,但因为其引导区占用了一个磁道共63个扇区,真正的文件系统在63号扇区之后。
我们通过计算得出前63个扇区大小为:512Bx63=32256B。并按照默认簇大小得出63扇区为:32256B÷4096B=7.875簇
即从第63个扇区结束,往后的每一个簇都会跨越两个物理单元,占据前一个单元的一小部分和后一个单元的一大部分。
而“4K对齐”主要是将硬盘的模拟扇区(512B)对齐到8的整数倍个“实际”4K扇区,即4096B*8=32768B,其正好跨过了63扇区的特性,从第64个扇区对齐。
Ans2: 4K格式化
4k对齐是硬盘分区中的一个专业术语,4K对齐就是符合4K扇区定义格式化过的硬盘,并且按照4K扇区的规则写入数据。一般来说,在给固态硬盘进行分区的时候,一定要勾选上4K对齐,否则会影响到SSD固态硬盘的性能与寿命。通俗的说,如果SSD不进行4K对齐,写入数据的写入点正好会介于两个4K扇区的之间,也就是说即使是写入最小量的数据,也会使用到两个4K扇区,这样会造成跨区读写,读写次数放大,从而影响磁盘性能。
SSD中的4K对齐的4K指4096字节,其中1个扇区为512字节。固态硬盘4K对齐中的2048是指2048个扇区,即
512B*2048=1048576B=1024KB,即1M对齐(4096就是2MB对齐),并满足4K对齐,该值只要是4096B的倍数就是4K对齐,理论上4K对齐只要是4096整数倍就可以,不过标准的一般都是选择4096。从实测来看,固态硬盘4K对齐选2048还是4096,性能区别并不大,小容量固态硬盘4K对齐,选择2048扇区对齐是可以的。而在Win10或者大容量SSD场景下,建议还是选默认的4096扇区对齐。
分区操作
Author: Mrli
Link: https://nymrli.top/2020/09/06/扇区、块-簇/
Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.