mdadm
似乎不支持将数组从级别 1 扩展到级别 10。
我在 RAID 1 中有两个磁盘。我想添加两个新磁盘并将阵列转换为四磁盘 RAID 10 阵列。
我目前的策略:
- 做好备份。
- 创建具有两个缺失磁盘的降级 4 磁盘 RAID 10 阵列。
rsync
the RAID 1 array with the RAID 10 array.
RAID 1 阵列中的一个磁盘。fail
and remove- 将可用磁盘添加到 RAID 10 阵列并等待重新同步完成。
- 销毁 RAID 1 阵列并将最后一个磁盘添加到 RAID 10 阵列。
问题是第 5 步缺少冗余。
有没有更好的办法?
使用 linux softraid,您可以制作一个只有两个磁盘的 RAID 10 阵列。
下面使用的设备名称:
md0
是类型/级别 RAID1 的旧阵列。md1
是类型/级别 RAID10 的新阵列。sda1
并且sdb2
是新的空分区(没有数据)。sda2
并且sdc1
是旧分区(带有关键数据)。替换名称以适合您的用例。使用例如
lsblk
查看您当前的布局。0)备份,备份,备份,备份哦和备份
1)创建新阵列(4 个设备:2 个现有,2 个缺失):
请注意,在此示例中,布局
sda1
缺少对应项,并且sdb2
缺少另一个对应项。此时您的数据md1
不安全(在您添加缺失成员之前,它实际上是 RAID0)。要查看创建数组的布局和其他详细信息,请使用:
笔记!您应该保存数组的布局:
2)格式化和安装。应该可以立即使用
/dev/md1
,但需要格式化然后安装。3)复制文件。使用例如 rsync 将数据从旧 RAID 1 复制到新 RAID 10。(这只是一个示例命令,请阅读 rsync 的手册页)
4)使旧 RAID1 (md0) 的第一部分失效,并将其添加到新的 RAID10 (md1)
笔记!这将清除
sda2
. 应该仍然可以使用,md0
但前提是其他团队成员完全可操作。另请注意,这将在
md1
. 要检查状态,请使用以下命令之一:等到恢复完成。
5)在新阵列上安装 GRUB(假设您正在从它启动)。一些 Linux 救援/引导 CD 效果最好。
6)在新阵列上启动。如果它工作正确 销毁旧阵列并将剩余的磁盘添加到新阵列。
不归路点
此时,您将销毁旧 md0 数组的最后一个成员上的数据。绝对确保一切正常。
再一次 -等到恢复
md1
完成。7)更新 mdadm 配置
记得更新
/etc/mdadm/mdadm.conf
(删除 md0)。并将配置保存到 initramfs(重启后可用)
遵循与 Mark Turner 相同的过程,但在创建 RAID 阵列时,请提及 2 个丢失的磁盘
然后继续其他步骤。
简而言之,创建总共 4 个磁盘(其中 2 个丢失)的 RAID10,重新同步,然后添加另外两个磁盘。
刚刚完成从两个 2TB 磁盘 mdadm RAID 1 上的 LVM 到四个磁盘 RAID 10(两个原始磁盘 + 两个新磁盘)上的 LVM。
正如@aditsu 所指出的,驱动器顺序在创建阵列时很重要。
上面的代码给出了一个缺少两个磁盘的可用阵列(如果您不使用整个磁盘,请添加分区号)。添加第三个磁盘后,它将开始同步。我在第三个完成同步之前添加了第四个磁盘。它显示为备用,直到第三个磁盘完成然后它开始同步。
我的情况的步骤:
做好备份。
创建具有两个缺失磁盘的降级 4 磁盘 RAID 10 阵列(我们将缺失的磁盘称为 #2 和 4)。
告诉妻子不要更改/添加她关心的任何文件
故障并从 RAID 1 阵列中移除一个磁盘(磁盘 4)。
将物理盘区从 RAID 1 阵列移动到 RAID 10 阵列,使磁盘 2 为空。
终止活动的 RAID 1 阵列,将现在的空磁盘(磁盘 2)添加到 RAID 10 阵列,然后等待重新同步完成。
将从 RAID 1 中移除的第一个磁盘(磁盘 4)添加到 RAID 10 阵列。
让老婆去吧。
在第 7 步,我认为驱动器 1、2或4 可能会失败(在磁盘 4 的重新同步期间)而不会终止阵列。如果驱动器 3 发生故障,则阵列上的数据将被吐司。
我用LVM做的。初始配置: - sda2、sdb2 - 并在顶部创建了 raid1 md1。sda1 和 sdb1 用于 /boot 分区的第二个 raid1。- md1 是卷组空间中的 pv,上面有一些 lvm。
我添加了磁盘 sdc 和 sdd 并在 sda/sdb 上创建了分区。
所以:
创建 md10 为:
mdadm --create /dev/md10 --level raid10 --raid-devices=4 /dev/sdc2 缺少 /dev/sdd2
在其上扩展 vg:
pvcreate /dev/md10 vgextend 空间 /dev/md10
将卷从 md1 移动到 md10:
pvmove -v /dev/md1 /dev/md10
(等待完成) 4. 减少卷组:
停止数组 md1:
mdadm -S /dev/md1
将旧 md1 的磁盘添加到 md10:
mdadm -a /dev/md10 /dev/sda2 /dev/sdb2
更新 /etc/mdadm/mdadm.conf 中的配置:
mdadm -E --scan >>/dev/mdadm/mdadm.conf
(并删除旧的 md1)
一切都在实时系统上完成,活动卷用于 kvm ;)
我现在已将我的 raid1 移至 raid10,虽然此页面对我有所帮助,但上面的答案中缺少一些内容。特别是我的目标是保留 ext4 的出生时间。
设置是:
正如任何人之前所说:零步骤应该是备份,并且在这个过程中总是会出现问题,导致极端的数据丢失
备份
新突袭的设置
创建一个新的团队
(我发现布局很重要.. 第 2 和第 4 似乎是默认“近”突袭中的重复项)
迁移
现在获取数据...我第一次尝试使用 rsync 工作但未能保持出生时间...使用 dd从旧的raid克隆到新的raid
等待它
,您可以通过将 USR1 发送到该进程来检查
修复raid
gparted 是一个很棒的工具:你告诉它检查和修复分区,只需点击几下鼠标就可以将其调整到该磁盘的完整大小;)
为该分区设置一个新的 uuid 并用它更新您的 fstab(更改 uuid)
将您的团队存储在 conf 中
并删除旧的
摧毁旧的
第一个失败并将其添加到新的团队中
然后在该设备上制作 gpt 并设置一个新的空分区
等待它
,你可以检查
停止第二个
然后在最后一个设备上制作 gpt 并再次设置一个新的空分区
再次等待