Half-Diskless
- 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
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.
- 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.
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))
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.
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
.