img

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

21 ноября
20:00
Бесплатный вебинар
Введение в Docker
Ведущий — Филипп Игнатенко.
Руководитель центра разработки
Записаться
img
img

В этой статье мы расскажем как решить проблему с блокировкой файлов в 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

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

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

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

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

  1. Чтобы найти блокирующий узел, запустите утилиту vmfsfilelockinfo с узла, который не может открыть заблокированный файл.
  2. Чтобы узнать 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)
  3. Чтобы узнать название процесса, который заблокировал файл, запустите команду 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

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

  1. Машину, которая не включается, переместите на заблокировавший хост и снова попробуйте включить ее.
  2. Чтобы снять блокировку, извлеките 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 * для идентификации блокировки.

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
Системное администрирование
Скидка 10%
Администратор Linux
Стань Linux администратором и сделай весомый шаг в сторону карьеры в DevOps. Самые важные знания от сертифицированного и практикующего тренера с 20 летним стажем
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Fail2ban — это программное обеспечение, которое защищает ваш сервер от атак. ПО отслеживает журналы сервера и выявляет любую под
img
Виртуализация серверов — популярная тема в мире ИТ, особенно на уровне предприятий. Она позволяет разным операционным системам з
img
  Введение Системные вызовы выступают в роли посредников между приложениями и ядром. Они создают уровень абстракции, который защ
img
  Введение SWAP (SWAP-память или SWAP-пространство) – это раздел жесткого диска или SSD компьютера, где операционная система (ОС
img
  Введение Абсолютные и относительные пути определяют расположение файла или каталога в файловой системе. Это набор инструкций д
img
  Введение Файлы конфигурации Linux определяют поведение и функциональное наполнение операционной системы. Файлы конфигурации –
21 ноября
20:00
Бесплатный вебинар
Введение в Docker