如何将硬盘与预先存在的分区进行 4k 对齐 - Linux、Windows 分区

如何将硬盘与预先存在的分区进行 4k 对齐 - Linux、Windows 分区

我有一块 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正好有逻辑扇区,每个扇区占用字节。233455616512

要验证 4k 对齐,您需要检查此偏移量是否可以表示为大小字节的整数扇区数4096。这些扇区比 512 字节扇区大 8 倍,因此只需检查 233455616 是否能被 8 整除即可。答案是可以的。

对每个偏移量(即每个起始扇区 ( 233455616799057920、...))执行此操作。我的计算表明所有分区都已对齐。

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,请坚持使用默认设置。

相关内容