Přehled vývoje infrastruktury pro diskless Debian na katedře DCE

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

Debian zaváděný po síti se začal používat na katedře DCE při výuce předmětu počítačové systémy od zimního semestru 2005. Potřebnou infrastrukturu (DHCP, TFTP a NFS) zajišťoval tehdejší správce Zdeněk Šebek. Používal tehdy pro ten účel open source variantu linuxové distribuce Red Hat (dnes Fedora) a upravenou verzi zavaděče GRUB, která v sobě měla integrovaný ovladač síťové karty, což umožňovalo zavést bezdiskový linuxový systém klientské stanice po síti.

Na klientských stanicích byl vyhrazen jeden diskový oddíl pro zavaděč GRUB v. 0.97 a druhý pro swap. Na ostatních diskových oddílech pak byly různé instalace MS Windows XP.

GRUB umožňoval kromě zaváděí bezdiskového linuxu podle potřeby měnit u NTFS oddílů typ z NTFS (7) na Hidden NTFS (17) a obráceně, a tím spouštět podle potřeby různé verze MS Windows XP na jednom fyzickém stroji, aniž by mezi nimi docházelo ke kolizím.

Koncem roku 2006 Zdeněk Šebek z katedry odešel a na jeho místo byl přijat Lukáš Moc.

Disc overlay

Zásadním nedostatkem stávajícího řešení bylo, že bezdiskové klientské stanice musely mít v rámci NFS oddělené adresáře s konfigurací (/etc) a adresáře do kterých bezdiskový systém klienta vyžadoval zápis (/var).

Správu bezdiskového linuxu pro klientské stanice převzal Michal Sojka s Pavlem Píšou, kteří jej vyžívali při výuce.

Michal Sojka rozšířil původní GRUB o další ovladače a změnil bezdiskovou distribuci na Debian. Pavel Píša upravil původní koncept tak, aby klientské stanice nevyžadovaly extra adresáře na straně NFS serveru.

Docílil toho využitím unionfs (dnes používáme aufs, který z původního unionfs vyšel). Ten umožnil překrýt systémový adresář transparentní vrstvou, která umožňuje ukládat změny do jiného adresáře - kupř. na lokální disk. Z pohledu uživatele se pak takový překrytý adresář jeví jako kdyby byl normálně zapisovatelný, ale původních souborů se žádná změna nedotkne.

Tento koncept se nazývá overlay filesystem

Virtualizace diskless infrastruktury

S virtualizací se na katedře DCE začal na dvou identických strojích značky IBM Lukáš Moc, který nahradil Zdeňka Šebka, v průběhu r. 2007. Jako virtualizační prostředí byl vybrán Xen, který ve své době znamenal nejvýkonnější open source řešení. Na tyto stroje byl nainstalován SUSE LINUX 10.1

Xen vyžadoval podporu paravirtualizace v jádře hosta i hostitele. Protože šlo o virtualizační řešení, jehož vývoj neprobíhal v rámci hlavní větve linuxového jádra, bylo třeba u většiny distribucí aplikovat na zdrojové kódy linuxového jádra poměrně rozsáhlý patch. To nebylo nutné u distribuce SUSE LINUX 10.1, která měla upravené jádro a potřebné nástroje k jeho administraci dispozici již v podobě binárních balíčků.


Stroj se jménem k335host pak sloužil výhradně potřebám diskless infrastruktury.

  • Přes NFS propagoval systémové adresáře pro bezdiskový Debian a domovské adresáře studentů, a zároveň..
  • hostil virtuální stroj k909, který klientským strojům v laboratořích K2 (laboratoř) a L909 (Strojovna) přiděloval přes DHCP IP adresy a nabízel ke stažení přes TFTP server linuxový kernel s ramdiskem pro diskless Debian.

Tato infrastruktura běžela až do konce letního semestru v r.2009.

Druhý, pojmenovaný dcehost, hostil virtuální stroje, které měly nahradit stávající fyzické stroje sloužící potřebám katedry.


Zavádění přes PXE

Stávající koncept diskless řešení se dal považovat vcelku za ustálený, ale další změnu, si vyžádal upgrade klientských stanic v laboratoři L909 (Strojovna).

Původní verze zavaděče GRUB 0.97 totiž vyžadovala pro bezdiskové zavádění linuxového systému zakompilovaný ovladač síťové karty. Vývoj této verze zavaděče však již byl tou dobou zastaven ve prospěch modernější verze GRUB2, která však měla koncept síťového zavádění navržen jinak a starší verze neměla pro novější typy síťových karet k dispozici potřebné ovladače.

GRUB2 místo zakompilovaných ovladačů využívá PXE, které je součástí všech moderních síťových karet. Na rozdíl od předchůdce nevyžadoval lokální instalaci na klientské stanici, protože jej bylo možné zavést po síti, ale jak se ukázalo, neuměl přes PXE zavést bezdiskový Debian. Nicméně výhody zavádění přes PXE byly natolik zřejmé, že nový správce diskless infrastruktury Aleš Kapica který problém řešil ve spolupráci s Pavlem Píšou, navrhnul kombinaci zavaděče PXELINUX v kombinaci se zaváděním lokálních systémů přes GRUB2.

Ke změnám došlo také na straně fyzického hostitele. Virtuály, které zajišťují služby pro katedru byly přesunuty do jiné virtualizační infrastruktury, takže bylo možné využít oba IBM stroje. Jeden jako hlavní virtualizační stroj a druhý pro zálohování a běh testovacího virtuálního bezdiskového stroje postel.

Stroje byly přeinstalovány na Debian. Stroj k335host změnil jméno na k909b a sesterský stroj dcehost na k909a. I nadále se k virtualizaci používal XEN, protože jejich procesory neměly podporu HW virtualizace, ale služby původního hostitelského stroje k335host a virtuálního stroje k909 byly sloučeny do nového virtuálu k2, postaveného rovněž na Debianu. Kromě publikování uživatelských adresářů přes NFS, DHCP a TFTP na něm byl spuštěn také licenční server pro potřeby laboratoří.

Takový byl stav do konce letního semestru r.2012. Tato koncepce bezdiskových linuxových stanic se osvědčila natolik, že ji Pavel Píša veřejně prezentoval v rámci akce InstallFest 2011

Diskless Debian v prostředí KVM

Poslední velká změna proběhla během prázdnin 2012. Touto změnou byl přesun diskless infrastruktury z virtuálního prostředí XEN do virtuálního prostředí KVM.

První pokus byl sice učiněn již o rok dříve, ale nakonec jsme se rozhodli migraci do virtualizačního prostředí KVM odložit. Výsledkem tohoto prvního pokusu je manuálová stránka KVM (konfigurace sítě).

Toto rozhodnutí se ukázalo zcela na místě, protože se postupem času ukázala použitá virtualizační infrastruktura pro KVM příliš zranitelná při administrátorské chybě. K takové chybě došlo v červenci 2012 a vedla k radikálnímu přehodnocení stávajícího konceptu.

Ve finálním řešení se mimo jiné odrazila i několikaletá veskrze pozitivní zkušenost s NFS a bezdiskovým Debianem, takže výsledkem je infrastruktura, která je schopna ustát i případnou administrátorskou chybu.

Postupem času u nás došlo ke specializaci strojů, takže z hlediska diskless Debianu došlo na stroji k2 opět k oddělení NFS serveru a licenčního serveru od zbylých služeb (DHCP a TFTP). Všechny virtualizované linuxové stroje běží jako bezdiskové - včetně k2 a jejich systémové "disky" poskytuje jeden a týž NFS server, který je z hlediska síťové komunikace zcela odříznutý od vnější sítě. Disk s daty virtuálních strojů se redundantně zrcadlí přes DRBD na záložní stroj, který je v případě potřeby schopen fungovat jako datový i virtualizační, a v pravidelných intervalech probíhá přes rsync zálohování na zcela oddělení diskové pole s Btrfs, kde má každý virtuální stroj samostatné subvolume, které se po každém odzálohování snapshotuje. Díky tomu lze kdykoliv v případě potřeby i zpětně dohledat změny na úrovni souborového systému.

Změna ověřování z NDS na LDAP

Do 10. února 2014 se uživatelé v laboratořích přihlašovali uživatelskými údaji Novellu.

pam_ldap.conf libnss-ldap.conf

GlusterFS

Od února 2015, v létě reálné nasazení. Použití blokových zařízení. Zdlouhavá resynchronizace.

Od listopadu 2016 nasazení NFS serveru Ganesha.

Přechod na distribuovaná bloková zařízení

V lednu 2016 přechod na Ceph (Sheepdog)

Export do duhových laboratoří

Disklessový sendvič – září 2016

Na další vývoj disklessové infrastruktury měly vliv tenze spojené s přetahováním katedry DCE na CIIRC – Český institut informatiky, robotiky a kybernetiky (anglicky Czech Institute of Informatics, Robotics and Cybernetics) vznikl jako součást ČVUT 1. července 2013 z iniciativy vedoucího katedry kybernetiky (DC - Department of Cybernetics) Vladimíra Maříka. Který chtěl vybudovat vlastní „pomník”, inspirovaný pravděpodobně roku 2012 vznikem UCEEBu, na který by přetáhnul z Fakulty elektrotechnické ekonomicky nejperspektivnější subjekty.

Lavírování katedry DCE vedlo k tomu, že se její správce disklessové infrastruktury Aleš Kapica, který nehodlal opustit historickou budovu ČVUT na Karlově náměstí, dohodnul na úvazku s novým vedoucím katedry kybernetiky Janem Kybicem, a implementoval do laboratoří DC stejnou infrastrukturu jako byla na DC.

K přechodu DCE na CIIRC nakonec nedošlo. A uklidnění zjitřených vášní otevřelo cestu k posílení vzájemné spolupráce v oblasti IT nejenom mezi katedrami na Karlově náměstí ale celé Fakulty elektrotechnické.


Revoluční novinkou pro diskless bylo zavedení sendviče, který umožnil oddělit software, který byl součástí linuxové distribuce od software, který bylo nutné instalovat nestandardním způsobem. Velice brzy se však ukázalo, že lze tímto způsobem elegantně vyřešit i mnoho jiných, dříve jen s obtížemi řešitelných zadání.

Ověřování uživatelů vůči AD a LDAPu

Jedním z nich byl rozdílný způsob ověřování uživatelů na DCE a DC.

Na DCE se původně ověřovali uživatelé vůči Novellu, tak aby měli shodné přihlašovací heslo. Jenže Novell byl zastaralý a hledalo se jiné řešení. A volba padla na MS AD, které provozuje VIC. Tím pádem se otevřela do budoucna cesta ke sjednocení uživatelských ID a jmen a jednotnému přihlašování do všech laboratorních systémů v rámci celého ČVUT.

Počítačové laboratoře na katedře DC však nepoužívaly MS Windows, ale linux který se již od roku 2011 ověřoval vůči vlastnímu LDAPu, který je z praktického hlediska mnohem výhodnější neboť uživatel musí zadat své hlavní heslo ČVUT jen při nastavení pracovního hesla.

  • Není nutné si vymýšlet a pamatovat složitá hesla

Přesun uživatelských účtů na netapp

Únor 2017

Využití disklessu k distribuci lokálních instalací MS Windows

K distribuci lokálně instalovaných MS Windows se na DCE začal linuxový diskless využívat od února 2010.

Komprimovaný přenos dat po síti

Původně se používaly dva jednoduché skripty:

Na zdroji se spouštěl exportHDD.sh, který data z exportovaného blokového zařízení (diskový odddíl, nebo celý disk) načítaná přes dd, průběžně komprimoval pomocí pigz, a komprimovaný proud dál posílal přes nc na vybraný port, odkud si ho pak "nasávala" cílová stanice.
Na cílové stanici se spouštěl skript importHDD.sh. Ten navázal přes nc spojení se zdrojem a poté začal přijímat komprimovaný proud dat, který nejprve dekomprimoval přes pigz a poté zapisoval pomocí dd na svoje lokální blokové zařízení. Během přenosu se dekomprimovaná data na cílové stanici proháněla ještě přes pv, aby bylo možné průběžně sledovat jaký je stav zpracování.

Byl to jednoduchý způsob, kterým se dal poměrně rychle 1:1 zkopírovat obsah disku z jednoho stroje na druhý.

U tohoto kopírování nezáleželo na typu diskového oddílu, ani jeho obsahu. Bylo tudíž možné takto kopírovat nejenom diskové oddíly formátované na NTFS, ale i ty na kterých byl linuxový souborový systém.

Háček byl v tom, že po překopírování bylo nutné pokaždé stroj nastartovat, přihlásit se, manuálně přejmenovat a restartovat, aby pak nedocházelo ke konfliktům na síti. Stroje se nekopírovaly najednou, ale postupně a to bylo dost zdlouhavé.

Přechodem na full-diskless se od září 2013 začal využívat lokální disk pracovních stanic v laboratořích výlučně pro MS Windows.

Využití ntfs-clone a hromadná distribuce dat přes UDP

Protože se nadále klonovala již pouze data z diskových oddílů formátovaných na NTFS, bylo možné místo původního dd použít ntfs-clone a původní skripty nahradily nové:

Na zdroji se nově spouštěl skript send-ntfs-img.sh, který načítal přes ntfs-clone data z NTFS, získaný proud dat přes pigz zkomprimoval a pak přes udp-sender nabízel k broadcastové distribuci. Významným zlepšením tedy bylo, že jeden komprimovaný proud dat mohlo současně přijímat několik stanic současně.
Na cílových stanicích, se přes pssh paralelně spouštěl skript receive-ntfs-img.sh, který navázal spojení s "vysílačem", a po zahájení přenosu přijímaná data průběžně dekomprimoval a přes ntfsclone ládoval do cílového diskového oddílu, formátovaného rovněž na NTFS.
Po skončení přenosu tento skript naklonovaný diskový oddíl připojil na přípojný bod /mnt a do adresáře /mnt/windows/Windows/System32/GroupPolicy/Machine/Scripts/Startup vložil upravený skript rename.vbs, který po restartu naklonovaný systém automaticky přejmenoval a zrestartoval – tím odpadla nutnost naklonované stroje obcházet a postupně přejmenovávat.

Bohužel s přechodem na Active Directory přestalo být tohle řešení dostačující, protože kvůli zadoménování bylo nutné naklonované stroje stejně postupně obejít.

ntfs-radio.sh

Od listopadu 2018