Half-Diskless
- Half-Diskless
- Je varianta pro virtuální disklessové stroje, virtualizované skrze QEMU, při které se při zavádění systému využívá virtuální blokové zařízení, nasdílené tak jako systém přes NFS. Toto blokové zařízení obsahuje linuxové jádro, ramdisk a zavaděč Grub, který při zavádění jádru předá IP adresu pro rozhraní přes které si pak připojí systém nasdílený přes NFS. Tímto způsobem lze spustit virtuální stroj aniž by byl závislý na DHCP a zavádění přes PXE.
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
.