Documente noi - cercetari, esee, comentariu, compunere, document
Documente categorii

Arhitectura si structura ntfs

ARHITECTURA SI STRUCTURA NTFS


1. Prezentare generala


Pentru a obtine mai malte scopuri pe care Microsoft le dorea de la noul sistem de fisiere, era necesar sa fie foarte atent la proiectarea NTFS, incepand de la princip Termenul arhitectura este adesea utilizat pentru a referi structura de baza si conceptele utilizate pentru a organiza un sistem complex, fie el sistem de fisiere, sistem de operare, microprocesor etc.

Pentru a se asigura ca NTFS indeplineste cererile cat mai multor utilizatori, el incorporeaza un set specific de structuri si tehnici.

Majoritatea slabiciunilor sistemului de fisiere FAT rezulta direct de la destul de simplista si demodata arhitectura pe care o foloseste. In structura interna a partitiei FAT nu au fost prevazut spatiu suplimentar pentru a tine seama de posibilitatile de siguranta si securitate, facand foarte dificila adaugarea acestora mai tarziu.



In contrast, NTFS are o arhitectura speciala care nu numai ca permite aceste capacitati avansate, ci foloseste si o schema conceptuala simpla care face usoara adaugarea de caracteristici noi in viitor, cu minim de schimbari.

Eleganta arhitecturii NTFS poate fi vazuta in cum este stocata o informatie intr-o partitie NTFS. Virtual fiecare structura in NTFS este un fisier, inclusiv structura folosita pentru a intretine partitia si a mentine statistica si informatia de control despre partitie.

Informatia de control este retinuta intr-un set de fisiere speciale care sunt create prima data. Acestea se numesc fisiere de metadate si includ informatii ca: lista de fisiere din partitie, informatii despre volum, clustere alocate etc.

O exceptie de la regula "orice este fisier" este sectorul partitiei de boot, ce precede fisierele de metadate dintr-o partitie NTFS si controleaza operatiile NTFS de baza cum ar fi incarcarea sistemului de operare.

Acelasi model conceptual simplu folosit pentru fisiere si structurile de control este extins de asemenea si la nivelul intern de fisiere. Fiecare fisier dintr-o partitie NTFS este o colectie de atribute. Acesta include chiar si datele pe care fisierul le contine, care sunt considerate chiar unul dintre aceste atribute. Alte atribute includ date cum ar fi: numele fisierului si dimensiunea lui.

Acest aranjament este asemanator unei baze de date, sistemul de operare vede fisierul ca fiind un obiect cu diferite caracteristici, si procedeaza in consecinta. Aceasta il face usor de folosit si usor de adaugat atribute daca este necesar in viitor.

Intern NTFS stocheaza toate fisierele utilizand un sistem de clustere; fiecare fisier este spart in clustere, fiecare continand un numar binar de 512 octeti. La suprafata este oarecum similar cu cum stocheaza datele FAT, dar implementarea clusterelor este cumva diferita.



2.Sectorul de boot


Cand o partitie NTFS este creata prima data, primul bloc de informatie creat pe partitie este sectorul de boot al volumului. Aceasta structura fundamentala, care este parte a unui bloc foarte mic care gestioneaza NTFS si care nu este stocat in interiorul tabelului fisierului principal (MFT - master file table) al volumului NTFS, este in foarte mare parte analog cu cel de la sistemul de fisiere FAT. La fel sectorul de boot al sectorului FAT, sectorul de boot al sectorului NTFS este uneori numit sectorul de boot al partitiei sau inregistrarea de boot a volumului.

In ciuda folosirii cuvantului sector, sectorul de boot poate de fapt sa fie de fapt de pana la 16 sectoare (8kb) in lungime.

Sectorul de boot al volumului NTFS incepe la primul sector al partitiei si se compune din doua structuri principale, similare cu cele FAT:

Blocul de parametri BIOS - este un bloc de date care contine informatii fundamentale despre volum insusi. Acest bloc identifica volumul ca o partitie NTFS, si include informatii despre eticheta si lungimea volumului. In plus, NTFS ofera o extindere a blocului care contine informatie aditionala despre volum ca de exemplu amplasarea fisierelor de metadate.

Blocul codului de boot - este un mic bloc de cod de program care instruieste sistemul cum sa incarce sistemul de operare. Cu un volum NTFS acesta va fi specific pentru Windows NT sau Windows 2000 care este instalat pe sistem. El va incarca in general NTLDR, programul de incarcare NT, si apoi transfera controlul lui pentru a incarca restul sistemului de operare. Acest cod este de asemenea prezent in partitie ca fisier sistem (Fisier de metadate).

Tabelul urmator descrie sectorul de boot al unei memorii formatate cu NTFS. Cand o memorie este formatata cu NTFS se aloca primele 16 sectoare pentru sectorul de boot.



Adresa offset

Lungime camp

Nume camp

0x00

3 octeti

Instructiune de salt

0x03

LONGLONG

Identificator OEM

0x0B

25 octeti

BPB

0x24

48 octeti

BPB extins

0x54

420 octeti

Codul de boot

0x01FE

WORD

Marcator sfarsit de sector


In volumul NTFS, campurile de date ce urmeaza BPB formeaza o extindere a BPB. Datele din aceste campuri permit programului de incarcare NT sa gaseasca MFT in timpul pornir

Tabelul urmator descrie campurile din BPB si extinderea BPB. Campurile pornesc la 0x0b, 0x0d, 0x15, 0x18, 0x1A si 0x1C, si se potrivesc cu cele de la FAT 16 si FAT 32.


Adresa offset

Lungime camp

Valoare

Nume camp

0x0B

WORD

0x0002

Octeti pe sector

0x0D

octet

0x08

Sectoare pe cluster

0x0E

WORD

0x0000

Sector rezervat

0x10

3 octeti

0x000000

Intotdeauna 0

0x13

WORD

0x0000

Neutilizat de NTFS

0x15

octet

0xF8

Descriptor media

0x16

WORD

0x0000

Intotdeauna 0

0x18

WORD

0x3F00

Sectoare pe pista

0x1A

WORD

0xFF00

Numar de capete

0x1C

DWORD

0x3F000000

Sectoare ascunse

0x20

DWORD

0x00000000

Neutilizat de NTFS

0x24

DWORD

0x80008000

Neutilizat de NTFS

0x28

LONGLONG

0x4AF57F0000000000

Total sectoare

0x30

LONGLONG

0x04000000000000000

Numarul logic de cluster al fisierului $MFT

0x38

LONGLONG

0x54FF070000000000

Numarul logic de cluster al fisierului $MFTMirr

0x40

DWORD

0xF6000000

Cluster pe segmentul de inregistrare a fisierului

0x44

DWORD

0x01000000

Cluster pe bloc de index

0x48

LONGLONG

0x14A51B74C91B741C

Numarul de serie

0x50

DWORD

0x00000000

Checksum


Codul de boot al unui sistem de fisiere FAT este o tinta perfecta pentru scriitori de virusi, pentru ca schimband acest cod permit ca un virus sa se incarce automat cand sistemul este pornit

Designul de inalta securitate al Windows NT sau Windows 2000 face ca imprastierea virusului din codul de boot sa fie mai dificila, datorita faptului ca sistemul de operare mentine controlul strans asupra discului.


3.Fisiere sistem (fisiere de metadate)




Sistemul de fisiere sistem contine virtual toate datele, atat datele utilizatorului cat si datele interne care gestioneaza datele utilizatorului, in forma de fisiere. Cele mai importante dintre acestea sunt un set de fisiere de sistem speciale, care sunt numite fisiere de metadate. Prefixul "meta" in general se refera la ceva "transcendent" sau la sine insasi. Deci fisierul de metadate este fisierul care contine date despre date. Si exact asta face acest fisier. El contine informatii interne (date) despre datele "reale"inmagazinate in volumul NTFS. Acest fisier de metadate este creat automat de sistem cand volumul este formatat, si este plasat la inceputul partitiei.

Pentru a explica cum lucreaza acest fisier trebuie mentionata o alta structura: tabelul fisierului principal (MFT).MFT este de fapt unul dintre fisierele de date, dar el contine si descrieri ale altor fisiere de metadate si in unele cazuri in intregime celelalte fisiere de metadate.

MFT contine o inregistrare care descrie fiecare fisier si director dintr-un volum NTFS, si daca fisierul este destul de mic continutul actual poate fi stocat chiar in MFT. Cum fisierele de metadate sunt doar "fisiere" pentru NTFS (cu toate ca unele speciale), si ele au inregistrari in MFT. De fapt primele 16 inregistrari ale MFT sunt rezervate pentru fisiere de metadate. Sistemul este consistent logic si lucreaza foarte bine.

Eleganta acestui sistem de metadate este aceea ca stocand informatia interna in fisiere, este posibil a marii posibilitatile sistemului de fisiere, pe cand schimbarea structurii interne "dedicate" este mai complicata.

De asemenea, aceste fisiere nu au voie sa fie stocate intr-o locatie specifica pe hard disc, deci daca o suprafata specifica a hard discului este stricata ele pot fi mutate in alta parte.

Tabelul de mai jos ofera informatii importante despre metadate incluzand numele lor, numele fisierelor, numarul de inregistrare MFT si o scurta descriere a ce face fiecare. Inregistrarile de la 11 la 15 din MFT (de la a 12-a inregistrare la a 16-a, deoarece inregistrarile incep cu 0) sunt rezervate pentru viitoare fisiere de date.


Numele fisierului

de metadate

Nume

fisier

Inregistrare MFT

Descriere

Tabelul fisierului principal

(Master file table)

$MFT

0

Este insusi MFT. Pare a fi o problema gaina sau oul: cum o inregistrare MFT sa contina MFT? Nu poate. Prima inregistrare MFT contine informatii descriptive despre MFT. Acest lucru este consecvent cu modul cum lucreaza NTFS: cum MFT este vazut ca un "fisier" el are nevoie de o inregistrare in MFT.

Tabelul fisierului principal 2 (Master file table mirror)

$MFTMirr

1

Este o reprezentare identica a primelor 16 inregistrari din MFT. Este pozitionat ori in mijlocul partitiei (Windows 3.5 sau mai vechi), ori la sfarsitul partitiei (Windows 4.0 si urmatoarele). Acest fisier este unul de "backup" care este folosit pentru a se asigura ca primele inregistrari din MFT, care desigur descriu metadatele, pot fi accesate in cazul unei erori asupra originalei MFT.

Fisierul Log (Log file)

LogFile

2

Este jurnalul de tranzactie pentru volum. Acesta da posibilitatea NTFS de a reface ultimele operat

Descriptor de volum

$Volume

3

Contine informatii despre partitie cum ar fi: numele, timpul crearii, versiunea, etc.

Tabelul de definire a atributelor (Attribute definition table)

AttrDef

4

Acest tabel contine numele si descrierea diferitelor tipuri de atribute utilizate in acest volum. (Nu contine atributele insasi ci mai degraba descrierea a ceea ce inseamna aceste atribute)

Directorul radacina

5

Este un pointer la directorul radacina al volumului

Harta de alocare a clusterelor (Cluster allocation bitmap)

Bitmap

6

Contine o harta care arata care clustere din volumul NTFS sunt folosite si care sunt disponibile pentru utilizare.

Codul de boot al volumului (Volum boot code)

Boot

7

Contine o copie a codului de boot al volumului (sau un pointer spre el). Codul de boot ol volumului se afla de asemenea in sectorul de boot al volumului.

Fisierul cu clustere proaste (Bad cluster code)

BadClus

8

Este o lista cu  toate sectoarele care au fost marcate ca proaste(o eroare a fost detectata undeva in volum in aceste clustere, si sistemul vrea sa fie sigur ca acestea nu vor mai fi utilizate vreodata)

Fisier de securitate (Security file)

$Secure

9

Contine un unic descriptor de securitate pentru toate fisierele din volum.

Upper case table

$UpCase

10

Tabel continand informatie pentru convertirea numelor fisierelor la Unicode(16 octeti) pentru o compatibilitate internationala)

Fisiere NTFS extinse (NTFS extension file)

Extend

11

Folosit pentru diverse extensii facultative ca de exemplu cotele, puncte de reanaliza a datelor si identificator de obiect.


4.Tabelul fisierului principal(MFT)


Probabil cel mai important dintre fisierele sistemului care definesc un volum NTFS, tabelul fisierului principal este locul unde este stocata informatia despre fisierele si directoarele din volumul NTFS . MFT este in esenta un tabel al unei baze de date relationale, care contine diferite atribute despre diferite fisiere.

El se comporta ca un punct de pornire si de gestionare centralizata a caracteristicilor dintr-un volum NTFS, sortat ca un tabel de continuturi pentru volum. Este cumva analog cu tabela de alocare a fisierelor dintr-o partitie FAT, dar este mult mai mult decat o lista a clusterelor utilizate si disponibile.

Cand un fisier sau director este creat intr-un volum NTFS, o inregistrare pentru el este creata in interiorul MFT. Marimea fiecarei inregistrari in MFT este egala cu marimea unui cluster al volumului, dar trebuie sa aiba minim 1024 octeti si maxim 4096. Asta inseamna ca chiar daca sunt utilizati 512 octeti, inregistrarea este de 1024 si daca sunt folosite clustere mai mari de 4096 octeti fiecare inregistrare MFT este limitata la 4096 octeti. Totusi anumite surse spun ca marimea fiecarei inregistrari este fixa la 1024 sau 2048 octeti.

Sistemul utilizeaza inregistrarea MFT pentru a stoca fisiere sau directoare; informatia fisierului luand forma de atribute. Cum marimea fiecarei inregistrari este limitata, exista mai multe moduri in care NTFS poate stoca atributele fisierului. Astfel, ori sunt stocate in interiorul inregistrarii MFT si sunt numite atribute rezidente ori sunt atribute nerezidente stocate in inregistrari aditionale ale MFT sau in extensii in afara MFT.

Pentru NTFS nu este nici o diferenta intre datele din fisier si atributele care descriu fisierul, datele din fisier fiind doar continutul datelor atribute. Acest lucru are urmatoarea implicatie pentru fisierele mici: daca intregul spatiu necesar pentru toate atributele fisierului, inclusiv datele ce el le contine, este mai mica decat dimensiunea inregistrarii MFT atributele vor fi atribute rezidente. Astfel unele fisiere nu necesita spatiu aditional de stocare in volum, si de asemenea nu necesita accese separate la disc pentru a verifica MFT si apoi pentru a citi fisierul, ceea ce imbunatateste performanta.

Fisierele mai mari sunt putin mai complicate. Un atribut aditional este adaugat la fisier - ori atribut standard definit de sistem ori unul nou definit de utilizator - si pe masura ce atributele existente sunt extinse in dimensiune ele pot depasi marimea inregistrarii MFT alocata pentru acel fisier. Daca acest lucru se intampla, unele atribute vor fi mutate in afara MFT si vor fi facute de sistemul de fisiere nerezidente.

Fisierele mari vor avea datele stocate ca atribute externe, si daca sunt foarte mari atributele pot contine pointeri la datele fisierului care devin un atribut extern. Pe masura ce mai multe fisiere si directoare sunt adaugate la sistemul de fisiere, devine necesar pentru NTFS sa adauge noi inregistrari in MFT.

Figura urmatoare prezinta o ilustrare simplificata a MFT.


Deoarece pastrand MFT intr-o zona contigua pe disc se imbunatateste performanta, cand un sistem NTFS este prima data configurat sistemul de operare rezerva 12,5% din spatiul discului din zona imediat urmatoare MFT. Aceasta este numita uneori "zona MFT". Este un domeniu substantial de disc rezervat, dar el poate fi utilizat in continuare. Fisierele si directoarele obisnuite nu vor folosi acest spatiu decat daca restul spatiului este deja utilizat, dar daca acest lucru se intampla "zona MFT" va fi folosita.

Eventual daca exista destule intrari in MFT, pe masura se extinde va consuma zona MFT. Cand acest lucru se intampla , sistemul de operare in mod automat va aloca mai mult spatiu in alta parte pe disc pentru MFT. Aceasta permite ca MFT sa creasca, marimea lui fiind limitata doar de marimea volumului, dar aceasta fragmentare a MFT poate reduce performanta prin cresterea numarului de citiri necesare pentru anumite fisiere, si MFT nu poate, in general, sa fie defragmentat.


5. Partitii NTFS


Partitia NTFS este foarte diferita de partitia sistemului de fisiere FAT la interior - ca structura si cum functioneaza. Oricum, extern ele indeplinesc regulile generale care se aplica la toate partitiile. Acest lucru este necesar pentru a se asigura ca procesul de boot al calculatorului poate sa trateze o partitie NTFS in acelasi fel cum trateaza o partitie FAT. De aceea, asemanator partitiilor FAT, pot fi partitii NTFS primare sau logice, si partitiile logice sunt cuprinse in partitiile extinse.

Cum NTFS a fost proiectat din start pentru a fi un sistem de fisiere corespunzator pentru a fi folosit de corporatii si medii de afaceri, acesta permite partitii foarte mari. Cand Windows NT a fost lansat singurele versiuni de FAT erau FAT 12 si FAT 16, FAT 32 nefiind inca creat. Marimea maxima a unei partitii FAT sub Windows NT era de 2 GB folosind clustere de 32 KB, sau 4 GB utilizand clusterele nestandard de 64KB pe care alte versiuni de Windows nu le suporta.

Sub NTFS dimensiunea maxima a unei partitii este de 2 la puterea 64. Acesta este egal cu 18446744073709551616 octeti. FAT 32 este in stare sa suporte partitii de pana la 2 TB dar cu costuri uriase si o tabela de alocare a fisierelor enorma.

NTFS este un sistem de fisiere complet diferit, dar cum el a fost proiectat la o data la care marimile hard discurile masurau cativa GB nu se stie cu precizie cum se comporta la o marime a discului de sute, mii sau chiar milioane de GB. Exista deja conditii care sunt puse pentru aceste limite foarte mari ale volumului.

Sub Windows NT exista o importanta restrictie impusa asupra marimii partitiei de boot - prima partitie a driverului. In timpul instalarii Windows NT creeaza intotdeauna mai intai o partitie FAT 16. Chiar daca se doreste instalarea Windows NT pe o partitie NTFS, se creeaza mai intai o partitie FAT 16 si apoi aceasta se converteste la una NTFS. Cum maximul dimensiunii unei partitii FAT 16 pentru Windows NT este 4 GB, aceasta limiteaza si partitia de boot. Chiar si folosind anumite instrumente pentru a mari dimensiunea partitiei, Windows NT nu poate avea partitia de boot mai mare de 7 GB.

Datorita acestor limitari, multe instalari NT folosesc cel putin doua partitii: una mica pentru sistemul de operare si alta mai mare pentru date si aplicat

Aceste probleme cu limitarea sectorului de boot a fost eliminata la Windows 2000. Sub Windows 2000 se poate formata si folosi intregul hard disc intr-o singura partitie

6. Clustere NTFS


Unul din modurile la care sistemul de fisiere NTFS este similar cu sistemul de fisiere FAT este faptul ca nu gestioneaza individual sectoarele de 512 octeti din volumul hard discului independent. In schimb ii grupeaza in blocuri care sunt numite clustere, sau cateodata unitati de alocare. Principalul motiv pentru care face acest lucru este performanta: daca sunt utilizate sectoare individuale pentru a stoca datele pe un hard disc foarte mare, sunt necesare multe resurse pentru a tine evidenta locatiile unde se afla fiecare, si fragmentarea discului ar fi o problema mult mai mare.

Desi atat FAT cat si NTFS utilizeaza clustere, folosirea lor are loc in mod diferit. Acest lucru se intampla datorita diferentelor structurilor interne ale celor doua sisteme de fisiere. Unele din problemele de performanta asociate cu o partitie FAT foarte mare este datorata faptului ca tabela de alocare a fisierelor creste foarte mult in dimensiune, si FAT nu a fost conceputa pentru volume foarte mari. In contrast, NTFS a fost proiectat sa fie in stare sa gestioneze o structura interna mare (cum este MFT) care apare cu o partitie mare.

La fel ca FAT, NTFS alege o valoare implicita pentru clustere bazata pe marimea partitiei. Totusi, NTFS utilizeaza o metoda diferita de selectare a marimii clusterului pentru o partitie decat sistemul de asignare implicita a clusterului de la FAT 16 sau FAT 32.

Tabelul urmator arata dimensiunea implicita a clusterului pe care NTFS le alege pentru diferite marimi ale partitiei.


Marimea partitiei



(GB)

Numarul implicit de sectoare pe cluster

Marimea implicita a clusterului (KB)

<=0.5

1

0.5

0.5 - 1.0

2

1

1.0 - 2.0

4

2

2.0 - 4.0

8

4

4.0 - 8.0

16

8

8.0 - 16.0

32

16

16.0 - 32.0

64

32

>32.0

128

64


Windows NT 3.5 si versiunile cele dinaintea lui utilizeaza intregul tabel. Astfel daca se creeaza o singura partitie de 6 GB va utiliza 16 sectoare pe un cluster (8 KB).

Windows NT 3.51 si versiunile mai noi folosesc numai primele linii din tabel. Maximul dimensiunii clusterelui este de 4 KB pentru roate partitiile de peste 2 GB, indiferent de marimea lor.

Motivul pentru aceste diferente intre cele doua sisteme de operare este legat de comprimare. Comprimarea nu este suportata de sistemele de fisiere cu clustere de dimensiune mai mica de 4 KB. Sistemele de operare mai noi de Windows 3.51 inclusiv nu vor alege clustere de dimensiune mai mare de 4 KB. Versiunile mai vechi nu suporta comprimarea si deci nu se vor preocupa sa pastreze marimea clusterelui mai mica de 4 KB, si deci va utiliza intregul tabel.

Marimea clusterului intr-o partitie are un impact important asupra performantei sistemului. In timp ce tabelul anterior arata dimensiunea implicita a clusterului pentru o partitie NTFS , aceasta valoare poate fi suprascrisa folosind parametrul "/A" al comenzii FORMAT. De exemplu: "FORMAT D:/A:8192" va formata volumul D cu clustere de 8192 octeti. Totusi suprascrierea marimii clusterului si alegerea unei valori mai mari pentru el pe o partitie trebuie facuta cu grija altfel poate fi pierduta posibilitatea comprimarii si de asemenea spatiul alocat pentru un fisier si ramas nefolosit este mai mare.

Considerata o problema pentru sistemele de fisiere FAT, aceasta devine relevanta si pentru NTFS daca se utilizeaza clustere de dimensiune mare. Valoarea implicita de 4 KB este considerata in general un compromis decent pentru hard discurile moderne.

Windows NT foloseste tabelul anterior doar daca se creeaza o partitie NTFS noua. Daca se converteste o partitie FAT la NTFS, Windows NT va crea intotdeauna volumul NTFS utilizand clusterele cele mai mici: 512 octeti.


7. Directoare NTFS


Din exterior, ca structura, NTFS foloseste in general aceleasi metode pentru organizarea fisierelor si directoarelor ca si sistemul FAT (si majoritatea altor sisteme de fisiere moderne). Aceasta este numita de obicei model ierarhic sau arbore de directoare. Baza acestei structuri de directoare este directorul radacina, care este unul din fisierele de metadate al volumului NTFS. Inauntrul acestui director se afla referinte la fisierele stocate sau la alte directoare. Fiecare director poate contine la randul lui orice combinatie de fisiere sau subdirectoare, creandu-se astfel o structura de arbore.

In timp ce NTFS este asemanator cu FAT privind structura ierarhica de directoare, este foarte diferit modul cum sunt manipulate intern. Una din diferente este aceea ca in volumul FAT directoarele sunt responsabile cu stocare majoritatii informatiei despre fisiere continute, fisierele continand doar date. In NTFS fisierele sunt o colectie de atribute, deci ele isi contin propriile informatii descriptive, precum si propriile date. Un director NTFS contine informatii numai despre director si nu si despre fisierele pe care le contine. Totul din interiorul NTFS este considerat un fisier, acest lucru aplicandu-se si directoarelor. Fiecare director are o intrare in MFT care serveste ca principal depozit de informatie pentru director.

Inregistrarea MFT pentru un director contine urmatoarele informatii si atribute NTFS:

Header (H): Acesta este un set de gestionare a datelor la nivel inferior utilizat de NTFS pentru a manipula directoarele. Acesta include o secventa de numere utilizata intern de NTFS si pointeri la atributele directorului, si spatiul liber din inregistrare. Headerul este parte din MFT, dar nu este un atribut.

Atribute standard ale informatiei(SI): Aceste atribut contine informatia standard stocate pentru toate fisierele sau directoarele. Acestea includ proprietati fundamentale cum ar fi data si timpul cand directorul a fost creat, modificat si accesat. Sunt continute de asemenea atributele standard asociate in mod obisnuit cu un fisier cum ar fi: numai pentru citire, fisier ascuns etc.

Atributul numelui fisierului(FN): Acest atribut contine numele asociat cu directorul. Un director poate avea mai multe atribute pentru numele lui pentru a permite stocarea pe langa numele obisnuit si a altor nume, de exemplu numele mic asociat MS-DOS.

Atributul indexului radacinii: Acest atribut contine indexul actual al fisierelor continute de director, sau parte din acest index daca el este prea mare. Daca directorul este mic intregul index va incapea in acest atribut din MFT, daca el este prea mare anumite informatii de aici si restul informatiei este stocat in atributul indexului de buffer.

Atributul indexului de alocare: Daca un index al unui director este prea mare pentru a incapea in atributul indexului radacinii, inregistrarea MFT pentru acel director va contine un director va contine un atribut de index de alocare, care contine pointeri la intrarile bufferelor ce contin restul informatiei de index pentru acele directoare.

Atributul descriptorului de securitate: Contine informatie de securitate care controleaza accesul la director si la continutul sau. Lista de control a accesului si datele relative la acest aspect sunt stocate aici.

Altfel pe scurt directoarele mici sunt continute complet inauntrul inregistrarilor MFT ca de altfel si fisierele mici. Cele mari au informatia impartita in mai multe inregistrari de date care sunt referite de intrarea de root pentru director din MFT. NTFS utilizeaza un mod special de stocare a acestor intrari de index comparat cu sisteme de fisiere traditionale.

Sistemul de fisiere FAT utilizeaza o lista inlantuita pentru a stoca directoarele mari: primele fisiere sunt stocate in primul cluster al directorului apoi urmatorul fisier in urmatorul cluster care este legat de primul si asa mai departe. Acest lucru este usor de implementat dat inseamna ca de fiecare data cand un director este accesat trebuie cautat dupa el si apoi sortat pentru a fi prezentat utilizatorului. De asemenea localizarea fisierelor din index necesita timp.

Pentru a imbunatati performanta, directoarele NTFS utilizeaza o structura speciala de gestionare a datelor numita B-arbori. Acesta este un concept imprumutat din bazele de date relationale. Pe scurt, un B-arbore este o structura de stocare care ia forma de arbore, unde datele sunt impartite intre ramurile arborelui. Fara a intra mult in amanunte este greu de explicat ce este un B-arbore. De retinut este ca acest concept se refera la un arbore de unitati de stocare care retin continutul unui singur director, si este un concept total diferit de acela al arborelui de directoare care este un arbore logic continand directoarele insasi.

Utilizarea B-arborilor face ca directorul sa fie in principiu stocat. Este putin mai greu cand trebuie adaugat un fisier la director pentru ca el trebuie plasat in aceasta structura. Totusi aceasta lucru se intampla cand directorul este in folosinta. Timpul necesar pentru a gasi un anumit fisier in volumul NTFS este foarte mult redus comparativ cu timpul gasiri unui fisier in volumul FAT, in special la directoarele foarte mari.


8. Stocarea de fisiere si date


Ca la majoritatea sistemelor de fisiere, unitatea de stocare fundamentala in NTFS din perspectiva utilizatorului este fisierul. Un fisier este mai precis o colectie de date sortate si care poate contine orice: programe, text, clipuri audio, inregistrari de baze de date si alte tipuri de informat Sistemul de operare nu face distinctie intre tipurile de fisiere. Utilizarea unui fisier in mod particular depinde de cum este el interpretat de aplicatia care il utilizeaza.

In volumul NTFS toate fisierele sunt stocate cam in acelasi fel: o colectie de atribute. Aceasta include si datele continute de fisier, care este doar un alt atribut. Modul in care datele sunt stocate in fisierele din NTFS depinde de marimea fisierului. Partea centrala a structurii fiecarui fisier are la baza urmatoarele informatii si atribute care sunt stocate pentru fiecare fisier:

Header (H): Acesta este un set de gestionare a datelor la nivel inferior utilizat de NTFS pentru a manipula fisierelor. Acesta include o secventa de numere utilizata intern de NTFS si pointeri la atributele fisierului, si spatiul liber din inregistrare. Headerul este parte din MFT, dar nu este un atribut.

Atribute standard ale informatiei(SI): Aceste atribut contine informatia standard stocate pentru toate fisierele sau directoarele. Acestea includ proprietati fundamentale cum ar fi data si timpul cand fisierul a fost creat, modificat si accesat. Sunt continute de asemenea atributele standard asociate in mod obisnuit cu un fisier cum ar fi: numai pentru citire, fisier ascuns etc.

Atributul numelui fisierului(FN): Acest atribut contine numele asociat cu fisierul. Un fisier poate avea mai multe atribute pentru numele lui pentru a permite stocarea pe langa numele obisnuit si a altor nume, de exemplu numele mic asociat MS-DOS.

Atributul de date: Acest atribut retine datele actuale ale fisierului.

Atributul descriptorului de securitate: Contine informatie de securitate care controleaza accesul la director si la continutul sau. Lista de control a accesului si datele relative la acest aspect sunt stocate aici.

Acestea sunt atributele de baza asociate cu un fisier. Daca un fisier este destul de mic astfel incat toate atributele incap in MFT el este stocat in intregime in MFT.

Daca fisierul este insa prea mare pentru a incape toate atributele sale in MFT, NTFS incepe o serie de "extinderi" care muta atributele in afara MFT si le face nerezidente. Aceasta secventa cuprinde in mare pasii:

Mai intai NTFS incearca sa stocheze intregul fisier in intrarea MFT, daca este posibil. Acest lucru se intampla in general pentru fisierele mici.

Daca fisierul este prea mare pentru a incape in inregistrarea MFT. Atributele de date sunt facute nerezidente. Intrarea pentru atributele de date din MFT contine pointeri la datele de rulare (numite si extensii) care sunt blocuri de date stocate in sectiuni contigue din volum, in afara MFT.

Fisierul poate deveni atat de mare incat in inregistrarea BFT sa nu existe spatiu suficient si pentru lista de pointeri la atributele de date. Daca acest lucru se intampla lista pointerilor la atribute de date este facuta ea insasi nerezidenta. Un astfel de fisier nu are atributele de date in inregistrarea principala din MFT, in schimb aici este plasat un pointer la o noua inregistrare MFT care va contine lista atributelor pointerilor catre datele de rulare.

NTFS va cauta sa extinda aceasta structura flexibila daca sunt create fisiere foarte mari. El poate crea multiple inregistrari MFT nerezidente daca este nevoie pentru a stoca un numar mare de pointeri la diferite extens Evident cu cat fisierul este mai mare cu atat aceasta structura de stocare a fisierului este mai mare.

Datele extinse se afla in volumul NTFS in care sunt stocate majoritatea datelor fisierului. Aceste date sunt blocuri de date contigue pe disc. Pointerii din lista contin adresa de inceput si numarul de clustere. Adresa de inceput pentru fiecare data extinsa este identificata utilizand numarul virtual al clusterului.

Utilizarea schemei adresa + lungime face ca sub NTFS sa nu fie necesara citirea fiecarui cluster al fisierului pentru a determina unde este localizat urmatorul cluster al fisierului. Aceasta metoda reduce de asemenea fragmentarea comparativ cu FAT.

Una dintre cele mai importante probleme de limitare pentru folosirea aplicatiilor serioase - in special baze de date - sub sistemul de operare Windows si sistemul se fisiere FAT este dimensiunea maxima a fisierelor relativ redusa. In unele situatii dimensiunea maxima este de 4 GB, iar in altele de 2 GB. Desi la o privire rapida pare destul de mare, nu este corespunzatoare pentru cerintele calculatoarelor din mediile de afaceri.

Asa cum am explicat anterior NTFS, incearca mai intai sa stocheze fisierul in inregistrarea MFT a fisierului. Daca fisierul este prea mare, se maresc datele fisierului utilizand o structura cu atribute nerezidente si date extinse. Acest sistem permite ca fisierul sa fie extins in dimensiune la valori foarte mari. De fapt sub NTFS nu exista o dimensiune maxima pentru un fisier. Un singur fisier poate fi facut astfel incat sa ocupe intregul spatiu al volumului.

NTFS include cateva posibilitati care sunt utilizate pentru o stocare mai eficienta a fisierelor foarte mari. Una este comprimarea care poate fi utilizata pentru a face fisierele sa ocupe un spatiu semnificativ mai mic. Alta este suportul de fisiere dispersate, care este in special folosit de aplicatii care utilizeaza fisiere foarte mari care au date diferite de zero doar in cateva locat



9. Nume de fisiere


Sistemele de operare de la Microsoft au fost foarte inflexibile cand era vorba de numele fisierului. Conventia DOS de 8 caractere pentru nume +3 caractere pentru extensie era foarte restrictiva. Cand NTFS a fost creat, Microsoft a extins posibilitatile de a numi un fisier.

Caracteristicile si regulile de baza ce trebuie indeplinite de numele de fisiere si directoare in sistemul NTFS sunt urmatoarele:

Lungimea: In mod normal numele de fisiere si directoare pot contine pana la 255 de caractere

Sensitivitate: NTFS permite amestecarea literelor mari cu cele mici in nume, si va pastra numele in acest fel dar referintele la acest nume este case-insensitiv. De exemplu daca numim un fisier "4Q Rezultat.doc" si listam continutul directorului o sa vedem fisierul "4Q Rezultat.doc". Totusi putem sa ne referim la acest fisier prin mai multe nume: "4q rezultat.doc", "4Q reZuLtat.dOc", "4q REZULtat.DOc", etc.



Caractere: Numele poate contine orice caracter, inclusiv spatiul, cu exceptia urmatoarelor: ? ״ / < > * | :

Stocare Unicode: Toate numele de fisiere NTFS sunt stocate in format Unicode . Unicode este o reprezentare internationala a caracterelor pe format de 16 biti care permite stocarea de mii de caractere. Unicode este suportat in intregime de NTFS.

Cand Windows 95 a introdus folosirea numelor lungi, sistemul de operare crea automat un alias pentru fiecare din numele lungi pentru a putea fi folosite de un soft mai vechi. NTFS face ceva asemanator, creand de asemenea un alias pentru compatibilitate cu softurile mai vechi. Daca numele dat fisierului sau directorului este destul de mic pentru a putea fi cuprins in 8+3 caractere aliasul nu mai este creat. Este important de spus ca similaritatea intre cele doua sisteme de fisiere este in cea mai mare masura superficiala, NTFS fiind creat de la inceput pentru a permite nume lungi si are o implementare diferita.

Numele fisierului sau directorului este stocat in atributul de nume pentru fiecare fisier sau director din MFT. De fapt NTFS suporta existenta a multiple atribute de nume de fisier din MFT. Unul dintre acestea este numele obisnuit, iar cand un alias este creat este inregistrat intr-un nou atribut de nume pentru fisier. Mai departe, NTFS suporta crearea de legaturi conforme POSIX. Legaturile reprezinta nume multiple pentru un singur fisier in diferite directoare. Aceste legaturi sunt stocate in atribute de nume de fisier.


10. Atribute de fisiere


Asa cum am mai mentionat pentru NTFS orice este un fisier, iar un fisier este implementat ca o colectie de atribute. Atributele sunt parti de informatie de diferite tipuri, insemnand ca informatia din atribut depinde de cum interpreteaza si utilizeaza softul biti pe care atributul ii contine. Directoarele sunt stocate in general in acelasi fel cu fisierele, ele avand doar atribute diferite care sunt utilizate in maniere diferite de sistem.

Un atribut de fisier si director este stocat in unul din cele doua moduri de stocare, depinzand de caracteristicile atributului, in special de marime. Fiecare atribut este identificat printr-un cod al tipului atributului si, optional, printr-un nume.

Metodele utilizate de NTFS pentru a inregistra atributele sunt:

Atribute rezidente: - atributele care necesita o cantitate relativ mica de spatiu de stocare si sunt stocate chiar in interiorul inregistrarii principale din MFT. Multe dintre cele mai simple si comune atribute ale fisierului sunt stocate rezident in inregistrarea MFT pentru acest fisier. De fapt cateva sunt cerute de NTFS sa fie rezidente in inregistrarea MFT, pentru o functionare corespunzatoare, ca de exemplu numele fisierului, data de creare, accesare si modificare pentru fiecare fisier.

Atribute nerezidente: - atributele care au nevoie de mai mult spatiu decat este disponibil in interiorul inregistrarii MFT. Atributele respective vor fi plasate in alta locatie iar in interiorul inregistrarii MFT este plasat un pointer care va arata locatia atributului.

In practica doar atributele cele mai mici incap in inregistrarea MFT, deoarece inregistrarea este mai degraba mica. Multe alte atribute vor fi stocate nerezident, in special datele continute de fisier care sunt vazute de NTFS ca un atribut.

Stocarea nerezidenta poate la randul ei lua doua forme. Daca atributul nu incape in MFT dar pointerul la acest atribut incape, atunci datele sunt plasate intr-o extensie in afara MFT, iar pointerul catre aceasta locatie este inregistrat in interiorul MFT. De fapt, un atribut poate fi stocat in mai multe extensii diferite, fiecare cu un pointer separat. Daca un fisier are atat de multe extensii incat pointerii catre acestea nu mai incap in inregistrarea MFT atunci intregul atribut poate fi mutat ca atribut extern intr-o inregistrare MFT separata, sau chiar ca mai multe atribute externe.

NTFS contine un numar de atribute predefinite, numite uneori atribute de sistem. Unele sunt asociate cu un singur tip de structura, in timp ce altele sunt asociate cu mai mult de una.

Cele mai comune atribute definite de sistemul NTFS sunt:

Lista de atribute. Este un "metaatribut", un atribut care descrie alte atribute. Daca este necesar ca un atribut sa fie facut nerezident, in inregistrarea originala MFT este plasat atributul lista de atribute (attribut list) care se va comporta ca un pointer la atributul nerezident.

Harta (bitmap). Contine harta de alocare a clusterelor. Este utilizat de fisierul de metadate $Bitmap.

Data. Contine datele din fisier. Prin conventie datele fisierului sunt stocate intr-un singur atribut de date - chiar daca acest atribut este impartit in mai multe piese datorita marimii el este in continuare un singur atribut - dar aici pot fi multiple atribute de date pentru aplicatii speciale.

Atributul extins(EA) si atributul informatiei extinse. Sunt atribute speciale implementate pentru compatibilitate cu OS/2. Acestea nu sunt utilizate de Windows NT/2000.

Numele fisierului(NF). Acest atribut inmagazineaza numele asociat cu fisierul sau directorul. Un fisier sau director poate avea mai multe atribute de nume.

Atributul indexului radacin Acest atribut contine indexul actual al fisierelor continute de director sau o parte din acest index daca este prea mare. Daca indexul nu incape in inregistrarea MFT cateva informatii de aici precum si restul este stocata intr-un atribut de index de buffere extern.

Atributul indexului de alocare. Daca un index de directoare este prea mare pentru a incapea in atributul indexului radacinii, inregistrarea MFT pentru director va contine un atribut al indexului de alocare, care contine pointeri catre intrarile bufferelor care contin restul informatiei de index a directorului.

Punct de reanaliza (Reparse point) Este utilizat de driverul de filtru I.F.S. pentru a marca cateva fisiere ca speciale pentru acest driver.

Identificator obiect (Object ID). Un identificator de memorie unic al fisierului. Este utilizat de serviciul de verificare al conexiunii distribuite. Nu toate fisierele au identificator de obiect.

Descriptor de securitate(SD). Contine informatia care controleaza accesul la un fisier sau director, precum si lista de control a accesului si datele aferente. Proprietarul fisierului si informatia de audit sunt de asemenea stocate aici.

Informatia standard (SI). Contine informatia standard pentru toate fisierele si directoarele. Aceasta include proprietati fundamentale cum ar fi data si timpul creari, accesari si modificarii unui fisier sau director. De asemenea contine atributele standard definite de FAT si care sunt asociate cu un fisier cum ar fi: fisier doar pentru citire, fisier ascuns etc.

Numele volumului, informatia despre volum, versiunea volumului. Aceste atribute contin numele, versiunea si alte informatii despre volumul NTFS. Sunt folosite de fisierul de metadate Volume.

Pe langa aceste atribute definite de sistem, NTFS suporta de asemenea crearea de atribute de catre utilizatori. Utilizator, in acest context, inseamna o aplicatie a programatorului, program care creeaza propriile atribute.


IV.5. Compararea performantelor NTFS - FAT


Criteriul

NTFS5

NTFS

FAT32

FAT16

Sistemul de operare

Windows 2000
Windows XP

Windows NT
Windows 2000
Windows XP

Windows 98
Windows ME
Windows 2000
Windows XP

DOS
Toate versiunile
Microsoft Windows

Limitari

Dimensiunea maxima a volumului

2TB

2TB

2TB

2GB

Numarul de fisiere din volum

Aproape nelimitat

Aproape nelimitat

Aproape nelimitat

~65000

Dimensiunea maxima a fisierului in volum

Limitat doar de marimea volumului

Limitat doar de marimea volumului

4GB

2GB

Numarul maxim de clustere

Aproape nelimitat

Aproape nelimitat

268435456

65535

Lungimea maxima a numelui fisierului

Pana la 255

Pana la 255

Pana la 255

Standard - 8.3
Extins - pana la 255

Caracteristicile sistemului de fisiere

Caractere nume fisier

Setul de caractere Unicode

Setul de caractere Unicode

Setul de caractere al sistemului

Setul de caractere al sistemului

Inregistrare de siguranta

Fisier MFT oglinda

Fisier MFT oglinda

Copie FAT

Copie  FAT

Localizarea sectorului de boot

Primul si ultimul sector

Primul si ultimul sector

Primul sector

Primul sector

Atributele fisierelor

Standard si definite de client

Standard si definite de client

Set standard

Set standard

Streamuri alternate

DA

DA

Nu

Nu

Comprimare

DA

DA

Nu

Nu

Codificare

DA

Nu

Nu

Nu

Permite obiecte

DA

DA

Nu

Nu

Normarea discului

DA

Nu

Nu

Nu

Fisiere dispersate

DA

Nu

Nu

Nu

Puncte de analiza

DA

Nu

Nu

Nu

Puncte maxime de volum

DA

Nu

Nu

Nu

Performante

Securitate incorporata

Da

Da

Nu

Nu

Restabilire

Da

Da

Nu

Nu

Performanta

Mica la volum mic, mare la volum mare

Mica la volum mic, mare la volum mare

Mare la volum mic, mica la volum mare

Foarte mare la volum mic, mica la volum mare

Economie de spatiu pe disc

Maxima

Maxima

Medie

Minima la un volum mare

Toleranta la greseli

Maxima

Maxima

Minimala

Medie