EXT3 vs EXT4 vs XFS vs BTRFS - filesystems comparison on Linux kernel 3.0.0

Written by Gionatan Danti on . Posted in Linux & Unix

User Rating:  / 24

Testbed and methods

Benchmarking filesystems is not an easy task for many reasons:

  • there are endless usage scenarios, each with their specific requirements and usage patterns;
  • each filesystem has its custom options that can modify its behavior considerably;
  • different kernel releases can produce different benchmark results.

So, in order to give you consistent, reproducible results, I had to do some very important choices about the benchmarks, the options and the kernel to use. The benchmark suite is composed of some theoretical and real world test:

  • bonnie++ (version 1.96) is a synthetic test measuring read/write speed and metadata handling;
  • sysbench (version 0.4.12) is a semi-synthetic test about read/write speed and database performance (postgresql in this case);
  • postgresql (version 9.1.0) and mysql (version 5.1.58) are the two benchmarked database system;
  • tar/untar and cat are representative of common, real world usage patterns;
  • finally, filefrag is a very helpful filesystem utility used to evaluate file fragmentation.

All filesystems where created with default options, using the mkfs.<fs> Linux utility. Files fragmentation level was checked both after untarring the linux kernel and after the write-intensive sysbench fileio tests.

All test were runs on a Dell D620 laptop. The complete system specifications are:

  • Core2 T7200 CPU @ 2.0 GHz
  • 4 GB of DDR2-667 RAM
  • Quadro NVS110 videocard (used in text-only mode)
  • a Seagate ST980825AS 7200 RPM 80 GB SATA hard disk drive (in IDE compatibility mode, as the D620's BIOS does not support AHCI operation)
  • O.S. Debian Testing (codename “wheezy”) amd64 with kernel version 3.0.0-1

The internal hard disk was partitioned into three slices: a first ~9 GB ext4 partition for the root directory, a second ~4 GB partition for the swap file and a third ~60 GB partition (mounted on /opt) for testing purposes. CPU frequency/voltage scaling was disabled and the system was used in text-only mode (no X running here). All benchmarked services (basically postgresql and mysql) were reconfigured to store their data into the 60 GB testing partition mounted on /opt.


#1 D Mackney 2012-09-12 11:35
What a well presented resume of Linux file systems.
Now a question, have you considered reviewing the BeFS as
used by the Haiku OS, as it would be interesting to see how it
compares to, say, the XFS file-sysem, especially as there seems
to be an implied 'Speed advantage' in its function.
#2 Daniel OConnell 2013-05-26 04:33
xfsdump and xfsrestore

Why I use xfs.

You have no rights to post comments