VM share disk between VMS on VMware

This article is a reference to the blog post by TheItbros as they have slightly wrong steps mentioned. So, I have just corrected and re-posting the blog.

 

How I found it wrong is:

Today, when we configured things following his article, found it’s not working. So we did a lot of troubleshooting and finally found a configuration change is required.

Below are the correct steps to follow.

 

Sharing a VMDK Disk Between Two Virtual Machines on ESXi Hosts

Suppose the shared external storage (connected to each ESXi host using iSCSI or Fiber Channel SAN) has already been presented to all VMWare ESXi 6.5 hosts. These hosts running the two VMs (node1 and node2) you want to add a shared virtual disk. On both virtual machines, you need to add a new SCSI controller.

In the vSphere Client inventory select the first virtual machine (Node 1), and select Actions > Edit Settings.


To add a new virtual device select Add New Device > SCSI controller in the dropdown list, and press the Add button.

Select LSI Logic SAS as a type of SCSI controller. Be sure to create a new SCSI controller, don’t use a default SCSI 0 controller.

Now you need to choose the SCSI Bus Sharing mode:

  • Virtual — if you want to share a virtual disk between VMs on the same ESXi host;
  • Physical — used when you need to share a vmdk file between VMs on different ESXi hosts (if you have multiple ESXi hosts in the VMWare vSphere cluster then you must use this bus sharing mode).

Hint. None mode is used only for non-clustering Multi-writer drives.


Press OK. Next, you need to add a new virtual disk on the first VM (Add New Device > Hard Disk > Add) with the following disk settings:

  • VM Storage Policy: optional;
  • Location: you need to select a shared datastore name that will store the vmdk file;
  • Disk Provisioning: select Thick provision eager zeroed (shared virtual disk cannot be Lazy zeroed thick or thin provisioned. You can use other disk provisioned types if your shared vmdk file is located on the vSAN 6.7 Patch 01 datastore).
    Note. You can convert thick provision lazy zeroed disk to thin;
  • Sharing: Multi-writer;
  • Virtual Device Node: select the SCSI controller created earlier;
  • Disk mode: Independent – Persistent – in this mode, you can’t create snapshots for a virtual drive you want to share.


 


Hint. If you enabled VMWare Fault Tolerance protection for a virtual machine, the multi-write VMDK mode is enabled automatically for virtual disks.

In the same way, you need to add a new SCSI controller to another virtual machine (Node 2). Then you need to add a new disk (Existing Hard Disk) in the settings of the second virtual machine.


Select the VMFS Datastore, which stores the shared vmdk file that you created earlier for the first VM. Select the name of the first virtual machine, and in the middle pane select the desired vmdk file.


Also, you need to select the Sharing mode — Multi-Writer for this disk.

If you want to use more than one shared disk on VMware, keep in mind that each of them doesn’t require the additional SCSI controller. You can connect up to 16 different drives for a single SCSI controller.

Make sure you use the same SCSI device address for a shared vmdk disk on both virtual machines. Therefore, if you added SCSI Controller 1 when creating a SCSI controller, you should select it. For example, if you have a new address SCSI(1:0) on VM (node1) for a new disk (this means the first disk on the second SCSI controller), you should use the same address SCSI(1:0) for the shared disk on the second VM (node2). It is important!


Note. In ESXi versions, before ESXi vSphere 6.0 update 1, the MultiWriter mode for vmdk is also supported, but you cannot enable it from the vSphere Web Client interface. You can add a multi-writer flag by shutting down the VM and manually editing the vmx file of the virtual machine, adding the following line at the end of the file:

SCSI1:0.sharing = “multi-writer”


You can also add this parameter in the VM properties: Options > General > Configuration Parameters: Scsi1:0:sharing “multi-writer”.

After changing the virtual machine’s settings, connect to the console of the guest OS virtual machine. In this case, the VMs running Windows Server, so you can remotely connect to them using RDP. Run the Computer Management console (compmgmt.msc), and expand the Storage > Disk Management section. Right-click and select Rescan Disk.


The system detects the new disk and offers to initialize it. Select the desired partition table (MBR or GPT), create a new partition, and format it. Similar operations must be performed on the second VM. After these settings, both VMs are using a shared disk. Now you can proceed to set up a cluster solution based on Oracle RAC and Microsoft Cluster Services (MSCS).

Note. Keep in mind that using multi-writer VMDKs for non-clustered scenarios is not supported. If the shared VMDK disk is online on both ESXi hosts, you won’t see changes made to the disk by one virtual machine in the other virtual machine. This will happen until you bring the disk offline and then bring it online.

When trying to migrate a VM with a connected vmdk disk in MultiWriter mode, an error will appear:

The virtual machine is configured to use a device that prevents the operation: Device ‘SCSI controller X’ is a SCSI controller engaged in bus-sharing.

To resolve this issue turn off the VM, and perform cold vMotion.

Similarly, you can provide simultaneous access from different VMs to the same raw LUN via Raw Device Mapping (RDM) mode. In this case, the RDM disk is being added to node1 as usual, and when adding a disk to node2 instead of selecting the LUN number, you need to select the mapping VMDK file for the RDM disk on the VMFS Datastore.

Starting from vSphere 6.7 Update 1 you can share a single virtual disk in multi-writer mode on more than 8 hosts simultaneously. This behavior is supported for VMFS5/VMFS6 datastores as well after you enabled the /VMFS3/GBLAllowMW config option.

Configuring Shared Disk in VMware Workstation

You can also create a vmdk disk and share it between two running virtual machines on VMware Workstation. You can use a shared vmdk disk in two or more VMs to test cluster scenarios. This mode only works in the Pro version and is available starting with VMware Workstation 12.

You can create a shared disk in VMware Workstation from the command prompt using the VMware-vdiskmanager.exe utility. Open cmd.exe as an administrator and run the commands:

mkdir SharedVMDK

 

cd SharedVMDK

Create a new 5 GB VMDK disk:

“C:\Program Files (x86)\VMware\VMware Workstation\vmware-vdiskmanager.exe” -c -s 5GB -a lsilogic -t 4 shareddisk01.vmdk

Creating disk ‘shareddisk01.vmdk’

Create: 100% done.

Virtual disk creation successful.


Now you need to add the vmdk file (disk) you created to the first virtual machine. Open the settings of the virtual machine to which you want to add the shared disk: Add > Hard Disk > SCSI disk type > Use an existing virtual disk > select file shareddisk01.vmdk.

In the Converting existing virtual disk to new format window, select Keep Existing Format.


Save your VM settings.

Now select the Hard Disk you added and click the Advanced button. Select the mode Independent > Persistent for the SCSI controller.


Save the VM settings disk. Do not turn on the virtual machine immediately. You need to manually edit the virtual machine configuration file (vmx). Run the command:

Notepad “C:\VHD\ClusterVM1\ClusterVM1.vmx”

Add the following lines to the VMX configuration file:

scsi0.sharedBus = “virtual”

disk.locking = “false”


Save the file.

Now add the shared VMDK file to the second virtual machine in the same way. Edit the VMX file of the second VM and add the same lines.

Start both VMs. When they run, a warning message will appear:

Clustering is not supported for VMware Workstation. This setting will be ignored.


Ignore this message. Now you can set up Windows Server Failover Cluster (WSFC) or Oracle RAC in your virtual machines running on VMware Workstation. The shared VMDK disk will be available in both VMs.

Leave Comment

Your email address will not be published. Required fields are marked *