For tech enthusiasts and those budding to be, it is a bit difficult to scale and organize your workspace/home lab. It recently dawned on me that I hadn’t taken into account how to organize things or put forth the proper effort to making the most of my time and maximizing my productivity. Mostly because set up will be a huge time sink. So in this post I will try to address how I plan to rework everything and keep all the essentials undisrupted while everything is under construction.
My (virtual)home lab and hardware
Ok, so it’s not a lab in the traditional sense. In years past and even years present as people talk about a home computer lab they usually mean they have a number of physical computers that are all networked, running and doing things. Each machine can be doing something specific or perhaps used as back up etc. The point being is they have many computers to run and test software including having those machines talk to each other.
For me, my definition is a little different. My home lab machines will consist entirely of virtual machines on my main PC. I have a home server that functions as our personal file back up server/source of truth for files and may convert each of the servers functions to independent VM’s. So it’s not exactly a large number of actual hardware to organize, store and maintenance. However, there will probably be about a dozen or so total machines (virtual and physical) to manage. As they will all be used for learning new things and specialized tasks, that qualifies as a lab.
Other networked hardware
Allyson has her Macbook Pro, and I have my Toshiba laptop which I avoid using because I have a massively powerful desktop at my disposal. We have a networked printer, a Wii U and Xbox 360 which I want to share media to. Last but not least we each have iPhone’s and we also have an iPad. All of which will need some form of connectivity on the network and depending on the device, access to shared files/media.
My computing needs
I have a rather large number of interests in technology so there is a umber of things I will need my from my current machines. I currently want to learn Active Directory/Domains/roaming user profiles using Linux as the host controller(can’t afford Windows Server). I want to get back into programming Java, perform some personal study/advancement of web programming(my day job), game design, digital art/graphic design, digital photography, and of course play some games. Each of these tasks will be more or less separated off into their own contained virtual machine. So let’s separate these out here. As Windows obviously requires licenses and I currently can only afford one Windows license all Windows tasks will be for my main OS and possibly split off into my main OS and a single VM if I purchase another copy down the road. The goal is to compartmentalize my tasks as best as possible so each install is as stable as possible and easily recoverable. So if one task hoses it’s host, I can rebuild that or restore from a snapshot instead of having to reinstall or save everything in a single OS.
So here are my tasks:
- Main PC/Host: Windows 10 Pro
- Game Design/Play Games: Windows (Main OS)
- Active Directory/LDAP: Linux VMs
- Java Programming: Linux VMs
- mySQL: Linux VM’s
- Web (Programming):
- WordPress/PHP/Appache (Linux VM)
- .Net (Windows/ VM possibly later)
- Digital Art/Graphic Design: Windows (Main OS)
- Photography: Windows (Main OS)
This totals to 5 main tasks for my main Windows install and 4 Linux tasks which will require one or more VM’s each. This shouldn’t be a problem as I have 32GB of RAM and 8 cores, so I can easily run many OS’s at once without issue.
So in addition to separating out general tasks to keep my machine cleaner, I also need to clean up my server organization. Currently I have 2 x 1TB drives that are holding my data, with some data not fully backed up(media that can be re-downloaded etc) So I need to create 4 x 1TB or 2 x 1TB with another 2x2TB. I need to have one active back up with an offline shadow copy that runs automatically via CRON job on the file server. Then for additional back up have an external drive that all critical files are backed up to as well(and if money permits, enough for noncritical files to be backed up as well).
As well as complete and proper back up system, I also will be cleaning up my file shares and making multiple shares with different permissions. Why different permissions? Well if you ever ripped your CD library using Windows Media Player only to have iTunes reassign all track information incorrectly, you may know my pain and why I want to do this.
Read only & Read/Write
I plan to make multiple versions of the same shares with different permissions. A read only public share for all media files that will be accessed from any of my personal devices, and then a read/write share with user authentication so I can add new files or modify their content but only after logging into the ‘admin’ share. No shares will require execute permission. Then devices that need access can freely access the files, but I don’t have to worry about them being modified by any application. So hopefully no more mishaps where my entire library of music is improperly ‘updated’ when switching between applications.
Updates without disruption
So, how will I make these sweeping changes without much disruption?
Set up VM’s
First step will be to create all the different VM’s I need including designated software(picking a hypervisor first of course. I can use VirtualBox, Xen, KVM, or having Windows 10 Pro I can also use Hyper-V. Which one is yet to be determined.). Once done the virtual HDD files can easily be backed up and be ready for use again. This means setting up a single Linux VM and then using it as a base to clone each specialized system. Once specialized snapshots will be made to preserve their state. Once installed and snapshots created, all of these vHDD and snapshot files will be backed up to the server to use once my PC is reloaded.
Next step is to wipe and reload the host OS (for other HyperVisors if used) and then load Windows starting fresh. To ensure everything is as clean as possible I will create new Windows 10 install media and proceed from that. Once installed, all drivers and core software will be reinstalled. Once this is complete the VM’s will be ready to be run from my hypervisor of choice.
Load VM’s from share
Once the hypervisor is set up and Windows is installed(assuming VirtualBox or Hyper-V) I can then load up each of the VM’s from storage to my main machine. Once transferred, they can be launched and used.
Create all new shares
After configuring my workspaces, I will then turn my attention to fixing my shares. I will start from scratch making newly named shares reflecting their intended usage and Read/Write capability. These will then be distributed to the physical and virtual computers as needed.
Retire old shares
Once the new shares are in place I will ensure all devices can properly connect to the new ones and then retire/remove the old shares from service. This is a rather simple SAMBA configuration change and can be done quickly.
With those steps complete my digital workspace should be more secure, organized and productive. Separation of duties is a great way to ensure each OS can be stable as well as ensuring that any possible fatal changes can have a limited impact on my other files/projects. An enterprise grade solution that does really fit well for my currently expanding home network and virtual lab.
If you have any questions I would love to hear them in the comments below. I had searched information online on home labs in years past and found few pieces of information on how and why they were set up so I hope this can work as a springboard for many of you who have the same issue I have had of trying to find good information. If you like this article please let me know. If any additional details are needed, please don’t hesitate to ask.