330 likes | 479 Views
Datotečni sistem NT. Funkcije Win32 API za branje/pisanje datotek. Drugi stolpec podaja najbližji ekvivalent Linux. Zgled: kopiranje datoteke. Drugi stolpec podaja najbližji ekvivalent Linux. Funkcije Win32 API za delo z direktoriji. FAT (File Allocation Table)
E N D
Funkcije Win32 API za branje/pisanje datotek Drugi stolpec podaja najbližji ekvivalent Linux
Drugi stolpec podaja najbližji ekvivalent Linux Funkcije Win32 API za delo z direktoriji
FAT (File Allocation Table) FAT32 (Win 95r2 & win 98 FAT) NTFS (New Technology File System) CDFS (Compact Disc File System) Podpirani datotečni sistemi
Dostop do datotečnega sistema NTFS in drugi datotečni sistemi so predstavljeni kot naložljivi gonilniki (loadable drivers). Aplikacije jih kličejo posredno. Okoljski podsistemi NT kličejo sistemske servise NT, ti pa nato ustrezne gonilnike.
Interakcija gonilnikov NTFS • Gonilniki NTFS interaktirajo s tremi drugimi komponentami izvajalnika NT: • Servisom LFS (Log Service File) (beleženje dogodkov) • Upravnikom medpomnilnika • Upravnikom navideznega pomnilnika
Dostop do datotek Aplikativni programi dostopajo do datotek tako, kot do drugih objektov: preko ročajev na objekte. Slika prikazuje podatkovne strukture, ki povezujejo ročaj datoteke z datotečno strukturo na disku.
Osnovna struktura datotečnega sistema NTFS je zvezek (volume). Tvorimo ga s programom za administracijo diska (disk administrator utility). Temelji na logični particiji diska. Zaseda lahko del diska, cel disk ali je razprostrt preko več diskov. Vsi metapodatki, kot na primer podatki o zvezku, so shranjeni v navadni datoteki. Datotečni sistem
NTFS uporablja kot enoto alokacije grozde (clusters). Grozd je število sektorjev diska, ki je 2 n. Ker je velikost grozda manjša kot pri 16-bitnem datotečnem sistemu FAT, je interna fragmentacija zmanjšana. NTFS uporablja kot naslove na disku logične številke grozdov (logical cluster numbers, LCN). Notranji izgled datotečnega sistema
Izgled zvezka NTFS (Volume Layout) • Datoteka v NTFS ni preprost tok bytov (kot pri Linux), pač pa strukturiran objekt, ki ga sestavljajo atributi. • Vsako datoteko v NTFS opisuje eden ali več zapisov v polju v posebni datoteki, ki ji pravimo “Master File Table” (MFT).
MFT Master File table Srce strukture NTFS v zvezku (na disku) je glavna tabela datotek (MFT, Master File table). To je polje datotečnih zapisov. Vsak tak zapis je dolg 1k, ne glede na velikost grozdov. Za vsako datoteko na disku ima MFT eno vrstico, vključno z vrstico za samo MFT. Poleg tabele MFT je na zvezku še množica metadata datotek.
Pomen vrstice v MFT Slika prikazuje datotečni zapis v tabeli MFT za primer majhnih datotek. Vsak datotečni atribut pomnimo kot ločen tok bajtov v datotekah. Strogo rečeno, NTFS ne bere ali piše datotek, on bere ali piše tokove atributov.
Rezidenčni in nerezidenčni atributi Vsak atribut začenja zaglavje (header), v katerem so podatki o atributu (ali je rezidenčen, dolžina njegove vrednosti (dolžina podatkov) itd). Če vrednost (njegov podatek) nekega atributa pomnjena kar v datotečnem zapisu, je to rezidenčni atribut. Če je datoteka majhna, pomnimo vse atribute in tudi njihove vrednosti (podatke) v datotečnem zapisu. Dostop do (zelo) kratkih datotek je zato hiter.
Primer majhne in velike datoteke Majhen direktorij je primer take,kratke datoteke Veliko datotek pa ni dovolj majhnih. Za atribute z dolgimi vrednostmi (na primer za datoteke z več podatki) uvede NTFS izven tabele MFT nekaj kB velik podaljšek (pravimo mu tudi extent, run), v katerem pomni vrednost atributa (v našem primeru podatke datoteke). Atributi, katerih vrednosti so pomnjene izven MFT, so nerezidenčni atributi.
Preslikava med VCN in LCN Če atributov datoteke (ali direktorija) ne moremo shraniti v datotečni zapis MFT, potrebujemo dodatne, ločene alokacije.Pri tem si NTFS pomaga z virtualnimi številkami grozdov (VCN). Slika kaže , kako zaglavje podatkovnega atributa pomni preslikavo med virtualnimi in logičnimi številkami grozdov.
MFT zapis za datoteko s 3 teki in 9 bloki run == tek
Datoteka, ki zahteva za pomnenje svojih tekov 3 MFT zapise Struktura datotečnega sistema
Koraki iskanja za datoteko C:\maria\web.htm Iskanje datoteke po imenu
Za zgoščevanje datoteke razdeli NTFS podatke v zgoščevalne enote (compression units). To so bloki po 16 enovitih grozdov. Za redke datoteke uporablja NTFS drugo tehniko. Grozdov (Clusters), ki vsebujejo same ničle, sploh ne alocira in shrani na disku. Namesto tega pušča vrzeli v zaporedju številk virtualnih grozdov, pomnjenih v MFT zapisu datoteke. Ko datoteko beremo in najdemo vrzel med številkami virtualnih grozdov, NTFS preprosto zapolni polje klicatelja z ustreznim številom ničel. Zgoščevanje datotečnega sistema
(a) Primer datoteke dolžine 48 blokov, zgoščene v 32 blokih (b) MTF zapis datoteke po kompresiji Zgoščevanje datoteke
Windows NT nudi naslednje možnosti: Toleranca do izpadov • Zrcaljenje diskov, podatki, zapisani na en disk, so zapisani tudi na drug, redundančen disk, ki prevzame vlogo ob izpadu prvega. • Dupleks diskov, zagotavlja, da sta dva zrcaljena diska na ločenih krmilnikih diskov. Tako odstranimo še eno možnost izpada. • Proge diskov s parnostjo (Disk Striping with Parity), poznano tudi kot RAID 5. To omogoča ob izpadu diska rekonstrukcijo podatkov iz redundantnega polja diskov. • Pomembna jer še podpora UPS zaradi delovanja upravnika medpomnilnika (cache manager) v Windows NT.
Vse spremembe datotečnega sistema so izvajane v transakcijah, ki so beležene. Pred spremembo podatkov zapiše transakcija beležko (log record), ki vsebuje podatke za izničenje transakcije (undo, redo). Po spremembi podatkov se zabeleži zapis “commit”, ki pove, da je bila transakcija uspešna. V primeru izpada lahko z obdelavo beleženih zapisov podatke konsistentno rekonstruiramo. Obnovimo lahko le metapodatke datotek. Beležka (log) je pomnjena kot 3. metapodatkovna datoteka na začetku zvezka Obnavljanje datotečnega sistema
Varnost NTFS zvezka izhaja iz objektnega modela. Vsaka datoteka ima v MFT zapisu varnostni opisnik. Ta atribut vsebuje dostopni žeton lastnika datoteke in nadzorni seznam dostopa (access control list), ki kaže privilegije, ki so posameznikom na voljo za dostop do datoteke. Varnost datotečnega sistema