Исправляем ошибку: Virtual Machine disks consolidation is needed

Исправляем ошибку: Virtual Machine disks consolidation is needed

Предупреждение ‘Virtual Machine disks consolidation is needed’ на вкладке Summary виртуальной машины в консоли VMWare vSphere Client означает, что при удалении снапшотов (операция Delete или Delete All) на диске остались файлы, которые не удалось слить (commit) с основным файлом виртуального диска (vmdk). В результате вы не можете выполнить резервное копирование такой виртуальной машины, а ее производительность сильно деградирует.

ошибка в консоли vmware: Virtual Machine disks consolidation is needed.

Virtual machine Consolidation Needed status.
Virtual Machine disks consolidation is needed.

Самые распространённые причины появления ошибки consolidation is needed:

  • Плохая производительность дискового хранилища, из-за которого удаление/консолидация снапшотов отваливаются по таймауту или большого размера снапшота;
  • На VMFS хранилище недостаточно места для выполнения консолидации, должно быть свободно не менее 1 Гб (см. как расширить VMFS в VMware ESXi);
  • Файлы снапшотов заблокированы vSphere или сторонним приложением (как правило это приложение резервного копирования, HP DataPtotector, Veeam или Netapp VSC). Убедитесь, что отсутствует запушенные процессы резервного копирования виртуальной машины;

    Проблема может быть вызвана добавлением дисков ВМ (hot-add) в апплайенс резевного копирования при выполнении бэкапов. В некоторых случаях нужно вручную отключить диски проблемных ВМ в настройках апплайенса резервного копирования (встречается в Veeam Backup Proxy, Symantec NetBackup и CommVault Media Agent).

  • У ВМ более 32 снапшотов (максимальное количество, рекомендуемое VMware);
  • Идет консолидация больший снапшотов;
  • Проблемы с потерей подключения (возможно временные) между серверов vCenter и хостом ESXi.

Как выполнить консолидацию дисков в VMware?

Для исправления ошибки «Virtual machine Consolidation Needed status» необходимо щелкнуть ПКМ по виртуальной машине и выбрать в меню пункт Actions -> Snapshots -> Consolidate.

vmware esxi запустить консолидацию vmdk

Появится окно с запросом:

Confirm Consolidate
This operation consolidates all redundant redo logs on your virtual machine. Are you sure you want to continue?

подтвердите запуск консолидации и удаление избыточных логовzapusk-konsolidacii

Подтвердите удаление избыточных логов. После этого vCenter выполнит консолидацию дисков и очистку логов. Процесс консолидации может идти долго в зависимости от размера ВМ, количества снапшотов и текущей нагрузки. Во время выполнения консолидации производительность ВМ может ухудшиться. Дождитесь окончания выполнения задания Consolidate virtual machine disk files и очистки логов.

выполняется задание запуск консолидации виртуальных дисков vmware

При выполнении консолидации данные из дельта дисков сливаются с основным диском и лишние файлы на хранилище удаляются. После этого предупреждение о необходимости консолидации ВМ исчезнет.

Ошибки блокировки файлов при консолидации дисков VMware

В некоторых случая при выполнении консолидации в консоли vSphere может появится ошибка:

Unable to access file since it is locked. An error occurred while consolidating disks: Failed to lock the file. Consolidation failed for disk node ‘scsi0:0’: Failed to lock the file.

Или

Consolidate virtual machine disk files - Unable to access file since it is locked.

An error occurred while consolidating disks: Failed to lock the file

VMware в этом случае рекомендует выполнить перезапуск агентов Management agents на сервере ESXi. Для этого нужно подключиться к хосту ESXi по SSH и выполнить команду:

services.sh restart

services.sh restart перезапуск Management agents

Если это не помогло, проверьте кто заблокировал файлы виртуальной машины.

  1. Перейдите в каталог ВМ на VMFS хранилище:
    # cd /vmfs/volumes/xxxxxx-xxxxxx-xxxx-xxxxxxx/VM_NAME
  2. Выведите список заблокированных файлов ВМ и какие хосты ESXi держат данные файлы:
    # for i in `ls`; do vmfsfilelockinfo -p $i ;done|grep 'is locked in|Host owning the lock|Total time taken' | sed 's|Host owning the lock on file is||g'|sed 's|Total time|---|g' | awk '{print $1}' |uniq
  3. Предыдущая команда вернёт примерно такой результат:
    ---
    "VM_NAME-df23cba2.vswp"
    esxi1,
    ---
    "VM_NAME-flat.vmdk"
    esxi2,
    esxi1
  4. В данном примере видно, что файл VM_NAME-flat.vmdk заблокирован сразу двумя хостами. Чтобы снять блокировку файла вторым хостом, подключитесь к esxi2 по SSH и выполните команды:
    /etc/init.d/hostd restart
    /etc/init.d/vpxa restart
  5. Еще раз запустите консолидацию из интерфейса vSphere Client.

Однако вы можете попробовать разблокировать файлы виртуальной машины так:

  1. Выключите виртуальную машины (если возможно);
  2. Создайте новый снапшот;
  3. Удалите все снапшоты ВМ с помощью пункта «Delete All Snapshots»;
  4. Переместите ВМ на другой ESXi с помощью vMotion;
  5. Попробуйте выполнить консолидацию снапшотов как указано выше.

виртуальная машина vmware удалить все снапшоты

Если опция Consolidate не активна в меню (серая кнопка), а в хранилище все еще находится большое количество дельта файлов снапшотов, скорее всего нарушена целостность цепочки снапшотов (ошибка Unable to enumerate all disks).

кнопка consolidate snapshot не активна

Попробуйте вручную удалить ВМ из списка (Remove from Inventory) и зарегистрировать VMX файла виртуальной машины из Datastore Browser. Если это не помогло, проверьте и исправьте ошибки в цепочке снапшотов как описано в статье “
The parent virtual disk has been modified since the child was created
” (https://kb.vmware.com/s/article/1007969).

Консолидация снапшотов ВМ VMware с помощью PowerCLI

Вы можете найти все виртуальные машины VMware, которые требуют консолидации с помощью PowerCLI (специальный модуь PowerShell для управления инфраструктурой VMware). Для этого подключитесь к своему серверу vCenter (или хосту ESXi):

Connect-VIServer vsphere.winitpro.ru

Чтобы получить список всех ВМ со статусом «Virtual machine disks consolidation is needed»:

Get-VM | Where-Object {$_.Extensiondata.Runtime.ConsolidationNeeded}

Теперь можно выполнить консолидацию дисков всех полученных ВМ:

Get-VM | Where-Object {$_.Extensiondata.Runtime.ConsolidationNeeded} | foreach {$_.ExtensionData.ConsolidateVMDisks_Task()}

PowerCLI выполнить консолидацию ConsolidateVMDisks_Task

Можно выполнить автоматическую консолидацию снапшотов ВМ старше 30 дней с помощью такого PowerShell скрипта:

$VMName = Get-VM | Get-Snapshot |
Where {$_.Created -lt (Get-Date).AddDays(-30)} | select VM |
ForEach-Object {
$VMName.ExtensionData.ConsolidateVMDisks()
}

VMware
Исправляем ошибку: Virtual Machine disks consolidation is needed