题 如何使用“超级块读取失败”恢复XFS文件系统


我有一个来自Buffalo LinkStation的磁盘,上面有一个我无法安装的XFS分区。

将磁盘插入Ubuntu盒子上的SATA-> USB盒子。我得到以下内容:

$ sudo fdisk -l /dev/sdb

Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1              63      594404      297171   83  Linux
/dev/sdb2          594405     1590434      498015   83  Linux
/dev/sdb4         1590435   976768064   487588815    5  Extended
/dev/sdb5         1590498     1863539      136521   82  Linux swap / Solaris
/dev/sdb6         1863603   976494959   487315678+  83  Linux

问题分区是/ dev / sdb6。

$ sudo xfs_check /dev/sdb6
ERROR: The filesystem has valuable metadata changes in a log which needs to
be replayed.  Mount the filesystem to replay the log, and unmount it before
re-running xfs_check.  If you are unable to mount the filesystem, then use
the xfs_repair -L option to destroy the log and attempt a repair.
Note that destroying the log may cause corruption -- please attempt a mount
of the filesystem before doing this.

所以尝试使用xfs_repair -L选项可以让我了解我无法超越的情况:

$ sudo xfs_repair -L /dev/sdb6
Phase 1 - find and verify superblock...
superblock read failed, offset 382252089344, size 131072, ag 89, rval -1

fatal error -- Input/output error

使用photorec我已经能够从该分区中提取一些文件,因此数据存在并且磁盘在物理上工作。但是,超级块存在问题。

我该如何恢复这个分区?


5
2018-01-15 22:48






答案:


在XFS重播错误之后,根据错误消息尝试再次安装分区。

如果一切都太乱,我强烈建议下载 UFS资源管​​理器 帮助从另一个系统恢复深层文件。


3
2018-01-15 22:53



感谢您的快速答复。失败后再次安装。我刚刚意识到我在这里粘贴了错误的命令...我在xfs_repair上做了-L选项。但是,尝试再次安装仍然无法正常工作。 - Kieran
UFS探索者 - ufsexplorer.com - ewwhite
在尝试了一些免费的Linux工具之后,没有什么比UFS Explorer更好了。它可能是40英镑,但它有效。谢谢。 - Kieran


当我今天遇到这个问题时(约9.5小时前),上面的答案对我没有帮助。我将在这里介绍对我有用的解决方案,以及之前的答案没有帮助的原因。

症状

  1. 无处不在,任何文件 /home 无法保存/编辑等或列出的任何目录。
  2. dmesg 显示在某个地方 xfs_do_force_shutdown called 围绕其他一些xfs消息。
  3. xfs_repair 第1阶段失败了 superblock read failed 其次是 fatal error -- Input/output error
  4. 我的其余磁盘运行完美(包括 /,即仅 /home 没工作)。
  5. 试图 mount 会导致 superblock cannot be found (或类似的)错误,但没有暗示下一步该做什么。

解决方案基于 这个帖子 Nigel Smith,XFS的主要作者(如果我理解正确的话)。如果以前的链接过时,我会重新发布这里的步骤。必须运行以下所有操作 root (显然)。

  1. 对驱动器进行长时间自检: smartctl -t long /dev/sda。可能还要等一下。你也可以用一个简短的测试 smartctl -t short /dev/sda 如果有一个相对较新的长期测试(在我的情况下)。
  2. 用以下任一方法检查测试: smartctl -l selftest /dev/sda 要么 smartctl -a /dev/sda (后者显示所有内容,但您需要的信息几乎就在最后)。
  3. 调用测试报告的最后一列 LBA_of_first_error。这是分区上第一个错误的位置。从最新的测试(将编号为“#1”并位于列表顶部)中,抓取显示的数字并将其除以8并截断为整数值(参见原始帖子的原因)。
  4. 然后,您将清除此特定块。 这将导致此位置的特定文件被破坏。 (但是如果你已经用尽所有其他方法,那么一些损坏的文件并不是那么重要。)这样做,运行以下命令: # dd if=/dev/zero of=/dev/sda conv=sync bs=4096 count=1 seek=*NUMBER_COMPUTED_EARLIER*
  5. 进行简短测试并等待一两分钟以获得结果。重复此操作,直到短测试不显示任何错误。或者,您可以检查错误块的大致数量 smartctl -A /dev/hda | egrep 'Reallocated|Pending|Uncorrectable' 就我而言,我重复了第1步到第4步,直到我遇到24个错误。
  6. xfs_repair /dev/sda ( 该 -L 旗)。这可能会报告您应该尝试挂载文件系统,因为日志日志错误。
  7. 尝试安装该系统。在我的情况下,失败了,所以我不得不跑 xfs_repair -L /dev/sda 删除日志日志(可能导致数据被删除)。
  8. 挂载文件系统并进行最近的备份!

为什么以上解决方案不再起作用

  • 最初的职位已经有几年了。与此同时,对XFS进行了足够的更改,因为SuSE团队认为它足够稳定,可以用作主要的FS /home
  • xfs_check 已被淘汰为有利于 xfs_repair -n
  • Debian解决方案是一个可怕的麻烦和浪费时间。截至目前,Debian 才不是 支持UEFI启动,以及该信息 不是 在他们的下载页面上或他们的主要FAQ页面上(它在他们的Wiki上)。因此,为了使用它启动,您需要在BIOS中禁用UEFI Secureboot,然后启动密钥。之后,你会注意到那里 没有 默认安装xfs工具。所以你会这样做 apt-get install xfsprogs 只是意识到,这就是Debian,他们的“稳定”套装几乎落后了几年。长话短说, xfs_repair /dev/sda 只是挂了永远。这个过程无法被杀死(即使是一个sigterm)。
  • UFS Explorer是付费软件。
  • photorec仅支持特定的文件类型(比如你的GPG键的再见),并在一个文件夹中恢复所有具有任意名称的文件。祝你好运,找到相关信息。

2
2018-02-25 04:08



感谢发布所有这些。这个以及公认的答案对我今天都有帮助。 - Aaron


我在“sda6”上有XFS分区。在Lubuntu上,它已被删除,无法修复,也不会在13.10上安装XFS分区。在启动Lubuntu的时候就说了 应该修复并尝试启动 修复XFS文件系统。当我第一次安装Lubuntu时,在分区上说它 未知

Lubuntu没有修好。使用命令 xfs_check 对我来说没有解决。

我终于解决了 Debian 7 并重新安装。它的 检测 所有文件系统和 通常安装XFS 划分。

我为XFS文件系统读了很多用户,所以我认为这是内核版本更改的问题,因为Debian 7使用的是版本 3.2 并且正常安装XFS没有错误,但在具有最新内核的Ubuntu上 3.11不会解决XFS文件系统

我试过CentOS 6.5但是 CentOS的 跟进RedHat和旧的“稳定”内核。它 不会被发现 XFS自动。

最后我在Debian 7上 备份所有数据 在XFS分区上并重新创建分区 EXT4


由于RedHat不会修复XFS读取分区和XFS的一些问题(google它有多少用户没有解决XFS读取分区)我一般选择使用Debian备份并更改为与内核3.11兼容的新版本到EXT4 / btrfs ...文件系统。

希望这有人帮助。


1
2017-12-15 22:11



我使用安装在VirtualBox虚拟机上的内核3.16.0-4-amd64的新下载的Debian 8.6修复了我的XFS分区,从Buffalo路由器(如Kieran plroblem);-) - NetVicious
@NetVicious你可以指定你运行的命令吗?在Debian 8.6 jessie Live USB上我当前有xfs_repair挂起。在我的OpenSuSE(我的原始发行版)上进行救援时,它不会挂起,但它会显示“无法读取超级块”错误。 - ChrisR
我使用了linux的fstransform命令。但是我发现VirtualBox USB 2.0的速度大约是1MB /秒,我的转换持续了6天多。它有两个阶段,一个用于移动数据,另一个用于将其转换为新的文件系统格式。因此,我建议您将其安装在没有虚拟化的真实分区中,以便使用完整的USB速度。 - NetVicious


我使用新的下载的Debian 8.7.1通过真实服务器修复了我的XFS分区,只需将磁盘放在此系统上即可自动修复。 Centos 5和6无法修复它


0
2018-03-14 16:24