(Another big advantage of ext4 over ext3 in addition to the ones mentioned previously is much faster fsync, since ext3 cannot really fsync an individual file but rather the entire file system is synced when fsync() is called.)
Michael, could you benchmark EXT4 with different journal size ?
From this article (2 years half old), it can make a big changes with small files : http://www.linux-mag.com/id/7666/
Dpkg is incredibly, horribly, painfully slow with btrfs due to fsync calls. Would have been nice to see that added to the benchmarks.
You should have also tested JFS. In my database tests, JFS outperforms all the others. Also, you should do a test with two HDDs (or a combination of HDD and SSD) where the journal for the main filesystem is stored on the 2nd device. Again, in my tests this can make a huge difference in overall throughput.
My results are posted here:
- Disable the disk write cache when using a filesystem without barrier support (slower but safer).
- Disable barriers on the filesystems with barrier support (mount with barrier=0) (fast but unsafe).
- Or even better, use a device with a non-volatile write cache (e.g. a RAID card with battery backed cache) (fast AND safe).
Of course, in a dedicated database deployment, I would just have a single DB residing in a dedicated filesystem, and preallocate all of the space for the DB file(s). At that point, metadata updates are irrelevant, they would only be occurring for the mtime stamps and not for any structural changes, so FS structural corruption would be impossible.