Linux - a fejlett fájlrendszerek megvalósítójának útmutatója, 1. rész
Naplózási és ReiserFS
A 2.4 Linux kiadás kibocsátásával lehetõvé vált, hogy új rendszerekkel, például Reiserfs, XFS, GFS és másokkal is használhassák a fájlrendszert. Ezek a fájlrendszerek még nem elég teszteltek, és vannak olyan kérdések, amelyek pontosan meg tudják csinálni, milyen jóak lehetnek és milyen indokolt az ipari környezetben való használatuk. Daniel Robbins ezekre a kérdésekre válaszol az új, fejlett fájlrendszerek Linux 2.4 alatt történő telepítésének magyarázata során. Ebben a sorozatban az első cikk magyarázatot ad általában a folyóiratokra és különösen a ReiserFS-re.
Mit várhat el a cikkek olvasása során?
Ezt kell szem előtt tartani. Azonban a ciklus megnyitása, kissé elvonultam a "gyakorlati" céltól, és kis "elméleti" bevezetésre fordítottam. Ezután két, a Linux fejlesztő közösség számára nagyon fontos témát fogunk lefedni: a "logging" és a "technical" szempontok a ReiserFS projekten. A naplózás olyan technológia, amely már régóta várt, és itt az ideje annak gyakorlati felhasználására. A ReiserFS, az XFS, a JFS, az ext3 és a GFS ezen a technológián dolgozik. Fontos megérteni, hogy pontosan mit csinál a naplózás, és miért van szüksége a Linux számára. Még akkor is, ha ezt jól tudod, remélem, hogy az én szakfolyóiratom hasznos lesz számodra. Ez egy jó "hal" a mások számára kifejtett technológia és valami a gyakorlat számára. Gyakran előfordul, hogy az új megvalósítás folyamatát "Linux fickóval / gal" -el kell kezdeni, meggyőzve másokat arról, hogy szükség van egy "minőségi ugrásra".
Bevezetés az újságíráshoz: metaadatok
Kezdjük a banal. Adatrendszerek léteznek az adatok tárolására, megkeresésére és manipulálására. Az ilyen feladatok elvégzéséhez a fájlrendszernek magában kell lennie egy belső "kontroll" struktúrának, amely lehetővé teszi mindezt. Az ilyen belső struktúrát ("az adatok adatait") metaadatoknak nevezik. Ezeknek a metaadatoknak a szervezése a fájlrendszerek teljesítményétől függ (és ez az, amit a fájlrendszerek különböznek egymástól).
Általában ilyen metaadatokkal a felhasználó nem működik együtt. Ehelyett a fájlrendszer-illesztőprogram együttműködik velük. A Linux fájlrendszer-illesztőprogram kifejezetten a metaadatok labirintusának kezelésére szolgál. Azonban fontos követelménynek számít a járművezetői működés; elvárja, hogy a metaadatokat ésszerű, következetes, zavartalan állapotban lássa. Ellenkező esetben a fájlokhoz való hozzáférés lehetetlenné válik.
Bevezetés az újságíráshoz: fsck
Beszéljünk az fsck-ről. Valahol a Linux indításának kezdetén az fsck elindul, és minden helyi fájlrendszer beolvasásra kerül (az / etc / fstab fájlban szerepel). Ez azért van így, hogy biztosítsa a metaadatok következetességét, és végső soron a fájlrendszer csatlakoztatásának képességét. Az ilyen szkennelés hosszú időt vesz igénybe, és a "mentés" érdekében a következőket feltételezzük. Ha a Linux "helyesen" fejezi be a munkát, akkor az összes gyorsítótárban lévő adatok visszaállítása "normál". Ebben az esetben garantálható, hogy a fájlrendszer "tiszta", és készen áll egy másik mountra. Az fsck általában csak a "tiszta leválasztó zászló" ellenőrzésére korlátozódik, és ha nincs probléma, ésszerű feltételezést tesz, hogy a metaadatokkal minden rendben van.
Mindazonáltal mindannyian tudjuk, hogy vészhelyzetek is jelentkeznek az áramkimaradás vagy a rendszer mélyen felfüggesztve. Ilyen esetekben nem a "tiszta összegyűjtés" kérdéséről van szó, amikor minden tárolt adat visszaáll a lemezre. Ha ez megtörténik, akkor az fsck következő futtatása észleli ezt, és elfogadható következtetést von maga után, hogy a fájlrendszerek valószínűleg nem állnak készen arra, hogy kölcsönhatásba lépjenek a meghajtóval. Lehet, hogy a metaadatok ellentmondásos állapotban vannak.
A lehetséges következmények kiküszöbölése érdekében az fsck teljes vizsgálatot indít és ellenőrizni fogja a metaadatok konzisztenciáját, számos hibát kijavít az út mentén. A legtöbb esetben a "patch scan" után a fájlrendszer készen áll a telepítésre. Nyilvánvaló, hogy a beépítési képesség még nem jelenti az adatok integritását.
Problémák az fsck-vel
Nem mondható el, hogy a leírt rossz megközelítés a fájlrendszer integritásának biztosítására, de a megoldás nem optimális. Nem optimális az a tény, hogy az fsck minden állományrendszer metaadatát átvizsgálja a konzisztencia kimenetére. Az összes metaadat teljes vizsgálata eléggé nehéz feladat. Hozzá kell tenni, hogy a növekedés a fájl mérete a rendszer költségeinek teljes szkennelést fokozatosan növekszik (a személyes gép, ez eltarthat néhány percig, hogy egy fél óra vagy annál több szerver). És mégis, az alapértelmezett viselkedése fsck feltételezi rendszeresen ellenőrzik, miután egy bizonyos számú „tiszta és leválasztása”, hogy nem lenne elfogadható a kritikus adatközpont, amikor az „idő - pénz”. Szerencsére jobb megoldás van.
A naplózott fájlrendszerek megoldják az fsck problémát egy újabb adatstruktúrán keresztül, amelyet naplónak hívnak. Az ilyen magazin egy lemezszerkezet. Mielőtt a fájlrendszer-illesztőprogram módosítana a metaadatokat, naplóbejegyzést készít a következő műveletek leírására. Csak ezután változnak a metaadatok. Így a naplózott fájlrendszer a legutóbbi metaadat-módosítások naplófájlját szolgálja. Az ilyen napló karbantartásának költsége összehasonlíthatatlanul alacsonyabb, mint a teljes fájlrendszer szkennelése a metaadatok következetességének érdekében.
Képzelj el egy lánccal tárolt adatokat (stuff), "ezeket az adatokat" (a dolgokkal kapcsolatos adatokat) és egy meta metaadat-logot (a dolgokkal kapcsolatos adatok).
Naplózás a cselekvésben.
Most menjünk át a ReiserFS-re, az első néhány naplózott fájlrendszerre, amelyet meg kell vizsgálni. A ReiserFS 3.6.x (a Linux 2.4 verzióját) Hans Reiser és csapata, a névjegyek fejlesztették ki. Hans és csapata hirdetik azt a filozófiát, hogy a legjobb fájlrendszer az egyetlen közcélú vagy névtér. Ilyen környezetben az alkalmazások rugalmasabban, hatékonyabban és erőteljesebben működhetnek együtt. Ennek eléréséhez a fájlrendszernek az alkalmazás által hagyományosan végrehajtott munkák egy részét kell elvégeznie. Ezzel a megközelítéssel a felhasználók gyakran folytathatják a fájlrendszer közvetlen használatát ahelyett, hogy különleges célú szinteket hoznának létre, például adatbázisokat stb.
Kisebb fájlokkal dolgozni.
Hogyan történik a fájlrendszer nagyszámú apró információinak elhelyezése? A névjegyek úgy döntöttek, legalábbis kezdetben, hogy összpontosítsanak a fájlrendszer munkájának egyik vonatkozására - a kis fájlokkal dolgozva. Szigorúan szólva, az ext2 és az ufs fájlrendszerek e téren viselkednek, ami gyakran arra kényszeríti a fejlesztőket, hogy tervezzenek adatbázisokat, vagy más "trükköket" használjanak kielégítő teljesítmény elérése érdekében. Ez a megközelítés a "kerékpár sokaságának felfedezéséhez" vezet, és hatalmas számú inkompatibilis API-t generál egy szűkebb speciális cél érdekében.
Meg fogjuk érteni, és mivel ext2 ösztönzi ezt a fajta "kerékpár" programozást. Az Ext2 jó, ha elég nagy számú, húsz kilobájtnál nagyobb fájlokat tárol, de egyáltalán nem ideális a 2000 db 50 bájtos fájl tárolására. Sőt, ez jelentősen csökken a teljesítmény, hanem a tárolása kis fájlokat ext2 vezet hatékony felhasználása lemezterület, így ext2 kiosztja az egyes fájlok egész 1-2-4 KB blokkok (blokk méret van beállítva, ha a fájl rendszer képződését).
A világ szokásos bölcsessége szerint nem sok nevetségesen kicsi fájlt tárolunk közvetlenül a fájlrendszeren. Ehelyett létezik az a gondolat, hogy információkat tároljunk a fájlrendszeren futó adatbázisban. Válaszul Hans Reiser azt mondaná, hogy amikor egy szintet hoz létre a fájlrendszer felett, csak azt mutatja, hogy a fájlrendszer nem felel meg igényeinknek. Ha elégedett, akkor elutasítható. Ezért egy jól megtervezett fájlrendszer megmenti a fejlesztési időt és kiküszöböli az inkompatibilis kódot.
De ez mind elmélet. És hogy a ReiserFS a gyakorlatban hogyan működik nagyszámú kis fájlokkal? Meglepő, de nagyon jó. Tény, hogy a ReiserFS, amikor egy K-nál kisebb fájlokat dolgoz fel, az ext2-ben nyolc-tizenöt alkalommal nyer! Általánosságban elmondható, hogy a ReiserFS szinte minden területen felülmúlja az ext2 rendszert, de valójában a kis fájlok feldolgozásához képest valóban ragyog.
ReiserFS technológia
Miért működik a ReiserFS kis fájlokkal? A ReiserFS egy speciálisan optimalizált b * kiegyensúlyozott fát (egy a fájlrendszeren) használ fel az összes fájlrendszer adatainak megszervezéséhez. Ez önmagában nagy teljesítménynövekedést eredményez, és számos mesterséges korlátozást is eltávolít a fájlrendszer elrendezésében. Például lehetővé válik egy olyan könyvtár, amely 100 000 egyéb alkönyvtárat tartalmaz. A b * fa használatának másik előnye, hogy a ReiserFS, mint az új generáció legtöbb más fájlrendszere, dinamikusan osztja az inode-t a statikus készlet helyett, és egy "hagyományos" fájlrendszer létrehozásakor keletkezik. Ez nagyobb rugalmasságot és optimálisságot biztosít a tárhely kialakításában.
A ReiserFS számos olyan funkciót is tartalmaz, amelyek kifejezetten a kis fájlok munkájának javítására irányulnak. A ReiserFS nem kötődik a fájlok memóriájának 1-2-4 KB-os blokkok számának korlátozásához. Szükség esetén pontos méret állítható ki a fájlhoz. A ReiserFS tartalmaz néhány speciális "fájlos" fájl optimalizálást a fájlrendszerblokknál kisebb fájlok végső részének tárolására. A sebesség növelése, ReiserFS tárolására képes tartalom fájlokat közvetlenül a b * fa, mintsem egy mutatót lemezblokk (ext2 fogalma FASTLINK, ha a tartalmát a „puha” összeköti a 60 byte tárolja a inode).
Ezzel két dolog érhető el. Először is, a teljesítmény nagyban megnő, mert az adatok és stat_data (inode) információ tárolható egymás mellett, és leolvasható egy IO lemezes művelettel. Másodszor, a ReiserFS képes csomagolni a fát, így megtakarítva a lemezterületet. Tény, hogy a ReiserFS engedélyével a fák csomagolásának (az alapértelmezett érték) elvégzésére a lemezterület mintegy hat százalékát (az ext2-hez képest) megtakarítja.
Nem szabad megfeledkezni arról, hogy a csomagolás csomagolása további munkát igényel, mivel a fájlok méretének megváltoztatásához "újracsomagolás" szükséges. Ezért a ReiserFS-ben a farokcsomagolás kikapcsolható, így a rendszergazda választhat a lemezhasználat sebességének és hatékonyságának függvényében.
A ReiserFS kiváló fájlrendszer. A következő cikk leírja a ReiserFS telepítését Linux 2.4 alatt. Az alkalmazások követelményeinek, a rendszermag beállításainak és egyéb leírásainak optimális beállítását ismertetjük.
A szerzőről
Albuquerque-ban, New Mexico-ban élve, Daniel Robbins a Gentoo Technologies, Inc. elnök-vezérigazgatója. és a Gentoo Linux készítője. a fejlett Linux a PC-hez, és a Portage rendszer, a következő generációs portrendszer Linux számára. Hozzájárult hozzá a Caldera OpenLinux Unleashed Macmillan könyvekhez. A SuSE Linux Unleashed. és Samba Unleashed. Daniel a második évad óta valamilyen módon részt vesz a számítógépekkel, amikor először ki volt téve a logónak. Ez valószínűleg megmagyarázza, miért szolgálták vezető grafikusként a SONY Electronic Publishing / Psygnosisban. Daniel élvezi a felesége, Mary, és az új kislányát, Hadassahot. Kapcsolatba léphet Danieldal a [email protected] címen.