Centos – Writing on an external USB hard disk is very slow on the local Linux CentOS server

centoshard driveperformance

I have this external harddrive:
_ Buffalo Ministation TurboUSB HD-PS250U2 250 GB
_ just formatted using ext3
_ 250 GB
_ interface USB2
_ SATA 150 internal interface
_ no hardware encryption
_ full specs can be found here: http://www.dooyoo.co.uk/external-hard-drive/buffalo-ministation-turbousb-hd-ps250u2-250-gb/details/

I was doing some data transfer benchmarks using a file foo.tar.bz2 on different machines. I just attached the hard disk to a USB port and copied the file from the computer's hard disk to the external one (using the cp command).

On my development machine (Linux CentOS) the data transfer rate is 33MBps (which is good).

My problem is with our office server. There the data transfer rate is 1MBps!
How can it be so low?!

Some details about the office server:
_ Dell PowerEdge T300
_ running CentOS 64-bit
_ running VirtualBox
_ the benchmark was done on the host system, not on a virtual machine
_ at the moment I don't think the server is particoularly busy

The output of "/sbin/hdparm -tT /dev/sda1" on my development machine is:
Timing cached reads: 4220 MB in 2.00 seconds = 2108.41 MB/sec
Timing buffered disk reads: 332 MB in 3.02 seconds = 110.10 MB/sec

The output of "/sbin/hdparm -tT /dev/sda1" on the server machine is:
Timing cached reads: 25500 MB in 1.99 seconds = 12795.49 MB/sec
Timing buffered disk reads: 398 MB in 3.01 seconds = 132.04 MB/sec

What do you think can be the problem?

I think there is problably a piece of software missing, maybe a driver or a kernel module.
Or maybe a configuration problem?
Or maybe VirtualBox is causing the problem?
Or maybe the issue is the speed of the machine's internal bus?

Thanks for reading,
Daniele

Best Answer

1 MB/s sounds like USB 1.1 connection instead of USB 2.0. What does dmesg tell you about the USB drive?

Edit: So in this case the real reason was that by default the USB drive got mounted with sync option instead of async. That killed the write performance.