Chapter 4. Building a SOHO Server

Building a SOHO Server

One day in early 2004, our server started making funny noises. It was no big deal, as it turned out. A bearing in the supplemental case fan was failing. That was cheap and easy to fix, but it got us thinking.

Our server, that anonymous beige box where all our data lives, was an antique. As we blew the dust off it, literally and figuratively, we took stock of the hardware upon which so much of our working lives depended. An ancient Intel RC440BX motherboard. A Slot 1 Pentium III/550 processor with 128 MB of Crucial PC133 memory (we could have sworn we’d upgraded that to 256 MB). A 10 GB 7,200 RPM hard drive that Maxtor had sent us for evaluation before that drive was commercially available. A Travan tape drive from Tecmar, a company that departed the tape drive business years ago. And Windows NT Server 4. Ugh.

Although we’d made a few minor upgrades—including mirroring the 10 GB Maxtor to a larger Seagate drive—we realized that we were several years into the 21st century and still depending on a server that dated from the late 20th century. That was good in the sense that a server should be so reliable that one simply forgets it’s there. And, despite all the nasty things people say about Windows stability, that server often ran for months on end without a reboot. That’s what happens when you build a machine with top-notch components, put it on a good UPS, and blow out the dust dinosaurs from time to time.

But although that box had been a good and faithful servant, it was clearly time for a change. So we set out to design and build a server that would meet our needs now and (we hope) for several years to come. We decided from the start that we would look to the future rather than to the past. Accordingly, our server will run Linux rather than a legacy Microsoft OS. Linux is fast, free, easier to install and maintain than Windows, and immensely stable, and suffers from few of the security flaws endemic to Microsoft operating systems.

We work in a typical "SOHO” (Small Office/Home Office) environment— half a dozen desktop systems, some printers and other shared peripherals, and a cable-modem Internet connection. Of necessity, we designed our new SOHO server to meet our own needs. Your needs may differ from ours, though, and a SOHO server isn’t a one-size-fits-all proposition. Accordingly, we’ve made every attempt to explain why we chose to configure our new server as we did, and how you might want to alter our configuration to suit your own requirements. In this chapter, you’ll look over our shoulders as we design and build the perfect SOHO server.

Note

If yours is a typical SOHO environment, you may wonder if you need a dedicated server. After all, it’s easy enough to set up a share on a desktop system and use that box as a shared desktop/server. If you have only a couple users and make few demands on a network, that may be a viable alternative. Otherwise, the security, reliability, and other advantages of a dedicated server are worth the relatively low cost.

Determining Functional Requirements

The problem with defining a “SOHO server” is that both words mean different things to different people. SOHO might encompass anything from one to 25 or more users, and a simple file and print server has very different requirements from a system that also functions as an application, database, web, and/or email server. In short, a SOHO server can be just about anything.

At one extreme, a SOHO server can simply be a repurposed older desktop system, perhaps with a larger hard drive added. At the other extreme, a SOHO server can be a $15,000 box that uses such technologies as multiple processors, ECC memory, SCSI RAID, redundant power supplies, and so on.

As much as we believe in the advantages of building your own, we think it’s a mistake to build the latter type of server, except perhaps for medium or large companies that will have several such servers in use. A small company can no more afford extended server downtime than can a larger company, and avoiding downtime means having spares on hand. If you’re running a dozen such servers, it’s no great hardship to maintain a reasonable spares kit. If you’re running only one server, the cost of spares can nearly double the cost of building the server.

Accordingly, for a “larger” small company that requires a powerful, sophisticated server, we recommend buying rather than building. Call IBM, buy a server that meets your requirements, and sign up for the best on-site service plan they offer. The cost of 20 people sitting around drawing their salaries while they’re unable to work adds up quickly. Even a short server outage may cost the company more than you “saved” by building your own server.

Note

If you’re going to do it, do it right. Don’t buy from Dell or another second-tier server vendor. Don’t buy HP. Buy IBM, period. We know we’ll get mail from people with horror stories about their IBM servers. It happens, but not often. And we’d hear lots more horror stories if we recommended anything but IBM servers.

Most SOHO servers fall between the extremes, and it’s such servers that this chapter focuses on. Tables 4-1 and 4-2 list some starting points for configuring a SOHO file or application server appropriate for your own requirements.

Table 4-1. Suggested SOHO file server configurations

 

1–5 users

6–10 users

11–20 users

20+ users

CPU

Celeron or Pentium 4

Pentium 4/2.0G

Pentium 4/2.4G

Pentium 4/3.0G

Memory

256 MB or more

384 MB or more

512 MB or more

1024 MB or more

Disk subsystem

ATA RAID 1

ATA RAID 1, 5, or 0+1

SCSI RAID 1 or 5

SCSI RAID 5

Ethernet interface

100BaseT

100BaseT

100BaseT

1000BaseT

Backup hardware

DVD+R, Travan, or external hard drive

DVD+R, Travan, or external hard drive

Travan, DDS-4, DAT 72, or AIT

DDS-4, DAT 72, or AIT

Table 4-2. Suggested SOHO application server configurations

 

1–5 users

6–10 users

11–20 users

20+ users

CPU

Pentium 4/3.0G

Pentium 4 EE

Xeon or Dual Xeon

Dual Xeon

Memory

1024 MB

1024 to 2048 MB

App-dependent

App-dependent

Disk subsystem

ATA RAID 1 or 5

ATA RAID 5 or 0+1

SCSI RAID 1 or 5

SCSI RAID 5 or 0+5

Ethernet interface

100BaseT

100BaseT

100BaseT or 1000BaseT

1000BaseT

Backup hardware

Travan or DDS-4

Travan or DDS-4

DDS-4, DAT 72, or AIT

DDS-4, DAT 72, or AIT

All of these configurations assume you are running Linux, which for most situations is the best OS choice for a SOHO server. If for some reason you must run a Microsoft Server OS, these configurations may be marginal, particularly CPU and memory. There’s no getting around it—Windows Server is a pig. When it comes to server hardware, Linux takes tiny sips, while Windows Server takes great gulps.

Although we specify number of users, all users are not equal. One user who runs a CPU-intensive, server-based application may put more load on an application server than a dozen users who occasionally retrieve and save a document or spreadsheet. The type of load also varies. A shared database that resides on the server may stress the disk subsystem but place fewer demands on CPU and memory. A client/server application that ships large amounts of data to clients may stress the network interface. A server-based application may hammer the CPU and memory but not the disk subsystem. And so on.

When you design a SOHO server, it’s important to determine which server subsystems are likely to be bottlenecks and design accordingly. For example, if the server functions primarily as a database server, you might spend a significant part of your budget on a stacked SCSI RAID disk subsystem and lots of memory, and correspondingly less on CPU, the network interface, and other components. If network throughput is the bottleneck, you might install multiple Gigabit Ethernet adapters on the server and use Gigabit Ethernet switches rather than 100BaseT hubs. Designing a SOHO server is all about balance—allocating your budget to eliminate the most important bottlenecks. Of course, each time you eliminate one bottleneck, you uncover another.

We sat down to think through our own requirements for a SOHO server. Here’s the list of functional requirements we came up with:

Reliability

First and foremost, the SOHO server must be reliable. Our server runs 24/7/365. Other than periodic downtime to blow out the dust, upgrade hardware, and so on, we expect our server to take a licking and keep on ticking.

Data safety

We’ve never lost any data other than by our own stupidity, and we want to keep it that way. We’re paranoid about backup. We use one of our desktop clients to do weekly full backups and daily differential backups of the server to tape, as well as monthly full backups to DVD+R. We run a batch file several times a day to back up changed files to other network volumes. That’s all well and good, but the fact remains that if the server fails between backups we might lose hours of work. That’s unacceptable, so we’ll use redundancy in the disk subsystem.

Flexibility

Initially, our SOHO server will be almost exclusively a file and print server. It will run Linux, though, so it’s likely that at some point it will transmogrify to an application server of some sort. To allow for that possibility with minimum disruption, we’ll initially configure the server with enough processor, memory, and disk space to allow adding functions incrementally without upgrading the hardware.

Expandability

When we first considered building a new SOHO server, we planned to build an “appliance” system with a microATX board in a small case such as the Antec Minuet. There are a lot of advantages to such a server. It’s small and so can be put anywhere. It doesn’t consume much power, produces little heat, and doesn’t make much noise. But as we thought about it, we realized that for us the disadvantages of a small system outweighed the advantages. However flexible our initial configuration, it’s likely that at some point we will want to expand the server. We may decide to install a SCSI RAID disk subsystem, for example, or install a tape drive in the server. The microATX form factor is simply too limiting. With a full ATX motherboard and a mini-tower case, we have room to grow.

Note

Those who put limited demands on a server may be better served by a microATX “appliance” server. Conversely, those who need more expandability may opt for a full-tower server case that accepts dual motherboards, redundant power supplies, piles of hard drives, and so on.

Get Building the Perfect PC now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.