Structura sistemului de fișiere linux și unix este un abstract, pagina 14

Sistem de fișiere de jurnal.
În ultimii ani, Linux a dobândit multe caracteristici noi și este folosit în multe medii eterogene. Linux rulează pe microcontrolere, este utilizat în routere, servește pentru a sprijini acceleratoarele hardware ale graficelor tridimensionale, suportă mediul Xfree multi-screen. Toate acestea sunt funcții importante pentru utilizatorii finali. Dar s-au făcut multe pentru a satisface cerințele pentru servere, mai ales după trecerea la kernelul Linux 2.2.x.

Datorită suportului larg al industriei și eforturile depuse de suporterii software-ului liber, Linux a câștigat trăsături importante ale versiunilor comerciale ale Unix si alte sisteme de operare pentru servere mari. Una dintre aceste caracteristici - suport pentru sistemele de fișiere, capabil de a lucra cu secțiuni mari de hard disk, scalate cu ușurință la multe mii de fișiere, recupera rapid după un eșec de a menține o performanță mai mare I / O, pentru a lucra eficient cu cele mai diferite fișiere de dimensiuni, pentru a rezista fragmentării interne și externe și chiar pentru a oferi noi caracteristici care nu sunt acceptate în oricare dintre sistemele de fișiere mai tradiționale.







În această secțiune, ne vom familiariza cu așa-numitele sisteme de fișiere de jurnal (JFS). Ext3 și ReiserFS.

Fragmentare internă

Unitatea logică - unitatea minimă de spațiu de stocare, care își rezervă sistemul de fișiere prin intermediul unor apeluri de sistem. Dacă dimensiunea fișierului este mai mic decât numărul de octeți într-un bloc logic de pe disc se va ocupa în continuare o unitate. Astfel, în cazul în care lungimea unui anumit fișier nu este divizibil cu numărul de octeți dintr-o unitate logică (MOD dimensiunea fișierului unitate de dimensiune є0), sistemul de fișiere va fi obligat să susțină noua unitate, care va rămâne goală până la sfârșitul anului, având ca rezultat o utilizare ineficientă a spațiului pe disc. O astfel de risipă de spațiu pe disc numit fragmentare internă. Dimensiunea blocului mai logic, mai mare și cea internă fragmentare.

Fragmentarea externă

Fragmentarea exterioară apare atunci când blocurile logice ale unui anumit fișier sunt împrăștiate în jurul întregului disc, ceea ce duce la operații mai lentă cu acest fișier, deoarece necesită o citire a capului.

Extensia vă permite să consumați spațiu pe disc mai eficient, deoarece toate blocurile din acesta sunt aranjate secvențial. În plus, atunci când citiți un fișier, se efectuează mai puțin mișcarea capului de citire. Utilizarea extensiilor reduce efectul negativ al fragmentării externe, deoarece mai multe blocuri sunt stocate secvențial. În acest caz, în cazul în care aplicația necesită o măsură, similară în mărime la unitatea logică, avantajele utilizării sale sunt reduse la minimum, ca urmare, a creat o mulțime de mici dimensiuni, care va juca rolul de blocuri logice obișnuite. Creșterea productivității atunci când se utilizează extensii se realizează prin reducerea mișcării între sectoare și prin reducerea numărului de rate atunci când se accesează memoria cache a discului.

Domeniile vă permit să organizați în mod eficient lanțuri mari de blocuri libere, secvențial amplasate. Ele ajută la reducerea volumului de spațiu pe disc necesar pentru a urmări blocurile libere, mărind astfel productivitatea.

B + copacii sunt utilizate pe scară largă în structurile bazelor de date index, oferind acces rapid și scalabil la înregistrări. Numele "copac B +" este un scurtcircuit pentru "Balanced Tree". Semnul "+" indică faptul că aceasta este o versiune modificată a arborelui B "original"; conține pointeri care leagă frunzele unui copac, ceea ce ajută la accesul secvențial.

B + copaci constă din noduri de două tipuri diferite: noduri intermediare și noduri finale (frunze). Toate nodurile conțin un set de perechi (o cheie, un pointer), ordonat după valoarea cheii în ordine ascendentă. Indicatorii de noduri intermediari sunt utilizați pentru a se referi la alți indicatori la nodurile intermediare sau finale, indicii pentru punctul final sunt direct la informații. Cheia este folosită pentru a organiza informații în interiorul arborelui B +. În baze de date, fiecare înregistrare are un câmp cheie, a cărui valoare distinge înregistrări de același tip. Copacii B utilizează o cheie pentru a construi un index al înregistrărilor bazei de date, ceea ce vă permite să reduceți timpul de acces la acestea. Comparând cheia curentă cu cheia nodului dorit, programul găsește informațiile necesare.







Sistem de fișiere UNIX

UFS - numele sistemului de fișiere folosit în SCO Unix, System V și alte versiuni anterioare ale Unix. Kernel-ul Linux include suport opțional UFS. Cele mai multe dialecte de Unix folosesc încă UFS, deși cu câteva modificări specifice.

Sistemul de fișiere virtuale

VFS este un nivel special în kernel-ul care oferă un API unificat pentru serviciile de fișiere, indiferent de sistemul de fișiere pe care se află fișierul. Toate implementările sistemului de fișiere (vfat, ext2fs, jfs, etc.) trebuie să furnizeze anumite funcții VFS, astfel încât să poată fi utilizate în Linux. Acest nivel de abstractizare permite aplicațiilor utilizatorilor să lucreze cu o varietate de sisteme de fișiere diferite, inclusiv cele cu produse comercial distribuite.

Ce este sistemul de fișiere de jurnal

Este bine cunoscut faptul că este o memorie cache - un tampon rezervat în memorie rapidă și destinat să accelereze operațiile I / O. Acest tip de tampon este adesea folosit în sistemele de fișiere (se numește cache de disc) și în baze de date pentru a crește performanța generală. Problema apare dacă sistemul sa prăbușit înainte ca tampoanele să fie scrise pe disc; în acest caz, după repornirea sistemului, acesta va fi într-o stare contradictorie. Imaginați-vă că fișierul a fost eliminat din memoria cache, dar a rămas pe hard disk. De aceea, bazele de date și sistemele de fișiere ar trebui să poată readuce sistemul la o stare consistentă. Pe parcursul multor ani de îmbunătățire a bazelor de date, au fost create metode care să le permită reparația rapidă, însă timpul de recuperare al sistemelor de fișiere, și mai ales sistemele asemănătoare UFS, crește odată cu mărimea sistemului de fișiere. Utilitarul de recuperare fsck pentru ext2fs ar trebui să scaneze întreaga partiție de disc pentru a readuce sistemul de fișiere înapoi la o stare consistentă. Datorită faptului că această sarcină necesită un timp foarte mare în cazul serverelor mari cu sute de gigaocteți și, uneori, terabytes de date, nu este necesar să se vorbească despre un nivel ridicat de disponibilitate a unor astfel de sisteme. Acesta a fost motivul principal pentru crearea unei tehnologii pentru sistemele de fișiere, similară tehnologiei de recuperare a bazelor de date, motiv pentru care au apărut noile sisteme de fișiere.

Mecanismul de lucru

Sistemele de fișiere log utilizează aceeași tehnică pentru a înregistra operațiunile sistemului de fișiere, astfel încât sistemul de fișiere să poată fi restaurat într-un timp foarte scurt.

O diferență importantă între bazele de date și jurnalizarea sistemelor de fișiere constă în faptul că bazele de date înregistrează utilizatorii și controlează datele, în timp ce în sistemele de fișiere, înregistrarea este de obicei limitată doar la metadate, adică structurile sale de control intern (descriptori de inode, tabele gratuite de rezervare a blocurilor, tabele inode etc.).

Soluția la problema scalabilității.

UFS și ext2fs au fost create într-un moment în care hard disk-urile și alte suporturi media nu au o capacitate mare. Creșterea capacității a dus la apariția de fișiere, directoare și partiții de dimensiuni mai mari, ceea ce, la rândul său, a dat naștere la o serie de probleme grave asociate sistemului de fișiere. Aceste probleme sunt o consecință a limitărilor structurilor interne utilizate în construcția sistemelor de fișiere. Astfel de structuri au fost destul de adecvate pentru dimensiunea medie a fișierelor vechi și a directoarelor, cu toate acestea, în condiții noi au devenit ineficiente. Structurile vechi dau naștere la două probleme grave.

Nu sunt capabili să mențină volume mari de stocare. Sistemele de fișiere vechi au fost proiectate pentru anumite dimensiuni de fișiere, directoare și partiții. Structurile sistemului de fișiere au alocat un anumit număr de biți pentru date despre dimensiunea fișierului, un număr fix de cifre pentru stocarea numărului blocului logic și așa mai departe. Ca urmare a restricțiilor stricte asupra numărului de cifre pentru câmpul de mărime, au fost impuse anumite restricții asupra dimensiunii fișierelor și partițiilor, precum și asupra numărului de elemente din director.

Ele nu sunt potrivite pentru gestionarea unor noi volume de stocare. Deși structurile vechi sunt uneori capabile să susțină dimensiuni noi de obiecte, în practică acest lucru este adesea imposibil din motive de performanță. Unele structuri funcționează bine cu dimensiunile vechi, însă în noua situație acestea duc adesea la o scădere bruscă a performanței.

Sistemele de fișiere de ultima generație au fost create ținând cont de necesitatea de a rezolva problemele de scalabilitate. Unele structuri și metode noi sunt implementate în ele.

În majoritatea sistemelor de fișiere noi, numărul de cifre rezervate pentru stocarea câtorva câmpuri este mărit pentru a depăși limitele existente.

În prezent, dimensiunea maximă a unui dispozitiv bloc limitează dimensiunea sistemului de fișiere la 2 TB. În plus, în VFS există o limită a dimensiunii fișierului de 2 GB. Cu toate acestea, este important să rețineți că sistemele de fișiere pot fi scalate acum și, odată cu lansarea kernel-ului Linux 2.4, aceste limite sunt depășite. JFS și XFS sunt versiuni comerciale ale sistemelor de fișiere concepute pentru sistemele de operare în care nu există astfel de restricții.

îmbunătățiri







Trimiteți-le prietenilor: