从软 RAID 中移除驱动器

Rau*_*aul 18 raid raid1

我在 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>
Run Code Online (Sandbox Code Playgroud)

¿如何在不丢失任何数据的情况下安全地从软突袭中删除驱动器?我想从阵列中删除一个驱动器,以便重新格式化它并独立使用它,同时保持最重要的数据镜像。

Mar*_*ark 33

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

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

mdadm /dev/md1 --fail /dev/sdc1
mdadm /dev/md1 --remove /dev/sdc1
Run Code Online (Sandbox Code Playgroud)

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

wipefs -a /dev/sdc1
Run Code Online (Sandbox Code Playgroud)

第 3 步:缩小阵列,使其只是一个双向镜像,而不是缺少驱动器的三向镜像:

mdadm --grow /dev/md1 --raid-devices=2
Run Code Online (Sandbox Code Playgroud)

您可能需要/dev/md4在缩小之前删除写意图位图(手册对此不清楚),在这种情况下,您可以在第 3 步之前使用mdadm --grow /dev/md4 --bitmap=none,然后使用 将其放回原处mdadm --grow /dev/md4 --bitmap=internal

  • @Nobody,如果你想从删除的驱动器中读取数据,你应该跳过第 2 步。在运行 `wipefs` 之后几乎所有的数据仍然存在(它只擦除文件系统识别所需的几个关键字节),但读取它成为数据恢复的练习,而不仅仅是插入驱动器的问题。 (2认同)