„Converting raid profile failed.“


I’m trying to set up my omnia (kernel 4.14.148) for LXC. For this, I use two SATA drives WD Red 3 TB. I want them to run in a RAID 1. I followed the storage documentation and both drives are detected. But when I do

uci set storage.srv.raid=raid1
uci commit storage

and press Format & Set in Foris, I get this notification:

Error from …

Converting raid profile failed.

Technical details: ERROR: error during balancing ‘/srv’: I/O error
There may be more info in syslog - try dmesg | tail


root@turris:~# dmesg | tail
[67444.605864] sd 2:0:0:0: [sda] tag#20 UNKNOWN(0x2003) Result: hostbyte=0x04 driverbyte=0x00
[67444.614166] sd 2:0:0:0: [sda] tag#20 CDB: opcode=0x35 35 00 00 00 00 00 00 00 00 00
[67444.621847] print_req_error: I/O error, dev sda, sector 0
[67444.630534] BTRFS error (device sdb): bdev /dev/sda errs: wr 6, rd 0, flush 1, corrupt 0, gen 0
[67444.639267] BTRFS warning (device sdb): chunk 2211446784 missing 1 devices, max tolerance is 0 for writeable mount
[67444.649647] BTRFS: error (device sdb) in write_all_supers:3494: errno=-5 IO failure (errors while submitting device barriers.)
[67444.661069] BTRFS info (device sdb): forced readonly
[67444.666049] BTRFS warning (device sdb): Skipping commit of aborted transaction.
[67444.673376] BTRFS: error (device sdb) in cleanup_transaction:1881: errno=-5 IO failure
[67444.681316] BTRFS info (device sdb): delayed_refs has NO entry

Both drives show a common LABEL (srv) and the same UUID and btrfs file system, but:

root@turris:~# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/mmcblk0p1            7.3G    261.4M      7.0G   4% /
devtmpfs                512.0K         0    512.0K   0% /dev
tmpfs                   512.0K         0    512.0K   0% /sys/fs/cgroup
tmpfs                  1009.8M      2.3M   1007.5M   0% /tmp
tmpfs                   512.0K         0    512.0K   0% /dev
/dev/sdb                  5.5T     16.8M      5.5T   0% /srv

where I would expect (/dev/sdb or /dev/sda)

/dev/sdb                  2.8T     16.8M      2.8T   0% /srv

or similar. It looks like they are set in single mode and the storage is added, not in RAID 1 where there would be data redundancy. Is there anything I can do about that?

I’d really appreciate if someone could give me a hint here :sweat_smile:

I believe I got it working (after a few attempts and a long period of ignoring the problem). The solution as described in the documentation didn’t work, but I could simply add the drive manually as shown in the btrfs wiki:


A non-raid filesystem is converted to raid by adding a device and running a balance filter that will change the chunk allocation profile.

For example, to convert an existing single device system (/dev/sdb1) into a 2 device raid1 (to protect against a single disk failure):

mount /dev/sdb1 /mnt
btrfs device add /dev/sdc1 /mnt
btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt

If the metadata is not converted from the single-device default, it remains as DUP, which does not guarantee that copies of block are on separate devices. If data is not converted it does not have any redundant copies at all.