我知道我必须将我的4k驱动器按8个扇区的倍数对齐,但是md-RAID / LVM / dm-crypt呢?如何告诉这些层我的驱动器是4k?如果他们不遵守4k扇区大小,则分区对齐是无用的。如何对齐LVM / md / crypto-layers?谢谢。
我知道我必须将我的4k驱动器按8个扇区的倍数对齐,但是md-RAID / LVM / dm-crypt呢?如何告诉这些层我的驱动器是4k?如果他们不遵守4k扇区大小,则分区对齐是无用的。如何对齐LVM / md / crypto-layers?谢谢。
Answers:
小心!大于2 TiB的磁盘所需的gpt标签长39(512字节)扇区。因此,如果在标签后立即创建第一个分区,则该分区将不在4KiB边界上。
GNU parted 默认情况下不执行此操作,这可能是因为许多“高级格式”驱动器错误地声称其物理扇区(不仅是逻辑扇区)仍然只有512B。
因此,如果您使用的是GNU parted,请确保每个分区均以一个LBA开头(可被8整除)(LBA保持512B,因此8 * 512B = 4KiB)。LBA始于0,因此从“ 40s”开始第一个分区。
另外,如果您使用GRUB,请为其第二阶段引导留出空间。MS-DOS标签有63个扇区,有足够的未使用空间供GRUB存放其第二阶段引导程序,但gpt标签中没有未使用的空间。因此,创建一个小的分区1,设置其“ bios_grub”标志,然后再创建“真实”分区-确保每个分区都以8的倍数开始的LBA开始。
参见https://ata.wiki.kernel.org/index.php/ATA_4_KiB_sector_issues
简短的版本是,如果您有最新发行版,它应该会自动执行正确的操作。对于较旧的发行版,它有点复杂。
对于LVM,您应该研究--dataalignment
选项pvcreate
,或者对于较旧的发行版-–metadatasize
。
MD,AFIAK,将其自己的元数据放在分区的末尾,因此应始终与基础分区对齐。
对于mkfs,文件系统应再次与基础分区对齐。对于某些文件系统,如果您在RAID设备上运行,则可以添加条带宽度和条带大小的选项,以便文件系统可以尝试在RAID条带边界上对齐内容。
问题主要是从底层磁盘结构开始的分区对齐。为了使向后兼容磁盘“欺骗” bios / os,它们具有512B扇区,而实际上,对于现代硬盘驱动器,它们具有4096B扇区;对于大多数常见的剥离RAID / ssds,它们具有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对齐。