Introducere în sistemul de fișiere unix

În primul articol din această serie ne-am uitat la conținutul BIOS'ovskoy și tabele de partiții Unix folosind, respectiv, utilități fdisk și disklabel. În acest articol, vom continua să vorbim și să se uite la folosind un utilitar ca newfs, precum și vorbesc despre tabelele index.

newfs Programul angajat formatarea felie în sistemul de fișiere pe care îl specificați înainte de acest disklabel utilitar. Să începem cu faptul că vom înțelege, ce sunt sistemele de fișiere de format și, în general, pentru că atunci mai bine ar înțelege ceea ce face ca utilitate newfs.

Deci, vom calcula cât de mult a blocurilor conținute în cilindru:

Dacă introduceți un fișier în fiecare bloc, puteți salva fișiere 16065. Dacă desenați să vă un semn și numărul liniilor l de la 1 la 16065, atunci pur și simplu puteți înregistra numele fiecărui fișier nou de lângă orice număr disponibil, se pare, ca și în cazul în care salvați fișierul în blocul cu acest număr. Dacă ștergeți un fișier, nu uitați să șteargă numele său din tabelul. Când doriți să mutați orice fișier, găsiți în tabel, ștergeți-l, și apoi scrie în jos numele său de lângă noul număr de bloc. Trebuie sa fi dat seama repede că nu se pot împovăra cu problemele asociate cu mișcarea fizică a fișierelor de la un bloc la altul, deoarece este mult mai ușor să modificați înregistrarea în fișierul de calcul tabelar.

Vorbind într-o formă foarte simplificată, atunci tot sistemul de fișiere pentru a urmări locația fișierelor în acest fel. Dacă sistemul de fișiere UNIX, acesta conține o astfel de structură de date care conține informații despre locația fișierelor, se numește tabela de index.

Din păcate, simplitatea conduce la o utilizare ineficientă a spațiului pe disc. Faptul că înregistrarea fișierelor în 512 blocuri de octet conduce la rezultate excelente atunci când toate fișierele au o dimensiune de 512 octeți. Cu toate acestea, experiența ne spune că fișierele au o varietate de dimensiuni, de la câțiva octeți la sute de megabytes.

Continuând să se gândească ca un sistem de fișiere, puteți veni la concluzia că nu are sens să renunțe la întregul bloc la un fișier mic. Cu toate acestea, acum este momentul să se gândească la modul în care vă organizați tabelul de la condițiile pe care, într-un bloc pot fi mai mult de un fișier. Dacă începeți doar să completați în blocul de cât de multe fișiere vă puteți plasa în 512 octeți, cum veți ține evidența în care unul capete de fișiere și începe o alta? Ce se întâmplă dacă eliminați dimensiunea de 10 bytes a fișierului, iar în locul său, record de fișier 8-octet și în cazul în care vă notați informațiile pe 2 bytes, în cazul în care doriți să înregistrați un fișier de doi octeți? Vedem imediat că un astfel de sistem pierde rapid de performanță.

Să vedem ce avem este pe de cealaltă parte a scalei. Ce se întâmplă dacă aveți nevoie pentru a scrie fișiere care sunt mai mari decât dimensiunea blocului de date fizice sau logice? Pentru a salva fișierul pe disc, va trebui, desigur, să utilizeze mai mult de un bloc de date. Să presupunem că doriți să salvați fișierul într-un volum de 1000 de octeți. Acest lucru ar necesita două blocuri de 512 octeți fizic, și, în consecință, două intrări vor fi în tabelul index. De asemenea, trebuie să se gândească la modul de a face aceste înregistrări, pentru că acum importantă ordinea depunerii lor. În această situație, nu este suficient doar să știu ce fișierul este, de exemplu, în blocurile 3 și 4. Trebuie face cu siguranta sigur că primii 512 octeti ai unui fișier se găsesc în număr de bloc de trei, iar restul în al patrulea bloc.

Până la acest punct am vorbit doar despre înregistrarea de date. Un alt parametru important este performanța citit sistemul de fișiere. Scopul final al scrierea fișierelor pe disc, în primul rând este de a se asigura că experiența de lectură de utilizator necesare pentru acesta, în momentul în care fișierul. Pentru ca utilizatorul poate citi fișierul, sistemul de fișiere trebuie să știe ce unitate sau unități conțin fișierul, și apoi copiați conținutul în memorie, astfel încât utilizatorul să le poată efectua avea nevoie de o intervenție chirurgicală.

Iată câteva lucruri care pot crește viteza de operații de citire. În primul rând, creșterea blocului de date logice în așa fel încât acesta a inclus mai multe blocuri fizice. Atunci când un utilizator dorește să acceseze un fișier care este conținută într-un bloc fizic în memoria principală pentru a porni o unitate logică. Acest lucru economisește un număr mare de accese la disc pentru o unități fizice separate. În cazul în care mai multe unități urmează să fie încărcate în memorie, este foarte probabil ca toate datele solicitate de către utilizator va fi transferat la un moment dat.

Suntem interesați doar câteva taste. Să începem cu «-B» cheie:

Indică dimensiunea bloc a sistemului de fișiere în octeți. Trebuie să fie o putere de 2. Dimensiunea implicită de 8192 octeți. Cea mai mică dimensiune posibilă de 4096 bytes.

Rețineți că acest fișier dimensiunea blocului de sistem. bloc fizic are întotdeauna o dimensiune de 512 octeți. 8192 bytes - este de fapt 16 blocuri fizice. Astfel, acest parametru specifică mărimea unui bloc logic, adică, cât de mult datele sunt citite în memorie la un moment dat. Amintiți-vă că această opțiune este setată pentru a crește viteza de citire și este unul dintre motivele pentru care numele sistemului de fișiere FreeBSD conține cuvântul „rapid“.

Indică dimensiunea fragmentului sistemului de fișiere în octeți. Valoarea trebuie să fie în termen de blocksize / blocksize și 8 să fie o putere de 2. Dimensiunea implicită 1024 octeți.

FFS foloseste fragmentare, cu toate acestea, mai degrabă decât fragmentate logic bloc fizic. Dimensiunea implicită fragment este egală cu două blocuri fizice.

Acum, ia în considerare tasta «» -i:

Indică densitatea de intrări de index în sistemul de fișiere. În mod implicit, un record de la fiecare 4 * bytes razmer_fragmenta de spațiu de date. Pentru a crea un tabel mai mare de elemente, este necesar să se stabilească o setare și vice-versa corespunzător de mare. Pentru un singur fișier necesită o intrare în tabel, astfel încât acest lucru determină în sistemul de fișiere dimensiunea medie a fișierelor.

În mod implicit, se creează o intrare de tabel pentru fiecare 4048 bytes de spațiu pe disc, iar fiecare fișier are un număr de înregistrare. Deoarece fiecare înregistrare corespunzătoare la un fișier, dimensiunea medie a fișierului în sistemul de fișiere 4048 se presupune bytes.

Aici sunt două opțiuni, care ar trebui să fie menționate aici, deoarece acestea afectează performanța operațiunilor de sistem de fișiere de citire / scriere FFS. În primul rând, -m-cheie:

Performanța oricărui sistem de fișiere începe să se „scufunde“ atunci când ea nu a avut suficiente blocuri gratuite pentru a stoca date. Faptul este că sistemul de fișiere „preferă“ pentru a stoca fișiere într-un singur director de blocuri adiacente (de exemplu, unul lângă altul), dar devine dificilă atunci când numărul de blocuri libere este redus, iar sistemul trebuie să-și petreacă timp pentru a le găsi. Creatorii FFS indică faptul că performanțele sale scade dramatic atunci când discul este umplut cu mai mult de 90%. Atunci când un sistem de fișiere atinge un prag pentru cantitatea de spațiu liber (implicit este de 8%), pentru utilizatorii generale este blocat de înregistrări ale fișierelor. Utilizatorii vor primi un mesaj de eroare, și este probabil să reamintească administratorul situației. Superutilizator păstrează capacitatea de a scrie date pe disc, și de a folosi blocuri rămase libere, dar în acest moment este cel mai bine este să înceapă elaborarea unui plan de salvare a sistemului de fișiere, mai degrabă decât de așteptare până la poziția finală pe ea.

Acum, să ne uităm la a doua cheie, care se ocupă cu spațiu liber:

Cele mai multe dintre sistemele de fișiere folosesc algoritmi speciali pentru a determina ce fișiere trebuie să împrumute niște blocuri de pe disc. Această cheie este utilizată pentru a determina care strategii de optimizare trebuie să respecte algoritmul FFS pentru plasarea fișierelor. Optimizarea vitezei pe care se poate utiliza situația veniturilor de spațiu pe disc liber (timp). Cu toate acestea, în cazul în care cantitatea de spațiu liber pe disc devine limita definită prin tasta «-m», optimizare fragmentare (spațiu) devine mai importantă decât viteza.

Acum, probabil știți deja despre sisteme de fișiere mai mari decât este permis la începutul acestui articol, așa că hai să ne oprim. În următorul articol ne vom uita la un grup de cilindri, superblocks, precum și conținutul propriu-zis al intrărilor tabelei de index.

articole similare