从软RAID中删除驱动器


11

我在RAID 1中有一个带3个SSD驱动器的专用服务器。cat / proc / mdstat的输出:

    Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md4 : active raid1 sdc4[2] sdb4[1] sda4[0]
      106738624 blocks [3/3] [UUU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md2 : active raid1 sdc2[2] sda2[0] sdb2[1]
      5497792 blocks [3/3] [UUU]

md1 : active raid1 sda1[0] sdc1[2] sdb1[1]
      259008 blocks [3/3] [UUU]

unused devices: <none>

¿如何在不丢失任何数据的情况下安全地从软RAID中移除驱动器?我想从阵列中删除驱动器,以便对其进行重新格式化并独立使用,同时保留最重要的数据进行镜像。

提前致谢

Answers:


20

您在那里有一个三向镜像:每个驱动器都有所有数据的完整副本。假设你要删除的驱动器/dev/sdc,你想从三个阵列中删除它,你会执行以下步骤为/dev/sdc1/dev/sdc2/dev/sdc4

步骤1:从阵列中卸下驱动器。您无法从阵列中删除活动设备,因此需要首先将其标记为失败。

mdadm /dev/md1 --fail /dev/sdc1
mdadm /dev/md1 --remove /dev/sdc1

步骤2:清除RAID元数据,以便内核不会尝试重新添加它:

wipefs -a /dev/sdc1

步骤3:缩小阵列,使其仅是两向镜像,而不是缺少驱动器的三向镜像:

mdadm --grow /dev/md1 --raid-devices=2

您可能需要先从中删除写入意图位图,/dev/md4然后再将其收缩(此手册尚不明确),在这种情况下,您可以在步骤3之前先使用删除它mdadm --grow /dev/md4 --bitmap=none,然后再使用将其放回mdadm --grow /dev/md4 --bitmap=internal


这样是否会将数据保留在要删除的磁盘上?即您以后是否还可以从单独的磁盘访问RAID上的数据?
没人

2
@没人,如果要从已卸下的驱动器中读取数据,则应跳过步骤2。实际上,所有数据在运行后仍然存在wipefs(它只会擦除文件系统识别所需的几个关键字节),但是读取成为一种练习在数据恢复,而不仅仅是在封堵驱动的问题。
马克

0

男士mdadm:

   -r, --remove
          remove listed devices.  They must  not  be  active.   i.e.  they
          should be failed or spare devices.

          As well as the name of a device file (e.g.  /dev/sda1) the words
          failed, detached and names like set-A can be given to  --remove.
          The  first  causes  all failed device to be removed.  The second
          causes any device which is no longer  connected  to  the  system
          (i.e  an  'open'  returns  ENXIO) to be removed.  The third will
          remove a set as describe below under --fail.
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.