Nie można skonsolidować dysku – DISKLOCKED albo msg.fileio.lock

Jedna z maszyn wirtualnych zgłasza konieczność skonsolidowania dysku:

Niestety proste kliknięcie „Consolidate” nie pomaga z powodu błędu „msg.snapshot.error-DISKLOCKED”:

Postanowiłem najpierw przenieść maszynę wirtualną na inny host i tam spróbować ponownie konsolidacji – nie udało się. Następnie spróbowałem wykonać snapshota i go usunąć (udało się), a następnie zrobić konsolidację – również nie zadziałało. Tym razem jednakże error już był inny:

W szczegółach błędu dowiadujemy się, że nie można uzyskać dostępu do pliku (maszyny wirtualnej) ponieważ jest ona w trybie „Locked” – zablokowanym. Jak wynika z tego linka – maszyn wirtualna może być zablokowana w ten sposób z powodu tego, że jeden z ESX nadal „trzyma” nad plikiem tej maszyny pieczę. Zazwyczaj jest to efekt przyblokowania go przez narzędzie do tworzenia backupów – podczas wykonywania kopii soft blokuje sobie dostęp do pliku maszyny wirtualnej i „wypuszcza” go gdy skończy backupować plik. Niestety czasami nie zrobi tego do końca poprawnie i wtedy powstaje rzeczony błąd.

Rozwiązań tego problemu jest kilka, ja akurat skłoniłem się ku najbardziej drastycznemu czyli wyłączeniu wszystkich maszyn wirtualnych i zrestartowanie wszystkich wirtualizatorów (ESXi). Akurat wypadał i tak termin cyklicznego restartu hostów więc czemu nie. W ten sposób upewniłem się, że wszelkie blokady zostały ucięte przez system operacyjny oraz, że wszelkie dostępy zostały wycięte. Po tej operacji mogłem już spokojnie skonsolidować plik i alert zniknął. Jeśli ktoś nie ma luksusu restartu wszystkich hostów ESXi może zlokalizować, który konkretnie z nich trzyma „lock” na pliku maszyny wirtualnej i zrestartować na tym jednym usługę hostd – to powinno pomóc. Trzeba jednakże pamiętać, by wcześniej zmigrować z niego wszelkie maszyny wirtualne na inne hosty. Myślę jednak, że skoro już trzeba zwolnić host z maszyn wirtualnych to lepiej od razu zrestartować go całego żeby system się nieco odświeżył bo kto wie co tam się jeszcze zablokowało wewnątrz?