Structura sistemului de fișiere hfs

· În scopul asigurării securității sistemului (interzicerea lansării programelor din sistemele de fișiere, limitarea spațiului pe disc pentru sistemul de fișiere etc.)

În general, sistemul de fișiere HP-UX constă dintr-un arbore de directoare (directoare) localizat ierarhic cu directorul rădăcină din partea de sus. Toate sistemele de fișiere au proprietatea "mountability", care este că orice sistem de fișiere poate fi montat (atașat) la un director existent. Orice sistem de fișiere montat, cu excepția rădăcină, poate fi dezasamblat. Montarea sistemului de fișiere rădăcină este realizată de kernel, imediat după descărcare.







Structura sistemului de fișiere HFS

Toate sistemele de fișiere HFS au următoarele structuri:

· Un set de grupuri de cilindri

Structurile de date utilizate în sistemul de fișiere sunt conținute în fișierul /usr/include/sys/fs.h. Superblock-ul principal este un bloc de date continuu de 8K situat înainte de începerea sistemului de fișiere care conține informații statice despre sistemul de fișiere în momentul creării acestuia (sau ultima extensie):

· Dimensiunea sistemului de fișiere

· Numărul de inode care pot stoca sistemul de fișiere

· Poziția de spațiu liber pe disc

· Numărul grupelor de butelii

· Pozițiile de super-blocuri, caneluri ale cilindrului, blocuri de inode și blocuri de date

· Blocarea și dimensiunea fragmentului

În plus, superblock-ul principal conține informații auxiliare despre ultima dată când a fost montat, modificat și verificat sistemul de fișiere. Deoarece principiul superblock conține informații extrem de importante despre sistemul de fișiere, HP-UX își păstrează întotdeauna copiile în fiecare grup de cilindri. Unul dintre copii este încărcat în memorie după descărcare. Principalul superblock este plasat chiar la începutul sistemului de fișiere, iar fiecare grup de cilindri are propria sa copie a superblocului. În acest fel, se obține redundanța informațiilor critice. Blocurile super-de grupuri de cilindri de pe disc sunt actualizate de fiecare dată când se execută comanda de sincronizare sau când sistemul de fișiere este dezinstalat. Fișierul / etc / sbtab conține o înregistrare a poziției tuturor superblocurilor sistemelor de fișiere.

Un grup de cilindri este un grup de cilindri de disc care rulează succesiv. Un cilindru este o colecție de piste, fiecare dintre acestea fiind plasată la aceeași distanță față de centrul suprafeței suportului de disc. Toate piesele din cilindru sunt disponibile într-o singură operație de citire / scriere a capului discului. Pentru a crește productivitatea, cilindrii sunt grupați (în mod implicit 16 cilindri) în grupuri de cilindri. Fiecare grup de cilindri are propriul set de inode și hartă a spațiului liber din grup. Această organizație de stocare vă permite să minimizați timpul pentru a căuta date despre fișiere într-un grup de cilindri. Dăm structura unui grup de cilindri:







1 numai pentru primul grup de butelii

2 vedeți secțiunea inodes

3 consultați secțiunea blocuri de date

Secțiunea de informații despre grupul de cilindri stochează parametrii dinamici ai grupului cilindrilor, cum ar fi:

· Numărul de inode și blocuri de date dintr-un grup de butelii

· Indicatori la ultimul bloc, fragment și inod

· Numărul fragmentelor libere

· Harta inodurilor folosite

· Harta blocurilor libere

Informațiile despre un grup de cilindri ocupă un bloc (dimensiunea blocului este determinată de adăugarea sistemului de fișiere și este, de obicei, egală fie cu patru sau opt kilobiți).

Pe lângă stocarea informațiilor despre starea sistemului de fișiere, grupele de cilindri stochează informații cheie despre inodurile sistemului de fișiere - indicele fișierelor de date (și directoarele). Discul inode conține următoarele informații despre fișier:

· Tipul de fișier și atributele de acces

· Numărul de linkuri către un fișier

· Dosar proprietar și grup

· Dimensiunea fișierului în octeți

· Timbre (ora ultimului acces, ultima modificare)

· Indicatori pentru blocarea blocurilor de sistem care conțin date

Atunci când un fișier este deschis printr-un proces, informațiile despre inodul său se află în memoria de bază (inode in-core) în combinație cu atribute suplimentare, cum ar fi:

· Starea inode, inclusiv faptul că se blochează inode, indiferent dacă inodul in-core diferă de inodul discului datorită modificării fișierului, indiferent dacă fișierul este punctul de montare al sistemului de fișiere ...

· Pointer la alte inodes in-core construite sub forma unei liste.

Dacă inode indică un fișier special (neregulat), atunci sunt asociați parametri suplimentari, cum ar fi dacă fișierul este un FIFO sau o țeavă, un caracter sau un dispozitiv bloc sau un director. Când se creează un sistem de fișiere (comanda newfs), se creează inode. Numărul de inode limitează numărul de fișiere din sistemul de fișiere. Atunci când se creează un sistem de fișiere implicit, sistemul presupune că, în medie, 2020 octeți de date sunt inundați per inode, care în majoritatea cazurilor este mai mult decât suficient. Uneori, este posibil ca kernelul să semnaleze o eroare de depășire în tabela inodes in-core (inode: tabela este plină). În acest caz, trebuie să modificați mărimea acestui tabel prin mărirea parametrului de sistem al kernelului ninode.

După superblock, datele despre grupul de cilindri și inode de masă există un loc rezervat blocurilor de date. HP-UX acceptă blocuri de dimensiuni 4,8,16,32 și 64 KB. Dimensiunea blocului este setată la crearea sistemului de fișiere (comanda newfs). Dimensiunea mare a blocului vă oferă avantajul în viteza de transmisie a datelor atunci când lucrați cu fișiere mari, dar cauzează utilizarea ineficientă a spațiului de pe disc în timp de execuție, cu fișiere mici (majoritatea în HP-UX). Prin urmare, pentru a economisi spațiu pe disc, blocul poate fi împărțit în mai multe fragmente (1,2 sau 4 KB). Dimensiunea fragmentului este, de asemenea, determinată la crearea sistemului de fișiere și nu poate avea o dimensiune mai mică decât o optime din dimensiunea blocului.







Articole similare

Trimiteți-le prietenilor: