mdadm-从RAID0删除磁盘


11

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

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

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

我想念什么吗?mdadm是否可以执行此操作?


您可以将sdb创建到临时镜像,然后在后台将sdc同步到它-这减少了所需的停机时间,尽管我不是您的初学者。
peterh-恢复莫妮卡2014年

我肯定不是初学者:)您能告诉我更多有关临时镜像的信息吗?是mdadm功能吗?
疯狂2014年

不,这是一个简单的突袭功能。我想到了一个临时的raid1数组,可以在您的raid1数组中获得sdb的位置。在将sdb同步到sdc时,也可以将其用作raid0阵列的一部分。
彼得-恢复莫妮卡2014年

所以,我了解你的意思吗?1.停止阵列。2.使用sbd和sdc创建另一个RAID1阵列。3.我怎么问mdadm,所以用md1而不是sdb来启动RAID0?
疯狂2014年

研究还不多,但是似乎可以从RAID0-> RAID5扩展。然后缩小到RAID0。
Zoredache 2014年

Answers:


17

首先:对于那些仍然相信“ RAID0没有热备用”的用户。它可能有一个人工备用,由人工完成,他们了解RAID级别和mdadm。mdadm是软件RAID,因此它可以做很多有趣的事情。

感谢Zoredache的创意!

因此,情况:

  • 您有两个磁盘的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磁盘。接下来,我们开始:现在使用奇偶校验恢复sdb的数据。Sweeeeet。

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

Aaaaaaand砰!

md0 : active raid0 sde[4] sdc[1]
      2096128 blocks super 1.2 512k chunks

做完了 让我们看一下md5校验和。

sudo md5sum /dev/md0

b422ba644a3c83cdf28adfa94cb658f3  /dev/md0

还有其他问题吗?因此RAID0可能有热备用。它被称为“用户”;)


1

据我所知,一旦设置了RAID0,就无法更改其中一个磁盘。您可以进行备份并切换磁盘并还原备份。我只需RAID5这3个磁盘即可。将来,您可以通过这种方式丢弃磁盘,然后仍然对其进行重建。


好吧,我知道该如何使用RAID5进行操作-我可以将新磁盘添加为阵列(以备用磁盘),然后将我要移出的磁盘标记为故障磁盘,然后将其从阵列中删除,然后擦除超级块。但我对RAID0的同一操作感兴趣:)
maniaque 2014年

@maniaque之所以称为RAID 0,是因为获得的RAID数量为零。绝对重要的什么都不应被放置在一个RAID 0
迈克尔·汉普顿

@MichaelHampton我认为您的意思是冗余而不是RAID,但您的说法是100%正确的。
joeg1ff 2014年

@MichaelHampton请在下面查看我的回答:)
狂躁症2014年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.