Fedora 16 to use Btrfs as its default filesystem
Fedora 16 to use Btrfs as its default filesystem
Posted Jun 10, 2011 7:49 UTC (Fri) by zuzzurro (subscriber, #61118)Parent article: Fedora 16 to use Btrfs as its default filesystem
I never actually saw him take them back even after the long discussions with the btrfs developers. So I would really like to hear his opinion and I would love to have LWN interview him about this.
Posted Jun 10, 2011 12:23 UTC (Fri)
by MisterIO (guest, #36192)
[Link]
Posted Jun 10, 2011 13:14 UTC (Fri)
by ricwheeler (subscriber, #4980)
[Link] (9 responses)
Posted Jun 10, 2011 13:26 UTC (Fri)
by MisterIO (guest, #36192)
[Link] (8 responses)
Posted Jun 10, 2011 15:26 UTC (Fri)
by ricwheeler (subscriber, #4980)
[Link] (7 responses)
I would take Chris on his word - has he ever given you reason to doubt his skills at writing file systems :) ?
Posted Jun 10, 2011 16:12 UTC (Fri)
by MisterIO (guest, #36192)
[Link] (6 responses)
Posted Jun 10, 2011 17:59 UTC (Fri)
by nix (subscriber, #2304)
[Link] (5 responses)
(I think the latter btrfs should perhaps be 'btrfsck'?)
Posted Jun 10, 2011 18:07 UTC (Fri)
by MisterIO (guest, #36192)
[Link] (4 responses)
Posted Jun 10, 2011 18:21 UTC (Fri)
by rahulsundaram (subscriber, #21946)
[Link] (3 responses)
Posted Jun 10, 2011 18:27 UTC (Fri)
by MisterIO (guest, #36192)
[Link] (2 responses)
Posted Jun 10, 2011 18:33 UTC (Fri)
by rahulsundaram (subscriber, #21946)
[Link] (1 responses)
Posted Jun 10, 2011 18:42 UTC (Fri)
by MisterIO (guest, #36192)
[Link]
Posted Jun 10, 2011 19:49 UTC (Fri)
by masoncl (subscriber, #47138)
[Link] (6 responses)
He also had a lot of comments about the balancing code in general. Basically he didn't feel we were really balancing the btrees and had a long list of things he felt well were missing. I went through it and explained where in the Btrfs code each one was happening.
The part I don't think he ever agreed with is the way Btrfs stores inline file data. In reiser v3 (and I think v4), the inline file data for a single file can be split between btree leaves. This means they are exceptionally space efficient for packed small files.
But, it also leads to complexity in the balancing code, and in the code to read/write the inline file data. In Btrfs I chose to never split the file data that gets packed into btree leaves. It either fits in one item in one leaf, or it gets tossed into an extent outside of the btree.
This leads to more wasted space in the btree leaves, which is doubled because Btrfs duplicates metadata blocks by default (even on single device filesystems).
The percentage of wasted space increases as your inline file size approaches half the size of a single btree leaf (4k right now). If all your files are 2k, you'll end up with a lot of btree leaves 50% full. This is less of a problem if the btree leaf size is larger, which we do plan to support in the 3.1 kernel.
Complex systems are full of compromises, and Btrfs certainly has its fair share.
-chris
Posted Jun 10, 2011 20:14 UTC (Fri)
by MisterIO (guest, #36192)
[Link] (5 responses)
Posted Jun 10, 2011 20:34 UTC (Fri)
by masoncl (subscriber, #47138)
[Link] (4 responses)
The problem comes when they are all 2KB files, which is why we give the admin knobs.
For larger leaf sizes, we'll still have a limit of 4KB inlined in the btree, so the overall percentage will be a lot lower. With a 16KB leaf, 2KB inlined files won't be a problem.
-chris
Posted Jun 10, 2011 21:14 UTC (Fri)
by MisterIO (guest, #36192)
[Link] (1 responses)
Posted Jun 10, 2011 23:43 UTC (Fri)
by masoncl (subscriber, #47138)
[Link]
But the main reason is that I prefer the filesystem be predictable. If your file size is less than a specific value, it goes into the btree. It's very simple to explain and isn't surprising ;)
Posted Jun 10, 2011 21:36 UTC (Fri)
by jengelh (guest, #33263)
[Link] (1 responses)
Posted Jun 10, 2011 23:49 UTC (Fri)
by masoncl (subscriber, #47138)
[Link]
There are a lot of factors in play. No inline data means more inodes in a block, which means things that stat in bulk (or rm) tend to be faster.
But, inline data means that when we read the inode we have the data, so things like reading all the files in a directory tend to be faster.
-chris
Fedora 16 to use Btrfs as its default filesystem
Fedora 16 to use Btrfs as its default filesystem
Fedora 16 to use Btrfs as its default filesystem
Fedora 16 to use Btrfs as its default filesystem
Fedora 16 to use Btrfs as its default filesystem
Fedora 16 to use Btrfs as its default filesystem
the main problem of btrfs, currently, is the lack of a working btrfs.
That would tend to be problematic, yes.
Fedora 16 to use Btrfs as its default filesystem
Fedora 16 to use Btrfs as its default filesystem
Fedora 16 to use Btrfs as its default filesystem
Fedora 16 to use Btrfs as its default filesystem
Fedora 16 to use Btrfs as its default filesystem
Fedora 16 to use Btrfs as its default filesystem
Fedora 16 to use Btrfs as its default filesystem
Fedora 16 to use Btrfs as its default filesystem
Fedora 16 to use Btrfs as its default filesystem
Anyway, I appreciate that you took the time to explain this here.
It would be useful if larger leaf sizes could be used even on old btrfs filesystems(that is, I hope it's not an option to be specified at fs creation time).
Fedora 16 to use Btrfs as its default filesystem
Fedora 16 to use Btrfs as its default filesystem
Fedora 16 to use Btrfs as its default filesystem