Total Pageviews

My YouTube Channel

Friday, 7 September 2012

Disabling simultaneous write protection provided by VMFS using the multi-writer flag


VMFS is a clustered file system that disables (by default) multiple virtual machines from opening and writing to the same virtual disk ( .vmdk file). This prevents more than one virtual machine from inadvertently accessing the same .vmdk file.
The multi-writer option allows VMFS-backed disks to be shared by multiple virtual machines. This option is used to support VMware fault tolerance, which allows a primary virtual machine and a standby virtual machine to simultaneously access a .vmdkfile.
It is possible to use this option to disable the protection for certain cluster-aware applications where the applications ensure that writes originating from two or more different VMs will not cause data loss. This document describes the steps that need to be taken to modify the flag for a virtual disk.
Caution: Be careful when you disable this protection. This change might cause data corruption in cases where the applications in the virtual machine do not maintain consistency in the writes performed to the shared disk.
Use cases:
  • VMware FT relies on VMware vLockstep technology to establish and maintain an active secondary virtual machine that runs in virtual lockstep with the primary virtual machine. The secondary virtual machine resides on a different host and executes exactly the same sequence of virtual (guest) instructions as the primary virtual machine. The multi-writer flag is automatically enabled when you turn on FT in the vSphere Client.
  • Third-party cluster-aware applications where the applications ensure that writes originating from two or more different VMs will not cause data loss. For this case, manually enable the multi-writer flag using the instructions in this article.


Enabling Virtual Disk Sharing

To configure a shared virtual disk by setting the multi-writer flag:
  1. Create a virtual disk to be shared using any acceptable approach. For example, through the vSphere Client:

    1. Create a new disk for a virtual machine on a VMFS data store:

    2. Select Support clustering features such as Fault Tolerance. This creates the new virtual disk in the required format, eager zeroed thick.

      Note: ESXi 5.0 provides Thick Provision Lazy Zeroed, Thick Provision Eager Zeroed, and Thin Provision options under Disk Provisioning. Be sure to select Thick Provision Eager Zeroed. Also, note that the documentation may refer to this as Flat pre-initialized.

    3. Choose the appropriate Virtual Device Node setting, such as SCSI (1:0). Make a note of it, as it is required later.

      Note: There are command-line alternatives to perform the previous operation, but this instruction is beyond the scope of this article.
  2. Add the multi-writer flag to configure sharing. There are two ways to achieve this:

    Note: Do not change the SCSI Controller's SCSI Bus Sharing options. Keep the default selection, None.

    1. Power off the virtual machine and the . vmx file that defines the virtual machine. Add entries like this:

      scsiX:Y.sharing = "multi-writer"
      where X is the controller ID and Y is the disk ID on that controller. The setting screen of a virtual machine shows these values.

      Add this setting for each virtual disk that you want to share. For example, to share four disks, the configuration file entries look like this:

      scsi1:0.sharing = "multi-writer"
      scsi1:1.sharing = "multi-writer"
      scsi1:2.sharing = "multi-writer"
      scsi1:3.sharing = "multi-writer"
      Now save the .vmx file and power on the virtual machine.
    2. In the vSphere Client, go to Edit Settings > Options > Advanced > General > Configuration Parameters. Add rows for each of the shared disks and set their value to multi-writer.


  3. Add this disk to another virtual machine:

    1. In the vSphere Client inventory, right-click the virtual machine and click Edit Settings.
    2. Click the Hardware tab and click Add.
    3. Select Hard Disk and click Next.
    4. Select Use an Existing Virtual Disk.

      Note: You do not need to create a disk because the disk is already created.
  4. Enable sharing on this virtual machine, using one of the approaches listed in step 2.