Setting Up a Home Learning Lab

Feb 8, 2013 / By Chris Presley

Tags: ,

Thanks to virtualization and cheap, powerful hardware, there are a lot of cost effective options available today for setting up a learning environment on your own. Early in my career, these options didn’t exist. In fact, back then you were lucky if your employer had test hardware available for you to “play” with. All too often, many of us learned in production.
If you’re an IT Pro, this is an important investment in your career. In this blog post I will make suggestions on how you can cheaply build yourself an IT Playground. I’ll also talk about some mistakes I made along the way to hopefully save you from a few strands of grey hair.

1. You need some hardware

Depending on your current rig, you can often build a small virtual lab on it or buy some dedicated hardware. My job requires a lot of travel and learning, so I have upgraded my laptop to better accommodate Virtualization as well as purchased a dedicated full sized desktop for learning/lab work. Especially if using your current day to day laptop, I recommend adding at least a 256 GB+ SSD. Prices are dropping on the 500ish GB SSD so they are worth a look. Also ensure that you have at least 8 GB of RAM, though 16 GB would be better. The amount of disk space and RAM you have is going to dictate how many virtual machines you can run simultaneously. It’s very rare that I run out of processing power with an i5 processor, but I do run out of RAM, and my desktop (which has a conventional Sata drive) is definitely IO bound.

If you spend a little time planning and researching, you can build a great learning environment without a large investment.

Using your regular laptop has advantages:

  • It’s cheap to upgrade.
  • If you upgrade it, your regular work rig is nicer to use for day to day tasks because it’s faster!
  • It’s highly portable (assuming you have a laptop) – you can easily take your lab on the road with you.

But it also has disadvantages:

  • You may find yourself always running out of disk space.
  • If you run enough VMs, using it for anything else (at the same time) can get annoying.
  • Your employer may not allow you to upgrade their laptop.

Using a dedicated desktop also has advantages:

  • Your daily rig isn’t affected.
  • Though the performance gap between desktops and laptops has been rapidly closing, powerful desktop hardware is still cheaper and faster than most laptops.

… and also has disadvantages:

  • Depending on what you buy, desktops are often louder than laptops.
  • Unless you set up a VPN, you will lose access to your lab if you go on a 2 week business trip.
  • More hardware = more management.
  • I’ts more expensive than upgrading your laptop.

If you’re just starting out and have a decent laptop, I recommend that you start by upgrading it. You can always add dedicated hardware later.

If you go the laptop/SSD route, I also recommend you purchase fast, external storage that either has USB 3.0, eSata, or Thunderbolt ports. I also have a 2 TB NAS device on my gigabit network, which is a great place to store ISOs, and commonly used utilities. These are cheap and easy to own/manage.

2. You need a router

I almost didn’t mention this because most people these days have a wireless router, and technically if you run all VMs locally, you don’t need one. The right router can be key if you travel and go the dedicated desktop route. I use the Asus RT-N66U because it has excellent wireless range, a fast internal processor, Gigabit ports, and the ability to set up a VPN without flashing the firmware to a home built version like Tomato. The VPN setup is invaluable to me because whenever I am on the road, I can hit my desktop/lab.

3. Pick a virtualization platform

There are lots of great choices. You could go with a copy of VMWare. VMWare has a lot of automation built in when you’re building guest Operating Systems, but it’s not free. You could go with Hyper-V, but you need to choose a host operating system that has this feature. I’ve had a hard time finding regular drivers for my desktop and Laptop for server operating systems, so I’ve never gone this route. Fortunately, Windows 8 has Hyper-V. However I have not had any luck RDP’ing to a Windows 8 host machine despite reading the manual, blogs, etc.

I use and recommend Oracle VirtualBox. Why?

  • It’s free and I’m cheap err frugal.
  • It allows you to tune the size of your VMs (Ram, Network cards, Processors, etc.).
  • It’s cross platform, it works on Windows, Macs, Linux, etc., and I love playing with operating systems

One word of caution with VirtualBox: It has “guest additions”, which is a series of drivers you install on your VMs. On Windows, this allows you to easily re-size the screen, move your mouse pointer out of the VM without hitting the host key, and map drives to your host operating system. The drivers are not signed, and the guest additions don’t work well with Windows Server 2012 (yet). If you’re building, Windows clusters can cause issues during the cluster setup phase. Not to worry! As long as you are not installing Windows Server 2012, you can just install them after your cluster config is done.

4. You need an OS

Decision time! This might be a little weird for me to say as a guy who’s built his career on Microsoft products, but I love using Linux. I find that Linux is a great host OS for virtual machines; however, I don’t like the graphical remote connectivity options (VNC variations) when compared to RDP. Ideally, I’d run Windows Server 2008 R2 or Windows Server 2012, but my desktop manufacturer doesn’t make all the drivers available for my desktop. I like Windows 8, but I can’t seem to get RDP working. Since my desktop is not hooked up to a monitor or keyboard, RDP is critical so I’ve opted for Windows 7 x64. It works well for my purposes, but I’m not using Hyper-V.

5. You need software

Assuming you’re going to explore Microsoft’s offerings, you need a legal, easily accessible source of software. Microsoft offers Express editions of SQL Server and a great product named “Technet”, which will work nicely. There are different levels of subscription available, and the price is very reasonable. Check it out here. You can gain full access to most of Microsoft’s Operating Systems and server packages.

If you need some sample data, you can always build your own or download the AdventureWorks database(s).

If you don’t want to stop learning with Microsoft and want to beef up skills in, say, MySQL, Oracle, or DB2, or maybe want to practice making the different technologies work together, many vendors offer “Express” editions of their software for free.

6. What’s next?

A subscription to an online reference library can help boost your learning. Check out Books 24×7 or Safari Books Online. Though I’m sure there are other similar services, I’m most familiar with these two. Both offer short trial memberships.

Next, spend some time reading blogs. Many DBA bloggers offer examples with code that allow you to see the problem/issue “first hand”.

A few tips and pitfalls

Building a Domain Controller (DC) on Windows is a great way to save yourself some time creating users and managing security on your VMs. It’s a great way to learn Active Directory and a DC is also required if you are going to play with Clustering or Always On Availability groups.

When setting up network cards in VirtualBox, the default setting is NAT. I recommend using “Internal Network.” The reason for this is that your router will not assign IPs to your Virtual Machines in this configuration. When you build a lot of VMs with static IPs, you can fill in your IP range at home pretty fast. Note that DHCP is not available in this setting and that you will need to specify an IP address for each network card added to the VMs.
If you have a Domain Controller and want to put your VM on your domain, you need to set your DC as your DNS server so that your VM will see the domain and other VMs.
The only downfall of this is if you want to access your VMs from “outside” your internal network. I think it may be possible to bridge your “Internal Network” with your wider network, though I have not explored this yet.

If you’re using a separate piece of hardware, make sure to give it a Static IP or set a DHCP reservation on your router.

You can add Internet connectivity by adding a second network card with either NAT or Bridged setting for Windows Updates and Activation.

If you are going to build a cluster, you will probably need shared storage. There are lots of free options available. My absolute favorite is FreeNas. I find FreeNas a little challenging to work with, but there are lots of great guides available on the web to help you create your first Shared Storage array.
My second favorite is the free version of StartWind iSCSI free edition. Note that there are connection limitations on the Free StarWind product, but it is very easy to use and the paid offering has some pretty cool features. There are other players out there; I’m just mentioning my free favorites.

When you build and run several continuous VMs for simulating environments, such as a 3 node cluster (Requires at least 5 VMs), and only have one hard drive, you will likely run into IO issues. Putting your host OS on an SSD and adding another, fast (7200 RPM) Sata 3 drive and then spreading the VMs across your drives will help a lot.

My desktop has a newer Intel i7 processor, and I rarely come close to using all of my processing power. The bottleneck I face is with IO. In retrospect, wish I’d saved a few dollars and went with a i5 and additional hard drives.

You can build VM templates and make your life a bit easier. If you are doing this with Microsoft OS products, Sysprep is your friend. More here.

Lastly, a word of warning – once you get started it can be addictive!

Happy learning!

12 Responses to “Setting Up a Home Learning Lab”

  • Srikanth says:

    Hi Chris.

    Thanks for quick summary on setting home lab.

    I’m a DBA, but have limited exposure to VirtualBox setups, i wish to setup a home lab for studying Oracle RAC 11gR2.

    Do you have step-by-step doc or a blog where i can view setting up 5 VM’s. i would be interested in installing linux OS in all those VM’s.

    My laptop has i7, runs windows 7 64 bit, has a local drive of 600 gb.

    Thanks,
    Srikanth M.

  • Chris Presley says:

    Hi Srikanth,

    Sorry for the late reply, I was out of the office last week. I don’t have anything personally, but check out https://martincarstenbach.files.wordpress.com/2012/03/rac-attack-using-virtualbox.pdf and also http://en.wikibooks.org/wiki/RAC_Attack_-_Oracle_Cluster_Database_at_Home.

  • Ravi says:

    This is very useful and easy to understand . Thanks much.

  • Sebastian says:

    On regards to disk, my life completely and radically change for better when I bought a 256 Gbytes SSD and a 1 Tbyte external HDD for my laptop.
    Oh! the joy! the incredible joy of not waiting 15 seconds to load firefox….
    :)

  • Sebastian says:

    Also, for the router thing, you can easily install X86 version of Mikrotik on a VM.
    Check it here: http://www.mikrotik.com/download

  • Chris Presley says:

    @Sebastian: I couldn’t agree with you more!

  • Prakash says:

    Hi Chris, i am using i5 and 8 GB RAM. VMware and ESXi server to host some Networking servers..but still its very slow in accessing the hosted server. do i need to go for dedicated desktop with 16GB of RAM.

  • Chris Presley says:

    Hi Prakash,

    More is always better. Adding RAM will help you more more VMs, but before you buy anything you should take a look at the host and find out where the bottlenecks are. It may not be RAM. In fact, its more likely your Hard Disk.

    You may want to look at allocating fewer resources to your VMs as well as possibly (if you have more than one hard drive) distributing the VMs on different hard drives. An SSD would really help.

    Chris.

  • Paul says:

    Hi Chris

    Very informative article. I’m trying to do something related and wondered if you had any pointers.

    The idea is to setup a system so that multiple users can log in and get access to a pentest environment including a Kali and another XP VM. Just a couple of users would be great. We thought of Xen but did not know if i can get multiple OS’s in one environment.

    Thanks in Advance

    • Chris Presley says:

      Hi Paul,

      Thanks for your comments. Here are my thoughts (keep in mind I don’t know much about your config or the App)

      I think Linux is a great VM host, and when using Oracle Virtualbox you will have no problem hosting several different OS’s. I’ve typically avoided *Nix due to me not liking the Remote Control options as compared to Microsoft’s Remote Desktop. I believe the most common option for Linux would be VNC which will only allow for one concurrent connection.

      If you want users to log into an XP VM you’re limited to one connection. If you replace XP with any Windows Server class OS you can get 2 concurrent connections (technically 3), as long as the users are Administrators on the server.

      Depending on setup, another option would be to give each user their own XP VM to use.

      Chris.

  • Hi there, You’ve performed a fantastic job. I will certainly digg it and in my view suggest to my friends. I’m confident they’ll be benefited from this site.

  • Marios Philippopoulos says:

    Hi Chris,

    Thank you for the information presented here.
    I installed VirtualBox 4.3.18 on my laptop, but that caused the wireless network adapter to stop working properly.

    I ended up having to un-install VirtualBox and uninstall/reinstall the wireless driver to get back the wireless capability.

    Have you faced this issue and any ideas how to get around it?

    Thanks again,
    Marios Philippopoulos

Leave a Reply

  • (will not be published)

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>