vSphere 6.5 and vSphere 6.7 support VMFS6, the new filesystem format of VMware. Migrating from VMFS-5 to VMFS-6 is pretty straightforward and can be easily automated using the PowerCLI command Update-VMFSDatastore.
David Stamen, Technical Marketing Engineer at VMware published a very helpful guide.
Once all of your ESXi hosts that are connected to the VMFS-5 datastore have been upgraded to vSphere 6.5 or vSphere 6.7 you can then proceed with your datastore VMFS6 migration.
Please note that vSphere 6.7 no longer supports VMFS-3. Prior to upgrading your ESXi host you should do an upgrade from VMFS-3 to VMFS-5 or they will be upgraded automatically during the Host upgrade.
Migrating from VMFS-5 to VMFS-6
When we start our migration of our datastore’s to VMFS-6 you may be wondering… Do I need to? What are the benefits? As we can see below graphic there was quite a few enhancements in support for Automatic Space Reclamation, In-Guest Space Reclamation and native support for 4K native storage.
Photo courtesy of David Stamen
You will also see that we have mentioned migrating from VMFS-5 to VMFS-6. Due to the underlying storage changes to support 4K Native storage as well as other features the metadata has changed and the upgrade cannot be done In-Place. The migration requires you to delete the current datastore and re-create. In a later section we will cover how to automate this process.
You can find out more information on vSphere 6.7 Storage enhancements here.
Checking Current VMFS Version
In case you are not sure what VMFS version your datastore is currently running, we can find out with a simple PowerCLI one-liner.
Get-Datastore | Select Name, FileSystemVersion
Here we can see that DS01 is still at VMFS-5 and DS02 has already been upgraded to VMFS-6. In the next section we will target upgrading our datastore to VMFS-6.
Updating VMFS Version
When it comes to migrating to VMFS-6 we have a few methods. A good reference to use is KB2147924, this KB covers the supported methods and ways to update your VMFS version. My colleague Nigel Hickey has covered how to do GUI based upgrades of VMFS. However, when you have many datastore’s it may help to automate this process.
As we reference the above KB it mentions a PowerCLI cmdlet called Update-VMFSDatastore. This is an powerful tool that acts a bit different than your standard PowerCLI cmdlet, it is very verbose and detailed with the checks that it does. However, there are also some considerations to take into account when using it.
A few considerations when using it are as follows:
- Requires use of datastore cluster and have a temporary VMFS-5 datastore of equal or greater capacity.
- Issues storage vMotion requests to the temporary datastore.
- Validates that no unsupported VMs exist on the datastore such as those with SRM, VADP, VRM or Clustering.
- Will temporarily disable Storage DRS and enable once complete.
- If cmdlet fails enabling storage DRS is a manual effort.
- Carefully review the usage of the Resume and Rollback parameters in case of any errors.
So now that we know some things to look out for what does the cmdlet actually do?
- Checks for VADP, SMPFT, MSCS/RAC virtual machines on Source Datastore.
- Makes sure datastore is accessible to all hosts.
- Validates Temporary datastore has sufficient capacity.
- Modifies Storage DRS Automation to manual
- Moves VM and orphaned data from Source to Temp datastore.
- Unmount Source Datastore
- Recreate Source Datastore as VMFS-6
- Moves VM and orphaned data from Temp to Source datastore.
- Restores Original Storage DRS setting.
Now that we understand how it works, lets jump into the usage.
$Source = Get-Datastore "DSS"
$Temp = Get-Datastore "DST"
$Server = (Get-VIServer -Server "vCenter")
Update-VmfsDatastore -Datastore $Source -TemporaryDatastore $Temp -TargetVmfsVersion "6" -Server $Server
It requires very minimal input, we will put in the source datastore, the temporary datastore, vCenter Server and the Target VMFS version.
It is quite simple and if you encounter errors they will be logged and you can rollback using the rollback parameter of if the error can resumed you can use the resume parameter.
You can see more information on the usage of Update-VMFSDatastore at the PowerCLI Reference.
Find the full article here: