free web hosting | free website | Web Hosting | Free Website Submission | shopping cart | php hosting


Free Web Hosting - Watch Free Movies Online - Watch Free TV Online - Free Domain Hosting

Video SharingVideo Sharing Image HostingImage Hosting

Oil prices are rising daily. Use Local Gas Prices to patronize only the most affordable gas stations near you.

..................................................

EL PROJECTE CLARR

CLÚSTER GNU/LINUX D'ALT RENDIMENT BASAT EN EL RECICLATGE

...........................................

ContacteAutor: Pau Escrich



Nota autor: Sóc conscient de que aquest document conté varies errates (incloses les faltes ortogràfiques), no he tingut temps per rectificar-les, algun dia ho faré.

Llicència: Aquest document roman sota llicència de Creative Commons

Document: Si a algú li interessa el document en pdf o swx, que concacti amb mi via email i li facilitaré

Aquest projecte prové de www.dabax.net visita-la per trobar artícles, manuals, howtos, chuletes i més projectes sobre Software Lliure.





ÍNDEX

1. El clúster.

1.1 Introducció

1.2 Definició

1.3 Característiques

1.4 El Flop

1.5 Exemples

2. GNU/Linux

2.1 Linux

2.2 GNU

2.3 Les distribucions

2.4 Debian GNU/Linux

3. Propòsits, el CLARR

4. Configuració del servidor

4.1 Instal·lació del sistema Debian GNU/Linux

4.1.1 Obtenció del programari

4.1.2 Primeres configuracions

4.1.3 Particionament

4.1.4 Gestor d’arrencada

4.1.5 Configuració del sistema base

4.1.6 APT

4.1.7 Instal·lació de paquets

4.2 Configuracions bàsiques

4.2.1 L’entorn gràfic

4.3 LTSP

4.4 Instal·lació dels serveis necessaris

4.4.1 DHCP

4.4.2 TFTP

4.4.3 NFS

4.5 Elaboració del disquet d’arrencada

4.6 Configuració de la xarxa

4.7 Configuració dels fitxers necessaris

4.7.1 El dhcpd.conf

4.7.2 El inetd.conf

4.7.3 El exports

4.8 L’arbre de directoris dels nodes diskless

5. El Kernel

5.1 OpenMosix i el kernel

5.2 El kernel dels nodes diskless

5.3 El kernel del servidor

6. OpenMosix.

6.1 OpenMosix tools

6.2 OpenMosix View

6.3 La configuració i aplicacions de OpenMosix

6.4 SSH

7. Muntatge mecànic

8. Proves i resultats

8.1 Compressió d’àudio

8.2 Compilació

8.3 Desencriptació

8.4 Test

8.5 Avaluació total

9. Scripts

10. Conclusions

10.1 Valoració del treball

10.2 El CLARR, els clústers

10.3 Una alternativa per l’institut

11. Glossari

12. Bibliografia



Presentació

Aquest projecte, titulat com “El projecte CLARR”, és un treball de recerca elaborat per l’alumne Pau Escrich Garcia de segon de Batxillerat modalitat tecnològica. Consta de dues parts, una pràctica i un altra teòrica.

En la part pràctica, es du a terme la construcció d’un clúster de computadors format per cinc unitats funcionals, amb el principal propòsit d’aconseguir un major rendiment computacional. Serà realitzat mitjançant únicament programari lliure.

La segona part, teòrica, és l’elaboració d’un projecte textual on hi consten diversos punts. En primer lloc una introducció general on són tractats una sèrie de conceptes fonamentals per la comprensió del treball, en segon un extens seguiment específic sobre el realitzat en la pràctica, i en tercer lloc són exposades un seguit de proves on es reflecteix el rendiment aconseguit.

El treball està orientat a un àmbit indefinit de lectors, està estructurat de manera que una persona sense coneixements informàtics pugui entendre’l, i un usuari relativament avançat es senti interessat degut a la complexitat del propòsit final. La part introductòria i de conclusió són aptes sobretot per aquests lectors no entesos en el tema. Mentre que la part central, el seguiment tècnic, va dirigida a un àmbit de lectors més avançat.

He escollit aquest tema perquè m’agrada el món de la informàtica i sobretot el sistema GNU/Linux juntament amb la seva filosofia de comunitat lliure de coneixements. Amés buscava un temari amb el que pugés superarme i d’aquesta manera adquirir nous coneixements que hem pugessin ser útils en el futur.



1. El clúster

1.1 Introducció

Avui en dia, amb els ordinadors dels que disposem, ens resulta en ocasions impossible calcular certes necessitats científiques degut a la relativament poca capacitat de càlcul de la que disposen. La prevenció de canvis climàtics, el tractament massiu en la informació de finances, la fusió nuclear, l'enginyeria genètica... tot depèn en gran mesura de la potència de càlcul dels ordinadors.

La computació d'alt nivell a estat des de sempre, i de manera exclusiva a les mans d'uns pocs privilegiats. Això va portar als científics amb no massa poder econòmic a cercar una alternativa per obtenir un ordinador potent i econòmicament assequible, així que, seguint aquesta línia, arribaren a la conclusió de que la millor solució possible era el reciclatge. Consisteix en connectar una sèrie d’ordinadors de baix cost econòmic, com ho són els PC (“Personal Computer”), formant una xarxa i elaborant programes per fer-los treballar en paral·lel, compartint processos. El resultat fou una solució que acapara la potència dels grans superordinadors a un preu molt més assequible.

Aquesta idea no és del tot recent. A la dècada dels 50, l'exèrcit Nord-Americà va crear una xarxa d'ordinadors de vàlvules de buit nomenada “SAGE”. Més endavant, als 80 es van arribar a comercialitzar agrupacions de mini-computadors VAX. Però no va ser fins als anys 90 que l'idea fou estesa a nivell mundial, degut al factors econòmics i tècnics, com el baix preu dels PC i l'elaboració de xarxes, i l'aparició del sistema lliure GNU/Linux.

Així doncs el 1994 va néixer la primera “granja d’ordinadors” o clúster, al Centre de Vols Espacials Goddard de la NASA, amb l'objectiu de resoldre problemes computacionals que apareixen en les ciències de la Terra i l'Espai. Els pioners d'aquest projecte foren els doctors Thomas Sterling i Donald Becker, que connectaren entre sí 16 PC amb microprocessador Intel 486 a través d'una xarxa ethernet mitjançant GNU/Linux. El clúster desenvolupat va tenir una eficiència de 70 Mflops, una velocitat avui en dia ridícula però molt pròxima a la acaparada per alguns dels superordinadors de l'època i gastant només 45.000 Euros. Els investigadors li donaren el nom de Beowulf en honor a l'heroi de les llegendes medievals.

Des de llavors es crearen multitud de projectes basats en el processament paral·lel, aproximadament 50 dels 500 ordinadors més potents del món són clústers.


1.2 Definició

EL concepte clúster es un concepte molt difícil de definir ja que és utilitzat per identificar varis tipus d'associacions de computadors força diferenciats entre ells. Dos definicions força apropiades serien, per una banda la del TermCat: “un conjunt d'unitats funcionals interconnectades per mitjà d'una xarxa que actuen com una sola unitat”, i per l'altra la del Doctor Thomas Sterling: “una classe d'arquitectura de computador paral·lel que es basa en unir màquines independents integrades per mitja de xarxes d'interconexió, per obtenir un sistema coordinat, capaç de processar una carrega”.


1.3 Característiques

Cadascun dels ordinadors que formen part d’un clúster s’anomena “node”, en el nostre cas tots els nodes posseeixen una mateixa arquitectura (i586) i, per tant, és tracta d’un clúster homogeni.

Actualment existeixen dos tipus de clústers: els d’alta disponibilitat i els d’alt rendiment.

Els d’alta disponibilitat són aquells destinats a la necessitat de suportar un error de maquinari o programari. Si un dels nodes cau, la resta es reparteixen les seves tasques i intenten reactivar-lo. Aquest seria el cas de servidors web, ordinadors que han de prestar servei les 24h del dia els 365 dies de l’any.

Els d’alt rendiment es basen en un conjunt de màquines configurades per aconseguir una capacitat de càlcul màxima al repartir-se la càrrega dels processos entre els nodes existents. Són utilitzats en la resolució d’algoritmes científics, reproducció d’imatges 3D, compilació de grans codis de programació, xifrat de contrasenyes… Aquest tipus de clúster es el que intentarem elaborar.


Els clústers d'alt rendiment funcionen amb una característica fonamental: el processament paral·lel. Aquest consisteix en la capacitat d'utilitzar una sèrie de processadors per executar diferents parts d'un mateix programa de manera simultània. L'objectiu principal del paral·lelisme es reduir el número de cicles de l'execució d'un programa en relació al número de processadors (nodes) vigents en el sistema, “divideix i venceràs”.

Amés d'aquestes dues classificacions, trobem un altre aspecte més que caracteritza els diferents clústers, la transparència. Parlem de transparència quan el programador no necessita elaborar un tipus d'aplicació especial per el processament paral·lel ni canviar res depenent de la tipologia de la xarxa. O sigui, podríem executar-hi la majoria d'aplicacions que podem utilitzar en els ordinadors normals sense ni tan sols adonar-nos de que estem processant en paral·lel. Un exemple de clúster no transparent seria el projecte Beawoulf, en el que es va necessitar l'elaboració de programes especials per aquest, i l’anterior coneixement del tipus de xarxa per poder-los programar correctament.


1.4 El Flop

Com definim la velocitat d'un ordinador? Usualment parlem d’Hz (cicles per segon), però aquesta es una mesura que ha quedat obsoleta degut a la seva poca exactitud. Tècnicament es parla de Flop. Un Flop es una operació en coma flotant per segon, molt per sobre -una operació en coma flotant seria com una suma o una multiplicació-.

Actualment l'ordinador considerat més potent del món (el BlueGene/L segons www.top500.org) té una capacitat de càlcul de 70,72 Tflops, o sigui 70.720.000.000.000 operacions en coma flotant per segon. Com a dada curiosa cal afegir que la velocitat d'un processador d'un PC actual gira al voltant dels 300 Mflops, 300.000.000 flops.


1.5 Exemples

- Google

Un bon exemple d’un clúster d'alta disponibilitat important seria el famós cercador web “Google”.

Google até més de 5000 milions de búsquedes cada mes (unes 2000 per segon), i cerca entre més de 3000 milions de documents. Per atendre totes aquestes peticions Google va optar per la construcció d'un clúster amb vora de 20000 servidors repartits en 7 centres (“data centers”), Washingyon DC (USA), Herndon (Virginia, USA), Zurich (Suïsa)... Els servidor són senzills PC que disposen d'un sol processador Intel amb un disc dur de 80 Gb i un memòria RAM que va des de 256 Mb a 1 Gb. Aquests funcionen sota el sistema operatiu “Red-Hat Linux”.

Google va optar per aquest tipus de tecnologia degut a seva relació cost/rendiment, utilitzant senzills PC's i reduint considerablement el cost s’aconsegueix un enorme rendiment.



- Earth Simulator Center

És un projecte japonès de l'any 2002 amb l'objectiu de simular una “Terra virtual” i estudiar com seria el món en el futur utilitzant tecnologia avançada de simulació numèrica.

El clúster simulador de la terra (ES) és un sistema de computació paral·lela que consisteix en 640 nodes interconnectats per un switch. Cada node es un sistema amb memòria compartida, que consisteix en 8 processadors aritmètics, un sistema de memòria principal de 16 Gb una unitat d'accés remot i un processador d'entrada/sortida. El rendiment màxim de cada un dels processadors que formen els node és de 8 Gflops, i el del clúster en conjunt és de 40 Tflops.

Els Objectius principals del Eath Simulator són: l'estudi i predicció del canvi climàtic global, la predicció de desastres meteorològics, la prevenció d’efectes d’escalfament global, l'estudi de les plaques tectòniques... Aquest projecte és un clar exemple d'un clúster d'alt rendiment



- MareNostrum

Es avui en dia l'ordinador més potent d'Europa i aproximadament el quart de tot el món, s'ubica a Barcelona, a la Universitat Politècnica de Catalunya. És un clúster construït per IBM, actualment consta de 3564 processadors a amb una arquitectura de 64 bits a 2.2 Ghz, s’estima que al final de la seva construcció constarà de 4564 processadors. El sistema funciona sota GNU/Linux, i disposa d'una memòria central de 9 terabytes i 128 de disc. Aquest nou ordinador ocupa una instal·lació de 160m2 i pesa 40 tones, compta amb una capacitat de càlcul de 20,43 Tflops i es calcula que finalitzat arribarà als 40 Tflops. EL MareNostrum serà utilitzat en l'investigació del genoma humà, l'estructura de les proteïnes i en el disseny de nous medicaments.


- SETI

El SETI és un projecte pel descobriment d'intel·ligència extraterrestre a partir de l’analització de senyals radiofòniques procedents de l'espai.

Les senyals són captades pel radiotelescopi d’Arecibo (Puero Rico) amb els seus 305 metres de diàmetre, el més gran del món, qual cosa li permet rebre senyals molt més dèbils que qualsevol altre telescopi. Aquestes senyals són enviades a la universitat de Berkeley (California), on les divideixen en fragments molt petits que seran repartits entre els més de 4 milions d'usuaris inscrits en el projecte SETI@home.

Per analitzar tota aquesta informació, faria falta un ordinador immensament potent i immensament car, per això els seus fundadors optaren per la creació d'un gran clúster format per milers d'usuaris voluntaris procedents de qualsevol part del món. Així doncs van distribuir un salvapantalles que, entra en funcionament quan l’ordinador està en desús, llavors via internet, passava a formar part del clúster, i iniciava el procés d’analització dels petits fragments captats pel telescopi.

Aquest no seria un perfecte exemple del concepte de clúster que s'acostuma a utilitzar, ja que no existeix una relació directa entre els diferents processadors dels nodes, no podríem parlar d'un processament paral·lel directe. No obstant, això si, podem parlar de clúster ja que s’adapta a la definició d'aquest: “conjunt d'unitats funcionals interconnectades per mitjà d'una xarxa que actuen com una sola unitat”.



2. GNU/Linux

2.1 Linux

El juliol de 1991, un jove informàtic estudiant de 21 anys de l’Universitat de Helsinki anomenat Linus Torvalds va escriure un missatge a un fòrum d’internet explicant que havia començat un projecte sobre un nou sistema basat en Minix (clon del sistema operatiu UNIX creat per el professor Andrew Tanenbaum el 1987). Poc a poc el projecte va anar agafant forma gràcies a més i més col·laboradors, i en qüestió de mesos la primera versió oficial de Linux va veure la llum.

Estrictament quan parlem de Linux parlem d'un nucli (kernel), que és un sistema responsable de facilitar a les diferents aplicacions accés al maquinari (hardware). Comunament s'utilitza per definir però, el sistema operatiu GNU/Linux el qual inclou el nucli Linux i el projecte GNU.


2.2 GNU

El projecte GNU fou iniciat el 1987 per Richard Stallman amb el propòsit de crear un sistema operatiu totalment lliure. Les nom GNU és un acrònim que significa “GNU No és Unix”, ja que Unix és un sistema operatiu tancat i GNU un projecte amb un propòsit totalment oposat.

Els principis de la llicència de GNU anomenada GPL són tres: El primer, la llibertat a copiar el programa i oferir-lo als amics o companys de feina; el segon, el dret a canviar el programa de la manera que es vulgui, ja que es disposa de ple accés al codi font, i tercer, la llibertat de distribuir una versió millorada i d'aquesta manera ajudar a la societat (si es redistribueix programari GNU, es pot fixar un preu per l'acte físic de transferir la còpia o es pot donar de franc).

En principi, GNU englobava només una sèrie de programes, però es trobaren amb el problema de que per poder-los usar necessitaven sistemes operatius de programari propietari (com UNIX). Així va començar la recerca d’un nucli per poder elaborar un sistema operatiu totalment lliure. Com es pot suposar aquest nucli fou el de Linus Torvalds, d’aquesta manera nasqué el famós GNU/Linux. Que és en resum, una simbiosi entre un kernel anomenat Linux i un ampli programari anomenat GNU.

Actualment han sorgit varies aplicacions per el sistema GNU/Linux que no corresponen al projecte GNU i no romanen sota la llicència GPL, un clar exemple és l'entorn gràfic KDE.


2.3 Les distribucions

Com GNU/Linux és un sistema obert i lliure, des d'un bon principi es van crear diferents grups de programadors que crearen i distribuïren la seva pròpia versió d'aquest. Cadascuna d'aquestes versions és el que anomenem distribució. Existeixen desenes, fins i tot centenars de distribucions GNU/Linux, cadascuna amb les seves pròpies característiques. Seguidament n'analitzarem les més famoses:


2.4 Debian GNU/Linux

Debian GNU/Linux fou iniciat per Ian Murdock el 1993, és un projecte totalment no comercial, possiblement el més fidel als ideals que iniciaren el moviment del programari lliure. Així com passa en altres distribucions com Red-hat o Suse, no hi ha cap empresa darrera Debian, sinó centenars de programadors voluntaris de tot el mon que contribueixen en el projecte. És, per tant, un sistema basat en la cooperació voluntària i desinteressada.

El procés de desenvolupament parteix de tres branques: l'estable (“estable”), la de prova (“testing”) i l’inestable (“inestable”). Quan apareix una nova versió d'un paquet, aquest és situat a la branca inestable per les primeres proves. En cas de passar-les, el paquet és mogut a la rama de prova, on es realitza un rigorós procés de d’avaluació que dura diversos mesos fins que és declarat estable.
Aquest procés té l’avantatge de que s'aconsegueix molta estabilitat, els errors gairebé són inexistents; però té com a desavantatge que al haver de passar tantes proves, Debian (la versió estable) no és un sistema massa actualitzat. Mentre que la branca estable és perfecta per servidors amb funcions crítiques, molts usuaris prefereixen usar la de proves, més actualitzada pels seus ordinadors personals, i finalment són els programadors que contribueixen en el projecte Debian qui generalment utilitza l'inestable.

Debian té la reputació de ser dificultosa a l'hora de la instal·lació i la configuració, ja que és requerit un profund coneixement sobre el maquinari de la computadora, però compensant aquest contra, tenim l'instal·lador de paquets APT Totes les instal·lacions i actualitzacions del sistema es poden fer automàticament mitjançant aquesta eina.



3. Propòsits, el CLARR

El propòsit d'aquest projecte és l'elaboració d'un clúster homogeni de computadors d'alt rendiment mitjançant el reciclatge d'ordinadors personals i utilitzant programari lliure.

El clúster constarà de 5 unitats funcionals interconnectades entre si per mitjà d'un switch ethernet, d'aquestes cinc unitats tan sols una tindrà disc dur, l'anomenarem servidor. Es configurarà el sistema de manera que amb el disc dur del servidor, via xarxa, podran ser arrencades la resta d'unitats, aquesta propietat s'anomena arrencada “diskless”. Les unitats diskless, únicament constaran d’una placa base amb processador, memòria ram, targeta de xarxa i disquetera, mentre que el servidor contindrà tots els components i perifèrics necessaris per utilitzar-lo.


El procés descrit a continuació, és un seguiment explícit de tots els passos que s'han dut a terme, juntament amb les seves explicacions. Exposat de forma general, els diferents processos són:


Tot el projecte estarà basat en el reciclatge, la majoria dels components provindran d'ordinadors vells i gairebé inútils avui en dia. S'intentarà que el cost econòmic total del projecte sigui zero. El producte final tindrà l’aparença d'un únic ordinador: serà una caixa de fusta que contindrà les 4 unitats diskless funcionant amb dues fonts d'alimentació, tindrem, a banda, l'ordinador servidor, que controlarà tot el clúster.

S’ha batejat el projecte amb el nom de: CLARR, una associació de sigles que representen les idees principals del projecte: Clúster de Linux d’Alt Rendiment basat en el Reciclatge.



4. Configuració del servidor

Necessitarem un ordinador dins el clúster que actuï com a servidor d'on els 4 nodes sense disc establiran el seu sistema operatiu i on tindrem les aplicacions necessàries per la configuració i seguiment d'aquest.

L'ordinador servidor té les següents característiques:

- Un processador “Pentium-MMX” a 233Mhz.

- 64Mb de memòria RAM.

- 2 discs durs IDE; un de 2,5Gb i un altre de 1Gb.

- Un lector de CD “LG 52x”.

- Una disquetera de 3½.

- Una targeta de de vídeo genèrica.

- Una targeta de xarxa “Realtek”.

- Teclat, ratolí i monitor


En aquest gràfic, s'esquematitza la relació que hi ha entre els diferents nodes del sistema:

Com podem observar, en els nodes diskless, el processador juntament amb la memòria i altres integrats de la placa, i mitjançant la targeta de xarxa, utilitza el disc dur del servidor per establir el seu sistema operatiu.

El node servidor, una vegada la resta del sistema està funcionant, comença el procés de migració, dit en altres paraules; aprofita el micro-processador i la memòria RAM dels nodes diskless per processar les seves tasques.


A continuació es proposa una taula amb els passos que recorre un node diskless per arribar al punt de funcionar dins el clúster.


1

El node obté el subministrament d'energia que l'engegarà.

2

A la BIOS està configurat que la unitat de arrencada sigui la disquetera.

3

El disquet amb un programari especial, detecta la targeta de xarxa i cerca un servidor DHCP per obtenir les dades de configuració de la seva arrencada.

4

El node servidor, gestiona la petició i cerca en la seua base de dades per assignar una direcció la direcció IP que correspon al no de segons la seva direcció MAC.

5

Una vegada obtinguda la configuració, mitjançant el protocol TFTP serà iniciada la descarrega del nucli

6

En quan el nucli sigui descarregat, aquest passarà a tenir el control sobre l'ordinador i començarà la càrrega del sistema operatiu resident a l'ordinador del node servidor, mitjançant NFS.

7

En quant siguin carregats els “runlevels”, s'executarà el dimoni “openmosix” que s'encarregarà de gestionar el node dins el clúster.


Per aconseguir fer possible tot aquest procés, s'haurà de tenir instal·lat un sistema GNU/Linux i s'hauran de configurar una sèrie de serveis que explicarem posteriorment amb més detall, aquests són:

- DHCP: El necessitarem per iniciar els nodes en la xarxa.

- TFTP: Serà qui transmetrà el nucli del sistema operatiu als nodes diskless.

- NFS: És un protocol de xarxa que permetrà utilitzar als nodes diskless el disc dur del servidor com si fos el seu propi disc.

- OpenMosix: Per una banda és el programari que s'encarregarà de migrar els processos i rebre els processos migrats d'altres nodes, qui gestiona el clúster en qüestió y per l'altra és una extensió que s'ha d'aplicar al nucli per que tot el procés de migració sigui possible.


4.1 Instal·lació del sistema Debian GNU/Linux

El primer pas, òbviament és la instal·lació del sistema operatiu, ja que sense aquest cap aplicació podria funcionar. A continuació s'explica detalladament aquest procés.


      1. Obtenció del programari

Instal·larem la versió de Debian: “Sarge”. És l’última que ha sortit, tot i que encara esta en mode de proves (“testing”), ja és gairebé estable. Ens la descarregarem de la pàgina oficial de Debian (“www.debian.org), escollirem la versió especial per la instal·lació via xarxa (“Sarge i386 netinstall”), tot i que la instal·lació es farà més llarga degut a que haurem de descarregar els paquets des d’internet, val la pena ja que així ens assegurarem de tenir l'ultima versió de tot el programari.


4.1.2 Primeres configuracions

Una vegada tinguem el CD preparat per la instal·lació, l’introduirem al lector i en assegurarem de que a la BIOS hi estigui com a primera unitat d’arrencada.

A la primera pantalla ens deixa elegir l’idioma, jo vaig elegir Espanyol, ja que el català té numerosos errors de traducció. Seguidament ens preguntarà per el nostre país i el tipus de teclat.

Acabada aquesta primera configuració bàsica, començarà un procés de detecció del hardware per trobar un mitjà d’instal·lació, en el nostre cas lògicament trobarà el lector i dintre el CD del qual podrà instal·lar els mòduls base per la posterior detecció de la resta de components.

El següent apartat, és la configuració de la xarxa, ens demana les dades d’aquesta per poder descarregar els fitxers necessaris per la instal·lació. Si disposem d’una xarxa amb un servidor DHCP la configuració serà automàtica, si no és així ho haurem de configurar manualment.

4.1.3 Particionament

Aquest és un dels passos més importants. Això, en relació a la memòria de que es disposa, es pot organitzar d’una manera o d’un altra, però sempre seguint aquests criteris:


El sistema d’arxius que utilitzarem per totes les particions menys per la swap, és el actualment estàndar anomenat “ext3”. Aquest sistema deriva de l'anterior “ext2”, disposa de varies millores notables com l'anomenat “journaling”, un sistema que periòdicament grava els fitxers oberts per impedir pèrdues d'informació o corrupció de dades. Amés el sistema “ext3” es més ràpid, doncs tracta la lectura i escriptura de fitxers de forma optimitzada reduint així el temps de accés als mateixos.


A GNU/Linux els dispositius IDE (discs durs, lectors, gravadors...) s’anomenen “hdX”, on X seria una lletra de l’abecedari començant per el IDE1-Master (a), seguit per el IDE1-Slave (b), IDE2-Master (c) i IDE2-Slave (d). En el cas de que tinguem un disc dur amb més d’una partició, passa a formar part del nom el nombre de la partició, si per exemple tenim el dispositiu hda amb dues particions, les particions s’anomenaran hda1 i hda2.


La jerarquia de directoris que utilitza GNU/Linux es la següent:

Nom

Descripció

/boot

Fitxers estàtics del carregador d’arrencada

/home

Directoris personals dels diferents usuaris

/tmp

Fitxers temporats

/usr

Dades estàtiques, programari

/var

Dades variables

/srv

Dades de servei que ofereix el sistema

/opt

Paquets d’aplicacions afegides

/lib

Llibreries compartides del sistema i programari

/etc

Fitxers de configuració del sistema

/dev

Fitxers que representen els dispositius perifèrics

/root

El directori personal del “superusuari”

/sbin

Fitxers binaris essencials pel sistema

/bin

Fitxers binaris i executables

/proc

Sistema de fitxers virtuals amb informació sobre el sistema

/mnt

Punt de muntatge per particions temporals

Tenim la possibilitat en el particionament d’elegir la distribució d’aquesta jerarquia segons els discs durs i la memòria de la que disposem. Nosaltres hem creat la següent taula de particions:


Dispositiu

Nom

Capacitat

Sistema fitxers

P. Muntatge

IDE-1-Master

hda1

40 Mb

ext3

/boot

IDE1-Master

hda2

2,5Gb

ext3

/

IDE2-Master

hdc1

150Mb

swap

-

IDE2-Master

hdc2

933Mb

ext3

/opt

La partició “/boot” l’he fet relativament gran ja que s'hi hauran d'allotjar varis nuclis. La “/opt” he preferit que estes a un disc dur independent ja que a aquest directori serà on romandrà l’arbre d’arxius que utilitzaran els nodes diskless com a sistema.


4.1.4 Gestor d’arrencada

En quan acabi l’escriptura de la nova taula al disc dur, començarà la instal·lació del sistema base, el qual ja podria ser anomenat Sistema Operatiu.

Per que aquest pugui arrencar és necessari un programa que s’encarregui de gestionar-ho, els dos carregadors d’arrencada més coneguts son LILO i GRUB. La versió de Debian Sarge, per defecte proposa la instal·lació de GRUB, però podem elegir el que preferim.


4.1.5 Configuració del sistema base

Desprès d’això, el sistema es reiniciarà automàticament, hem de retirar el CD per que arranqui amb el disc dur. Si no hi ha cap error començarà amb la configuració del sistema base. Haurem de configurar la zona horària, la contrasenya del usuari administrador (root) i diferents usuaris del sistema i establir el nom del sistema.


4.1.6 APT

Un pas molt important també, es la configuració d’APT. Advanced Packaging Tool, és un avançat sistema de gestió de paquets creat per el projecte Debian que simplifica en gran mesura la instal·lació d’aquests. Conté unes llistes amb tota una sèrie de programari emmagatzemat en multitud de servidors d’arreu del mon. Només cal indicar l’ordre amb el programa que desitgem, per que automàticament sigui descarregat, instal·lat i configurat amb totes les seves dependències.

APT pot funcionar tant amb CDs com amb direccions FTP o HTTP, primer que res ens preguntarà si disposem de més CDs amb programari, com que no en tenim li diem que no, seguidament indicarem que volem afegir una nova font, i seleccionarem el protocol FTP. Tindrem una llista de la qual podrem elegir multitud de servidors per APT. Jo sempre he utilitzat el “ftp.rediris.es”. Quan ens pregunti si volem activar les actualitzacions de seguretat li diem que si, ja que són fonamentals per la seguretat del sistema.


4.1.7 Instal·lació de paquets

Posteriorment ens trobarem amb tasksel, un programa amb que podem elegir les aplicacions addicionals que desitgem afegir al nostre sistema. En el nostre cas, no afegirem cap aplicació addicional, sinó que instal·larem desprès amb APT tot el que ens faci falta.

Començarà la descàrrega dels diferents paquets que inclou la versió Sarge , i els addicionals si n’hem seleccionat algun, depenent de la velocitat de la nostra línia això tardarà més o menys estona.



4.2 Configuracions bàsiques

Una vegada tinguem el sistema ja instal·lat, començarem el procés de configuració d’aquest segons les nostres necessitats. En aquest apartat no ens expandirem massa ja que és un punt molt relatiu que depèn en gran mesura del maquinari de l’ordinador.


4.2.1 L’entorn gràfic

El primer que farem serà instal·lar el sistema gràfic, GNU/Linux des de fa uns anys disposa de sistemes de finestres semblant a l’entorn de Windows, que faciliten molt el seu ús i el posa a l’abast de tothom. Hi ha varis sistemes gràfics, cadascun amb les seves característiques, podríem fer una classificació força col·loquial però molt entenedora: Els pesats i els lleugers.

Els pesats serien els dos més populars: Gnome i KDE. Aquests dos entorns són molt complets, disposen d’una immensa varietat d’aplicacions, s’anomenen pesats perquè requereixen un ordinador relativament potent, ja que consumeixen molts recursos, tant de memòria com de capacitat de disc dur.

Els lleugers serien una sèrie d’entorns molt més senzills, quasi sense aplicacions i adaptables a gairebé qualsevol ordinador. Dos exemples d’aquest serien “fluxbox” i “xfce”.

Desprès de observa les característiques del nostre ordinador: Pentium MMX amb 64Mb de ram i 3,5Gb de disc dur, és obvi arribar a la conclusió de que hem d’utilitzar un sistema lleuger, utilitzarem “xfce”.


Així que començarem amb la instal·lació dels paquets necessaris amb APT, executarem la següent ordre : “apt-get install x-window-system xfce4”. Una vegada descarregats, ho haurem de configurar segons el nostre maquinari amb el programa XFree86 “xf86config” per el mode de text, i “xf86cfg –textmode” per el mode de finestres, més còmode. Per iniciar l’entorn gràfic teclejarem l’ordre “startx”.

El següent pas es una fase de pesonalització, on cadascú pot configurar certs aspectes del sistema i instal·lar les aplicacions que cregui convenients.

4.3 LTSP

Ja instal·lat i configurat el sistema, podem començar amb l’administració de les aplicacions específiques que ens permetran els nostres propòsits.

LTSP que significa “Linux Terminal Server Project”, es un projecte de codi obert (Open Source) amb el propòsit de crear les eines necessàries per la configuració d’una unitat de treball sense disc. Amés de configurar i gestionar tots els serveis necessaris, també inclou un arbre de directoris, una distribució especialitzada en el funcionament d'ordinadors sense disc dur.

En el nostre projecte, no utilitzarem LTSP amb tot el seu potencial, únicament usarem una eina d'aquest anomenada “ltspcfg” que és troba dins el programa “ltspadmin” el qual s'encarrega de configurar automàticament tots els serveis que es necessiten per dotar l'ordinador servidor de la capacitat d'allotjar els nodes diskless en el seu disc dur.


Procediment

*Sempre treballarem amb l'usuari root.

- Avanç que res necessitem instal·lar una biblioteca necessària per el funcionament de LTSP, executem la següent ordre: “#apt-get install libwww-perl”.

- Descarreguem el programari anomenat “ltsp_utils” de www.ltsp.org.

- Observem que és un fitxer amb extensió “.tgz”, el descomprimim: “#tar -xvzf fitxer.tgz”.

- Ens situem dins el directori que hem descomprimit i executem el fitxer “install.sh”: “#./install.sh”.

- L'execució d'aquest fitxer haurà generat varis fitxers repartits per el nostre sistema operatiu, un d'aquest, el que ens interessa és troba a “/bin/ltspcfg”.


Ara ja disposem de l'aplicació ltspadmin situada al directori “/usr/sbin”, com que aquest directori esta descrit a la variable PATH (camí) de l'usuari root, tan sols haurem de cridar la comanda “#ltspadmin” per executar-lo. Si ho fem ens trobarem un menú amb tres opcions, aquestes són:


Dins de “Configure LTSP” ens trobem dues opcions més:

- “Show the status of all services”: Serveix per veure l'estat dels serveis, aquesta opció presenta aquest aspecte:

Interface: el dispositiu de xarxa al qual perteneix el clúster.


Service: L'estat dels serveis: servei, instal·lat, actiu, funcionant, notes


File: Els fitxers que s'han de configurar y l'estat en que es troben.



4.4 Instal·lació dels serveis necessaris

En aquest apartat descriurem àmpliament els serveis que necessitem instal·lar i els processos que s'han de seguir per instal·lar-los.


4.4.1 DHCP

Significa “Dinamic Host Configuration Protocol”, aquest utilitza el paradigma client/servidor per que els nodes obtinguin una configuració de xarxa que els permeti interactuar amb ella.

Cada ordinador que forma part d'una xarxa TCP/IP (és el protocol de xarxa més estès i generalitzat avui en dia), necessita conèixer la seva direcció IP i la màscara de la xarxa, aquesta informació és guardada normalment als fitxers de configuració del sistema operatiu, però en el nostre cas no disposem de disc dur ni per tant de cap sistema operatiu estable. Per això necessitarem el protocol DHCP, per fer la transferència d’aquesta informació.

El DHCP per exemple és utilitzat molt per els routers (direccionador: dispositiu intermedi d'una xarxa de comunicació que s'encarrega de gestionar-la), quan connectem un ordinador a una xarxa, aquest busca el direccionador per obtenir-ne les dades, aquest mitjançant DHCP fa saber la configuració al ordinador.


Cal afegir una dada més; tota targeta de xarxa posseeix una direcció única anomenada direcció MAC, mitjançant aquesta direcció els servidors DHCP assignen una direcció IP o un altra, segons la seva configuració. Vegem el següent exemple:

- Ordinador: Hola, la meva direcció MAC és 00:50:08:C7:A3:D8, si-us-plau donam la meva direcció de xarxa.

- DHCP: (Cerca la direcció en la seva base de dades) el teu nom serà “node1”, la direcció de xarxa és 255.255.255.0 i la teva direcció IP 192.168.100.2.


Procediment

Començarem per instal·lar el paquet del servidor DHCP, però aquesta vegada ho farem amb APT, teclegem la següent orde: “# apt-get install dhcp3-server”, posteriorment ens preguntarà quina targeta volem utilitzar, si només en tenim una serà el dispositiu “eth0”. Una vegada finalitzat ja disposarem del servidor DHCP al nostre sistema, el següent pas és la configuració d'aquest, però això ho deixarem per més tard, el LTSP ho farà per nosaltres.


Per arrencadaar el servidor DHCP, utilitzarem el dimoni “init”, ho farem de la següent manera: “#/etc/init.d/dhcp3-server start”, també podem substituir “start” per “stop” (aturar) o “restart” (reiniciar).


4.4.2 TFTP

Les seves sigles signifiquen: “Trivial File Translate Protocol”. És una versió reduïda del FTP, un protocol per la transferència d'arxius. EL TFTP a diferencia del FTP no requereix autentificació per part del client, amés treballa sota UDP (“User datagram protocol”) en comptes de TCP.

Funciona de la següent manera:

- Ordinador: Donam el bloc 1 del fitxer.

- TFTP: Aquí el tens.

- Ordinador: Dóna’m el bloc 2...

Al funcionar sota UDP, no és crea cap connexió directa estable entre les dues màquines, si no que es va enviant la informació “pausadament”, bloc per bloc. El desavantatge d'aquest protocol UDP, és que es perden molts blocs.

Desprès d'obtenir la configuració de xarxa, el node ha d'iniciar el seu sistema operatiu vigent en el disc dur del servidor, per això farà falta aquest protocol. El TFTP s'encarregarà de transmetre, per dir-ho d'alguna manera, la primera peça des de la qual podrem alçar tot el sistema.



Procediment

Per instal·lar TFTP també utilitzarem apt: “# apt-get install tftpd”. Una vegada instal·lat, ja no cal que ens preocupem més per ell, s’executarà sol cada vegada que s’iniciï l’ordinador. En el cas de que no sigui així, utilitzarem la següent comanda “#in.tftpd”.


4.4.3 NFS

Net file system”, és un sistema de fitxers distribuït per un entorn de xarxa, que possibilita que diferents màquines conntectades a una mateixa xarxa accedeixin a fitxers remots com si es tractés de locals. O sigui, podem estar treballant en el disc dur d'un altre ordinador exactament com si del nostre es tractés.

Aquest sistema serà el que utilitzarem per fer treballar els nodes sense disc, una vegada el servidor TFTP transfereixi el nucli, s'iniciarà el muntatge de tot l'arbre de directoris i fitxers necessaris per poder iniciar el sistema GNU/Linux.

Usualment, la majoria de distribucions de Linux incorporen el NFS, en el cas de que no sigui així, si disposem de Debian, seguirem el següent procés:


Procediment

Per instal·lar NFS executarem la següent ordre amb APT:“# apt-get install nfs-common nfs-kernel-server”, això instal·larà aquests dos paquets bàsics per poder usar el “net file system”.


4.5 Elaboració del disquet d’arrencada

L’ordinador diskless (client), d’alguna manera ha de saber que disposa d’una targeta de xarxa, el programa que fa saber això a l’ordinador s’anomena “Driver”, “Conductor” en català. Cada component mecànic d’un ordinador posseeix el seu propi Driver, així que necessitarem executar aquest Driver cada vegada que iniciem l’ordinador per tal de poder treballar amb la targeta de xarxa. Per fer-ho crearem un disquet de 3½ amb el que iniciarem l'ordinador, en aquest disquet amés del Driver hi posarem un programari especialitzat per l’arrencada via xarxa.

Hi ha varies utilitats que podriem fer servir per l’elaboració d’aquest disquet d’arrencada, una d’aquestes és “Etherboot”. Etherboot és una eina molt útil per l’arrencada d’ordinadors via xarxa, el seu funcionament és el següent:

- És carregat per el sistema d’arrencada del ordinador

- Busca un servidor DHCP per rebre l’arxiu de configuració de la xarxa

-Sol·licita la transmissió del nucli del sistema operatiu (kernel), utilitzant TFTP

- Una vegada rebut el nucli serà aquest qui seguirà el procés d’arrencada del ordinador mitjançant NFS.


Procediment

- El programari esta disponible a “etherboot.sourceforge.net”.

- Ens descarreguem l’última versió, a data d’avui és la 5.3.11.

- Veurem que és un fitxer comprimit amb les extensions tar.bz2, per tant el descomprimim amb l’ordre “#bzip2 –d fitxer”, i després amb “tar –xvf fitxer”.

- Ara tenim un directori amb el programari descomprimit, dins d’aquest tenim un fitxer situat a “src/bin/NIC” que poseeix una llarga llista de models de targetes de xarxa, hem de cercar el nostre i apuntar el nom que l’identifica. En el nostre cas, totes les targetes de xarxa són “Realtek 8139”, i el nom que l’dentifica és “rtl8139”.

- Ens situem al directori src dins el directori on hem descomprimit el paquet de etherboot.

- Per crear el fitxer que serà gravat al disquet i arrencarà l’ordinador, teclegem la següent ordre: “#make bin/[nom-targeta-xarxa].zdsk”.

- El fitxer òbviament es trobarà al directori “bin” dins de “src” dins el directori on haguem descomprimit etherboot.

- Ara introduirem un disquet a la disquetera, i copiarem l’arxiu de la següent manera: “#cat arxiu.zdsk > /dev/fd0”. D’aquesta manera es copia l’arxiu partint del bloc 0 del disquet, fent possible així la seva arrencada.



4.6 Configuració de la xarxa

La configuració de la xarxa és molt senzilla, hem d’editar un fitxer que s’anomena “/etc/networking/interfaces”. En aquest fitxer hem de editar les següents línies:


Amb aquestes dades, tenim suficient per tenir la xarxa configurada.



4.7 Configuració dels fitxers necessaris

Ara ja tenim els serveis necessaris instal·lats per que funcioni el LTSP, passarem a l’edició dels fitxers de configuració d’aquests serveis. Els fitxers són els següents:

Per configurar tots aquests fitxers, com ja hem comentat, s'utilitzarà l'eina “ltspcfg” que ens facilitarà molt aquesta tasca, ho farem de la següent manera:


Procediment

- Iniciem ltspcfg: “#ltspcfg” (també podem iniciar aquesta eina executant el programa “ltspadmin” i elegint l'opció de configuració).

- Elegim l’opció “C”: “configure the services manually”

- Ens trobarem amb una llista de 11 opcions. Anirem una per una, elegint-les totes i seguint els passos. Les dues úniques que no utilitzarem seran “XDMCP” i “lts.conf”.

- Com a “Interface”, la que utilitzem, si només tenim una targeta de xarxa serà “eth0”


Una vegada finalitzats tots els passos de la configuració dels fitxers mitjançant LTSP, tan sols haurem d’editar-ne tres manualment, el “dhcpd.conf”, el “exports”, i el “inetd.conf”.


4.7.1 EL “dhcpd.conf”

Com hem mencionat avanç, aquest fitxer conté la configuració del servidor DHCP, és ubicat a “/etc/dhcp3/dhcpd.conf”. El LTSP ens ha creat un fitxer dhcpd.conf configurat, però ens l’ha creat amb el nom de “dhcpd.conf.sample” situat al mateix directori, així que el sustituirem per el dhcpd.conf amb la següent comanda: “#mv /etc/dhcp3/dhcpd.conf.sample /etc/dhcp3/dhcpd.conf”.

Ara editarem aquest fitxer amb qualsevol editor de text, jo sempre utilitzo “nano”: “#nano /etc/dhcp3/dhcpd.conf”. Observarem que hi ha multitud d’opcions, en comentarem algunes:


La més important per nosaltres, es la que serveix per administrar l’accés dels diferents nodes, segons la direcció MAC de la seva targeta.

host ws001 {

hardware ethernet 00:11:22:33:44:55;

fixed-address 192.168.0.1;

filename “/tftpboot/lts/vmlinuz-2.4.25-ltsp-1”;

}


- “host”: indica el “host-name” que li serà assignat al node diskless.

- “hardware ethernet”: és la direcció MAC de la targeta de xarxa.

- “fixed-address”: la direcció IP que li assignarem al node diskless.

- “filename”: el nucli (kernel), que utilitzarà el node.


D’aquesta manera hem de configurar tots els nodes diskless, a cadascú se li ha de donar un “hostname” i una IP diferent segons la seva direcció MAC. Per saber la direcció MAC de la targeta de xarxa, tenim dues opcions: amb la comanda “#ifconfig”, o bé introduint el disquet d’arrencada que hem creat.


4.7.2 El inetd.conf

D’aquest només haurem de canviar un argument. Hem de cercar la línia del servidor “tftp”, i substituir on posa “/boot” per “/tftpboot”, quedarà de la següent manera:

tftp dgram upd wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot


Li hem indicat que el directori base del qual ha de partir el servidor TFTP, és “/tftpboot”, ja que el nucli que serà transmès als nodes diskless s’ubica aquí.


4.7.3 El exports

Si editem el fitxer “/etc/exports” observarem que hi consten dues línies, la primera exporta el directori “/opt” per que qualsevol ordinador de la xarxa 192.168.100.X hi pugui accedir, la segona dona la ubicació de la partició “swap” que utilitzaran els nodes. D'aquestes dues línies tan sols haurem de modificar la primera. Hem de donar permís d'escriptura als nodes sobre el directori “/opt”, ja que si no rebrem certs problemes amb el sistema que usaran els nodes. Ho deixarem de la següent manera:

/opt 192.168.100.0/255.255.255.0(rw,no_root_squash,sync)

/var/opt/ltsp/swapfiles 192.168.100.0/255.255.255.0(rw,no_root_squash,async)


4.8 L’arbre de directoris dels nodes diskless

LTSP, si li demanem, instal·la un arbre de directoris adaptat per l’arrencada sense disc dur situat a “/opt/ltsp/i386”. Tot i això, per mi, és molt més senzill treballar en un entorn de directoris Debian que ja conec, que no en un totalment diferent com és el de LTSP. Així doncs haurem de copiar tot un arbre de directoris Debian a “/opt/ltsp/i386”, hem elegit aquesta ubicació perquè el configurador “ltspcfg” ho configura així, però només caldria modificar els fitxers “/etc/exports” i “/etc/dhcp3/dhcpd.conf” per elegir el directori que desitgem. El sistema que utilitzarem per els nodes diskless, haurà de ser un sistema bàsic, net, gairebé sense modificacions per que no hi hagin incompatibilitats, i amb les mínimes aplicacions necessàries. Jo he optat per fer-ho de la següent manera:


Procediment

- Deixem l’ordinador amb un disc dur buit de 500Mb i un lector de CD.

- Instal·lem de nou el sistema base de Sarge GNU/Linux a aquest disc dur.

- Una vegada finalitzada la instal·lació, tornarem a connectar els discs durs anteriors més el de 500Mb de manera que arranqui l’antic sistema.

- Muntem el disc de 500Mb amb la comanda “mount”: #”mount –t auto /dev/hdb1 /mnt”.

- Copiem el sistema d’arxius del petit disc dur al directori “/opt/ltsp/i386”: “#cp –a /mnt /opt/ltsp/i386”.


Es recomanable eliminar els processos d'aquest sistema que no necessitem, els processos que s'inicien durant l’arrencada, s'allotgen a “/etc/rcX.d”, on la “X” és un nombre que va des de 0 fins 6, cada nombre té una aplicació diferent, s'anomenen “runlevels”.

0: Aturar el sistema.

1: Mode monousuari

2: Mode multiusuari sense suport per a xarxa

3: Mode multiusuari complet

4: Sense ús

5: Mode multiusuari complet amb suport gràfica

6: Riniciar el sistema.


Amés d'aquest nombre que identifica el mode amb que s'executarà l'aplicació, també, dins de cada runlevel, les aplicacions han de portar un nombre del 1 al 99, que indica l'ordre d'execució, i una lletra “S o K”; “S” indica “start” inicialitzar, i “K” significa “kill”, eliminar.

El programa “update-rc.d” serveix per gestionar els runlevels, funciona de la següent manera: “#update-rc.d -f remove aplicació” per eliminar-la, i “#update-rc.d aplicació” per incloure-la. En el sistema que hem instal·lat nosaltres hem eliminat les següents aplicacions que hem considerat innecessàries: “exim4, ppp, sysklogd, klogd i atd”.



5. EL Kernel

L’estructura dels sistemes operatius parteix del kernel o nucli, és el programari responsable de facilitar als diversos programes accés al maquinari de l'ordinador. Ja que hi ha molts programes i l'accés al maquinari és limitat, el nucli també s'encarrega de decidir quin programa podrà fer ús d'un dispositiu i durant quant de temps, cosa coneguda com a “multiplexitat”.

El sistema operatiu GNU/Linux parteix del nucli monolític anomenat “Linux”, aquest esta escrit en llenguatge C, segueix els principis de la llicència GPL, és de codi obert, per tant pot ser modificat per qualsevol usuari. Aquest és un dels aspectes principals que fan de GNU/Linux un sistema realment potent, doncs el poder modificar les fonts del nucli ens dona molta flexibilitat per poder adaptar-lo al nostre ordinador i a les nostres necessitats. En el kernel hi és especificat tot el maquinari que posseïm, des de el processador fins la targeta de xarxa, sistemes del fitxers suportats, protocols de connexió a Internet...

Podem trobar el kernel Linux en diferents versions descrits per una nomenclatura que és divideix en 3 camps separats per un punt, aquests són:

- Número de la versió.

- Número de la subversió (si aquest es parell significa que és un kernel estable, si es imparell significa que encara esta en proves).

- Nivell de correcció en que es troba.


Una versió del kernel pot ser substituïda per un altra sense gairebé afectar la resta del sistema, d'aquesta manera es pot tenir el kernel sempre actualitzat. Per utilitzar un nou nucli, tenim dues opcions: obtenir un kernel pre-compilat o obtenir el codi font per compilar-lo nosaltres.

La primera opció és més còmoda i senzilla però no massa recomanable perquè els kernels pre-compilats contenen un gran nombre d’opcions activades ja que han de funcionar a qualsevol ordinador. Un nucli pre-compilat mai és podrà adaptar completament a un ordinador en concret.

La segona opció és més costosa però molt més recomanable. Consisteix en descarregar el codi font del nucli, configurar-lo a les nostres necessitats i compilar-lo en el nostre propi ordinador. Generalment el codi és emmagatzemat al directori “/usr/src”, ens hi haurem de situar i executar el gestor de configuració on haurem d'elegir els mòduls que necessitem segons el nostre maquinari i l'ús que vulguem donar a l'ordinador. Desprès mitjançant el compilador GCC (vigent en qualsevol distribució de GNU/Linux), compilarem les fonts.


Seguidament farem una petita descripció d’algunes de les comandes principals per la compilació del nucli. Per totes s’utilitza l’aplicació “make”: elaborada per el propi Richard Stallman, serveix per construir un fitxer binari a partir de un codi font i una sèrie d’ordres emmagatzemades a un arxiu anomenat “makefile” mitjançant la utilització d’un compilador, generalment GCC. Amb “make” podem dur a terme una de les coses més interessants en GNU/Linux, la personalització i l’adaptació a l’arquitectura del nostre ordinador.


En el nostre projecte, necessitarem elaborar dos kernels diferents, un per el servidor i un altre per els nodes diskless, cadascú haurà de ser configurat segons el maquinari i la utilitat de l’ordinador, però els dos hauran de ser “parchejats” amb l’extensió OpenMosix. Una extensió per el kernel no és més que un fitxer que conté informació canviant sobre algunes línies del codi font.



5.1 OpenMosix i el Kernel

Openmosix es el programari que ens permetrà que els ordinadors del clúster actuïn com a nodes. En aquest apartat tan sols tractarem el procés per afegir l’extensió Openmosix al kernel, posteriorment ja s’explicarà més detalladament el projecte Openmosix.

Per afegir l'extensió haurem de seguir els següents passos:

Procediment

- Descarreguem la versió de l'extensió Openmosix segons la versió del kernel que utilitzem de la pàgina web: “openmosix.sourceforge.net”.

- Estarà comprimit amb l'aplicació bzip2, així doncs el descomprimim amb l'ordre: “#bzip2 -d fitxer.bz2”.

- El copiem al directori del codi font: “#cp fitxer /usr/src/linux-2.x.x/”.

- Per aplicar l'extensió al kernel utilitzarem la següent ordre: “#cat fitxer | patch -Np1”.

- Ara si executem el gestor de configuració del kernel veurem que hi ha una opció més anomenada “OpenMosix”.

El codi font dels nuclis que ofereixen les diferents distribucions (sigui Debian, sigui qualsevol), contenen un gran nombre d’extensions per que s’adapti millor al seu sistema, però aquestes extensions poden provocar conflictes amb Opemosix, així que utilitzarem un kernel totalment net, elaborat per el propi equip d’en Linus Torvalds, aquest kernel s’anomena “kernel vanilla”, i el podem trobar en totes les seves versions a “www.kernel.org.



5.2 El Kernel dels nodes diskless

Utilitzarem tant per el servidor com per els nodes diskless, la versió del kernel 2.4.26 ja que ens veiem obligats a que coincideixi amb la de l’extensió Openmosix, i l’última versió d’aquesta, en data d’avui, és la 2.4.26 treta el 9 de desembre de 2004.

La configuració d’aquest kernel haurà de ser específica per l’arrencada diskless, per això el projecte LTSP dona l'opció d'utilitzar-ne un ja compilat i preparat per funcionar amb màquines sense disc dur, però òbviament no disposa de l’extensió Openmosix, summament necessària per els nostres propòsits. Així que n'haurem de compilar un totalment nou. Una opció més còmoda i senzilla per l’elaboració del nostre nucli seria obtenint l’arxiu de configuració del nucli LTSP disponible al paquet “ltsp_initrd_kit” que podem descarregar de “www.ltsp.org, aplicar l’extensió i executar un “make oldconfig”. Però no seguirem aquest procés i compilarem totalment de nou el nostre kernel vanilla.

No s’exposaran totes les opcions de configuració que hem compilat, ja que la llista és immensa, només s’explicaran les opcions específiques i necessàries per que pugui ser possible l’arrencada sense disc dur i el funcionament de Openmosix.

Les de Openmosix són:


La resta d’opcions són:


Procediment

- Descarreguem el codi font del kernel de “ftp.kernel.org, la versió 2.4.26.

- El descomprimim i el situem a “/usr/src”: “#tar –xvf linux-2.4.26 /usr/src/linux-2.4.26”.

- Apliquem l’extensió OpenMosix tal com s’explica en anterioritat.

- Configurem el kernel amb les opcions anteriors: “#make menuconfig”.

- Creem les dependències: “#make dep”.

- Creem la imatge del nucli comprimida: “#make bzImage”, la qual es trobarà a “/usr/src/linux/arch/i386/boot”.


En l'arrencada no es pot utilitzar el fitxer “bzImage”, generada en la compilació del nucli, aquesta imatge ha de ser convertida en una “tagged image” (imatge etiquetada). Aquesta és una imatge normal amb una capçalera especial que li diu al carregador d’arrencada en xarxa on han d'emmagatzemar-se els bytes en memòria i en quina direcció comença el sistema. Per crear aquesta imatge s'utilitza un programa anomenat “mknbi”.


*Nota: Aquest procés d'etiquetatge del nucli, és summament necessari, però el que no ho hauria de ser és el especificar les dades de la xarxa en l'etiquetatge, tal com indiquem posteriorment que s'ha de fer amb la sintaxi de la comanda “mkelf-linux”. Teòricament s'ha compilat el nucli de de tal manera que fos capaç d'obtenir la configuració de la xarxa mitjançant DHCP, això ho fa l'opció “IP kernel level autoconfiguration”, però no s'ha aconseguit el propòsit per motius que desconeixem, així que l'única solució que hem trobat a aquest problema és utilitzar l'opció “--ip” del programa “mknbi”. Aquesta solució té el desavantatge de que necessitem un nucli diferent per a cada node.


Procediment

- En aquest exemple suposem que el el node anomenat “node2” li correspon la IP 192.168.100.2.

- Instal·lem mknbi mitjançant “APT”: “#apt-get install mknbi”.

- Ens situem al directori de la bzImage.

- Executem la següent comanda segons el nucli que vulguem etiquetar:

#mkelf-linux bzImage –output=/tftpboot/lts/om-node2

-ip=”192.168.100.2:192.168.100.1:192.168.100.1:255.255.255.0:ws006.ltsp”

rootdir=”192.168.100.1:/opt/ltsp/i386” –-rootmode=”rw”.


- “-output”: Aquí indiquem la ubicació de sortida del nucli que etiquetem.

-“--ip”: S'ha d'indicar seguint aquest ordre:

client:servidor:gateway:màscara:hostname”.

- “rootdir”: Hi hem d'indicar el directori on estan situat l'arbre de directoris que usaran els nodes diskless.

- “rootmode”: Els permisos amb que es muntaran els fitxers.


Com podem observar en la sintaxi de la comanda “mknbi”, el kernel ja etiquetat es troba a “/tftpboot/lts/om-node1”, així que haurem de modificat el fitxer “/etc/dhcp3/dhcpd.conf” i indicar-li la ruta d’aquest. Això ho haurem de repetir per a cada node, de manera que cadascú tindrà el seu propi nucli.


host ws001 {

hardware ethernet 00:11:22:33:44:55;

fixed-address 192.168.100.2;

filename “/tftpboot/lts/om-node1”;

}

Així successivament per a cada node.


5.3 El kernel del servidor

El nucli que haurem de compilar per el node servidor, haurà de ser la mateixa versió que la dels nodes diskless, i òbviament també haurà de disposar de l’extensió Openmosix. Com que aquest ordinador haurà d’atendre moltes més tasques que la resta, el kernel també haurà de disposar d’un ventall de funcions més ampli; suport per xarxes de Windows, per impresores, ratolins, dispositius USB...

A continuació explicarem quines són les opcions essencials que haurem d’activar en el gestor de configuració del nucli per que pugui assolir la funció principal que se li encomana: fer de servidor per a nodes diskless.


Apart d’aquestes opcions no ens hem d’oblidar l’activació de les de Openmosix i la resta que siguin necessàries per els nostres propòsits, com ho és el suport per sistemes “EXT3”, sistemes de fitxers dels CD (ISO9660), dispositius PCI...

Seguidament s’haurà de compilar el nucli tal com hem fet amb els nodes diskless, aquest nucli no caldrà etiquetar-lo, però si que necessitarem utilitzar una imatge “initrd”.

Una imatge initrd, és un petit sistema d’arxius que és carregat a la memòria que una vegada el kernel és iniciat aquesta muntarà una espècie de disc ram com a sistema de fitxers arrel. Existeix una aplicació per crear imatges initrd anomenada “mkinitrd” amb la que crearem la nostra. S’ha de dir que no totes les versions del nucli requereixen d’una imatge initrd.


Procediment

- Movem el nucli comprimit que hem compilat al directori “/boot”: “#mv /usr/src/linux-2.4.26/arch/i386/boot/bzImage /boot/”

- Creem l’ imatge d’arrencada “initrd” al directori juntament amn el kernel: “#mkinitrd –o /boot/initrd”.


Una vegada tenim les dues imatges situades al directori “/boot”, haurem de configurar el gestor d’arrencada per que ens deixi iniciar el sistema amb elles. Nosaltres vam instal·lar Grub, així que explicarem el procés de configuració d’aquest.

El fitxer de configuració principal de Grub, s’ubica a: “/boot/grub/menu.lst”, l’editarem amb qualsevol editor de text, i hi aplicarem els següents paràmetres:

title Debian 2.4.26 + OpenMosix

root (hd0,0)

kernel /bzImage root=/dev/hda2 rw

initrd /initrd

savedefault

boot


- El paràmetre “title” indica el títol que mostrarà Grub al menú d’arrencada.

- El paràmetre “root”, indica on es troba la partició “/boot”

- El paràmetre “kernel” indica la ubicació del kernel dins la partició “/boot”, la partició on és troba el sistema de fitxers arrel, i el mode amb que es muntarà.

- El paràmetre “initrd” indica la ubicació de la imatge initrd.



6. OpenMosix

Openmosix és una programari, i bàsicament una extensió del kernel Linux que dota l'ordinador de la capacitat de treballar com a node d'un clúster. La funció principal d'aquest és el balanceig de carrega; la migració automàtica i transparent dels processos entre els diferents nodes de la xarxa, depenent de la velocitat de cada ordinador.

El gran avantatge d'Openmosix sobre altres programaris de clústering és que com aquest funciona juntament amb el kernel, com una part més d'ell, es totalment compatible amb la majoria d'aplicacions Linux, exteriorment gairebé es impossible distingir un ordinador normal amb un que funciona com a node d'un clúster.

Openmosix deriva del projecte Mosix, el qual no disposa de llicència GPL, és de codi tancat. Per aquest motiu alguns dels desenvolupadors del projecte es separaren i crearen Openmosix, totalment lliure sota llicència GPL. Això a comportat nombroses millores del projecte Openmosix sobre Mosix, l'acomodació a l'estructura de Linux, un algoritme de migració de processos més net, una millora en el balanceig de càrrega, suport per més arquitectures, i un immens augment de documentació.

Per un altra banda, com qualsevol tipus de programari, Openmosix també té les seves desavantatges, com que funciona juntament amb el kernel, depèn de la versió d'aquest, doncs cada nucli té la seva versió de Openmosix i per evitar problemes hauríem de treballar també amb la mateixa versió per tots els nodes. Amés és incapaç de migrar processos que utilitzin memòria compartida com per exemple: MySQL, Apache, Oracle, SAP... per solucionar aquest problema existeix una aplicació anomenada Migshm, però encara esta en fase de proves, per tant no l'utilitzarem ja que podria comportar certs problemes en el rendiment del clúster.



6.1 OpenMosix tools

Principalment Openmosix és una extensió per el nucli, però també correspon a una sèrie d’aplicacions necessàries i molt útils per la seva administració. Aquest grup d’aplicacions que ofereix el projecte OpenMosix s’anomena “Openmosix tools”, serveixen per examinar i controlar cada node, per el qual és necessari que estiguin instal·lades a tots els ordinadors vigents el clúster.

Per instal·lar-les en el servidor farem el següent:



Procediment

- Necessitem tenir instal·lada la biblioteca “ncurses”, executem la següent ordre amb APT: “#apt-get install libncurses5 libncurses5-dev”.

- Descarreguem el paquet “openmosix tools” de “openmosix.sourceforge.net”.

- Com és un fitxer comprimit amb extensió “tar.gz” executem: “#tar -xvzf fitxer.tar.gz”.

- Executem el fitxer “config” per que ens generi els fitxers necessaris per la compilació.

- Executem les ordes “#make && make install” per generar els binaris i instal·lar-los.

- Amb el programa update-rc.d inclourem el dimoni openmosix en l'arrencada del sistema, per que s'iniciï automàticament : “#update-rc.d openmosix 99 20”. Això generarà el següent: “S99openmosix” “K20openmosix”.


Per instal·lar-les en el sistema que usen els nodes diskless, el procés és una mica més complicat, però hem ideat una manera d'aconseguir-ho que ho simplifica molt. Consisteix en fer un canvi d'arrel, la comanda “chroot” ens permet interactuar en un altre arbre de directoris com si del nostre propi arbre es tractes, o sigui, només caldrà executar la comanda “#chroot /opt/ltsp/i386” per obtenir una terminal en el sistema d'arxius situat en aquest directori.

Com suposem que en el node servidor tenim internet, farem un canvi d'arrel al sistema dels nodes diskless i mitjançant APT instal·larem la biblioteca “ncurses” necessària per Openmosix.

Procediment

- Establim el canvi d'arrel: “#chroot /opt/ltsp/i386”.

- Editem el fitxer “/etc/network/interfaces” i configurem la xarxa que utilitzarem per usar APT.

- Reiniciem el dimoni de gestió de xarxa: “#/etc/ini.td/networking restart”.

- Instal·lem la biblioteca: “#apt-get install libncurses5 libncurses5-dev”.

-Per tornar a la terminal del nostre sistema executem: “#exit”.



6.2 OpenMosix View

El projecte Openmosix View és un projecte paral·lel a Openmosix. Es tracta d'una aplicació de visualització i administració d'una forma gràfica i amigable. Aquesta eina, a diferència de les “Openmosix tools”, no és necessària per el funcionament del clúster, però ofereix un entorn més agradable que el sistema de text, per tant el instal·larem.


Procediment

- Openmosix View, requereix una sèrie de biblioteques anomenades “QT”, les quals podem descarregam mitjançant APT: “#apt-get install libqt3-dev”.

- Ens descarreguem el codi font de “www.openmosixview.com.

- Executem el fitxer “setup” amb l'ordre: “#./setup”, per preparar els arxius per la compilació.

- Executem les comandes: “#make && make install”, per generar i instal·lar els binaris.

Per treballar amb OpenmosixView, haurem d'entrar en el sistema gràfic (X-window) i executar l'ordre “openmosixview”.



    1. La configuració y aplicacions de OpenMosix

En aquest apartat farem un recorregut per les diferents aplicacions que incorporen els dos paquets de Openmosix anteriorment instal·lats. Aquests són fonamentals per l'administració i monitoratge del clúster. Tots els processos es duran a terme en la terminal del node servidor.

Per que el clúster funcioni correctament, s'han de configurar dos fitxers bàsics, són els següents:


MOSIX IP Number of nodes

1 192.168.100.1 1

2 192.168.100.4 1


En el camp “MOSIX”, hem d’introduir l'identificador de cada node, en el camp “IP” la direcció IP, i en el camp “Number of nodes” el nombre de nodes existents amb direcció IP seguida, per exemple: “192.168.100.1 10”, significa que hi ha deu nodes seguits: “192.168.100.1, 192.168.100.2, 192.168.100.3...”.

Aquest fitxer, una vegada configurat ha de ser copiat al directori “/opt/ltsp/i386/etc”, per tal de que sigui utilitzat també per els nodes-diskless.


Myomid: Aquesta opció ens permet afegir un identificador al node.

Autodisc: És una aplicació que s'encarrega de comprovar si s'afegeixen nous nodes.

Autodiscif: S'especifica el dispositiu de xarxa que usarem si activem l'opció “Autodisc”.

Nodespeed: S'hi ha d'introduir la velocitat del processador de cada node.

Migrate: És la funció principal del Openmosix, la migració. Per treballar en el clúster debem activar-la.

Block: Si activem aquesta opció permitim que no hi hagi ningun bloqueig d'entrada dels processos en els nodes.


Següidament s'exposen les aplicacions d'administració de Openmosix.







stay, nostay: Amb el paràmetre “nostay” indiquem al programa que permeti el migrat automàtic de processos, i amb “stay” el contrari. Aquesta opció és important, ja que si no l'activem haurem de migrar els processos manualment amb l'ordre “migrate”.

lstay, nolstay: Elabora la mateixa funció que la comanda anterior però referint-se exclusivament als processos locals, amb “nolstay” indiquem que volem migrar els processos executats en la nostra màqui na.

lock, noblock: Indica si la el node estarà disposat a acceptar processos entrants procedents d'altres nodes, amb “noblock” permitim la migració entrant.

nomfs, mfs: Amb aquesta opció podem activar o desactivar l'ús del sistema d'arxius “MFS”. En el nostre projecte no utilitzarem “MFS”, sinó el convencional “NFS”.

quiet, noquiet: Ens permet activar o desactivar l'acumulació d'informació sobre el balanceig de càrrega dels nodes.

gettune, getdecay: Amb el paràmetre “gettune”, és mostrat el valor del paràmetre “overhead” usat per el nucli per estimar el valor d'entrada i sortida en el balanceig de càrrega. Els valors són donats en microsegons. Amb getdecay podem observar els paràmetres de decadència del clúster.

expel, bring: “Bring” serveix per fer retornar tots els processos locals que han sigut migrats i s'estan processant en altres nodes a la màquina local. I amb “expel” retornem els processos que estiguem processant en el nostre node al seu node local.

whois: S'utilitza amb la sintaxi “#mostcl whois [openmosix-ID, direcció-IP, hostname]”, ens permet descobrir aquest tres paràmetres d'un node en concret.

setspeed: Ens permet canviar les unitats de velocitat del node local en el que estem treballant.

setdecay: Mitjançant aquesta ordre podem modificar el seu valor posant el que més ens convingui.

informació dels nodes: Hi ha una sèrie d'opcions que ens permeten aconseguir certa informació sobre el funcionament del clúster, la sintaxis és “#mosctl opció Openmosix-ID”. Les opcions possibles són:

getload: Mostra la càrrega del node.

getspeed: Mostra la velocitat del node.

getmen: Mostra la memòria lògica disponible.

getfree: Mostra la memòria total del node.

getutil: Mostra la disponibilitat del processador.

mosrun [--{h | openMosix_ID | jID1-ID2 [,ID3-ID4]...} [-F]] [-{I|L|k}] [-{c|i|n|s|f| [-t tt] [-d dec] } [-{e|E}] [-{r|R]] [-z] command [arguments]”

Els arguments possibles són:

nomig: S'executa una comanda que no serà migrada.

runhome: S'executa una comanda que quedarà al node local.

runon: S'executa una comanda que serà migrada al node o nodes indicats.

cpujob: S'executa una comanda ndicant al sistema que es tracta d'un procés molt intensiu.

iojob: S'executa una comanda indicant al sistema que es tracta d'un procés de càrrega de gran entrada i sortida.

nodecay: S'executa una comanda sense tindre en compte les estadístiques.

slowdecay: S'executa una comanda, indicant a OpenMosix un decaiment d'estadístiques baix.

fastdecay: S'executa una comanda, indicant a OpenMosix un decaiment d'estadístiques alt.


- l : La carrega dels nodes.

- h: El menú d'ajuda.

- d: Mostra tots els nodes, incloits els no actius.

- t: Mostra el nombre de nodes.

- s: Mostra la velocitat màxima dels processadors.

- u: Mostra el percentatge disponible de cada processador.

- m: Mostra la memòria utilitzada.



- off: Extreu el node del clúster.

- w: Carrega la configuració del fitxer indicat i la grava al nucli per el seu posterior ús.

- c: Realitza el mateix que “w” però no grava la configuració al nucli.


6.4 SSH

SSH (Secure Shell), és el nom d'un protocol i d'un programa que serveix per

accedir a màquines remotes mitjançant una xarxa, semblant a telnet però utilitzant

un xifrat en les transmissions. Utilitzarem SSH per administrar remotament, des del servidor, tots els nodes diskless, ja que aquests no disposen de monitor ni teclat per poder administrar-los. Amés Openmosixview, porta una eina de gestió remota per a la qual necessitarem que tots els nodes disposin d'un servidor SSH (sshd) amb clau d'accés buida, això significa que no serà requerida cap contrasenya per la connexió SSH. Per connectar amb un node remotament teclejarem: “#ssh nodeX”.

- Per crear la clau buida, realitzarem els següents processos, tenint en compte que aquests són exclusius del nostre projecte, ja que contenen la nostra configuració.

#ssh-keygen -t dsa -N "" -f /root/.ssh/id_dsa”

#cp -a /root/.ssh /opt/ltsp/i386/root/”

#cp /root/.ssh/id_dsa.pub /opt/ltsp/i386/root/.ssh/authorized_keys”

#cp /root/.ssh/id_dsa.pub /root/.ssh/authorized_keys”

#chmod 644 /opt/ltsp/i386/root/.ssh/authorized_keys”

#chmod 644 /root/.ssh/authorized_keys”

#/etc/init.d/ssh start”

#echo -n "* " >> /opt/ltsp/i386/root/.ssh/known_hosts”

#cat /etc/ssh/ssh_host_rsa_key.pub >> /opt/ltsp/i386/root/.ssh/known_hosts”

#echo -n "* " >> /root/.ssh/known_hosts”

#cat /etc/ssh/ssh_host_rsa_key.pub >> /root/.ssh/known_hosts”

#cp -a /etc/ssh /opt/ltsp/i386/root/”





7. Muntatge mecànic

El muntatge mecànic del clúster ha estat força complicat degut a que no s'ha utilitzat gairebé cap element prefabricat, la gran majoria són parts de les torres reciclades que he aconseguit acumular. Aquest muntatge conté els quatre nodes diskless, i una base de comandaments d'on podem controlar-los. Com ja s'ha mencionat, els nodes diskless disposen únicament de: placa base, processador, memòria, targeta de xarxa i disquetera.

Tot el maquinari, és reciclat. Es van aconseguir acumular aproximadament 8 torres d'ordinadors antics alguns d'ells provinents de gent que ja no els necessitava i altres de la deixalleria municipal. D'aquests és van aprofitar 4 places base, 4 disqueteres, varis mòduls de memòria ram SIMM-EDO i multitud de peces metàl·liques de la caixa. També van ser necessàries diferents taulons d'aglomerat per fer l'estructura les quals vaig recollir d'un contenidor de fusta.

Amés d'això, jo també disposava de certs components que tenia i no feia servir: dues targetes de xarxa Realtek, un switch ethernet de 8 ports, l'ordinador que s'ha fet servir com a servidor i els cables de xarxa RJ45. Les tres targetes de xarxa que hem feien falta, me les van donar de segona mà, a una tenda d’informàtica.

Com podem observar, el producte final, és una caixa de fusta de 1,25m d'amplada i 0,36 d'alçada, dins hi ha dues torres modificades de tal manera que cada torre consta de dues plaques bases amb el seu maquinari i compartint una sola font d'alimentació per reduir així l'espai, el pes i el consum total del clúster.


A continuació podem veure un seguit de fotografies que presenten les parts més importants del projecte mecànic.




El muntatge finalitzat.

Vista superior sense tapa.




Vista del darrere sense tapa

Una de les dues torres.



Una placa base d’una de les torres.

Construcció de l’estructura



Habitació de proves.

Recol·lecció inicial de material.



8.Proves i resultats

Una vegada hem aconseguit fer funcionar el CLARR amb totes les seves funcions, realitzarem una sèrie de proves per tal d'observar i treure conclusions sobre el seu rendiment. Aquestes proves seran processades en primer lloc al node servidor sense estar connectat al clúster, i en segon lloc connectant-ho tot, d'aquesta manera s'observarà l'augment de potència que s'experimenta. No usarem el sistema gràfic ni l'aplicació “OpenMosixView” ja que aquesta requereix unes altes prestacions de recursos del sistema, i necessitem el màxim rendiment possible.

El node servidor, té les següents característiques segons el fitxers de dades “/proc/cpuinfo” i “/proc/meminfo”.

cpuinfo

meminfo

Processor : 0

vendor_id : GenuineIntel

cpu family : 5

model : 4

model name : Pentium MMX

stepping : 3

cpu MHz : 233.299

fdiv_bug : no

hlt_bug : no

f00f_bug : yes

coma_bug : no

fpu : yes

fpu_exception: yes

cpuid level : 1

wp : yes

flags : fpu vme de pse tsc msr mce cx8 mmx

bogomips : 465.3

Mem: 62738432 kB

Swap: 150659072 kB

MemTotal: 61268 kB

MemFree: 13220 kB

MemShared: 0 kB

Buffers: 1252 kB

Cached: 20388 kB

SwapCached: 1184 kB

Active: 512 kB

Inactive: 41980 kB

HighTotal: 0 kB

HighFree: 0 kB

LowTotal: 61268 kB

LowFree: 13220 kB

SwapTotal: 147128 kB

SwapFree: 140912 kB

Committed_AS: 2048 kB



Els nodes diskless, contenen les següents característiques generals segons també els fitxers de dades “/proc/cpuinfo” i “/proc/meminfo”:


Node1

Node2

Node3

Node4

Vendor id

Genuine Intel

Genuine Intel

Geniune Intel

Geniune Intel

Model name

Pentium MMX

Pentium MMX

Pentium 75-200

Pentium 75-200

cpu MHz

133,637 MHz

166.404 MHz

133,639 Mhz

152,136 Mhz

bogomips

266,24

331,77

266,24

303,10

Memòria MB

37,81 MB

29,720 MB

29,720 MB

21,632 MB



8.1 Compressió d'àudio

La primera prova que duren a terme serà la de compressió d'àudio, partint d'un fitxer descomprimit en format “.wav”, en crearem un de comprimit amb format “.mp3” que aproximadament ocupa 10 vegades menys. Per començar, haurem de disposar dels fitxers wav, els quals copiarem d'un CD de música amb el programa “cdparanoia”: “#cdparanoia -B”, això generarà un seguit de diverses cançons. Posteriorment, amb el programari “BladeEnc” cronometrarem el temps que triga en comprimir-los. El propi programa, al finalitzar ens informarà dels temps transcorregut.


Hi ha dues maneres de realitzar aquest procés, en sèrie i en paral·lel. En sèrie seria comprimir el fitxer 1, una vegada finalitzat, el 2, el 3... I en paral·lel consistiria en comprimir-los tots a l’hora. Per mesurar el rendiment del clúster hem d'utilitzar el processament paral·lel, ja que en sèrie no obtindríem resultats. Un exemple metafòric que ens pot ajudar a comprendre el perquè d'aquesta tria, és: “si tenim una botella amb un coll molt ampli però l'omplim amb un raig d'aigua molt fi, aquesta trigarà molt a omplir-se, per això necessitem un raig d'aigua ben gros”.

Per realitzar aquesta operació, haurem de programar un “shell script”. Ens situarem en el directori on tenim els fitxers d'àudio descomprimits, i elaborem el següent fitxer de text:

#!/bin/bash

bladeenc track01.cdda.wav &

bladeenc track02.cdda.wav &

bladeenc track03.cdda.wav &

[...]


Per fer un fitxer text executable, utilitzem l'ordre “#chmod a+x fitxer”, i per executar-lo la comanda “./fitxer”.


Els resultats que hem obtingut en la compressió de 67,47 minuts de música wav a mp3 de 128 kBit, són:

- Sense clúster en sèrie: 61,31 minuts.

- Sense clúster en paral·lel:62,43 minuts

- Amb clúster en paral·lel: 20,41 minuts


Com podem observar, el rendiment del clúster, és superior al del ordinador independent, en un 66% aproximadament.



8.2 Compilació d'un nucli

Els clústers d'alt rendiment, són molt usats per la compilació de grans codis fonts, sobretot en les anomenades granges de compilació, ja que aquesta tasca es requereix un alt nivell de processament.

Un molt bon exemple per calcular el rendiment del CLARR en una compilació, és la creació d'un nucli Linux a partir del seu codi. Per fer això, ens descarregarem el codi font del kernel 2.4.26, i utilitzant el fitxer de configuració que porta per defecte elaborarem les dependències (“#make dep”). Posteriorment farem una copia exacta d'aquest directori, a un compilarem la imatge del nucli mitjançant el clúster i a l'altre la compilarem amb el node servidor sol. Per que migrin correctament els processos en quan utilitzem el clúster, s'ha d'afegir l'opció “-j”, la qual especifica el nombre de processos que s'han d'executar simultàniament; (“#make -j 5 bzImage).

Com que aquest procés és llarg, i una vegada finalitzat no especifica el temps transcorregut, hem programat un script especial per elaborar aquesta funció. El trobarem a l'apartat “Scripts” amb el nom de “temporitzador”.


Els resultats de la compilació d'una imatge comprimida (bzImage) del kernel linux 2.4.26, han estan els següents:

- Sense clúster: 46,38 minuts

- Amb clúster: 26,05 minuts

Per tant amb el clúster s'ha aconseguit un rendiment del 56% superior respecte l'ordinador independent.



8.4 Test

Existeixen varis test destinats a comprovar el rendiment dels clústers, n'hem elegit un de força senzill escrit en llenguatge C, el podem trobar a la pàgina www.captain.at. Els resultats obtinguts en l'execució d'aquest, han sigut:

- Sense clúster: 25,23 minuts

- Amb clúster: 14,30 minuts


Aquesta operació representa un 43% de rendiment superior del clúster en relació a l'ordinador independent.



8.5 Avaluació total

Com es pot observar, on ressalta més el rendiment del clúster és en la compressió d’àudio. Això pot ser degut a que el procés tan gran que hem executat, la compressió de 18 cançons alhora, ha fet que tots els nodes treballessin gairebé al límit de les seves possibilitats aprofitant així al màxim el rendiment total del clúster. Mentre que altres aplicacions, com el test, no han processat tants recursos de cop i no s’ha obtingut un rendiment tan alt. A més a més també s'ha de tenir en compte que aquest procès es un procès el qual pot ser distribuit paral·lelament amb molta facilitat i efectivitat.

A continuació es mostra una captura del programa “mosmon” en estan “load”, ens mostra la carrega dels 5 nodes que componen el clúster.









9. Scripts

Un script o guió, és un fitxer de text que conté una sèrie d'instruccions les quals es poden executar en la línia de comandes d'una terminal. En aquest sentit són iguals als fitxers amb extensió “bat” del sistema operatiu MS-DOS, tot i que, òbviament com en Linux no existeix el concepte d'extensió, poden tenir qualsevol nom. L'únic requisit és que aquest fitxer de text tingui permisos d'execució. Per fer un fitxer de text executable, utilitzem la comanda “chmod”, i per executar-lo “./fitxer”.

La terminal de GNU/Linux “bash”, és una shell molt potenta, això fa que l'elaboració de shell scripts sigui molt útil sobretot per facilitar i fer més còmodes certs processos.


En el projecte CLARR, s'han creat alguns scripts, molt senzills, però útils, que exposem a continuació.


Temporitzador

S'executa un procés i al finalitzar mostra el temps en que ha esta iniciat, i finalitzat. És molt útil per calcular el que es triga al realitzar un procés.


#!/bin/bash

echo “Teclegi la comanda”

read comanda

date1=$(date)

$comanda

date2=$(date)

echo “Inici: $date1”

echo ”Final: $date2”



Node-Stop

Amb aquest script podem aturar els nodes remotament.

#!/bin/bash

echo “Host o IP del node a aturar”

read ip

ssh $ip << EOF

shutdown -h now

EOF

echo “$ip aturant-se...”



Node-Exec

Executa una comanda a tots els nodes del nostre clúster, menys al servidor. Aquest script s'ha de modificar segons la distribució de les IP específica del clúster.

#!/bin/bash

echo “Teclegi la comanda a executar en tots els nodes”

read com

ssh node2 << EOF

$com

EOF

ssh node3 << EOF

$com

EOF

[repetir per tots els nodes...]




10. Conclusions


10.1 Valoració del projecte

El tema d'aquest projecte mai ha estat totalment definit fins arribar a data d'avui, on he pogut observar finalment quin és el seu veritable aspecte. En cap moment he disposat d'uns coneixements suficientment amplis que m'hagin permès pronosticar el que acabaria elaborant, doncs a mesura que anava adquirint coneixements, l'ambició de superar-me creixia i es manifestava en un projecte més complicat. Fins fa uns dies no he tingut la certesa que aquest projecte funcionaria.


Veritablement la primera idea que tenia sobre el CLARR s'allunya molt de la vertadera. Inicialment pretenia fer un treball bàsicament textual, el títol era “La supercomputació a Catalunya”. Després de dur a terme una petita recopilació d'informació, (inclòs vaig arribar a contactar amb la CESCA “Centre de Supercomputació de Catalunya”), va ser llavors quan vaig conèixer el concepte de clúster, i em va fascinar de tal manera que vaig decidir canviar totalment el rumb del projecte. Tot i que encara no sabia com, tenia clar que faria un treball pràctic sobre l'elaboració d'un mini-superordinador.


Seguint amb aquesta tònica, més endavant, quan ja havia començat la part pràctica, llegint un manual, em va cridar l’atenció un apartat d’un manual. Parlava de l'arrencada sense disc dur (diskless), em va semblar un procés molt interessant. Era una manera d'estalviar energia, soroll, escalfaments i despeses econòmiques, que, a més, donava un major aspecte de supercomputador, ja que tot seria emmagatzemat dins una mateixa caixa. Arribat a aquest punt, el CLARR va començar a agafar forma. Posteriorment el projecte va avançar i va evolucionar fins arribar al que podem observar en aquests fulls de paper.

Realment, crec que el CLARR m'ha ensenyat més a mi, que jo a ell. He adquirit un ventall immens de coneixements en relació als que posseïa, ja que en relació al món de la supercomputació són minúsculs. Crec que el que vertaderament m’ha il·lustrat, han estat els numerosos problemes amb que m'he topat. Si els redactés tots probablement ompliria varies pàgines, òbviament al projecte he mencionat únicament la solució a aquests. A més, he patit l'inconvenient de viure lluny de la gran ciutat, doncs no he trobat ningú que domini els temes amb que he tractat, i per tant no he tingut cap recolzament tècnic.


10.2 El CLARR, els clústers

Referent al CLARR, el rendiment que s'ha obtingut no és ben bé el que imaginava que s'obtindria, tot i això no estic descontent amb l'aconseguit. S'ha de valorar que he treballat amb màquines força antigues, totes reciclades, això comporta diversos problemes amb el maquinari. A més si analitzem més estrictament els aspectes tècnics, ens trobem amb que un sol ordinador ha de gestionar la càrrega de disc dur de 5 ordinadors, i aquest no és més que un i586 a 233MHz. Si no haguéssim utilitzat la propietat diskless possiblement els resultat hagués estat més alt.

Tot i això, tenint en compte la meva dedicació, els coneixements que posseïa quan vaig començar, i els pocs recursos dels quals disposava, el producte final té un cert mèrit, (doncs per exemple, en la compressió d'àudio s'ha aconseguit un rendiment del 65% sobre l'ordinador individual). Òbviament degut a l'immens avanç de l’informàtica, si ho comparem amb els ordinadors dels que disposem avui en dia, els resultats semblen ridículs.


Després d'haver estudiat el sistema de clústering, i haver realitzat aquest petit experiment, arribo a la conclusió de que és una alternativa als superordinadors molt assequible i altament interessant en el camp científic, on aquest tipus de tecnologia és realment aprofitada. En canvi, en el camp empresarial no és tan útil, ja que requereix una despesa de diners important per la contractació dels tècnics degut a la complexitat de la seva elaboració. És exclusivament rendible en el cas d'empreses destinades estrictament a cobrir les necessitats que un clúster ofereix, per exemple un servidor web. Per últim, en el camp domèstic, no existeix un aprofitament suficientment gran per cobrir les despeses que aquest comporta, energia, espai, soroll... És absolutament absurd l'ús domèstic dels clústers.


10.3 Una alternativa per l'institut

La xifra de despesa econòmica que representa per a l'institut la compra i manteniment de l'equipament informàtic és extremadament alta. Elaborant aquest treball m'he adonat de l'existència d'una alternativa que comportaria multitud d'avantatges enfront això.

Els ordinadors de les aules d'informàtica dels alumnes, disposen de tota una sèrie de maquinari d'última generació, computadores personals amb processadors Pentium 3 i 4, discs durs d'alta capacitat, memòries relativament grans, etc. Proposo un sistema en el qual s'aconseguiria el mateix rendiment en cada ordinador amb un cost més assequible. Es tracta, com hem estudiat anteriorment, del funcionament sense disc dur o “diskless”, les màquines serien terminals sense disc rígid connectades via xarxa a un servidor el qual les allotjaria en el seu. Això comportaria les següents millores:

Per que tot aquest sistema funciones, això sí, seria necessari un servidor relativament potent, el qual podria ser perfectament, per reduir encara més els costos, un clúster de computadors.


Un altra alternativa que podria fer disminuir, en menor mesura, les despeses econòmiques, seria la utilització de programari lliure. L'ideal seria una completa substitució del sistema operatiu Microsoft Windows per GNU/Linux, ja que aquest segon és de lliure distribució i no s'haurien de pagar llicències per utilitzar-lo. Però si aquest és considerat un canvi massa brusc respecte l'alumnat, existeix la possibilitat d'utilitzar programari lliure sota l'entorn de Windows. Un exemple és OpenOffice, una alternativa gairebé idèntica al Office de Microsoft, inclòs millorada, totalment gratuïta.



12. GLOSSARI

gcc: GNU C Compiler, el compilador de llenguatge C del projecte GNU.

GPL: General Public License. Llicència utilitzada per el programari GNU.

Hostname: Nom d’un equip que l’identifica en una xarxa

HOWTO: manual d’instruccions

Kernel: Significa cor. És el nucli d’un sistema operatiu el qual fa d’intermediari entre l’usuari i els programes, i el maquinari del l’ordinador.

Lilo/Grub: Gestors d’arrencada del sistema GNU/Linux.

Linux: Nom del nucli creat per Linus Torvalds

Muntar i desmuntar: Procés pel qual un sistema d’arxius es fa o es deixa de fer accessible sota un directori del sistema d’arxius local.

PATH: Variable que conté els directoris on cercarà cada programa que executem en la terminal.

PID: Process ID, nombre que identifica un procés.

Root: Administrador del sistema GNU/Linux.

X: Quant parlem de les X ens referim al sistema gràfic X-Windows.

Software/Hardware: Programari/Maquinari.

C: És un llenguatge de programació creat el 1969 per Ken Thompson y Dennis M Ritchie als laboratoris BELL basant-se en els lelnguates BCPL i B.

IP: Internet Protocol. Direcció formada per 12 nombres que identifica un ordiandors dins una xarxa.

TCP/IP: És la base d’internet que serveix per enllaçar computadores. És un conjunt de protocols que defineixen com és poden comunicar entre si els ordinadors.

UDP: User Datagram Protocol. Protocol de nivell de transport basat en datagrames.
netmask: Màscara de xarxa, indica el rang de direccions IP que poden formar part d’una mateixa xarxa.

Router: dispositiu intermediari de xarxa que s’encarrega de la seva gestió

MAC: És un nombre format per lletres i números, que posseeixen les targetes de xarxa per identificar-se.

Runlevel: Nivel d’execució. Els sistemes GNU/Linux poden executar-se de maneres diferents segons el runlevel al que es trobin.

Terminal: Un dispositiu mecànic capaç d’establir una connexió amb uns servidor.

Diskless: Propietat que significa “sense disc dur”.

Clúster: un conjunt d'unitats funcionals interconnectades per mitjà d'una xarxa que actuen com una sola unitat.
BIOS:
Basic Input Output System. Sistema d’arrencada d’un ordinador.

FTP: File Transfer Protocol. Protocol de xarxa específic per la transferència d’arxius.



13. BIBLIOGRAFIA

The very verbose Debian 3.0 Installation Walkthrough, Clinton De Young

http://www.onews.com/sroty.php?news_id=2016


Enciclopedia virtual Wikipedia

http://www.wikipedia.org


Serveis de xarxa amb GNU/Linux, Jordi BOrt i Marc Guri

http://www.xtec.es/formacio/curstele/d70


Web dedicada al clústering: hispacluster

http://www.hispacluster.org


The OpenMosix Howto

http://howto.x-tend.be/openMosix-HOWTO


LTSP, Linux Terminal Server Project Howto

http://www.ltsp.org/documentation/ltsp-4.1/ltsp-4.1-2-en.html


Web official del projecte Beowulf

http://www.beowulf.org


Projecte sobre clúster d’alta disponibilitat en GNU/Linux

http://www.linux-ha.org


Llibre: “Manual práctico de redes área local”

Rafael Moreno Vozmediano. – Belenguer