Kaj je inod? Razlaga njegove funkcije in uporabe
Inodi so struktura za upravljanje datotečnih sistemov v operacijskih sistemih tipa Unix. V tem kontekstu so inodi podatkovni glavi v seznamih inodov ali drugih podobnih zbirkah podatkov, ki vsebujejo metapodatke o shranjenih datotekah. Ti metapodatki vsebujejo informacije, kot so pravice dostopa, mesto shranjevanja, skupine, uporabniške identifikacijske številke ter čas, ko so bile izvedene spremembe ali ko je bil dostop do datoteke.
Kaj je inod?
Inode je okrajšava za »index node« (indeksni vozlišče). Uporablja se kot oblika upravljanja datotek, ki ima pomembno vlogo že od uvedbe operacijskih sistemov Unix in tistih, ki temeljijo na njem, kot sta Linux ali macOS. Glavna naloga inodov v datotečnih sistemih je sklicevanje na določene datoteke v sistemu , njihovo upravljanje in iskanje z uporabo edinstvenih in nespremenljivih številk inodov. Ker gre za opredeljeno podatkovno strukturo, inodi opisujejo in upravljajo posamezne datoteke s pomočjo metapodatkov. Vrsta datotečnega sistema določa, kateri metapodatki se uporabljajo.
Čeprav inodi sami po sebi ne vsebujejo podatkov o imenu datoteke, na splošno vsebujejo naslednje podatke o datotekah in datotečnih blokih:
- Vrsta in dostopne pravice
- Število trdih povezav
- ID uporabnika (UID)
- ID skupine (GID) ali GUI
- Velikost datoteke v bajtih
- Datum zadnje spremembe (mtime)
- Datum zadnje spremembe statusa (ctime)
- Datum zadnjega dostopa (atime)
- Naslov podatkovnih blokov
- Naslov posrednega bloka
- Število povezav
- Številka različice
Kako delujejo inodi?
Unix sistemi ne upravljajo sektorjev diskovnih particij s pomočjo združevanja v skupine, temveč uporabljajo podatkovne bloke. Za razliko od sistemov DOS, ki uporabljajo tabele FAT, se za upravljanje in sklicevanje na podatke v imenikih uporabljajo inodi. Če so podatki na trdem disku shranjeni v določenih podatkovnih blokih, lahko hitro pride do tega, da datoteka preseže velikost bloka. Sistem nato poišče drug razpoložljiv blok, v katerega shrani preostanek datoteke. Tu pridejo v igro inodi.
Inodi zagotavljajo, da je mogoče podatke, shranjene v sistemu, najti s pomočjo referenčnih in imeniških podatkov ter inodov in njihove edinstvene številke. Velika prednost tega je, da se ne zanašajo na ime datoteke. Če se datoteka kopira in preimenuje, jo je še vedno mogoče najti z isto številko inoda kot pri izvirni datoteki. Tako je v primeru trdih povezav, ki jih ustvarijo uporabniki z ukazom Linux in. Ta oblika notranjega vodenja evidence ima to prednost, da inodi lahko vodijo tako do izvirnih datotek kot do varnostnih kopij, ne da bi zasedali več pomnilnika.
Ker so inodi v različnih sistemih nastavljeni različno, lahko datoteka presega velikost razpoložljivih inodov. V tem primeru prvotni inod napotuje na drug inod, ki se včasih imenuje blok posredovanja in vsebuje preostale metapodatke.
Ker ste obseg inodov določili že na začetku, se lahko v nekaterih okoliščinah zgodi, da razpoložljivih inodov ne bo dovolj za veliko število datotek. V tem primeru bo treba datotečni sistem preurediti tako, da bo vseboval večje število inodov.
Kdaj se uporabljajo inodi?
Inodi se uporabljajo za upravljanje in strukturiranje datotečnih sistemov ter se uporabljajo tako v zasebnih sistemih Linux kot tudi v rešitvah za upravljane storitve. Uporabniki in podjetja, ki iščejo rešitve v oblaku za strežnike z operacijskimi sistemi tipa Unix, imajo dostop do podatkovnih struktur inodov. Kot pri večini storitev v oblaku in odvisno od namena uporabe lahko izberete javni ali zasebni oblak.
Kateri datotečni sistemi podpirajo inode?
Vsi unixovski operacijski sistemi, kot sta Linux ali macOS, uporabljajo inode. Vendar se lahko struktura in sestava inodov spreminjata glede na podprti datotečni sistem. Pri sistemih ext2/ext3/ext4 se v obliki seznamov ali tabel inodov uporabljajo kot opisni podatkovni glavi. Seznam inodov se ustvari ob nastavitvi sistema in ga kasneje ni mogoče spremeniti. Poleg tega inodi ext4 z 256 bajti zasedajo trdi disk in jih ni mogoče uporabiti na noben drug način. V tem podatkovnem sistemu inod v vsakem primeru opisuje datoteko ali imenik v sistemu z uporabo metapodatkov, ki jim pripadajo.
Poleg tega obstajajo tudi bolj zapleteni datotečni sistemi, kot sta xfs ali btrfs, v katerih se inodi ustvarijo šele takrat, ko so potrebni za iskanje datotek. V tem primeru se ne ustvarjajo nobeni seznami ali tabele, ki bi vsebovale inode. Druga razlika v njihovem delovanju je v razliki med inodi na disku in inodi, ki se uporabljajo za obdelavo pomnilnika v sistemu Linux (in-core inodi).
Pregled pomembnih ukazov za inode
Ker je število razpoložljivih inodov odvisno od datotečnega sistema, morate vedeti, kako prikazati število porabljenih inodov ali prostora, ki ga ti zasedajo v sistemu. To je včasih potrebno, če v sistemu ni dovolj inodov za nove datoteke.
Ukaz za prikaz zasedenih področij v datotečnem sistemu
Če želite prikazati, kateri prostori v datotečnem sistemu so zasedeni z inodi, lahko uporabite naslednji ukaz:
~ find /home /tmp -xdev -printf ´%h \n´ | sort | uniq -c | sort -k 1 -nr | head -n 20shellUkaz za prikaz pregleda trenutne porabe inodov
Če želite videti inode, ki se trenutno uporabljajo v sistemu, uporabite ta ukaz:
df -ihshellČe želite pridobiti pregled nad porabo inodov, vključno s podatki o datotečnem sistemu, skupnem številu inodov, trenutni porabi in o tem, kateri inodi so v uporabi, vnesite naslednji ukaz:
df -ishellUkaz za prikaz določenih številk inodov
Če želite prikazati natančno številko inoda datoteke, lahko uporabite ta ukaz:
ls -ishellUkaz za prikaz vseh datotek v inodu
Če želite vedeti, na katere datoteke (vključno z izvirniki, kopijami ali varnostnimi kopijami) se nanaša inod, uporabite naslednje:
-inumshellNasveti v primeru preobremenjenosti inodov
Visoka obremenitev inodov ne pomeni nujno, da vam zmanjkuje pomnilnika. Včasih je povečano število inodov posledica preveč majhnih količin podatkov, kot so začasne datoteke v mapi TMP, predpomnilniki ali sejne datoteke. Težavo je običajno mogoče rešiti z avtomatskim brisanjem vseh datotek, starejših od 14 dni. Za to lahko izvedete cron nalogo z naslednjim ukazom:
03 *** /usr/bin/find /path/to/files/* -type f – mtime +14 -delete > /dev/null 2>&1shellKaj se zgodi, če imam premalo inodov?
Če nimate dovolj inodov za druge datoteke, boste v določenih okoliščinah morda opazili naslednje:
- Aplikacije se sesujejo
- Izguba podatkov
- Nenačrtovani ponovni zagoni
- Procesi se sesujejo in se ne ponovno zaženejo
- Načrtovani procesi se ne zaženejo samodejno
Če je vaša zmogljivost inodov dejansko izčrpana, vam priporočamo, da ustvarite več prostega prostora. Alternativno lahko izvedete razmeroma zamuden postopek prestrukturiranja datotečnega sistema in povečate največje število inodov.