Half-Diskless

From DCEwiki
Jump to navigation Jump to search
Half-Diskless
Využívá blokové zařízení jako úložiště (storage) a to umožňuje obejít omezení Full-Disklessu, takže je závislý pouze na přístupu k NFS serveru. QEMU totiž umožňuje virtuálnímu stroji podstrčit virtuální blokové zařízení, nasdílené přes NFS. A pokud je na něm nainstalován zavaděč, který linuxovému jádru rovnou nastaví IP adresu rozhraní, přes které si pak připojí zbytek systému nasdíleného přes NFS, nepotřebuje funkční DHCP server. Proto se klíčové stroje disklessové infrastruktury spouští jako Half-Diskless. Vše ostatní jako Full-Diskless
Autonomní diskless
Je ve své podstatě Half-Diskless, který využívá lokální blokové zařízení (je-li na to připravené) nejenom k instalaci lokálního zavaděče, který je schopen zavést jádro s podporou konektivity přes Wi-Fi v případě, že nelze využít síťového rozhraní které má PXE, ale také jako:
  • swap (pokud obsahuje swapovací diskový oddíl), který umožňuje obsadit větší množství RAM, než kolik jí skutečně je, a ..
  • persistentní keš, do které si uloží při spuštění soubory stažené ze sítě, aby je nemusel po restartu stahovat znova.
Využití blokového zařízení pro kešování velkých souborů je zcela zásadní funkcionalita, bez které nelze dosáhnout autonomie. Jedině díky tomu je schopen fungovat po startu i bez síťové konektivity, podobně jako Non-Diskless, od kterého se ale zcela zásadě liší tím že:
  1. neobsahuje žádnou instalaci, jenom stažené soubory, které mohou být navíc kryptované,
  2. .. a to je důvod proč vyžaduje při startu funkční síťové připojení. Jedině tak se totiž dostane ke své konfiguraci a získá klíče, kterými se dají nakešované soubory odemknout.
Bez přístupu k síti zůstane viset v ramdisku, který neobsahuje žádné informace, které by umožnily nakešované soubory odemknout a použít k sestavení sendviče. Všechno běží v RAM, jakmile tedy autonomní systém zkolabuje a ztratí obsah RAM, zůstanou na lokálním disku jen bezcenné kryptované bloby dat.
Poznámka Po spuštění už je na připojení nezávislý a může existovat i bez něj, pokud dostane při startu do sendviče vrstvu, která obsahuje instrukce, jimiž se má řídit.

Popis

Při zavádění tohoto stroje QEMU připojí virtuální disk nasdílený přes NFS do virtuálu a vyhledá MBR sektor ze kterého spustí zavaděč GRUB. Ten obsahuje moduly, které rozpoznají blokové zařízení a diskový oddíl, na kterém jsou uloženy další moduly zavaděče, jádra s ramdisky a především soubor grub.cfg

Ten se od standardního konfiguračního souboru generovaného přes grub-mkconfig liší především tím, že místo blokového zařízení se systémem předává jádru nastavení pro připojení systému přes NFS. To sebou může nést několik úskalí:

špatné síťové rozhraní
Je-li zavaděčem předané neplatné jméno síťového zařízení může skončit zavádění chybou jádra, případně zůstane zaváděcí proces viset. Řešení: Nabootovat pouze do ramdisku a výpisem obsahu souboru /proc/net/dev příkazem cat zjistit, jaké síťové interfejsy jsou v ramdisku k dispozici.
Poznámka Z nabootovaného ramdisku se lze dostat vynuceným restartem virtuálu. To se udělá tak, že se zapíše do souboru /proc/sysrq-trigger písmeno b (Pokud chceme tímto způsobem virtuál vypnout, zapíšeme místo toho o)

V případě ramdisku si můžeme klidně restart vynutit, jelikož nejde o skutečné blokové zařízení – je všechno v paměti.

neplatná cesta k systému sdílenému přes NFS
Je-li předaná neplatná cesta, nebo je chyba v adrese ze které se má NFS server připojit, případně je nějaký problém v nasdílení systémového disku, skončí proces zavádění opakovanými pokusy o připojení systémového adresáře přes NFS. Řešení: Zkontrolovat, je-li správně proveden NFS export. Jestli je platná cesta ke sdílenému adresáři. Jestli má adresa klientské stanice k němu přístup. Případně jestli je v parametrech předávaných jádru správně uvedena IP adresa NFS serveru a klienta.
Upozornění Při zavádění systému přes NFS se systémový disk v ramdisku připojuje přes NFSv3. Takže musí být uvedena plná cesta.

Vytvoření zaváděcího disku

1, Můžeme buď zkopírovat zaváděcí disk jiného stroje…

host (NFS) :/srv/boot# cp k333dhcp.img k333stu1.img
…nebo si vytvoříme pomocí qemu-img disk nový:
host (NFS) :/srv/boot# qemu-img create k333stu1.img 200M

2, Pak připojíme soubor k333stu1.img přes losetup na loop0

losetup /dev/loop0 /srv/boot/k333stu1.img

3a, Pokud jde o nově vytvořený virtuální disk, musíme nejprve pomocí utility fdisk, gdisk, nebo parted vytvořit tabulku rozdělení disku a diskový oddíl, na který pak nakopírujeme zavaděč a jádro s ramdiskem:

3b, Vytvořený diskový oddíl naformátujeme na požadovaný souborový systém:

V případě, že pouze upravujeme již existující zaváděcí disk můžeme bod 3 přeskočit a přejít rovnou na bod 4

4, Mount diskového oddílu s jádrem a soubory zavaděče:

host (NFS) :~# mount /dev/loop0 /mnt -o offset=$((2048*512))
Poznámka Při namountování musí být použit offset!

5a, Pokud upravujeme již existující zaváděcí disk, zkopírování nové jádro s příslušným ramdiskem a upravíme soubor /mnt/grub/grub.cfg

5b, Pokud tvoříme nový zaváděcí disk, zkopírujeme nové jádro s příslušným ramdiskem do adresáře /mnt a provedeme instalaci zavaděče na /dev/loop0 zařízení:

host (NFS) :~# grub-install -d /mnt -modules biosdisk,ext2 /dev/loop0
Po nainstalování grubu bude nejspíš nutné vytvořit nový soubor grub.cfg. Bohužel v tomto případě nelze využít skript grub-mkconfig.
Poznámka Pro pptimální volbu modulů doporučuji prostudovat zdejší manuál pro GRUB a manuálové stránky aktuální distribuční verze, které se mohou v fůležitých detailech lišit (např. pozměněné názvy modulů, atp.)

Záložní jádro a soubor grub.cfg.backup

Abychom se vyhnuli situaci, že nelze systém nabootovat, protože je záznam v souboru grub.cfg neplatný, můžeme mít připraveno na zaváděcím disku záložní jádro s ramdiskem a odpovídajícím souborem grub.cfg.backup, který si v případě potřeby můžeme natáhnout místo výchozího grub.cfg.

Export adresáře přes NFS

Zkopírování stávajícího obsahu fyzického stroje