To virtualize, or not to virtualize...

Heya GWCers! It’s been a ridiculously long time since I’ve posted on the forums, but I’m facing a tech conundrum, and I instantly thought of the Hive Mind.

Here’s the situation. For the past few years, I’ve been using a Acer Aspire R1600 (nettop) running an Ubuntu LAMP stack as a local test server for Web development. Even though it’s an old, slow little bugger, it gets the job done. Recently, though, I’ve been wanting to do some more stuff server-wise than I anticipate it will be able to handle. Specifically, beyond its normal test server duties, I’m looking to use it for a security system (ZoneMinder with about half a dozen cameras) and some basic home automation w/ external microcontrollers. This means it’s time to step up my server specs, but I’m not sure exactly how I want to go about it.

As I see it, there are basically two options:
[ul]
[li]Buy/build a new dedicated server box
[/li][li]Run it in a VM on my main desktop PC
[/li][/ul]

Part of me likes the idea of the latter for several reasons. First, I’m in the market to upgrade my desktop anyway, and the cheapskate in me would prefer to not have to also put together a second dedicated machine. Second, even though my current nettop is tiny, it’s still an extra box, and the prospect of having my server “disappear” is appealing.

So basically, I’m primarily wondering if anyone has thoughts on virtualizing a server (particularly for the kind of duties I mentioned) on a PC. Are there major performance reasons to avoid it? Logistical issues?

Virtualizing is great, I do it at work to help cut down on configuration complexity and so make backups and spinning up emergency servers easier.

The downsides for your situation as I understand it are possible significant. There’s the performance hit you’ll take when doing CPU-heavy things like games or art or video editing plus whatever costs you acquire by having a machine stay on all the time and consuming power. $50 a month is not an uncommon cost in power for a powerful PC that runs all the time.

On the low-powered PC route, I’ve been doing a lot with Raspberry Pis lately. I’ve got a full LAMP setup on one that serves an electronics project with my car (via the OBD2 connector, etc) and another for running a 3D printer. Not sure whether it would work well for either ZoneMinder or your dev server platform, but it might be worth checking out. Not fast computers, but cheeeeeeeeeap and small and super power thrifty.

My planned upgrade for my desktop PC includes an i7 3770K processor & 32 gigs of RAM. So theoretically, I doubt anything that would be happening on the server would yield a performance hit that was very noticeable. Running costs are obviously an issue, though, especially for the hardware I’m talking about. So in that sense, it would be nice to not have to run it 24/7.

Another option I’ve been considering, which is I guess kind of spin on one of my original two, is putting together a combo HTPC / LAMP server machine. I know most of the new AMD dual-core processors have integrated GPUs with enough power to handle decoding 1080p video. So if I had an Ubuntu or Xubuntu installation with the web server package on it, I could also run XBMC on it as a frontend and use it for the TV in my living room. All of my actual media is located on a Drobo, and I’ve been wanting a way to get access to it on the big screen anyway…

Off topic, I’m curious – what kind of 3D printer are you driving with your Pi?

Girlfriend has a Mendel Prusa that’ll be run by the Raspberry Pi w/ Octoprint and we’ll play around with driving a Makerbot at the makerspace with it too.

Ho! The3!

I am glad you asked this question. While I whole hardily am a staunch supporter of virtualization and server virtualization at that, there are a few points you must conceder given your indented use (Security and home automation):

  1. Your computer must have a relatively low down time (3 hours a week is a reasonable metric in a production environment, but the choice is yours as this is a home environment. Remember this: workstations are built with the intent of being shut of, Servers are not.
  2. Virtualization depends heavily on ram, cpu, and storage space. Your virtual machine does not depend heavily on the video card itself as all of the hardware in the VM is virtualized. Conceder your operating system accordingly.
  3. Because of its very nature, any kind of virtualization requires a backup solution in order to be implemented properly. This is because the actual virtual machine is in essence a file or group of files depending on your configuration and is more susceptible to a hard drive failure than your traditional hardware solution. Because of this, storing a regularly updated copy of your virtual machine is not only a good idea, it is important for minimal downtime in the event of an unrecoverable system error.
  4. Your host machine will require redundancy that is a redundant network connection, a redundant power solution, and a UPS solution. This will help reduce the amount of downtime required. A RAID is not a bad idea in this case as well, as it will make for simple recovery.
  5. If you intend on recording the security footage, try dumping the output to a different drive than the virtual machines drive. This will cut down on the required size of the drive and make the VM less susceptible to corruption. Remember, the bigger they are, the harder they fall.
    On the flip side, If you want to go the hardware server route, you have to think about location. Where are you going to put it? Do you intend to have a mouse, keyboard, and monitor attached or do you intend to remote into the machine from another room? Do you intend to use a hardwire connection or a wireless connection with it?

These are the things that I would conceder when making my decision on this topic. (BTW, My background is in network administration and I LOVE helping any GWCer that needs help with computers!)

Have an excellent time with this and feel free to hit me up if you need additional help with this!