Home
Repository 32bit  Forum
Repository 64bit  Wiki

Modifiche

OpenMosix

1 234 byte aggiunti, 16:10, 15 set 2012
Caricato i file esterni all'interno di wikislacky e aggiornati i link interni
= OpenMosix =
 
<div style="text-align:center;">'''Nota Bene:'''<br />''Purtroppo questa guida è divenuta oramai obsoleta in quanto il team di progetto e supporto OpenMosix si è sciolto. Esiste comunque una valida alternativa (http://www.mosix.org/) anche se è stata resa disponibile gratuitamente per un massimo di 6 nodi. Non avendo provato ad implementare sistemi di clustering col nuovo progetto, non saprei dire se questa guida possa tornare ancora utile o meno.<br />Lascio comunque in rete il documento seppure al solo scopo didattico.''</div><br />
== Cronologia d'installazione di un cluster OpenMosix su Slackware GNU/Linux==
Nella stesura di questa mini-guida, considererò che il lettore sappia di cosa si parli ed, eventualmente, abbia dipanato gli ultimi i propri dubbi dando un'leggendo in maniera approfondita occhiata al il mitico e ben scritto [http://tldp.org/HOWTO/pdf/openMosix-HOWTO.pdf "''OpenMosix HOW-TO''"], facilmente reperibile in rete anche presso il sito:<br /> [http://www.openmosix.org http ://www.openmosix.org]<br /> dove viene illustrato con chiarezza cosa sia un [http://it.wikipedia.org/wiki/Computer_cluster "'''''cluster'''''"] e le diverse tipologie che lo caratterizzano.
== Organizzazione generale ==
Prima di cominciare è bene organizzare il tutto tenendo presente che serviranno almeno due PC (ma più se ne hanno e più sarà divertente giocare...) collegabili tra di loro tramite [http://it.wikipedia.org/wiki/Scheda_di_rete schede ] [http://it.wikipedia.org/wiki/Ethernet ''ethernet''] che siano quanto meno [http://it.wikipedia.org/wiki/IEEE_802.3 100 base "''tT''" (100 Mb)]; non che non sia possibile portare a termine la nostra creazione con delle schede meno veloci ma, lato ludo-didattico a parte, si verrebbero a creare delle restrizioni prestazionali dovute appunto alla bassa velocità alla quale questo tipo di schede lavorano: ci si troverebbe insomma di fronte al cosiddetto "''bottle-neck''" (collo di bottiglia).<br />
Il progetto è stato messo in opera, nel caso specifico, utilizzando :<br />
* 4 PC con [http://it.wikipedia.org/wiki/CPU ''CPU''] [http://it.wikipedia.org/wiki/Amd AMD] (3 [http://it.wikipedia.org/wiki/Duron Duron] ed 1 [http://it.wikipedia.org/wiki/Athlon_XP Athlon])
== Scelta della distribuzione ==
Senza ombra di dubbio, dopo innumerevoli prove, la distribuzione che ha servito meglio a questo scopo per semplicità e velocità di configurazione è stata la mitica e massiccia "''Slackware''" nella versione "''10.2''".
<u>''ATTENZIONE: la procedura d'installazione del sistema e dei vari pacchetti che vedremo nel corso di questa guida, è da ripetersi per ogni singolo elaboratore che intendiamo far diventare parte del nostro cluster.''</u>
slackware login: root
[''INVIO'']
Iniziamo ora col [http://it.wikipedia.org/wiki/Partizione_%28informatica%29 partizionare ] il nostro ''hard-disk'' (potete farlo come preferite, io ho semplicemente creato una partizione di ''swap'' da 128Mb all'inizio del disco ed ho assegnato lo spazio rimanente a "''/''") :
#fdisk /dev/hd[x]
[''INVIO'']
... usciamo ed andiamo oltre, caso contrario, cancelliamo tutte le partizioni come segue :
Command (m for help): d
[''INVIO'']  
Command (m for help): 1
[''INVIO'']
 
Command (m for help): d
[''INVIO'']
 
Command (m for help): 2
[''INVIO'']
 
... continuando così finché non avremo ripulito completamente la tabella delle partizioni. A cosa fatta, andiamo a crearci le nostre :
Command (m for help): n
[''INVIO'']
 
Partition number (1-4): 1
[''INVIO'']
 
First cylinder (1-xxx, default 1):
[''INVIO'']
 
Last cylinder or +size or +sizeM (1-xxx, default xxx): +128M
[''INVIO'']
Command (m for help): t
[''INVIO'']
 
Partition number (1-4): 1
[''INVIO'']
 
Hex code (type L to list codes) : 82
[''INVIO'']
 
Command (m for help) : n
[''INVIO'']
 
Partition number (1-4): 2
[''INVIO'']
 
First cylinder (xx-xxx, default xx):
[''INVIO'']
 
Last cylinder or +size or +sizeM (xx-xxx, default xxx):
[''INVIO'']
 
Command (m for help): a
[''INVIO'']
 
Partition number (1-4): 2
[''INVIO'']
 
Command (m for help): p
[''INVIO'']
 
Controlliamo che tutto sia OK, poi :
Command (m for help): w
[''INVIO'']
 
Una volta fatto questo, se abbiamo cambiato la tabella delle partizioni, è sempre buona norma fare un ''reboot'' del sistema; personalmente non ho mai incontrato problemi, ma con dell'hardware un po' più datato del mio, ho notato che ciò è fondamentale. Possiamo quindi riavviare il computer con la pressione di :
[''CTRL''] + [''ALT''] + [''CANC'']
* Tutti i [http://it.wikipedia.org/wiki/Compilatore compilatori] ([http://it.wikipedia.org/wiki/GNU_Compiler_Collection "''gcc''"])
* Tutte le [http://it.wikipedia.org/wiki/Libreria_software librerie ] di sistema (anche quelle che non si conoscono)
* Il sistema grafico [http://it.wikipedia.org/wiki/X_Window_System "''X''"] (almeno per il PC "head")
* Tutte le cose che possano permettere un funzionamento impeccabile del protocollo ''[http://it.wikipedia.org/wiki/Transmission_Control_Protocol TCP] / [http://it.wikipedia.org/wiki/Internet_Protocol IP]''
Adesso, ci verrà chiesto l'indirizzo del ''gateway'' che ci darà accesso ad Internet per cui, se lo abbiamo già predisposto, inseriremo quello, altrimenti ne sceglieremo uno che non intendiamo utilizzare per gli altri nodi del ''cluster'' ma che sarà l'indirizzo di rete esclusivo del computer "gateway".<br />
Passiamo ora alla fase successiva; si tratta di attivare i servizi di rete che ci potranno interessare. Tra tutti, a mio riguardo, ho ritenuto utili :
* [http://it.wikipedia.org/wiki/Inetd "''inetd''"]* [http://it.wikipedia.org/wiki/Samba_%28software%29 "''smbd''"]
* "''nfsd''"
* "''sshd''"
#ls
[''INVIO'']
Andiamo ora ad editare e commentare tutte le linee di codice che permettono l'attivazione di quei servizi che non ci interessa far partire durante il ''boot'' del sistema (ad esempio, inutile dirgli di far partire il database [http://it.wikipedia.org/wiki/Mysql "''mysqlMySQL''"] se non lo abbiamo nemmeno installato così come [http://it.wikipedia.org/wiki/Apache_HTTP_Server "''Apache''"] ecc. ecc.) :
#nano rc.S
[''INVIO'']
 
#nano rc.6
[''INVIO'']
 
#nano rc.K
[''INVIO'']
 
#nano rc.M
[''INVIO'']
 
#nano rc.inetd2
[''INVIO'']
 
#nano rc.inet1
[''INVIO'']
 
#nano rc.inetd.conf
[''INVIO'']
 
Ovviamente non c'è una regola precisa nella modifica degli ''script'' visti sopra ed esula anche dall'intenzione di questa guida, ma c'è una considerazione da fare: a parte il nostro "head", sul quale verranno gestite la configurazione e le prestazioni dell'intero ''cluster'' e al quale collegheremo i nostri unici monitor, tastiera eccetera, degli altri nodi, una volta configurati a dovere uno per uno, non vedremo nemmeno i messaggi di ''bootstrap'' per cui, più quest'ultimo sarà snello e veloce, più sarà pratico e semplice l'utilizzo del ''cluster''. Assicuriamoci di non aver commesso errori controllando che il sistema si riavvii senza intoppi; nel caso ce ne fossero, aiutiamoci leggendo con attenzione i messaggi che la nostra ''Slackware'' ci stampa a schermo e/o con il suo dettagliatissimo manuale.
== PASSO 4 : Patching del kernel ==
Una volta appurato che tutto sia OK, possiamo cominciare con il cercare la versione del ''kernel'' che fa al caso nostro ed i pacchetti necessari. Il ''kernel'' che ci serve (l'ultima versione disponibile al momento in cui sto scrivendo) è il [http://www.kernel.org/pub/linux/kernel/v2.4/ linux-2.4.26.tar.bz2 "''vanilla-kernel''"] scaricabile dal sito [http://www.kernel.org / www.kernel.org] nominato :
linux-2.4.26.tar.gz
o
openmosixview-1.5.tar.gz
Andiamo ora a dare una breve spiegazione di ognuno di loro.<br />
La versione del ''kernel'' che ci siamo scaricati è quella alla quale si deve applicare l'ultima [http://it.wikipedia.org/wiki/Patch_%28informatica%29 "''patch''" ] testata e stabile chiamata[http://sourceforge.net/project/downloading.php?group_id=46729&use_mirror=switch&filename=openMosix-2.4.26-1.bz2&34814734 "''openmosix-2.4.26.bz2''"] che permette, previa riconfigurazione del ''kernel'' stesso, di abilitare tutte quelle voci che rendono possibile avere la piena funzionalità che un ''cluster'' "''OpenMosix''" offre.<br />Il secondo pacchetto invece, come anche il nome stesso lascia intuire, [http://sourceforge.net/project/downloading.php?group_id=46729&use_mirror=kent&filename=openmosix-tools-0.3.6-2.tar.gz&69158778 "''openmosix-tools''"], serve a fornire tutti quegli strumenti coi quali possiamo amministrare e configurare al meglio, da [http://it.wikipedia.org/wiki/Linea_di_comando linea di comando], il nostro ''cluster''. E' grazie a questi infatti, che ci potremo sbizzarrire a far "girare" un determinato [http://it.wikipedia.org/wiki/Processo_%28informatica%29 processo ] su di un elaboratore anziché su un altro o, semplicemente, monitorare cosa stia facendo il nostro [http://it.wikipedia.org/wiki/Supercomputer ''super-computer'' ] in un determinato momento.<br />L'ultimo pacchetto che ci siamo procurati, invece, altro non è che l'interfaccia grafica degli strumenti di amministrazione visti in precedenza grazie al quale ci sarà possibile gestire il ''cluster'' anche dai nostri ambienti grafici preferiti (nella fattispecie, [http://www.openmosixview.com/download.html "''openmosixview''"] si appoggia alle librerie [http://it.wikipedia.org/wiki/Qt_%28toolkit%29 "''QT''"], le native di ''KDE'') e considerare il tutto come un gioco entusiasmante. Ma passiamo alla pratica.<br />
Portiamoci nella directory che dovrà contenere i sorgenti del ''kernel'' con un :
#cd /usr/src/
[''INVIO'']
Qui, se durante la fase di installazione del sistema abbiamo deciso di metterci anche i sorgenti del ''kernel'' "''bare.i''", troveremo una directory (oltre ad eventuali altre) chiamata "''linux-2.4.31''" ed un [http://it.wikipedia.org/wiki/Collegamento_simbolico ''link'' ] chiamato "''linux''" che punta alla directory in questione; controlliamo ciò con un :
#ls -all
[''INVIO'']
#migrate [xxx] nodo3
[''INVIO'']
...dove "''[xxx]''" sta per il [http://it.wikipedia.org/wiki/PID_%28Unix%29 "''pid''" (''Process Identification Number'') ] del processo che si vuole far migrare. Da notare che non tutti i processi, ovviamente, hanno la possibilità di migrare. Ad esempio, l'applicativo [http://nostatic.org/grip/ "''Grip''"] che permette di codificare i CD audio in [http://it.wikipedia.org/wiki/Mp3 "''MP3''"], non potrà migrare in quanto ha bisogno di interagire con il lettore CD/DVD per poter estrarre le tracce. Al contrario, migrerà [http://lame.sourceforge.net/index.php "''LAME''"] che è appunto l'applicazione che effettua la codifica da traccia audio ad "''MP3''"!.<br />
Felici ed entusiasti di aver ottenuto ciò, c'è, però, un appunto da fare; tutto questo è già molto bello di per se, ma le impostazioni di default non è detto che conoscano ed abbiano settato al meglio tutti i nodi (anche se probabilmente sarà così). Nel caso in cui, ad esempio, avessimo un nodo molto più potente rispetto al nostro "head" (sul quale mettiamo si stia lavorando) quanto a quantitativo di memoria e velocità della ''CPU'', potremmo desiderare che la maggior parte dei processi che andremo a lanciare, migrino sul nodo in questione almeno fino al suo utilizzo massimo. Per fare questo, ci affideremo ancora una volta ai tools "''OpenMosix''" :
#mosctl getspeed
#ssh-keygen -t rsa
[''INVIO'']
Il programma "''ssh-keygen''", ci chiederà una ''passphrase''; digitiamola correttamente e ripetiamola se preferiamo, altrimenti <u>facciamo semplicemente due volte [''INVIO''] senza inserirne alcuna</u>. Quest'ultimo comando ci permette di creare una "chiave" (una sorta diciamo di "file di riconoscimento") che, una volta salvata in locale e copiata in remoto nei vari nodi, garantisce che l'identità di chi sta cercando di comunicare da un nodo all'altro, sia la nostra, per cui non ci verrà richiesta nessuna ''password'' per l'autenticazione (anche in considerazione del fatto che tramite il programma non potremmo fornirla).<br />
Per far ciò, procederemo con :
#scp /root/.ssh/id_rsa.pub nodo1:/root/.ssh/authorized_keys2
== PASSO 9 : Considerazioni finali ==
Le considerazioni che potremmo fare sulle ottimizzazioni da apportare al nostro ''cluster'' "''OpenMosix''" sono molteplici: a partire dagli applicativi da utilizzare per sfruttarlo al meglio, fino ad arrivare alle varie configurazioni di rete che potremmo implementare. Leggevo proprio l'altro giorno tempo addietro un documentazione che prendeva in esame proprio quest'ultimo punto. A quanto pare (ed è anche facilmente immaginabile) un ''cluster'' che abbia i vari nodi connessi in modalità [http://it.wikipedia.org/wiki/P2p "''P2P''" (''peer-to-peer'')], rende molto di più in termini di migrazione dei processi (e quindi di resa generale delle elaborazioni) rispetto ad un ''cluster'' configurato tramite ''switch'' soprattutto se la rete in oggetto è a 100Mb. È chiaro che la configurazione "''P2P''" comporta dei limiti quali, ad esempio, il numero massimo di dispositivi ''ethernet'' configurabili in ciascuno dei nodi che dipende direttamente dal numero di slots slot [http://it.wikipedia.org/wiki/Peripheral_Component_Interconnect ''PCI(Peripheral Component Interconnect'' )] disponibili sulle [http://it.wikipedia.org/wiki/Scheda_madre mainboards ] (sebbene esistano in commercio delle meravigliose schede ''ethetrnet'' con 4 o più porte anche "Gigabit").<br />Se fate esperimenti in proposito fatemi sapere, sarebbe interessante scambiarci informazioni ed esperienze a riguardo!
Buon divertimento!
[http[Media://www.slacky.eu/wikislack/file/openmosix/OpenMosix.pdf pdf‎|Versione in PDF]]
Autore : Juri Carlini<br />
e-mail : eth0juri@slackye-loft.iteu
== Altri link ==
[http://www.slacky.eu/wikislack/index.php?title=[Wake_on_Lan |Wake On LANLan]]
[http://www.slacky.eu/wikislack/index.php?title=[Installare_Slackware_tramite_pen_drive_USB |Installare Slackware tramite pen drive USB]]