In my recent VirtualizationAdmin.com article Overview of VMware ESX / VMware Infrastructure Advanced Features, one of the many features I covered was VMware's Storage VMotion (aka SVMotion). I covered how Storage VMotion is similar to VMotion in the sense that "something" related to the VM is moved and there is no downtime to the VM guest and end users. However, with SVMotion the VM Guest stays on the server that it resides on but the virtual disk for that VM is what moves. Thus, you could move a VM guest's virtual disks from one ESX server's local datastore to a shared SAN datastore (or vice versa) with no downtime for the end users of that VM guest.
There are a number of restrictions on this. To read more technical details on how it works, please see the VMware ESX Server 3.5 Administrators Guide.
Additionally, there are at least 3 ways to perform a SVMotion – from the remote command line, interactively from the command line, and with the SVMotion VI Client Plugin (to see these in video form, checkout SVMotion – watch it happen here (in 3 ways). By far, the easiest way to perform a SVMotion is to use the free VI Client Plugin and that is what we will demonstrate in this article.
Image Source: VMware SVMotion
How do I obtain and install the VI Client Plugin?
The free VI Client Plugin was generously created by Andrew Kutz and it provides a wonderfully needed GUI for SVMotion. I still cannot believe that VMware released and heavily touts this feature but offers no GUI interface for it.
The first step would be for you to download the SVMotion from here: SVMotion VI-Client Plugin.
It is a simple Windows MSI installer and there are no questions asked during the installation (that is the kind I like, that is, as long as I trust the app). When you are done installing it, you will see this window:
Figure 1: SVMotion VI-Client Plugin Installation Complete
After you close this window, open the VI Client (if it was already open then you should close it and reopen it).
Next, Go to the Plugins Option, then Manage Plugins, on the VI Client Toolbar, like this:
Figure 2: Go to the Plugins Option, then Mange-Plugins, on the VI-Client Toolbar
Click on the Installed tab of the Plugins Manager and check the checkbox to Enable the new SVMotion Plugin, as you see below.
Figure 3: Enabling the SVMotion Plugin
Now that the SVMotion Plugin is installed and enabled, if you right-click on a Cluster, an ESX Server, or a VM guest, all the way at the bottom, you should see Migrate Storage. This tells you that SVMotion is ready to happen when you are ready to test it.
You need to have VMotion configured and working for SVMotion to work. Additionally, there are a ton of caveats about SVMotion in the ESX 3.5 administrator’s guide (page 245) that could cause SVMotion not to work. One final reminder, SVMotion works to move the storage for a VM from a local datastore on an ESX server to a shared datastore (a SAN) and back – SVMotion will not move a VM at all – only the storage for a VM.
How to move the storage for a VMware ESX Guest VM using the SVMotion Plugin (with no downtime)
Now that you have the SVMotion GUI, actually moving the storage of a VMware ESX Server Guest VM, with no downtime for the end users, is quite easy. To do it, in the VI Client, right-click on a cluster, ESX server, or guest VM. Go down to Migrate Storage and you should see a window like this:
Figure 4: Preparing to use VMware ESX Server SVMotion
Depending on what you clicked on (cluster, host, or VM) and how much storage you have, you may have very little in the window or you may have a lot.
In my case, my test VM called “David D Test” is located on the local storage of an ESX Server (called “storage 6b”) connected to an iSCSI and a FC SAN. To move my Virtual machine’s storage (including the VMX files and VMDK files) from the local storage to the shared iSCSI SAN (called “storage”), all I have to do is to drag the VM from where it is to the new storage, like this:
Figure 5: Moving Storage with SVMotion
Then, I click Apply.
Down in my task window, I see the “Relocate Virtual Machine Storage”, like this:
Figure 6: Relocating Virtual Machine Storage
When the process is done, I see “Completed” in the task window and I see that my storage for this VM has moved from the local storage to the shared iSCSI SAN storage. I can see this in the datastore section of the VM resources, below:
Figure 7: Storage for the VM has moved
And, of course, the most amazing thing about all of this is that the virtual guest operating system was powered on this entire time. As you can see from the graphic above, the status still says “powered on”. Because of this and because of how SVMotion works, there was never any downtime for the end users who may have been accessing this virtual guest.
This feature is great for maintenance of server hardware, ESX Server maintenance, maintenance of disk arrays, rearranging storage, and many more applications. Of course, for some of those applications (like maintenance of server hardware) you would also have to perform a VMotion and move the running guest OS to another physical server.
In this article, I provided an overview of VMware’s Storage VMotion, where to find an indispensible SVMotion plugin for the VI Client, and a step by step demonstration of how SVMotion works to move a VMware ESX Guest VM’s storage, from one datastore to another, without any downtime to the end users. In my opinion, SVMotion is an amazing product and its application and adaptation will just continue to grow and grow – making the life of virtualization admins like us easier and easier (I hope).