vSAN host fails to enter Maintenance Mode with "Full data migration" when decommissioning nodes from a 6-node vSAN cluster
search cancel

vSAN host fails to enter Maintenance Mode with "Full data migration" when decommissioning nodes from a 6-node vSAN cluster

book

Article ID: 425768

calendar_today

Updated On:

Products

VMware vSAN 7.x VMware vSAN 8.x

Issue/Introduction

Symptoms:

  • In a 6-node vSAN cluster where virtual machines are governed by a RAID 6 (Erasure Coding) Failure to Tolerate (FTT=2) policy, administrators are unable to decommission hosts.
  • Attempting to place a host into Maintenance Mode with the Full data migration option fails.
    Error: "The host cannot enter maintenance mode. 1 more standalone host is required."
    The objective is to reduce the cluster size from 6 nodes to 4 nodes.

Environment

  • VMware vSAN 7.x
  • VMware vSAN 8.x

Cause

  • The issue is caused by a violation of the vSAN Storage Policy availability requirements.
  • RAID 6 (FTT=2) requires a minimum of 6 functional hosts to maintain data redundancy and object compliance.
  • When a 6-node cluster attempts to evacuate data to decommission a node, the remaining 5 nodes cannot satisfy the 6-node requirement for RAID 6 objects even if VMDK policies are updated, vSAN Swap objects often remain pinned to the original RAID 6 policy, blocking the evacuation pre-check.

Resolution

When storage policies cannot be updated through vCenter or are restricted for certain objects such as Swap objects, non-compliant object policies can be updated directly from the ESXi command line.

1. Update Virtual Machine Storage Policy

  1. Log in to the vSphere Client.
  2. Navigate to the affected Virtual Machine.
  3. Modify the VM Storage Policy from RAID 6 to RAID 1 or RAID 5, depending on your environment requirements.
  4. Apply the policy change.
  5. Monitor the Reconfigure/Resync tasks and wait until they are completed.

2. Update Non-Compliant Swap or Namespace Objects via ESXi CLI

If objects (specifically Swap or Namespace) remain on RAID 6, use the ESXi command line to force the policy change without powering off the VMs:

1. Identify the UUID of the non-compliant object

esxcli vsan debug object list -u <UUID>

2. Manually set the policy to FTT=1 using the objtool

/usr/lib/vmware/osfs/bin/objtool setPolicy -u <UUID> -p '(("hostFailuresToTolerate" i1))'

3. Update Manual Swap Objects

In cases where the vCenter server is inaccessible or the policy cannot be changed via the UI, use the following command to set the policy to FTT=1 (RAID-5):

  1. Identify the UUID of the object.
  2. Run the following command to apply the complete policy string:

    /usr/lib/vmware/osfs/bin/objtool setPolicy -u <UUID> -p "((\"stripeWidth\" i1) (\"cacheReservation\" i0) (\"proportionalCapacity\" i0) (\"hostFailuresToTolerate\" i1) (\"forceProvisioning\" i0) (\"replicaPreference\" \"Capacity\") (\"iopsLimit\" i0) (\"checksumDisabled\" i0))"