我的服务器的一个驱动器发生故障,因此我从所有三个相关阵列中移除了发生故障的驱动器,将其换出,然后将新驱动器添加到阵列中。其中两个阵列运行正常。第三个阵列将该驱动器作为备用驱动器重新添加回来,详细信息中有一个奇怪的“已移除”条目mdadm
。
我都试过了
mdadm /dev/md2 --remove failed
和
mdadm /dev/md2 --remove detached
有人知道我怎样才能删除该条目并正确地重新添加驱动器吗?(理想情况下不需要第三次重新同步,我已经做了两次,而且花了几个小时。但如果这是需要的,那就需要这样做。)新的驱动器是/dev/sda
,相关分区是/dev/sda3
。
以下是该阵列的详细信息:
# mdadm --detail /dev/md2 /dev/md2: 版本:0.90 创建时间:2011 年 10 月 26 日星期三 12:27:49 突袭级别:raid1 数组大小:729952192(696.14 GiB 747.47 GB) 已使用设备大小:729952192 (696.14 GiB 747.47 GB) 突袭设备:2 设备总数:2 首选辅修科目:2 持久性:超级块是持久的 更新时间:2013年11月12日星期二17:48:53 状态:干净、降级 活跃设备:1 工作装置:2 故障设备:0 备用设备:1 UUID:2fdbf68c:d572d905:776c2c25:004bd7b2(本地到主机 blah) 事件:0.34665 编号 主要 次要 RaidDevice 状态 0 0 0 0 已移除 1 8 19 1 活动同步 /dev/sdb3 2 8 3 – 备用 /dev/sda3
如果相关的话,它就是一台 64 位服务器。它通常运行 Ubuntu,但现在我在数据中心的“救援”操作系统中,即 Debian 7(喘息)。上次我在 Ubuntu 中时,“已删除”条目就在那里(目前它不会从磁盘启动),所以我不认为这不是某种 Ubuntu/Debian 冲突(当然,它们是密切相关的)。
更新:
在本地机器上使用测试设备进行了大量测试后,我发现mdadm
这个数组的行为异常。例如,/dev/sda3
再次从数组中删除后,我执行了以下操作:
mdadm /dev/md2 --grow --force --raid-devices=1
这样就删除了“已移除”的设备,只剩下/dev/sdb3
。然后我删除了/dev/sda3
它(向其中写入了一个文件系统,因此它不再具有 raid fs),然后:
mdadm /dev/md2 --grow --raid-devices=2
/dev/sdb3
...正如您所期望的那样,它返回了一个位于插槽 0 中且在插槽 1 中“已移除”的数组。然后
mdadm /dev/md2 --add /dev/sda3
...已添加 —再次作为备用。(又浪费了 3.5 个小时。)
因此,对于阵列中重建的备用设备,鉴于mdadm
手册页显示
RAID 设备变更
...
当设备数量增加时,任何存在的热备用设备都将立即激活。
...我将阵列扩展到三个设备,以尝试激活“备用”:
mdadm /dev/md2 --grow --raid-devices=3
我得到了什么?二“删除”设备,以及备用设备。但是当我使用测试阵列执行此操作时,我没有得到此行为。
因此我/dev/sda3
再次将其删除,并用它创建了一个全新的数组,并将数据从旧数组复制到新数组:
rsync -r -t -v --exclude 'lost+found' --progress /mnt/oldarray/* /mnt/newarray
当然,这会花上几个小时。希望当我完成后,我可以完全停止旧阵列,将其删除/dev/sdb3
,并将其添加到新阵列中。希望它不会被添加为备用!
答案1
好吧,所有常用选项(在我的问题中列出)都失败了,我别无选择,只能:
/dev/sda3
从数组中删除核爆
创建一个新的包含它和一个空槽的降级数组
rsync
将文件从旧数组移至新数组停止旧阵列
核弹
/dev/sdb3
添加
/dev/sdb3
到新数组
它开始说“备用,重建”,但一旦重建,它就会作为活动驱动器添加到阵列中。
当然,这意味着要处理阵列变化带来的连锁反应(因为这是根文件系统,所以这非常麻烦)。
据我所知,前一个数组的定义已损坏,因为:
A)添加驱动器应该像添加其他两个驱动器一样,
和
B) 如果没有,那么缩小和扩大数组应该有效。