Исправляем ошибку: 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._x000D_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_x000D_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. Предыдущая команда вернёт примерно такой результат:
    ---_x000D_"VM_NAME-df23cba2.vswp"_x000D_esxi1,_x000D_---_x000D_"VM_NAME-flat.vmdk"_x000D_esxi2,_x000D_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.remontka.com

Чтобы получить список всех ВМ со статусом «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()
}

EnglishRussianUkrainian