Перейти к основному содержанию

VMware — удалить LCK файл

VMware

Файлы .lck создаются гипервизором (обычно VirtualBox или VMware) для предотвращения одновременного доступа к виртуальной машине из нескольких мест. При аварийном завершении они не удаляются автоматически.

К примеру, вы мигрировали виртуальную машину, а операция была неожиданно прервана. На хосте-получателе при этом создалась папка для виртуальной машины, часть данных скопировалась, при этом в папке имеется блокирующий LCK файл. Теперь эта папка превратилась в недвижимость, удалить её нельзя, файлы в ней тоже не удаляются, файл с расширением .lck тоже не удаляется.

Нам нужно удалить файл с расширением LCK. После этого можно будет удалить всю лишнюю папку с ненужными файлами.

Как удалить файл .lck?

Сделаем это из консоли. Запускаем на гипервизоре службу SSH, коннектимся к консоли.

Переходим в директорию с виртуальной машиной, например:

cd /vmfs/volumes/имя_хранилища/имя_машины/
ll

Находим внутри наш LCK файл, к примеру, это vm1.vmx.lck. Попробуем его удалить:

rm vm1.vmx.lck

# подтверждаем удаление
# rm: remove 'vm1.vmx.lck'? y

Он удалится, или мы получим ошибку:

can't remove 'vm1.vmx.lck': Device or resource busy

Проблема в том, что файл .lck всё ещё заблокирован процессом ESXi. Это типичная ситуация после аварийного завершения миграции или сбоя VM.

Узнаем какой процесс использует этот файл:

lsof | grep vm1.vmx.lck

Если lsof отсутствует:

ls -la /proc/*/fd/* 2>/dev/null | grep vm1

Видим ID процесса, убиваем:

kill -9 ID_процесса

Теперь удалится:

rm vm1.vmx.lck

После удаления .lck файла можно почистить ненужные директории через UI.

 

Похожие материалы

HPE ProLiant MicroServer Gen10 и ESXi 6.7 — добавление Storage

Недавно поставил ESXi 6.7 на сервер HPE ProLiant MicroServer Gen10. На сервере штатными средствами собрано зеркало RAID1 из двух дисков. Пришла пора проверить, увидит ли ESXi собранный RAID массив, и если да, то добавить его как Storage.