При експлуатації віртуальної інфраструктури VMware vSphere іноді трапляється ситуація, коли віртуальну машину можна включити через те, що її який-небудь з її файлів виявляється залоченним. Відбувається це при різних обставинах: невдалої міграції vMotion / Storage vMotion, збої в мережі зберігання та інших.
Найбільш поширена помилка при цьому виглядає так:
Could not power on VM: Lock was not free
Зустрічаються також такі варіації повідомлень і помилок при спробі включення віртуальної машини, яка зависає на 95%:
- Unable to open Swap File
- Unable to access a file since it is locked
- Unable to access a file
since it is locked - Unable to access Virtual machine configuration
Ну а у випадку встановлення з консоллю ВМ виходить ось таке:
Error connecting to
Все це симптоми однієї проблеми - один з наступних файлів ВМ залочений хост-сервером VMware ESXi:
.vswp -flat.vmdk - -delta.vmdk .vmx .vmxf - vmware.log
При цьому залочений файл не той хост ESXi, на якому машина зареєстрована. Тому вирішення проблеми в даному випадку - перемістити ВМ холодної міграцій на той хост, який залочений файл і включити її там, після чого вже можна переносити її куди потрібно. Але як знайти той хост ESXi, який залочений файл? Про це і розповідається нижче.
Пошук залоченним файлу ВМ
Добре якщо в повідомленні при запуску віртуальної машини вам повідомили, який саме з її файлів виявився залоченним (як на малюнку вище). Але так буває не завжди. Потрібно відкрити лог vmware.log, який розташований в папці з віртуальною машиною, і знайти там рядки на кшталт наступних:
Failed to initialize swap file. Lock was not free
Тут видно, що залочений .vswp-файл ВМ.
За балкою на екрані можна стежити командою (запустіть її і включайте ВМ):
Перевірка залоченним файлу ВМ і ідентифікація власника лока
Після того, як залоченний файл знайдений, потрібно визначити його власника. Спочатку спробуємо команду touch, яка перевіряє, чи може б оновлений time stamp файлу, тобто чи можна його залочити, або він вже залочений. Виконуємо наступну команду:
Якщо файл вже залочений, ми отримаємо ось таке повідомлення для нього:
can not touch: Device or resource busy
Далі виконуємо таку команду:
# Vmkfstools -D / vmfs / volumes /
Ті, хто хоче далі вивчати питання, можуть пройти в KB 10051.