我有一台装有 3 块硬盘的 Debian 7 服务器。其 RAID-1 基本配置如下:
md0:sda1,sdb1 --> /(根)md1:sda5,sdc1 + sdb5(备用)--> /数据(sdc1 位于 SSD 上,sda5 标记为“writemostly”)。
sda 和 sdb 都安装了 grub。
在安装额外的网卡时,我弄乱并拔掉了sdc的数据线(注意sdc没有GRUB或/,并且应该与启动无关)。
之后系统启动正常。我注意到了错误,关闭了机器,然后重新插入 sdc(此时 mdadm 正在备用驱动器上重建 md1)。
现在,系统要么给我可怕的 GRUB shell,要么只是一个带有闪烁光标的黑屏。这取决于我拔掉的硬盘。但没有哪种硬盘组合能让我成功启动。我还尝试过连接所有 3 个驱动器,并告诉 BIOS 手动从任何启动驱动器启动。
我最终所做的是在救援模式下启动 Debian 设置、组装 RAID 设备并重建它们。
这并没有导致启动成功。
于是我再次启动救援模式,并在 sda 和 sdb 上手动重新安装 GRUB。这解决了我的问题。
我的问题是:这里发生了什么?a) 据我所知,sdc 不应该以任何方式影响启动?b) 即使我中断的 RAID 重建过程会影响启动,为什么在救援模式下重建 RAID 阵列后系统无法启动?如果据我所知,驱动器上存放 GRUB 的扇区与 RAID 阵列没有任何关系,为什么我必须手动在 sda 和 sdb 上重新安装 GRUB?
答案1
首先:不要再做任何事情。通过中断一次重建并测试各种组合,数据可能已被破坏、毁坏或丢失。通常最好让一个操作完全完成后再尝试下一步——中断会带来不确定性和混乱,而浪费时间通常比丢失数据要好得多。
我建议采用以下方法:
一次处理一个驱动器。 dd
在写入任何更改之前,将整个驱动器备份(如果可用)。
对于每个驱动器,尝试在没有 RAID 的情况下单独安装每个分区。我认为您需要mdadm --stop /dev/mdX
将其从 RAID 中分离出来,然后才能正常安装它。
找到每个分区的干净副本(或最不混乱的副本)并将它们传输到非 RAID 驱动器。恢复可启动的非 RAID 系统后,您应该能够重建 RAID 设备。由于您有三个驱动器和两个分区,您应该能够在没有额外磁盘的情况下完成此操作(除了备份dd
- 这不是必需的,但可以避免进一步挖掘)。