Jak vytvořit bezdiskový stroj s operačním systémem GNU/Linux
Operační systémy virtuálních strojů mají většinou své soubory uloženy podobně jako fyzické stroje v rámci souborového systému na lokálním blokovém zařízení.
Za tímto lokálním blokovým zařízením se může ovšem může ve skutečnosti skrývat cokoliv:
Lokální blokové zařízení
- běžné fyzické blokové zařízení ve stroji
- logický LV disk
- soubor uložený na lokálním souborovém systému, připojený připojený přes loop
Síťové blokové zařízení
- iSCSI disk
- RBD disk (Ceph)
- NBD zařízení
Blokové zařízení typu RAID
- DRBD raid
- sw RAID složený ze síťových blokových zařízení
O komunikaci mezi virtuálním blokovým zařízením a místem kde jsou data ve skutečnosti uložená se stará použitý virtualizační nástroj.
Bezdiskové stroje s operačním systémem GNU/Linux využívají toho, že jádro, které běží v paměti může použít i jiné speciální souborové systémy - mezi nimi i síťový souborový systém NFS.
Výhody síťového souborového systému NFS
- Umožňuje přístup do jednoho adresáře z více přípojných bodů, což usnadnuňuje průběžné zálohování
- Nasdílení jednotlivých souborů sebou nese nižší nároky na síťovou režii - Největší nápor na I/O operace totiž bývá při startu operačního systému, kdy se načítají do paměti systémové soubory. Dál se již načítají soubory pouze v případě potřeby a ukládají změny. 95% nainstalovaných souborů většinou systém nikdy nepoužije. Je-li používán jeden adresář z více míst, nemusí server data opakovaně načítat z disku, ale může použít vyrovnávací paměť, což vede ke snížení průběžné režie I/O operací na blokových zařízeních serveru.
Nevýhody síťového souborového systému NFS
- Jeden centrální přístupový bod - když se rozpadne síťové připojení může dojít ke zhroucení stroje, není-li spojení obnoveno včas.
- Je třeba dbát na zajištění bezpečnosti přístupu - Multiuživatelský přístup dovoluje měnit soubory pod rukou.
- Nižší hrubý výkon při rozsáhlých I/O operacích. NFS není vhodné pro uložení velkých souborů, u kterých dochází v celém rozsahu ke změnám uložených dat - typicky databáze či obrazu disků virtuálních strojů
I když síťové souborové systémy obecně nejsou vhodné pro práci s takovými soubory lze při dobrém HW vybavení a optimalizované konfiguraci síťových prvků[1] NFS použít. |
Vytvoření výchozí instalace bezdiskového stroje
Použití bezdiskových strojů předpokládá, že máte k dispozici:
- datové úložiště
- na kterém běží NFS server[2]
- stroj
- Může fyzický i vrtuální. Musí všk k němu být funkční síťové připojení k adresáři sdílenému přes NFS
Instalace do NFS adresáře s použitím utility debootstrap
- 1. Nejprve si vytvořím adresář
/path_to_blank
, který poslouží jako přípojný bod pro NFS - 2. Po jeho vytvoření připojím adresář
/volumes/diskless_root_dir
nasdílený datovým úložištěm s IP adresou 147.32.87.10 - 3. Příkazem mount zkontroluji, zda-li je adresář opravdu připojen v režimu rw
- 4. Pokud je připojení v pořádku, vytvořím v připojeném adresáři podadresář
/path_to_blank/blank_wheezy
do kterého provedu minimalistickou instalaci debootstrap - 5. Po jeho vytvoření do něj příkazem cd skočím..
- 6. ..a spustím přes debootstrap instalaci Debianu wheezy pro 64 bitovou architekturu procesoru (amd64)
Pokud deboostrap doběhne v pořádku, odstraní sám svůj dočasný adresář. Přesto je ovšem třeba ještě provést menší čistku a úpravu konfigurace.
Vyčištění a úprava konfigurace bezdiskového stroje
Abychom nedopatřením nenabourali systém stroje ze kterého jsme instalaci provedli, je vhodné se přepnout do prostředí budoucího stroje pomocí příkazu chroot.
Že jsme na správném místě si lze nejlépe ověřit tak, že spustíme příkaz history. Ten by neměl vypsat žádný z příkazů, který jsme použili před příkazem chroot
Odstranění nepotřebných souborů
Nyní můžeme s klidnou duší vymazat obsah adresáře /dev
, protože ten si moderní linuxový kernel vytváří při startu sám na základě rozpoznaného hardware.
Stejně tak můžeme vymazat veškerý obsah adresáře /var/cache/apt/archives
, který se stáhnul během instalace, protože už více nebude třeba.
Po vyčištění je třeba provést úpravu základní konfigurace
Nastavení /etc/hostname
Při instalaci přes deboostrap je obvykle zkopírován
soubor hostname
stroje na kterém byl příkaz spuštěn.
Pokud budeme tuto instalaci používat jako výchozí polotovar, je dobré nastavit obsah tohoto souboru tak aby to bylo zřejmé. Kupř. blank_wheezy
Pokud má být tato instalace spuštěna jako konkrétní stroj, tak samozřejmě musí obsah /etc/hostname
odpovídat jeho jménu
Nastavení obsahu /etc/hosts
Obsah souboru /etc/hosts
se nekopíruje a ve výchozím nastavení obsahuje pouze lokální adresy. Tudíž u polotovaru nedoplňujeme nic. U stroje který má být spuštěn nastavíme před lokální adresy jeho síťovou adresu a doménu.
Nastavení obsahu /etc/resolv.conf
Soubor /etc/resolv.conf
opět deboostrap kopíruje ze stroje na kterém byl spuštěn. Jeho obsah se obvykle nijak nemění. Pouze má-li být stroj spouštěn v jiné síti, než kde byl instalován, je nutná úprava
Nastavení výchozího uživatele
Jsme-li v chrootu, je to vhodná příležitost k nastavení výchozího uživatele a jeho hesla. Tímto uživatelem nemusí být nutně uživatel root, pokud si doinstalujete aplikaci sudo a nově vytvořeného uživatele přidáte do stejnojmenné skupiny.
Pokud nechcete sudo používat, tak je třeba nastavit uživateli root heslo příkazem passwd, neboť pak byste nemohli v prostředí virtuálního použít příkaz su, ani provést případné opravy v single režimu.
Přidání již existujícího hesla
Heslo, resp. jeho "hash" nemusíte příkazem passwd nutně generovat znovu, ale má-li se při autorizaci používat soubor /etc/passwd
, je možné ho překopírovat jeho "hash" do tohoto souboru odjinud.
Obecně je však doporučeno používat hesla umístěná v souboru /etc/shadow
. To však vyžaduje úpravu i souborů /etc/passwd
a /etc/groups
, kdy první znak *
(hvězdička) na každém řádku musí být nahrazen znakem x
(malé x). Tuto operaci však lze jednoduše realizovat pomocí editoru sed
cd /etc cp group group- sed 's/:*:/:x:/' ./group- > group cp passwd passwd- sed 's/:*:/:x:/' ./passwd- > passwd cp shadows shadows- sed 's/:*:/:x:/g' ./shadows- > group
Do souboru shadow
se pak uživateli root místo znaku 'x' vloží hash pro heslo
root:x:15550:0:99999:7::: root:$6$rdGp6JD2$2EWFVk36DTP0oUCmyv.O9fiD3vY1W1dG8togiu37501MI9.pQr2pJ0YSe/NPEU7q7BQgAD5GUxWjzT49iH9UU.:15550:0:99999:7:::
Instalace a aktualizace bezdiskového stroje
Instalaci bezdiskového virtuálního stroje lze aktualizovat a případně rozšiřovat o další instalační balíky z několika míst:
Je-li stroj spuštěn s NFS adresářem připojeným v režimu RW, pak lze provádět tyto operace přímo v něm, ovšem s jednou výjimkou. A tou je aktualizace, při které je vyžadován remount kořenového adresáře. Ten pochopitelně u diskless stroje nelze provést, neboť jsou z něj obvykle otevřeny soubory se kterými se zrovna pracuje.
I v takovém případě si ale lze poradit, a to tak, že se systém spustí z ramdisku a aktualizace se udělá přes chroot.
Aktualizace přes chroot je mnohem pohodlnější, protože ji lze provést na libovolném stroji a přitom využít jeho konektivity a nástrojů. V případě bezdiskového systému, který po spuštění používá overlay je to dokonce jediný možný způsob, neboť v jeho případě se veškeré změny pro vypnutí stroje zahodí.
Archivace a instalace z archívu v prostředí ramdisku
Spuštění a aktualizace bezdiskového stroje
Nejprve stroj přes PXE získá konfiguraci z DHCP a cestu k zaváděcímu souboru na TFTP serveru Zaváděcí soubor mu předá cestu k zaváděcím souborům a parametry jádra
V případě virtuálních strojů není nutné DHCP, ale parametry pro zavedení jádra lze předat přes příkazovou řádku, či prostřednictvím konfiguračního souboru virtuálního stroje.
Důležité je zajistit aby měl stroj v okamžiku připojení NFS funkční síťovou konfiguraci a připojení. Dále je nutné odstavit služby, které by se při startu případně pokoušely o rekonfiguraci síťového připojení. V takovém případě by se totiž mohlo stát, že stroj zůstane viset, protože mu přestane fungovat připojení na NFS server.