ѕоддержим в трудное врем€ —пециальное предложение на техническую поддержку вашей »“ - инфраструктуры силами наших экспертов ѕодобрать тариф
ѕоставка оборудовани€ √аранти€ и помощь с настройкой. —кидка дл€ наших читателей по промокоду WIKIMERIONET  упить
»нтерфейс статистики Merion Mertics показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер ѕопробовать бесплатно
¬недрение
офисной телефонии
Ўаг на пути к созданию доступных унифицированных коммуникаций в вашей компании ¬недрить
»нтеграци€ с CRM ѕомогаем навести пор€док с данными
и хранить их в единой экосистеме
ѕодключить
»“ Ѕезопастность ”мна€ информационна€ безопасность дл€ вашего бизнеса «аказать
ћерион Ќетворкс

7 минут чтени€

¬ этой статье мы расскажем как решить проблему с блокировкой файлов в 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 * дл€ идентификации блокировки.