VMWare: необходима консолидация дисков виртуальных машин
Предупреждение «Необходима консолидация дисков виртуальной машины» на вкладке «Сводка» виртуальной машины в консоли VMware vSphere Client означает, что при удалении снимков (с использованием параметров «Удалить» или «Удалить все») остались файлы. на диске, который не удалось объединить (зафиксировать) с основным файлом виртуального диска (vmdk). В результате вы не сможете выполнить резервное копирование такой виртуальной машины, и ее производительность ухудшится.
Virtual machine Consolidation Needed status.
Virtual Machine disks consolidation is needed.Наиболее типичными причинами ошибки «Необходима консолидация дисков виртуальной машины» являются:
Низкая производительность хранилища, из-за которой снимки невозможно удалить/объединить из-за таймаута или большого размера снимка;
В хранилище данных VMFS недостаточно свободного места для выполнения консолидации, должно быть не менее 1 ГБ свободного места (см. как увеличить емкость хранилища данных VMFS в VMware ESXi);
-
Файлы моментальных снимков блокируются vSphere или сторонним приложением (обычно приложением резервного копирования, например HP DataPtotector, Veeam или Netapp VSC). Убедитесь, что не запущены процессы резервного копирования ВМ;
Проблема может быть вызвана добавлением дисков виртуальной машины (горячее добавление) к устройству резервного копирования при выполнении резервного копирования. В некоторых случаях необходимо вручную отключить виртуальные диски проблемных ВМ в настройках устройства резервного копирования (это происходит в Veeam Backup Proxy, Symantec NetBackup и CommVault Media Agent).
ВМ имеет более 32 снимков (максимальное количество, рекомендованное VMware);
Запущен фоновый процесс консолидации больших снимков;
Проблемы с подключением (возможно, временные) между сервером vCenter и хостом ESXi.
Как объединить диски в VMware?
Чтобы исправить ошибку «Требуется консолидация виртуальной машины», щелкните правой кнопкой мыши виртуальную машину и выберите VM -> Действия -> Снимки -> Объединить.
Появится окно со следующим запросом:
Confirm Consolidate
This operation consolidates all redundant redo logs on your virtual machine. Are you sure you want to continue?Подтвердите, что вы хотите удалить избыточные журналы. Затем vCenter объединит диски и очистит журналы. Процесс консолидации может занять много времени в зависимости от размера виртуальной машины, количества снимков и текущей нагрузки хоста/хранилища данных. Во время консолидации производительность виртуальной машины может ухудшиться. Дождитесь завершения задачи «Объединить файлы диска виртуальной машины».
При выполнении консолидации данные с дельта-дисков объединяются с основным диском и удаляются ненужные файлы из хранилища. После этого предупреждение об объединении ВМ исчезнет.
Ошибки блокировки файлов консолидации дисков
В некоторых случаях при выполнении консолидации вы можете увидеть эту ошибку в консоли 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 рекомендует перезапустить агенты управления на сервере ESXi. Для этого подключитесь к хосту ESXi через SSH и выполните следующую команду:
services.sh restartЕсли это не помогло, проверьте, кто заблокировал файлы виртуальной машины.
Перейдите в каталог виртуальной машины в хранилище данных VMFS:
# cd /vmfs/volumes/xxxxxx-xxxxxx-xxxx-xxxxxxx/WINSRV1Перечислите заблокированные файлы виртуальных машин и укажите, какие хосты 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-
Предыдущая команда вернет что-то вроде этого:
--- "WINSRV1-bf11abd3.vswp" Esxi01, --- "WINSRV1-flat.vmdk" Esxi02, Esxi01 В этом примере вы можете видеть, что файл WINSRV1-flat.vmdk заблокирован двумя хостами. Чтобы снять блокировку файла со второго хоста, подключитесь к Esxi02 через SSH и выполните команды:
# /etc/init.d/hostd restart # /etc/init.d/vpxa restartЗапустите консолидацию из интерфейса клиента vSphere.
Также вы можете попробовать разблокировать файлы ВМ следующим образом:
Выключите виртуальную машину, если это возможно;
Создайте новый снимок;
Удалите все снимки виртуальных машин, используя опцию «Удалить все»;
Переместите работающую ВМ на другой ESXi с помощью vMotion;
Попробуйте объединить снимки, как описано выше.
Если опция «Объединить» в меню виртуальной машины неактивна (кнопка неактивна), а в хранилище данных все еще имеется большое количество файлов дельта-снимков, скорее всего целостность цепочки снимков нарушена (ошибка:
Unable to enumerate all disks).
Попробуйте вручную удалить виртуальную машину из списка (Удалить из инвентаря) и перерегистрировать VMX-файл виртуальной машины в браузере хранилища данных. Если это не помогло, проверьте и исправьте ошибки в цепочке снимков, как описано здесь:
The parent virtual disk has been modified since the child was created(https://kb.vmware.com/s/article/1007969).
Консолидация снимков виртуальной машины с помощью PowerCLI
Найти все виртуальные машины, требующие консолидации, можно с помощью PowerCLI (этот модуль позволяет управлять инфраструктурой VMware). Для этого подключитесь к вашему серверу vCenter или хосту ESXi:
Connect-VIServer mun_vsphere.active-directory.ruПолучите список всех ВМ со статусом «Необходима консолидация дисков виртуальных машин»:
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()
}







