Ceph elosztott fájlrendszer¶
On december 12, 2021 by adminA Ceph egy elosztott hálózati fájlrendszer, amelyet úgy terveztek, hogy jó teljesítményt, megbízhatóságot és skálázhatóságot biztosítson.
Az alapvető jellemzők közé tartozik:
- POSIX szemantika
- Zökkenőmentes skálázás 1-től sok ezer csomópontig
- Nagyfokú rendelkezésre állás és megbízhatóság. Nincs egyetlen hibapont.
- N-utas replikáció az adatok tárolási csomópontok között
- Gyors helyreállítás a csomópontok meghibásodásából
- Az adatok automatikus újrakiegyenlítése a csomópontok hozzáadásakor/eltávolításakor
- Egyszerű telepítés:
Szintén,
- Flexibilis pillanatfelvételek (bármely könyvtárra)
- Rekurzív elszámolás (egymásba ágyazott fájlok, könyvtárak, bájtok)
Az olyan klaszteres fájlrendszerekkel ellentétben, mint a GFS, OCFS2 és GPFS, amelyek az összes ügyfél szimmetrikus hozzáférésére támaszkodnak a megosztott blokkeszközökhöz, a Ceph a Lustre-hoz hasonlóan független szerverklaszterekben különíti el az adatok és metaadatok kezelését. A Lustre-től eltérően azonban a metaadat- és tárolócsomópontok teljes egészében felhasználói térbeli daemonokként futnak. A fájladatokat nagy darabokban csíkozzák a tárolócsomópontok között a munkaterhelés elosztása és a nagy áteresztőképesség elősegítése érdekében. Amikor a tárolócsomópontok meghibásodnak, az adatokat maguk a tárolócsomópontok replikálják elosztott módon (minimális koordinációval egy klasztermonitor segítségével), így a rendszer rendkívül hatékony és skálázható.
A metaadatkiszolgálók gyakorlatilag egy nagy, konzisztens, elosztott, memórián belüli gyorsítótárat alkotnak a fájlnévtér felett, amely rendkívül skálázható, dinamikusan újraelosztja a metaadatokat a munkaterhelés változásaira reagálva, és képes tolerálni a tetszőleges (nos, nem bizánci) csomóponti hibákat. A metaadatkiszolgáló kissé szokatlan megközelítést alkalmaz a metaadatok tárolására, hogy jelentősen javítsa a teljesítményt az általános munkaterhelések esetében. Különösen a csak egyetlen linkkel rendelkező inode-ok beágyazott könyvtárak, lehetővé téve, hogy egyetlen I/O művelettel egész könyvtárakat töltsön be a gyorsítótárába. A rendkívül nagy könyvtárak tartalma feldarabolható és független metaadatkiszolgálók által kezelhető, lehetővé téve a skálázható egyidejű hozzáférést.
A rendszer automatikus adatkiegyenlítést/migrációt kínál, amikor egy kis, néhány csomópontból álló fürtről több százra skálázódik, anélkül, hogy a rendszergazdának statikus kötetekre kellene osztania az adatállományt, vagy a szerverek közötti adatmigráció fárasztó folyamatán kellene keresztülmennie.Amikor a fájlrendszer közelít a telítettséghez, új csomópontok könnyen hozzáadhatók, és a dolgok “csak úgy működnek”.”
A Ceph rugalmas pillanatfelvétel-mechanizmust tartalmaz, amely lehetővé teszi a felhasználó számára, hogy a rendszer bármely alkönyvtáráról (és annak beágyazott tartalmáról) pillanatfelvételt hozzon létre. A pillanatképek létrehozása és törlése olyan egyszerű, mint az “mkdir.snap/foo” és az “rmdir .snap/foo”.
A Ceph néhány rekurzív könyvelést is biztosít a könyvtárakban az egymásba ágyazott fájlok és bájtok számára. Ez azt jelenti, hogy egy ‘getfattr -d foo’ bármelyik könyvtárra a rendszerben megmutatja a beágyazott szabályos fájlok és alkönyvtárak teljes számát, valamint az összes beágyazott fájl méretének összegzését. Ezáltal viszonylag gyorsan azonosíthatóvá válnak a nagy lemezterület-fogyasztók, mivel nincs szükség a fájlrendszer ‘du’ vagy hasonló rekurzív átvizsgálására.
Végül a Ceph lehetővé teszi a kvóták beállítását is a rendszer bármely könyvtárában.A kvóta korlátozhatja a bájtok számát vagy a tárolt fájlok számát a könyvtárhierarchia adott pontja alatt. A kvótákat a ‘ceph.quota.max_files’ és a ‘ceph.quota.max_bytes’ kiterjesztett attribútumok segítségével lehet beállítani, például:
setfattr -n ceph.quota.max_bytes -v 100000000 /some/dirgetfattr -n ceph.quota.max_bytes /some/dir
A jelenlegi kvóták megvalósításának korlátja, hogy a fájlrendszert mountoló kliens együttműködésére támaszkodik az írók leállításában, amikor a korlátot elérik. Egy módosított vagy ellenséges klienst nem lehet megakadályozni abban, hogy annyi adatot írjon, amennyire szüksége van.
Mount Options¶
ip=A.B.C.D Adja meg azt az IP-t és/vagy portot, amelyhez a kliensnek helyben kell kötődnie.Ennek általában nincs sok oka. Ha az IP nincs megadva, a kliens IP-címét a monitorhoz való kapcsolódás címének megnézésével határozzák meg. wsize=X Megadja a maximális írási méretet bájtokban. Alapértelmezett: 64 MB. rsize=X Megadja a maximális olvasási méretet bájtokban. Alapértelmezett: 64 MB. rasize=X Megadja a maximális readadahead méretét bájtban. Alapértelmezett: 8 MB. mount_timeout=X Adja meg a csatolási időkorlát értékét (másodpercben), ha a Ceph fájlrendszer nem reagál. Az alapértelmezett érték 60 másodperc. caps_max=X Adja meg a maximálisan tartandó sapkák számát. A fel nem használt sapkák felszabadulnak, ha a sapkák száma meghaladja a korlátot. Az alapértelmezett érték 0 (nincs korlát) rbytes Amikor a stat() funkciót egy könyvtárra hívja meg, az st_size értékét az ‘rbytes’ értékre állítsa be, ami az adott könyvtár alatt található összes fájl méretének összege. Ez az alapértelmezett. norbytes Amikor a stat() programot egy könyvtárra hívjuk, az st_size értékét az adott könyvtárban lévő bejegyzések számára állítjuk be. nocrc A CRC32C számítás kikapcsolása az adatok írásához. Ha be van állítva, a tároló csomópontnak a TCP hibajavítására kell hagyatkoznia az adathibák észlelésében az adattartalomban. dcache A dcache tartalmát használja a negatív keresések és areaddir elvégzéséhez, amikor az ügyfél a teljes könyvtár tartalmát a gyorsítótárában tartja. (Ez nem változtat a helyességen; az ügyfél csak akkor használja a gyorsítótárazott metaadatokat, ha egy bérlet vagy képesség biztosítja azok érvényességét.) nodcache Ne használja a dcache-t a fentiek szerint. Ezzel elkerülhető egy jelentős mennyiségű bonyolult kód, feláldozva a teljesítményt anélkül, hogy a korrektséget befolyásolná, és hasznos a hibák felkutatásához. noasyncreaddir Ne használja a dcache-t, mint fentebb a readdir esetében. noquotadf A teljes fájlrendszerhasználatot a statfs-ben jelenti a rootkönyvtár kvóta használata helyett. nocopyfrom Ne használja a RADOS “copy-from” műveletét távoli objektummásolások elvégzésére. Jelenleg csak a copy_file_range-ban használatos, amely visszaáll az alapértelmezett VFS implementációra, ha ezt az opciót használja. recover_session=<no|clean>Az automatikus újracsatlakozási mód beállítása arra az esetre, ha a kliens blokklistán van. Az elérhető módok a “no” és a “clean”. Az alapértelmezett a “no”.
- no: soha nem kísérel meg újracsatlakozást, ha az ügyfél azt észleli, hogy blokklistára került. A műveletek általában sikertelenek lesznek a blokklistára kerülés után.
- clean: az ügyfél automatikusan újracsatlakozik a ceph fürthöz, amikor észleli, hogy blokklistára került. Az újracsatlakozás során az ügyfél eldobja a piszkos adatokat/metaadatokat, érvényteleníti a lap gyorsítótárakat és az írható fájlkezelőket.Az újracsatlakozás után a fájlzárak elavulnak, mert az MDS elveszti a nyomukat. Ha egy csomópont elavult fájlzárakat tartalmaz, az olvasás/írás nem engedélyezett a csomóponton, amíg az alkalmazások fel nem oldják az összes elavult fájlzárat.
Vélemény, hozzászólás?