Chris Mason
2008-Mar-24 12:42 UTC
[Btrfs-devel] Device concatenation pushed out to the (really really) unstable tree
Hello everyone, There is a considerable amount of work left in the multi-device code, but I'm on track to have the mirroring and striping done by the first week in April. My plan is to spend most of April testing and refining the code and cut a new stable release at the end of the month. Minor patches and updates for v0.13 may find their way into the stable tree as well. The current code drop can: Create a filesystem with one or more devices Dynamically allocate data and metadata from those devices Fsck, debug-tree etc. The ext3 conversion program and online resizing tools both need to be updated (they don't work) and there are a few more debugging printk/printfs than there really should be. I haven't yet tested on 32 bit systems, so they probably don't work in minor ways. Multi-device filesystems are mounted via a two step process. First, an ioctl from userland on /dev/btrfs-control asks the kernel to scan a given partition for btrfs filesystems. The kernel makes a map of FS uuids it has seen to the devices that must be opened to mount the FS. Once all of the devices have been scanned, mount /dev/any-dev-in-the-fs /mnt will work. btrfsctl -a will scan every block device on the system. The scan must be redone any time you reload the btrfs module. Example usage: mkfs.btrfs /dev/sdb1 /dev/sdc1 /dev/sdd1 mount /dev/sdb1 /mnt The example above skipped the scan because mkfs.btrfs calls the ioctl for you. If you were to reboot or unload the kernel module btrfsctl -a would be required. mkfs.btrfs /dev/sdb1 /dev/sdc1 rmmod btrfs btrfsctl -a mount /dev/sdc1 /mnt If you are using filesystems with only one device, btrfsctl -a is not required. Good luck and happy testing. -chris
Chris Mason
2008-Mar-25 13:58 UTC
[Btrfs-devel] Device concatenation pushed out to the (really really) unstable tree
Ok, I've just pushed out raid0 as well. The current code stripes across all the devices present in the FS all the time. Even though tuning has been very limited, the performance in my limited testing is the same as building on top of an LVM or hardware stripe set. The next step is to implement mirroring, that will take a little longer because it is slightly more complex. After that comes the harder work of making sure everything gets mirrored properly, and making policies for which bytes get put on which type of extents. -chris