昨天,我为系统添加了第二个 500GB 硬盘。由于手头没有另一个硬盘,因此此系统安装为只有一个硬盘的 RAID-1 系统。
最后添加第二个磁盘后,我运行“sfdisk -d /dev/sda | sfdisk --force /dev/sdb”,就像我经常做的那样。
然后我运行“mdadm --add /dev/md0 /dev/sdb1”,RAID 开始同步。
完成后,发现新分区是作为备用分区添加的,而不是作为活动设备添加的。发生这种情况的原因似乎是 RAID 1 设备认为它只能容纳 1 个活动设备,因为我的安装很奇怪。
所以,今天,我运行了“mdadm --grow --raid-devices 2 /dev/md0”(注意,我没有在‘2’前面加上‘=’)。
我的整个文件系统立刻消失了!
我仍然登录到 ssh 会话,但只能使用 bash 的内置命令,这相当痛苦。
我编写了一个 bash-builtin-cat 命令,并且仍然可以 cat 一些文件。/proc/mdstat 看起来很好,并表明新驱动器现在实际上处于活动状态。
/var/log/messages(奇怪的是,尽管其他所有文件都无法访问,但仍然可以访问)给出了数千条信息:
尝试访问设备 md0 以外的内容:rw=0,want=868055984,limit=4
(“want” 后面的数字会有所不同)。所有消息都是在运行 mdadm --grow 后几秒内生成的,然后停止。
如上所述,这是一台远程机器。
- 这里到底发生了什么事?
- 有没有什么方法可以撤消 --grow 所造成的任何影响?
- 我可以从 RAID 设备中移除新磁盘,只需将其回显到模糊的 /proc 文件中(因为不再找到 mdadm)吗?
- 我是否应该触发 SysRq 重启并希望获得最佳效果?
答案1
嗯,奇怪的是,硬重启确实解决了这个问题。
重启后,计算机正常启动,现在正在再次重建 RAID 1 阵列,并且附加驱动器再次被标记为备用。
因此看起来,grow 命令立即使文件系统和磁盘访问消失 - 速度如此之快,甚至连grow 命令的效果都没有写入磁盘。
奇怪的。
编辑:原来,包含数据的驱动器有坏扇区,因此第一次初始同步失败,mdadm 将新的(未完全同步的)驱动器置于“备用”模式。我的临时解决方案是使用 hdparm(谷歌搜索“hdparm 写入坏扇区”)将零写入坏扇区(这是您不应该做的!)。出于某种奇怪的原因,这有效(即使丢失了一点数据),并且阵列设法完成了其初始同步。现在我可以拉出坏驱动器,并将新驱动器同步到更新的驱动器。