Linux fürtözés HOGYAN

Ram Samudrala ([email protected])

v1.1, 2003 június 17.
Hogyan készítsünk nagy teljesítményű Linux fürtöket.

1. Bevezetés

Ez a dokumentum leírja hogyan készítettem el a kutatásaimhoz szükséges nagy teljesítményű Linux fürtöket.

Az alábbi információkat a saját felelősségedre használd. Nem vállalok felelőseget semmilyen cselekedetedért, amelyet ezen HOGYAN elolvasására alapozol. Eme HOGYAN legfrissebb változata megtalálható a http://www.ram.org/computing/linux/linux_cluster.html honlapon.

Szemben más dokumentumokkal, melyek általában beszélnek arról hogyan kell fürtöket készíteni, ez egy specifikus leírás arról, hogy a mi laborunk miként készítette el azt. Így nem csak a számítási szempontok részleteit, hanem az asztali számítógép, laptop, és a szerver általános szempontjait is tartalmazza. A dokumentum főleg belső használatra készült, de feltettem webre is, mivel számos e-mail-t kaptam amik ugyanezekről az információkról érdeklődnek. Mostanában - ahogy egy másik 64 csomópontos fürtöt tervezetem - azt találtam, hogy nincs információ arról, pontosan hogyan gyűjthetsz össze olyan komponenseket amiből Linux alatt megbízhatóan működő csomópontokat hozhatsz létre. Olyan információ ami nem csak a csomópontokkal történő számítást, hanem azok szükségleteit is tartalmazza. Leginkább arra használható ez a HOGYAN, hogy bemutassa milyen típusú hardverek működnek jól Linux alatt és milyenek nem.

2. Hardver

Ez a fejezet a hardver választásommal foglalkozik. Az ismert hardver problémák fejezetet leszámítva feltettem, hogy minden tényleg jól működik.

A hardver telepítése egyszerű, a legtöbb részlet benne van a kézikönyvben. Minden részben a hardverlista a megrendelés sorrendjében található (a legújabb a legelső).

2.1 Csomópont hardverek

32 db gép az alábbi összeállítással rendelkezik:

32 db gép az alábbi összeállítással rendelkezik:

32 db gép az alábbi összeállítással rendelkezik:

32 db gép az alábbi összeállítással rendelkezik:

2.2 Szerver hardver

1 db szerver külső használatra (információ terjesztés) az alábbi összeállítással rendelkezik:

2.3 Asztali számítógép hardver

1 db asztali számítógép az alábbi összeállítással rendelkezik:

2 db asztali számítógép az alábbi összeállítással rendelkezik:

1 db asztali számítógép az alábbi összeállítással rendelkezik:

1 db asztali számítógép az alábbi összeállítással rendelkezik:

2 db asztali számítógép az alábbi összeállítással rendelkezik:

2 db asztali számítógép az alábbi összeállítással rendelkezik:

2 db asztali számítógép az alábbi összeállítással rendelkezik:

2 db asztali számítógép az alábbi összeállítással rendelkezik:

3 db asztali számítógép az alábbi összeállítással rendelkezik:

2.4 Tűzfal, átjáró hardver

1 db tűzfal az alábbi összeállítással rendelkezik:

1 átjáró (gateway) az alábbi összeállítással rendelkezik. Az átjáró tükrözése a tűzfalnak, arra az esetre, ha az összeomlana/elromlana.

2.5 Egyéb, kiegészítő hardverek

Biztonsági mentés:

Monitorok:

Nyomtatók:

2.6 "Kössünk össze mindent egymással" hardverek

KVM monitor kapcsolókat használunk egy olcsó monitorral, hogy "lássuk" az összes gépet.

Ez egy jó megoldás, de azt hiszem nem feltétlenül szükséges. Amire szükségünk van, az egy kis hordozható monitor amely a PC hátára csatlakoztatható (stylus-al működik, mint a Palm). Nem tervezem több monitorkapcsoló illetve KVM kábelt használatát.

A hálózat fontos:

2.7 Költségek

A mi szállítónk a Hard Drives Northwest ( http://www.hdnw.com). Minden számítási csomópontért a fürtünkben (a két processzort is beleértve) körülbelül 1500-2000 USD-t fizettünk adóval együtt. Az általános célunk az volt, hogy a költség 1000 USD alatt legyen processzoronként (beleértve az egyéb alkatrészek árát is).

3. Szoftver

3.1 Operációs rendszer: természetesen Linux!

Az alábbi kerneleket és disztribúciókat használjuk:

Ezek a disztribúciók jól működnek mióta a frissítéseket CD-n küldik és nem kell megbízni a külső hálózatban a frissítések beszerzéséhez. "Tisztábbnak" tűnnek mint a szokásos Red Hat disztribúciók és a beállítása nagyon stabil.

3.2 Hálózati szoftver

A Shorewall 1.3.14a programot ( http://www.shorewall.net) használjuk tűzfalnak.

3.3 Párhuzamos feldolgozó szoftver

Mi a saját szoftverünket használjuk alkalmazások párhuzamosítására, de vannak tapasztalataink PVM-el és MPI-al. Szerintem ezeknek az előre csomagolt programoknak az többletterhelése túl nagy. Azt ajánlom írjál alkalmazás specifikus kódot a feladatodhoz (magánvélemény).

3.4 Költségek

A Linux és a legtöbb szoftver ami Linux rendszeren fut ingyen másolható.

4. Telepítés, beállítás és üzemeltetés

4.1 A merevlemez beállítása

Ez a fejezet a merevlemez-partícionálási stratégiát írja le.

fürtözött gépek:

hda1 - swap   (2 * RAM)
hda2 - /      (maradék hely)
hdb1 - /maxa  (teljes lemez)

asztali számítógép (windows nélkül):

hda1 - swap   (2 * RAM)
hda2 - /      (4 GB)
hda3 - /spare (maradék hely)
hdb1 - /maxa  (teljes lemez)
hdd1 - /maxb  (teljes lemez)

asztali számítógép (windows-szal):

hda1 - /win   (teljes disk)
hdb1 - swap   (2 * RAM)
hdb2 - /      (4 GB)
hdb3 - /spare (maradék hely)
hdd1 - /maxa  (teljes lemez)

laptop-ok (egy lemez):

hda1 - /win   (a teljes lemezméret fele)
hda2 - swap   (2 * RAM)
hda3 - /      (maradék hely)

4.2 Csomagok beállítása

A fürt gépeire a csomagok minimális halmazát telepítettük. A felhasználóknak megengedtük, hogy úgy konfigurálják az asztali számítógépeket, ahogy akarják.

4.3 Operációs rendszer telepítése és karbantartása

Csomagok klónozása és karbantartása

FAI

Az FAI ( http://www.informatik.uni-koeln.de/fai/) egy automatizált rendszer, amely Debian GNU/Linux operációs rendszer telepítésére használható PC fürtökön. Veszel egy vagy több szűz PC-t, bekapcsolod és néhány perc múlva a Linux fel van telepítve és be van állítva, futtatása az egész fürtön semmilyen beavatkozást nem igényel.

SystemImager

A SystemImager ( http://systemimager.org) egy szoftver, ami automatizálja a Linux és szoftverek telepítését és a termelés beindítását.

Egyéni klónozási stratégia

Van egy teljesen elosztott rendszerünk. Ezt azt jelenti, hogy minden gép az operációs rendszer egy példányát tartalmazza. Az operációs rendszert minden gépre manuálisan telepíteni kényelmetlen. A telepítés optimalizálásához először egy gépet telepítettem és állítottam be pontosan úgy, ahogy akartam. Aztán készítettem egy tömörített tar állományt az egész rendszerről amit egy CD-ROM-on helyeztem el. Végül erről klónoztam minden gépet a fürtben.

A tar állomány készítésére az alábbi utasítást használtam:

tar -czvlps --same-owner --atime-preserve -f /maxa/slash.tgz /

Egy go nevű szkriptet használok, ami veszi a hosztnevet és az IP címet mint argumentumot, és kicsomagolja a slash.tgz állományt a CD-ROM-ról, majd lecseréli a hosztnevet és az IP címet a megfelelő helyeken. A go szkript és bemeneti állományai elérhetőek a http://www.ram.org/computing/linux/linux/cluster/ címen. Ezt a szkriptet módosítani kell a TE fürtöd felépítésednek megfelelően.

A Tom's Root Boot csomagot is használom ( http://www.toms.net/rb/) arra, hogy indítsam a gépet és klónozzam a rendszert. A go szkriptet el lehet helyezni a CD-ROM-on vagy egy floppy lemezen ami a Tom's Root Boot csomagot is tartalmazza. (törölhetsz néhány programot ebből a csomagból, ha kifutsz a floppy lemez kapacitásából).

Még kényelmesebb, ha készítesz egy indító CD-ROM-ot ami a Tom's Root Boot csomagot és a go szkriptet, valamint a klónozni kívánt rendszer tar állományát tartalmazza. Módosíthatod a Tom's Root Boot csomag inicializáló szkriptjét, hogy a go szkriptet futtassa (mindig be kell majd állítanod az IP címet, ha nem használsz DHCP szolgáltatást).

Egy alternatív lehetőség, hogy készítesz egy saját indító lemezt (mint egy mentő lemez), amely tetszésed szerinti kernelt és programokat tartalmaz. Számos dokumentum létezik, ami leírja ezek készítésének módját. A Linux Bootdisk HOWTO ( http://www.linuxdoc.org/HOWTO/Bootdisk-HOWTO/) is tartalmaz hivatkozásokat más előre gyártott boot/root lemezekre.

Így kifejleszthetsz egy rendszert ahol az összes dolog amit tenned kell csak annyi, hogy behelyezed a CD-ROM-ot bekapcsolod a gépet, veszel egy csésze kávét (vagy sütit) és visszajössz megnézni a kész klónt. Ezt az eljárást ismételheted annyiszor, ahány géped van. Ez az eljárás nagyon jól működik nekem és ha van valaki aki beteszi és kiveszi a CD-ROM-okat akkor még jobb.

Rob Fantini ( [email protected]) módosította a fenti szkriptet, Mandrake 8.2 rendszer klónozásához. Ez elérhető a http://www.ram.org/computing/linux/cluster/fantini_contribution.tgz címen.

Jelenleg egy olyan rendszeren dolgozok, amelyikben minden egy CD lemezre van felrakva, erről indul a gép és könnyen klónozható. A közeljövőben közzéteszem a módszert.

DHCP vagy beégetett IP cím?

Ha van egy működő DHCP szolgáltatásod, akkor nem szükséges újra beállítanod az IP címet és ezt a részt törölheted a go szkriptből.

A DHCP előnye, hogy nem kell vacakolnod az IP címekkel mert a megfelelően beállított DHCP szerver szolgáltatja azokat. Egy hátránya, hogy egy központi szerveren van megvalósítva (és ahogy mondtam azon vagyok hogy elosszam a dolgokat amennyire csak lehet). Az IP címek hardver ethernet címekhez való kötése is kellemetlen lehet, amennyiben a gépet vagy a hosztnév cserét a szokásos módon kívánod végrehajtani.

4.4 Ismert hardver problémák

A hardverek általában tényleg igazán jól működtek. Specifikus kérdéseket az alábbiakban sorolunk fel:

Az AMD dual 1.2 GHz gépek igazán melegszenek működés közben. Kettő már érezhetően növeli a szoba hőmérsékletét. Míg jók lehetnek asztali számítógépekhez, de a hűtés és az energia fogyasztás megfontolandó, amikor nagy fürtök részeként használjuk őket. A korábban bemutatott AMD Palmino konfiguráció igazán jól működik, de azt ajánlom vegyél két ventilátort minden esetben, ez megoldotta az összes instabilitás problémánkat.

4.5 Ismert szoftver problémák

Néhány tar program nem úgy készíti el a tar állományt, ahogy azt elvárnánk (különösen a szimbolikus hivatkozások visszafejtésében mutatkozik ez meg). A megoldás, hogy használj olyan tar programot, ami jól csinálja, például a Red Hat 7.0 disztribúcióban lévőt.

5. Feladat végrehajtás a fürtön

Ez a fejezet úgy fejlődik ahogy a fürtöm használata alakul. Eddig azon voltam, hogy megírjam a saját üzenet küldő eljárásaimat, amellyel különböző gépeken futó processzek kommunikálnak egymással.

Sok alkalmazás - különösen a számítógépes genomika területén - masszívan és könnyen párhuzamosítható. Ez azt jelenti, hogy jó elosztás érhető el azáltal, hogy azonos feladatokat szórunk szét a gépek között (például amikor a teljes genomot analizáljuk azt a technikát használjuk, ami egy génen, proteinen dolgozik és minden processzor egy génen, proteinen dolgozhat időben, függetlenül a többi processzortól).

Eddig nem kellet használunk profi queue rendszereket, de ez nyilvánvalóan erősen függ a futtatni kívánt alkalmazástól.

5.1 Durva teljesítményteszt

Egyszerűen a legfontosabb programot futtattuk (a mi ab initio protenin folding szimulációs programunkat) egy Pentium 3 1GHz processzoros gépen referenciának. A következő eredmények születtek:

Athlon 1.2 GHz processzor körülbelül 16% gyorsabb
Xeon   1.7 GHz processzor körülbelül 27% gyorsabb
Athlon 1.5 GHz processzor körülbelül 38% gyorsabb
Athlon 1.7 GHz processzor körülbelül 46% gyorsabb
Xeon   2.4 GHz processzor körülbelül 62% gyorsabb

Igen, az Athlon 1.5 GHz gyorsabb, mint a Xeon 1.7-es mivel a Xeon csak hat utasítás per órajelet (IPC), míg az Athlon kilenc órajelet futtat (számolj!).

5.2 Folyamatos üzemidő (uptime)

A gépek, mind hardver, mind szoftver tekintetben hihetetlenül stabilnak bizonyultak. Egyszer lettek debuggolva (rendszerint az új gépek közül néhány hardver problémával érkezik) folyamatosan nagyon nagy terhelés alatt. Egy példa látható alul. Újraindítások általában akkor történnek, amikor elektromos zavar keletkezik.

  2:29pm  up 495 days,  1:04,  2 users,  load average: 4.85, 7.15, 7.72

6. Köszönetnyilvánítás

A következő személyek segítettek ennek a HOGYANnak az elkészítésében:

7. Irodalomjegyzék

Az alábbi dokumentumok hasznosak lehetnek - ezek referenciák olyan forrásokra, amelyek a nagy teljesítményű fürtök használatával foglalkoznak:

8. Magyar fordítás

A magyar fordítást Szalai Ferenc készítette (2003.05.19). A lektorálást Daczi László végezte el (2003.05.21). Bármilyen fordítással kapcsolatos észrevételt a [email protected] címre küldjetek. Eme dokumentum legfrissebb változata megtalálható a Magyar Linux Dokumentációs Projekt honlapján. A fordítás javítva 2003.05.26.-án.