sistem de fișiere Btrfs
Am găsit un raport de la un seminar privind noul sistem de fișiere este încă în faza de dezvoltare și testare, dar este deja posibil să vedem că aceasta este o evoluție interesantă.
Este vorba despre un nou sistem de fișiere generație. In mod traditional FS a jucat un rol important în sistemele bazate pe Unix. Și, în multe privințe FS proprietăți determină proprietățile unui anumit implementare a Unix.
Sistemul de fișiere ar trebui să stocheze fișiere și să ofere acces la ele. În același timp, acesta a prezentat un număr mare de cerințe sunt adesea exclud reciproc: suport pentru fișiere de orice dimensiune, de înaltă performanță I / O performanță, scalabilitate, etc. Acesta a fost mult timp clar că nici unul din sistemul de fișiere nu poate fi la fel de eficiente în toate cazurile. Prin urmare, toate implementările moderne Unix suportă mai multe sisteme de fișiere simultan. Există o zicală: „Linux - Unix este astăzi“, iar kernel-ul Linux suportă mai mult de 50 de tipuri de sisteme de fișiere (!).
Asamblarea noii generații
Aici este un fragment dintr-un interviu cu Chris Mason - principalul dezvoltator de Btrfs:
Btrfs Descrieți în propriile cuvinte.
Este Btrfs moștenitorul alte FS?
Da, toate acestea :) Există o mulțime de idei de la ReiserFS, alocarea întârziată și alte idei din XFS. ZFS popularizat ideea că calcularea sumei de control a datelor poate fi rapid, și că managementul volumului logic poate fi mai bine. prin punerea în aplicare de gestionare a volumului ideii a venit de la AdvFS.
Principalele caracteristici ale Btrfs
Deci, principalele caracteristici ale care vor fi în Btrfs:
Suport pentru instantanee inscriptibile (analog ZFS Clone). În plus, puteți crea instantanee de instantanee.
Suport subtomov --- mai multe rădăcini cu numele într-un singur sistem de fișiere cu un fond comun de stocare.
Suport pentru configurații complexe multe hard-disk --- nivelurile RAID 0, 1, 5, 6 și 10, precum și punerea în aplicare a diferitelor politici la nivel de redundanță a obiectelor PS --- care este posibil să se atribuie, de exemplu, oglindire pentru orice director sau un fișier.
Monitorizarea integrității blocurilor de date și metadate prin intermediul checksum.
Oglindirea metadate chiar și într-o configurație cu un singur disc.
În ceea ce privește dispozitivele FS, următoarele puncte principale care fac posibile toate aceste caracteristici, combinate cu o performanță foarte bună:
B copaci oriunde s-ar face sens
Politica de blocare - încuietori de mare granularitate.
B-copaci și a dat numele sistemului de fișiere (B-tree FS). B-arbori - l silnovetvyaschiesya copaci (B-copaci pentru un motiv oarecare, este adesea confundat cu arbori binari, probabil din cauza literelor B, dar înseamnă bloc, fiecare nod este în mod tipic câteva mii de descendenți din B-copac), fiecare nod din care, la rândul său, conține un număr mare de înregistrări (care sunt, de obicei organizate într-un arbore binar echilibrat, în special, utilizate în Btrfs copaci roșu-negru). Citește și scrie nodurile B-copac ca un întreg, pe care un impuls semnificativ de performanță face.
Broaste - aceasta este esența, permite să se evite conflictele cu acces la date simultan din mai multe fire. Hranei pentru animale care vrea să facă o schimbare în anumite structuri de date verifică mai întâi dacă acesta este blocat de un alt fir; în cazul în care blocat - în așteptare până când blocarea este eliberat, în caz contrar el apucă de blocare și eliberează-l după înregistrare. Când este vorba de accesul la structuri de date complexe, există o întrebare cu privire la politica de blocare. Am nevoie pentru a bloca întreaga structură ca un întreg, sau fiecare element separat, sau elemente ale unor grupuri? Cu cât unitatea de blocare, mai puține blocaje și costurile generale mai mici. Mai mici - chiar și consumate mai eficient timpul CPU, deoarece fire trebuie să aștepte mult mai puțin. Btrfs își propune să blocheze cât mai mici posibil, elemente ale structurilor (dar nu prea mici).
Un alt element care este asociat cu încuietori, este specific kernel-ul. La miezul există două tipuri de încuietori: spin-blocare și mutex. Când utilizați spin-blocare de așteptare fir „filare“ într-o buclă infinită. Atunci când se utilizează un mutex - avansurile de curgere la starea TASK_INTERRUPTIBLE blocat, și „se trezește“ planificator automat atunci când eliberați dispozitivul de blocare. Se înțelege că mutex sunt mai eficiente, din moment ce nu pierde timpul CPU pe cicluri goale. Cu toate acestea, mutex poate fi utilizat în cadrul handler de întrerupere, după cum În această stare, programatorul nu funcționează. O parte semnificativă a funcțiilor oricărui sistem de fișiere poate fi numit ca rutina de tratare a întreruperii, și în contextul problemei. Prin urmare, multe funcții trebuie să utilizeze spinlock mai puțin eficiente.
Btrfs foloseste un nou tip de blocare, care poate funcționa în ambele moduri (și poate comuta între modurile). Astfel, unul și același cod este utilizat în contextul obiectelor mutex și spinlocks în modul de întrerupere.
O altă caracteristică a Btrfs: toate structura FS poate fi în secțiunea locații arbitrare, acestea sunt legate indicii. Este o garanție și alte FS, dar dezvoltatorii Btrfs au găsit o nouă utilizare pentru ea: secțiunile de conversie ale celorlalte FS (conversie puse în aplicare în prezent de la ext2 / 3, convertor de la Ext4 pentru a dezvolta, teoretic, este posibil să se creeze convertoare de la alte FS). La conversia structurii Btrfs creată în secțiunea sol marcată în PS inițială liberă. Btrfs creează un fișier special, care include blocuri, structura de ocupare a sistemului de fișiere original. Astfel, aceste blocuri sunt marcate ca fiind ocupate. În plus, acest fișier este o imagine a sistemului de fișiere original, care se poate monta (monta bucla -o). Acest lucru vă permite să se rostogolească înapoi la un sistem de fișiere anterior. Pentru a elibera spațiu pe disc, pur și simplu ștergeți fișierul cu imaginea PC-ul original (derulare înapoi, respectiv, va fi plecat).
Una dintre caracteristicile FS moderne a provocat recent un scandal minor. Faptul că, în nuclee de unix (și Linux) codul de sistem de fișiere nu se ocupă în mod direct cu datele fiind scrise pe disc. Datele sunt scrise în pagini de memorie, iar aceste pagini sunt marcate ca fiind „murdar“, iar apoi le resetează fir de nucleu separat pe un disc (pdflush). Deci, atunci când se utilizează FS moderne (la știri a fost vorba despre Ext4, dar are aceleași proprietăți și XFS, și Btrfs, și multe altele), intervalul dintre scrierea datelor din memoria cache pagina scrisă pe disc poate ajunge la 150 de secunde (mai mult de două minute). Unix scris în mod tradițional pentru echipamente bune. În special, se presupune că, în orice sistem, care vrea stabilitate, UPS utilizate. Prin urmare, cea mai mare întârziere de înregistrare nu este un dezavantaj, ci un avantaj: ea face posibilă pentru a găzdui mai multe date cu succes și pentru a evita fragmentarea. Iar atunci când se utilizează un echipament mai puțin de încredere trebuie doar să reconfigura sysctl kernel înseamnă a face declanșa pdflush mai mult.
Btrfs vs Ext4
Un alt FS publicate recent pentru Linux - l Ext4. Se ia în considerare numeroasele realizări ale sistemului de fișiere moderne (amploarea măsurilor de alocare întârziată și așa mai departe), dar se bazează pe codul Ext3. Acesta este un sistem de fișiere mai avansat decât aceeași EXT3 pentru testele oferă adesea o performanță mai bună și poate fi recomandat pentru utilizare pe mai multe mașini acum. Dar, în același timp, nu poate fi numită o nouă generație de FS: arhitectura rămase de la ext3.
Btrfs este acum în faza experimentală, dezvoltatorii avertizează că acum are sens să folosească pentru testare și experimentare în monoterapie. Chiar și formatul de disc nu este încă complet ustakanilsya. Dar este cu siguranță FS nouă generație de arhitectură, ea seamănă cu o ZFS face asta, dar nu vechiul FS linux-kernel.
Btrfs vs ZFS
Btrfs este cel mai similar cu ZFS companiei de la Sun. Btrfs nu acceptă unități de volum astronomice ca ZFS, dar acest lucru este puțin probabil ca în viitorul apropiat, va avea o valoare practică. Dar Btrfs are unele caracteristici care nu sunt prezente în ZFS: Instantanee instantanee și prioritățile de drive-uri de mare viteză, de optimizare pentru SSD-drive-uri. Dar ZFS deja utilizat în producție-servere si utilizarea Btrfs va fi masa, probabil, câțiva ani (dacă presupunem că distribuția Btrfs se va dezvolta, de asemenea, ca ZFS).
măsurarea performanței Btrfs este acum puțin informativ, din moment ce Optimizarea este în plină desfășurare. Dar acum bypaseaza ZFS Btrfs efectuarea unor operații.
Stadiul actual de dezvoltare
Principalele caracteristici ale Btrfs au fost deja puse în aplicare. Formatul Disk este aproape de stabilizare, dacă el se va schimba, nu este mult. Tocmai a finalizat punerea în aplicare de manipulare a situației lipsei de spațiu pe disc (problema este că scrie efectiv pe disc poate să apară după închiderea fișierului de program, și nu a fost destul de clar modul de a transfera eroarea de înregistrare de program). În plină desfășurare pentru a găsi și repara alte erori. În dezvoltarea unui ioctl-API speciale pentru a sprijini tranzacțional I / O (mai multe operațiuni combinate într-o tranzacție poate fi efectuată toate sau nu respectate, printre altele, aceasta ajută la reducerea numărului de inspecții între operațiunile într-o singură tranzacție). Sarcina imediată - punerea în aplicare a șterge instantanee, prima versiune a codului a apărut deja în buletinul informativ.