300 likes | 436 Views
Naplózó állomány-rendszerek. Journaling File Systems (JFS) Kis Zsigmond Dániel 541. Állomány-rendszer, meta-adat. Állomány-rendszer adatok tárolása háttértárolón állományok, könyvtárak, indexek megbízható, gyors Meta-adat állomány-rendszert jellemző adatok állományokat jellemző adatok
E N D
Naplózó állomány-rendszerek Journaling File Systems (JFS) Kis Zsigmond Dániel 541
Állomány-rendszer, meta-adat • Állomány-rendszer • adatok tárolása háttértárolón • állományok, könyvtárak, indexek • megbízható, gyors • Meta-adat • állomány-rendszert jellemző adatok • állományokat jellemző adatok • kezdőcím, blokkok száma • hely, méret, név, jogok
Állományba való írás • új blokkok lefoglalása • szabad blokkok listájának módosítása • állomány-leíró módosítása (file descriptor) • új blokkok bejegyzése • új méret • adatok írása a lemezre • az új adatok kiíródnak a háttértárolóra • más adatok is módosulhatnak • könyvtár bejegyzések • indexek • atomi műveletnek tűnik, de nem az
Hibák • Meta-adat meghibásodása • áramszünet, felhasználói hibák • adatok részleges kiírása • félbeszakított műveletek • Eredmény • inkonzisztencia • hibás indexek • hibás állomány-rendszer
Megoldások • Állomány-rendszer javító program • sok időbe telik (pl. scandisk) • idő arányos a partíció méretével, állományok számával • Naplózás (journaling, logging) • konzisztenciát biztosít • nem küszöböli ki az adatvesztést • „Soft update” • meta-adatok írása olyan sorrendben, hogy az állomány-rendszer mindig konzisztens maradjon (BSD)
Napló • állomány, amelyben az állományrendszeren végrehajtott műveleteket tárolják • meta-adatokra vonatkozó műveleteket, vagy • minden műveletet • tranzakciók • a napló tranzakciók listájából áll • ABKR-hez hasonló kezelési mód • hiba esetén • naplózott műveletek végrehajtása (redo) • tranzakciók visszapörgetése (undo)
Tranzakciók • ABKR tranzakciói • hasonlóságok • változtatások halmaza, melyeket atomi műveletnek tekintünk • „minden vagy semmi” – vagy minden művelet végrehajtódik, vagy egyik sem • eltérések • állományokra (meta-adatra, felhasználói adat) vonatkozó változtatások
Naplózás • Műveletek lejegyzése a naplóban • tranzakciók • minden tranzakció végén commit • Műveletek végrehajtása • Újraindulás hiba után • minden művelet végrehajtódott • az állomány-rendszer konzisztens és helyes • befejezetlen műveletek • commit–végrehajtja, ha lehet • rollback– visszavonja a módosításokat
Linux EXT3, JFS, ReiserFS, Reiser4, XFS OS/2 JFS AIX JFS Windows NTFS Macintosh operációs rendszerek HFS Plus IRIX XFS Solaris UFS, VxFS HP-UX VxFS Példák
Előnyök, újabb elvárások • Modern állományrendszerek esetén • gyors hibajavítás • néhány másodperc • új követelmények • gyorsabb tárkiosztás • nagyon sok állomány egy könyvtárban • nagy méretű állományok • gyorsasság, nagy teljesítmény, bíztonság • módszerek • B+ fák, extent kiosztás
Ext2 (Second Extended File System) • nem naplózó állomány rendszer • Struktúrája: • Blokk csoport:
Ext2 • Könyvtár: • könyvtárbejegyzések listája • különböző méretű bejegyzések • Könyvtár-bejegyzés: • Hátrányok: • hiba esetén teljes állomány-rendszert ellenőrizni kell • nem támogatja a nagyon nagy méretű állományokat és állomány rendszereket
Ext3 (Third Extended File System) • Ext2 bővítése naplóval • meta-adatokat és felhasználói adatokat is naplóznak • szerkezet és adatszerkezetek megmaradnak (Ext2) • előnye • gyorsan helyreáll hiba esetén • megmaradtak a régi hátrányok • merev belső szerkezet, szigorú korlátok • nem támogatja a nagyon nagy állományokat • max 32768 alkönyvtár • 10000-15000 állomány (soros láncolás miatt)
ReiserFS • B* fára épül – a B+ fa bővített változata • minden objektum egy fában • különleges indexelési technikák szükségesek • nem használ extent-eket • jól kezeli a kis méretű állományokat <1k • jól kezeli a nagy könyvtárakat (több százezer állomány)
JFS • Szerkezete • logikai kötetek, partíciók (logical volumes) • aggregátumok és állományhalmazok (aggregates and filesets) • állományok, könyvtárak, inodeok, címzési struktúrák • napló (log)
JFS - Szerkezet • Partíció (partition) • rögzített blokk méret: 512, 1024, 2048, 4096 • blokkok száma • absztrakt cím-zóna: 0 - blokkok száma-1 • Aggregátum (aggregate) • partíció kiosztható részét írja le • partíciónként egy aggregátum
JFS - Aggregátum szerkezete • 32KB fenntartott terület • rögzített aggregátum blokk méret (>= partíció blokk méret) • elsődleges és másodlagos szuperblokkok • inode tábla, másodlagos inode tábla • inode térkép, másodlagos inode térkép • blokk kiosztási térkép (aggregátum blokkok) • munkaterület az fsck-nak • in-line napló – aggregátum meta-adat változásainak naplózására
JFS - Allokációs csoportok (Allocation group) • az aggregátumot nagyobb darabokra osztják • egymással kapcsolatban levő adatok csoportosítása (lokalitás) • kapcsolatban nem álló adatok szétszórása • sorszám • aggregátumon belül • 0-tól • méret • minél több folytonos tárkiosztás • min. 8192 aggregátum blokk (mindig 2 hatványa) • szuperblokkban tárolják • legtöbb 128 csoport • műveletek gyorsak ha módosításokat kell végrehajtani
JFS - Állományhalmazok(fileset) • állományok és könyvtárak halmaza, melyek egy függetlenül beilleszthető (mount) részfát alkotnak • szerkezete • inode tábla – az állományhalmazt leíró adatszerkezetekkel • inode kiosztási térkép • szuper inode • aggregátum inode táblájában • az állományhalmaz és az állományhalmaz kiosztási térképének leírását tartalmazza
JFS - Extent • egymást követő aggregátum blokkok • egységként osztják ki • blokkok egy aggregátumba tartoznak • több allokációs csoportot is lefedhet • címe • első blokk címe – aggregátum blokkok (0-tól indexelve) • mérete • 1 – 224-1 aggregátum blokk • maximum (nem befolyásolja az állomány méretét): • 512 byte ag. blokkal: 8GB • 4096 byte ag. blokkal: 64GB
JFS - Inode • méretea háttértárolón 512 byte • minden inodenak van egyegyedi száma • négy adathalmazt tartalmaz • objektum adatainak POSIX leírása • O.R. függő adatok, B+ fa gyökere, VFS támogatásához szükséges adatok • B+ fa extent kiosztásai vagy egyenesen a felhasználói adatokat (pl. kis méretű állományok esetén) • más jellemzők, további extent kiosztási információ vagy további felhasználói adatok • JFS dinamikusan osztja ki az inode-okat • inode extenteket oszt ki (általában 32 inode) • nincs összefüggés az inode száma és a fizikai címe között
JFS - B+ fák • minden JFS objektumot egy inode ír le • a kiosztott extent-eket B+ fában tárolják • gyors keresés módosítások esetén • optimalizálva van lineáris bejárásra is • elemek szerkezete • unsigned flag:8unsigned rsvrd:16 • unsigned off1:8 uint32 off2 (kezdőblokk eltolása) • unsigned len:24 • unsigned addr1:8 uint32 addr2 (extent címe) • JFS meta-adatai is állományokban tárolódnak (kivéve szuperblokk) – könnyen kiterjeszthető szerkezet
JFS - További adatszerkezetek • blokk kiosztási térkép (block allocation map) • inode kiosztási térkép (inode allocation map) • inode kiosztási csoport (inode allocation group) • kiosztási csoport szabad inode listája (allocation group free inode list) • kiosztási csoport szabad extentlistája (allocation group free extent list) • inode kiosztási csoport szabad inode listája (inode allocation group free list) • hozzáférés ellenőrzés lista (access control list)
JFS – Naplózás • csak meta-adatokat naplóznak • naplózó állomány-rendszernek tervezték • naplózás • naplóállomány • tranzakció kezelő (transaction manager) • logredo • segédprogram • induláskor a naplót visszafelé olvasva javítja a hibákat
JFS - Napló felépítése • minden művelet tranzakcióba kerül • mielőtt a műveleteket végrehajtaná, a tranzakciót beírja a naplóba • a műveleteket csak a napló írásának befejezése után kezdi el • siker esetén commit • pufferelést használ • szinkronizálási műveletek • szinkronizáláskor kiírja a puffert a háttértárolóra
JFS - Állományrendszer javítása • napló eseményeinek újrajátszása • a bejegyzett műveletek végrehajtása • utolsó szinkronizálásig megy vissza • befejezett tranzakciókat újra végrehajtja (commit) • befejezetlen tranzakciókat visszapörgeti • helyreállítás sikertelen • teljes ellenőrzés • használt virtuális memória az állományok, könyvtárak számával arányos, nem a méretével • 1.000.000 állomány esetén kb. 32MB • blokkok kiosztásának ellenőrzésére nem virtuális memóriát, hanem az állományrendszeren belül e célra fenntartott területeket használja
Naplózott műveletek • állomány létrehozás • link • könyvtár létrehozás • állomány törlése • átnevezés • könyvtár törlése • szimbolikus link • állomány lerövidítése
32 bites architektúrán további információk: - lásd mellékelt állományokat - JFS weblap: http://oss.software.ibm.com/jfs - Naplózó állomány-rendszerek linuxon: http://www.byte.com/documents/s=365/byt20000524s0001/