mdadm似乎不支持从1级到10级的数组增长。
我在RAID 1中有两个磁盘。我想添加两个新磁盘,并将arrays转换为四个磁盘RAID 10arrays。
我目前的战略:
rsync the RAID 1 array with the RAID 10 array. 问题是在步骤5缺乏冗余。
有没有更好的办法?
使用linux softraid,您可以制作只有两个磁盘的RAID 10arrays。
0)备份,备份,备份,备份哦和备份
1)创build新的数组:
mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda1 missing /dev/sdb2 missing
2)使用新的RAID 10安装raid10&rsync RAID 1(这只是一个示例命令,请阅读手册页)
rsync -arHx / /where/ever/you/mounted/the/RAID10
3)RAID失败,将磁盘添加到新的RAID10
mdadm /dev/md0 --fail /dev/sda2 --remove /dev/sda2
4)将移除的磁盘添加到RAID10
mdadm /dev/md1 --add /dev/sda2
5)在新arrays上安装GRUB(假设你正在从它启动)。 一些Linux救援/启动CD效果最好。
6)在新arrays上启动。 如果它正常工作销毁旧arrays并将剩余的磁盘添加到新arrays。
mdadm --stop /dev/md0 mdadm /dev/md0 --remove /dev/sdc1 mdadm /dev/md1 --add /dev/sdc1
按照与Mark Turner相同的步骤,但在创buildRAIDarrays时,请提及2个丢失的磁盘
mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda1 missing /dev/sdb2 missing
然后继续其他步骤。
总之,创build共有4个磁盘(其中2个丢失)的RAID10,重新同步,然后添加其他两个磁盘。
刚刚完成从两个2TB磁盘mdadm RAID 1的LVM到四个磁盘RAID 10(两个原始+两个新磁盘)上的LVM。
正如@aditsu指出,创buildarrays时,驱动顺序非常重要。
mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda missing /dev/sdb missing
上面的代码给出了一个有两个丢失磁盘的可用arrays(如果不使用整个磁盘,请添加分区号)。 一旦添加第三个磁盘,它将开始同步。 我在第三次完成同步之前添加了第四个磁盘。 它显示为备用,直到第三个磁盘完成,然后开始同步。
我的情况步骤:
做好备份。
创build一个具有两个丢失磁盘的降级4磁盘RAID 10arrays(我们将调用丢失的磁盘#2和4)。
告诉妻子不要更改/添加任何她关心的文件
从RAID 1arrays(磁盘4)中失败并移除一个磁盘。
将物理盘区从RAID 1arrays移至RAID 10arrays,使磁盘2为空。
杀死活动RAID 1arrays,现在将空磁盘(磁盘2)添加到RAID 10arrays,然后等待重新同步完成。
将从RAID 1(磁盘4)中移除的第一个磁盘添加到RAID 10arrays。
让妻子继续前进。
在第7步,我认为驱动器1,2 或 4可能会失败(在磁盘4的重新同步过程中),而不会杀死arrays。 如果驱动器3发生故障,则arrays上的数据为烤面包。
我已经将我的raid1移动到了raid10,而这个页面帮助了我,但是在上面的答案中还是有一些缺失的。 特别是我的目标是保持ext4的诞生时间。
设置是:
正如任何人之前所说的: 零步应该是备份 ,并可以在这个过程中出现问题,导致极端的数据丢失
BACKUP
设置新的RAID
创build一个新的RAID
mdadm -v --create /dev/md127 --level=raid10 --raid-devices=4 /dev/sdb1 missing /dev/sde1 missing
(我发现布局是重要的..第二和第四似乎是在默认的“近”突袭重复)
迁移
现在得到的数据了…我第一次尝试使用rsync工作,但未能保持生育…使用DD 克隆从旧的RAID到新的
dd if=/dev/md0 of=/dev/md127p1 bs=1M conv=notrunc,noerror,sync
等待它
你可以检查发送USR1到这个过程
kill -s USR1 <pid>
修复袭击
gparted是一个伟大的工具:你告诉它检查和修复分区,并resize的磁盘只需几个鼠标点击;)
设置一个新的uuid到该分区并更新你的fstab(更改uuid)
将你的RAID存储在conf中
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
并删除旧的
vim /etc/mdadm/mdadm.conf
摧毁旧的
第一个失败并将其添加到新的RAID
mdadm /dev/md0 --fail /dev/sdc1 --remove /dev/sdc1
然后使gpt在该设备上并设置一个新的空分区
mdadm /dev/md127 --add /dev/sdc1
等待它
你可以检查
cat /proc/mdstat
停止第二个
mdadm --stop /dev/md0
然后使gpt在最后一个设备上,并再次设置一个新的空分区
mdadm /dev/md127 --add /dev/sdd1
再等一等
我用LVM做了。 初始configuration: – sda2,sdb2 – 在上面创buildraid1 md1。 sda1和sdb1用于第二个raid1作为/ boot分区。 – md1是在卷组空间的PV,有一些LVM的。
我已经添加了磁盘sdc和sdd,并创build了像sda / sdb那样的分区。
所以:
创buildmd10为:
mdadm –create / dev / md10 –level raid10 –raid-devices = 4 / dev / sdc2 missing / dev / sdd2
扩展vg:
pvcreate / dev / md10 vgextend空间/ dev / md10
将卷从md1移动到md10:
pvmove -v / dev / md1 / dev / md10
(等待完成)4.减less音量组:
vgreduce space /dev/md1 pvremove /dev/md1
停止数组md1:
mdadm -S / dev / md1
从旧的md1添加磁盘到md10:
mdadm -a / dev / md10 / dev / sda2 / dev / sdb2
更新/etc/mdadm/mdadm.conf中的configuration:
mdadm -E –scan >> / dev / mdadm / mdadm.conf
(并删除旧的md1)
一切都在现场系统上完成,有活动卷用于kvm的;)