Egy kis techno-post ismét. Sokat szívtam az alábbiakkal, és bár a törzsközönségnek asszem nem lesz túl izgi, gondoltam azért leírom, hátha valaki rátalál a neten, és hasznos lesz számára. (Ha tényleg hasznos volt, írj egy sort légyszi kommentbe, ehhez regisztrálni sem kell! Köszi.)
Tervbe vettem az otthoni számítástechnikai infrastruktúra átrendezését. Eddig egyszerű volt: adott egy kábelmodem, ebbe jön a WLAN router, abba pedig a PC (Ethernet kábellel) és a laptop (WiFi-n). Most vettem egy külső USB-s merevlemezt és egy új WLAN routert, amibe a lemez bedugható. A cél, hogy ezek folyamatosan mennek, és bármelyik gépről elérhetőek a lemezen tárolt fájlok (ld. az ábrát), illetve majd egyszer valami médialejátszón át a filmeket is erről lehet nézni a tévén.
A router típusa TP-Link TL-WR1043ND. A kategóriájában olcsó kis eszköz -- 15.000 Ft a sarki boltban --, de a műszaki paraméterei az élvonalba tartoznak: gigabit Ethernet a vezetékes irányba, 300 Mb/s (802.11n) a vezeték nélküli oldalon, 8 MB flash és 32 RAM memória, USB port. A vinyó egy 1,5 terabájtos (wow, tera, ezt is megértük!) Western Digital külső HDD.
Az eszközöket kicsomagolva, összedugdosva hamar működésre is bírtam, azonban elszomorítóan lassú volt a vinyóhoz való hozzáférés sebessége. Konkrétan: letöltés, azaz olvasás a lemezről 7,2 MB/s (megabájt -- azaz nem megabitbit -- per másodperc), feltöltés, azaz írás a lemezre 1,5-2 MB/s. (A vinyó NTFS-re volt formázva, és a rendszer alapból a Windowsos SMB protokollt használja a fájlmegosztásra.) Összehasonlításul: a vinyót közvetlenül a PC-hez kötve kb. 30 MB/s letöltési (olvasási) és 18 MB/s feltöltési (írási) sebességet mértem. Van különbség.
Szerencsére azért volt még mit tenni. A router firmware-ét le lehet cserélni Linuxra, annak is egy speciálisan ilyen eszközökre összeállított verziójára, az OpenWRT-re. Nem mondom, hogy egyszerű játék. Bár maga a firmware letöltése a netről és felrakása a routerre hamar megvan, azóta sok-sok-sok éjszakát töltöttem a konfigurálgatásával, és csak mostanra kezdi elérni a gyári firmware funkcióinak szintjét. Tényleg nem magától értetődő sajnos, de sok ügyes trükköt meg lehet az OpnenWRT-vel tenni, amit a gyári firmware-rel nem.
Mindenestre nem volt hiába a firmware csere: kb. 9 MB/s letöltési és 1,5-3 MB/s feltöltési sebességet értem így el. Ez még mindig nem egy nagy áttörés, de azért jobb már valamivel.
A következő lépés az NTFS lecserélése volt Ext3fs-re, a Linux saját fájlrendszerére. Első körben ez nem hozott javulást, maradt a 9 MB/s le és 3 MB/s fel. Sebaj, nem adjuk fel: játsszunk kicsit a mount-olási opciókkal. Itt a „sync”-et „async”-re átírva megtört a jég, és sikerült az írási sebességet megduplázni! Az így elért sebességek: le: 9-10 MB/s, fel 5-6 MB/s. Ez a csúcs, bár még próbálkoztam más megoldásokkal, e fölé nem sikerült menni.
A teljesség kedvéért leírok még pár „nyomozási eredményt”. Próbálkoztam az SMB/Samba protokollt NFS-re cserélni. Sajna sok köszönet nem volt benne: a Windowsos NFS kliensektől több gép is kék halállal elszállt, ilyet pedig azért a Windows nem nagyon szokott mostanság. Teszteltem Linux klienssel is, bár az „csak” egy virtuális gépben futott egy Windowsos PC-n. Ez működött, de nem volt gyorsabb a Samba-nál. Ráadásul mivel itthon Windowsok vannak, és üzembiztos működés a cél, az NFS-t elvetettem, maradt a Samba.
Van Ext3 driver Windowsra is, játékból kipróbáltam azt is (Ext2fsd), a PC-re direktbe kötve a vinyót. Így bizony némileg kisebb értékeket kaptam: 27 MB/s le, 4 MB/s fel. Ez utóbbi amúgy rosszabb, mint a routeren át!
Keresve a szűk keresztmetszetet leteszteltem a router és a vinyó közötti adatsebességet: a /dev/zero-ból olvastam dd-vel és írtam ki a lemezre (a dd-nél fontos, hogy elég nagy legyen a block size, így gyorsabb), illetve fordítva, a lemezről másoltam a /dev/null-ba. Azért kellett ilyen trükkökkel élni, mert nagy fájlok másolása kellett a teszthez, de a router belső memóriája igencsak limitált. Az eredmények ext3 fájlrendszer esetén: kb. 30 MB/s le, 18 fel, csakúgy mint a PC-nél. (NTFS-sel ezt nem néztem.) Ezek szerint tehát a router képes teljes sebességgel használni a vinyót, nem ez a gond.
Megnéztem a másik oldalt, a router és a PC közötti adatátvitelt is: Samba-val megosztottam az egész fájlrendszerét a routernek, és a PC-n a /dev/null-ba írtam (sime fájl másolás), ill. a /dev/zero-ból olvastam (cygwin dd-jével). Az eredmény: 14 MB/s le, 8,5 MB/s fel. Bár a 14 MB/s az 112 Mb/s (megabit per mp.), szóval ennyi egy sima 100 Mb/s Ethernet kártyán át sem jön elvileg, csak a gigabitesen, de azért mindez nem túl sok. Mindeközben a Samba process (smbd) igen csak ette a router CPU-ját. Tanulság: ennyi fér ki a router csövén, olcsó cucc, hát ennyit tud. Ha közben még az USB-s vinyóval is foglalkoznia kell, akkor kicsit még lassabb, ld. az előző értékek. Ez lehet tehát a viszonylagos lassúság fő oka.
Játszottam még a mount opcióival: egy ext3 fájlrendszer naplózott, azaz az írásokat egy naplófájlba is rögzíti, így ha pl. áramszünet miatt megszakad az írás, akkor is helyre lehet utólag állítani a dolgokat. Egy ilyen fájlrendszert háromféleképp lehet felmountolni: „data=journal”, „data=ordered”, „data=writeback”. Elvben az első a legbiztonságosabb, de leglassúbb, a harmadik a leggyorsabb, de legkevésbé biztonságos. Gyakorlatilag „journal” nekem egyáltalán nem is ment, a másik kettő pedig. kb. ugyanolyan gyors volt. Maradt hát az „ordered”, pedig az OpenWRT alapból a „writeback”-et használta.
Próbáltam a Samba-t is optimalizálni, de túl sok opció volt, és kezdtem már unni a dolgot. A weben talált leírások alapján amúgy sem várható nagy áttörés, bár egy kicsit elvileg lehet nyerni, ha türelmesen próbálgat az ember.
Végül magával a fájlrendszerrel próbáltam játszani egy picit. Létrehozásakor meg lehet adni az mke2fs programnak egy csomó opciót. A doksit elolvasva azonban úgy döntöttem, a többség jó lesz, ahogy alapértelmezés szerint van. Egyedül a „-m”-be piszkáltam bele: ez adja meg, hogy a fájlrendszer hány százalékát tegye félre a root felhasználónak. Ez alapértelmezés szerint 5%, ami a másfél teránál 75 gigabájt, amit kissé sokalltam és levettem 1%-ra. Így lett belőle „mke2fs -j -v -m 1” (-v: több rizsa a formázás során, -j: journaling, ettől lesz ext3).
Végül, ha valakit érdekel, lemértem a router és a vinyó együttes fogyasztását: 7,6 W WiFi nélkül, 9,3 W WiFivel. (Remélem a különbség nagyja a dobozon belül marad...)
Összefoglalásként: ha valaki hasonló cipőben jár és vállalja a konfigurálással kapcsolatos szívásokat, érdemes áttérni az OpenWRT-re, mert jelentősen gyorsul vele a merevlemez elérése. Hálózati protokollnak a Samba jó választás, fájlrendszernek viszont mindenképp az ext3 célszerű, mountoláskor az async opcióval (ami amúgy alapértelmezés, ha az ember nem adja meg a „sync” opciót). Így az eredeti firmwares verziónál lefele kb. 30%-kal több, felfele pedig több mint háromszoros sebességnövekedés érhető el. Ez abszolút számokban lefele 9-10 MB/s-ot, felfele 5-6 MB/s-ot jelent, amik azért már egész tűrhető értékek.