Before we do anything else, we should test our hard drives without using the network to see what kind of bandwidth we can expect from them in an ideal scenario.
There are two PCs taking part in our real-world gigabit network. The first, which we’ll call the server, has two drives. Its primary drive is a 320 GB Seagate Barracuda ST3320620AS that’s a couple of years old. The server acts as a network-attached storage (NAS) device for a RAID array consisting of two 1 TB Hitachi Deskstar 0A-38016 drives, mirrored for redundancy.
The second PC on the network, which we’ll call the client, has only one drive: a 500 GB Western Digital Caviar 00AAJS-00YFA that is about six months old.
We first test the speed of both the server's and client computer's C: drives and see what kind of read performance we can expect to get from them. We’ll use SiSoftware Sandra 2009’s hard disk benchmark:
Right out of the gate, our hopes for achieving gigabit speed file transfers have disappeared. Both of our single hard disks have a maximum read speed of about 75 MB/s in ideal situations. Since this is a real-world test and the drives are about 60% full, we can expect read speeds closer to the 65 MB/s index that both of these drives share.
But have a look at the RAID 1 array performance–the great thing about this RAID 1 array is that the hardware RAID controller can increase read performance by pulling data from both drives simultaneously, similar to how a striped RAID 0 array can; note that this effect will probably only occur with hardware RAID controllers, not software RAID solutions. In our tests, the RAID array gives us much faster read performance than a single drive can, so our best chance for a quick file transfer over the network looks like it’s with our RAID 1 array. While the RAID array is delivering an impressive peak 108 MB/s, we should be seeing real-world performance close to its 88 MB/s index because this array is about 55% full.
So, we should be able to demonstrate about 88 MB/s over our gigabit network, right? It’s not that close to a gigabit network’s 125 MB/s ceiling, but it’s a lot faster than 100 megabit networks that have a 12.5 MB/s ceiling, so 88 MB/s would be great in practice.
Not so fast. Just because our drives can read this quickly doesn’t mean they can write that fast in a real-world situation. Let’s try a few disk write tests before even using the network to see what happens. We’ll start with our server and copy a 4.3 GB image file from the speedy RAID array to the 320 GB system drive, and then back again. Then we'll try copying a file from the client PC's D: drive to its C: drive.
Yuck! Copying from the quick RAID array to the C: drive results in a mere 41 MB/s average transfer speed. And when copying from the C: drive to our RAID 1 array, the transfer speed drops even more to about 25 MB/s. What is going on here?
Well, this is what happens in the real world: The C: drive is only a little over a year old, but it’s about 60% full, probably fragmented a bit, and it’s no speed demon when writing. There are other factors as well, such as how fast the system and memory are in general. As for the RAID 1 array, it’s made up of relatively new hardware, but because it’s a redundant array, it has to write data to two drives simultaneously and is going to take a huge write performance hit. While RAID 1 can offer fast read performance, write performance is sacrificed. Alternatively, we could use a RAID 0 array with striped drives that delivers fast write and read performance, but if one of the drives die, then all of the data is compromised. Realistically, RAID 1 is a better bet for folks who value their data enough to set up a NAS.
However, all is not lost yet, as we have a little light at the end of the tunnel. The newer 500 GB Western Digital Caviar is capable of writing this file at an average 70.3 MB/s over five runs, and even recorded a top-speed run of 73.2 MB/s performance.
With this in mind, we’re going to expect that our real-world gigabit LAN might demonstrate a maximum of about 73 MB/s on transfers from the NAS RAID 1 array to the client’s C: drive. We’ll also test transfer files from the client’s C: drive to the server’s C: drive to see if we can realistically expect about 40 MB/s in that direction.