Configurazione di una farm Linux con Mosix e ClusterNFS Ottobre

Transcript

Configurazione di una farm Linux con Mosix e ClusterNFS Ottobre
Configurazione di una farm Linux con
Mosix e ClusterNFS
Ottobre 2001
Autori:
Alessandra Doria
Rosario Esposito
Paolo Mastroserio
Francesco Maria Taurino
Gennaro Tortone
Introduzione
Questa nota intende descrivere in modo dettagliato le installazioni e configurazioni necessarie per creare
una farm di PC, sia monoprocessore che SMP, che utilizzi Mosix per la condivisione delle risorse di calcolo.
Per semplificare la gestione dell'insieme dei PC, si è scelto di realizzare un cluster diskless, che utilizza
ClusterNFS per la condivisione del file system.
Per una descrizione accurata del funzionamento di Mosix e di Cluster-NFS e delle motivazioni che hanno
portato alla scelta di questi tools si faccia riferimento alla nota “MOSIX: Linux farm ad alte prestazioni
R.Esposito, P. Lo Re, P. Mastroserio, F.M. Taurino, G. Tortone”
[http://www.na.infn.it/compreso/mosix/mosix.htm]
La farm descritta è composta da un gateway (chiamato anche server nel seguito) e da un insieme nodi
(clients) diskless. Il gateway ed i nodi girano con Linux 2.4.5 (Mandrake 8.0), sono connessi tra loro in rete
locale con accesso dall'esterno tramite il gateway, e sono cos\'i configurati:
Gateway
- 1 case tower ATX
- 1 scheda madre Asus CUR-DLS
(Dual Pentium III - scheda video AGP 4Mb)
- 2 processori Intel Pentium III 800 Mhz
- 512 Mb RAM PC133 (2 x 256 Mb)
- 2 HDD Seagate Barracuda 30 Gb
(home utenti - RAID 0)
- 2 HDD Quantum Fireball Lct10 20 Gb
(s.o. gateway + s.o. nodi diskless )
- 1 FDD 1,44 Mb
- 1 scheda ethernet Netgear GA620T 10/100/1000 Mbit/sec
- 1 scheda ethernet 3Com 3C905C-TX 10/100 Mbit/sec
Nodi
- 1 scheda madre Abit VP6
(Dual Pentium III )
- 2 processori Intel Pentium III 800 Mhz
- 512 Mb RAM PC133
- 1 FDD 1,44 Mb
- 1 scheda video AGP 4Mb
- 1 scheda ethernet 3Com 3C905C-TX 10/100 Mbit/sec
Passi principali di installazione
1. Installazione e configurazione di Mosix sul gateway.
2. Creazione di un nuovo kernel per i clients con le opzioni adeguate a fare il boot dalla rete e a
montare / via NFS
3. ``Tagging'' dell' immagine del kernel (mknbi).
4. Creazione del codice per il network boot dei clients (etherboot).
5. Installazione dei servizi bootp e tftp sul gateway.
6. Installazione di ClusterNFS per consentire ai clients di montare la / del server, ma con sottoalberi
specifici per ogni client o comuni a tutti i clients.
Descriviamo ora nel dettaglio i passi di installazione, presupponendo di aver installato il sistema operativo
Linux sul gateway/server, mentre i clients verranno configurati in modo da effettuare il boot via rete dal
server.
Installazione di Mosix e configurazione
I seguenti presupposti vanno verificati prima di effettuare l'installazione di Mosix:
- Tutti i nodi del cluster devono essere connessi tramite una LAN che supporti TCP/IP sotto Linux.
- Tutti i nodi devono avere una unità matematica floating point.
- Nel caso di nodi multiprocessore, tutti i processori devono avere la stessa velocità.
Mosix va scaricato dal sito ufficiale http://www.mosix.org/, nella versione adeguata al proprio kernel. Dopo
aver estratto i files dalla distribuzione (in formato .tar.gz) si può procedere ad una installazione
automatica o manuale (i cui passi sono accuratamente descritti sul sito).
Abbiamo effettuato l'installazione automatica, mediante lo script mosix.install, che è conveniente nella
maggior parte dei casi.
L'installazione consiste nell'applicazione di una patch ai sorgenti del kernel Linux e nella ricompilazione del
kernel stesso.
Effettua inoltre l'aggiornamento di alcuni files di sistema,
- /etc/inittab
- /etc/inetd.conf and/ o /etc/xinetd.d/*
- /etc/lilo.conf
- /etc/rc.d/init.d/atd
la cui versione precedente è salvata dall'installazione automatica con l'estensione .pre_mosix .
Dopo l'installazione è necessario riempire il file di configurazione /etc/mosix.map con gli indirizzi dei nodi
della propria farm, secondo un formato descritto nella documentazione del pacchetto.
Esempio di mosix.map:
# MOSIX-#
IP
number-of-nodes
# ============================
1
192.84.134.161
1
1
192.168.1.1
ALIAS
2
192.168.1.2
3
Nell’esempio il nodo 1 è il gateway, dotato di due interfacce di rete, mentre 3 nodi (a partire dal numero 2
con indirizzi IP consecutivi) sono i clients.
Creazione del kernel per i clients
Per creare il kernel per i nodi client. utilizziamo i sorgenti del kernel del server ( su cui è già stato installato
Mosix) configurando le opzioni adeguate a fare il boot dalla rete e a montare il filesystem / via NFS.
Eseguiamo quindi make xconfig selezionando le seguenti opzioni:
!"!#$%! &' (
)*
+, -'.&/0#
1 2
33456#798;:<89=7>?8
3/3?@A7=CBDEF5GHIC56798;:<89=(7>8
JK DD =IC56798;:<89=(7>LDG?@4*M
Si crea quindi il nuovo kernel nel modo usuale:
cd /usr/src/linux
make dep
make bzImage
Tagging dell’immagine del kernel
Installiamo l'utility mknbi [ http://etherboot.sourceforge.net/distribution.html ] che consente di “taggare”
immagine del kernel con gli opportuni parametri (chiameremo l’eseguibile mknbi-linux).
Creiamo la directory /tftpboot, in cui la nuova immagine del kernel verrà prodotta affinchè sia
disponibile ai clients tramite il servizio tftpd. In particolare lanceremo quindi:
mknbi-linux --output=/tftpboot/vmlinuz.3com /usr/src/linux/arch/i386/boot/bzimage
--append= “root=/dev/nfs ip=bootp”
I parametri “root=/dev/nfs ip=bootp”
attivare l'autoconfigurazione dell'IP al boot.
specificano di montare il root filesystem sotto NFS e di
Creazione del codice per network boot dei clients
=C=2OQP RR"7= 7ES"DD"=T8%DUE.V;7<ICDEWHX7TYG 7=
Installiamo il pacchetto Etherboot [ N
] per creare un codice di bootstrap
N
per i clients, che avvii il boot sulla rete. Questo codice può essere scritto su una EPROM o più
semplicemente su un floppy. Tutte le più diffuse schede di rete sono supportate da Etherboot, solo su
piattaforme di tipo x86.
Dopo aver estratto i files dalla distribuzione andiamo in etherboot-5.0.x/src per configurare le opzioni
e compilare il codice (attenzione: versioni vecchie di gcc potrebbero dare un codice non funzionante,
consultare la documentazione.)
config con le opzioni
- DNO_DHCP_SUPPORT (usa bootp invece che DHCP)
- DASK_BOOT=0 (non chiede se fare boot locale o da rete)
make
make bin32/3c90x.fd0 (dove 3c905 è la scheda di rete ed il codice viene creato sul floppy fd0)
Con questo dischetto di boot possiamo far partire il nodi clients per leggerne il MAC address da fornire al
bootp server.
Installazione dei servizi tftp e bootp sul server
Avendo scelto una configurazione diskless per i nodi della farm, è necessario abilitare il server a fornire il
boot via rete ai nodi client, mediante i servizi tftp e bootp.
Occorre quindi:
- installare i pacchetti ed abilitare i servizi tftp e bootp in /etc/services;
- configurare l'avvio dei daemon in /etc/inetd.conf oppure in /etc/xinetd.d/bootp
e /etc/xinetd.d/tftp;
- inserire /etc/bootptab una riga di configurazione per ogni clients abilitato a fare il boot. Per fare ciò è
necessario conoscere il MAC address di ogni nodo sulla rete locale ed associarlo al suo IP address.
Una riga di bootptab sarà del tipo:
node2:hn:ht=ethernet:ha=000102dd97b0:ip=192.168.1.2:bf=vmlinuz.3com
Installazione di ClusterNFS
Questa versione modificata del server NFS consente ai clients di montare via NFS il root filesystem del
server, mantenendo però in sottoalberi separati i files di configurazione e quelli che vengono aggiornati da
ogni sistema.
I files (o directory) che differiscono da quelli del server possono essere comuni a tutti i clients oppure
specifici per ogni client, identificati rispettivamente con il suffisso $$CLIENT$$ oppure
$$HOSTNAME=nodeX$$.
Prima di installare ClusterNFS occorre disinstallare il server NFS.
Scarichiamo da Z[0[]\_^a`<`bcd"ef[,g hjikle9me%nXdh0b9g<kCnXh0og"maig9[ il pacchetto (utilizzata la versione 0.91alpha) ed
estraiamo i files nel modo usuale. Per installare eseguiamo:
configure
make
make install
Dobbiamo attivare i daemon con le opportune opzioni inseriamo in nel file /etc/rcd/init.d/nfs :
rpc.mountd
rpc.nfsd –traslate-names
ed eseguiamo nfs start.