我有一块 1TB 的 WD 硬盘,装有 Windows 10 和 Devuan Linux Beowulf。在安装这两个操作系统之前,我已经使用 gparted IIRC 进行了分区。如何验证它是否 4k 对齐?如果不是,如何调整分区以进行 4k 对齐?
:~# fdisk -l -u /dev/sdb
Disk /dev/sdb: 931.53 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: WDC WD10EZEX-00B
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: ~~
Device Start End Sectors Size Type
/dev/sdb1 233455616 799057919 565602304 269.7G Linux filesystem
/dev/sdb2 799057920 1132386303 333328384 159G Linux filesystem
/dev/sdb3 1132386304 1214937087 82550784 39.4G Linux filesystem
/dev/sdb4 1214937088 1302333439 87396352 41.7G Linux filesystem
/dev/sdb5 1302333440 1631836159 329502720 157.1G Linux filesystem
/dev/sdb6 1631836160 1734492159 102656000 49G Microsoft basic data
/dev/sdb7 1734492160 1925926911 191434752 91.3G Microsoft basic data
/dev/sdb8 1925926912 1925959679 32768 16M Microsoft reserved
:~# sfdisk -d /dev/sdb
label: gpt
label-id: ~~
device: /dev/sdb
unit: sectors
first-lba: 34
last-lba: 1953525134
/dev/sdb1 : start= 233455616, size= 565602304, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=5DD63D2A-3ABF-4BB3-AE6F-A1815BC17064, name="Linux filesystem"
/dev/sdb2 : start= 799057920, size= 333328384, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=2DED301A-37F7-4A96-BCF4-01E4DE66E5E2, name="Linux filesystem"
/dev/sdb3 : start= 1132386304, size= 82550784, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=C136ED50-3AD2-4A8A-B31E-562479C46047, name="Devuan home"
/dev/sdb4 : start= 1214937088, size= 87396352, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=00F33DAC-24A9-4715-A561-CE5DC8100552, name="Devuan"
/dev/sdb5 : start= 1302333440, size= 329502720, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=0026F9E4-12E8-4C56-8E06-F18842201377, name="Linux filesystem"
/dev/sdb6 : start= 1631836160, size= 102656000, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, uuid=EBD4DD74-CBC0-41BC-91C0-E5C3DE1FDE07, name="Basic data partition"
/dev/sdb7 : start= 1734492160, size= 191434752, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, uuid=D5BDB9D1-986A-4956-B65E-8662F2471F18
/dev/sdb8 : start= 1925926912, size= 32768, type=E3C9E316-0B5C-4DB8-817D-F92DF00215AE, uuid=DF6D1F70-A8DB-4463-AE92-D355AC31981F, name="Microsoft reserved partition"
我打算将 FreeBSD 12.1 安装到此驱动器上,通过 bsdinstall (cui/tui) 对 FreeBSD 进行分区有点棘手。FreeBSD 工具建议使用 4k 对齐边界。(gpart -a 4k ...)
答案1
如何验证它是否是 4k 对齐的?
让我们举/dev/sdb1
个例子。它从逻辑扇区开始233455616
。您的逻辑扇区大小为字节512
。扇区从开始编号,因此分区前0
正好有逻辑扇区,每个扇区占用字节。233455616
512
要验证 4k 对齐,您需要检查此偏移量是否可以表示为大小字节的整数扇区数4096
。这些扇区比 512 字节扇区大 8 倍,因此只需检查 233455616 是否能被 8 整除即可。答案是可以的。
对每个偏移量(即每个起始扇区 ( 233455616
、799057920
、...))执行此操作。我的计算表明所有分区都已对齐。
FreeBSD 工具建议 4k 对齐边界。
您的磁盘使用大小为字节的物理扇区4096
。这意味着由于磁盘本身的属性,建议使用 4k 对齐,而不是因为某些工具。
附注:之前有大约 111 GiB 未分区空间/dev/sdb1
。
答案2
逻辑扇区大小为 512 字节,因此为了实现 4k 对齐(以匹配物理扇区),分区的起始扇区必须是 4096⁄512 = 8 的整数倍。
因此,只需遍历“开始”列中的所有数字,然后将每个数字除以 8。如果得到整数,则该分区已对齐;如果得到小数,则未对齐。例如,233455616 除以 8 等于 29181952.0,因此第一个分区是正确对齐。
许多基于 Linux 的分区工具默认为 1MiB 对齐,这也很好 - 它自动意味着分区将与 4k(以及 8k、16k……)对齐。因此,如果您使用 Linux fdisk 或 GParted,请坚持使用默认设置。