因此,情况是:

因此,情况是:

因此,我想知道是否可以使用 mdadm 执行以下操作:

  1. 我从 2 个磁盘上的 RAID0 配置开始:sdasdb
  2. 我想向阵列中添加一个磁盘,sdc并将所有数据移至sdb该磁盘。
  3. 断开连接sdb

现在我只看到一个选项 - 我停止阵列,使用或任何其他块复制工具进行复制sdb,然后重新启动阵列sdcdd

我是否遗漏了什么?可以使用 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 不提供冗余。

所以它不支持热驱动器更换。

相关内容