如何恢复部分永久性数据丢失的 Ubuntu 服务器?

如何恢复部分永久性数据丢失的 Ubuntu 服务器?

我有一台 Ubuntu 服务器,其根分区位于 raid 0 上,其中一个硬盘出现数据丢失/扇区损坏。数据丢失仅影响该根分区上总数据的 1-2%,但服务器要么无法正确启动,只启动 BusyBox,要么虽然启动了,但速度非常慢,并显示很多错误,例如end_request: critical target error, dev sda, sector xxxxxxxx

此外,该服务器并不重要,只执行一些不涉及关键数据的维护任务(否则就不会有 raid 0),恢复其配置还是很好的,这样我就不必再次安装和配置所有内容。

尝试使用临时方法修复所有问题并fsck没有帮助,我也尝试使用类似工具来克隆磁盘dd,但也没有取得任何成果(我感觉克隆的状况比仍然在坏的 raid 0 上的实际分区更糟糕)。

但是我知道,例如,所有东西都很好。所以我的问题是,从这种数据丢失中恢复 Ubuntu Server 的最佳方法是什么?/etc/我 的想法是使用损坏的 dd 克隆之一并覆盖 linux 内核文件,以及从相同版本的 Ubuntu Server 的服务器安装 DVD 中获取其他所需的内容。或者安装相同版本的新 Ubuntu Server,并将旧分区的正确配置文件复制回新系统。但是我不确定哪个更好,在这两种情况下究竟需要哪些数据,以及是否有工具可以完成此类任务。所以任何提示都将不胜感激。/home/

答案1

首先,您不想再启动服务器,因为这样不会写入磁盘。每次写入都会降低您成功恢复数据的机会。这fsck是一个非常糟糕的主意。

现在您需要获取驱动器的原始图像。除非它是像 这样的纯软件 RAID mdadm,否则我不建议使用相同的系统 - 如果它是真正的硬件 RAID,甚至是“假”RAID,但不受操作系统管理,我担心启动它会让 RAID 控制器本身尝试写入磁盘并进一步损坏它们。

在 Linux 光盘或其他驱动器上的现有 Linux 安装上启动,然后使用它们ddrescue来获取磁盘映像。这个过程可能非常缓慢,需要几天的时间,但最终您将获得尽可能多的优质数据。

获得映像后,您只需对其进行处理。如果您不打算将原始驱动器发送给数据恢复公司,您可以立即将其丢弃。

如果是mdadmraid,您可以直接操作映像,方法是将它们变为循环设备并将mdadm --assemble它们当作真实驱动器。然后,以只读模式安装分区并尝试cp所有可能的操作。

您可以复制多份图像并尝试不同的选项。我不确定是否fsck有帮助,但考虑到您不会丢失任何东西,因为您总是可以从干净的图像副本开始,所以您可以随时尝试。此外,底层驱动器(嗯,由图像支持的循环设备)良好且可以接受写入的事实可能会使它真正fsck成功。

如果是硬件 RAID,无论真假,最好的方法是购买与故障驱动器相同的驱动器,将dd映像放入其中,将它们放回受影响的机器中(以便 RAID 控制器像往常一样重新组装它们)并从 Linux CD 启动。然后,以只读方式安装分区并尝试将cp数据传输到已知良好的驱动器或网络(NFS 等)。

答案2

你必须做这样的事:

  1. 将整个磁盘内容克隆到工作磁盘。使用克隆或 Norton Ghost(如果您有许可证)。这可能需要很长时间,但至关重要。
  2. 检查包管理器数据库的完整性。
  3. 检查包本身的完整性,例如使用debsums
  4. 强制重新安装那些已损坏的。

这会修复系统本身,但会留下配置文件(例如 /etc)和其他数据。没有简单的方法可以修复这个问题。您必须逐个文件地进行修复。

相关内容