我目前在 Fedora Linux 中使用 mdadm 有一个 500GB x5 RAID-5 阵列。其中一个磁盘坏了,我打算将所有磁盘和数据移到新阵列。但是,我能否同时将阵列的大小减少到 4 个磁盘,以防止另一个磁盘发生不可想象的故障?我需要在不重新创建阵列的情况下执行此操作,因为我目前没有足够大的存储空间来保存数据。
答案1
不,您不能使用 mdadm 减少 RAID 阵列中的设备数量。
来自mdadm
(8):
成长模式
GROW 模式用于更改活动阵列的大小或形状。要使此功能正常工作,内核必须支持必要的更改。在 2.6 开发过程中添加了各种类型的增长,包括重组 raid5 阵列以拥有更多活动设备。
目前唯一可用的支持是
[...]
- 增加RAID1、RAID5、RAID6的“raid-devices”属性。
验证您的备份是否正常,然后使用适当数量的磁盘从头开始重建阵列,并从备份恢复到阵列。
答案2
正如 womble 所说,您不能丢弃磁盘并缩小 RAID。
您可能应该了解一些有关 RAID 的信息。首先,RAID 5 不再被视为大型驱动器或大型阵列的良好做法。原因是,在更换故障驱动器时,对于更大/更多的驱动器,其中一个驱动器发生读取错误的可能性变得更接近 1:1。最佳做法现在是 RAID 6,它提供两个奇偶校验驱动器,或 RAID 10,它提供更好的性能,但容错能力略差(在某些情况下,您可能会丢失 2 个驱动器)。此外,当您构建大小合适的阵列时,您可能会考虑添加一个热备用,该热备用会自动替换故障成员,而无需您的干预。
当然,这并不能帮你恢复数据。假设你有一个 5x500GB 的阵列,那么你就有大约 2TB 的可用空间。如果你有备份,那么在重新创建阵列后,你确实需要从备份中恢复数据。
听起来你没有备份,首先,祝你好运。其次,是时候尽快获得某种辅助存储了。我建议使用外部 2TB 驱动器。他们到处都在pricewatch.com 上售价 160 美元。如果由于某种原因您无法做到这一点,请尝试以逻辑方式将其分解,并在重建阵列时将其分派到其他几台机器上。
你可能想快点。
答案3
从其他答案来看,显然您不能直接“缩小”阵列。但是,我觉得 RAID5 用于冗余时的一个优点是,您可以直接拔出故障磁盘并插入新磁盘?我认为您不必重建整个阵列...
我相当确定,但请先在您自己的实验室网络上测试它,自行承担使用风险,请勿在生产环境中使用它,除非您首先根据您喜欢的验证程序对其进行测试和验证,等等...:
查看阵列的当前状态,假设它是 /dev/md0:
sudo mdadm --detail /dev/md0
... 显示阵列、每个设备等的当前状态。
将旧驱动器设置为故障驱动器并将其从阵列中移除。假设故障驱动器是 /dev/sdg:
sudo mdadm --set-faulty /dev/md0 /dev/sdg
sudo mdadm --remove /dev/md0 /dev/sdg
此时,如果您执行 sudo mdadm --detail /dev/md0 ,您应该会看到该驱动器已从阵列中删除。
关闭计算机,换出旧驱动器,插入新驱动器,启动计算机。
在缺少驱动器的情况下启动阵列。假设其他设备是 /dev/sdf 和 /dev/sdh,因此:
sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdf missing /dev/sdh
...用单词‘missing’替换丢失的设备名称。
阵列应该启动了。现在添加新设备/磁盘。假设新磁盘是 /dev/sdg:
sudo mdadm --add /dev/md0 /dev/sdg
mdadm 应该将新设备添加到阵列,并开始在其上重建阵列。
您可以通过以下方式检查:
sudo mdadm --detail /dev/md0