有一个xen domU: C56-64-mgmt,采用lvm作为storage backend。

  • "/"为/dev/vg/C56-64-mgmt

  • "swap"为/dev/vg/C56-64-mgmt-swap

创建完swap后,不小心执行了:

$ sudo mkswap /dev/vg/C56-64-mgmt

导致该"/"分区的数据丢失。

修复步骤如下:

  1. 备份损坏的分区

    $ sudo dd if=/dev/vg/C56-64-mgmt of=/path/to/backup.img
  2. 获取super-block备份

    $ sudo mkfs.ext3 -n /dev/vg/C56-64-mgmt
    Superblock backups stored on blocks:
            32768, 98304, 163840, 229376, 294912, 819200,
    884736, 1605632, 2654208,
            4096000, 7962624, 11239424, 20480000, 2388787
  3. 恢复文件系统结构

    使用上面步骤所获取的倒数第二个super-block备份来恢复文件系统结构

    $ sudo e2fsck -b 20480000 /dev/vg/C56-64-mgmt
  4. 终极杀招

    假如上面的方法无效,可以通过以下方式来尽可能地恢复文件

    $ sudo dd if=<mkswapped_partition> | strings > allStrings.txt

    然后通过文本编辑器来读取这个大文件。

    这一招顶多能恢复一些文本文件,二进制文件就无能为力了。