Rosher Consulting

Software Consulting and Development Services

NAS - Thecus N4100+

4100 Running a server 24/7 can become an expensive business especially when you're using an old power hungry Pentium 4 processor and you've got a lot of hard drives, which is why around December 07 I decided to get myself a NAS drive. I figured I could put all of my media files on the NAS and then keep the existing server in standby and have it wake up and shut down automatically to record TV.

Before I started looking for a NAS I drew up a list of requirements that I wanted to have, in order of priority:

  • At least 4 drive bays
  • BitTorrent client
  • iTunes server
  • UPNP compatible
  • FTP Server

I wanted 4 drive bays because it would allow me to start off with one drive and then add more as required, I wanted the BitTorrent client because I download some TV episodes and didn't want to have the server on for this, the iTunes server was required so that I didn't have to maintain separate iTunes libraries on various PC's, UPNP was more of a future requirement as more and more devices use this to discover content on the network and finally the FTP server as I occasionally upload files to the server.

Finding a 4 bay NAS drive wasn't a problem, there were plenty on the market, but finding one with the features I required was a bit of a problem as most 4 bay's were targeted at enterprise users, ones with the features I required had only 2 bays and I wasn't willing to compromise.

I eventually came across the Thecus N4100+ during my search that had everything I wanted and also had some really good reviews, most notably the reviewers pointed out the excellent features and the data transfer performance, which was something I was also interested in given my recent experiences with gigabit networking.

I did a bit of shopping around and eventually picked one up for £330 from Ultimate Storage, as I already said I was thinking of starting off with one hard drive and then adding more as time went on, but I've got no willpower when it comes to gadgets and when I saw the price of 500gig drives I ended up ordering 4 of them to give me 2 terabytes of storage!

When everything turned up I installed the drives and proceeded to get the NAS configured, which was reasonably straightforward once I'd read the manual of course. I decided to go with a JBOD setup rather than configuring a RAID array as I wanted to utilise all the available space and I wasn't bothered about backing anything up. Waiting for the NAS to configure the drives took about an hour, not sure why, but it would appear this isn't uncommon, in fact I've heard reports of configuring RAID arrays taking days, which I think is a combination of most cheap NAS drives using a slow CPU and having a software raid implementation, but anyway it got there in the end.

I then started to copy my media off of the server and on to the NAS, which is when I thought that perhaps Windows had a problem with its file transfer calculation time routine as it was way off the charts, heck, this NAS is supposed to be fast! I then busted out FastCopy to see what transfer rates I was getting and was disappointed to see that it was only around 5meg, doing some research on the net made me even more despondent and made me realise I should have done more of my usual research before buying the NAS drive as I wasn't the only one experiencing slow transfer rates.

I persevered for a while and tried all the usual tricks such as jumbo frames and any other suggestion I could come across but the best transfer rate I ever got was around 8meg, which when transferring gigs and gigs of files is going to take a long, longggg time!

Ultimately the problem with the NAS is that it's underpowered, even though it's got a gigabit Ethernet port and utilises SATA hard disks the CPU just can't keep up with high transfer rates, when I was doing my testing the CPU was always pegged at 100%, so no matter what configuration changes I made I was never going to improve the transfer rates.

I decided to cut my losses on the drive and send it back, the only problem was that I'd bought it just before Christmas and being Christmas I'd been a bit lax, Ultimate Storage don't exactly have a long return period either, so combined that meant that I was over the limit and wouldn't get a full refund. I couldn't accept the restocking fee, so I figured I'd probably eBay it or something... in the mean time I had to decide what to do with the four 500gig drives...

However, that and what eventually happened to the NAS drive is all a story for another time.

Gigabit networking - Part 1

GS605 Sometime around September 2007 I decided to upgrade the network to Gigabit as I was increasingly transferring large files around and I'd also noticed some occasional lagging and jerkiness when watching some HD content on the lounge media center (this was prior to the Quad core upgrade).

I did a little bit of research on the topic and decided that all I needed was to buy myself a Gigabit switch, transfer the network cables from the wireless router to the switch and then add another cable from the switch to the router, sounds simple enough!

I'd seen some really good reviews of the Netgear GS608 but decided to go for the cheaper 5 port version, the GS605, both models had good reviews on ebuyer.

I was already using Cat5e cables, so I connected everything up and then proceeded to do a few tests. I regularly use FastCopy to move files around the network as it's a lot more reliable than Windows Explorer and it also displays the current transfer rate, which is perfect for testing the new switch.

I used some large video files >1GB for the tests as you tend to get better results than lots of smaller files, unfortunately while the transfers were faster than the old network, they were rather disappointing considering that gigabit has a maximum (theoretical) throughput of 1000 mbps as I was getting about 8-9 mbps.

So...this is the point where I started to do a lot more research into gigabit networking and I realised that all was not quite as straightforward as it first seemed!

I tried tweaking Window's registry settings such as TCP window sizes, turning on Jumbo frames etc. but none of the above ever really gave me a great jump in transfer speed. I then came across a really good article (which typically I can't find now) that discussed using Jumbo Frames and how to work out the maximum transmission unit (MTU) for your network as it turns out that all NIC manufacturers use different sizes, so you have to do some manual tweaking to get everything working efficiently.

To give you some background on jumbo frames, all packets of data that travel around your network are transmitted in frames, so a 1gig file will be split up into multiple frames as required. A fast ethernet network will have a frame size of 1.5k, this is also known as the MTU, a gigabit network will also have a frame size of 1.5K, but with jumbo frames enabled you can increase the frame size up to 16k. Straightaway you should be able to see that your 1gig file using jumbo frames will result in less packets being sent around your network, hence why it will be faster. Here's the kicker though: if you configure your NIC with a frame size of say 8k, it will send out an 8k packet, if the NIC your sending to doesn't support or isn't correctly setup to receive an 8k frame, an error will get sent back to the source NIC that will then split the frame up into smaller packets and re-send it, hence why your super-duper gigabit network can appear to give no noticeable performance improvements over your fast ethernet network and in some scenarios can even appear to be worse!

All gigabit NIC cards should allow you to change the frame size, some will give you a pre-defined list of options such as 4k, 8k and 16k, others will allow you to manually enter the frame size. This all sounds simple and straightforward, except that some manufacturers include the size of the frame header and some don't, so working out which values to choose or enter can be a hit and miss affair.

Fortunately there is a way to work out the MTU by using the ping command which allows you to set the frame size (ping -l xxxx, where xxxx is the buffer size in bytes), thereby seeing whether the specified frame size will successfully get sent across your network. Using this technique you can gradually increase the frame size until the point at which it fails to determine the maximum frame size.

This all sounds fine and dandy, except that the process, when coupled with more than a couple of PC's quickly becomes arduous and still isn't guaranteed to give you great results.

Along with trying out some of the suggestions here the maximum transfer rate I ever got between any of my PC's was about 15Mb/s, which isn't too bad but is pretty disappointing considering the results I was expecting.

Whoa...this post has turned out to be a bit more wordy than I was expecting, but I guess it's important to include all the details that fully explain my disillusionment with gigabit networking as a whole.

In part 2 I intend to explain how I finally managed to get transfer rates in the 40-50Mb/s range and why gigabit networking will at the moment struggle to get past 75Mb/s.