在 mdadm 中将 RAID 1 转换为 RAID 10

在 mdadm 中将 RAID 1 转换为 RAID 10

在我当前的 Ubuntu 服务器中,我有 2 个 2TB Western Digital RED 硬盘,使用 mdadm 组成 RAID 1。我想再添加 2 个 2TB RED 硬盘,并将其转换为 RAID 10。我知道我很可能必须擦除数据,但有什么方法可以避免吗?我的 2TB 卷几乎已完全填满

答案1

这需要一些策略,不幸的是,这已经是前一段时间的事情了,所以请耐心等待;我会凭记忆来。

本质上,我关闭了服务器,并安装了两个新驱动器。为了以防万一,我事先备份到外部 4TB 硬盘(由于它有 USB3,速度要快得多!)。谢天谢地,我不需要使用它,但我很高兴至少我有它。我记下了磁盘上的分区大小(按块大小)以及每个磁盘的大小。当时,sdasdb是加载了当前阵列的驱动器。sdcsdd是新驱动器。我以 root 身份将分区布局复制到两个新磁盘fdisk。然后我创建了一个新阵列,其中缺少两个成员:

mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sdc1 missing /dev/sdd2 missing

此命令创建名为 的阵列/dev/md1,将 RAID 类型设置为 10,并表示理想情况下应该有 4 个设备。我添加的设备是/dev/sdc1和,/dev/sdd1用于第一个分区。启动后,我安装阵列(作为/mnt/raid),然后执行rsync -avP /mnt/data/ /mnt/raid/,然后等待一天,直到所有内容都复制完毕。

复制完成后,您需要使阵列中的硬盘失效,然后将其移除:mdadm /dev/md0 --fail /dev/sda1 --remove /dev/sda1。然后,您可以将该硬盘添加到新阵列,并等待其重建。然后,从阵列中移除最后一个驱动器(改为使用/deb/sdb),并将其重新添加(mdadm /dev/md1 --add /dev/sda1)。

最后,要使旧阵列不再启动或发出警告,请运行mdadm --stop /dev/md0。此时,旧阵列已消失!我建议仔细检查引导加载程序是否已正确安装在阵列上(或者,根据您的方案,硬盘的引导扇区)。进行测试重启;如果一切正常,那就太好了!如果没有,这就是我们有备份的原因!

作为奖励,我学会了一个新的有用命令:watch cat /proc/mdstat每 2 秒自动更新屏幕,显示驱动器的重建状态。我还写了一篇博文关于我的经历,包括图片。

答案2

如果 RAID 控制器支持重组 RAID 1 -> RAID 10,那么可能会丢失数据。

软件 RAID ...

在两块新硬盘上添加空网 RAID 1。将具有类似 Raid c 的可靠性,并且没有丢失数据的风险。

相关内容