BTRFS:缺少太多设备,不允许可写挂载

BTRFS:缺少太多设备,不允许可写挂载

环境

$ btrfs --version
btrfs-progs v4.2.1

$ uname -a
Linux [REDACTED] 4.2.1-040201-generic #201509211431 SMP Mon Sep 21 18:34:44 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

问题

今天我的一个外置驱动器的控制器坏了。不过磁盘没问题。我打开外壳,取出驱动器,并通过 SATA-USB 接口将其连接起来。

现在无法挂载文件系统。以下是消息:

$ btrfs fi show
warning devid 3 not found already
Label: none  uuid: bd6090df-5179-490e-a5f8-8fbad433657f
        Total devices 3 FS bytes used 3.02TiB
        devid    1 size 596.17GiB used 532.03GiB path /dev/sdd
        devid    2 size 931.51GiB used 867.03GiB path /dev/sde
        *** Some devices missing

是的,我确实捆绑了三个大小截然不同的驱动器,并提供了--single创建文件系统的选项。这绝对有效。

然而现在:

$ mount /dev/sdd /mnt/btrfs/
mount: wrong fs type, bad option, bad superblock on /dev/sdd,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

即使按照官方建议挂载降级版本也不起作用。以下是dmesg摘录:

[ 1849.938705] BTRFS info (device sdd): allowing degraded mounts
[ 1849.938716] BTRFS info (device sdd): disk space caching is enabled
[ 1849.938720] BTRFS: has skinny extents
[ 1850.345011] BTRFS: bdev (null) errs: wr 2033, rd 1074, flush 0, corrupt 0, gen 249
[ 1854.953599] BTRFS: too many missing devices, writeable mount is not allowed
[ 1854.992299] BTRFS: open_ctree failed

尽管所有磁盘都正常工作,但我看到的似乎是文件系统完全损坏了。这有点像是第 22 条军规:

  • 控制器损坏的驱动器可以被识别但不会加入 btrfs 文件系统。
  • 我可以以只读方式安装但不允许我添加或删除磁盘。

有什么方法可以手动将“丢失”的磁盘添加到文件系统,最好不删除其数据内容?

我很高兴听到任何想法。

答案1

当某些(一个?)设备丢失时,您将需要使用以下选项来挂载文件系统:

mount -o degraded,ro /dev/sdd /mnt/btrfs/

相关内容