因此,我想知道是否可以使用 mdadm 执行以下操作:
- 我从 2 个磁盘上的 RAID0 配置开始:
sda
和sdb
。 - 我想向阵列中添加一个磁盘,
sdc
并将所有数据移至sdb
该磁盘。 - 断开连接
sdb
。
现在我只看到一个选项 - 我停止阵列,使用或任何其他块复制工具进行复制sdb
,然后重新启动阵列sdc
。dd
我是否遗漏了什么?可以使用 mdadm 执行此操作吗?
答案1
首先:对于那些仍然相信“RAID0 没有热备用”的人。它可以有一个手动备用,由了解 RAID 级别和 mdadm 的人完成。mdadm 是软件 RAID,因此它可以做很多有趣的事情。
致谢佐尔达什这个想法!
因此,情况是:
- 你有两个磁盘的 RAID0 阵列
- 您希望在不停机的情况下更换其中一个
如果停机时间是可以接受的,您总是可以用 dd 创建磁盘块副本并重新组装阵列,mdadm 就可以了。
解决方案:使用 RAID4 作为中间解决方案
RAID0 -> RAID4 -> RAID0
因此,如果您不记得 RAID4,它很简单。它有一个奇偶校验块,但与 RAID5 不同,它不是分布在整个阵列中,而是驻留在一个磁盘上。这就是重点,这很重要,这就是 RAID5 无法工作的原因。
您所需要的:另外两个与您想要替换的磁盘大小相同的磁盘。
环境:
- Ubuntu 14.04 Thrusty Thar
- mdadm - v3.2.5 - 2012 年 5 月 18 日
- /dev/sdb-以此启动,并将替换它
- /dev/sdc-从它开始
- /dev/sdd-将临时使用
- /dev/sde-将代替sdb使用
终极 RAID0 热备用 mdadm 指南 ;)
sudo mdadm -C /dev/md0 -l 0 -n 2 /dev/sd[bc]
md0 : active raid0 sdc[1] sdb[0]
2096128 blocks super 1.2 512k chunks
我们已经创建了 raid0 阵列,它看起来很棒。
sudo md5sum /dev/md0
b422ba644a3c83cdf28adfa94cb658f3 /dev/md0
这是我们的检查点 - 如果结果有哪怕一位不同/dev/md0
- 我们就失败了。
sudo mdadm /dev/md0 --grow --level=4
md0 : active raid4 sdc[1] sdb[0]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
现在,我们已将阵列扩展为 RAID4。我们尚未添加奇偶校验磁盘,因此让我们来添加它。扩展将立即生效 - 无需重新计算或重新计算。
sudo mdadm /dev/md0 -a /dev/sdd
md0 : active raid4 sdd[3] sdc[1] sdb[0]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
[===>.................] recovery = 19.7% (207784/1048064) finish=0.2min speed=51946K/sec
我们已添加sdd
奇偶校验磁盘。这一点很重要,请记住 - 第一行的磁盘顺序与第二行的图片不同步![UU_]
sdd
首先显示,但实际上它是最后一个,并且保存的不是数据,而是奇偶校验。
sudo mdadm /dev/md0 -f /dev/sdb
md0 : active raid4 sdd[3] sdc[1] sdb[0](F)
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
我们使磁盘 sdb 出现故障,以便在接下来的步骤中将其删除。
sudo mdadm --detail /dev/md0
State : clean, degraded
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 32 1 active sync /dev/sdc
3 8 48 2 active sync /dev/sdd
0 8 16 - faulty spare /dev/sdb
详细信息向我们展示了第一个磁盘的移除,在这里我们可以看到阵列中磁盘的真实顺序。跟踪具有奇偶校验的磁盘很重要,我们不应该在返回 RAID0 时将其留在阵列中。
sudo mdadm /dev/md0 -r /dev/sdb
md0 : active raid4 sdd[3] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
sdb
被彻底移除,就能被带走。
sudo mdadm /dev/md0 -a /dev/sde
md0 : active raid4 sde[4] sdd[3] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
[==>..................] recovery = 14.8% (156648/1048064) finish=0.2min speed=52216K/sec
我们已经为 sdb 磁盘添加了替换。现在我们开始:现在安全数据库正在使用奇偶校验进行恢复。甜蜜。
md0 : active raid4 sde[4] sdd[3] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/3] [UUU]
完成。现在我们完全安全了 - sdb 中的所有数据都已恢复,现在我们必须删除 sdd(记住,它保存奇偶校验)。
sudo mdadm /dev/md0 -f /dev/sdd
md0 : active raid4 sde[4] sdd[3](F) sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
导致 sdd 出现故障。
sudo mdadm /dev/md0 -r /dev/sdd
md0 : active raid4 sde[4] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
从我们的阵列中删除了 sdd。我们已准备好再次成为 RAID0。
sudo mdadm /dev/md0 --grow --level=0 --backup-file=backup
md0 : active raid4 sde[4] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
[=>...................] reshape = 7.0% (73728/1048064) finish=1.5min speed=10532K/sec
啊啊啊啊,砰!
md0 : active raid0 sde[4] sdc[1]
2096128 blocks super 1.2 512k chunks
完成。让我们看看 md5 校验和。
sudo md5sum /dev/md0
b422ba644a3c83cdf28adfa94cb658f3 /dev/md0
还有其他问题吗?所以 RAID0 可以有一个热备用。它被称为“用户”;)
答案2
据我所知,一旦设置了 RAID0,您就无法更改其中一个磁盘。您可以进行备份并切换磁盘,然后恢复备份。我只会对您拥有的 3 个磁盘进行 RAID5。这样,将来您可以删除磁盘并重建它。
答案3
RAID 0 不提供冗余。
所以它不支持热驱动器更换。