sudo fdisk -l命令出现警告:Partition 1 does not start on physical sector boundary的原因

出现这个警告的原因是分区起点不在物理扇区边界。用我们的常用的说法就是存在分区未4K对齐,下面浅浅解释一下:

早期的硬盘一个扇区的大小是512个字节,后来随之磁盘容量的不断增加和读写效率提升的要求,国际硬盘协会制定了全新标准,将每个扇区的大小调整为4096个字节,也就是4KB,这种扇区又叫4K扇区。4K对齐指的就是对磁盘分区时,让分区的起始扇区位于某一个4K扇区的起始位置。

当硬盘扇区改成4K扇区之后,为了兼容以前的标准,保证旧的操作系统和应用软件使用新磁盘不会出错,厂商把一个4K物理扇区虚拟成8个512字节的逻辑扇区。建立分区的时候从这8个扇区中的第一个扇区开始的分区,就是4K对齐了,从其他7个扇区开始的分区,就是4K没有对齐。

sudo fdisk -l查看磁盘分区信息

Disk /dev/sdb: 7.3 TiB, 8001563222016 bytes, 15628053168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 7CBFA9CA-D784-4396-9378-7A8FF05DE9C1

设备       Start      末尾      扇区  Size 类型
/dev/sdb1     34       32767       32734   16M Microsoft reserved
/dev/sdb2  32768 15628050431 15628017664  7.3T Microsoft basic data

Partition 1 does not start on physical sector boundary.

第三行可以看到:磁盘逻辑扇区(logical)为512字节,物理扇区(physical)为4K字节。

/dev/sdb2分区开始扇区为 32768 逻辑扇区,可以被八整除,说明4k对其正确,
/dev/sdb1扇区开始扇区为 34 逻辑扇区,无法被八整除,物理扇区从第三个虚拟开始,所以报错:分区1未在物理扇区边界上启动。

PS:为什么要4K对齐?
磁盘读写则是按扇区,为了简化寻址过程并提高数据传输效率,操作系统通过将多个扇区组合成一个更大的单位簇(格式化创建文件系统时设置,通常为4KB)来进行数据读写操作。假如一个分区的起始扇区为一个4K扇区的第3个虚拟扇区,也就是4K没有对齐时,每当系统操作一个簇时,磁头就要对两个4K扇区进行操作,当存在大量小文件的时候,操作速度就会较低。而正确的4K对齐就会提升读写速度,尤其是小文件的读写速度。

相比机械硬盘,固态硬盘虽无扇区概念,固态硬盘所使用的NAND颗粒的最小单位是页,页的大小一般也是4KB,所以固态硬盘的页,等同于机械硬盘的扇区。而且由于固态硬盘的工作原理以及垃圾回收机制,4K对齐对其速度影响远大于机械硬盘,所以对于固态硬盘,4K对齐更加必要。

posted @ 2024-04-08 20:08  学徒啊黑  阅读(95)  评论(0编辑  收藏  举报