Presentation on Improving Your System Management and Virtualization Skills
Below is a summary of a talk I gave to Hampton Roads .NET User Group in January 2012.
1st Part: Tools Developers Should (but don't) Talk About
Developers are usually busy being great developers and just what their systems to work. I've spent many years figuring out how to protect those systems and keep them running. In this first part I've detailed the tools I feel are maybe outside the realm of a developers expertise but should still be running on their systems.
- Web Of Trust - Under the category of "save you from yourself". A browser add-in that helps you determine if a link or site leads you to a "bad" web page. By "bad" it could be malicious, untrustworthy, or not safe for families, etc. It's user-driven so not always 100% correct (I've seen false positives) but the best feature is showing it's stoplight indicators on google search results. If you actually goto a page that's suspect, it'll darken the page and give you a big "are you sure"?
- DynDNS Internet Guide (or Google Public DNS) - Similar result to Web Of Trust but more behind the scenes. Honestly I think every home network router should be doing this. There's no down side. You are changing the DNS server IP's on your computer or home router to theirs (either Dyn or Google's), which they will provide not only fast DNS lookups, but also filter the DNS results so you don't end up on a bad website. Similar to WOT, DynDNS will warn you first. It also allows you to set custom settings with a free account if you are a parent and want to filter additional types of sites from all your computers.
- Bitlocker - Another "no reason not to do this" on laptops. To me it justify's the extra cost of Windows 7 Ultimate (or Enterprise) to have this feature, which will encrypt your disk drives to prevent data theft if you loose your laptop. It helps me sleep at night knowing my data is still protected in case of theft. Just search the Start menu for Bitlocker and copy the key to your smartphone, email, or print it for safe keeping in case you ever need it (usually don't) to boot the computer.
- Nitro Reader - Outside the OS and the browser itself, the next likely security risks revolve around the browser add-in's and some of the worst ones are Java and Adobe Acrobat Reader. We can't replace Java but we can ditch Acrobat Reader, and in the process get a better PDF program that does more for free then Reader. Enter Nitro Reader. Fast, modern interface with no ad-ware. I recommend it to all my clients as a Acrobat Reader replacement (and upgrade) and so far everyone's happy.
- Microsoft Security Essentials - Free forever anti-virus/malware. Rumor has it that it'll be included in Windows 8 (FINALLY anti-virus built into Windows). It gets high ranks for quality of the engine, plus my favorite feature: it almost NEVER bugs you, and that's what we all want in a anti-virus, an app that we never have to mess with.
- Secunia PSI - Do you ever wonder if you have any software on your computer that has known security issues? Secunia PSI answers that question with a great tool that's like a Windows Update for the rest of your apps. It scans your system and notifies you of software that has known security issues and a download link to the newest version to fix it. I run it on my Windows systems monthly. Only free for personal use.
- Backblaze (or Mozy or Carbonite) - I used Carbonite years ago, and I've used Mozy for some business systems, but Backblaze takes the cake for the best whole-computer online backup solution. It even backs up USB drives, and provides a bonus feature similar to a LoJack for your PC. You should always use an automated backup solution, and now-a-days it's easiest to use an online backup solution, so why not go with the best-bang-for-your-buck with Backblaze. Here's hoping you'll never need it.
- SugarSync (or dropbox or box) - I've used them for years to sync files between my multiple PC's, as well as share files with co-workers or access my files when I don't have my computer. This is a sneaky way to get others who you share files with to keep those files you share backed up. Plus, it prevents the need to always email files back and forth.
2nd Part: Virtualization for the Developer
Virtualization of PC's for test and devlopment is not new, but some have still not taking the leap to this great solution. Others maybe are using a tool that doesn't meet there needs or could use some advice on managing their virtual systems, so lets start from the begining.
- You are likely developing for a OS different then the one you are on.
- Test Microsoft products quickly (pre configured): search "vhd" at www.microsoft.com/downloads and more listed at www.microsoft.com/vhd.
- Use browsers of other OS's or run your web app on a real IIS Server.
- Allow you to run multiple versions of Visual Studio, Office, etc.
- Use snapshots to test software changes on test virtual machines's.
- Getting Started
- You should be running a 64-bit OS on your hardware (32-bit does work in some cases but is quite limited). Not sure if you are 64bit? Run msinfo32.exe and look for "system type" on the right and it hopefully says x64. If it says x86 then sorry, you're 32-bit. There's nothing to fear from reloading into x64. It's not the land-of-confusion it was 5 years ago.
- Be sure your BIOS has virtualization enabled. This Microsoft Virtual PC tutorial talks at length and gives you a tool to check, but basically there is a BIOS feature for your hardware to be "virtualization enhanced" that is often not enabled. This is required for Hyper-V to work, and if not enabled VirtualBox will run much slower.
- Terminology: The OS running directly on your hardware is called the "host" or "parent" and the virtual machine (VM) running inside the host is a "guest" or "child".
- Your Virtualization Options
- Virtual PC
- Free. Not recommended for developers. It only works with 32-bit guests and is only designed to run Windows XP/Vista/7. Designed for end users with legacy apps.
- Free. Open Source. The best choice if your running Windows 7 and all you need in 95% of scenarios. You might consider VMWare a paid upgrade to this in terms of advanced functionality but if you don't know why you need VMWare, you likely don't.
- The best choice if you are running Server 2008 R2 or Windows 8.
- A good product, but to get features comparable to Hyper-V or VirtualBox you have to pay, a lot.
- Virtual PC
- Virtualization File Formats
- A virtual machine has 2 (or more) files associated with it. The two you usually care about are the disk drive files and a configuration file. Every virtualization software manufacture has their own standard for each (or more then one) and it can get quite confusing, especially if you want to download test pre-build images. Stick with Microsoft's .vhd.
- Microsoft's current standard (2011-12) is the .vhd disk format but with Windows 8 a new .vhdx format is emerging. .vhd is used by lots of Microsoft products like the legacy Virtual Server 2005, Virtual PC, Hyper-V, and even Windows Backup. If you want to keep things simple, always create your virtual machines using this .vhd format so they'll work across any product (even VMWare and VirtualBox).
- The configuration file stores hardware configuration such as number of CPU's, RAM, how many drives, and NIC MAC addresses. This file format is different in every product so usually you just recreate your settings if you swtich between, say, VirtualBox and Hyper-V.
- Which To Use
- Running Windows Vista/7: VirtualBox
- Running Server 2008 R2 or Windows 8: Hyper-V
- VM Management
- Keep your .vhd's (virtual hard drives) small. Google "shrink vhd", disable the Recycle Bin in VM's, disable hibernate, use Spacesniffer to find large files and folders.
- Keep your ISO's and install files outside of the VM and use network shares or VirtualBox shared folders to access them. Mount ISO's from Hyper-V/VirtualBox rather then using inside the VM.
- If you end up creating more then a few guest VM, learn how to use differencing disks (VirtualBox calls them immutable) to have one large source/root disk (use sysprep before making it read only) and then create new differencing disks on top of that for each VM you create. For Server 2008 R2 this saves me 15GB of disk used per virtual machine.