Five Nine's I'm not. In fact, I don't even think I'm one nine. This site, and several others, have been running nonstop on a pair of Shuttle PC's running 1.7Ghz Celeron processors for the last three years. Besides a couple of power supply failures I've never had to touch the Shuttles. They -- and Windows Server for that matter -- have been rock solid.

All of my web site content, and all of my shared files that reside behind my firewall are stored on external USB hard drives, however, and these have been anything but reliable. I get a controller error about once a week. It gets hot in my media room in the summer and even though the drives all have built-in fans I still burn through about two hard drives a summer.

I haven't lost any data because I am diligent with backups, or so I thought. My main PC is backed up through Vista's backup program. Backed up to those shoddy USB drives, that is. I never really worried about it because the PC also runs a RAID 1 mirror. Cole "Buttons McFingerPresser" made me rethink that policy one weekend by flipping the PC power on and off rapidly. Somehow, he managed to scramble the BIOS settings. He overclocked the CPU and demoted my RAID mirror array to simple drives. In the process of trying to get the drives back to "RAID worthy" I managed to erase everything. Luckily I had a random backup of the entire system from two weeks prior. I say luckily because my weekly backups to the external USB drives were over a month old. Had I restored from them, I would have lost all the pictures from our latest trip to Bali.

I need better reliability than that. I need new hardware. I've been itching to try Windows Home Server for backups, too. Now looks like a good time.

Hardware

I was tired of the tangle of wires from all the external USB drives. I was tired of needing battery backups for two PCs. I wanted a single PC with a fatty RAID array I could use as my server for external sites, email and Windows Home Server. The PC I built is composed of:

I opted against a hardware RAID controller for now thinking if the system gets too slow I can buy a card. The motherboard has both 1x and 16x PCI Express slots available so I can shove a pretty fast card in there if I need to. My old Celeron-based Shuttles have never seen 100% CPU usage so I opted for more cache and less Ghz. As I'll explain in a minute I am going to run two virtual servers on this box, and since virtual server cannot provide more than one core to each server I opted for a dual core instead of a quad core CPU.

Software

I only want a single physical box, but I don't trust my personal files that close to the internet. In my Shuttle setup the box that hosts my web site is two firewalls away from the box that hosts my personal files. I wanted the same isolation, but in a single box. To get this, I'm using Virtual Server to host my web, email and home servers on the same hardware. I have installed separate network cards so I can be sure that traffic to and from the web and email server only routes to that server and never through my firewall.

I had two hiccups installing everything. The first problem I had was the Intel motherboard. I layed down the initial Windows 2003 Server installation and everything was fine. Things went downhill fast after installing Service Pack 2, however. The system crawled. Just moving the mouse pegged both CPUs and I could forget about installing any other software. After many hours searching for updated drivers I came to a conclusion: I don't need Service Pack 2 on this OS. This base OS has one job: to host other operating systems through virtualization. The correct thing to do is treat it like an appliance. I do not want it to automatically update or reboot by itself. Ever. After realizing this I quickly layed down a fresh Windows Server 2003 install, disabled all automatic updating, and then performed a quick test to ensure that a fully updated Windows Server 2003 running inside of Virtual Server would perform quickly -- it did.

My second hiccup was my own doing. I configured the drive array incorrectly. While I had a RAID 5 array, I built it drive by drive because I was re-using existing drives that still had data on them. I thought this would simply expand space, but it doesn't. Once you create a partition, it's created. What I ended up with was many 400GB partitions instead of a big fatty partition. Those many partitions would end up being a pain as my virtual server hard drives grew. My only solution was to back up all the virtual server hard drives and reformat the whole thing. If you're curious, it takes about three days of solid drive access to copy 300GB of VHD files from a SATA array to internal IDE drives. My final disk layout has a small 50GB partition for the host OS and a 1.2TB dynamic disk partition for the virtual servers. If I ever run out of space I can add a new array to this dynamic disk to expand its size.

Findings

So far I'm happy with everything. None of the web sites I host have been down since I moved everything over and they feel snappier. The only thing I can say is that home server likes to "balance" its storage, and this can take a large toll on the speed of the RAID array. This will eventually equalize out.

One reason I went this route was to eliminate the complex scripts I had written before to deal with backups. I let Windows Home Server backup all the PCs in my house, and Windows Home Server itself sits on a RAID array that should be fairly reliable.

No backup solution is good without testing, so before I deleted my old drives I did a test: after Windows Home Server did a backup of my main PC, I deleted the partition, inserted the Windows Home Server restore DVD, and let it do its thing. An hour later the PC was right back where it was.

What about disaster recovery? What if the house burns down? What if the Intel motherboard I'm using dies and nothing can read the RAID formatted disks? My solution is simple: I have two 500GB eSATA drives that I hook up to my home PC. I use SyncToy for Vista to copy everythng to each of these drives, and then I keep one of them at work. I occassionally swap them out. Simple, but I trust it.

$\setCounter{0}$