如何恢复“超级块读取失败”的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我已经能够从该分区拉出一些文件,所以数据在那里,磁盘正在工作。 但是,超级块有问题。

我将如何恢复这个分区?

在XFS重播错误之后,尝试按照错误消息重新装入分区。

如果一切太乱,我强烈build议下载UFS资源pipe​​理器,以帮助从另一个系统的深度文件恢复。

我有“sda6”上的XFS分区。 在Lubuntu它的corrputed,不会修复,并不会在13.10上挂载XFS分区。 在启动Lubuntu的时候就说应该修复并尝试引导来修复XFS文件系统。 当我第一次安装Lubuntu时,在分区上说“ Unknown”

Lubuntu没有修复。 对我使用命令xfs_check没有解决。

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

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

我试过用CentOS 6.5,但是CentOS跟着RedHat和旧的“stable”内核。 它不会自动检测到 XFS。

最后,我已经在Debian 7上备份了XFS分区上的所有数据 ,并将分区重新创build为EXT4


由于RedHat不会修复XFS读取分区和XFS的一些问题(谷歌它有多less用户没有解决XFS读取分区)我一般select使用Debian来备份和更改为新的兼容内核3.11到EXT4 / btrfs …文件系统。

希望这个人帮助。

我使用新下载的Debian 8.7.1在真正的服务器上修复了我的XFS分区,只是把磁盘放在这个系统上,然后自动修复。 Centos 5和6不能修复它

当我今天遇到这个问题时(上午9点半左右),上面的答案并没有帮助我。 我将在这里介绍为我工作的解决scheme,以及为什么以前的答案没有帮助的原因。

症状

  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 (或类似)的错误,但没有提示下一步该怎么做。

解决scheme是基于这个职位 Nigel史密斯,XFS的主要作者(如果我理解正确)。 如果以前的链接过时,我会在这里重新发布步骤。 以下所有操作必须以root身份运行(显然)。

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

为什么上述解决scheme不再工作

  • 最初的职位是几岁。 与此同时,XFS已经发生了足够的变化,因此SuSE团队认为足够稳定,可以作为/home的主要FS。
  • xfs_check已经被废弃,转而使用xfs_repair -n
  • Debian的解决scheme是一个可怕的麻烦和浪费时间。 截至目前,Debian 支持UEFI启动,这些信息不在他们的下载页面上,也不在他们的主要常见问题页面(在他们的Wiki上)。 因此,为了启动,你需要在你的BIOS中禁用UEFI Secureboot,然后启动密钥。 之后,您会注意到,默认情况下没有安装xfs工具。 所以你只需要apt-get install xfsprogs可以实现这个function,这就是Debian,他们的“stable”软件包已经落伍了。 长话短说, xfs_repair /dev/sda只是永远挂着。 这个过程不能被杀死(即使是使用sigterm)。
  • UFS Explorer是付费软件。
  • photorec只支持特定的文件types(比如再见到你的GPG密钥),并将所有文件都以任意名称恢复到一个文件夹中。 祝你好运,并find相关信息。