A number of years ago I was working on the scenery system for the open source FlightGear flight simulator. Due to the nature of geodata and the scenery building system, I ended up with tens of thousands of tiny files on my hard drive, many only a few bytes long, and I was constantly running out of disk space.
Then I read about an alternative filesystem for Linux called ReiserFS, part of a new generation of journaling filesystems. Unlike the others, however, ReiserFS had a special innovation: it allowed multiple very small files to share the same block, so that a 5-byte file would not automatically take up 512 bytes (or whatever your block size was). I switched over, and bingo! There was suddenly a huge amount of free space on my previously-full hard drive, and I noticed no performance problems (aside from the occasional tiny zombie file that I couldn’t delete).
I’ve been running Reiser ever since, but the filesystem has fallen on hard times. On 14 September 2006 (via Tony Coates), Jeff Mahoney announced that the SuSE Linux distribution would no longer use ReiserFS as its default. Mahoney is also one of the principal ReiserFS developers, and he wrote that ReiserFS3 does not scale, that it has a small and shrinking developer community inadequate to maintain it, and that ReiserFS4 is “an interesting research file system, but that’s about as far as it goes.” Then, on 10 October 2006 Hans Reiser, the principal maintainer, was arrested and charged with the murder of his estranged wife Nina.
SuSE was the only Linux distribution that used Reiser as its default filesystem. This c|net story links the SuSE decision with the murder charges, but it’s worth noting that Mahoney’s message predates the charges by almost a month. Whatever the cause, however, Novell (SuSE’s owner) had contributed significant resources towards the maintenance of ReiserFS. It no longer looks like ReiserFS has any future at all, and in its current state, it has performance and scalability problems that prevent its use in high-demand environments. ReiserFS was a big help to me when I needed it a few years back, but the next time I install Ubuntu, I’ll use the default ext3 filesystem instead. Hard disks — even for notebook computers — are a lot bigger and cheaper now, anyway.
The problem with reiserfs, however clever it is (and it is clever, and version 5 would have been amazingly so, as unlikely as we are to see it now), is that Hans Reiser thinks it’s his filesystem. (Insert explanation of intrinsic vs. extrinsic possession here.)
I get that impression as well, but if that were the only problem with ReiserFS, then we could simply fork it into CowanFS and continue.
If only. Alas, Reiser knows far more about reiserfs than Cowan ever will.
ReiserFS achieves its aims, roughly spoken, through tricky data structures that minimise redundancy by leaning heavily on the CPU.
That comprises its strength; but it’s also a huge weakness. Minimal redundancy makes metadata corruption hard to detect and likely to be spectacularly disastrous. The filesystem is designed to be compact and very fast, but it’s brittle and incurs a heavy CPU tax for the speed you get.
That’s the opposite set of tradeoffs than I’d generally prefer in a filesystem: I’d like it resilient and easy on the CPU. The perfect choice would be the nigh unbreakable ext2, of course – if only fsck didn’t take forever and 3 days to finish on modern harddisks. So I switched to ext3 partly out of laziness, and partly because at the time, none of the other alternatives to ReiserFS were any good. I’ve heard quite a few good words about XFS and some about JFS bt now, but I’m not sure how well they’re shaken out so I’m languishing on the safe default. As an aside, I wish there was a good modern filesystem that can be read and written by both Linux and FreeBSD…
Aristotle: wait a few years, switch to ZFS, and abandon the CPU usage hang-up 🙂
I wonder which we’ll get first, a port of ZFS or a Solaris-based distribution that “just works” as well as Ubuntu. As soon as suspend/resume works reliably on my laptop, I’ll be all over it.
(Despite the fact that I ran Linux for years on a laptop where suspend/resume didn’t work, now that I’ve had it working for a few years, the prospect of living without it again is just too painful.)