Kie*_*ran 9 xfs filesystems data-recovery
我有一个来自 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
Run Code Online (Sandbox Code Playgroud)
问题分区是/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.
Run Code Online (Sandbox Code Playgroud)
所以尝试 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
Run Code Online (Sandbox Code Playgroud)
使用 photorec 我已经能够从该分区中提取一些文件,因此数据在那里并且磁盘在物理上工作。但是,超级块存在问题。
我将如何恢复这个分区?
小智 5
当我今天(大约 9.5 小时前)遇到这个问题时,上面的答案对我没有帮助。我将在这里介绍对我有用的解决方案,以及上一个答案没有帮助的原因。
/home
,无法保存/编辑中的任何文件等或列出的任何目录。dmesg
显示xfs_do_force_shutdown called
了其他一些 xfs 消息。xfs_repair
在第 1 阶段失败,superblock read failed
随后是fatal error -- Input/output error
/
,即只是/home
不工作)。mount
会导致superblock cannot be found
(或类似的)错误,但没有提示下一步要做什么。解决方案基于这篇文章Nigel Smith,XFS 的主要作者(如果我理解正确的话)。我将在此处重新发布这些步骤,以防之前的链接已过时。以下所有操作都必须root
(显然)运行。
smartctl -t long /dev/sda
. 可能还要等一下。smartctl -t short /dev/sda
如果有一个相对较新的长测试(就像我的情况一样),您也可以运行一个短测试。smartctl -l selftest /dev/sda
或smartctl -a /dev/sda
(后者显示所有内容,但您需要的信息几乎在最后)。LBA_of_first_error
。这是磁盘上第一个错误的位置。从最新的测试(将编号为“#1”并位于列表顶部)中,获取显示的数字并将其除以 8 并截断为整数值(参见原帖,了解原因)。# dd if=/dev/zero of=/dev/sda conv=sync bs=4096 count=1 seek=*NUMBER_COMPUTED_EARLIER*
smartctl -A /dev/hda | egrep 'Reallocated|Pending|Uncorrectable'
在我的情况下,我重复了步骤 1 到 4,直到错误减少到 24。xfs_repair /dev/sda
(没有的-L
标志)。这可能会报告您应该尝试挂载文件系统,因为日志日志错误。xfs_repair -L /dev/sda
which 删除日志日志(这可能会导致数据被删除)。/home
.xfs_check
已经过时,有利于xfs_repair -n
.apt-get install xfsprogs
只会意识到,这是 Debian,他们的“稳定”软件包实际上落后了好几年。长话短说,xfs_repair /dev/sda
永远挂着。该进程无法终止(即使使用 sigterm)。XFS 重放错误后,请根据错误消息尝试再次安装分区。
如果一切变得太混乱,我强烈建议下载UFS Explorer以帮助从另一个系统进行深度文件恢复。