11. Inoduri

Vă mai aduceți aminte cum este alcătuit sistemul de fișiere? Din toate fișierele efective, dar și o bază de date care le gestionează eficient. Această bază de date este cunoscută sub denumirea de tabel inode.

Ce este un inode?

Un inode (index node) este o înregistrare într-un tabel și există câte una pentru fiecare fișier. Aceasta descrie totul despre fișier, cum ar fi:

  • Tipul de fișier – fișier normal, director, dispozitiv tip caracter, etc.
  • Proprietarul
  • Grupul
  • Permisiuni de acces
  • Amprenta orară – mtime (ora și data ultimei modificări), ctime (ora și data ultimei schimbări de atribute), atime (ora și data ultimei modificări)
  • Numărul de legături fizice (hardlinks) către fișier
  • Mărimea fișierului
  • Numărul de blocuri alocat pentru fișier
  • Pointerii către blocurile de date ale fișierului – cel mai important!

Practic inodurile stochează totul despre fișier, cu excepția numelui fișierului și a fișierului în sine!

Când sunt create indourile?

În momentul în care un sistem de fișiere este creat, se alocă și spațiu pentru inoduri deasemenea. Există mai multe tipuri de algoritmi care se execută pentru a determina cu exactitate de cât spațiu pentru inoduri este nevoie, în funcție de volumul discului și nu numai. Probabil, la un moment dat, ați văzut erori de tipul ”spațiu insuficient”. Ei bine, la fel se poate întâmpla și în cazul inodurilor (deși mult mai puțin probabil), sistemul dvs. poate ajunge în imposibilitatea de a crea inodeuri și deci implicit fișiere. Aveți în vedere că spațiul de stocare depinde atât de date cât și de baza de date (inoduri).

Pentu a vedea câte inoduri sunt disponibile pe sistemul dvs. folosiți comanda df -i

Informația inode

Inodurile sunt identificate numeric. În momentul în care un fișier este creat, acestuia i se atribuie un număr inode, în ordine crescătoare. Oricum, uneori puteți observa atunci când creați un fișier nou, acesta primește un număr care este mai mic decât celălate. Acest lucru se întâmplă pentru că alte inoduri au fost șterse, iar aceste numere au fost reatribuite. Pentru a vizualiza numărul de inoduri, rulați comanda ls -li:

utilizator@nume_gazda:~$ ls -li
140 drwxr-xr-x 2 utilizator utilizator 6 Jan 20 20:13 Desktop
141 drwxr-xr-x 2 utilizator utilizator 6 Jan 20 20:01 Documents

Primul câmp al acestei comenzi listează numărul inode.

Puteți deasemenea să vizualizați informații detaliate despre un fișier cu ajutorul comenzii stat. Acesta vă va da informații și despre inoduri.

utilizator@nume_gazda:~$ stat ~/Desktop/
  File: ‘/home/utilizator/Desktop/’
  Size: 6               Blocks: 0          IO Block: 4096   directory
Device: 806h/2054d      Inode: 140         Links: 2
Access: (0755/drwxr-xr-x)  Uid: ( 1000/   utilizator)   Gid: ( 1000/   utilizator)
Access: 2016-01-20 20:13:50.647435982 -0800
Modify: 2016-01-20 20:13:06.191675843 -0800
Change: 2016-01-20 20:13:06.191675843 -0800
 Birth: -

Cum localizează inodurile fișierele?

Noi știm sigur că datele nostre sunt undeva pe disk, dar, din păcate nu au fost stocat secvențial. Așa că va trebui să folosim inodurile. Acestea indică sistemului calea către blocurile de date efective ale fișierelor dvs. Într-un sistem de fișiere obișnuit (nu toate funcționează la fel), fiecare inode conține 15 pointeri, iar primii 12 dintre aceștia indică direct către blocurile de date. Cel de-al 13 – lea pointer, face trimitere către un bloc care conține pointeri către alte blocuri. Cel de-al 14-lea se comportă în mod asemănător celui de-al 13-lea. Cel de-al 15-lea la fel. V-am băgat în ceață, nu? Știu, sunt de acord. Motivul pentru care sunt structurate astfel este pentru menținerea structurii identice pentru fiecare inode și să fie capabil să găsească fișiere de diferite mărimi. Dacă ați avut un fișier de mărime mică, îl puteți găsi cu cei 12 pointeri direcți, în timp ce fișierele mai mari pot fi localizate cu ceilalți 3 pointeri care indică spre alții și tot așa. Oricum structura inode-urilor este la fel.

Exerciții

Studiați câteva numere inode pentru diverse fișiere. Care dintre ele au fost de regulă create primele?


Lasă un răspuns

Adresa ta de email nu va fi publicată.

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.