A legolcsóbb szerver - mégsem a legolcsóbb lett

Régebben már írtam a szerver projektemről. A konklúzió az volt, hogy több kisebb teljesítményű PogoPlug-ot veszek, és azokból próbálok összerakni szervert, illetve adathordozó terén pendrive-ot lenne érdemes HDD-vel kombinálni. Egyik sem úgy jött össze, ahogy szerettem volna, de a végeredménnyel elégedett vagyok.

Több szempont felmerült a doboz választásánál:
  1. legyen rá garancia és support
  2. elég legyen a processzor teljesítménye és a memória az alkalmazásoknak
  3. gyors legyen az adatátvitel
  4. alacsony legyenek a fenntartási költségei
  5. megbízható legyen
  6. alacsony legyen az ára 
  7. tudjon pendrive-ról boot-olni
  8. ne legyen zajos
A fenti fontossági sorrend ezek között a dolgok között néhány hónap kutatómunkája után alakult ki, és még így csak az idő dönti el, hogy sikerült e jól választanom. Végül az Odroid XU4 mellett döntöttem.



1.ábra - Hardkernel - Odroid XU4

 Ez egy kis kártyaPC (cardPC), vagy SBC (single board computer), ami tud gigabites LAN-t, USB3-at, 4GB DDR3 memória van benne és 8 magos Samsung Exynos5422 ARM processzor hajtja. Előnye, hogy ARM-hez képest erős a CPU, gyors az adatátvitel és alacsonyak a fenntartási költségei. Hátránya, hogy nem árulja itthoni áruház, az SBC-k megbízhatósága vitatott, SD kártyával vagy eMMC-vel boot-ol, jóval többe kerül, mint amit szívesen kiadtam volna rá és ventillátoros a hűtése, ami elég zajos amikor felpörög. Vegyük sorra a pontokat.

1. Garancia és support

A garancia nálam kiemelt fontosságú volt, így elsőre majdnem úgy döntötem, hogy nem ezt veszem, mert Dél-Koreából rendelve kemény egy hónap garanciát adtak volna rá, utána fizethettem volna, ha javíttatni akarom. Végül kiderült, hogy egy német cég; a Pollin is árulja, így onnan rendeltem meg. Ők biztosítottak róla, hogy a 2 év Európai garancia áll a termékre, illetve a vámmal sem kellett így bajlódnom, ami az EUn kívüli szállításnál bejött volna, mert határérték feletti az ára és a szállítás sem olcsó. Összességében így olcsóbban megúsztam árban, mintha Koreából veszem és elvámoltatom. Tokkal együtt így 113 EUR-ba fájt, ami google szerint 35k kellett volna, hogy legyen, de a PayPal pofátlanul levont 38k-t a kártyámról. Igazából 40-el számoltam, szóval nem érdekelt az a pár ezres.

A support kérdésében a Hardkernel jó több fórum szerint is. Már 2009 óta a piacon vannak, sok termékük van, folyamatosan fejlesztenek, így kicsi az esély rá, hogy egyik napról a másikra eltűnnek, mint sok kártyaPC gyártó esetében azt már megfigyelhettük. Ezen kívül 78 oldalas PDF a XU4-hez a user manual, ami szépen össze van rakva, profi munka. Szóval ilyen szempontból rendben van a cég.

2. Processzor teljesítmény és memória

Ami nagyon aggasztott az annak idején kinézett doboznál, a PogoPlug-nál, hogy processzor teljesítményben vajon elég lesz e. Ezért is gondoltam több kisebb gépre külön feladatokkal. Megbecsültem benchmark pontok alapján, hogy mekkora teljesítményt tud a PogoPlug és még jónéhány kütyü processzora. Ehhez a passmark értékeit vettem alapul, és megpróbáltam extrapolálni más benchmarkok eredményei alapján, amik az ARM-es kártyaPC-ket hasonlítják össze x86-os gépekkel. A pontos értékekre már nem emlékszem, de a PogoPlug esetében az jött ki, hogy gyenge, 100 pont körüli lehet a teljesítménye. Összehasonlításképp az asztali gépemben egy Xeon processzor van, ami 4000 pontot hoz. Arról már volt fogalmam, hogy egyes alkalmazásoknak mekkora teljesítmény igénye van, így erős volt a gyanúm, hogy valami izmosabb kütyüre lesz szükség olyan 1000-1500 pont körül. Ezt abból szűrtem le, hogy hasonló tartományban van a tabletem is, és néha eléggé be tud lassulni. Utólag tényleges erőforrás fogyasztásokat nézve kellett is az Odroid XU4, és egy Raspberry nem feltétlen lett volna elég a Neo4j-nek. Komolyabb adatbázis lekérdezéseknél felugrik 85%-ra is a CPU, illetve Samba-ról történő másolásnál is eléri a 35%-ot ha 85MB/s-el másolok, egyébként 10MB/s-el is olyan 15%-ban dolgozik. Egy Intel Celeron N3150-al (1500 pont) történő összehasonlító mérések alapján a becsült 1000-1500 pont helyett csak 300-500 pontot kaptam. A mérés viszont csak prímszámok számolásán alapult, tehát nem túl reprezentatív. Összességében így is elégedett vagyok a választott gép teljesítményével.

Memóriát maga a rendszer 250MB-ot megeszik. Ubuntu server 14.04 LTS került a gépre, mert az Ubuntu megbízható, és az LTS verzió azt hiszem 3 évig kap biztonsági frissítéseket, így elviekben addig nem kell újraraknom a rendszert. A valóságban a 14-es major verzió gondolom 2014-et jelent, úgyhogy egy év múlva kijön az új LTS. Majd akkor váltani is fogok rá.  Nekem komoly szempont volt, hogy legyen elég erőforrás ahhoz, hogy a Neo4j is elmenjen rajta, és tudjak gráfokkal dolgozni. Ennek kell idle 200MB memória, de mindenképp érdemes legalább 0.5GB-ot adni neki. Én 0.75GB-ot adtam, és még ez is lehet, hogy kevés, mert az oldal szerint 4GB-ot lenne érdemes, amennyi persze nincsen. Nyilván ők nagy forgalmú, nagy gráfokkal dolgozó adatbázisra gondolnak, nem arra, amire én használnám. Azért vannak kétségeim, hogy tényleg szükségem lesz e gráf adatbázisra, de tetszeni tetszik. A PogoPlug-ok 128 és 256MB memóriája ehhez az operációs rendszerhez kevés, egy Neo4j futtatása meg teljesen esélytelen rajta. Egy ARM-es Arch-ot elvinne, esetleg még rajta egy Node.js-t vagy egy PostgreSQL adatbázist valamilyen szinten, de ennyi. A PogoPlug arra jó, hogy vastag klienst csináljunk, és a szerverre gyakorlatilag csak event storage kerüljön. A hagyományos megoldás ezzel szemben inkább a vékony kliens, és hogy amit lehet a szerverrel végeztessünk. Egy ideig játszottam a gondolattal, hogy PogoPlug-ot veszek, de aztán a végén inkább letettem róla, mert sokkal egyszerűbb a hagyományos utat követni egy géppel, mint horizontálisan kiskálázni az alkalmazást több gép között. Az Odroid-ra így most fel tudok rakni mindent, ami kell, és az eddigiek alapján gond nélkül futni fog rajta. Néztem egyébként 4-6-8GB memóriával rendelkező SBC-ket is, de dupla ennyibe kerültek. Végül úgy döntöttem, hogy nem éri meg ennél drágábbat venni, és még ezt is sokalltam. Néztem olcsóbbakat is, pl az új nyolcmagos Banana PI is szóba jött, annál fele CPU teljesítménnyel megúsztam volna 32k-ból. Így utólag azt hiszem jól döntöttem, mert ezt úgy elégnek érzem, ennél kevesebbet már nem érezném annak. Nem feltétlenül lassítaná monjuk az adatforgalmat, de 35% helyett 70%-ra ugrana a processzor használat egy Samba szerveres másolásnál, ami nem feltétlen kedvező ha párhuzamosan akarunk több dolgot csináltatni a géppel.

3. Adatátvitel




Értelemszerűen minden szűk keresztmetszetet ki kell iktatni ahhoz, hogy gyors legyen az adatátvitel a szerver és a kliens gépek között. Ezeket úgy érzem meg is tettem, és ezt a méréseim is igazolják. Amiben kompromisszumot kötöttem az három dolog. Az egyik a zaj, a másik kettő, hogy SBC kategóriából választottam, ami nem a megbízhatóságáról híres, és, hogy pendrive vagy SSD helyett SD kártyát tettem a rendszer alá, ami szintén nem a megbízhatóságáról híres. Úgy döntöttem, hogy bevállalom az SBC-vel járó kockázatot a sokkal alacsonyabb fenntartási költségek miatt. Az SD kártyát így

Árban megúsztam 40 pénzből magát a kütyüt. NAS-nál 100k felett költöttem volna hasonló teljesítményre, dedikált szervernél szintén. Ami árban még szóba jött az integrált ATOM processzoros alaplapok. Mondjuk egy Intel J1900-as ATOM processzoros doboznál valószínűleg szintén 40k-ból megúsztam volna a kérdést. A kettő között két szempont volt a döntő nálam: a megbízhatóság és a fenntartás költségei. Az SBC-k és az SD kártyák megbízhatóságáról vegyesek a vélemények. Egyrészt nagyon típus függő, másrészt meg mindenki véleményt mond, senki nem csinál statisztikát, amin látszanának a tények. Én úgy döntöttem, hogy bevállalom ezt a kockázatot, és az SBC mellett döntöttem. Körülbelül 10W-al fogyaszt kevesebbet, ami évente 10 pénzbe fáj.

Adathorozó terén végül SD kártyát vettem komolyabbat 10k-ért, mert csak SD kártyáról tudott boot-olni a rendszer. Viszonylag egyszerűen be lehet állítani, hogy az SD kártya adja át a boot-ot mondjuk a HDD-nek vagy egy pendrive-nak, de úgy gondoltam, hogy adok egy esélyt az SD kártyának, mert annyian mondták már bármi féle bizonyíték nélkül, hogy nem alkalmas operációs rendszernek, hogy muszáj kipróbálnom. Úgy gondoltam, hogy 32GB az ideális méret ha adatbázisokat is akarok rátenni, illetve az alkalmazások fájljait is erre tenném. A nagyobb statikus fájlok nyilván a HDD-re mennek. Konkrétan erről az SD kártyáról van szó:

1.kép - Sandisk 32GB microSDHC Extreme UHS-I U3 Class10 + adapter

Ez 90MB/s olvasási sebességet tud, aminél sokkal többet a HDD (130MB/s), a rack (150MB/s) és a hálózat (120MB/s) sem. Nyilván ezek max értékek, a valóság ennél valamivel gyengébb. Például a HDD-nél Samba szerverről letöltést átlag 85MB/s-ot mértem kábellel (wifi-vel csak 11MB/s). Az SD kártya tartalmát nem osztottam meg a hálózaton. Később talán egy teszt keretében megteszem, hogy lássam mégis mennyivel olvas a HDD-hez képest a gyakorlatban.
Ami a rendszernek való alkalmasságot illeti, az SD kártya egyelőre körülbelül egy hónapja megy. Volt vele valamennyi gond áramszünetek miatt szétmehetett valami a rendszerben, mert volt, hogy nem boot-olt be párszor, aztán valahogyan mégis helyreállt. Toltam rá egy fsck-t , azóta nem volt vele semmi ilyen problémám. Az áramszünet kérdését majd később megoldom egy szünetmentessel. Összességében eddig jól vizsgázott, hosszú távon meg majd kiderül mennyire érte meg HDD helyett erre rakni a rendszert. Nekem azért jobb így, mert nem pörgeti feleslegesen a HDD-t, aminek azért van hangja, illetve plusz 5-10W fogyasztást is jelent. Ez havi kb. 7.5kWh plusz fogyasztás lenne, így az SD kártya ára kb. 2 évi villanyszámlán visszajön. Tehát ha 2 évnél tovább bírja majd, úgy, hogy esetleg néha újrateszem rajta a rendszert, akkor megérte. Ha 2 év előtt tönkremegy, akkor nem érte meg. Érdemes kikapcsolni a swap-et, a fájlrendszeren a journaling-ot, illetve noatime-ot használni ahhoz, hogy meghosszabbítsuk az életidejét. Ezekből egyedül a noatime-ot kellett beállítanom fstab-ban, a többi alapból jött az ISO-val. A HDD-re tehát csak statikus fájlokat teszek majd, illetve backup-ok is erre mennek. Egyértelmű, hogy viszonylag sűrűn backupolni fogom a rendszert a HDD-re, mert nem tudom megmondani előre, hogy mennyire lesz tartós a kártya. A HDD-t ajándékba kaptam, konkrétan ilyen:

1.kép - WD10EZEX - 1TB WD 3.5' Caviar Blue SATAIII 64MB cache

Ez egy USB3-as rack-be került, amit a releváns logout fórum javaslatai alapján választottam, meg nem utolsó sorban az olcsósága miatt, mindössze 5k-ba fájt, és ahhoz képest mindent tud, amire egy rack-nél szükség lehet. Ami leginkább tetszik benne, hogy van benne sleep, tehát nem pörgeti állandóan a winchester-t. Ezeknél azt kell tudni, hogy valamilyen USB háttértárnak látja őket a rendszer, amit valamilyen ehhez illő szabvány felületen keresztül vezérel. Ezen a felületen tud pl. spin down parancsot is kiadni, ha egy ideje nem volt hozzáférés a lemezhez. Ilyenkor lepörög a meghajtó, és álomba szenderül. Az olcsó rack-eknél sokszor nincs implementálva a felületnek ez a része, ergo nem lehet altatni a HDD-t, mert a rack nem támogatja. Van egy lista az említett fórumokban, ami alapján elég jól kiválasztható, hogy mit érdemes venni. Érdemes áttanulmányozni. Maga a rack egy ilyen lett:

2. kép - Captiva HDD EXTERNAL 3,5" SATA USB 3.0

Összességében bevált, bár van egy kis gyártási hibája. A csavarok nem mennek bele rendesen a menetbe, szorulnak, a fejük elég gyenge anyag, aztán könnyű szétkenni csavarhúzóval. Ez a fórum szerint nem széria hiba, mert másnak nem volt ilyen gondja. Csak ezért nem akartam visszaküldeni, hogy adjanak másikat. Belehajtottam, amennyire tudtam, aztán majd bemegyek a csavarboltba, ha arra járok, és kérek hasonló csavarokat meg egy normális csavarhúzót. A sleep rendesen megy rajta, viszont ha kihúzom a gépből, akkor szerintem a végtelenségig pörögne. Azt mondják ez normális, és nem igazán megoldható. Mivel a szerver 24 órában megy, ezért ez nálam nem szempont.

Összefoglaló az eddigi tapasztalatokról

Most már körülbelül 8 hónapja megy a szerver. A teljesítményével és a fogyasztásával nincsen gondom, olyan 5W körül eszik alapjáraton. Az SD kártyán is szépen megy a Linux, nem volt a túl sok írásból eredő problémám. A ventillátor keltette zajjal volt minimális gondom, de mivel másik szobába tettem a gépet, ezért ez sem jelentett akkora gondot. Elméletileg szoftveresen lehet csökkenteni a fordulatszámot, szóval ez is megoldható.

Viszont most néhány hete áll a szerver, és nem igazán volt azóta időm foglalkozni a javításával. A gondot meglepő módon az okozta, hogy szerelik a városban az egész villamos hálózatot, és egy csomószor volt áramszünet. Az SD kártya sajnos kimondottan érzékeny arra, ha írás közben elmegy az áram, szóval emiatt egy szép napon nem indult újra a szerver. Az adatok természetesen megmaradtak a HDD-n, úgyhogy hozzájuk tudok férni, ha kell. Nem tudom, hogy a kártya menthető e vagy sem, nem volt időm foglalkozni vele. Időközben kaptam egy új SD kártyát valakitől, szóval az se lesz gond, ha esetleg kukázni kell a régit. Aki ilyen típusú rendszerrel próbál szervert építeni, annak melegen ajánlom, hogy tegyen alá egy szünetmentes tápegyságet. Nekem is ez volt a tervem, csak halogattam a kérdést addig a pontig, amikor már sajnos késő volt. Van egy szünetmentes a asztali gépem alatt, azt fogom lecserélni egy újra, és beteszem a szerver alá a mostanit. Aksi nem lett cserélve az UPS-ben mióta megvan (5 éve), de nem tapasztaltam, hogy rövidebb ideig tudná árammal ellátni a gépet, mint amikor új volt, úgyhogy talán még egy pár évig ellesz így. Teszteltem is, ugyanúgy negyed órát bír most is a PC-vel, mint amikor új volt. A szervernek elég kicsi a fogyasztása, szóval áramszünetkor ellehet vele akár egy órát is mielőtt 5% alá esne a töltöttség és lekapcsolná a Linux a gépet.

Összehasonlítás egy lehetséges alternatívával


Időközben beszélgettem több emberrel is, hogy nekik milyen szerverük van, és az jött le, ha hasonló költségen létezhet jobb alternatíva is. Lehet kapni integrált processzoros alaplapokat Intel Celeron vagy Atom processzorokkal. Ezek így vagy x86 vagy Atom architektúrát használnak, tehát szoftver szempontjából stabilabb megoldást jelentenek, mint a gyártó által fejlesztett kernellel rendelkező ARM processzoros SBC-k. Mivel a micro ATX alaplap felülete jóval nagyobb, mint mondjuk egy Odroid XU4 felülete, ezért passzív hűtéssel is megoldható a hőelvezetés, nincs szükség ventillátorra, és így az ezzel járó zaj sem jelent akkora problémát. Teljesen hangtalan nyilván nem lesz a gép, mert a tápegységeken általában 12cm-es ventillátorok vannak. További előnyük az ilyen alaplapoknak az Odroid XU4-el szemben, hogy SATA csatlakozók is vannak rajtuk, tehát SSD-re lehet tenni a rendszert az alacsony fogyasztásért, és a HDD-t is közvetlenül rá lehet kötni az alaplapra ahelyett, hogy USB3-SATA átalakítót kellene használnunk.

Természetesen azért ennek az alternatívának sem csak előnyei vannak. A nagyobb méret micro ATX-nél max 25x25cm-t jelent, tehát a 6x8cm-es Odroid XU4-hez viszonyítva ezek hatalmasak. Ha fontos, hogy apró legyen a gép, akkor ez komoly ellenérv lehet. Az én esetemben ez nem lenne probléma, van bőven hely a szervernek, bár a hordozhatóságát azért csökkenti. Az Odroid XU4 alapú szerverem áram fogyasztása idle 4W, maxra járatva 14W. Ebből ARM idle 2W-ot fogyaszt, maxra járatva 6W-ot. A többit a HDD és a hozzá tartozó rack eszi meg. Ha mondjuk egy Intel Celeron J1900 processzorral rendelkező micro ATX-es megoldás mellett döntünk, akkor számolnunk kell egy ilyen rendszer plusz fogyasztásával. A J1900 idle 14W-ot fogyaszt, maxra járatva pedig 22W-ot +/-1W két független teszt szerint. Ehhez még hozzáadhatjuk az SSD fogyasztását is, ami idle 1W körüli, elhanyagolható. Szóval ha feltételezzük, hogy azonos terhelést fognak kapni és többségében idle lesz a rendszer, akkor minimum 10W-al többet fog fogyasztani minden időpontban a J1900-al, mint az Odroid XU4 ARM-jével. Ez havi körülbelül 7.5kWh többletet jelent, ami pénzben kifejezve olyan 375Ft-ot jelent. Éves szinten ez 4500Ft-ot jelent. Árban egy ilyen alaplap olyan 20k, míg egy Odroid XU4 40k-ba kerül, viszont kell venni hozzá házat táppal, ami olyan 10k körüli összeg. A 10k különbözetet 2 év alatt hozná be az Odroid XU4, tehát hosszú távon az lenne az olcsóbb megoldás. Azonban mivel a microATX alaplapok rendelkeznek wake on LAN funkcióval, ezért borul a végeredmény. Ha az idejének nagy részében idle a szerver, akkor be lehet tenni sleep mode-ba, amivel 5W-ra, vagy az alá redukálható a fogyasztása. Ha bevesszük a képbe, hogy a rack idle 2W-ot eszik, akkor szinte azonos az idle Odroid XU4 és az alvó micro ATX fogyasztása, és így a fenntartási költségük is körülbelül azonos lesz. Mivel a nap nagy részében idle nálam a szerver, ezért ez még meg is áll az én esetemben. Összességében egy ilyen micro ATX-es gép hasonló összegbe kerül, mint egy SBC-s gép, mert ugye kell neki ház + táp (10k), 2G memória (5k), SSD (15k), HDD (15k) és persze az alaplap (20k), ami összesen így 65k. Az SBC-s géphez kell SD kártya (10k), USB3-SATA átalakítós rack (5k), HDD (15k) és persze az Odroid XU4 (40k), ami így összesen 70k.

Összefoglalva tehát árban és talán fenntartási költségben és zajszintben is azonosak ezek a gépek. Előny a micro ATX oldalán, hogy akár 4-5x erősebb is lehet a processzora és legalább 4x annyi memóriát lehet belerakni, ami nem elhanyagolható, ha erőforrás igényes alkalmazásaink is vannak. További előny lehet, hogy jóval kiforrottabb technológiára épülnek ezek az alaplapok, mint az SBC-k. Előny az SBC oldalán, hogy kisebb helyet foglal, és folyamatos használat mellett kevesebb a fenntartási költsége. A micro ATX-es megoldás tehát szerver alkalmazások futtatására jobban ajánlott, az SBC-s megoldás pedig olyan területekre, ahol szükség van valaminek a 24 órás monitorozására, vezérlésére. Természetesen mindkettő eltudja látni a másik feladatait is, csak kevésbé optimálisan.

Nálam igazából mindkét dologra szükség lesz. Egyrészt szükségem van egy szerverre, másrészt monitorozni szeretném a hőmérsékletet és a nyomást több szenzorral, illetve szeretnék később robotokat is vezérelni. Valószínűleg a későbbiekben a szerver funkciót ki fogom váltani egy micro ATX-es megoldással, és átteszem az Odroidot tisztán monitorozásra és vezérlésre.

Nincsenek megjegyzések:

Megjegyzés küldése