Han*_*rbe 24 linux mdadm software-raid
mdadm 似乎不支持将数组从级别 1 增长到级别 10。
我在 RAID 1 中有两个磁盘。我想添加两个新磁盘并将阵列转换为四磁盘 RAID 10 阵列。
我目前的策略:
rsync the RAID 1 array with the RAID 10 array.
fail and remove RAID 1 阵列中的一个磁盘。问题是第 5 步缺乏冗余。
有没有更好的办法?
小智 11
使用 linux softraid,您可以制作只有两个磁盘的 RAID 10 阵列。
下面使用的设备名称:
md0 是类型/级别 RAID1 的旧阵列。md1 是类型/级别 RAID10 的新阵列。sda1并且sdb2是新的空分区(没有数据)。sda2并且sdc1是旧分区(具有关键数据)。替换名称以适合您的用例。使用例如lsblk查看您当前的布局。
0)备份,备份,备份,备份哦和备份
1)创建新阵列(4 个设备:2 个现有,2 个缺失):
mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda1 missing /dev/sdb2 missing
Run Code Online (Sandbox Code Playgroud)
请注意,在此示例布局中,布局sda1缺少一个对应物,sdb2而另一个缺少对应物。您的数据此时md1并不安全(实际上它是 RAID0,直到您添加丢失的成员)。
要查看创建的阵列的布局和其他详细信息,请使用:
mdadm -D /dev/md1
Run Code Online (Sandbox Code Playgroud)
笔记!您应该保存数组的布局:
# 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
Run Code Online (Sandbox Code Playgroud)
2)格式化和挂载。该/dev/md1应立即使用,但需要进行格式化,然后安装。
3)复制文件。使用例如 rsync 将数据从旧的 RAID 1 复制到新的 RAID 10。(这只是一个示例命令,请阅读 rsync 的手册页)
rsync -arHx / /where/ever/you/mounted/the/RAID10
Run Code Online (Sandbox Code Playgroud)
4)将旧 RAID1 (md0) 的第 1 部分失效,并将其添加到新 RAID10 (md1)
mdadm /dev/md0 --fail /dev/sda2 --remove /dev/sda2
mdadm /dev/md1 --add /dev/sda2
Run Code Online (Sandbox Code Playgroud)
笔记!这将从sda2. 该md0仍应使用,但只有在其他团队成员全面运作。
另请注意,这将在 上开始同步/恢复过程md1。要检查状态,请使用以下命令之一:
# status of sync/recovery
cat /proc/mdstat
# details
mdadm -D /dev/md1
Run Code Online (Sandbox Code Playgroud)
等待恢复完成。
5)在新阵列上安装 GRUB(假设您从它启动)。某些 Linux 救援/启动 CD 效果最佳。
6)在新阵列上启动。如果它正常工作,销毁旧阵列并将剩余的磁盘添加到新阵列。
不归路
此时,您将销毁旧 md0 数组的最后一个成员上的数据。绝对确保一切正常。
mdadm --stop /dev/md0
mdadm /dev/md0 --remove /dev/sdc1
mdadm /dev/md1 --add /dev/sdc1
Run Code Online (Sandbox Code Playgroud)
再次 -等到恢复md1完成。
# status of sync/recovery
cat /proc/mdstat
# details
mdadm -D /dev/md1
Run Code Online (Sandbox Code Playgroud)
7)更新 mdadm 配置
记得更新/etc/mdadm/mdadm.conf(删除md0)。
并将配置保存到 initramfs(重启后可用)
update-initramfs -u
Run Code Online (Sandbox Code Playgroud)
小智 9
遵循与 Mark Turner 相同的过程,但在创建 raid 阵列时,请提及 2 个丢失的磁盘
mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda1 missing /dev/sdb2 missing
Run Code Online (Sandbox Code Playgroud)
然后继续其他步骤。
简而言之,创建 RAID10 总共 4 个磁盘(其中 2 个丢失),重新同步,然后添加另外两个磁盘。
小智 6
刚刚完成从两个 2TB 磁盘 mdadm RAID 1 上的 LVM 到四磁盘 RAID 10(两个原始磁盘 + 两个新磁盘)上的 LVM。
正如@aditsu 所指出的,在创建阵列时驱动器顺序很重要。
mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda missing /dev/sdb missing
Run Code Online (Sandbox Code Playgroud)
上面的代码提供了一个缺少两个磁盘的可用阵列(如果您不使用整个磁盘,请添加分区号)。添加第三个磁盘后,它将开始同步。我在第三个完成同步之前添加了第四个磁盘。它显示为备用,直到第三个磁盘完成然后开始同步。
我的情况的步骤:
做好备份。
创建一个降级的 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 出现故障,则阵列上的数据将被删除。
| 归档时间: |
|
| 查看次数: |
23228 次 |
| 最近记录: |