如何修复被mkswap的分区
有一个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
导致该"/"分区的数据丢失。
修复步骤如下:
-
备份损坏的分区
$ sudo dd if=/dev/vg/C56-64-mgmt of=/path/to/backup.img
-
获取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
-
恢复文件系统结构
使用上面步骤所获取的倒数第二个super-block备份来恢复文件系统结构
$ sudo e2fsck -b 20480000 /dev/vg/C56-64-mgmt
-
终极杀招
假如上面的方法无效,可以通过以下方式来尽可能地恢复文件
$ sudo dd if=<mkswapped_partition> | strings > allStrings.txt
然后通过文本编辑器来读取这个大文件。
这一招顶多能恢复一些文本文件,二进制文件就无能为力了。