VMware Player v prostředí bezdiskového linuxu

From DCEwiki
Jump to: navigation, search
Upozornění Následující manuálová stránka byla vytvořena pro implementaci VMware Player 5.0 již před nějakým časem. Od té doby se řada věcí změnila:
  • VMware Player 5.0, který umožňoval virtualizovat stroje i na hardware se staršími 32 bitovými procesory, které nemají podporu virtualizace, nahradila na stránkách VMware, verze která je pouze pro 64 bitové procesory s podporou virtualizace. Ovšem POZOR české stránky VMware vás budou ke všemu vtipně směrovat pouze na placenou (trial) verzi VMware Workstation 12 Player!!!
  • Z distribučního jádra Debianu byla od verze jessie odstraněna podpora pro aufs, ovšem jaderný modul pro overlay (původní overlayfs) dovoluje použít jako podkladový souborový systém NFS až od jádra verze 4.2. Ovšem takové jádro bude k dispozici nejspíš až u dalšího stable vydání stretch!
  • Také je nezbytné mít k dispozici při přípravě virtuálního stroje VMware Workstation.
Zadání : Vytvořit instalaci aplikace VMware Player v bezdiskovém linuxovém systému, která umožní spouštět virtuální stroje připravené v aplikaci VMware Workstation i na strojích, které nepodporují HW virtualizaci. Výhodou tohoto řešení je, že umožňuje dynamicky přidávat do prostředí virtuálu vnější USB zařízení, atp.


Zadání vyžaduje následující úpravy:

  • Minimalistický správce oken, který umožní uživateli spouštět pouze VMware Player.
  • Spuštění musí proběhnout automaticky po přihlášení.
  • Po ukončení aplikace VMware Player se musí bezdisková stanice zrestartovat, aby se uvolnila paměť zabraná daty uloženými během virtualizace předchozím uživatelem.

Jelikož VMware Player umí pracovat pouze se soubory, jsou virtuální disky uloženy ve vypublikovaném adresáři na NFS serveru.

Aby bylo možné virtuální stroje aktualizovat a provádět v nich změny, pak je vhodné, aby bylo možné adresář připojit i jako zapisovatelný.

Upozornění Úpravy a instalace dalšího software do virtuálního stroje by se měly provádět pouze při virtualizaci přes VMware Workstation. VMware Player totiž neumožňuje provést operace, které jsou potřebné k minimalizaci přenášených dat při spouštění virtuálního stroje z adresáře sdíleného přes NFS na který byl aplikován overlay filesystem.

Automatické spuštění aplikace VMware Player[edit]

Pro automatické spuštění aplikace VMware Player ve fullscreen módu je vhodný jednoduchý dlaždicový správce oken i3

Malou úpravou souboru /etc/profile a globálního konfiguračního souboru pro i3 lze zajistit, aby se každému uživateli - kromě uživatele root - během přihlášení generoval malý skript, který po spuštění zavolá i3.

Poznámka
if [ ! "$I3" ]; then
   if [ "$(/sbin/runlevel)" == "N 2" ]; then
      if [ "$(tty)" == "/dev/tty1" ] && [ "$(id -u)" != "0" ]; then
         I3="vm"
         echo -e '[ "$(id -u)" == "0" ] && echo b > /proc/sysrq-trigger || vmplayer && i3-msg exit' > /tmp/diskless_reboot
         chmod +x /tmp/diskless_reboot
         [ -f $HOME/.i3/config ] && rm -f $HOME/.i3/config
         /usr/bin/startx
         /usr/bin/pkill -KILL -u $USER
      fi
   fi
fi

Do výchozího konfiguračního souboru i3 /etc/i3/config je třeba přidat následující kód, který zavolá vygenerovaný skript, co vmplayer spustí a zároveň nastaví celoplošný režim pro všechna okna, která pak tato aplikace otevře.

Poznámka
for_window [class="Vmplayer"] fullscreen global
exec /tmp/diskless_reboot

Pokud nemají mít uživatelé možnost cokoliv jiného v prostředí X serveru spustit, tak se mohou všechna ostatní nastavení zakomentovat.

Skript co spustí aplikaci vmplayer čeká na její ukončení. Jakmile k tomu dojde, pokračuje tím, že odešle do prostředí i3 příkaz k jeho ukončení.

Pak pokračuje zpracování kódu v /etc/profile, které ukončí všechny zbývající procesy uživatele, čímž ho defakto odhlásí.

Obvykle pak systém čeká na přihlášení dalšího uživatele. Po odhlášení se totiž data z vrstvy, která překrývá NFS neodstraní. Jsou stále uložená v paměti počítače a k jejich zahození dojde až při restartu. Znamená to, že další uživatel by spustil virtuální stroj ve stavu, v jakém ho zanechal předchozí uživatel, což není žádoucí!

Proto je třeba provést ještě malou úpravu v souboru /etc/pam.d/login

Poznámka
session optional pam_exec.so /bin/bash /tmp/diskless_reboot

Ta zajistí, že se po odhlášení uživatele znovu zavolá skript, který se vygeneroval během jeho přihlášení - tentokrát jej však nevolá pod svým UID uživatel, ale systém (root), takže se zapíše do souboru /proc/sysrq-trigger příznak b, který vyvolá restart.

Poznámka Pokud se uživatel přihlásí na jiné konzoli než /dev/tty1, nebo se místo něj přihlásí root, tak k restartu po odhlášení nedojde, protože se nevygeneruje příslušný skript.

Protože se skript generuje do adresáře, který je stejně jako data z překrytého disku pouze v paměti, tak po restartu zmizí.

Upozornění Aplikace VMware Player neumožňuje spustit současně víc než jeden stroj! V případě že se provede pouze uspání virtuálního stroje, zůstává v podstatě v běhu, i když GUI zmizí. Nemá-li uživatel možnost znovu GUI spustit, nezbývá mu néž provést restart kombinací kláves Alt+SysRq b

Optimalizace virtuálního VMware stroje pro overlay NFS[edit]

V prostředí virtuálního stroje MS Windows..

  1. Provést veškeré potřebné instalace, aktualizace a konfigurace v prostředí virtuálu
  2. Zakázat použití virtuální paměti!. Bez tohoto kroku by virtuální stroj zbytečně zapisoval na disk, což by se projevilo tak, že by virtuální disk s promítnutými změnami v /overlay/unirw zabral více paměti, kterou by nebylo možné uvolnit.
  3. Zrušit v síťovém nastavení všechno kromě nastavení TCP/IP. Nastavení sítě se musí brát z DHCP, jinak by mohlo docházet k síťovým konfliktům.
  4. Odstranit pokud možno veškerá nepotřebná data
  5. Po restartu defragmentovat disk v prostředí virtuálu
  6. Vypnout virtuál

Po vypnutí stroje ve virtualizačním prostředí VMware Workstation..

  1. Odstranit nepotřebné snapshoty a logy
  2. Defragmentovat virtuální disky
  3. Upravit konfiguraci virtuálu tak, aby nikde nefigurovaly fixní cesty
  4. Provést snapshot
Upozornění Poslední bod je důležitý především proto, že se pak na straně virtualizačního stroje načte do paměti z virtuálního disku jen minimum dat, a soubor v /overlay/unirw, který se pak po restartu hostitele zahodí nezaplácne zbytečně velké množství paměti.

Kdyby tento snapshot neexistoval, tak se VMware Player pokusil načíst celý virtuální disk, což by mohlo vést k zaplnění veškeré dostupné paměti a tím pádu aplikace z důvodu nedostatku místa na disku.

Struktura virtuálního stroje u VMware[edit]

http://searchvmware.techtarget.com/tip/Understanding-the-files-that-make-up-a-VMware-virtual-machine

Adresář virtuálního stroje u VMware obsahuje množství souborů několika typů, jejichž počet a velikost postupem času roste. Je proto dobré vědět, k čemu vlastně jsou a které z nich lze bez obav odstranit.

Poznámka Vzhledem k tomu, že se tyto soubory přes jistý úzus mohou jmenovat různě, uvádím místo jejich jména hvězdičku. Důležitá je pro jejich identifikaci přípona.

Konfigurační soubor *.vmx[edit]

Je to výchozí textový soubor, který bývá vždy pouze jeden a obsahuje veškerá potřebná konfigurační nastavení nezbytná pro běh virtuálního stroje:

  • kolik má mít k dispozici paměti
  • který soubor má v sobě uložen obsah paměti, je-li stroj pouze ve stavu suspend
  • který vmdk soubor tvoří poslední článek řetězu pro sestavení virtuálního disku
  • a jiné...

Úpravy v konfiguraci virtuálního stroje lze provádět pouze tehdy, je-li vypnutý. Pokud běží, tak GUI stejně úpravy nedovolí, případné manuální úpravy při uspání či vypnutí virtuálního stroje stejně přepíšou.

Na manuální úpravy je třeba dát pozor. Pokud je stroj pouze uspaný, tak by se mohlo stát, že díky nevhodné úpravě v konfiguraci nepůjde spustit a díky změně může dojít k takovému poškození virtuálu, že se nebude ani možné vrátit do původního stavu.

Proto by se měl virtuální stroj přesouvat pokud možno vždy ve vypnutém stavu.

Informace o virtualizačním prostředí *.vmxf[edit]

XML soubor, který se používá pouze u VMware Workstation. Obsahuje informace a parametry, které udávají v jakém stavu se virtuální stroj naposledy nacházel. Využívá se při práci se skupinami virtuálních strojů. Pro VMware Player je v podstatě zbytečný.

Virtuální disky *.vmdk[edit]

Formát virtuálních disků .vmdk, který používá VMware, určuje jak pak vypadají soubory v adresáři virtuálního stroje.

  • Virtuální disk může být přírůstkový formát. Tzn. že se do souboru na disk ukládají pouze data, nikoliv prázdný prostor. Pokud po sobě operační systém virtuálumí souborový systém umí pořádně uklízet smazaná data, tak jeho velikost může být mnohonásobně menší než deklarovaná velikost virtuálního disku. V opačném případě roste celkový obsah virtuálního disku tak dlouho, dokud nezabere na skutečném disku deklarované velikosti. Pro jeho opětovné zmenšení je pak třeba provést úklid na straně virtualizovaného stroje a následně vypnutý disk defragmentovat na straně hostitele. Při defragmentaci pozor na snapshoty! U disku překrytého snapshotem k žádné defragmentaci nedojde.
  • Formát virtuálního disku umožňuje, aby byl rozdělen na více souborů. Pokud je má takový disk zároveň přírůstkový formát, tak se po zaplnění dílčího souboru vytvoří se nový. Toto bylo zapotřebí především kvůli systémům FAT32 a starší verzi NTFS, které měly omezení na maximální velikost souboru. Pokud je disk přírůstkového typu, tak se rovnou vytvoří sada očíslovaných souborů od *-s001.vmdk výš. Počet těchto souborů odpovídá deklarované velikosti plného(!) virtuálního disku, rozděleného na soubory o maximální velikosti 4GB, ale jsou mnohem menší, protože jsou do nich rovnoměrně rozložená pouze reálná data virtuálu. Hlavní soubor virtuálního disku pak obsahuje pouze seznam těchto souborů.
  • V případě, že je u virtuálního stroje proveden snapshot, dojde k zakonzervování aktuálního stavu virtuálních disků, které - pokud byl snapshot učiněn za běhu - jsou uzamčeny. Pro každý z nich se vytvoří očíslovaný soubor, do kterých se pak budou ukládat veškeré následující změny, jimiž se bude lišit aktuální instance od té, na kterou byl aplikován snapshot. Snapshoty nelze udělat v každé aplikaci od VMware, ani je nelze v každé spravovovat. Původně bylo možné provádět pouze jeden snapshot a to buď v prostředí VMware Server, nebo VMware Workstation. Na rozdíl od verze VMware Server nyní obsahuje VMware Workstation správce snapshotů, který umožňuje provádět i vícenásobné snapshoty a také je slučovat. Aplikace VMware Player sice umí s aktuálním snapshotem pracovat, ale neumožňuje je dělat, nebo rušit. Snapshoty virtuálních disků, které do snapshotu patří jsou očíslovány šestičíselným indexem *-000001.vmdk Přípdně číslem větším, pokud již bylo snapshotů v minulosti učiněno véce. Ostatní soubory, které ke snapshotu patří jsou označeny sufixem *-Snapshot1.* jehož číslo rovněž odpovídá indexu snapshotu.
Poznámka Je-li virtuální stroj spouštěn v prostředí, kde je aplikováno na adresář sdílený přes NFS překrytí přes overlay filesystem, je asi lepší používat virtuální disk rozdělený na menší díly. Rozhodně je však třeba udělat ještě před přesunem do cílového adresáře po skončení všech úprav v prostředí virtuálu snapshot!

Také je vhodné minimalizovat počet snapshotů. A virtuální disk před vytvořením snapshotu defragmentovat.

Upozornění Pozor na již vytvořené, ale nepoužité virtuální disky. VMware soubory, které k virtuálu bezprostředně nepatří ignoruje. Je tedy třeba po případné konverzi z rozsekaného disku na jeden provést ruční selekci nepoužívaných souborů.

Swap virtuálního stroje *.vswp[edit]

S těmito soubory pracuje především ESX server. Fungují jako běžný swap, tzn. že na jejich použití dojde až v případě, že virtuálnímu stroji začne docházet paměť.

U virtuálního stroje, který je má k dispozici, v okamžiku kdy dojde přidělená fyzická paměť, nezačne virtuál swapovat do zbylé fyzické paměti hostitele, což by mohlo vést k jeho kolapsu, ale do těchto souborů na disku. Použití těchto swapovacích souborů tedy chrání paměť hostitele.

Při vypnutí či pozastavení virtuálu VMware tyto soubory odstraní.

Poznámka Je-li virtuální stroj spouštěn v prostředí, kde je aplikován overlay filesystem, ztrácí použití swapovacích souborů smysl, protože by se zaplácla paměť hostitele úplně stejně jako kdyby jel virtuální stroj bez swapu.

Podadresáře *.lck[edit]

Pokud existují v adresáři virtuálního stroje podadresáře, jejichž název končí příponou *.lck pak to znamená že příslušný soubor virtuální stroje je zamčený. K zamknutí může dojít za následujících okolností:

*.vmx.lck 
VMware zrovna s virtuálním strojem pracuje. Pokud VMware prokazatelně neběží, pak může jít o pozůstatek po pádu systému, kdy se virtuál nestačil korektně vypnout. Při korektním vypnutí, a zavření ukončení práce s GUI se zámek obvykle odstraní.
*.vmdk.lck 
Soubor virtuálního disku je součástí nějakého snapshotu a proto v něm nesmí dojít k žádné změně. Pozor! K takové změně může dojít i pouhým namountováním v RW režimu
*.vmem.lck 
Soubor s obsahem paměti spuštěného virtuálního stroje je součástí nějakého snapshotu a proto v něm nesmí dojít ke změně, ani nemsmí být přepsán.

Existence zámků může někdy způsobit, že virtuální disk nelze namountovat - kupř. když z něj potřebujeme vydolovat nějaká data. V takovém případě je stačí smazat. Ovšem před tímto krokem by měla být provedena kompletní záloha celého struktury virtuálního stroje.

Obsah paměti pozastaveného virtuálu *.vmss[edit]

Je-li virtualizace virtuálního stroje pouze pozastavena, pak se obsah jeho paměti uloží do tohoto souboru. Jeho velikost tedy může být přibližně stejná jako velikost virtuální RAM, jakou má stroj nastavenou. Má-li stroj pokračovat ve virtualizaci, tak se načte zpátky do paměti hostitele. To však může někdy být zdrojem problémů, obzvláště když se liší hardwarové vybavení hostitele, nebo dojde ke změně v konfiguraci. Proto je lepší ho v případě diskless použití smazat. Pokud tento soubor neexistuje, pak se virtuální stroj spustí stejně, jako by byl předtím vypnutý. VMware jej sám od sebe nemaže nikdy, pouze jej při každém dalším pozastavení přepisuje.

Upozornění Je-li virtuální stroj určen pro spouštění v rámci diskless Debianu pak by měl být vždy snapshotován ve vypnutém stavu a případný existující soubor *.vmss soubor ještě před přesunem do cílového adresáře odstraněn.

Obsah virtuální paměti *.vmem[edit]

Informace o snapshotu *.vmsn[edit]

Do tohoto souboru se ukládá informace o stavu virtuálního počítače v okamžiku vytvoření snapshotu. Je-li snaphot odstraněn, pak se odstraní i příslušná informace. Tyto soubory se vytvářejí vždy paralelně se snapshotem a jejich velikost se odvíjí od toho, jestli snapshot zahrnuje také aktuální stav virtuální paměti (u spuštěného stroje) nebo ne (u zastaveného). Je-li snapshot proveden u zastaveného virtuálního stroje, pak je tento soubor poměrně malý (pod 32 kb). Co do obsahu je podobný souborům typu *.vmss, které se vytváří je-li virtuální stroj pozastavený.

Seznam snapshotů *.vmsd[edit]

Tento textový soubor obsahuje informace o snapshotech, ze kterých si pak VMware Player sestaví aktuální obraz virtuálního disku.

Virtuální BIOS *.nvram[edit]

Tento malý soubor obsahuje BIOS virtuálního stroje, který se používá při jeho spouštění. Podobné jako BIOS reálného stroje umožňuje upravit výchozí konfiguraci hardware. Dostat se k jeho konfiguraci umožňuje stisk klávesy F2 při spouštění. Provedené změny se pak zpátky uloží do binárního souboru s příponou .nvram.

Logy *.log[edit]

Soubory s touto příponou lze s klidnou duší smazat. VMware aplikace do nich ukládají informace, které mohou pomoci řešit případné problémy při spouštění virtuálního stroje.