Inodit ovat tie­dos­to­jär­jes­tel­mien hal­lin­ta­ra­ken­ne Unix-tyyp­pi­sis­sä käyt­tö­jär­jes­tel­mis­sä. Tässä yh­tey­des­sä inodit ovat ino­di­lis­tois­sa tai muissa vas­taa­vis­sa tie­to­ko­ko­nai­suuk­sis­sa olevia tie­tuei­den otsikoita, jotka si­säl­tä­vät tal­len­net­tu­jen tie­dos­to­jen me­ta­tie­to­ja. Nämä me­ta­tie­dot si­säl­tä­vät esi­mer­kik­si tietoja käyt­tö­oi­keuk­sis­ta, tal­len­nus­pai­kas­ta, ryhmistä, käyt­tä­jä­tun­nuk­sis­ta sekä muutosten te­koa­jan­koh­dis­ta tai tiedoston käyt­tö­ajan­koh­dis­ta.

Mikä on inodi?

Inode on lyhenne sanoista ”index node”. Sitä käytetään tie­dos­to­jen hallinnan muotona, ja se on ollut tärkeässä roolissa Unix-käyt­tö­jär­jes­tel­mien sekä niihin pe­rus­tu­vien jär­jes­tel­mien, kuten Linuxin tai macOS:n, käyt­töö­no­ton jälkeen. Inodien pää­teh­tä­vä­nä tie­dos­to­jär­jes­tel­mis­sä on viitata tiet­tyi­hin tie­dos­toi­hin, hallita niitä ja paikantaa ne jär­jes­tel­mäs­sä käyt­tä­mäl­lä yk­si­löl­li­siä ja muut­tu­mat­to­mia inode-numeroita. Mää­ri­tel­tyi­nä tie­to­ra­ken­tei­na inodit kuvaavat ja hal­lin­noi­vat tiettyjä tie­dos­to­ja me­ta­tie­to­jen avulla. Tie­dos­to­jär­jes­tel­män tyyppi määrää, mitä me­ta­tie­to­ja käytetään.

Vaikka inodit eivät sisällä itse tiedoston nimeä, ne si­säl­tä­vät yleensä seuraavat tiedot tie­dos­tois­ta ja tie­dos­to­loh­kois­ta:

  • Tie­dos­to­tyyp­pi ja käyt­tö­oi­keu­det
  • Kovien linkkien lukumäärä
  • Käyt­tä­jä­tun­nus (UID)
  • Ryh­mä­tun­nus (GID) tai GUI
  • Tiedoston koko tavuina
  • Viimeisen muutoksen päi­vä­mää­rä (mtime)
  • Viimeisen ti­la­muu­tok­sen päi­vä­mää­rä (ctime)
  • Viimeisen käyt­tö­ker­ran päi­vä­mää­rä (atime)
  • Tie­to­loh­ko­jen osoitteet
  • Vä­li­tys­loh­kon osoite
  • Linkkien lukumäärä
  • Ver­sio­tun­nus

Miten inodit toimivat?

Unix-jär­jes­tel­mät eivät hallinnoi levyosion sek­to­rei­ta klus­te­rei­den avulla, vaan ne käyttävät da­ta­loh­ko­ja. Toisin kuin FAT-tau­lu­koi­ta käyttävät DOS-jär­jes­tel­mät, ha­ke­mis­to­tie­to­jen hal­lin­taan ja viit­taa­mi­seen käytetään inodeja. Jos tiedot tal­len­ne­taan kiin­to­le­vyl­le kiinteinä da­ta­loh­koi­na, tiedosto voi nopeasti kasvaa lohkon ka­pa­si­tee­tin ylit­tä­väk­si. Tällöin jär­jes­tel­mä etsii toisen vapaan lohkon, johon tallentaa tiedoston loppuosan. Tässä vaiheessa inodit astuvat kuvaan.

Inodit var­mis­ta­vat, että jär­jes­tel­mään tal­len­ne­tut tiedot voidaan löytää viite- ja ha­ke­mis­to­tie­to­jen sekä inodien ja yk­si­löl­li­sen ino­di­nu­me­ron avulla. Suuri etu tässä on, että ne eivät ole riip­pu­vai­sia tie­dos­to­ni­mes­tä. Jos tiedosto ko­pioi­daan ja nimetään uudelleen, se voidaan silti löytää uudelleen käyt­tä­mäl­lä samaa inode-numeroa kuin al­ku­pe­räi­ses­sä tie­dos­tos­sa. Näin on esi­mer­kik­si kovien linkkien (hardlinks) kohdalla, joita käyttäjät luovat Linux-ko­men­nol­la in. Tämän sisäisen kir­jan­pi­don muodon etuna on, että inodit voivat viitata sekä al­ku­pe­räi­siin tie­dos­toi­hin että var­muus­ko­pioi­hin ilman, että ne vievät yli­mää­räis­tä muistia.

Koska inodit mää­ri­te­tään jär­jes­tel­mäs­tä riippuen eri tavoin, tiedoston koko voi ylittää käy­tet­tä­vis­sä olevien inodien koon. Tällöin al­ku­pe­räi­nen inodi viittaa toiseen inodiin, jota kutsutaan toisinaan vä­li­tys­loh­kok­si ja joka sisältää loput me­ta­tie­dot.

Huomio

Koska olet mää­rit­tä­nyt inodien määrän alusta alkaen, käy­tet­tä­vis­sä olevat inodit eivät vält­tä­mät­tä riitä suurille tie­dos­to­mää­ril­le tietyissä ti­lan­teis­sa. Tällöin tie­dos­to­jär­jes­tel­mää on laa­jen­net­ta­va li­sää­mäl­lä inodien määrää.

Milloin inodeja käytetään?

Inodeja käytetään tie­dos­to­jär­jes­tel­mien hal­lin­taan ja jä­sen­tä­mi­seen, ja niitä hyö­dyn­ne­tään sekä yk­si­tyi­sis­sä Linux-jär­jes­tel­mis­sä että hal­lin­noi­duis­sa pal­ve­lu­rat­kai­suis­sa. Käyttäjät ja yritykset, jotka etsivät pil­vi­rat­kai­su­ja Unix-tyyp­pi­sil­lä käyt­tö­jär­jes­tel­mil­lä va­rus­te­tuil­le pal­ve­li­mil­le, voivat hyödyntää inode-tie­to­ra­ken­tei­ta. Kuten useimpien pil­vi­pal­ve­lui­den kohdalla, käyt­tö­tar­koi­tuk­ses­ta riippuen va­lit­ta­va­na voi olla joko julkinen tai yk­si­tyi­nen pilvi.

Mitkä tie­dos­to­jär­jes­tel­mät tukevat inodeja?

Kaikki Unix-tyyppiset käyt­tö­jär­jes­tel­mät, kuten Linux tai macOS, käyttävät inodeja. Inodien rakenne ja koostumus voivat kuitenkin vaihdella tuetun tie­dos­to­jär­jes­tel­män mukaan. Ext2-, ext3- ja ext4-jär­jes­tel­mis­sä ino­di­lis­to­ja tai -tau­lu­koi­ta käytetään ku­vai­le­vi­na tie­to­päi­si­nä. Ino­di­luet­te­lo luodaan jär­jes­tel­män asen­nuk­sen yh­tey­des­sä, eikä sitä voi muuttaa myöhemmin. Lisäksi 256 tavun kokoiset ext4-inodit vievät tilaa kiin­to­le­vyl­tä, eikä niitä voi käyttää muuhun tar­koi­tuk­seen. Tässä tie­dos­to­jär­jes­tel­mäs­sä inodi kuvaa kussakin ta­pauk­ses­sa jär­jes­tel­män tiedostoa tai ha­ke­mis­toa käyt­tä­mäl­lä niihin kuuluvia me­ta­tie­to­ja.

Tämän lisäksi on olemassa mo­ni­mut­kai­sem­pia tie­dos­to­jär­jes­tel­miä, kuten xfs tai btrfs, joissa inodit luodaan vasta silloin, kun niitä tarvitaan tie­dos­to­jen et­si­mi­seen. Tällöin inodeja si­säl­tä­viä luet­te­loi­ta tai tau­lu­koi­ta ei luoda. Toinen ero niiden toi­min­ta­ta­vois­sa liittyy levyn inodeihin ja inodeihin, joita käytetään Linux-muistin kä­sit­te­lyyn (in-core-inodit).

Yleis­kat­saus tär­kei­siin inode-ko­men­toi­hin

Koska tie­dos­to­jär­jes­tel­mäs­tä riippuen käy­tet­tä­vis­sä olevien inodien määrä on ra­jal­li­nen, on hyvä tietää, miten jär­jes­tel­mäs­sä käytetyt inodit tai niiden viemä tila voidaan tarkistaa. Tämä on toisinaan tarpeen, jos jär­jes­tel­mäs­sä ei ole tarpeeksi vapaita inodeja uusille tie­dos­toil­le.

Komento tie­dos­to­jär­jes­tel­män käy­tet­ty­jen alueiden näyt­tä­mi­sek­si

Jos haluat tar­kas­tel­la, mitä alueita tie­dos­to­jär­jes­tel­män inodit käyttävät, voit käyttää seuraavaa komentoa:

~ find /home /tmp -xdev -printf ´%h \n´ | sort | uniq -c | sort -k 1 -nr | head -n 20
shell

Komento, jolla saa yleis­ku­van ny­kyi­ses­tä inode-käytöstä

Voit tarkistaa jär­jes­tel­mäs­sä tällä hetkellä käytössä olevat inodit tällä ko­men­nol­la:

df -ih
shell

Jos haluat yleis­kat­sauk­sen inodien käytöstä, mukaan lukien tie­dos­to­jär­jes­tel­män, inodien ko­ko­nais­mää­rän, nykyisen käytön ja käytössä olevat inodit, kirjoita tämä komento:

df -i
shell

Komento tiettyjen inode-nu­me­roi­den näyt­tä­mi­sek­si

Voit näyttää tiedoston tarkka inode-numeron tällä ko­men­nol­la:

ls -i
shell

Komento, jolla näytetään inodin kaikki tiedostot

Jos haluat selvittää, mihin tie­dos­toi­hin (mukaan lukien al­ku­pe­räi­set tiedostot, kopiot tai var­muus­ko­piot) tietty inode viittaa, toimi seu­raa­vas­ti:

-inum
shell

Vinkkejä, jos inode-tila on täynnä

Inodien suuri kuormitus ei aina tarkoita, että muisti on lop­pu­mas­sa. Joskus inodien käytön kasvu johtuu liian pienistä da­ta­mää­ris­tä, kuten vä­liai­kai­sis­ta TMP-tie­dos­tois­ta, vä­li­muis­teis­ta tai is­tun­nois­ta. Ongelma voidaan yleensä ratkaista pois­ta­mal­la au­to­maat­ti­ses­ti kaikki yli 14 päivää vanhat tiedostot. Tätä varten voit suorittaa cron-tehtävän seu­raa­val­la ko­men­nol­la:

03 *** /usr/bin/find /path/to/files/* -type f – mtime +14 -delete > /dev/null 2>&1
shell

Mitä tapahtuu, jos minulla on liian vähän inodeja?

Jos sinulla ei ole tarpeeksi inodeja muille tie­dos­toil­le, saatat tietyissä ti­lan­teis­sa huomata seuraavia ilmiöitä:

  • So­vel­luk­set kaatuvat
  • Tiedot katoavat
  • Odot­ta­mat­to­mat uu­del­leen­käyn­nis­tyk­set
  • Prosessit kaatuvat eivätkä käynnisty uudelleen
  • Suun­ni­tel­lut prosessit eivät käynnisty au­to­maat­ti­ses­ti

Jos inodien ka­pa­si­teet­ti on todella täyttynyt, suo­sit­te­lem­me, että vapautat lisää tilaa. Vaih­toeh­toi­ses­ti voit ryhtyä suh­teel­li­sen työ­lää­seen pro­ses­siin, jossa tie­dos­to­jär­jes­tel­mä jär­jes­tel­lään uudelleen ja inodien enim­mäis­mää­rää lisätään.

Siirry pää­va­lik­koon