在所有磁盘中,第一个扇区和最后一个扇区之间的速度差异是显而易见的,最多可达两到三倍。对于新的多 TB 磁盘,情况仍然如此。因此,将磁盘的最后几个磁柱保留用于不常用的文件(尤其是备份)仍然是有意义的。
使用分区磁盘,做到这一点很简单,唯一的警告是允许将来更改大小。
但是我的配置是未分区的 LVM。因此,我需要将两个卷组放在同一个物理硬件中(一个使用一组磁盘的开头,另一个使用结尾),或者确保逻辑卷优先使用硬件最后几个柱面中的扩展。这可能吗?我们可以控制 LV 的位置吗?
答案1
我不太同意这在大多数工作负载中是一个巨大的担忧,因为您可以使用缓存、预读策略和磁盘升降机,但这是可能的,但有警告。
解决这个问题的最佳方法是将您想要分配的媒体物理分区为您想要分离的磁盘两端的“块”。
像这样
Number Start End Size Type File system Flags
1 1049kB 1075MB 1074MB primary ext4 boot
2 1075MB 4TB 4TB primary lvm # My fast partition
3 4TB 8TB 4TB primary lvm # My slow partition
然后,创建卷组。在此示例中,我使用一个卷组,但使用“慢速”卷组和“快速”卷组可能更方便。
# pvcreate /dev/sda2
# pvcreate /dev/sda3
# vgcreate vg /dev/sda2 /dev/sda3
然后从所述物理卷中分配您的 LV。
# lvcreate -n myFastLV -L1TB vg /dev/sda2
# lvcreate -n mySlowLV -L1TB vg /dev/sda3
需要注意的是,磁盘控制器可以悄悄地用通常位于其他地方的“保留区”替换坏扇区(完全独立于制造商)。此外,一些更高级的磁盘可能会在内部重新映射扇区,这些扇区在逻辑上与所提供的声明一致,但物理上并不在您预期的位置。
最后,您建议的问题工作负载(流水线处理大文件)实际上是一个非常连续的工作负载问题,如果在写入的文件上使用预分配技术(以保持它们连续而不是碎片化),则可以获得更大的收益。
然后设置积极的预读策略来读取最有可能与您正在读取的文件相邻的整个相邻/即将到来的扇区。
还可以使用更细粒度的方法dmsetup
将物理扇区映射到您想要的任何顺序和方式,但这不太可移植,并且从长远来看可能得不偿失(例如,您需要一个脚本来在启动时重建映射)。