Файлы .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.
