Operációs rendszerek Eset-tanulmányok fájlrendszerekről A mai program Az NTFS fájlrendszer Unix fájlrendszerekről adalékok Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 2 Az NTFS fájlrendszer Célok a fejlesztésében Korábbi fs-ek korlátainak meghaladása (FAT és HPFS max 4 GB) A védelem javítása (kiterjesztett ACL) Tömörítés (átlátszóan) Titkosítás (átlátszóan) Szétszabdaltság (fragmentation) megszüntetése Diszk tranzakció naplózás és visszaállítás beépítése Kötet (Volume Set, Strip Set, Mirror Set: utóbbi hibatűrés) koncepció Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 3 1
NTFS koncepciók A diszk klaszter koncepció (cluster) A fizikai felépítéstől függetlenül, egy kötet klaszterek készlete. Egy klaszter 2 hatványa * 512 bájt. Ajánlott klaszter méretek a diszkekhez A Logical Cluster Number (LCN) fogalom: egy kötet 0 n LCN-ű klaszterekből áll Virtual Cluster Number (VCN) fogalom: egy (nem rezidens) adatfolyam klasztereinek is van sorszáma. Az adatfolyam klaszterei 0, 1, 2 stb. VCN sorszámokat vehetnek fel. Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 4 NTFS koncepciók 2 Az NTFS fájlrendszeren minden fájl. Vannak Normális fájlok (köztük jegyzékek és adatfájlok), és A fájlrendszerrel kapcsolatos információkat tartalmazó fájlok: metafájlok. A metafájlok közül legfontosabb a Master File Table (MFT) Minden fájlhoz tartozik (legalább) egy MFT rekord (bög) Az MFT rekordokban fájl-attribútumokat rögzítenek (Az MFT rekord az s5fs i-bögjének felel meg. Az MFT leginkább az i-lista megfelelője.) Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 5 NTFS koncepciók 3 Minden fájlhoz tartozik egy hivatkozási szám 64 bites szám alsó 48 bitje az MFT rekord pozíciója (indexe), a felső 16 bit egy sorozatszám, ami növekszik, mikor a megfelelő MFT rekordot újrafelhasználják. (A hivatkozási szám az s5fs i-bög i indexének felel meg.) A jegyzék (directory) szerkezetről elöljáróban annyit: B-fa rendezettségű, a név + a hivatkozási számot is tartalmazó szabványos attribútumok párok gyűjteménye. (Valójában a jegyzék is egy fájl: attribútumok együttese.) Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 6 2
NTFS koncepciók 4 Az NTFS a fájlokat attribútumok együtteseként látja. Egy attribútum: attr.fej + attr.adatok pár Attribútum fej tartalma az attribútum típusa (neve opcionálisan), flagek és Az attribútum adatai elhelyezkedésére vonatkozó információk. Attribútum adatok: a tényleges tulajdonságok Két fontos trükk Egy fájl adatfolyama (data stream) is attribútum! Amikor csak lehet, egy attribútumot az MFT rekordjában (a bögjében) tárolják! Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 7 NTFS koncepciók összefoglalás Egy kötet klaszterek sora. LCN fogalom. Minden fájl (metafájlok + fájlok), MFT rekord (bög) tartozik hozzájuk, index az MFT-ben Attribútumok együtteseként kezelhetők a fájlok (attr-fej+attr-adat) Az adatfolyam is attribútum! Amikor csak lehet, az attribútumot az MFT rekordban tárolják! Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 8 NTFS koncepciók 5 Rezidens attribútum: ami az MFT rekordban tárolódott A fájlnév, a szabványos információk, a biztonsági attribútumok mindig rezidensek Az adatok csak akkor rezidensek, ha rövid a fájl Nem rezidens attribútum: aminek MFT rekordon kívüli helyfoglalása van: kiterjedésekben (runs) tárolódnak az adatai Kiterjedés (run) valahány egymás utáni klaszter. Megadható kezdő LCN-jével és hosszával: ez a kiterjedés leírás (data runs) Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 9 3
NTFS koncepciók 6 Láttuk, ha egy fájlnak attribútum adata túl nagy, nem rezidens attribútumként tárolják. Nem rezidens attribútum az MFT rekordban attribútum adatok elhelyezkedésére vonatkozó információként (kiterjedés leírásként) tárolódik. Ha egy fájlnak túl sok attribútuma van és nem férnek el az MFT rekordban Akkor amit lehet, nem rezidenssé tesznek. Ha ekkor sem férnek el: további (additional) MFT rekordot allokálnak neki, ebbe tesznek attribútumokat; Az eredeti (base) MFT rekordba attribútum lista attribútum kerül. Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 10 MFT rekordok Egy MFT rekord Lehetséges attribútumokat később A mark.txt relatíve nagy és fregmentált fájl Base MFT rek, additív MFT rek; kiterjedések leírása itt is, ott is Egy jegyzék rekord 1 db root index Valahány Index allocation Valahány Bitmap (nem látszik az ábrán) Kiterjedés leírás attr Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 11 Attribútumok Attribute Type Standard Information Attribute List File Name Security Descriptor Data Description Includes information such as timestamp and link count. Lists the location of all attribute records that do not fit in the MFT record. A repeatable attribute for both long and short file names. The long name of the file can be up to 255 Unicode characters. The short name is the 8.3, case-insensitive name for the file. Additional names, or hard links, required by POSIX can be included as additional file name attributes. Describes who owns the file and who can access it. Contains file data. NTFS allows multiple data attributes per file. Each file typically has one unnamed data attribute. A file can also have one or more named data attributes, each using a particular syntax. Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 12 4
Attribute Type Object ID Logged Tool Stream Reparse Point Index Root Index Allocation Bitmap Volume Information Volume Name Attribútumok Description A volume-unique file identifier. Used by the distributed link tracking service. Not all files have object identifiers. Similar to a data stream, but operations are logged to the NTFS log file just like NTFS metadata changes. This is used by EFS. Used for volume mount points. They are also used by Installable File System (IFS) filter drivers to mark certain files as special to that driver. Used to implement folders and other indexes. Used to implement folders and other indexes. Used to implement folders and other indexes. Used only in the $Volume system file. Contains the volume version. Used only in the $Volume system file. Contains the volume label. Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 13 File Name $Mft $MftMirr $LogFile $Volume $AttrDef $ $Bitmap $Boot $BadClus $Secure $Upcase $Extend MFT Rec 0 1 2 3 4 5 6 7 8 9 10 11 12 15 Purpose of the File Contains one base file record for each file and folder on an NTFS volume. If the allocation information for a file or folder is too large to fit within a single record, other file records are allocated as well. A duplicate image of the first four records of the MFT. This file guarantees access to the MFT in case of a single-sector failure. Contains a list of transaction steps used for NTFS recoverability. Log file size depends on the volume size and can be as large as 4 MB. It is used by Windows NT/2000 to restore consistency to NTFS after a system failure. Contains information about the volume, such as the volume label and the volume version. A table of attribute names, numbers, and descriptions. The root folder. A representation of the volume showing which clusters are in use. Includes the BPB used to mount the volume and additional bootstrap loader code used if the volume is bootable. Contains bad clusters for the volume. Metafájlok Contains unique security descriptors for all files within a volume. Converts lowercase characters to matching Unicode uppercase characters. Used for various optional extensions such as quotas, reparse point data, and object identifiers. Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 14 Reserved for future use. Metafájlok: MFT Figyeljünk az MFT önhivatkozó jellegére! A 0-s rekordja saját magát írja le! A 0-s rekordban attribútumok: Standard Information File Name Data (Hol van az MFT) Bitmap (Az MFT mely bögei foglaltak) MFT rezervációs zóna A kötet foglaltságtól is függően lefoglalt terület az MFT körül, hogy az MFT nőhessen Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 15 5
Egy NTFS kötet $Boot $Mft szabad $MftMirr szabad $Boot Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 16 Kérdések az MFT-vel kapcsolatban Kérdés1: Lehet-e az MFT 0-s rekordban nem rezidens attribútum? Ha igen, valószínű ilyen? Melyik? Kérdés2: Hány kiterjesztése lehet az MFT-nek? Csak egy? Kérdés3: Lehet-e a 0-s rekordban Attributum-list attribútum? Ha igen, valószínű-e? Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 17 NTFS irodalom http://www.ntfs.com http://www.linux-ntfs.org/ Russinovich: Inside NTFS, http://www.windowsitpro.com/article/articleid/3455 /3455.html Harwel, Webb, Flynn, Whitehurst: Unix and Windows 2000 Handbook, Prentice Hall, 2000 Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 18 6
Milyen Unix-os fájlrendszereket ismerünk? A tradicionális s5fs 4.2BSD FFS (Fast, az előbbi alternatívájaként) AT&T RFS (Remote FS) Sun NFS Linux ext2 stb. DOS VFAT Érdekes a Sun vnode/vfs rendszere Sokféle fs, mégis egységes képet mutassanak Hálózaton át is lehessen fs-eket megosztani A gyártók a vfs alá modulárisan valósítsák meg saját fs-eiket Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 19 A Berkeley Fast FS Oldal (fej)-sáv-szektor fogalmakat ismerjük A cilinder fogalmat is. SCSI diszkeknél? Ott sávcsoportonként változó szektorszám van! A Unix lineáris (logikai) blokkcímeket lát a partíción A partíciók egymás utáni (consecutive) cilindereken LBN növekedésnél Először nő a szektorszám, Aztán az oldalszám, Végül a sáv (cil) szám Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 20 Az FFS-hez Új fogalom a cilinder csoport (cyl group) Cilinder csoporton belül kis fejmozgás A tradicionális su-blokk 2 struktúrára Információk az egész fájlrendszerről (cil-csop-szám, méret, hely; blokk méret, i-bög szám stb.), Információk a cil-csop-ról (szabad i-bögök, szabad blokk lista stb.) Cil-csoportonként másolat a su-blokkról! Biztonság is cél az elhelyezésénél. Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 21 7
Az FFS-hez Új fogalom a töredék (fragment) Növelt blokkméret, nagyobb lehetséges veszteség A blokkméret: 4096/8192 (s5fs: 512/1024) Ezzel 2 szintű indirekcióval már lehet 4GB-os fájl A fragment méret is fix (fs kreációnál beállítható: 1-2-4-8 fragment/blokk) Minden fragment önállóan címezhető, allokálható Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 22 Egy FFS fájl Állhat Valamennyi blokkból, + Az utolsó blokkban valamennyi egymás utáni (consecutive) fragmentből Emiatt néha fájl recopying kell! Pl. f1 fájl utolsó adatai egy blokk egy fragmentje. Lehet, e blokk további fragmentjei más fájlokéi. Ha f1 növekszik, utolsó blokkjának új blokkot kell allokálni (pl. ahol elegendő consecutive fragment van), oda azt a bizonyos fragmentet átmásolni, további fragmentek allokálhatók Ez veszteség. Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 23 FFS allokációs politika Egy dir-be tartozó fájlok i-bögjei lehetőleg egy cilinder csoportba kerüljenek (gyorsítás) Új dir kreáláskor azt a szülő dir cil-csop-jától különböző csoportba ( egyenletes elosztás) Fájl blokkjai lehetőleg ua. cil-csopból, mint ahol i-böge van (gyorsítás) Egy cil-csopot lehetőleg ne töltsön ki egy nagy fájl (nagyra növő fájlnál más csoportba allokálnak) Fájl egymás utáni blokkjai allokálásánál interleaving Ez a politika 90%-os telítettségig jó (Az FFS-nél vezették be a hosszú fájlneveket, a dir-beli chunkokat) Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 24 8
A Linux többrétegű fájlrendszere Process 1 Process 2... Process n VIRTUAL FILE SYSTEM User mode Kernel mode ext2 msdos minix... proc Buffer cache Device drivers File System Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 25 A Linux fájlrendszer A VFS a rendszerhívásokat átalakítja az adott fájlrendszerre nézve specifikus hívássá Van (lehet) Second Extent (ext2): a Linux sajátja MSDOS: VFAT Minix (mert Minixből fejlődött a Linux) AFF (Amiga Fast FS) ufs & s5fs (szokásos UNIX) HPFS (OS/2) NTFS (NT, béta verzióban) és a proc (ami egész különleges, de nem a Linux találta ki) Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 26 Tovább a fájlrendszeren Mindegyik implementált fájlrendszerhez a VFS-en keresztül juthatunk A VFS absztrakt felület minden fájl operációhoz A VFS szinten minden fájlhoz kernel i-bög tartozik. A kernel i feltétlenül egyedi. A köteteken lévő i-bög (már ha van) különbözhet a kernelbeli i-bögtől Egységes buffer cache-elés van (már ahol ennek van értelme) Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 27 9
Az ext2 Története Kezdetben Minix FS: max 64 MB, 14 hosszú nevek 1992: ext: 2GB, 255-ös nevek (lassú, fregmentáló) 1993: xia: 2GB, 248-as nevek, bit-térképes 1993: ext2 BSD Fast FS hatása: a partíció blokk csoportokból áll. A block group-okon szuperblokk másolat van, a block group-oknak saját bit térképük van, a block group-oknak saját i-listjük van, a block group-oknak saját i-bög térképük is. Ezzel az adatblokkok közel vannak az i-bögjükhöz, továbbá a fájl i-bögök közel vannak a jegyzékük i-bögjéhez. Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 28 Az ext2 partíció szerkezete Itt a "fizikai szuperblokk" is: i-bög szám, blokk szám, szabad i-bög szám, státus stb. Boot blk Blok group 0 Blok group 1... Blok group n Super blokk Group descriptor Block bitmap I node bitmap I node table Data blocks Su-blokk másolat Block bitmap size I node table size No. of free inodes I node bitmap size No. of free blks No. of dirs Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 29 A blokk-csoport leíró Group descriptor: 32 byte Block bitmap: az blokk térkép mérete blokkokban Inode bitmap: az i-bög térkép mérete blokkokban Inode table: az i-lista mérete blokkokban No. of free blks: szabad blokkok száma No. of free inodes: szabad i-bögök száma No. of dirs: jegyzékek száma I-bög allokáció Fájl i-böge közel a jegyzékéhez (lehetőleg ugyanabban a blokk-csoportban) Jegyzék i-böge: olyan blokkcsoportban, ahol kicsi a jegyzékek száma (elszórtan a köteten) Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 30 10
I-bög szerkezet 0 1 2 3 4 5 6 7 0 Type/perm. User (uid) File size 8 Access time Time of creation 16 Time of modification Time of deletion 24 Group (gid) Link counter Number of blocks 32 File attributes Reserved 40 12 direct blocks pointer 88 One-stage indirect block Two-stage indirect block 96 Three-stage indirect block File version 104 File ACL Directory ACL 112 Fragment address 120 További fájl attribútumok lehetnek a standard Unix attribútumok mellett. Az ACL és a visszaállítási lehetőség csak tervezett. Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 31 A jegyzék szerkezet i-bög név hossz 1 12 1. 2 12 1.. 11 20 10 lost+found hossz név Nem "valódi" láncolt lista Törléskor az előző bejegyzés hosszát növelik Nincs "shift" és nincs "üres" bejegyzés Beíráskor egy bejegyzést "megoszthatnak" Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 32 A blokk allokáció Cél: a fregmentáció elkerülése Algoritmus (l: utoljára allokált a fájl (n-1)-edik blokkja) ha a "cél-blokk" szabad, azt allokálják, különben a "cél-blokk" 32 blokknyi "közelében" allokálnak, ha itt sincs szabad, a "cél-blokk" block-group-ján belül, és csak ezután más blokk csoportból. (Cél orientált allokáció) Ha allokálnak egy blokkot, az azt követő 8 blokkot prezerválják (más fájlok elől ideiglenesen "elzárják"). (Pre-allocation) A cél-blokk: az (l+1)-edik blokk, (itt egy heurisztikus alg.,) vagy annak a blokkcsoportnak első szabad blokkja, amelyiken a fájl i-böge van Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 33 11
Végül a proc fájlrendszerről Állapot információkat szolgáltat a kernelről és a processzekről Minden processzhez tartozik /proc/pid jegyzék ebben "fájlok", a pid-ű processz státusát adják A map fájl a processz virtuális címtérképe. További "fájlok" (pl.: loadavg, uptime, meminfo, kmsg, version, cpuinfo, mounts stb.) a kernel állapotról informálnak Nem tartozik hozzá eszköz! (nodev típus) Mégis, készíthetünk róla (és aljegyzékeiről) az ls paranccsal listát! Fájljait kiírathatjuk! Az on-line man-nal a tartalmuk értelmezéséről érdeklődhetünk. Esettanulmányok fájlrendszerekről, Vadász, 2008. Ea11 34 12