1 Fájl rendszer (implementáció) Fájl rendszer struktúra Allokációs módszerek Szabad hely kezelése Directory implementáció Helyreállítás
2 Fájl rendszer struktúra A fájl rendszer rétegekből (layers) áll, ezek a következők: - Alkalmazói programok: A fájl létrehozásával, olvasásával, módosításával kapcsolatos igények forrása. - Logikai fájl rendszer: A fájljegyzék (directory) felhasználásával, a fájl nevéből kiindulva ez határozza meg a szükséges információkat a szervezési modul számára. Felelős a fájl védelméért.
3 - Fájl szervezési modul: Ez ismeri és implementálja a kapcsolatot a logikai és fizikai rekordok között. Ismerve a fájl szervezési módját és allokációját a logikai rekord címeket fizikai blokkokra történő hivatkozássá alakítja. Adminisztrálja a szabad helyeket. - Alap fájl rendszer: Ez alakítja ki és adja ki a megfelelő device drivernek a megfelelő magas szintű parancsot egy blokk írására és olvasására. Cilinder, sáv, szektor logikában "gondolkodik". - I/O vezérlés: Device driverek, megszakítási kezelők (interrupt handlers) Ezek a modulok inputja viszonylag magas szintű utasításokból (pl. "read block B8A0") áll, az outputja pedig alacsony szintű, hardver specifikus bitképletekből áll (ezek a "portokba" kerülnek). - Fizikai berendezés: Különböző I/O eszközök: floppy, merevlemezek, SSD-megjatók, CD/DVD-lemezek, kártyák, pen-drivek, stb.
4 Fájl megnyitás és lezárás: Dos/Windows: OS rendszerben (egy) és processzus szintű (több) Open File Table (OFT), Egy tipikus fájl vezérlő blokk (File Control Block) ahol ACL- Access Control List
5 UNIX: OFT (apps.)+oft(os) + INODE (Index-NODE rövidítése) bejegyzésekből álló tábla (ILIST). Az INODE egy bejegyzés egy információs táblán (i-list). Minden fájlnak egyedi saját INODE-ja van. Maga a tábla pedig OS szintű.
6 Az INODE írja le egy fájl lemezen való elhelyezkedését, a fájl tulajdonosát, a hozzáférési jogosultságokat és időket. Minden fájl egy és csak is egy INODE-dal rendelkezik. A Linux ext2 fájlrendszerében az INODE a következő információkat tartalmazza: Tulajdonosazonosító. Csoporttulajdonos-azonosító. Típus: közönséges fájl, katalógus, karakter vagy blokk eszközmeghajtó, csővezeték, szimbolikus link. Hozzáférési jogok. A hozzáférési jogok három osztályba sorolhatók: a tulajdonos, a tulajdonos csoporttársa és bárki más jogai. Mindhárom osztályra megadható írási, olvasási és végrehajtási jog. Katalógusok esetén a végrehajtási jog a katalógusban való keresési jogot jelent. A fájl utolsó módosításának és hozzáférésének időpontja A fájlhoz tartozó nevek (link-ek) száma. A fájl mérete. A fájl által elfoglalt lemezblokkok táblázata. A fájl törlésének időpontja. Stb.
7 UNIX file rendszer logikai felépítése
8 What is meant by mounting a drive? Fájl rendszer mountolás Before your computer can use any kind of storage device (such as a hard drive, CD-ROM, or network share), you or your operating system must make it accessible through the computer's file system. This process is called mounting. You can access only files on mounted media. Tehát: a 'mountolás' egy adathordozó logikai illesztése a (fájl-) rendszerbe. Csak a sikeres mountolás után válnak elérhetővé a rajta lévő adatok (fájlok). Mountolás példa: + = Felismert adathordozó
9 Allokációs módszerek Folytonos (folyamatos) (Contiguous Allocation) A fájl egy folytonos fizikai blokk sorozatot foglal el. Hozzáférés egyszerű és gyors HDD esetén (a sáv folytonosan olvasható a forgó lemezről). Növekvő méretű fájloknak a helyfoglalás problémás: Milyen méretű szabad helyet allokáljunk? Új fájlok számára megfelelő szabad hely megtalálása nehéz, külső tördelődés lép fel. Fájl törlése után a méretének megfelelő számú blokk felszabadul. Erre a helyre kisebb vagy egyenlő méretű fájl írható. Ugyan azokat az algoritmusokat használhatjuk, mint a memória foglalás során (First fit, Next fit, Best fit, Worst fit). Növekvő fájlok: A Best fit allokációs stratégia különösen veszélyes. A fájl nagyobb szabad helyre másolása (erőforrás igényes).
10 Külső tördelődés csökkentése: Teljes másolás egy üres diszkre majd vissza (offline).rendszerleállással jár. Hosszú ideig tart és erőforrás igényes. Futási idejű (on-line) töredezettség csökkentés (defragmentation). Példa
11 Linkelt (Linked, Láncolt) A könyvtárakat leíró adatstruktúrák tartalmazzák az első és az utolsó blokk azonosítóját. Minden blokk tartalmazza a következő blokk azonosítóját A fájlhoz tartozó blokkok tetszőleges helyen lehetnek a diszken. Nincs külső töredezettség. Problémák: Szekvenciális fájl elérésre alkalmas, a fájlba indexelni viszont nehéz (pl. egy N-dik blokk direkt elérése esetén). A blokkokban lévő azonosítók helyet foglalnak. Sérülékeny (azonosítók fűzik a blokkokat össze). Sok pozicionálást (fejmozgás időigényes) okoz (seek művelet), a blokkok el vannak szórva a diszken. Pl. a FAT fájlrendszer ezt használja. Töredezettség mentesség ebben az esetben mást jelent:
12 Cél a fejmozgás minimalizálása egy file olvasása során. A fájlok egymás utáni blokkokon történő tárolását tűzi ki célul. Ezt is defragmentation-nak hívják... Ilyen célból ajánlott időnként pl. a Windows operációs rendszerek alatt a töredezettség mentesítő programok futtatása. Jelentősen nőhet a fájlkezelés sebessége. Az írást is gyorsítja, nem csak az olvasást! data
13 Indexelt (Indexed): Index blokkok használatán alapszik: Egyes blokkokat (clusters) fájlokhoz tartozó indexek (blokk azonosító) tárolására kell használni. Szekvenciális és indexelt elérésre is alkalmas. Összetettebb és sérülékeny (az index blokkok sérülése a fájlt elérhetetlenné teszi). Az index blokkokat viszont könnyű többszörözni (replikálni). Sok fejmozgást okoz (seek művelet), a blokkok el vannak szórva a diszken. Itt is lehet a láncolt listás töredezettség mentesítéshez hasonló algoritmusokat használni a fejmozgás minimalizálására.
14 Minden fájlnak van saját indexblokkja Indexblokk Fájl azonosító Indexblokk
15 Szabad hely kezelés (free space management) Bit térkép / vektor (bitmap, bitvector). Diszk minden blokkjához egy-egy bitet rendelünk, a bit értéke mutatja az adott blokk foglaltságát Láncolt lista (linked list). Láncolt lista a szabad blokkokról. Szabad helyek csoportjainak listája (Grouping). Valamely kritérium alapján csoportosított blokkok listája. Pl. egy-egy cilinderhez/sávhoz tartozó szabad blokkok. Egybefüggő szabad területek nyilvántartása (Space maps). Egymás mellett lévő szabad blokkok nyilvántartása.
16 Linked list bitvektor
17 Directory implementáció A jegyzék maga is egy fájl, ami bejegyzéseket tartalmaz más fájlokról. A bejegyzésekben a fájlok attribútumait tárolhatjuk. Miután a jegyzék is fájl, blokkok tartoznak hozzá is. Blokkjain belül vannak a bejegyzések, ezek lehetnek állandó, vagy változó hosszúságúak. A bejegyzésekben az attribútumok között a legfontosabb a fájlnév. A bejegyzések struktúrája lehet: Lineáris (vagy szekvenciális ) o nem rendezett bejegyzéseken alapszik, ezek a bejegyzések között nem foglalt bejegyzések is lehetnek (a törölt fájlokra); o rendezett, hézagok nélküli bejegyzéseken, ahol is gyorsabb keresési módszerek is megvalósíthatók; Hash táblás: a szokásos szekvenciális bejegyzések mellett egy hash táblát is implementálnak, ami a gyorsabb keresést segíti.
18 Hashing, hash tábla Egy olyan adatszerkezet, amely egy Hash függvény segítségével állapítja meg, hogy melyik kulcshoz milyen érték tartozik - így implementál egy érték-táblát (asszociatív tömb). A hash függvény segítségével a kulcsot leképezzük az adatokat tároló tömb egy adott indexére, ahol a keresett érték fellelhető. Ideális esetben minden értelmezett kulcsra egyedi hash-t állít elő a hashelő függvény, de ez a gyakorlatban ritkán megvalósítható - így számolnunk kell azzal, hogy két különböző kulcsra ugyanazt a hash-t kapjuk, és kezelnünk kell az ilyenkor fellépő hash ütközést (collision). Sok esetben a hash táblák teljesítménye elég magas, ezért széles körben használják asszociatív tömbök implementációjában, adatbázisok indexelésében, illetve a Cache memória felépítésében.
19 Helyreállítás Törölt fájlok, partíciók, mappák helyreállítása. Adatok biztonsági másolatainak készítése (Backup) és az alapján történő visszaállítás (Restore). Stratégiák: Fontos megjegyezni, hogy nincs olyan fájlrendszer, amely tökéletesen megfelelne mindenféle alkalmazáshoz. Minden fájlrendszernek vannak erősségei és gyengéi, amelyeket figyelembe kell venni. Emellett még a legkifinomultabb fájlrendszer sem helyettesíthet egy józan mentési stratégiát.
20 Alapvetően két fő típusa van a biztonsági mentéseknek (Backup). Az egyik (Rendszermentés) a rendszerprogramokat és a rendszer alapbeállításait menti, egy az eltávolítás után biztonságos helyen tárolható adathordozóra, a másik mentéstípus (Adatmentés) az adatok és az alkalmazások mentésére szolgál. A kettőt kombinálhatjuk is, de nem minden esetben érdemes. Jobb különválasztani az alapvető rendszerprogramokat és rendszerbeállításokat a felhasználói programoktól és adatterülettől. Az első típusba (Rendszermentés) tartozó biztonsági mentést akkor érdemes elkészíteni, amikor a rendszert először üzembe állítják, és perifériáit, hálózati és egyéb adatkapcsolatait már megfelelő módon beüzemelték. Ugyancsak e mentéskörbe tartozik a számítógép felhasználóinak adatbázisa és a Registry.