Предупреждение ‘Virtual Machine disks consolidation is needed’ на вкладке Summary виртуальной машины в консоли VMWare vSphere Client означает, что при удалении снапшотов (операция Delete или Delete All) на диске остались файлы, которые не удалось слить (commit) с основным файлом виртуального диска (vmdk). В результате вы не можете выполнить резервное копирование такой виртуальной машины, а ее производительность сильно деградирует.
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.
Появится окно с запросом:
Confirm Consolidate This operation consolidates all redundant redo logs on your virtual machine. Are you sure you want to continue?
Подтвердите удаление избыточных логов. После этого vCenter выполнит консолидацию дисков и очистку логов. Процесс консолидации может идти долго в зависимости от размера ВМ, количества снапшотов и текущей нагрузки. Во время выполнения консолидации производительность ВМ может ухудшиться. Дождитесь окончания выполнения задания Consolidate virtual machine disk files и очистки логов.
При выполнении консолидации данные из дельта дисков сливаются с основным диском и лишние файлы на хранилище удаляются. После этого предупреждение о необходимости консолидации ВМ исчезнет.
Ошибки блокировки файлов при консолидации дисков 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.
VMware в этом случае рекомендует выполнить перезапуск агентов Management agents на сервере ESXi. Для этого нужно подключиться к хосту ESXi по SSH и выполнить команду:
services.sh restart
Если это не помогло, проверьте кто заблокировал файлы виртуальной машины.
- Перейдите в каталог ВМ на VMFS хранилище:
# cd /vmfs/volumes/xxxxxx-xxxxxx-xxxx-xxxxxxx/VM_NAME
- Выведите список заблокированных файлов ВМ и какие хосты 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
- Предыдущая команда вернёт примерно такой результат:
--- "VM_NAME-df23cba2.vswp" esxi1, --- "VM_NAME-flat.vmdk" esxi2, esxi1
- В данном примере видно, что файл VM_NAME-flat.vmdk заблокирован сразу двумя хостами. Чтобы снять блокировку файла вторым хостом, подключитесь к esxi2 по SSH и выполните команды:
/etc/init.d/hostd restart
/etc/init.d/vpxa restart - Еще раз запустите консолидацию из интерфейса vSphere Client.
Однако вы можете попробовать разблокировать файлы виртуальной машины так:
- Выключите виртуальную машины (если возможно);
- Создайте новый снапшот;
- Удалите все снапшоты ВМ с помощью пункта «Delete All Snapshots»;
- Переместите ВМ на другой ESXi с помощью vMotion;
- Попробуйте выполнить консолидацию снапшотов как указано выше.
Если опция Consolidate не активна в меню (серая кнопка), а в хранилище все еще находится большое количество дельта файлов снапшотов, скорее всего нарушена целостность цепочки снапшотов (ошибка Unable to enumerate all disks).
Попробуйте вручную удалить ВМ из списка (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()}
Можно выполнить автоматическую консолидацию снапшотов ВМ старше 30 дней с помощью такого PowerShell скрипта:
$VMName = Get-VM | Get-Snapshot |
Where {$_.Created -lt (Get-Date).AddDays(-30)} | select VM |
ForEach-Object {
$VMName.ExtensionData.ConsolidateVMDisks()
}