Virtual machine disks consolidation is needed, i takto Vás může přivítat vCenter v okně alarmů po přihlášení. Na konkrétním VM, na záložce „Summary“, pak bude pod hlavními informacemi v oznamovací oblasti svítit:
Jaký je důvod potřeby konsolidace?
K tomuto stavu dochází, pokud obsah *.vmsd (databáze snapshotů) je rozdílný oproti reálnému stavu. Typicky existuje delta soubor, ale v snapshot manageru není o aktivním snapshotu žádný záznam.
Jak k tomu došlo?
Nejčastějším důvodem je zálohování pomocí VM snapshotů. Může dojít k nějaké chybě nebo někdy stačí v době zálohování VM v nevhodnou dobu provádět údržbu hosta a může dojít k tomuto stavu.
Jak se provádí konsolidace?
Stačí pouze přes kontextovou nabídku nad daným VM v menu „Snapshots“ zvolit „Consolidate“ a problém je vyřešen.
Co když končí chybou?
Pokud pokus o konsolidaci končí chybou, je potřeba najít důvod. Příklad chyby může vypadat takto:
Příčina je velice jednoduchá, jak je vidět v logu, samotný disk má zámek proti zápisu. Nějaká komponenta jej drží. Je tedy potřeba najít vlastníka zámku. A zde začíná trochu detektivní práce.
1. zjistíme, na kterém datastoru se VM nachází: například pohledem do komponenty „VM Hardware“ na záložce „Summary“. U konkrétního disku je položka „Location“, ta nám říká, kde je disk umístěn.
2. zapneme si na hostu SSH a připojíme se na něj.
3. přejdeme na datastor a do složky, ve které máme zamknuté vm
cd /vmfs/volumes/datastore01/LockedVM/
4. uděláme si výpis souborů ve složce:
ls -l total 2022528 -rw------- 1 root root 262656 Jan 17 08:11 LockedVM-000001-ctk.vmdk -rw------- 1 root root 37756928 Jan 17 08:11 LockedVM-000001-sesparse.vmdk -rw------- 1 root root 444 Jan 16 22:27 LockedVM-000001.vmdk -rw------- 1 root root 262656 Jan 17 08:11 LockedVM-000002-ctk.vmdk -rw------- 1 root root 37818368 Jan 17 08:11 LockedVM-000002-sesparse.vmdk -rw------- 1 root root 451 Jan 16 22:28 LockedVM-000002.vmdk -rw------- 1 root root 262656 Jan 17 08:11 LockedVM-000003-ctk.vmdk -rw------- 1 root root 37756928 Jan 17 08:11 LockedVM-000003-sesparse.vmdk -rw------- 1 root root 451 Jan 17 02:29 LockedVM-000003.vmdk -rw-r--r-- 1 root root 93 Jan 16 20:54 LockedVM-1905e506.hlog -rw------- 1 root root 536870912 Jan 10 15:03 LockedVM-53976208.vswp -rw------- 1 root root 262656 Jan 17 08:11 LockedVM-ctk.vmdk -rw------- 1 root root 4294967296 Jan 16 22:25 LockedVM-flat.vmdk -rw------- 1 root root 8684 Jan 17 09:05 LockedVM.nvram -rw------- 1 root root 622 Jan 16 20:54 LockedVM.vmdk -rw-r--r-- 1 root root 78 Jan 17 06:31 LockedVM.vmsd -rwxr-xr-x 1 root root 3744 Jan 17 06:31 LockedVM.vmx -rw------- 1 root root 0 Jan 16 20:54 LockedVM.vmx.lck -rwxr-xr-x 1 root root 3744 Jan 17 06:31 LockedVM.vmx~ -rw-r--r-- 1 root root 656534 Jan 17 09:00 vmware.log
zde již vidíme, že naše postižené VM má dokonce více než jeden snapshot, delta soubory LockedVM-00000x-sesparse.vmdk
5. nyní použijeme nástroj vmkfstools
nebo od ESXi 5.5 PO5 vmfsfilelockinfo
a zjistíme MAC adresu nebo přímo vlastníka zámku:
vmkfstools -D ./LockedVM-flat.vmdk Lock [type 10c00001 offset 207536128 v 228, hb offset 4161536 gen 15, mode 2, owner 00000000-00000000-0000-000000000000 mtime 122749 num 1 gblnum 0 gblgen 0 gblbrk 0] RO Owner[0] HB Offset 3997696 5c405611-f64ae6db-1385-52df370e6410 Addr <4, 60, 46>, gen 85, links 1, type reg, flags 0x9, uid 0, gid 0, mode 600 len 4294967296, nb 1168 tbz 0, cow 0, newSinceEpoch 1168, zla 3, bs 1048576
RO Owner[0] HB Offset 3997696 5c405611-f64ae6db-1385-52df370e6410 = MAC adressa
nebo
vmfsfilelockinfo -p ./LockedVM-flat.vmdk vmfsfilelockinfo Version 2.0 Looking for lock owners on "LockedVM-flat.vmdk" "LockedVM-flat.vmdk" is locked in Read-Only mode by host having mac address ['52:df:37:0e:64:10'] Trying to use information from VMFS Heartbeat Host owning the lock on file is 192.168.3.7, lockMode : Read-Only
vmfsfilelockinfo
sděluje přímo IP hosta, je to pohodlnější něž hledat, kterému hostovi MAC adresa patří. Pokud byste ale přeci jen měli starší verzi a tento nástroj Vám chyběl, tak MAC adresu najdete na konkrétním hostovi v záložce „Configure“ v položce „Physical adapters“. Těm, kteří mají radši CLI, velice dobře poslouží příkaz esxcli network nic list
Pokud VM běží, je dobré jej vypnout, jinak můžete vidět více vlastníků zámku a nemusí být jednoduché přijít na toho správného:
vmfsfilelockinfo -p ./LockedVM-flat.vmdk vmfsfilelockinfo Version 2.0 Looking for lock owners on "LockedVM-flat.vmdk" "LockedVM-flat.vmdk" is locked in Read-Only mode by host having mac address ['52:df:37:0e:64:10', '52:df:37:0e:24:60'] Trying to use information from VMFS Heartbeat Host owning the lock on file is 192.168.3.7, lockMode : Read-Only Host owning the lock on file is 192.168.3.3, lockMode : Read-Only
6. pokud již známe vlastníka zámku, přejdeme na daného hosta a použijeme příkaz:
lsof | grep LockedVM 74508 vmx FILE 73 /vmfs/volumes/5b7f0cf0-c6e38c43-c676-52df370e6280/Backup-Proxy/LockedVM.vmdk-sesparse.REDO_oTqsSX 74508 vmx FILE 74 /vmfs/volumes/5c373e71-42669298-6824-52df370e6280/LockedVM/LockedVM-flat.vmdk
zde první číslo na řádku „74508“ říká číslo procesu, který soubor drží.
7. pokud je viník z výpisu jasný, v našem případě backup proxy, které zůstal disk připojen i po skončení zálohování, můžeme v klidu ručně odmapovat. Pokud ale nevidíme jasnou příčinu, tak použijeme příkaz kill
a zastavíme tak proces, který soubor drží:
kill -9 74508
Pokud jste tak neučinili již dříve, před samotným ukončením procesu je nutné mít VM ve vypnutém stavu! V opačném případě můžeme příkazem kill
ukončit i běh samotného VM.
Ne vždy na hostovi, který zámek drží, musí být běžící proces, který evidentně zámek drží. V těchto případech může pomoct příkaz:
/etc/init.d/hostd restart
8. kontrolu, že byl zámek odstraněn, provedeme takto:
vmfsfilelockinfo -p ./LockedVM-flat.vmdk vmfsfilelockinfo Version 2.0 Looking for lock owners on "LockedVM-flat.vmdk" "LockedVM-flat.vmdk" is not locked by any ESX host and is Free
opět lze provést i pomocí příkazu vmkfstools
Podrobnější informace o hledání majitele zámku popisují KB10051 a KB2110152
9. pokud jsme byli úspěšní a zámek je odstraněn, tak již stačí jen v GUI přes kontextovou nabídku nad daným VM v menu „Snapshots“ zvolit „Consolidate“ a problém je vyřešen.