Prior to vSphere 6.0, in order for multiple Virtual Machines to share a VMFS-backed VMDK, the Multiwriter VMDK flag must be enabled, which is accomplished by adding a specific VM Advanced Setting as shown in this VMware KB 1034165. For customers who were accustomed to this old method, you may have found that this option no longer works. This was true regardless if you had used the vSphere Web/C# Client or the vSphere API to apply the configuration.
To provide for a better user experience, this behavior was changed in vSphere 6.0 and a new API was introduced for enabling and disabling the Multiwriter VMDK flag. In vSphere 6.0, there is now a new sharing attribute on the Virtual Disk backing property which accepts one of two values: sharingMultiWriter or sharingNone for specifying the Multiwriter flag. In my opinion, this is a positive change as we too often rely on the VM Advanced Setting as a generic "catch all" for enabling or configuring various settings versus adding proper APIs to a VM.
Although there is now a proper API which will can help enable new Automation use cases, one thing that was still lacking was an easy way to enable the Multiwriter VMDK flag using the UI. In vSphere 6.0 Update 1, we have now introduced a new UI dropdown option called "sharing" in the vSphere Web Client for configuring the Multiwriter VMDK flag which can be found in the Virtual Disk section when editing a VM as shown in the screenshot below.
Note: The new Sharing property is only available in the vSphere Web Client UI and is not available in the vSphere C# Client. If you need to configure the Multiwriter VMDK flag and do not have access to the vSphere Web Client, you can use the vSphere API to help automate this configuration change.
UPDATE (06/27/16) - Created two scripts which now cover scenarios where VM is online and/or offline.
For those interested in Automating the Multiwriter VMDK flag, I have created two PowerCLI scripts called: configureMultiwriterVMDK.ps1 (offline VM configuration) and addMultiwriterVMDK.ps1 (online VM configuration) which demonstrates this new vSphere API.
The first script configureMultiwriterVMDK.ps1 allows you enable the Multiwriter Flag for an existing VMDK that has already been added to a VM. This operation must be done while the VM is powered off and to use the script you will need to specify the name of the VM as well as the label of the VMDK in which you wish to enable the Multiwriter VMDK flag (e.g. Hard disk 2). Below is an example of running the script.
The second script addMultiwriterVMDK.ps1 allows you to hot-add a new VMDK and enables the Multiwriter Flag to a VM. This operation is done while the VM is powered on which is a common workflow for customers needing to hot-add storage to an existing Cluster solution such as Oracle RAC for example all while the system is running. To use the script, there are a few variables you will need to edit:
- vmName - The name of the VM you wish to perform th operation on
- vmdkFileNamePath - This is the full datastore path to the name of the underlying VMDK. See the script for more information but the syntax will look like "[datastore-name] vm-home-dir/vmdk-name.vmdk"
- diskSizeGB - The capacity of the VMDK to add (GB)
- diskControllerNumber - The SCSI controller number (0-3)
- diskUnitNumber - The Unit number (0-16)
Does this still only support just 8 hosts in v6.0u1?
Jayaraghavendra (Jai) says
Thanks for the scripts, it helped a lot for me.
How can we modify the sharing from multi-writer to no sharing.
I am looking for a disabling the multi-writer flag for the entire VMs and its shared Disks. To facilicate the Storage Migration of the Disks. The vCenter 6.5 does not allow the storage migration if a disk is configured with multi-writer flag.
Thanks in advance
Pual Rhines says
Hi William! Thanks for this better information. I find it very useful for my research. Good Luck.
Vinoth kumar Natarajan says
Thank you very much for sharing this information. this is very much helpful.
The script is not working if the disk type are "Thin Provision" and "Thick Provision Lazy Zeroed" in vCenter server 6.0 build#2559268.
If the disk type is "Thick Provision Eager Zeroed" the script is working perfect.
Any suggestions ?
William Lam says
The Multiwriter VMDK Flag requires that you have a VMDK provisioned EZT (Eager Zeroed Thick), the other types are not supported. Please refer to the KB mentioned for more details
Vinoth kumar Natarajan says
Thank you for your clarification !
this script only work for me with VM power off
I active multi-writer between 2 vms but just write from VMs and can't see another data untill reboot or offline&online Disk.
Can you help me?
I need read & write share with RDM
In 5.5, updating the multi-writer flag was an online change that we could perform via command line. With 6.0 update 1, the server(s) now need to be powered off to make the change. I see this as a negative enhancement for customers running production Oracle RAC databases like myself.
It would be beneficial to enhance the API to allow online multi-writer flag changes again.
The script works for online also.
What happens to existing multi writer flags on VMDKS when you upgrade vcenter 5.1 u3 to vcenter 6 u2.
In 5.5, I could use 'get-advancedsettings' to check the Multi-writer setting, but in 6.0, 'get-advancedsetting' doesn't pull 'multi-writer' settings. Any idea how to get this through PowerCLI? I can see the values remain in vmx file.
Vamshi Meda says
Try This. (get-vm $vm |get-harddisk).extensiondata.backing.sharing
Thanks for the valuable information, but what is the use cases other those mentioned in VMware article. can be used for MSCS across box CAB?
First of all, thanks a lot for the info, it's quite usefull. I have a question: do we still need to change the new disks controller's SCSI bus sharing setting to "Physical".? Or is the method "enabling multiwriter" a substitute?
Thanks in advance!
Why in my vsphere 6.5 did not find this option, My ISO is VMware-VMvisor-Installer-6.5.0-4564106.x86_64-Dell_Customized-A00.iso. Please . 🙂
Mike Kartoon says
Lets say I have main server running on VM1 handling file storage in the datastore.
Lets say I now want to raise (from vSphere API) two VMs and each one to have access only to subset of these files, readonly.
Can this be done in some way?
Stephen McKay says
Does any version of vCloud Director support the multi-writer flag on VMDKs?
Stephen McKay says
In case you have the same question, the answer is "no" - at least as of this writing.
Nitin Subramanian says
Need help on below scenario:
I have used addMultiwriterVMDK.ps1 to create and add multi-writer disk "[Testbed] MWDisk/MWDisk-1.vmdk" to TestMWvm-1.
How can I add the same disk, i.e., "[Testbed] MWDisk/MWDisk-1.vmdk" to TestMWvm-2 (another VM) as a multi writer disk while the VMs are powered on?
how to do for multiple disk for single vm with this script