Виртуальные машины в VMware vSphere имеют множество преимуществ. Они работают надежно с высокой производительностью, если используется соответствующее оборудование и правильная конфигурация программного обеспечения. Иногда в клиенте VMware vSphere отображается статус необходима консолидация виртуальных машин, и системному администратору нужно исправить эту ошибку. В этом блоге объясняется, почему требуется консолидация дисков виртуальных машин VMware, и как можно исправить эту ошибку.
Что такое консолидация дисков VMware?
Консолидация виртуальных дисков – это процесс слияния виртуальных дисковых файлов, созданных после создания снимков виртуальных машин. Вы можете запустить консолидацию дисков по требованию, чтобы избежать снижения производительности и других проблем. При создании снимка создаются дельта-диски, и изменения записываются в соответствующий дельта-диск (последний дельта-диск по умолчанию, пока один из предыдущих снимков не выбран для восстановления виртуальной машины). В результате в хранилище виртуальной машины присутствуют избыточные данные, потому что каждый дельта-диск содержит все изменения по сравнению с предыдущим состоянием дельта-диска, и родительский диск остается неизменным.
Когда цепочка снимков и связанных файлов виртуальных дисков становится большой, производительность снижается. При выполнении консолидации дисков VMware данные с дельта-дисков объединяются в один диск, и на хранилище, где находятся файлы этой ВМ, не остается избыточных данных. После консолидации файлов диска виртуальной машины очищается пространство хранения. Помните, что VMware рекомендует использовать не более 32 снимков на ВМ.
Возможные причины ошибки консолидации дисков VMware
Сообщение об ошибке Требуется консолидация дисков виртуальной машины VMware отображается на вкладке “Сводка ВМ” в клиенте VMware vSphere (см. скриншот ниже). Одной из общих причин этого сообщения об ошибке является неправильное удаление снимка ВМ, что может оставить файлы VMDK, связанные со снимками, и файлы журналов на хранилище данных (например, после выполнения вами операции Удалить все или Удалить для снимков ВМ).
Наиболее распространенные причины статуса требуется консолидация виртуальной машины:
- Недостаточно места на диске на хранилище данных VMFS для консолидации снимков ВМ и консолидации файлов виртуальных дисков. Если на хранилище данных есть менее 1 ГБ свободного места, может возникнуть эта ошибка.
- Низкая производительность системы хранения, подключенной к хосту ESXi, на котором работает ВМ. Если размер снимка большой или превышается время ожидания, консолидация снимка может завершиться неудачей.
- Проблемы соединения между хостом ESXi и vCenter.
- Файлы снимков заблокированы сторонним приложением, например, приложением для резервного копирования. Это может произойти, если приложение для резервного копирования не завершило резервное копирование и заблокировало снимок (приложения для резервного копирования могут создавать временный снимок виртуальной машины при выполнении резервного копирования). Приложения для резервного копирования не могут остановить диск без использования техники снимков, чтобы создать согласованную резервную копию работающей ВМ.
В основном, необходимо восстановить согласованность файлов диска ВМ.
Как исправить ошибку?
Чтобы исправить статус необходима консолидация виртуальной машины, щелкните правой кнопкой мыши по имени ВМ в клиенте VMware vSphere, а затем в открывшемся меню выберите Снимки > Консолидация.
A confirmation message is displayed:
Эта операция консолидирует все избыточные журналы повторных операций на вашей виртуальной машине. Вы уверены, что хотите продолжить?
Нажмите Да, чтобы подтвердить и сконсолидировать файлы диска виртуальной машины.
Примечание: Если существует опасение потери данных во время консолидации диска VMware, выполните резервное копирование ВМ VMware, например, скопируйте все файлы ВМ в другую папку на хранилище данных, а затем выполните консолидацию диска VMware.
Дождитесь завершения консолидации диска VMware и очистки журналов. Вы можете отслеживать прогресс задачи в панели задач в нижней части интерфейса клиента VMware vSphere. Если ВМ работает, производительность ВМ может снизиться во время этой операции. Время завершения этой операции зависит от размера ВМ, количества снимков и нагрузки ВМ.
После завершения задачи консолидации диска VMware предупреждение о необходимости консолидации дисков виртуальной машины VMware должно исчезнуть.
Ошибки, которые могут возникнуть
Иногда во время консолидации диска VMware может возникнуть другая ошибка, и появится следующее сообщение об ошибке:
Невозможно получить доступ к файлу, так как он заблокирован. Произошла ошибка во время консолидации дисков: Не удалось заблокировать файл. Консолидация не удалась для узла диска ‘scsi0:0’.
Замки также могут создаваться, когда резервные приложения используют опцию горячего добавления диска для резервного копирования при использовании снимков. Блокировка файла ВМ предназначена для предотвращения одновременной записи в файл несколькими хостами ESXi.
Попробуйте выполнить следующие действия для исправления этой ошибки.
- Перезапустите агенты управления на сервере ESXi, на котором находится ВМ. Откройте консоль ESXi или подключитесь к хосту ESXi через SSH и выполните команду от имени root:
services.sh restart
или
/etc/init.d/hostd restart
/etc/init.d/vpxa restart
Вы также можете открыть прямую консоль ESXi, перейти в Опции устранения неполадок и выбрать Перезапуск агентов управления (нажмите Enter для активации нужной опции, затем нажмите F11 для подтверждения).
- Проверьте заблокированный файл с помощью команды:
vmfsfilelockinfo -p /vmfs/volumes/vm_datastore/vm_name/vm_name.vmx
- Проверьте файл журнала hostd, если вам нужно определить путь на хранилище данных, где находятся файлы ВМ.
cat /var/log/hostd.log |grep -i vm_name
- Перейдите в каталог ВМ на хранилище данных, когда вы знаете местоположение файлов ВМ:
cd /vmfs/volumes/datastore_name/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
- Перезапустите агенты управления ESXi, включая hostd и vpxa, как указано выше, или выполните эти команды на блокирующем файлы ВМ хосте ESXi:
/etc/init.d/hostd restart
/etc/init.d/vpxa restart
Другой метод разблокировки файлов ВМ
Как альтернативу, попробуйте следующие шаги для исправления произошла ошибка при объединении дисков: Не удалось заблокировать файл.
- Выключите виртуальную машину.
- Сделайте новый снимок диска ВМ.
- Удалите все существующие снимки ВМ. Щелкните правой кнопкой мыши по имени ВМ в клиенте vSphere, выберите Снимки, и нажмите Удалить все снимки.
- Клонируйте ВМ или переместите ВМ на другой хост ESXi с помощью vMotion, если ошибка пока не была исправлена.
- Попробуйте снова объединить снимки, как указано выше.
Если эти действия не помогли, попробуйте выключить виртуальную машину, открыть настройки ВМ, выбрать вкладку Параметры ВМ, затем развернуть раздел Дополнительно и нажать Изменить конфигурацию. В окне Параметры конфигурации нажмите Добавить параметры конфигурации. Добавьте параметр asyncConsolidate.forceSync и установите этот параметр в значение TRUE.
Иногда статус требуется консолидация виртуальной машины может быть вызван несогласованными файлами -ctk.vmdk, созданными для отслеживания изменений блока (например, программным обеспечением резервного копирования ВМ). Попробуйте удалить файлы CTK. Они не нужны для консолидации снимков. Не забудьте создать резервную копию файлов ВМ перед удалением файлов CTK. Затем попробуйте снова сконсолидировать файлы диска виртуальной машины.
Параметр “Консолидация” неактивен
Если опция консолидация снимка в VMware серого цвета (неактивна), на ВМ может выполняться активная задача. Если вы видите ошибку «обнаружена недопустимая конфигурация снимка», некоторые снимки могут быть повреждены или имеют разделенные цепочки снимков. В этом случае попробуйте выполнить следующие действия.
- Подключитесь к серверу ESXi через SSH и перейдите в каталог, где находятся файлы ВМ на хранилище данных.
cd vmfs/volumes/ИмяХранилища/ИмяПапкиВМ
Вы можете проверить расположение файлов ВМ в клиенте VMware vSphere и найти расположение виртуальных дисков, просмотрев настройки ВМ.
- Определите, на какие снимки диска указывает команда:
cat VM-name.vmx | grep scsi*
Просмотрите вывод, чтобы проверить виртуальные файлы дисков, включая файлы снимков виртуальных дисков. Например, имя файла виртуального диска отображается в строке. Это не снимок:
scsi 0:0.fileName = “VM-Name.vmdk”
В выводе отображается имя файла снимка виртуального диска, на который вы указываете:
scsi 0:0.fileName = “VM-Name-000002.vmdk”
A SCSI virtual disk controller is used in VM configuration in this example.
- Следующая команда проверяет, на что указывает каждый снимок. Используйте эту команду, чтобы определить, на какой следующий файл диска указывает снимок (файл снимка vmdk или базовый файл диска vmdk) в цепочке снимков.
cat VM-Name-000002.vmdk | grep parentFileNameHint
Возможно, вам придется выполнить эту команду снова для других файлов vmdk (например, VM-Name-000001.vmdk в данном примере), пока вы не найдете нужный базовый диск. Этот метод поможет вам найти несоответствие.
- Если вы обнаружили несоответствие, например, VM-Name-000002.vmdk указывает на VM-Name-000001.vmdk, который указывает на VM-Name.vmdk, выполните команду vmkfstools на наивысшей точке цепочки снимков диска (VM-Name-000002.vmdk в данном случае):
vmkfstools -q -v10 VM-Name-000002.vmdk
Эта команда пытается открыть и закрыть все файлы vmdk в цепочке и уведомляет вас о месте сбоя.
Использование PowerCLI
Как альтернатива к выполнению консолидации диска VMware в графическом интерфейсе пользователя VMware vSphere Client, вы можете использовать vSphere PowerCLI с интерфейсом командной строки.
- Подключитесь к серверу vCenter, который управляет узлом ESXi с ВМ, у которой установлен статус требуется консолидация виртуального диска. Введите учетные данные, когда этот выбор будет предложен.
Connect-VIServer vcenter01.test.com
- Получите список ВМ с установленным статусом требуется консолидация виртуального диска:
Get-VM | Where-Object {$ _. Extensiondata.Runtime.ConsolidationNeeded}
- Выполните консолидацию дисков VMware.
Get-VM | Where-Object {$ . Extensiondata.Runtime.ConsolidationNeeded} | foreach {$ . ExtensionData.ConsolidateVMDisks_Task ()}
Заключение
В этой статье рассматриваются рекомендации, помогающие修正ть статус требуется консолидация виртуального диска. Консолидация дисков виртуальной машины VMware обычно требуется, когда один из снимков поврежден, цепочка снимков несогласована или снимк заблокирован другим узлом ESXi.
Регулярно создавайте резервную копию ВМ в вашей среде VMware vSphere. Если у вас есть резервная копия данных, вы сможете восстановить данные и продолжить работу, если данные были удалены, повреждены, зашифрованы вымогателями или если произошла ошибка во время работы vCenter. Сервер VMware vCenter также следует резервировать, как и другие важные ВМ. Рассмотрите возможность использования NAKIVO Backup & Replication – профессионального продукта для создания резервных копий, поддерживающего резервное копирование виртуальных машин в VMware vSphere.
Source:
https://www.nakivo.com/blog/fix-vmware-error-virtual-machine-disks-consolidation-needed/