Linux:从错误的超级块中恢复损坏的分区

时间:2020-01-09 10:43:09  来源:igfitidea点击:

问题描述:如何从损坏的ext3分区中恢复坏的超级块以恢复数据?
我收到以下错误:

/dev/sda2: Input/output error  mount: /dev/sda2: cant read superblock
/dev/sda2:输入/输出错误挂载:/dev/sda2:无法读取超级块

如何解决此错误?

解决方法:Linux ext2/3文件系统将超级块存储在不同的备份位置,因此可以从损坏的分区取回数据。

警告!确保文件系统是未安装的。

如果系统将为您提供一个终端,请执行以下命令,否则从应急磁盘启动Linux系统(从第一张CD/DVD引导。
在启动时:提示执行命令linux rescue)。

使用备用超级块挂载分区

找出/dev/sda2的超级块位置:

# dumpe2fs /dev/sda2 | grep superblock

现在使用备用超级块32768检查并修复Linux文件系统:

# fsck -b 32768 /dev/sda2

输出示例:

fsck 1.40.2 (12-Jul-2007)
e2fsck 1.40.2 (12-Jul-2007)
/dev/sda2 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong for group #241 (32254, counted=32253).
Fix? yes

Free blocks count wrong for group #362 (32254, counted=32248).
Fix? yes

Free blocks count wrong for group #368 (32254, counted=27774).
Fix? yes
..........
/dev/sda2: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sda2: 59586/30539776 files (0.6% non-contiguous), 3604682/61059048 blocks

现在尝试使用mount命令挂载文件系统:

# mount /dev/sda2 /mnt

您还可以使用存储在32768的超级块来安装分区,执行:

# mount sb={alternative-superblock} /dev/device /mnt
# mount sb=32768 /dev/sda2 /mnt

尝试浏览和访问文件系统:

# cd /mnt
# mkdir test
# ls -l
# cp file /path/to/safe/location

您应该始终备份所有重要数据,包括配置文件。