我使用过fdisk -l
并且见过这个。
Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 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
Disk identifier: 0x580a1fd4
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 206847 102400 7 HPFS/NTFS/exFAT
/dev/sda2 206848 417083391 208438272 7 HPFS/NTFS/exFAT
/dev/sda3 417095656 1953523711 768214028 f W95 Ext'd (LBA)
/dev/sda5 417095658 1871315459 727109901 7 HPFS/NTFS/exFAT
Partition 5 does not start on physical sector boundary.
/dev/sda6 1871316992 1900611583 14647296 83 Linux
/dev/sda7 1900613632 1908424703 3905536 82 Linux swap / Solaris
/dev/sda8 1908426752 1953523711 22548480 83 Linux
这表明我的逻辑分区sda5
结束于1871315459
并sda6
开始于1871316992
。那么我的1533 sectors
ie766 kb
去哪儿了?
答案1
这是对齐的事情
出于性能原因,您确实希望您的存储在所有级别上都对齐。虽然这可能只是一个简单的硬盘,上面有分区表和文件系统,但不要错位仍然很重要。
那么对齐又如何呢?
假设您的硬盘驱动器使用 4 kB 扇区(您的硬盘驱动器似乎使用 512 字节),并且您已将分区对齐为仅以单个字节偏移量开始,那么更新单个 4 kB 文件系统页面将放大为磁盘上的两个扇区写入。 4 kB 变成 8 kB 时,这不是什么大问题,但在更大的系统或 RAID 设置中,一旦条带大小(块大小)变成数百千字节甚至兆字节,这就会成为一个真正的问题。 一旦在这个条带大小上错位,这可以将不幸的 4 kB 文件系统块放大到 2 倍块大小(例如 2 MB)写入磁盘,同时也会影响奇偶校验计算(如果有)。
SSD 和其他基于闪存的驱动器受到的影响更大。通常,这些驱动器使用巨大的页面大小。我见过 512 kB“扇区”大小的 USB 闪存驱动器,这是 SSD 驱动器的常见大小 IIRC。在其上使用多层(例如 dm-crypt、LVM、文件系统)时错位可能会导致巨大的写入放大(除了他们已经拥有的之外)你真的想避免不必要的穿的驱动器。
那么我的驱动器上为什么会出现这个间隙?
大多数最新实用程序都只使用 1 MB 磁盘对齐作为安全默认值。这是常见设置的最低标准,可避免大多数错位,同时不会损失太多空间。
在 1 TB 上获得 766 kB 并不值得它造成的性能影响。
我可以修复这个问题吗?
是的,你可以,你必须查看驱动器的规格、文件系统的块大小并自己找出正确的对齐方式,然后自己修复分区表。不过这样做有点危险。
在您的情况下sda5
,可能未对齐(开始),我会sda5
在适合我的场合将其移动到正确的对齐位置(先备份数据!)。