System Center Virtual Machine Manager SoFS: Building a Virtual SoFS Lab
For a recent “Tech.Days On-line UK” presentation I wanted to take the opportunity to illustrate how you can use your home lab to excise all the cool stuff that was packed into the latest version of System Center Virtual Machine Manager 2012 R2 (SCVMM 2012 R2) for storage management. I had a number of options to choose from, but as this was a Microsoft event, I chose to demonstrate the new Scale-Out File Server (SoFS), and Storage Spaces functionality, including the option of having the VMM create the SoFS for us. (If you need a refresher on Scale-Out File Servers and Storage Spaces, refer to some of the great posts from Aidan Finn on Petri IT Knowledgebase.)
Using a home lab to learn new technologies has many advantages, but unfortunately there is almost always one big blocker, which of course is the severe limit of available resources. I have therefore chosen to execute the complete lab on a single Hyper-V host, for both our VMM installation and our two-node SoFS and the supporting Storage Space using a set of shared VHDXs.
It is also worth mentioning, that currently many of the Enterprise Storage vendors are now making available virtual appliances, permitting us to use these in our labs to simulate the enterprise class hardware we might have deployed in our datacenters, so we can safely learn how these technologies integrate without the normal associated risks.
SCVMM and Scale-Out File Servers (SoFS)
The latest incarnation of SCVMM has continued to add additional focus to areas that are beyond the basic virtual machine features we have come to expect. In the the 2012 R2 release we now have the ability to not only deploy bare-metal Hyper-V servers, but now we can leverage this time saving feature for deploying our Scale-Out File Servers.
Passwords Haven’t Disappeared Yet
123456. Qwerty. Iloveyou. No, these are not exercises for people who are brand new to typing. Shockingly, they are among the most common passwords that end users choose in 2021. Research has found that the average business user must manually type out, or copy/paste, the credentials to 154 websites per month. We repeatedly got one question that surprised us: “Why would I ever trust a third party with control of my network?
In our home lab, I will skip the bare-metal step and use VMM to elevate an existing Windows Server 2012 R2 VM. Therefore we are going to first need to get two virtual machines (or more) ready before leveraging the VMM wizards. How you deploy these is your choice; it can range from a Hyper-V management console to a nice VMM service template. Either way you will need to setup the following as a bare minimum.
- Two Virtual Machines
- Windows Server 2012 R2
- Single NIC
- 2Gb Dynamic RAM
Shared VHDX Filter
Once you have these VMs online, you will need to consider the shared disk, which will be required for our Storage Spaces. In our lab we can achieve this by leveraging the new Shared VHDX feature in Hyper-V 2012 R2. However, as we are using just a single host and no remote storage, we will need to leverage a feature that is not supported for any kind of production deployment. This feature allows our standalone host to emulate the correct SCSI replies necessary for Hyper-V Shared VHDX to function.
This trick requires that you have some of the binaries, which are distributed as part of the failover clustering role installed to your host. Obviously, this is a home server and we do not have the hardware required to build a cluster, but that is not actually important. All we need is the files to be deployed to the host. We are not going to attempt to do anything else with clustering on our host. Run the following PowerShell command on your host to add the required binaries.
Fantastic! Now you must identify the drive letter on your host on which you plan to use to host the three or more VHDX files which will be used to create your Storage Space. Using the administrative prompt we will execute the following command to enable the storage filter we need. (Remember to replace my sample W: with your hosts drive letter.)
FLTMC.EXE attach svhdxflt W:
Assuming you have no issues, the command will reply with a message similar to the following.
ATTACH successful... Instance Name: svhdxflt
Attach Shared SCSI Virtual Hard Disks
The final step in our preparation is to add the SCSI Virtual Hard Disks to our virtual machines. However, just like a real SAN, we will be attaching two or more VMs to the same virtual hard disks.
To do this, on the first of your VMs create three or more VHDX files and ensure you store these files on the same drive as you attached the filter driver to in the previous step. These disks must also be attached to the SCSI controller of your VM, and if you like you can even use dynamically expanding disks.
Once you have all your new VHDX files created, now enable the new Shared VHDX feature by clicking on the + icon in the hardware pane and selecting the advanced page for your disk, on which you will then need to enable to option Enable Virtual Hard Disk Sharing (as illustrated below).
Note: If you messed up the placement of the VHDX file or loading the filter, you will be presented with an error when you check this box, stating that the necessary SCSI commands are not supported.
Now you can move on to the rest of your selected VMs, and add the newly created VHDX files to these VMs, again ensuring to use the SCSI controller and also checking the option Enable virtual hard disk sharing. Once you apply the change, your VM will be attached to the same disks which we created and attached to the initial VM. You can repeat this procedure for each VM you will add to the Scale-Out File Server.
Great work! You have essentially cabled up your shared storage to two or more servers. You can now power these back up. In the next step we will move over to SCVMM to have it configure the remaining software needed on these VMs, including the file server roles, clustering, etc.
Final comment: Remember the tricks you learned here are for LAB USE ONLY, and are not supported for any kind of production.