![将 HDD 扇区大小切换为 4096 字节](https://linux22.com/image/166018/%E5%B0%86%20HDD%20%E6%89%87%E5%8C%BA%E5%A4%A7%E5%B0%8F%E5%88%87%E6%8D%A2%E4%B8%BA%204096%20%E5%AD%97%E8%8A%82.png)
我有一些 HDD 磁盘,其物理扇区大小为 4096,逻辑大小为 512 字节。这是SATA磁盘。现在我想在 Linux 中使用 4kiB 作为逻辑扇区大小 - 而不是 512 字节。我怎样才能实现这个目标?是否可以将此磁盘切换为仅在 4kiB 模式下运行?
如何确保我创建的所有分区都与 4kiB 对齐?我是否必须手动计算给定分区的起始和结束扇区号才能进行 4kiB 对齐?
我使用 Linux,有时也使用 Windows。我主要使用 Linux fdisk 创建分区 - 而不是 Windows fdisk。也许使用“fdisk -b 4096”就足够了?嗯...可能不会,因为 Linux 如何知道给定磁盘使用哪个扇区大小?
答案1
除非您使用选项强制使用旧版 MS-DOS 兼容模式,或使用专家模式为分区的开头和结尾指定精确的 LBA 块编号,否则大多数现代分区工具(Linux 等)默认情况下会将分区与 1MB 的倍数对齐。这也是现代 Windows 所做的,它保证与 4kB 扇区大小以及各种 SSD 和 SAN 存储设备的兼容性,这些设备可能需要与更大的 2 的幂对齐以获得最佳性能。
您可以使用它lsblk -t
来检查每个分区的对齐偏移量。如果列中的值ALIGNMENT
为零,则据内核所知,分区应该是最佳对齐的。
要切换硬盘扇区大小,您首先需要验证您的硬盘是否支持逻辑扇区大小的重新配置。更改逻辑扇区大小很可能会使磁盘上的所有现有数据变得不可用,需要您对磁盘完全重新分区并从头开始重新创建所有文件系统。这hdparm --set-sector-size 4096 /dev/sdX
将是更改扇区大小的“标准”方法,但如果有特定于供应商的工具,我通常更愿意使用它 - 以防特定磁盘需要特定于供应商的特殊步骤。
在 NVMe SSD 上,nvme id-ns -H /dev/nvmeXnY
将告知(除其他外)SDD 支持的扇区大小、与每个扇区大小关联的 LBA 格式编号以及当前使用的扇区大小。如果您希望更改扇区大小,并且实际支持所需的大小,则可以使用nvme format --lbaf=<number> /dev/nvmeXnY
将特定 NVMe 命名空间重新格式化为不同的扇区大小。
答案2
由于块计数器的宽度为 32,因此您可以使用该计数器最大寻址 2TB 磁盘空间除以 512 B 扇区。因此,最小值。现代磁盘的可寻址部分称为簇,通常为 4096 = 8 x 512 字节。即使内部缓冲区和程序仍然处理 512B 扇区,这只是逻辑解释而已。在 中man fdisk
您可以阅读:最近的内核知道扇区大小。仅在旧内核上使用此选项或覆盖内核的想法。您(主要是在 Linux 上)不需要对默认配置进行任何更改。