我知道我必须将 4k 驱动器对齐为 8 个扇区的倍数,但 md-RAID / LVM / dm-crypt 呢?我如何告诉这些层我的驱动器是 4k?如果它们不遵守 4k 扇区大小,分区对齐就毫无用处。我如何对齐 LVM/md/crypt 层?谢谢。
答案1
注意!大于 2 TiB 的磁盘需要 gpt 标签,其长度为 39(512 字节)个扇区。因此,如果您在标签之后立即创建第一个分区,它将不会位于 4KiB 边界上。
GNU parted 的作用不是默认情况下这样做,可能是因为许多“高级格式”驱动器错误地声称他们的身体的扇区(而不仅仅是其逻辑扇区)仍然只有 512B。
因此,如果您使用 GNU parted,请确保每个分区都从可被 8 整除的 LBA 开始(LBA 仍为 512B,因此 8*512B = 4KiB)。LBA 起始于 0,因此第一个分区从“40s”开始。
此外,如果您使用 GRUB,请为其第二阶段引导程序留出空间。MS-DOS 标签有 63 个扇区,有足够的未使用空间供 GRUB 存储其第二阶段引导程序,但 gpt 标签中没有未使用的空间。因此,创建一个小分区 1,设置其“bios_grub”标志,然后在之后创建您的“真实”分区 - 确保每个分区都从 8 的倍数的 LBA 开始。
答案2
看https://ata.wiki.kernel.org/index.php/ATA_4_KiB_sector_issues
简而言之,如果您使用的是较新的发行版,它应该会自动执行正确的操作。对于较旧的发行版,情况会稍微复杂一些。
对于 LVM,您应该调查--dataalignment
选项pvcreate
,或者对于更旧的发行版-–metadatasize
。
据我所知,MD 将其自己的元数据放在分区的末尾,因此它应该始终与底层分区对齐。
对于 mkfs,文件系统也应该与底层分区对齐。对于某些文件系统,如果您在 RAID 设备上运行,您可以添加条带宽度和条带大小选项,以便文件系统可以尝试在 RAID 条带边界上对齐内容。
答案3
问题主要在于从底层磁盘结构开始的分区对齐。为了保持向后兼容性,磁盘对 bios/os '谎称' 它们有 512B 扇区,而事实上,对于现代硬盘来说,它们有 4096B 扇区,对于最常见的剥离 raid/ssd 来说,它们有 32-64kB 扇区。
未对齐的分区将损害您的性能。我只对磁盘顶部的常规分区进行了一些基准测试 - 没有 lvm,并且我使用 bonnie++ 测量的结果是没有正确对齐:
Sequential Output Block: 29MB/s
Sequential Output Rewrite: 20MB/s
对齐方式:
Sequential Output Block: 70MB/s
Sequential Output Rewrite: 37MB/s
查看这用于 lvm 对齐。
答案4
现在,大多数较新的发行版都已更新,以了解 4K 的事情。我刚刚在一堆 2TB 驱动器上构建了一个 md-RAID/LVM/XFS 设置,没有任何问题。没有做任何特别的事情。