I'm using Ubuntu 10.04 and have the /home
directory setup as a BTRFS RAID 1 with two 2TB drives.
I'd like to make the /home
directory just a single drive; how do I safely go about doing this?
Update: December 2020
The functionality of btrfs
continues to evolve over time. The delete
command is now an alias for the remove
command which produces different results. Today, you would run the following commands:
btrfs balance start -f -sconvert=single -mconvert=single -dconvert=single <mount>
btrfs device remove <drive> <mount>
The first command converts all data from a mirrored setup to a single-copy setup. This effectively makes the RAID1 into a JBOD setup. The -f
option is required to tell the filesystem to really reduce the resiliency of the data.
Once this completes, the second command removes the device from the JBOD. The filesystem will move any data from the removed device to the other device.
Original Answer
According to this btrfs wiki, you remove a device from a btrfs RAID, by issuing the command:
btrfs device delete <drive> <mount>
This is an online command, so for you, it would be (while /home
is mounted):
btrfs device delete <drive> /home
btrfs
". I've got: btrfsck
, btrfs-convert
, btrfsctl
, btrfs-debug-tree
, btrfs-image
, btrfs-show
, btrfstune
, and btrfs-vol
. I'll have to dig a bit.
btrfs-vol -r <drive> /home
then, I think. I'm not sure if that can be done online or not.
btrfs device delete
, and the command btrfs device remove
will not convert raid1 to raid0
btrfs balance start -f -sconvert=dup -mconvert=dup -dconvert=single <mount>
Thank you for the update @hrunting!
However the re-balance using "single" profile did not work for me on Ubuntu 20.04.2 LTS. I needed:
btrfs balance start -dconvert=raid0 -mconvert=raid0 -sconvert=raid0 -f <mount>
btrfs device remove <dev/partition> <mount>
to get rid of pesky RAID1 metadata/system and allow removal.
And as always, folks: back up your data to an independent physical media before attempting these - there's a good chance you will lose it all in this evolution. I am a big fan of:
btrfs send -f <bkupFile> <subvol>
btrfs receive -f <bkupFile> <newsubvol>