Christmas comes early for this geek: New ZoneMinder server parts

As you know from seeing my projects page, I've been working on building a ZoneMinder server. ZoneMinder is the software that manages the recording of multiple security cameras, streams live video over the internet, and provides all sort of analysis and other goodies. It's a robust, mature application.

Camera Setup

  • 1 usb webcam, 10 FPS, 320x240
  • 2 analog B&W cameras, 15 FPS, 640x480
  • 1 analog B&W camera, 30 FPS, 640x480

System Specs

  • CPU: Intel Core 2 Duo 3.16 GHz LGA 775 Wolfdale 1333MHz FSB
  • Motherboard: Gigabyte EP35C-DS3R LGA 775 Intel P35 ATX
  • Video Card: Cheapest name brand (Asus) PCIx x16 video card you can buy. Hey, it's a server.
  • RAM: 2x 2GB DDR2 1066 (PC2 8500)
  • Power Supply: Thermaltake 750W ATX12V / EPS12V. This is a monster of a power supply.
  • UPS: APC 1500 VA 750 Watt battery backup
  • Video Encoder: Hauppauge ImpactVCB Video Capture Card 558 PCI
  • Video Encoder: BlueCherry PV-149 - 4 port video capture card (120FPS)
  • A single 80 GB 7200 RPM hard drive for the operating system and a few fans
  • Mid-size ATX case

Total Cost = $1110

 

Additional Components

  • Various hard drives dedicated to storing the ZoneMinder data

 

After endless research I've spec'ed out the ideal system for this business's needs. They currently have 4 cameras: 3 black and white analog and 1 USB Intel webcam. Over time about 4 color analog cameras will be added. For this I picked out the following goodies:

 

Because the video encoder cards I use are all PCI I needed a card with more than 1 or 2 PCI slots. The chosen Gigabyte motherboard has

  • 1 PCIe 16x
  • 3PCIe
  • 3 PCI


Gigabyte EP35C-DS3R. Ignore the single RAM chip. My 2 2GB chips haven't come in yet. This one's a spare.

A full size ATX case would be preferred for cooling reasons, but a mid-sized ATX is what I had around. The server will have around 8 drives eventually so I might be forced to upgrade.

 

The new Seagate 80GB 7200 RPM drive is significantly thinner than standard XXXGB 7200 RPM drives. In fact, it turned out to be a pain. Given the way this case is setup, the drive doesn't get secured that well and is actually a little loose. The smaller size and increased density may make heat a bigger issue as well.

Check out those macro photography skills

The hard drive setup will eventually be

  • 2x 80 GB 7200 RPM drives in RAID 1 (mirroring) configuration for the OS
  • About 4 to 6 500GB to 1TB 7200 RPM drives in LVM configuration for storing the recorded video

For now there's just that single 80 GB drive as the OS drive. The current backup strategy is to have a seperate 500 GB drive on it's own solely for backups. It won't be part of any RAID or LVM setup.

The reason for using LVM for storing the recorded video is that a quality RAID 5 card with it's own chip for XOR operations runs around $500. With LVM I get disc spanning, but without the redundancy. A single disc failure can wipe out the logical volume. The reason this is a great low cost alternative when using ZoneMinder was discussed previously. Given the requirements, this is acceptable given a single important caveat. When a user archives a particularly recorded event, a cron job will backup that event to the 500 GB disc that's not part of the logical volume. That way if the volume fails, the important videos have been backed up.

The video encoder cards and high number of hard drives concerns me from a cooling standpoint. The server will be writing to the drives at full blast 24/7. The encoder cards will be at full capacity 24/7 no matter what. In order for ZoneMinder to determine whether there's motion on screen for example, it needs to analyze the incoming video stream. So the encoder cards are running at a constant rate. For this reason I bought some serious 80mm and 120mm fans. Beware though, they get up to over 50 decibels loud. But for the amount of air these suckers can push, I can forgive them.

This system currently has a load of roughly 3. Once I get more tests done I'll post benchmarks.