Naplózó állomány-rendszerek Journaling File Systems (JFS) Kis Zsigmond Dániel 541
Állomány-rendszer, meta-adat 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 Eredmény á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 eltérések 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 Műveletek végrehajtása 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
Példák Linux OS/2 AIX Windows Macintosh operációs rendszerek IRIX EXT3, JFS, ReiserFS, Reiser4, XFS OS/2 JFS AIX Windows NTFS Macintosh operációs rendszerek HFS Plus IRIX XFS Solaris UFS, VxFS HP-UX VxFS
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
Megoldások technika / állomány rendszer szabad blokk kezelés szabad hely extentek-kel B-fa a könyvtár-bejegyzé-seknek B-fa állomány blokkjaira extent blokkok címzésére adatok az inode-ban szimboli-kus link inode-ban könyvtár-bejegyzés inode-ban XFS B+fa (eltolás és méret szerint) igen JFS Fa + Binary Buddy tehnika nem max 8 ReiserFS B*fára épűl bittérkép alapú nem, de tervezik A fő fa alfájaként A fő fában 4. verzióban B*fa keretén belül Ext3FS Mivel Ext2-re épül a fenti technikákat nem alkalmazzák. A lényeg az ext2-vel való kompatibilitás és a gyors helyreállítása az állomány-rendszernek
Ext2 (Second Extended File System) nem naplózó állomány rendszer Struktúrája: Blokk csoport: Boot sector Blokk csoport 1 Blokk csoport2 ... Blokk csoport n Szuper blokk Állomány- rendszer deszkriptor Blokk térkép Inode térkép Inode tábla Adat blokkok
Ext2 Könyvtár: Könyvtár-bejegyzés: Hátrányok: 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 inode száma Bejegyzés hossza Név hossza állománynév
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) Aggregátum (aggregate) 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érete a háttértárolón 512 byte minden inodenak van egy egyedi 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:8 unsigned 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
Összehasonlítás Jellemző Ext3 ReiserFS XFS JFS max blokk méret 4 Kb max állomány-rendszer méret 16384 Gb 17592 Gb 18 Pb (1015) 32 Pb max állomány méret 2048 Gb 1 Eb (1018) 9000 Pb 4 Pb állomány-rendszer bővítése patch igen dinamikus tárfoglalás inode-oknak nem adat naplózás napló külső tárolón
32 bites architektúrán Jellemző Ext3 ReiserFS XFS JFS alkönyvtár / könyvtár 32 KB 65 KB 4 GB max állomány-rendszer méret 2 TB 16 TB max állomány méret 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/