Recently I have setup a server to backup some data using Ultrium Tape Drive (Ultrium 960). The cartridge that I used was LTO3, able to store 800GB compressed data and 400GB uncompressed data. According to the specification, Ultrium Tape Drive was able to write 160MB data to tape in one second.
I installed a SCSI card to the server (PCI Express slot) and connected the tape drive to the server using a SCSI cable. First attempt was disappointed, the server cannot even detect the tape drive. Originally the server was Fedora Core 6, so I reinstalled it with Red Hat Enterprise 5.3 and OK, server was able to detect the tape drive. Now I used a simple TAR command to backup the data:
tar cvf /dev/st0 /backup
However the writing speed is very slow (around 30MB/s), few times slower than what the specification mentioned. First I suspected the bottle net might be the PCI Express, but no since the transfer rate was more than 160MB according to Google. Than I tested out the transfer rate of the SATA hard disk and it was the bottle neck. I used command below to benchmark the transfer rate of the hard disk:
dd if=/dev/zero of=test.bin bs=1M count=1000
The command basically will write 1GB of dummy data to your hard disk, and it will summarize the time and transfer rate after it finished (you can remove the dummy data afterward). It turned out the transfer rate was way to slow for a SATA hard disk (it should be around 160MB/s, but it turned out to be 30MB/s). After some digging, I found out that the server is using RAID 5, which potentially will result a performance bottle neck. Once again, I reinstalled the server with RAID 0+1.
Now I ran again command above and the result was positive, around 350MB/s. However I tried out the TAR command to backup data to the Ultrium Tape Drive, it was still slow, around 40MB/s. Lastly I tried to use a different block size in the TAR command:
tar cvfb /dev/st0 128 /backup
Option b in the TAR command referred to block factor, which 1 block factor equal to 512 bytes. Since I am using 128 block factor, it will result block size of 64KB. The default block factor is 20, which the block size will be 10KB. At last the transfer rate seemed great, around 100MB/s. While reading from tape was around 150MB/s.