问:安装新硬盘后,Raid1 无法启动

问:安装新硬盘后,Raid1 无法启动

我的 Ubuntu 服务器出现了磁盘故障。托管商的技术人员很快就帮我安装了新硬盘。

然后我按照他们页面上的说明将新磁盘集成到 raid 中。它开始与这个问题的答案类似(如何快速将 GPT 分区方案从一个硬盘复制到另一个硬盘?)将分区表从旧磁盘复制到新磁盘:

sgdisk -R /dev/sdY /dev/sdX
sgdisk -G /dev/sdY

我很确定我没有混淆新旧驱动器。然后我尝试使用以下命令将新磁盘集成到 raid 中

mdadm /dev/md0 -a /dev/sda1

该命令失败。我重新启动才能获取 sda 上的新分区。但事情到此结束。系统将无法再启动。我可以访问救援系统,但我完全不知道要做什么才能启动并运行我的系统。

看起来我的文件系统可能已损坏?

fsck /dev/sdb
fsck from util-linux 2.25.2
e2fsck 1.42.12 (29-Aug-2014)
ext2fs_open2: Bad magic number in super-block
fsck.ext2: Superblock invalid, trying backup blocks...
fsck.ext2: Bad magic number in super-block while trying to open /dev/sdb

有什么方法可以确定文件系统是否确实被破坏了?我当时正在运行 kvm,上面有几个 vm。

答案1

我搞清楚了发生了什么。有两种可能:1) 我弄乱了分区表,或者 2) 其它东西弄乱了分区表,重启后就什么也做不了了。

当 raid1 中的一个磁盘损坏时我应该执行以下操作:

  • 检查 raid 状态,cat /proc/mdstat确保驱动器确实坏了
  • mdadm examine进一步了解突袭的状态
  • 当系统仍在运行时,对未正确备份的内容进行备份(例如在移除硬盘并强制重新启动已经压力很大的系统之前)
  • 在执行任何其他操作之前,请先备份分区表(最好gdisk在备份之前以交互方式使用并列出分区,以确保使用正确的设备/硬盘)
  • 使用从 raid 中干净地mdadm删除故障硬盘分区--fail
  • 不要将分区表从一个驱动器复制到另一个驱动器,而是使用备份来加载它
  • 可能需要重新启动才能正确设置分区(确保之前已备份所有内容)
  • 使用mdadm将新分区添加回 raid 设备 femdadm --add /dev/md1 /dev/sda2
  • 如果由于某种原因你忘记执行,--fail你可以用这个重新创建 raid 设备:(mdadm --create /dev/md1 --assume-clean --level=1 --verbose --raid-devices=2 missing /dev/sdb2我很确定这不是破坏剩余硬盘上文件系统的原因

如果我按照上述方法操作,我就不会陷入上述境地。一旦陷入这种境地,我就找不到出路了。那么是什么让我确信数据已经消失了呢?

  • 在救援系统中,我无法使用 挂载任何设备mount -t ext4 /dev/md1 /mnt/mountpoint。我不断收到无法识别文件系统和找不到魔法数字的错误
  • Testdisk 在尝试重新创建分区表时发现了错误的分区数
  • dumpe2fs虽然给我一堆魔法数字的位置没有任何帮助,因为没有一个是有效的,而且这些位置在分区内的某些位置是“固定的”,所以如果分区表是错误的,这些位置就不再排列了
  • fsck基本上告诉我同样的事情,并牺牲了一个分区来尝试修复文件系统,但每个 inode 都抛出了错误
  • 我使用 R-Studio(R-Tools 的商业软件,可免费扫描和恢复最大 256kb 的文件)进行了远程扫描,虽然一开始看起来好像有可恢复的文件,但我用它下载了一些 jpg 和 png,但没有一个包含有效的图像数据。我尝试了各种方法来找出文件系统出了什么问题,但一切都回到了混乱的分区表,并且使用 testdisk 恢复失败。

因此,经验教训是:1)将分区表的备份保存在安全的地方(即不在服务器上)2)当发生事情时 - 首先进行备份3)在发生事情之前制定备份策略

相关内容