如何使用 mdadm 扩展 RAID10 阵列?
显然我需要一次添加 2 个驱动器,或者必须添加 4 个驱动器?
我觉得这是一个坏主意。
或者更明智的做法是选择 RAID5?
答案1
上次我检查时,mdadm 不允许您 --grow raid10。我现在浏览了 mdadm 的手册页,它仍然显示:当前支持的增长选项包括更改组件设备的活动大小和更改 RAID 级别 1/4/5/6 中的活动设备数量、在 1、5 和 6 之间更改 RAID 级别、更改 RAID5 和 RAID5 的块大小和布局,以及添加或删除写入意图位图。
答案2
要扩展 RAID 10,您需要 mdadm 版本至少为 3.3 且内核版本至少为 3.5。您还需要偶数个磁盘 - 不成对的磁盘只能用作备用磁盘,或者最终会进入降级模式(未经测试)。
以下是使用 mdadm 3.3-2ubuntu2 @ Linux 4.2.0-10-generic 将 RAID 10 从 4 个驱动器扩展到 6 个的示例。使用 ext4 数据进行测试,文件系统已卸载,RAID 增长后 ext4 进行了扩展,没有任何问题。
~$ cat /proc/mdstat
md126 : active raid10 sdd1[1] sdc1[0] sdf1[3] sde1[2]
976428032 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
bitmap: 0/8 pages [0KB], 65536KB chunk
~$ sudo mdadm /dev/md126 --add /dev/sdi1 /dev/sdj1
mdadm: added /dev/sdi1
mdadm: added /dev/sdj1
~$ sudo mdadm --grow /dev/md126 --raid-devices=6
~$ cat /proc/mdstat
md126 : active raid10 sdj1[5] sdi1[4] sdd1[1] sdc1[0] sdf1[3] sde1[2]
1464642048 blocks super 1.2 512K chunks 2 near-copies [6/6] [UUUUUU]
bitmap: 0/6 pages [0KB], 131072KB chunk
答案3
我意识到这已经是一年多了,但有人可能会发现这很有帮助......
您可以扩展 raid 10 阵列,但不是您希望的那样。您必须嵌套多个级别的 raid。这可以在 raid 10 中的 2 个驱动器上使用 mdadm 来完成,根据布局的不同,其性能相当不错,但您必须创建多个 2 磁盘 raid 10 阵列,然后将它们连接到逻辑节点。然后为了扩展,添加更多,并在其上进行条带化。如果这是您的用例(需要大量扩展),那么使用可以扩展的奇偶校验阵列是明智之举。
这些是使用 raid 10 时的限制,同时总体上保持了更好的读/写性能。需要澄清的是,raid 5/6 绝对不是“一般来说,提供更好的写入性能...”。与 raid 10 一样,raid 5/6 有各自的优点/缺点,但写入性能不是 raid 5/6 的优点。
此外,您没有指定驱动器的大小,但要小心新的大型驱动器上的 raid 5。虽然如果您小心谨慎,您可以从不可恢复的读取错误中恢复,但您冒着停机的风险,并且可能根本无法恢复。
--编辑以添加信息-- 出现故障时,使用 hdparm (hdparm -i) 和 lshw 等工具获取序列号以及设备名称 (/dev/sda)。这将确保您在更换时移除正确的设备。Travis 的评论向上箭头,因为它非常正确且布局很好,但像往常一样,权衡每个解决方案的利弊。
答案4
我知道这需要更多的工作量并且可能会造成混淆,但是您始终可以对多个镜像进行条带化。
例如,我刚刚设置了一个 4 驱动器 raid 10 阵列,后来想添加另一个 4 驱动器 raid 10 阵列。只需使用 mdadm 在新驱动器上创建一个新的 raid 10 阵列。然后,您可以使用两个现有的 raid 设备创建另一个 raid 0 阵列。但是,我将使用 lvm 的功能来创建条带,从而使 mdadm 配置和 /dev/md 设备保持易于理解的状态。两种方法都可以,可能还有更多方法,但这是我能想到的。