LVM 只允许通过添加物理卷来扩展卷组。因此,如果我有多个卷组,可能需要额外的空间,但无法预测哪个卷组扩展最快,则最好有几个可用的备用物理卷可供分配。如果我使用 MD raid 阵列来提供物理卷,设置它们的最佳方法是什么?
例如,假设我有 3 个 1Tb 驱动器。我想创建 2 个卷组,每个卷组最初为 500GB,并且可以选择在将来再扩展 500GB,
在我看来,有两种选择:
- 多个 raid 阵列 - 每个磁盘分为四个分区,每个分区大小为 250Gb。然后使用这些分区(例如
mdadm /dev/md0 -create -lraid5 -n3 /dev/sda1 /dev/sdb1 /dev/sdc1
,等等)组装四个 raid 阵列,每个 500Gb。mdamd /dev/md1 -create -lraid5 -n3 /dev/sda2 /dev/sdb2 /dev/sdc2
然后将一个 raid 设备用作每个卷组的初始物理卷。剩余的 2 个备用 raid 设备可以添加到可能需要的任何卷组中在未来。 - 已分区的 raid 设备 - 在本例中,将创建一个 2Tb raid 设备。然后将其分区为 4 500Gb 分区(
/dev/md0p1
/dev/md0p2
/dev/md0p3
和 )/dev/md0p4
。然后将它们用作上述物理卷,即最初为每个 VG 分配一个分区,依此类推。
显然,创建多个分区时会产生一些磁盘空间开销,但这对于任一配置都可能非常相似,并且与卷的大小相比可以忽略不计。
但是,使用分区 raid 设备是否有任何处理或性能开销?
我一直使用第一种配置,最近才考虑(并尝试)第二种配置。我没有注意到任何差异,但有人对此有任何长期经验,或者可以指出为什么一种配置是首选或弃用的技术原因吗?
答案1
一般来说,您应该尝试拥有尽可能少的 VG(VG 可以使用 vgextend 跨越多个 PV)。当单个 VG 跨越所有 PV 时,管理变得更加容易,并且您只需使用 pvmove 将 LV 迁移到不同的物理设备。
多年来我在软件 RAID 方面发现,当您使用更大的磁盘时,从实际角度来看,将较大的驱动器分成较小的分区,然后跨驱动器进行 RAID 效果更好。以牺牲一点复杂性为代价。
示例:(8) 个 4TB 驱动器组装成软件 RAID10 阵列,并带有 (1) 个备用驱动器。无论我们如何对磁盘进行切片,总净空间将约为 13TB。但如果我们在每个驱动器上使用一个大分区,则阵列的重建时间将约为 8-10 小时。如果失败或者您需要重新启动,mdadm 通常会从头开始。
但是,如果您将每个磁盘分为 (4) 个分区并构建 (4) 个 RAID10 阵列(/dev/md101 = sd[abcdefgh]1、/dev/md102 = sd[abcdefgh]2 等),则每个阵列将在大约 2-2.5 小时内重建。总重建时间仍为 8-10 小时。如果 mdadm 因重新启动而中断,则无需重做已完成的阵列。请注意,所有 (4) 个 mdadm 阵列都是 PV,并且都应属于同一 VG。
还有一点性能优势,因为您可以将所有频繁访问的 LV 强制到同一个 PV (/dev/md101) 上,这会将块放到盘片的前 25% 上。这可能会让你的速度略有提高。您还可以使用 pvmove 通过移动 LV 来对它们进行碎片整理。