Playing With Btrfs
I’ve been waiting to try btrfs for a while, mostly to see how it fairs with other people I know first before giving it a shot. With the release of the 3.4 kernel I just happened to run into this video from Chris Mason talking about the latest things that are going on in btrfs and I decided to give it a shot. I had also had enough of my current setup with mdadm and whatever
/dev/md1_127 (or whatever) is and other weird errors that I got sick of figuring out.
However I didn’t want to risk my existing stuff or try it as the root filesystem, my use case is more for my home NAS. I got some new drives for my HP Microserver and got to work. This involved running a pretty new upstream kernel, and building btrfs-tools from git (a straight forward make).
The btrfs wiki had nearly everything I needed. I was able to set up a RAID1 of my 4x3TB drives in about … 5 minutes, then mount it. Well, that was boring. No weird devices or anything, you can just mount any one of the drives in
/etc/fstab and it’ll figure out the rest. Nice. I then rsynced everything from my old system to the new one, which took about 2 full days. While this was happening it gave me some time to learn about btrfs and it’s commands and learn about it.
Things I like
- I like the RAID/volume/whatever features built into the filesystem itself so I don’t have to care about that as a seperate thing.
- I accidentally made my first cut a RAID10, which is not what I wanted. So I changed it RAID1. And it did so. Online. Watching this happen live I decided I’m not going back to anything else. :)
- The commands are very straightforward and make logical sense, so I can actually remember them when I need them. This is a place where btrfs shines. The technical aspects are cool, but the simple attention to UI design is great to me.
- I have enough free space/drives left over so I can probably live migrate to RAID5 when it lands in btrfs in a few kernel releases. I am looking forward to seeing this work or blow up in my face. Quite interesting!
Things that confuse me or I don’t like
- It’s apparently quite difficult to figure out free space, so I’m using the “add up the drives, figure it out for RAID1, that should be close enough” method. At first I didn’t realize a normal
dfwould lie to me.
- Obviously no RAID5/6 yet but it’s coming; this is why I went with 3tb drives for now, despite the expense as I needed as much space as my old mdadm RAID5 set up but in RAID1. Prices still aren’t coming down to preflood prices so I figure either way I’m going to have to bite that bullet.
It also helps to have a btrfs buddy. I only chose to try this after Popey and Marco decided they were going to try it too, which is nice to have someone to ask all the dumb questions. The btrfs wiki is also quite good, it answered nearly 90% of my questions. At some point when I feel it’s stable enough for me I’ll repurpose the older drives in my mdadm array as additions to this filesystem (they are now my backups), which is quite trivial to do now. On a spare drive in my desktop I experimented with doing an on the spot conversion, which was quite cool.
I didn’t really notice anything about performance one way or the other. A home NAS is network limited so I was exercising anything at the filesystem level as far as I could tell. While other people will be talking about it’s advanced features I am already a fan for its … simplicity(!) of usage when managing multiple disks. It also makes what I used to have to care about not important to me anymore. I’ve already cleared out all knowledge of mdadm and LVM from my brain and learned things I actually care about, like snapshots, which I haven’t played with enough yet.
So should you try it?
Like with all things if your existing set up is working, don’t mess with it. If you happen to be building something new then by all means, give it a shot, even if you end up not using it it’s fun to play with the commands and learn the new filesystem commands.
There are some risks of course, like running a not-ubuntu-supported stock kernel; and our kernel team providing fresh upstream kernels means I can easily upgrade to the new upstream stable releases as btrfs improvements come out. How comfortable you are with that on your hardware is up to you. Like all filesystems keep good backups!