nfsroot

Z DCEwiki
Skočit na navigaci Skočit na vyhledávání

Zavedení dynamického ramdisku, posunulo disklessovou infrastrukturu na zcela jinou úroveň, protože umožnilo zjednodušit konfiguraci zavádění disklessových strojů přes PXE a soustředit konfiguraci disklessové infrastruktury do jednoho adresáře verzovaného přes git.

Princip

Systém, v jehož rámci se generuje ramdisk linuxového jádra

/etc
   /initramfs-tools
       /conf.d
       /hooks
           enable-wireless
           cachefs
           nfs4
           omit
       initramfs.conf
       /scripts
           /nfs-top
               enable_wireless
               nfsroot
           panic
           nfs
           update-initramfs.conf
           modules
           wpa_supplicant.conf


/conf/conf.d/nfsroot       <-- konfigurační soubor, který stáhl nfsroot
/scripts
   _sdileno                <-- soubor sdílených funkcí, který stáhl skript _functions
   functions               <-- soubor sdílených funkcí, který přetáhl skript _functions
   /init-bottom
       ORDER
       udev
   /init-top
       ORDER
       all_generic_ide
       blacklist
       keymap
       udev
   local
   /local-bottom
       ORDER
       ntfs_3g
   /local-premount
       ORDER
       btrfs
       ntfs_3g
       resume
   nfs                     <-- upravený soubor
	/nfs-bottom
       ORDER
       crypto              <-- skript, který stáhl nfsroot jako 4.
       overlay             <-- skript, který stáhl nfsroot jako 5.
   /nfs-premount
       ORDER
       _functions          <-- skript, který stáhl nfsroot jako 1.
       debug               <-- skript, který stáhl nfsroot jako 2.
       findswap            <-- skript, který stáhl nfsroot jako 3.
   /nfs-top
       ORDER
       enable_wireless     <-- 1.
       nfsroot             <-- 2.


Původně se totiž předával seznam vrstev a další proměnné prostřednictvím parametrů jádra. K těm se dá velice snadno dostat výpisem obsahu souboru /proc/cmdline, ale pokud došlo k nějaké chybě při zápisu, skončil systém ve stavu, který vyřešil jen manuální restart přímo na místě.

Dynamický ramdisk pracuje s konfigurací, kterou si stahuje buď na základě předaného parametru name=, nebo konfigurace sítě z DHCP, přidělené na základě MAC adresy. V případě, že se v konfiguraci objeví nějaká chyba, např. překlep v URL vrstvy sdílené před NFS, přeskočí neplatnou položku a pokračuje dál v zavádění.

Dynamický ramdisk vyřešil také otázku zavaděčů, protože se pracuje se stejnou konfigurací bez ohledu na to, který zavaděč a jakým způsobem jádro spustil. Nezáleží tedy na tom, je-li jádro zavedeno přes Legacy či UEFI PXE, nebo ho zavedl lokálně instalovaný Grub.

Díky tomu se administrace všech strojů disklessové infrastruktury soustředila do jediného místa a několika málo konfiguračních souborů. Většina strojů si vystačí s generickou konfigurací. Jenom stroje, které tvoří specifickou součást disklessové infrastruktury mají konfiguraci vlastní.

Také úprava konfigurace systému je velice snadná. Vše se řeší přes vrstvy. Základní vrstva, ve které jsou systémové soubory a distribuční software je u všech strojů stejná. A konfigurace se mění pouze tím, že se nad ní použije jiná vrstva.

Např. rozdílné metody ověřování řeší dvě velice tenké vrstvy, které obsahují pouze konfigurační soubory. Prostřednictvím vrstvy isolate lze velice elegantním způsobem získat stroj ideální ke zkouškám, kde je dostupný veškerý software ale přístup do sítě omezen jen na vyhrazené stroje.

Dynamický ramdisk také umožnil vytvořit technologii autonomního Half-Disklessu. [1]

Princip

Základní skript dynamického ramdisku, který stahuje konfiguraci stroje z TFTP serveru. Používá se od září 2019. Obsahuje čtyři základní funkce:

tftp_download
Pomocná funkce pro stažení konfiguračního souboru
script_download
Pomocná funkce pro stažení dalších skriptů
get_script
Stahuje skripty
find_nfsroot
Stahuje konfiguraci

Od nasazení tohoto skriptu není nutné aby byly skripty spouštěné v dalších fázích zavádění (findswap, overlay, crypto, aj.) součástí komprimovaného ramdisku.

Upozornění Netýká se to skriptu enable_wireles, nezbytného pro nahození sítě, který se spouští (stejně jako tenhle skript ve fázi nfs-top!

Verze

MD5SUM Velikost kB Datum vytvoření
2f7de9c79c2d55a6abd01536ac1bac1f 2320 2019-09-07 první verze (bullseye)
6bd8069b4436e5187e00c1bd604af0c9 2349 2021-01-26 druhá, vývojová verze původního skriptu, kterou (ne)servíruje DHCP, rozšířená o podporu pro stahování skriptů z různých TFTP lokací
bf448e064d383fadf1f5664cfef76d70 2497 2021-01-26 třetí produkční verze (bullseye)
658068280627daebb75ad5511ffded4e 2503 úno 12 2021-02-12 čtvrtá, produkční verze (bookworm) s upravenou podmínkou
  1. Aleš Kapica (*1969) Jak jsem se dostal k vývoji disklessové infrastruktury – dokončení:
    Aleš Kapica (*1969), psáno 7. až 9. ledna 2024