环境
$ 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/