我知道我必须将我的4K驱动器与8个扇区的倍数alignment,但是md-RAID / LVM / dm-crypt又如何呢? 我如何告诉这些图层我的硬盘是4k? 如果他们不尊重4k扇区大小,分区alignment是没有用的。 如何alignmentLVM / md / crypto-layers? 谢谢。
小心! 磁盘> 2 TiB所需的gpt标签长度为39(512字节)扇区。 所以,如果你在标签后立即创build你的第一个分区,它不会在4KiB的边界上。
GNU parted不会默认这样做,可能是因为许多“高级格式”驱动器错误地声称,他们的物理扇区,而不仅仅是他们的逻辑扇区,仍然只有512B。
因此,如果您使用的是GNU parted,请确保每个分区的LBA可以被8整除(LBA保留512B,因此8 * 512B = 4KiB)。 LBA起源于0,因此在“40s”处启动第一个分区。
另外,如果您使用GRUB,请留出第二阶段引导的空间。 MS-DOS标签有63个扇区,有足够的空间供GRUB存放第二阶段引导程序,但gpt标签中没有未使用的空间。 因此,创build一个小分区1,设置其“bios_grub”标志,然后创build“真实”分区 – 确保每个分区都以8的倍数开始。
见https://ata.wiki.kernel.org/index.php/ATA_4_KiB_sector_issues
简短的版本是,如果你有最近的发行版,它应该自动做正确的事情。 对于更老的发行版来说,这有点复杂。
对于LVM,你应该调查--dataalignment选项来创build,或者更老的发行版-–metadatasize 。
MD,AFAIK将自己的元数据放在分区的末尾,所以它应该始终与底层分区alignment。
对于mkfs,文件系统也应该与底层分区alignment。 对于某些文件系统,如果您在RAID设备上运行,则可以为条带宽度和条带大小添加选项,以便文件系统可以尝试alignmentRAID条带边界上的内容。
问题主要是以底层磁盘的结构为起点的分区alignment。 为了保持向后兼容性磁盘对具有512B扇区的bios / os的“说谎”,而事实上它们具有现代硬盘驱动器的4096B扇区,以及最常见的剥离RAID / SSD的32-64kB扇区。
错位的分区会伤害你的performance。 我只在磁盘顶部的常规分区上做了一些基准 – 没有lvm,而用bonnie ++测量的结果没有正确alignment:
Sequential Output Block: 29MB/s Sequential Output Rewrite: 20MB/s
与alignment:
Sequential Output Block: 70MB/s Sequential Output Rewrite: 37MB/s
检查这个 lvmalignment。
到目前为止,大多数更新的发行版都会更新以了解4K。 我刚刚在一堆2TB硬盘上build立了一个md-RAID / LVM / XFS设置,没有任何问题。 没有做任何特别的事情。