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

我有一个Ubuntu的服务器,根分区是在一个RAID 0是一个硬盘有数据丢失/破碎扇区。 数据丢失只影响根分区总数据量的1-2%,但服务器无法正确启动,只启动BusyBox,或者启动,但速度很慢,并显示很多错误,如end_request: critical target error, dev sda, sector xxxxxxxx

此外,服务器没有太大的重要性,只做一些维护任务没有关键的数据(否则不会有一个RAID 0)它仍然是很好的恢复其configuration,所以我不必安装和configuration一切再次。

试图用fsck修复一切暂时没有帮助,我也尝试克隆与dd和类似的工具,也没有达到任何东西的磁盘(我有这样的感觉克隆比实际分区情况更糟糕仍然是在糟糕的RAID 0)。

但是我知道,例如/etc//home/都是非常好的。 所以我的问题是什么是恢复Ubuntu服务器forms这种types的数据丢失的最佳方式?
我的想法是使用一个破损的dd克隆,并覆盖linux内核文件,以及Ubuntu服务器相同版本的服务器安装DVD中还需要什么。 或者安装相同版本的新Ubuntu服务器,并将旧分区的正确configuration文件复制回新系统。 不过,我不确定哪种方法更好,哪种情况下都需要哪些数据,以及是否有可用于此类任务的工具。 所以任何提示将不胜感激。

首先,您不想再引导服务器,以免导致写入磁盘。 每写可以减less成功恢复数据的机会。 fsck是一个非常糟糕的主意。

现在您需要拍摄驱动器的原始图像。 除非像使用mdadm这样的纯粹的软件RAID,否则我不会推荐使用相同的系统 – 如果它是一个真正的硬件RAID,甚至是一个“假的”RAID,但不是由操作系统pipe理的,恐怕会引导它RAID控制器本身尝试写入磁盘并损坏它们甚至更多。

在Linux光盘上或其他驱动器上的现有Linux安装上启动,并使用ddrescue拍摄磁盘映像。 这个过程可能非常缓慢,需要数天时间,但最终你将获得尽可能多的数据。

一旦你有了图像,你只需要对它们进行处理。 如果您不打算将原始驱动器发送给数据恢复公司,则可以立即将其丢弃。

如果这是一个mdadm raid,你可以通过使它们成为循环设备和mdadm --assemble来直接操作图像 – 将它们mdadm --assemble起来就好像它们是真正的驱动器一样。 然后,将分区挂载到只读模式,并尽可能地尝试cp

您可以制作多个图像副本,并尝试不同的选项。 我不确定fsck是否会有所帮助,但是如果你总是从干净的图像副本上重新开始,那么你可以随时尝试。 此外,底层驱动器(以及由图像支持的循环设备)是好的并且会接受写入的事实可能会使得fsck实际上成功。

如果是硬件RAID,无论是真的还是假的,最好的办法是购买与故障硬盘相同的硬盘,然后将硬盘映像拷贝到受影响的机器上(以便RAID控制器像往常一样重新组装)以及引导一个Linux CD。 然后,以只读方式装入分区,并尝试将数据分配给已知的驱动器或networking(NFS等)。

你将不得不这样做:

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

这将修复系统本身,但会留下configuration文件(例如/ etc)和其他数据。 有没有简单的方法来解决这个问题。 你将不得不在档案的基础上做到这一点。