我在RAID 1中有两个磁盘.我想添加两个新磁盘并将阵列转换为四磁盘RAID 10阵列.@H_502_3@
我目前的策略:@H_502_3@
>做好备份.
>创建一个降级的4磁盘RAID 10阵列,其中包含两个丢失的磁盘.
> rsync RAID 1阵列与RAID 10阵列.
>失败并从RAID 1阵列中删除一个磁盘.
>将可用磁盘添加到RAID 10阵列并等待重新同步完成.
>销毁RAID 1阵列并将最后一个磁盘添加到RAID 10阵列.@H_502_3@
问题是步骤5缺乏冗余.@H_502_3@
有没有更好的办法?@H_502_3@
解决方法
> md0是类型/级别RAID1的旧数组.
> md1是类型/级别RAID10的新阵列.
> sda1和sdb2是新的空分区(没有数据).
> sda2和sdc1是旧分区(包含关键数据).@H_502_3@
替换名称以适合您的用例.使用例如lsblk查看您当前的布局.@H_502_3@
0)备份,备份,备份哦和备份@H_502_3@
1)创建新阵列(4个设备:2个现有,2个缺失):@H_502_3@
mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda1 missing /dev/sdb2 missing
请注意,在此示例中,sda1缺少对应的sdb1,而另一个缺少对应的sdb2.此时md1上的数据不安全(在添加缺失成员之前,它实际上是RAID0).@H_502_3@
要查看已创建数组的布局和其他详细信息,请使用@H_502_3@
mdadm -D /dev/md1
注意!您应该保存数组的布局:@H_502_3@
# View current mdadm config: cat /etc/mdadm/mdadm.conf # Add new layout (grep is to make sure you don't re-add md0): mdadm --detail --scan | grep "/dev/md1" | tee -a /etc/mdadm/mdadm.conf # Save config to initramfs (to be available after reboot) update-initramfs -u
2)格式化和安装. / dev / md1应该可以立即使用,但需要格式化然后安装.@H_502_3@
3)复制文件.使用例如rsync将数据从旧RAID 1复制到新RAID 10.(这只是一个示例命令,请阅读rsync的手册页)@H_502_3@
rsync -arHx / /where/ever/you/mounted/the/RAID10
4)使旧RAID1(md0)的第一部分失效,并将其添加到新RAID10(md1)@H_502_3@
mdadm /dev/md0 --fail /dev/sda2 --remove /dev/sda2 mdadm /dev/md1 --add /dev/sda2
注意!这将清除sda2中的数据. md0应该仍然可用,但前提是其他raid成员完全可以运行.@H_502_3@
另请注意,这将在md1上开始同步/恢复过程.要检查状态,请使用以下命令之一:@H_502_3@
# status of sync/recovery cat /proc/mdstat # details mdadm -D /dev/md1
等到恢复完成.@H_502_3@
5)在新阵列上安装GRUB(假设你正在从它启动).一些Linux救援/启动CD效果最好.@H_502_3@
6)在新阵列上启动.如果它正常工作破坏旧阵列并将剩余磁盘添加到新阵列.@H_502_3@
没有回头的点@H_502_3@
此时,您将销毁旧md0数组的最后一个成员上的数据.绝对确保一切正常.@H_502_3@
mdadm --stop /dev/md0 mdadm /dev/md0 --remove /dev/sdc1 mdadm /dev/md1 --add /dev/sdc1
再次 – 等到md1上的恢复完成.@H_502_3@
# status of sync/recovery cat /proc/mdstat # details mdadm -D /dev/md1
7)更新mdadm配置@H_502_3@
记得更新/etc/mdadm/mdadm.conf(删除md0).@H_502_3@
并将配置保存到initramfs(重启后可用)@H_502_3@
update-initramfs -u