The Problem
Assembling a BTRFS device during boot fails with error
BTRFS: too many missing devices, writeable mount is not allowed
The disks have been mistakenly deleted
The Solution
The missing disks in the raid array do not allow the filesystem to be mounted.
Below are the logs from dmesg:
[ 44.706956] btrfs: disk space caching is enabled [ 44.708006] btrfs: failed to read the system array on sdd1 [ 44.721272] btrfs: open_ctree failed [ 45.437152] nr_pdflush_threads exported in /proc is scheduled for removal [ 45.437280] sysctl: The scan_unevictable_pages sysctl/node-interface has been disabled for lack of a legitimate use case. If you have one, please send an email to linux-mm@kvack.org. [ 109.750996] SELinux: initialized (dev tmpfs, type tmpfs), uses transition SIDs [ 123.375147] device fsid 06182482-9e8c-4e92-a026-ee045ffa71df devid 1 transid 2351588 /dev/sdd1 [ 123.379134] btrfs: allowing degraded mounts [ 123.379137] btrfs: enabling auto recovery [ 123.379137] btrfs: disk space caching is enabled [ 123.380401] warning devid 4 missing [ 123.385362] btrfs: bdev (null) errs: wr 16, rd 0, flush 0, corrupt 0, gen 0 [ 123.385367] btrfs: bdev /dev/sde1 errs: wr 16, rd 0, flush 0, corrupt 0, gen 0 [ 123.446679] Btrfs: too many missing devices, writeable mount is not allowed [ 123.457684] btrfs: open_ctree failed
The raid requires a certain number of devices for a successful mount. If some of the devices do not exist/have failed/have been replaced, you can try to mount the file system with the below option and continue updating the device set.
Try below options in the same order:
# mount -o degraded,ro /dev/sdd1 /u01 dmesg | tail
# mount -o degraded,recovery /dev/sdd1 /u01 dmesg | tail
# mount -o degraded,recovery,ro /dev/sdd1 /u01 dmesg | tail