Найти тему
Merion Academy

Блокировка файлов виртуальной машины на ESXi

Оглавление

Привет! С вами снова Merion Academy - платформа доступного IT образования.

В этой статье мы расскажем как решить проблему с блокировкой файлов в ESXi.

 Блокировка файлов виртуальной машины на ESXi
Блокировка файлов виртуальной машины на ESXi

Проблема

  • Появляется ошибка при добавлении диска имеющейся виртуальной машины (VMDK) к виртуальной машине, которая не включается: Failed to add disk scsi0:1. Failed to power on scsi0:1
  • Включение виртуальной машины зависает на 95%.
  • Не удается включить виртуальную машину после развертывания ее из шаблона.
  • Включение виртуальной машины выдает ошибки доступа к файлам, конфигурации виртуальной машины, или файла подкачки: Unable to open Swap File Unable to access a file since it is locked Unable to access a file [filename] since it is locked Unable to access Virtual machine configuration
  • В записях журнала появляются похожие записи: WARNING: World: VM xxxx: xxx: Failed to open swap file [path]: Lock was not free WARNING: World: VM xxxx: xxx: Failed to initialize swap file [path]
  • При открытии консоли для виртуальной машины может возникнуть ошибка: Error connecting to [path][virtual machine].vmx because the VMX is not started
  • Виртуальная машина сообщает о конфликтных состояниях питания между центральным сервером управления vCenter Server и пользовательским интерфейсом ESXi хост.
  • При открытии файла .vmx с помощью текстового редактора (например, cat или vi) появляются похожие записи: cat: can't open '[name of vm].vmx': Invalid argument

Решение

Цель блокировки файлов

Для предотвращения непредвиденных изменений в ценные системные файлы и файлы виртуальной машины, их необходимо заблокировать. В определенных обстоятельствах блокировка сохраняется, даже с выключенной виртуальной машиной. Таким образом, другие ESXi хосты не смогут получить доступ к заблокированным файлам, даже если виртуальная машина не запускается.

Файлы виртуальной машины, заблокированные во время выполнения, включают в себя:

  • VMNAME.vswp
  • DISKNAME-flat.vmdk
  • DISKNAME-ITERATION-delta.vmdk
  • VMNAME.vmx
  • VMNAME.vmxf
  • vmware.log

Быстрый первичный тест

  • Поставьте DRS (Планировщик Распределения Ресурсов) в режим обслуживания. С его помощью вы сможете выбрать хост, пока вы включаете виртуальную машину. Если DRS не используется, передайте ВМ другому хосту.
  • Если это не удается, попробуйте включить питание виртуальной машины на других узлах кластера.
  • Машина должна включиться, когда она окажется на узле, который заблокировал файлы.
  • Если ВМ по-прежнему не включается, рассмотрите действия, предложенные ниже.

Действия по устранению неполадок: поиск хоста заблокированного файла

Чтобы определить заблокированный файл, попробуйте включить виртуальную машину. Во время включения питания ошибка может отображаться или записываться в журналы виртуальной машины. Ошибка и запись в журнале идентифицируют виртуальную машину и файлы:

  • Чтобы найти блокирующий узел, запустите утилиту vmfsfilelockinfo с узла, который не может открыть заблокированный файл.
  • Чтобы узнать IP-адрес хоста, который заблокировал файлы, необходимо запустить утилиту vmfsfilelockinfo для файла VMDK flat, delta или sesparse для VMFS или для файла .UUID. lck для vSAN. Утилита vmfsfilelockinfo потребует следующий материал:
  • Заблокированный файл
  • Имя пользователя и пароль для доступа к VMware vCenter Server (при отслеживании MAC-адреса хостом ESX.)
  • Например:
    Запустите команду: ~ # vmfsfilelockinfo -p /vmfs/volumes/iscsi-lefthand-2/VM1/VM1_1-000001-delta.vmdk -v 192.168.1.10 -u administrator@vsphere.local
    Результат будет приблизительно такой: vmfsflelockinfo Version 1.0 Looking for lock owners on "VM1_1-000001-delta.vmdk" "VM1_1-000001-delta.vmdk" is locked in Exclusive mode by host having mac address ['xx:xx:xx:xx:xx:xx'] Trying to make use of Fault Domain Manager ---------------------------------------------------------------------- Found 0 ESX hosts using Fault Domain Manager. ---------------------------------------------------------------------- Could not get information from Fault domain manager Connecting to 192.168.1.10 with user administrator@vsphere.local Password: xXxXxXxXxXx ---------------------------------------------------------------------- Found 3 ESX hosts from Virtual Center Server. ---------------------------------------------------------------------- Searching on Host 192.168.1.178 Searching on Host 192.168.1.179 Searching on Host 192.168.1.180 MAC Address : xx:xx:xx:xx:xx:xx Host owning the lock on the vmdk is 192.168.1.180, lockMode : Exclusive Total time taken : 0.27 seconds.
    Примечание: в течение жизненного цикла работающей виртуальной машины ее файлы могут менять тип блокировки. Вид блокировки (mode) обозначает тип блокировки на файле. Список видов блокировки:
  • mode 0 = отсутствие блокировки
  • mode 1 = эксклюзивная блокировка (файл vmx работающей виртуальной машины, использует VMDK-диск (flat or delta), *vswp и т.д.)
  • mode 2 = блокировка «только для чтения» (read-only). (Например, для файла данных flat.vmdk работающей машины со снапшотами)
  • mode 3 = блокировка для одновременной записи с нескольких хостов (например, используется для кластеров MSCS или FTVMs)
  • Чтобы узнать название процесса, который заблокировал файл, запустите команду lsof на хосте, заблокировавшем файл, и укажите название нужного файла: ~ # lsof | egrep 'Cartel|VM1_1-000001-delta.vmdk'
    Результат будет приблизительно такой: Cartel | World name | Type | fd | Description 36202 vmx FILE 80 /vmfs/volumes/556ce175-7f7bed3f-eb72-000c2998c47d/VM1/VM1_1-000001-delta.vmdk
    Из результата вы узнаете
    Cartel ID заблокировавшей машины – например, 36202. Теперь, с помощью следующей команды, выведете на экран список активных Cartel ID: ~ # esxcli vm process list
    Информация активных виртуальных машин сгруппирована по названиям машин. Формат приблизительно такой: Alternate_VM27 World ID: 36205 Process ID: 0 VMX Cartel ID: 36202 UUID: 56 4d bd a1 1d 10 98 0f-c1 41 85 ea a9 dc 9f bf Display Name: Alternate_VM27 Config File: /vmfs/volumes/556ce175-7f7bed3f-eb72-000c2998c47d/Alternate_VM27/Alternate_VM27.vmx ………
    Найдя нужный вам VMX Cartel ID, вы узнаете название машины, заблокировавшей ваш файл. Если никакие процессы не отображаются, можете найти виртуальные машины с подключенным vmdk. Замените VMDKS_TO_LOOK_FOR на необходимый vmdk. В результате будет список всех зарегистрированных виртуальных машин, и VMDK отобразится под виртуальной машиной, которая заблокировала файл: for i in $(vim-cmd vmsvc/getallvms | grep -v Vmid | awk -F "/" '{print $2}' | awk '{print $1}'); do echo $i && find ./ -iname $i | xargs grep vmdk | grep -Ei VMDKS_TO_LOOK_FOR ; done

Снятие блокировки

  • Машину, которая не включается, переместите на заблокировавший хост и снова попробуйте включить ее.
  • Чтобы снять блокировку, извлеките VMDK-диск или выключите машину, которая удерживает блокировку.
  • Перезагрузите хост, который заблокировал файл.
  • Обратитесь к VMware storage team, vSAN team или разработчику NFS за дальнейшей помощью, так как проблемы с метаданными могут мешать управлению блокировками.

Снятие блокировки .lck file (только для NFS)

Файлы на виртуальной машине могут быть заблокированы через NFS storage. Такие файлы заканчиваются на .lck-#### (где #### - значение поля fileid, которое можно получить из запроса GETATTR для заблокированного файла).

Внимание: для безопасного извлечения файлов машина должна быть выключена.
Примечание: Тома VMFS не имеют .lck файлов. Механизм блокировки для томов VMFS расположен в метаданных тома VMFS.

Проверка целостности файла конфигурации виртуальной машины (.vmx)

Если виртуальная машина не включается, причина может быть в наличие двух дисков в файле .vmx. Извлеките один из дисков и попробуйте включить машину снова.

Команда touch *, которая раньше использовалась для устранения неполадок с заблокированными снапшотами vmdk, теперь записывает время последнего изменения файла, который должен быть остановлен и запущен с помощью vmkfstools-D или chmod-s * или vmfsfilelockinfo * для идентификации блокировки.

--
До встречи на нашей образовательной платформе.
Merion Academy - платформа доступного IT образования.