Pokud jste vykonali, co jsem vám na konci minulého dílu uložil za domácí úkol, máte teď k dispozici několik sesíťovaných počítačů. Abychom mohli používat Mosix, budeme si muset přeložit vlastní jádro. Každá verze Mosixu je pevně svázána s určitou verzí linuxového jádra a pro úspěšné používání byste měli používat stejně nakonfigurovaná jádra stejných verzí na všech uzlech. Já v současné době používám kernel 2.4.9 s Mosixem 1.3.0 a na těchto verzích vám také popíšu konfiguraci.
Instalace jádra
Nejprve si samozřejmě musíme obstarat zdrojáky kernelu (například z Kernel.org) a odpovídající verzi Mosixu z Mosix.org (download najdeme v sekci Distribution). Zdrojáky kernelu i Mosixu rozbalíme například v adresáři /tmp, kde tímto získáme podadresáře linux a MOSIX-1.3.0. Nyní máme na výběr dvě možnosti – buď instalovat Mosix automaticky pomocí skriptu MOSIX-1.3.0/mosix.install, nebo ručně, což je větší zábava a navíc tak můžeme udělat více chyb. Takže zvolíme druhou možnost, přejdeme do adresáře /tmp/linux a zadáme příkaz
patch -p1 < ../MOSIX-1.3.0/patches.2.4.9
čímž získáme modifikovaný kernel-tree toužící po kompilaci. Nejprve samozřejmě musíme naše budoucí jádro nakonfigurovat, což zajistíme příkazem make menuconfig (případně make xconfig, nebo postaru make config – podle toho, jak to komu nejvíce vyhovuje). V menu nejspíš ihned zaregistrujeme novou položku MOSIX, která umožňuje přístup k několika dalším volbám. Stručně si je popíšeme spolu s doporučením, zda volbu zapnout [+], nebo ne [-]:
- [+] MOSIX process migration support
- Pokud chcete procesům umožnit migraci mezi uzly, zaškrtněte tuto volbu. Pokud se však rozhodnete, že migraci povolit nechcete, nemá cenu dál konfigurovat kernel s podporou Mosixu ani číst tento článek. S případnými odpadlíky se tedy v tomto okamžiku loučím.
- [-] Support clusters with a complex network topology
- V případě, že všechny uzly vašeho clusteru jsou připojeny k jedinému switchi, tuto volbu nepotřebujete. Pokud však používáte uzly s různou rychlostí připojení, výrazně odlišným síťovým hardware nebo jinou „komplexní“ topologii, zaškrtněte tuto volbu. Všechny uzly vašeho clusteru však v tomto bodě musí být nakonfigurovány stejně.
- [-] MOSIX Kernel Debugger
- Pokud vám některý uzel spadne a vy chcete zjistit, kde a proč se tak stalo, zapněte tuto volbu.
- [+] Stricter security on MOSIX ports
- Mosix ke komunikaci mezi uzly samozřejmě používá několik TCP a UDP portů. Pokud chcete zajistit vyšší bezpečnost (převážně u uzlů přístupných zvnějšku clusteru), je tato volba určena pro vás.
- [3] Level of process-identity disclosure
- Odmigruje-li proces ze svého home-node, je možné o něm na jeho aktuálním uzlu zjistit několik údajů. Čím vyšší hodnotu zde nastavíte, tím více údajů budete mít na hostitelském uzlu k dispozici. Pokud vám nebrání paranoia, zvolte nejvyšší hodnotu, tedy trojku.
- [+] Create the kernel with a „-mosix“ extension
- Pokud chcete, aby verze kernelu byla 2.4.9-mosix místo 2.4.9, zapněte tuto volbu.
- [+] Direct File-System Access
- DFSA umožňuje odmigrovanému procesu přistupovat ke sdílenému filesystému lokálně na aktuálním uzlu. V opačném případě se všechny IO-syscally musí forwardovat na home-node, což je zdlouhavé a navíc to home-node odrazuje od migrací (pokud proces vykonává spoustu přístupů k souborům, je režie s tím spojená tak vysoká, že je výhodnější proces nechat běžet „doma“). Všechny uzly musí být v tomto i následujícím bodě nakonfigurovány stejně.
- [+] MOSIX File-System
- MFS je filesystem zajišťující konzistenci dat mezi uzly a zároveň jeden ze dvou FS podporujících DFSA. Každý node si může namountovat MFS, díky čemuž bude mít přístup k téměř všem souborům všech aktivních uzlů.
- [+] Poll/Select exceptions on pipes
- Jestliže vaše programy používají roury (pipe) a chtějí být upozorňovány na skutečnost, že z nich již nikdo nečte, zapněte tuto volbu.
Zbytek kernelu nakonfigurujte podle svých zvyklostí a potřeb a přeložte. Měli byste použít gcc 2.91.66 (neboli egcs 1.1.2), který v případě RedHatu bývá nainstalován jako kgcc, protože jiné verze mohou generovat chybný kód. Já osobně však používám gcc 2.95.3 a nezaznamenal jsem žádné problémy. K hotovému jádru dále překompilujte patřičné moduly, nainstalujte je a nové jádro nabootujte.
Instalace utilit
Přejděte do adresáře /tmp/MOSIX-1.3.0, vytvořte v něm podadresář user a příkazem
tar xvf user.tar -C user
do něj rozbalte zdrojové soubory utilit. Nyní přejděte do právě vytvořeného adresáře user a editujte soubor Rules.make tak, aby u proměnné CFLAGS bylo místo původního -I/usr/src/linux skutečné umístění zdrojáků mosix-kernelu, tedy -I/tmp/linux. Nyní by příkazem make mělo dojít k bezchybnému překompilování všeho potřebného. Příkazem make install vytvořené programy včetně dokumentace nainstalujete a dále pomocí
tar xvf manuals.tar -C/usr/man
rozbalíte na své místo manuálové stránky ke konfiguračním souborům, DFSA a MFS. Tím je základní instalace prakticky dokončena. Za domácí úkol toto proveďte na všech strojích budoucího clusteru, abychom si ho příště již mohli nakonfigurovat a spustit.