我目前在Fedora Linux中有一个使用mdadm的500GB x5 RAID-5arrays。 其中一个磁盘坏了,我将把所有的磁盘和数据移动到一个新的arrays。 但是,我可以将arrays的大小缩小到4个磁盘,以防止另一个磁盘无法想象吗? 我需要这样做,而不重新创buildarrays,因为我目前没有足够的存储空间来容纳数据。
不,您不能使用mdadm减lessRAIDarrays中的设备数量。
从mdadm (8):
成长模式
GROW模式用于更改活动数组的大小或形状。 为了这个工作,内核必须支持必要的改变。 在2.6的发展过程中,增加了各种types的增长,包括重组raid5arrays以获得更多的主动设备。
目前唯一可用的支持是
[…]
- 增加RAID1,RAID5和RAID6的“raid-devices”属性。
validation您的备份是否正常,然后使用适当数量的磁盘从头开始重buildarrays,并从备份恢复到arrays上。
正如womble所说,你不能丢弃一个磁盘并缩小RAID。
可能有些事情你应该知道关于RAID。 首先,对于大型驱动器或大型arrays,RAID 5不再被认为是一种好的做法。 原因在于,更换故障驱动器时,从其中一个驱动器读取错误的可能性与更大/更多的驱动器接近1:1。 最佳实践现在是RAID 6,它提供了两个奇偶校验驱动器,或RAID 10,它提供了更好的性能,但容错性稍差(在某些情况下可能会损失2个驱动器)。 另外,当您构build大小适中的arrays时,您可能会考虑添加一个热备份,无需您的干预即可自动交换失败的成员。
当然,这不会让你的数据。 假设你有一个5x500GB的arrays,你已经有了2TB的可用空间。 如果你有备份,那么你真的需要在重新创build数组后恢复。
由于听起来你没有备份,首先,祝你好运。 其次,是时候快速获得某种二级存储。 我会推荐一个外部的2TB驱动器。 他们在pricewatch.com上运行160美元左右 。 如果由于某种原因,你不能这样做,尝试在逻辑上分解它,并在重build数组时将其分配给其他几台机器。
你可能想快点。
从其他答案看来,显然你不能只是“缩小”袭击。 不过,我觉得RAID5在使用冗余的时候,其中一个要点就是可以将故障磁盘插槽插入新磁盘。 我不认为你必须重build整个arrays…
我相当确定,但是先在自己的实验室networking上进行testing,使用这个需要自己承担风险,不要在生产环境中使用它,而不要根据您首选的validation程序进行testing和validation等。 :
查看数组的当前状态,假设它是/ dev / md0:
sudo mdadm --detail /dev/md0
…显示arrays的当前状态,每个设备等
设置旧的驱动器有故障,并将其从arrays中删除。 假设错误的驱动器是/ dev / sdg:
sudo mdadm --set-faulty /dev/md0 /dev/sdg sudo mdadm --remove /dev/md0 /dev/sdg
在这一点上,如果你做sudo mdadm –detail / dev / md0,你应该看到那个驱动器已经从数组中移除了。
closures计算机,换出旧驱动器,插入新驱动器,启动计算机。
在驱动器丢失的情况下启动arrays。 假设其他设备是/ dev / sdf和/ dev / sdh,那么:
sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdf missing /dev/sdh
…用单词“missing”replace丢失的设备名称。
arrays应该启动。 现在添加新的设备/磁盘。 假设新磁盘是/ dev / sdg:
sudo mdadm --add /dev/md0 /dev/sdg
mdadm应该将新设备添加到数组中,并开始重build数组。
你可以通过做检查:
sudo mdadm --detail /dev/md0