A Backup Fileserver, OverviewWhy bother backing up data? There are several good reasons. The first is that everything can break, including the hard drive where your data is. The second one is you might delete something important by mistake and want it back later on. The third is in case of disaster recovery, like your computer catching on fire, or being stolen. How do you backup data? There are many ways to backup data. There are flash drives and external drive enclosures. There are prebuilt boxes that do it. There are hardware raid controllers. There are computers dedicated to storing data. Lets narrow down the choices a bit. The first thing to know where the data you will be backing up is, and how much you will be backing up. On a Unix or Linux system, the typical answer is everything on your personal directory tree. On a windows system, the personal directory tree is typically on the OS partition, and has all kinds of junk as well as useful stuff. I recommend a separate OS partition, and a user partition. That way, if you need to reinstall the OS, you won't lose all your personal data. Of course, computers with the OS pre-installed aren't set up that way. There are two easy solutions. One is to shrink the OS partition and use the rest of the space as the user partition. This is a great solution for notebooks that only have one physical drive. Another solution is to buy a separate hard drive and dedicate it for user files. |
The next level of sophistication is to separate out different types of data. Clearly some types of data is more important to backup than others. For me, all my critical data will fit on a big thumb drive. I have several other larger partitions for less critical data.
Flash drives are a great way to store data. They are quite robust, reasonably priced, and very portable. They aren't generally very fast (5-20mbytes/second write speeds are typical), nor are they very big (32 or 64 gigabytes max). If you can fit your date on one, or two if you are worried about a single point of failure, they are a great solution. I recommend name brand flash memory vendors, such as Sandisk, as they tend to use the better grade chips for themselves, and sell the lesser grade chips to their competitors. If you use a fat32 file system, it is not very robust and can get accidentally corrupted. I don't know a universally readable file system that is more robust though.
The next step up is an external hard drive in an enclosure. There are many interface options available, USB, firewire, e-sata, and Ethernet. Each has a potential advantage. Make sure the Ethernet is gigabit Ethernet, or you will be limited to 100mbits/second. USB is found on almost all computers. Firewire is in practice a bit faster, though not as popular. e-sata is the newest external interface. It is faster than any other one, but older computers don't have an external sata port. This can be fixed with an add-on card, but e-sata is useless on all but the newest notebooks. Ethernet's advantage is it can be attached to your network, rather than your computer, so it can be visible from all your computers rather than just the one that it is plugged into. If you have a 3.5 inch hard drive in an enclosure, in my experience it will run quite hot. Hot enough that I am concerned about the drive's reliability. Antec makes a very nice enclosure with a big quiet fan, the MX-1. It has usb and e-sata ports, and the case is designed to absorb noise.
The next step up is a bit more complex as it involves multiple hard drives. You can combine multiple hard drives to look like one big hard drive. You can treat each hard drive separately. Or, you can combine multiple hard drives so that one hard drive's failure can be tolerated by the system. The simplest is called RAID-1 (RAID stands for Redundant Array of Inexpensive Disks). In RAID-1, you copy all data to two disks. If one disk breaks, you get the data from the other disk. The overhead is you need double the amount of hard drive storage you would need without RAID-1. The good news is it is very easy to do. The next level of complexity is called RAID-5. RAID-5 allows for the failure of a single disk in a group of disks to not lose any data. RAID-6 allows for the failure of two disks in a group of disks to not lose any data. Though disks are inexpensive, they aren't very inexpensive. In addition to the price of the disk, the disk takes up space inside the computer, and takes power. Based on my experience with disks, I decided that Raid-5 was the best solution for me.
One thing to watch out for, is RAID-5 protects against one hard drive failing. If you bought a batch of 4 hard drives, and the batch has problems, 3 of the drives might fail within a few weeks. This happened to me. The only protection against this is to buy different brands or models of hard drives. Realize that some companies such as Seagate make drives and label them as Maxtor. So even though the drives have different names and model numbers, they might actually be the same. Just something to keep in mind.
You can buy a system to hold multiple disks and do RAID-5. They are typically called NAS (network attached storage). A prebuilt NAS system is a box that has everything except the hard drives, and you just add hard drives. They are less flexible than a dedicated general purpose computer, but are likely simpler and use less power and volume. Internally, they generally run Linux. I will only consider units with gigabit Ethernet, otherwise file transfer is limited to 12.5mbytes/second, which is too slow for me. I am only going to consider systems that support raid-5 for robustness. The minimum amount of drives you need for raid-5 is 3 drives (with 2 drives you might as well use raid-1). Lets see what is out there. There is the Promise SmartStor NS4300N that holds up to 4 disks. Write speed is around 15 mbytes/second. Cost is $400 without drives. Looking at Small Network Builder's NAS charts, only Thecus 1U4500 and Thecus N5200 have write speeds above 20mbytes/second. Thecus 1U4500 holds up to 4 drives, and has a write speed of 32mbytes/second and costs about $1000 without drives. Thecus NS5200 holds up to 5 drives and has a write speed of 25mbytes/second and costs about $700 without drives. It looks like these systems are not for me. They are somewhat lacking in flexibility, and pretty expensive, none hold more than 5 hard drives, and none have a write speed above 32mbytes/second.
The next big choice is software or hardware raid. There are basically two types of raid controllers, the type that rely on the operating system to do most of the work (known as software raid controllers) and the type that don't rely on the operating system to do most of the work (known as true hardware raid controllers). If a card costs under $100, or only works with Microsoft operating systems, you can be sure it is a software raid controller. For a 8 disk true raid controller, there are several choices: Adaptec has some models around $575, Atto makes a nice model for $1095, ICP has a model for $650, Promise has some nice models starting around $400. In addition to raid controllers, you can do the raid entirely in software. This provides quite a bit of flexibility, although it can take quite a bit of CPU cycles. The good news is you can get a pretty decent motherboard, processor and memory for less than a true hardware raid controller card. Sun has a new filesystem called ZFS which can be configured to have raid-like properties (they call it raid-Z). It is done entirely in software. You can get Solaris for personal use for free. ZFS is also supported under FreeBSD. In some respects ZFS is more robust than other filesystems. If you do use ZFS, there is no reason to buy a hardware raid controller. This is some of the possible flexibility you get when you do raid entirely in software. For me, a hardware controller was too expensive, so I decided to use software raid.
You will need to build or repurpose a computer to be the fileserver. You will need room for all the hard drives, and a way to keep them cool. The power supply must be powerful enough to spin up all the hard drives. You will need one or more gigabit Ethernet interfaces.
The motherboard should support gigabit Ethernet. If it doesn't, it is likely too old, or too cheap to use. For older pentium III servers, either get a 64 bit PCI Ethernet card, or a 32 bit PCI card running on its own PCI bus (server motherboards often have more than one bus). You will want to use ECC memory. If the motherboard or processor doesn't support ECC, it is the wrong choice for a fileserver. The last feature is a decent amount of I/O speed. Even though my Asus NCCH-DL motherboard has two PCI-X slots (64bits and 66mhz which totals 528 mbytes/second), the southbridge-northbridge interface is only 266 mbytes/second. This is one place where a hardware raid card might be faster than software raid, as much of the I/O can happen on the card, and only some would get to the PCI-X bus. Any opteron system that I am familiar with will have plenty of I/O capability.
You will need enough I/O ports for all of your hard drives. You will also need one for the OS disk, and likely one for the optical drive. I suppose you could use a USB optical drive if you ran out of ports. If the motherboard doesn't have enough ports, you will need a card with some ports. If you have pci-x slots, supermicro has a sat2-mv8, 8 port sata II controller card that works well. If you have pci-e slots, try to find a sata II card without raid hardware or software. I don't recommend parallel ata, unless you only have one drive per controller, as a failed disk can make the other disk on the cable inaccessible.
I recommend a 64 bit processor, as the xor's of raid-5 will be twice as fast (assuming a 64 bit OS). Any dual core processor is likely fast enough, so select a low power one. An AMD phenom is plenty fast, reasonably low power, and stupidly cheap right now.
It is important to keep the disks reasonably cool. The coolermaster 4-in-3 module is the best way I have found to do so. It has a 120mm fan in front of the hard drives. The fan doesn't have a rpm sensor. It is reasonably priced. The only downside is that to change a hard drive means disconnecting all the cables from all the drives, and removing the module. If that doesn't bother you, buy one or more of these. If that does bother you, I recommend the supermicro 5 bay hotswap rack. Each hard drive is accessible from the front, and can be removed while the computer is on (assuming you have sataII or SAS and software support). The 92mm fan in the back is quite loud, but you can get an inline 3 pin adjustable fan speed controller and slow it down so it isn't so bothersome. The rack has a fan failure alarm, an over-temperature alarm, and hard drive activity lights, and fault lights. It isn't cheap, but I really like them. You will want to monitor the hard drive temperature with some software tool. For windows, speedfan works great.
I wanted a fileserver to back up the rest of my computers to, at a low cost. I had an older Gateway 6400 server motherboard that was used. It has two Pentium III 933 processors, over a gigabyte of ECC memory, and some 64 bit PCI slots (in addition to the usual 32 bit PCI slots). Since hardware RAID is generally expensive, slow, and can be difficult to repair (if the controller fails you usually need to replace it with the exact same part), I choose software RAID. The main CPU(s) are used, and if some part fails, there is no need to find an exact replacement for it. Since the motherboard has a problem with its IDE controllers Asus CUR-DLS, I used two Promise Ultra TX 100 IDE controllers. These controllers each have two UDMA-133 connectors, however you cannot boot to a CDROM drive attached to them to install the OS. I could have used a SCSI drive attached to the motherboards SCSI controller, but I decided to use a generic IDE hard drive instead. So I attached a CDROM to the motherboard's IDE controller, and six 250gb hard drives for the RAID partition, and one IDE hard drive for the OS to the Promise controllers.
(Note it is generally accepted that it is bad to use the master and slave on a single IDE controller because if the master drive fails, it often takes the slave drive offline as well. This is why people use SCSI which doesn't have this problem, or SATA which doesn't have master and slave, but uses point to point. However, given the low failure rate of hard drives, I decided to risk it. Since this is a backup file server, its failure wouldn't jeopardize anything.)
As more hard drives became available, they would be added to the RAID array. Eventually, SATA drives would be added to the array, minimizing the risks of a master drive causing a double failure. After operating the system for a while, I realized that the 100mbit Ethernet was a bottleneck. I got a Broadcom gigabit Ethernet server card, which has a PCI-X interface. Since the motherboard has two 64 bit PCI slots, which are separate from the other PCI slots, the disk traffic wouldn't affect the Ethernet traffic. The array can sustain reading and writing at 50 mbytes/second according to the Bonnie+ benchmarks, included below. When backing up files from other computers, I can copy at about 20-30mbytes/second across the Ethernet.
Eventually a 300gb drive was added to the array, though the array only could use 250gb. A CoolerMaster Stacker case was chosen in order to provide good cooling for the seven hard drives.
For software, I chose Linux because it had mature RAID software. We configured Linux with ssh as well as samba, which emulates the windows SMB protocol used by windows file servers. That way, windows machines could see the files on the backup file server, and files could be copied back and forth using the windows GUI.
Here is how I configured the RAID-5 array:
# make a device-special file # Not needed with most 2008+ Linuxes # mknod /dev/md0 b 9 0 # make the raid array with 6 hard drives mdadm --create /dev/md0 --verbose --chunk=32 --level=5 --raid-devices=6 /dev/hd[abcdef] # This will make a 232gb size set, and a chunk size of 32k mdadm --detail --scan # make the file system on the raid array mkreiserfs /dev/md0 # make the mount point for the raid array make directory /data #the fstab entry for the raid array /dev/md0 /data reiserfs notail 1 2 # to create mdadm.conf, as root run mdadm --detail --scan --verbose >> /etc/mdadm.conf # This will make /etc/mdadm.conf, which looks like: # DEVICE partitions # MAILADDR foo@bar.com # ARRAY /dev/md0 level=raid5 num-devices=5 UUID=ce5e9366:d83a232c:3da68804:f6814703 auto=yes
If you happen to be running Mandriva 2008 spring, fedora 9, or possibly some other 2008+ version of linux, you should read bug 40023 if your raid array doesn't mount when you reboot your computer.
Power consumption:
Here are some performance numbers:
[fileserver ~]$ /sbin/bonnie++ -d /mnt/data/tmp Version 1.03 ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP fileserver 2272M 13919 96 60733 89 14963 20 13685 86 35304 36 384.7 3 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 9601 100 +++++ +++ 3626 94 5255 97 +++++ +++ 7231 99 fileserver,2272M,13919,96,60733,89,14963,20,13685,86,35304,36,384.7,3,16,9601,100,+++++,+++,3626,94,5255,97,+++++,+++,7231,99 [fileserver ~]$ /sbin/bonnie++ -d /mnt/data/tmp -s 10000 Version 1.03 ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP fileserver 10000M 14254 96 57165 78 14495 21 15121 92 53172 50 173.3 2 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 7523 77 +++++ +++ 8500 99 9494 99 +++++ +++ 6762 92 fileserver,10000M,14254,96,57165,78,14495,21,15121,92,53172,50,173.3,2,16,7523,77,+++++,+++,8500,99,9494,99,+++++,+++,6762,92
I learned a lot building my first backup fileserver. It was time to build another. I bought a used Intel STL-2 motherboard, two Intel Pentium III 933 processors, and 4gb of ECC memory for $130. This is a really serious server motherboard. It has onboard ultra-160 scsi, and 2 pci-x slots (64 bit, 66mhz), which is faster than my gateway 6400 64 bit slots. I added a supermicro pci-x 8 port sata II controller, and an Intel pro 1000-mt pci-x gigabit Ethernet card. I added four sata II 500gb hard drives. I used a promise Ultra TX 100 IDE controller for the OS disk.
Power consumption:
Here are some performance numbers:
/usr/local/sbin/bonnie++ -d /mnt/data/tmp Version 1.03 ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP sata_fileserver 6G 11719 97 46545 73 33499 50 15310 98 102930 87 369.4 2 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 10307 99 +++++ +++ 8693 98 9832 99 +++++ +++ 7549 99 sata_fileserver,6G,11719,97,46545,73,33499,50,15310,98,102930,87,369.4,2,16,10307,99,+++++,+++,8693,98,9832,99,+++++,+++,7549,99
The writing speed is slower than backup file server V1, but I only have 4 drives in the array. Hopefully it will speed up when I add more hard drives. The reading speed is about twice as fast as the old backup file server. It is possible I was saturating the 33mhz pci bus, or perhaps I was having master/slave issues (which isn't a concern with sata).
I learned a lot building my first two backup fileservers. It is now clear to me that my first two were limited by relatively slow main memory speed. Using PC133 memory, the main memory speed is roughly 400 mbytes/second. Since there is no easy way to speed that up using pentium III processors, it was time for something newer. I bought a used Asus NCCH-DL motherboard and two LV Xeon 2.8ghz processors. Though the Xeons can draw more power than the Pentium III, they draw a variable amount of power depending on load, unlike the Pentium III which always draws the same amount of power. This motherboard, like the Intel STL-2, features 2 pci-x slots (64 bit, 66mhz), as well as built in Intel gigabit Ethernet. It has a bunch of other nifty features as well, the best ones are the ability to set the clock speed and cpu multiplier as well as fan speed based on system and cpu temperatures. I added 2gb of pc3200 memory. I used the same supermicro pci-x 8 port sata II controller, and four 750gb hard drives.
Power consumption (with 4 disk array, and 1.6ghz processors (1.86ghz)):
Here are some performance numbers:
/usr/local/sbin/bonnie++ -d /data/tmp Version 1.03 ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP sata_fileserver 2G 20822 99 72873 70 39750 40 23786 97 119355 62 437.7 9 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 362 32 +++++ +++ 10892 98 267 34 +++++ +++ 7270 98 sata_fileserver,2G,20822,99,72873,70,39750,40,23786,97,119355,62,437.7,9,16,362,32,+++++,+++,10892,98,267,34,+++++,+++,7270,98
The writing speed is 72.9mb/sec (mega bytes per second) which is faster than V2 which was 46.5mb/second and faster than V1 which was 60.7mb/sec. The reading speed is 119mb/second which is faster than V2 which was 102mb/second and faster than V1 which was 35mb/sec or 53mb/sec (benchmark was run twice). I hope the faster writes translate into faster performance using samba. With the V2 system, I could write between 20 and 25 mb/second. With the V3 system, I can write between 25 and 35 mb/second. I decided to test by copying two disks over at a time. I had tried this before with the V1 and V2 system, but the overall speed didn't increase (as it was maxed out). With the V3 system, I can write to the fileserver with an aggregate speed of between 40 and 50 mb/sec. This is a huge increase over the V2 system. Perhaps I will increase the memory speed and see what that does for performance, but this version is almost twice as fast as the V2 system, which is a big win already.
I bought two more drives for my raid array. You can 'grow' the array without destroying the data. First you say:
mdadm --add /dev/md0 drive1 drive2
to add the drives to the array. Next you say:
mdadm --grow /dev/md0
To grow the array with the added drives. I did this. What I didn't know was the process takes over 100 hours when I am adding two 500gb drives. The system hung during this process, so I built the array from scratch.
The next step is to grow the filesystem via the command:
resize_reiserfs /dev/md0
The there will be more free disk space.
Power consumption (with 6 disk array and 2.8ghz processors):
Well, what did the extra two disks do for filesystem performance? Here are some performance numbers:
/usr/local/sbin/bonnie++ -d /data/tmp Version 1.03c ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP localhost 2G 21890 99 92074 91 52511 36 27457 95 191331 79 511.9 15 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 15239 100 +++++ +++ 11601 94 14777 99 +++++ +++ 11679 100 localhost,2G,21890,99,92074,91,52511,36,27457,95,191331,79,511.9,15,16,15239,100,+++++,+++,11601,94,14777,99,+++++,+++,11679,100
So, sequential writes went from 73mbytes/second to 92mbytes/second. Sequential reads went from 119mbytes/second to 191mbytes/second. This is close enough to saturating gigabit Ethernet from my perspective. No need to crank up the cpu or memory speed.
Well, my used Asus NCCH-DL motherboard finally died. I replaced it with a Asus M3N WS motherboard. I bought an AMD phenom II 710, which has three 2.6ghz cores. I also bought 4gb of ECC memory. The phenom has very nice power management, and runs quite cool at idle. The M3N WS has a PCI-X slot for my 8 port SATAII controller, as well as 6 native SATAII ports. I used the same supermicro pci-x 8 port sata II controller, and seven 750gb hard drives.
Power consumption (with 7 disk array, and three 2.6ghz processors):
Lets see what 7 disks, and a new motherboard do for filesystem performance? Here are some performance numbers:
/usr/local/sbin/bonnie++ -d /data/tmp Version 1.03e ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP sata_fileserv 7424M 58475 95 105351 24 57918 12 56162 86 160893 16 568.2 1 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 5046 11 +++++ +++ +++++ +++ +++++ +++ +++++ +++ 23392 62 sata_fileserver,7424M,58475,95,105351,24,57918,12,56162,86,160893,16,568.2,1,16 5046,11,+++++,+++,+++++,+++,+++++,+++,+++++,+++,23392,62
So, sequential writes went from 92mbytes/second to 105mbytes/second. Per character sequential writes went from 22mbytes/second to 58mbytes/second. Sequential reads went from 191mbytes/second down to 161mbytes/second. Per character sequential reads went from 27mbytes/second to 56mbytes/second. Overall, much improved.
I updated my kernel to 2.6.29.6, and presumably a new scheduler. Here are the new numbers:
/usr/local/sbin/bonnie++ -d /data/tmp Version 1.03e ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP sata_fileserv 7424M 56774 96 156399 43 72030 31 66130 95 310665 55 545.4 3 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 +++++ +++ +++++ +++ 32546 97 2484 13 +++++ +++ 29839 99 sata_fileserver,7424M,56774,96,156399,43,72030,31,66130,95,310665,55,545.4,3,16,+++++,+++,+++++,+++,32546,97,2484,13,+++++,+++,29839,99
I then added an 8th disk, and changed the chunk size to 64k. Here are those numbers:
/usr/local/sbin/bonnie++ -d /data/tmp Version 1.03e ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP sata_fileserv 7424M 58071 97 204235 51 86550 32 69610 98 319798 50 651.6 3 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ sata_fileserver,7424M,58071,97,204235,51,86550,32,69610,98,319798,50,651.6,3,16,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++
So I can now do 204 mbytes/second write, and 320 mbytes/second read. I upgraded my client machine to windows 7. Before I added the 8th disk, I could do sustained writes of 90 mbytes/second over ethernet. I think with the 8th disk and bigger chunk size, I should be able to saturate the gigabit ethernet. Of course, this is for large file transfers.
I refreshed my hard drives, switching to six 2tb drives, and switched to mandriva 2010.1 (kernel 2.6.33) and ext4 with a chunk size to 64k. Here are those numbers:
/usr/local/sbin/bonnie++ -d /data/tmp (witn ext4) Version 1.96 ------Sequential Output------ --Sequential Input- --Random- Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP sata_fileserv 7416M 823 94 124901 13 79197 7 4252 93 366172 16 668.47 Latency 9542us 1343ms 1077ms 13527us 35223us 84475us Version 1.96 ------Sequential Create------ --------Random Create-------- sata_fileserver -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 28512 36 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ Latency 126us 564us 485us 92us 82us 41us 1.96,1.96,sata_fileserver,1,1292789775,7416M,,823,94,124901,13,79197,7,4252,93,3 66172,16,668.4,7,16,,,,,28512,36,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+ ++,9542us,1343ms,1077ms,13527us,35223us,84475us,126us,564us,485us,92us,82us,41us (with reiserfs) Version 1.96 ------Sequential Output------ --Sequential Input- --Random- Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP sata_fileserv 7416M 579 96 151329 27 82589 10 4282 91 158618 9 628.4 18 Latency 15696us 375ms 178ms 49383us 31007ms 178ms Version 1.96 ------Sequential Create------ --------Random Create-------- sata_fileserver -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 25172 52 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ Latency 147us 239us 16077us 1001us 8us 145us 1.96,1.96,sata_fileserver,1,1292793986,7416M,,579,96,151329,27,82589,10,4282,91, 158618,9,628.4,18,16,,,,,25172,52,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++, +++,15696us,375ms,178ms,49383us,31007ms,178ms,147us,239us,16077us,1001us,8us,145us
So I can now do 124 mbytes/second write, and 366 mbytes/second read. I upgraded my client machine to windows 7. For some reason writing is slower. Perhaps because there are less disks? It isn't the filesystem. I suspect the linux kernel is the main cause. I think I will try ext4, as it has more development effort, and faster boot times.
My new motherboard is a Supermicro X7DBE with 8gb of ram and 2 L5420 xeon processors. The motherboard uses FB-DIMMS which run quite hot (70C or so) and suck down power (@8w at idle per DIMM). I am now using a LSI SAS 3081e 8 port SAS controller and seven 2tb hard drives.
Lets see what 7 disks, and a new motherboard do for filesystem performance? Here are some performance numbers:
/usr/local/sbin/bonnie++ -d /data/tmp Version 1.96 ------Sequential Output------ --Sequential Input- --Random- Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP localhost 16G 634 96 225685 32 108141 16 3037 91 345201 28 664.0 8 Latency 15532us 112ms 323ms 16633us 242ms 346ms Version 1.96 ------Sequential Create------ --------Random Create-------- localhost -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 2478 4 +++++ +++ 4973 7 6944 12 +++++ +++ +++++ +++ Latency 4585us 548us 1827us 857us 51us 2027us 1.96,1.96,localhost,1,1373682786,16G,,634,96,225685,32,108141,16,3037,91,345201,28,664.0,8,16,,,,,2478,4,+++++,+++,4973,7,6944,12,+++++,+++,+++++,+++,15532us,112ms,323ms,16633us,242ms,346ms,4585us,548us,1827us,857us,51us,2027us
So I can now do 225 mbytes/second write, and 345 mbytes/second read. That is plenty fast for now.
My new motherboard is an Asus M5A78L (chosen to be inexpensive) 8gb of ram and an AMD Phenom II 720 processor (chosen because I had one lying around and it is reasonably low power). I am now using a Highpoint RR2710 card with 8 SAS ports. The card supports 6 gigabit/sec drives and drives over 2tb, and is reasonably inexpensive. I have eight 2tb hard ddrives for the raid array.
Lets see what 8 disks, and a new motherboard do for filesystem performance? Here are some performance numbers:
/usr/local/sbin/bonnie++ -d /data/tmp Version 1.96 ------Sequential Output------ --Sequential Input- --Random- Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP localhost 16G 634 96 225685 32 108141 16 3037 91 345201 28 664.0 8 Latency 15532us 112ms 323ms 16633us 242ms 346ms Version 1.96 ------Sequential Create------ --------Random Create-------- localhost -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 2478 4 +++++ +++ 4973 7 6944 12 +++++ +++ +++++ +++ Latency 4585us 548us 1827us 857us 51us 2027us 1.96,1.96,localhost,1,1373682786,16G,,634,96,225685,32,108141,16,3037,91,345201,28,664.0,8,16,,,,,2478,4,+++++,+++,4973,7,6944,12,+++++,+++,+++++,+++,15532us,112ms,323ms,16633us,242ms,346ms,4585us,548us,1827us,857us,51us,2027us Version 1.97 ------Sequential Output------ --Sequential Input- --Random- Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP localhost 15840M 789 88 36795 3 35259 3 3104 70 365413 16 461.9 5 Latency 9233us 2527ms 6802ms 25677us 126ms 214ms Version 1.97 ------Sequential Create------ --------Random Create-------- localhost -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 14504 15 +++++ +++ 22009 18 29263 30 +++++ +++ +++++ +++ Latency 499us 375us 880us 594us 10us 263us 1.97,1.97,localhost,1,1499095508,15840M,,789,88,36795,3,35259,3,3104,70,365413,16,461.9,5,16,,,,,14504,15,+++++,+++,22009,18,29263,30,+++++,+++,+++++,+++,9233us,2527ms,6802ms,25677us,126ms,214ms,499us,375us,880us,594us,10us,263us
So I can now do 35 mbytes/second write, and 365 mbytes/second read. Not sure why the writes are so slow. I will have to look into it.
I am using an older Asus M3a78-T motherboard (which used to be my main computer) 8gb of ram and an AMD Phenom II 940 processor. I am now using a Highpoint RR2710 card with 8 SAS ports. The card supports 6 gigabit/sec drives and drives over 2tb, and is reasonably inexpensive. I have six 4tb hard drives and one 5tb hard drive for the raid array. It can check the array at roughly 1 gigabyte per second, which is pretty fast. The array can do writes at 327 mbytes/sec and reads at 682 mbytes/sec. Need to look into upgrading my network to 10 gig...
Here are some performance numbers:
/sbin/bonnie++ -d /data-tmp -s 16000 Version 1.97 ------Sequential Output------ --Sequential Input- --Random- Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP File_One 16000M 943 89 326886 29 229072 23 3490 87 682452 40 415.9 4 Latency 8208us 204ms 319ms 43653us 52816us 138ms Version 1.97 ------Sequential Create------ --------Random Create-------- File_One -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ Latency 602us 351us 981us 287us 14us 1180us 1.97,1.97,File_One,1,1505348757,16000M,,943,89,326886,29,229072,23,3490,87,682452,40,415.9,4,16,,,,,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,8208us,204ms,319ms,43653us,52816us,138ms,602us,351us,981us,287us,14us,1180us
If you have comments or suggestions, Email me at turbo-www@weasel.com
Created with gnu emacs and template-toolkit, not some sissy HTML editor.
No Java or javascript needed to view my web pages. They
both have significant security issues.