“usebackuproot”挂载选项在 BTRFS 上工作后我该怎么办?

问题描述

更改 bcache 缓存设备后,如果没有“usebackuproot”选项,我无法挂载我的 BTRFS 文件系统;我怀疑存在损坏而没有任何磁盘故障。我尝试重新创建以前的缓存设置,但似乎没有帮助。

那么问题是,现在怎么办? btrfs rescue chunk-recoverbtrfs check 都失败了,但是使用“usebackuproot”选项我可以将它装入 r/w,数据看起来不错,btrfs rescue super-recover 没有报告任何问题。我目前正在执行清理操作,但还需要几个小时。

我可以信任存储在该文件系统上的数据吗?我在损坏发生前不久制作了一个只读快照,但仍在同一个文件系统中;我可以相信那个吗? btrfs scrub 或任何其他操作是否会真正检查我的任何文件是否已损坏?我是否应该将“usebackuproot添加到我的 /etc/fstab(和 update-initramfs)并结束?

解决方法

我不知道这是否适用于所有人,但我通过以下步骤保存了我的文件系统*:

  1. 使用 mount -o usebackuproot
  2. 挂载文件系统
  3. 使用 btrfs scrub 清理已挂载的文件系统
  4. 卸载(或重新挂载为 ro)文件系统并运行 btrfs check --mode=lowmem

*这些步骤假设您无法正常挂载文件系统并且 btrfs check 失败。否则,请先尝试。

†如果此步骤失败,请尝试运行 btrfs rescue super-recover,如果仅靠此方法无法解决问题,则 btrfs rescue chunk-recover

‡如果发现问题,此命令将不会修复您的文件系统,但它会占用大量内存,如果在实时映像中运行,它将被内核杀死。如果发现问题,请进行或使用单独的安装来运行 btrfs check --repair