Błąd VMWare Nie można uzyskać dostępu do pliku, ponieważ jest on zablokowany

Bardzo często podczas usuwania migawek lub konsolidacji dysków maszyn wirtualnych na hostach VMWare ESXi pojawia się błąd „Nie można uzyskać dostępu do pliku, ponieważ jest on zablokowany„ Jest to dość powszechny problem z powodu błędów w systemie kopii zapasowych VM (napotkałem problem w Veeam, HP Data Protector, Veritas). Zablokowanie dysku wirtualnego migawki maszyny wirtualnej nie pozwoli na przeprowadzenie konsolidacji (potrzebna jest konsolidacja dysków maszyny wirtualnej), Przechowywanie vMotion na innej macierzy dyskowej, wykonanie kopii zapasowej lub usunięcie bieżącej migawki. Czasami nawet maszyny wirtualnej z blokadami nie da się po prostu włączyć.

Błąd dostępu do zablokowanego pliku dysku wirtualnego lub migawki w VMWare może wyglądać następująco:

Nie można uzyskać dostępu do pliku, ponieważ jest on zablokowany. Wystąpił błąd podczas konsolidacji dysków: Co najmniej jeden dysk jest zajęty.

Możesz także zobaczyć ten błąd:

Wystąpił błąd podczas konsolidacji dysków: msg.snapshot.error-DISKLOCKED.

Pojawia się najczęstszy błąd „Nie można uzyskać dostępu do pliku, ponieważ jest on zablokowany”:

  • Gdy niektóre pliki na dołączonej maszynie wirtualnej zawierają znaki blokady innych hostów ESXi;
  • Podczas dodawania dysków wirtualnych do kopii zapasowej urządzenia podczas nieudanych sesji tworzenia kopii zapasowej;

Aby znaleźć źródło blokady i usunąć ją, najpierw musisz zidentyfikować zablokowane pliki.

  1. Za pomocą klienta SSH połącz się z hostem ESXi, na którym zarejestrowana jest problematyczna maszyna wirtualna;
  2. Przejdź do katalogu z plikami maszyny wirtualnej: cd / vmfs / Volume / VMFS_DATASTORE_NAME / LOCKED_VM
  3. Zlokalizuj błędy konsolidacji pliku dziennika vmware.log, blokady plików: kot vmware.log | blokada grep
  4. Dziennik powinien zawierać w przybliżeniu następujące błędy:
    VigorSnapshotManagerConsolidateCallback: snapshotErr = Nie udało się zablokować pliku (5: 4008) 2020-01-13T05: 07: 11.432Z | vmx | I125: DISK: Nie można otworzyć dysku ”/vmfs/volumes/5121c3ff-230b21a-41aa-21d92b219221/msk-web01/msk-web01_1-000002.vmdk”: Nie można zablokować pliku (16392). 2020-01-13T05: 07: 11.432Z | Pracownik nr 1 | I125: DISKLIB-LIB: Nie można otworzyć '/vmfs/volumes/5121c3ff-230b21a-41aa-21d92b219221/msk-web01/msk-web01-000002.vmdk' z flagami 0xa Nie można zablokować pliku (16392). 2020-01-13T05: 07: 11.432Z | Pracownik nr 1 | I125: DISK: Cannot open disk "/vmfs/volumes/5121c3ff-230b21a-41aa-21d92b219221/msk-web01/msk-web01-000002.vmdk": Nie można zablokować pliku (16392). 2020-01-13T05: 07: 11.432Z | vmx | I125: [msg.fileio.lock] Nie można zablokować pliku 

  5. Ten przykład pokazuje, że plik jest zablokowany msk-web01_1-000002.vmdk;
  6. Za pomocą następującego polecenia można wyświetlić bieżący łańcuch migawek z określonego na płaski dysk: vmkfstools -qv10 msk-web01_1-000002.vmdk
  7. Teraz wyświetlimy informacje o migawce i jej właścicielu (właścicielu RO): vmkfstools -D msk-web01-000001-delta.vmdk
    Blokada [przesunięcie 10c000021 242835456 v 856, przesunięcie HB 3153920 gen 3, tryb 1, właściciel 5cbac61a-4b6e32b7-0480-d06726ae7900 mtime 5199410 num 0 gblnum 0 gblgen 0 gblbrk 0] Właściciel RO [0] HB Offset 3153920 5cbac61a-4b6e32b7-0480-d06726ae7900 Addr, gen 859, linki 1, wpisz reg, flagi 0, Uid 0, Gid 0, tryb 600

W linii Właściciel RO wskazany jest adres MAC karty sieciowej hosta ESXi, co zablokowało ten plik migawki (adres MAC jest podświetlony na zrzucie ekranu). Zwróć również uwagę na wartość Tryb:

  • tryb 1 - blokada odczytu / zapisu (na przykład z włączoną maszyną wirtualną);
  • tryb 2 - zwykle oznacza, że ​​dysk jest zablokowany przez aplikację do tworzenia kopii zapasowych.

Aby znaleźć serwer ESXi przy użyciu znanego adresu MAC, możesz użyć następujących poleceń w PowerCLI (przekonwertować wcześniej otrzymany adres MAC na format dwukropka):

Import-moduł VMware.VimAutomation.Core -ErrorAction SilentlyContinue
connect-viserver vcenter1
Get-VMHost | Get-VMHostNetworkAdapter | Where-Object $ _. Podobne do Maca "d0: 67: 26: ae: 79: 00" | Lista formatów-Właściwość *

Podobna sytuacja, gdy musisz znaleźć maszyny wirtualne w VMWare vCenter według adresu IP lub adresu MAC.

Nazwa hosta ESXi zostanie wskazana w polu VMhost.

Możesz również wypisać tabelę ARP bezpośrednio z hosta ESXi i uzyskać adresy IP i MAC wszystkich sąsiadujących serwerów ESXi w sieci VMkernel:

lista sąsiadów ip sieci esxcli

Aby usunąć blokadę z pliku VM, po prostu zrestartuj znaleziony host ESXi (wcześniej emigruj z niego wszystkie VM za pomocą VMotion). Jeśli nie możesz zrestartować hosta, zrestartuj usługę Management Agent (hostd) w trybie konserwacji z konsoli hosta SSH:

restartuje services.sh

Następnie spróbuj skonsolidować lub usunąć migawkę maszyny wirtualnej.

Błąd „Nie można uzyskać dostępu do pliku, ponieważ jest on zablokowany„Dość często powstaje Veeam Backup & Replication podczas korzystania z proxy Veeam. Z powodu błędów tworzenia kopii zapasowych firma Veeam może nieprawidłowo odłączać dysk maszyny wirtualnej.

Aby rozwiązać problem, otwórz ustawienia maszyny wirtualnej, na której jest zainstalowany serwer proxy Veeam. Usuń dysk VM, którego pliki są zablokowane ze sprzętu VM.

Upewnij się, że wybierzesz „Usuń z maszyny wirtualnej”, a nie „Usuń z maszyny wirtualnej i usuń pliki z dysku”. W przeciwnym razie możesz przypadkowo usunąć dysk vmdk.