Introduction
As everyone knows, disk I/O performance is significant factor in how quickly and efficiently a forensic analyst can perform their duties. Often times, people try to through hardware at a performance issue and hope it “just works” out of the box. While there can be an increase in performance by simply buying faster drives, the issue is much more complex and includes RAID controller configuration, stripe sizes, disk configuration and file system to name a few. This article is the first of several in this series that will test various configurations in the pursuit of the highest performing array.
Problem statement
In part 1, my goal was to test the impact of stripe size on performance. Specifically, my RAID controller supports 16kB, 64kB and 256kB stripe sizes in a RAID0 array and I wanted to understand the impact of these different settings, if any. Additionally, I wanted to set a performance baseline by running the tests against the stock hard drive shipped with my workstation as well as a WD VelicoRaptor and a 4-disk RAID5 array.
Hardware
Below is an overview of the relevant hardware in my workstation:
The Seagate drives needed this firmware updated which I did prior to testing. Every drive was configured with a single EXT3 partition for consistency.
Test methodology
Of course, I am most interested in how the drives perform forensic tasks so I the following test script was developed to test reading and writing of both large and small files using common forensic techniques:
On steps 1-5, I used the time command to measure elapsed time. The iozone tests were written to disk in text and Excel format and provide the basis for read/write throughput and the charts.
Summary Results
The results we very interesting and are summarized in the table below:
| copy | md5sum | strings | extract unalloc | foremost | |
| Seagate Barracuda | 11:32.04 | 09:05.84 | 22:10.30 | 22:20.26 | 24:59.22 |
| WD VelociRaptor | 07:17.39 | 05:51.15 | 19:05.55 | 09:56.50 | 19:51.39 |
| Speed up | 1.58 | 1.55 | 1.16 | 2.25 | 1.26 |
| RAID5 – 64kB stripe | 07:07.87 | 03:16.14 | 18:48.67 | 10:56.68 | 17:31.51 |
| Speed up | 1.62 | 2.78 | 1.18 | 2.04 | 1.43 |
| RAID0 – 16kB stripe | 06:51.30 | 03:03.19 | 25:12.22 | 15:53.91 | 17:08.97 |
| Speed up | 1.68 | 2.98 | 0.88 | 1.41 | 1.46 |
| RAID0 – 64kB stripe | 05:54.13 | 02:51.05 | 18:38.35 | 07:57.76 | 15:52.57 |
| Speed up | 1.95 | 3.19 | 1.19 | 2.81 | 1.53 |
| RAID0 – 256kB stripe | 05:55.32 | 03:09.99 | 18:25.49 | 07:43.80 | 16:16.71 |
| Speed up | 1.95 | 2.87 | 1.2 | 2.89 | 1.53 |
As you can see, a few things are immediately evident:
Also, to accurately measure disk/array throughput I had to remove the performance boosts generated by the RAID card cache, RAM and CPU cache. I ran iozone with parameters that created files from 64kB up to 4GB and record sizes from 4kB to 16MB.
Finally, for the RAID0 64k stripe array, the maximum read throughput iozone recorded was 4,036MB/sec (nearly 4GB/sec).
Conclusions
Given these results, a RAID0 array with 64kB stripes is the ideal configuration for my forensic workstation “scratch space”. The next part in this series will examine the various file systems to determine which performs the best including ext2, ext3, ext4, xfs, jfs and reiserfs4.
I hope to post the iozone read and write graphs soon so check back. Also, if you have a different setup, experience or other comments, please share.
You must be logged in to post a comment.
Thanks Andrew for your efforts, you saved me a great deal of time. Any idea if this performance will also be close to the same under Windows ?
Best Regards,
mitch
Mitch,
Glad this was helpful. Regarding Windows performance, I believe Linux will be faster but that Windows will still perform quite well. See below URL for review of the 3Ware RAID card that performs similar tests in Windows Vista, Server 2008 and Ubuntu Server.
http://www.techwarelabs.com/reviews/storage/9690sa/index.shtml
-Andrew