Предупреждение ‘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()
}
Здравствуйте. Спасибо за статью. Помогло.
Интересует вопрос. Я удалил Snapshot. При удалении не поставил галочку «удалить из storage». В результате в хранилище остался VMware virtual disk file (.vmdk) с названием типа server-000002-sesparse (30ГБ). Могу я его удалить, что бы это не повлияло на работу данной VM?
Спасибо.
Извините за долгий ответ. Можно попробовать сделать storage vmotion на другое хранилище. Если sesparse файл останется в исходном каталоге — он лишний (переносятся только связанные файлы).
Также можно открыть vmsd файл на хосте и посмотреть есть ли в нем ссылки на файлы снапшотв.
Здравствуйте!
У меня есть три снапшота виртуальной машины. Сейчас работает третий, последний снапшот. Поздно понял, что снапшоты плодить — это очень плохая практика. Какой правильный вариант убрать все снапшоты так, чтобы в итоге состояние виртуальной машины осталось как сейчас. при работе третьего снапшота?
С уважением,
Денис
Просто удалите все снапшоты. ВМ останется в текущем состоянии.
Спасибо за быстрый ответ!
А ВМ при этом нужно выключать или должна работать?
Не важно 🙂 Но при выключенной ВМ консолидация и удаление снапшотов выполняется быстрее.
По-хорошему, указывать, что это перевод статьи xxx даже картинки их.
Ну вот тут вы не правы. оригинал как раз здесь — там автоматический перевод, причем кривой. Если хоть немного знакомы с английским, увидите множество ляпов.
ps. Удалил ссылку, нечего их пиарить.
Прошу прощения. Смотрел по дате публикации. Вверху слева указано 20.01.2020, я подумал это оно. А вот по комментариям вижу, что ещё в 2018 были отзывы.
Относительно перевода, сперва наткнулся на эту статью, и лишь позже увидел их. Начал было читать, и понял, что уже где-то видел. Поэтому и даже не стал более вникать в их «перевод».
Здравствуйте, возникла небольшая проблема со снапшотами. Veeam Backup хотел сделать резервную копию виртуальной машины но выдал ошибку в процессе работы. В виртуальной машине подключённые HDD заканчиваются на 000001 но в Snaphot Manager нет никаких снапшотов. Место на datastore заканчивается но новые диски с 000001 растут понемножку в объёме. И вот вопрос когда закончиться место на datastore виртуалки не запустятся как можно удалить эти снапшоты но так чтоб потом можно было запустить виртуалки. Поменять в настойках VM путь к нормальных дискам без 00001 но тогда навернека не будет видно последних изменений?
Из вашего описания не понятно, остался ли снапшот для ВМ или нет. Судя по всему снапшот все таки есть.
Я бы начал с ручного просмотра конфигурационного vmx файла ВМ и vmdk файлов дисков, по ним можно понять, есть ли цепочка снапшотов.
Снапшоты однозначно нужно удалять до того, как у вас кончилось место на диске (откатывать или сливать, решайте сами). Иначе могут быть проблемы.
Начните с базовой статьи про снапшоты vmware: _https://kb.vmware.com/s/article/1015180
Вышеописанные способы не помогли(
Мне помогло:
1) Выключить VM;
2) Удалить ее из перечня (Remuve from Inventory);
3) Зарегистрировать ее повторно (зайти через vCenter в папку с VM; найти файл с расширением VMX и зарегистрировать);
4) Повторить консолидацию.
Спасибо! Мне помогло.
Ещё иногда бывает ситуация, что софт для бэкапирования (напр. Veeam) при использовании выделенной виртуалки с ролью VMware backup proxy (либо если бэкап-сервер сам стоит на виртуализации) может «забыть» отцепить от себя диск с бэкапируемой виртуалки, который он использует для оптимизации доставки трафика на сервер бэкапов.
В этом случае не поможет ни выключение VM, ни перерегистрация, ни перезапуск сервисов на хосте — только ручное отключение диска от прокси-виртуалки.