It's really fairly important to mention *what* you are serving. A database server is very different from a mail server or multiuser *NIX type server. Disk intensive vs. CPU intensive vs. latency bound vs. throughput bound vs. ...
and if you are going to be serving games...hehe....
like i have a file server for my house, which has 7 computers right now, including the server...and the server is just my OLD OLD computer, with an overclocked k6-2 350@450...used to be a pentium233, but my friend had a 350 laying around...so i threw that in there..
i put a 10 gig hard drive in there, and 64 megs of ram, a cheasy jaton pci video card...with 4 megs of vram...and a network card...installed win xp...and stored all my music videos, and other various files that i didnt really need to have on my computer all the time....
works fine for what i use it for...but i would definately not use this thing as a file server for more than 10 users, who would be constantly accessing it, or a game server for anything other than checkers, or solitaire (why solitaire, that is a one player game....hence the name SOLitaire...oh well, must mean bed time!)
this thing is being accessed mainly by me, and even then, not often...
so, more details....please :smile:
I am getting ready to build a server for a small office. My server will be a database server, serving 10 PC's, sometimes several people trying to access the database at the same time. Not much needed in the way of processing. I am highly concerned with stability. For speed with I/O, I will use SCSI hard drives. For reliability, I will use a brand name motherboard, and I will buy a SCSI RAID controller card so that I can do drive mirroring. A drive configuration with SCSI RAID will cost me hundreds of dollars (US) more than IDE RAID, and it will be the most expensive part of my system, but I want fast, dependable I/O, and I (the business manager) am willing to pay for it.
Question: How important is a 64 bit/66MHz PCI slot for my SCSI RAID card? Since my I/O to the server will be a single cat5e fast ethernet connection, do I really need the 64 bit/66MHz slot? If I need the 64 bit PCI slot than I will have to go with one of these dual processor MB's, when really, I don't need the processing speed, I am after the fast I/O. Your thoughts?
A few points --
- Mirroring <b>will</b> slow your writes, and remove most of the advantage of SCSI (since seek time dominates over the better bus speeds, and you will have two disk seeking instead of one)(and most mirrors return "write success" status after one disk writes, so make sure you know what you are doing! This can make a database unrecoverable.)
- The network connection speed is almost unrelated to the disk activity. SQL is typically executed on the server (a few hundred bytes across the network can often result in hundreds of megabytes of disk throughput to get a result set.)
- RAID typically slows down a database, with a few exceptions (and you basically need to characterize your disk I/O and have a good controller to do this type of optimization - so forget it.) The RAID controllers used by high end systems typically have *HUGE* caches at both the controller and disk level to compensate for the performance loss.
- Some mirroring software can distribute reads to the least loaded device. If you are read intensive, mirroring <b>may</b> actually increase your performance. (not all mirroring hardware has this capability - just the more expensive.)
- Database can max out the PCI bus. But do you really expect that much activity? If so, why not prototype on a cheap system to get some performance metrics for the application? Then you can intelligently choose components to compensate for the needs of the application on top of the database. (and perhaps choose a non-PC platform if required)
- And don't most good databases have log files to guarantee committed data? And using redundant logs can further guarantee the data -- possibly removing the mirroring requirement and getting back a lot of performance.
- Many databases become network bound surprisingly quickly. Are you sure you won't need multiple network cards? Have you done any quick calculations of application throughput?
- The Microsoft "server" versions of software have mirroring and basic RAID built-in. Have you considered trading a bigger hunk of RAM for the RAID controller? Depending on access patterns, this may be a good trade-off.
PS. I spent six years at Oracle. Fast hardware can solve some database performance problems, but the best I/O is the one that you eliminate. I've seen companies spend millions when they simply didn't make the right optimization.
I'm looking for the same info. I want to build a Web Server Running Red Hat Professional 7.2. I need to keep the cost down, run-time up, IDE raid 1 would be nice...possibly raid 0+1 in the future when I can add more drives. I'm thining about using the Athlon running on one of "9 best AMD Boards" Tom reccomended. Any guidance would be great.
You mean I can't just buy the SCSI RAID card, configure it for mirroring, and forget it? Hardware mirroring can corrupt a database?!? I had heard about corruption with software mirroring, but hardware mirroring is prone to data corruption, too?
You go on to recommend consideration of software mirroring, and using the money on RAM, but I thought sofware mirroring was where the real corruption risks were to be found, not with hardware mirroring.
I only have ten users. I am not going to overwhelm a new machine. I want mirroring so the business does not go down if a server hard drive crashes. I really don't care if I lose a little bit of performance. But I do not want to significantly increase my risk of data corruption.
You can't just buy a SCSI raid card and forget it.
There are two problems:
1) When is write success returned to the application? On cheap cards, it is returned after a write to either mirror. On higher end cards, it depends on the manufacturers whim (Often they choose one successful write in order to look better in magazine benchmarks.) But this is a problem when recovery is handled by a database, since the database logs a successful write and will recover from that point. (in oracle, a special number is recorded in the log file) Well, when you tell the database to recover and the disk image does not have a matching record, it assumes something went very wrong or you are using the wrong backup media for recovery. (unless you know specifically which disk had the successful write before the crash) Good controllers provide a utility to choose when "write complete" status is returned. (some "easy to use" databases with "autorecovery" can choose the wrong disk and end up with corruption.)
2) Backup of a mirror requires correct procedure. Most manufacturers of RAID/mirroring have a backup utility that does not take into account an intelligent data logger, and the backups with those utilities are usually worthless. (Since the backup is unsynchronized with database disk write operation, and again will confuse the database) This is often only discovered after something goes wrong.
Both these problems are associated with mirroring and a database - independent of any issues of hardware vs. software mirroring. (Software will be a little slower, but not that much -- again, disk seek time tends to drive the mirroring "slowness".)
This is not just hot air. I've worked with *dozens* of clients who have lost datasets for these reasons. There is a reason that good database consultants are well paid.
My advice - find out what machines tend to be used by the developers of your database (Oracle has lots of Dell machines in the Windows product line) and use that machine. Most often, this will be the most reliable.
Mr. Duarte - Thank you very much for your well thought out response. Very interesting, informative, and helpful.