I've been using an Ext3/4+lvm2+mdadm file system setup for about 5 years on a file server. This has grown (and moved processors a couple of times) and I've moved disks between systems (exporting/importing volume groups) and moved physical volumes onto new disks, so I'm fairly comfortable with it, but recently started looking at alternate file systems as the check and resync times for mdadm are becoming excessive and newer systems seem to be using checksums and dynamic healing to avoid this.
My setup uses RAID arrays build from partitions rather than entire disks, to allow mixing of disk sizes; for example, I have previously mixed 4 disks, 2 x 3TB, 1 x 2Tb and 1 x 1Tb to create a 9Tb array giving 6Tb of usable space. Assuming the 4 disks are formatted with 1Tb partitions, the mdadm/lvm2 commands are:
# mdadm /dev/md0 --create -lraid5 -n3 /dev/sda1 /dev/sdb1 /dev/sdc1 # mdadm /dev/md1 --create -lraid5 -n3 /dev/sda2 /dev/sdb2 /dev/sdc2 # mdadm /dev/md2 --create -lraid5 -n3 /dev/sda3 /dev/sdb3 /dev/sdd1 # pvcreate /dev/md0 /dev/md1 /dev/md2 # vgcreate grp /dev/md0 /dev/md1 /dev/md2 # lvcreate -l100%FREE --name vol grp
For ZFS, ignoring the log and any caches, the command would be:
# zpool create puddle raidz sda1 sdb2 sdc1 raidz sda2 sdb2 sdc2 raidz sda3 sdb3 sdd1
However, with BTRFS it seems the best that can be done is to create 3 raid arrays:
# mkfs.btrfs -draid5 /dev/sda1 /dev/sdb1 /dev/sdc1 # mkfs.btrfs -draid5 /dev/sda2 /dev/sdb2 /dev/sdc2 # mkfs.btrfs -draid5 /dev/sda3 /dev/sdb3 /dev/sdd1
Unless I've missed something, there appears no way within BTRFS to merge these into a single file system (Also, many discussions imply the raid5 implementation is fairly new and may not be up to production standard!). Is there a way to configure BTRFS to use to get a single file system across 4 disparately sized disks, with redundancy for the loss of any single disk and getting 2/3 of the space available for storage?
Or is my choice restricted to ZFS or my existing ext/lvm/mdadm stack?
Update: While waiting for BTRFS RAID5 to be declared stable, I went with creating a BTRFS RAID1 setup. Subsequently, BTRFS RAID5/6 was declared as very broken and only suitable for experimental setup, so I moved to using ZFS RAIDZ2 (RAID6) arrays.