昨天,我又给系统增加了一个500GB的硬盘。 这个系统安装成只有一个驱动器的RAID-1系统,因为我没有另一个驱动器。
在最后添加第二个磁盘之后,我运行“sfdisk -d / dev / sda | sfdisk –force / dev / sdb”,就像我经常做的那样。
然后运行“mdadm –add / dev / md0 / dev / sdb1”,RAID开始同步。
完成后,原来新分区被添加为备用,而不是作为主动设备。 这似乎发生了,因为RAID 1设备认为它只有一个活动设备的空间,因为我做了奇怪的安装。
所以,今天我运行了“mdadm –grow –raid-devices 2 / dev / md0”(注意我没有在'2'之前加'=')。
立即,我的整个文件系统消失了!
我仍然login到ssh会话,但是我仅限于bash的内置命令,这是相当痛苦的。
我编了一个bash-builtin-cat命令,仍然可以捕捉一些文件。 / proc / mdstat看起来很好,并且显示,新驱动器现在实际上是活动的。
/ var / log / messages(奇怪的是,即使所有其他文件都不可访问,仍然可以访问)给了我成千上万个:
尝试访问超出设备md0:rw = 0,希望= 868055984,限制= 4结束
('想要'之后的数字是变化的)。 这些消息都在运行mdadm –grow之后的几秒钟内生成,然后停止。
如上所述,这是一个远程机器。
那么,硬重启确实解决了这个问题,很奇怪。
重新启动后,计算机正常启动,现在又重新构buildRAID 1arrays,并将附加驱动器再次标记为备用。
所以看起来增长命令立即使文件系统和磁盘访问消失 – 很快,即使增长命令的效果也没有写入磁盘。
奇怪。
编辑:原来的驱动器上的数据有坏扇区,所以第一次初始同步失败,并且mdadm把新的(不完全同步)驱动器在'备用'模式。 我的临时解决scheme是使用hdparm(谷歌“hdparm写入坏扇区”)将零写入坏扇区(这是你不应该这样做的!)。 出于某种奇怪的原因,这个工作(即使有一点数据丢失),arrays设法完成其初始同步。 现在,我可以拉动坏的驱动器,并将新驱动器同步到更新的驱动器。