大约一天前,我的 btrfs 分区停止工作,这意味着我无法再挂载它,这就是我的 Fedora Linux 不再启动的原因。我确实没有太多信息,但当我尝试检查分区时,Gparted 输出以下内容:
checking extents
checking fs root
checking root refs
btrfsck: extent_io.c:602:free_extent_buffer: Assertion `!(eb->refs < 0)` failed.
当我尝试使用 Fedora 18 Live DVD 挂载分区时,我从挂载程序中收到了 SIGSEGV,此外还收到了一个未知的内核错误,该错误也受到了影响。
您知道如何恢复该分区上的数据吗?或者它肯定丢失了?
答案1
证据尚无定论。由于 fsck 正在崩溃,因此可能还有希望,但直到 fsck 本身得到修复,以便它实际上可以继续检查文件系统。
答案2
首先,您应该尝试使用最新的内核。我认为 Fedora 18 配备了 3.6 内核,也许可以找到带有更新内核(3.8)的 live cd。
然后,您可以尝试使用以下选项之一挂载文件系统:
mount -o clear_cache /dev/sdX /your/mountpoint
(这会删除 freezspace 缓存,这有时会导致 btrfs 拒绝挂载)
或者:
mount -o recovery /dev/sdX /your/mountpoint
(将尝试使用“旧但已知良好”的文件系统根。)
如果它不起作用,您可能需要使用 git 中最新的 btrfs 工具尝试 btrfsck (您必须自己下载并编译它们)