The goal of this post is to study the sequential read and write performance that one can get from a RAID array using various local file systems available in Linux, specifically the ext2, ext3 and ext4 file systems. Ext3 file system adds journal feature to ext2 for better reliability. Ext4 is an incremental update to ext3; it has new features such as being able to create up to 1 exabyte volumes and up to 16 terabyte files. It introduces further performance-related enhancements such as using checksums in the journal, using extents (rather than block maps) and delayed block allocation that improve large file performance.

The operating system used in this study is Red Hat Enterprise Linux 5 U4. Installing the e4fsprogs rpm enables using the ext4 file system tools. Ext4 is included in this OS version as a Technology Preview and is not officially supported. However, because of the new features ext4 provides, it is gaining more popularity. The benchmark results show how much performance increase can be expected from the current ext4 system included with Red Hat Linux.

Two Dell PowerVault MD 1200 RAID arrays are used for these experiments. Each array contains twelve 450 GB 15K rpm SAS6 disks. The storage is configured as a single RAID 5 volume spanning over 24 disks. A Dell PowerEdge R710 server with a PERC H800 card is used to connect to the arrays. First port of the H800 card is connected to the first array and the second port is connected to the second array. We used the IOzone benchmark version 3.327 available from www.iozone.org. The read ahead setting on the OS was set to 8192 sectors to improve sequential read performance using the blockdev command. For this study, the defaults were used for the other settings however the performance can be further tuned by modifying other OS and storage settings.



NFS IOZone Sequential Write
IOZone Sequential Read

The charts above show the results of the benchmark runs. Every test was run 10 times and the average is reported with the standard deviation. Only one IOzone thread was used since increasing the number of IOZone threads did not result in improved performance. The experiment results show that ext2 has higher performance than ext3, which is consistent with what we have observed in the past and is attributable to the fact that ext2 does not use a journal which enables it to perform writes faster. It is possible to improve the ext3 performance by using a different drive to keep the journal, however we did not investigate that option for this study. Ext4 resulted in better read and write performance compared to ext3 due to its enhancements, such as the usage of extents and delayed block allocation.

The results are very encouraging as ext4 is considerably faster than ext3 and has the reliability advantage over ext2. As ext4 evolves, its performance characteristics may change, however once the file system becomes supported we expect it to be a very good choice to be used under Linux.



Aziz
End Blog Entry