Last week I was in Palo Alto and I had a discussion about Virsto. Based on that discussion I figured it was time to setup Virsto in my Lab. I am not going to go in to much details around what Virsto is or does as I already did that in this article around the time VMware acquired Virsto. On top of that there is an excellent article by Cormac which provides an awesome primer. But lets use two quotes from both of the articles to give an idea of what to expect:
Virsto has developed an appliance and a host level service which together forms an abstraction layer for existing storage devices. In other words, storage devices are connected directly to the Virsto appliance and Virsto aggregates these devices in to a large storage pool. This pool is in its turn served up to your environment as an NFS datastore.
Virsto Software aims to provide the advantages of VMware’s linked clones (single image management, thin provisioning, rapid creation) but deliver better performance than EZT VMDKs.
Just to give an idea, what do I have running in my lab?
- 3 x ESX 5.1 host
- 1 x vCenter Server (Windows install as VCVA isn’t supported_
- VNX 5500
After quickly glancing the quickstart guide I noticed I needed a Windows VM to install some of Virsto’s components, that VM is what Virsto refers to as the “vMaster”. I also need a bunch of empty LUNs which will be used for storage. I also noticed reference of Namespace VMs and vIOService VMs. Hmmm, it sounds complicated, but is it? I am guessing these components will need to be connected. This is kind of the idea, note that the empty LUNs will be automatically connected by to the IOService VMs. I did not add those to the diagram as that would make it more complex than needed.
Okay, so now that we know what it should end up looking like lets start building it. I have the vCenter Server up and running and I installed a VM with Windows 2008 called vMaster-01. First thing I need to do is install the Virsto software on my vMaster-01 VM. So here we go:
- Run “Setup_VMware_2_2_19116”
- Now the installer warns me that a bunch of roles are not enabled, lets enable the ones it is asking for…
- Enable “Web Server (IIS)” role
- Enable “Application Server” role
- There is no refresh option in the installer, so lets close it and start it again when the roles are configured
Okay here we really go:
- Click “Next”
- Accept the license agreement and “Next”
- Default install location and “Next”
- Enter vCenter credentials and “Next”
- Click “Next” to start the installation
- Click “Finish”
So far this is easy right, now the second part is installing the vSphere Plugin in the vSphere Client, that can’t be too difficult either I would hope:
- Open the vSphere Client
- Go to “Plugins” and click “Manage Plugins”
- Click “download and install” on the Virsto plugin at the bottom
- Install the plugin
- Click “Next”
- Click “Install”
- Click “Finish”
Now if you go to your vCenter “Datacenter Object” you will see a brand new “tab” called “Virsto”. When you go to the tab it says that Virsto has been installed on the Management Server but not deployed on the hosts yet, so lets click “Deploy Virsto IO Services” to get going. First thing what it will ask me is to check if all required components are available as shown in the screenshot below.
So I need the following ready to go:
- Virsto license key –> Check
- 1 large LUN for persistent data –> Check
- I have 3 x 200GB
- 1 small LUN for each host for logs –> Check
- I have 3 x 10GB
Lets install the IO Services:
- Click “Next”
- Enter the licensing details and click “Next”
- Select your cluster and click “Next”
- Select the Datastore where the Virsto IO Services VMs will be running
- Select the purpose of the shown LUNs, note that the small LUNs are used for the vLogs and the larger ones are used for the vSpace aka storage, click “Next”
- Select either DHCP or add a fixed IP address, note that a range will be used so make sure those are available, click “Next”
- Enter your NTP details and provide a host local network range and click “Next”
- Review the details and hit “Finish” and there we go…
Now you will see various tasks popping up. VMs are created, new portgroups are created and your new storage platform is created. There is a VM created called “Virsto Namespace” and each of the hosts will get a VM which is called “Virsto vIOService <hostname>”. Those Virsto vIOService virtual machines have all of the LUNs attached as RDMs to them which are served up as an NFS volume. This is served up by the local Virsto vIOService virtual machine through the private network that was created automatically. Yes I know, that sounds really complicated… Lets try to visualize it.
So as you can see, a Virsto IOService VM serves up a Virsto Datastore through an isolated network to the ESXi host. Note that each of those Virsto IOService VMs serves up a Datastore and that this Datastore only connects to 1 host. But now what? Well as soon as all of the configuration work is done you will have various extra options under your right click menu. For instance “Virsto New Virtual Machine” which allows you to create a new VM using advanced Virsto functionality. When you created one of those Virsto based virtual machines you can also right click the VM and enable dataservices like snapshotting for instance or you can create a clone using the Virsto technology… Also nice is that you can use the “deploy” option and just clone a VM hundreds of times.
Now the obvious question, at least for me it was… What is that “Virsto Namespace” virtual machine? Well I figured I would just kill it while running some workloads as that is always the best way to find out what it does. It is clear that the Virsto IOService VMs handle the IO, and I was guessing that the Virsto Namespace VM handles the … yes the common namespace that these IOService VM use. What is the impact of a failure of this Namespace VM? I killed the Virsto Namespace VM while running IOMeter and the IO came to a full stop! So it is safe to say that the Virsto Namespace VM is really important to your environment. Unfortunately it has two vCPUs which means that it is not possible to protect it using vSphere FT. Only option for now is vSphere HA and VM Monitoring. I agree that this is something that should be solved in a future release, and I have addressed this within VMware. Hopefully this will get in soon.
I was told by various people that Virsto was difficult to implement. Personally I did not find it difficult at all to be honest. It took me a couple of hours to set everything up and that includes installing and configuring a new vCenter Server and the additional LUNs I needed on the VNX 5500. I like how Virsto presents a single large datastore to ESXi, abstract and pool is key with Software Defined Storage solutions. I loved how easy it is to deploy many new VMs and how fast it created those VMs, also the snapshotting capabilities are great. I would love to see this be tightly integrated with vSphere, basically to the point where it becomes part of vCenter and ESXi by default and many LUNs can be claimed by Virsto and presented as a single pool. This would also make the “Automate” part a bit easier when it comes as part of the platform, I guess I should submit a feature request for that.