Mikä on inodi? Sen toiminta ja käyttö selitettynä
Inodit ovat tiedostojärjestelmien hallintarakenne Unix-tyyppisissä käyttöjärjestelmissä. Tässä yhteydessä inodit ovat inodilistoissa tai muissa vastaavissa tietokokonaisuuksissa olevia tietueiden otsikoita, jotka sisältävät tallennettujen tiedostojen metatietoja. Nämä metatiedot sisältävät esimerkiksi tietoja käyttöoikeuksista, tallennuspaikasta, ryhmistä, käyttäjätunnuksista sekä muutosten tekoajankohdista tai tiedoston käyttöajankohdista.
Mikä on inodi?
Inode on lyhenne sanoista ”index node”. Sitä käytetään tiedostojen hallinnan muotona, ja se on ollut tärkeässä roolissa Unix-käyttöjärjestelmien sekä niihin perustuvien järjestelmien, kuten Linuxin tai macOS:n, käyttöönoton jälkeen. Inodien päätehtävänä tiedostojärjestelmissä on viitata tiettyihin tiedostoihin, hallita niitä ja paikantaa ne järjestelmässä käyttämällä yksilöllisiä ja muuttumattomia inode-numeroita. Määriteltyinä tietorakenteina inodit kuvaavat ja hallinnoivat tiettyjä tiedostoja metatietojen avulla. Tiedostojärjestelmän tyyppi määrää, mitä metatietoja käytetään.
Vaikka inodit eivät sisällä itse tiedoston nimeä, ne sisältävät yleensä seuraavat tiedot tiedostoista ja tiedostolohkoista:
- Tiedostotyyppi ja käyttöoikeudet
- Kovien linkkien lukumäärä
- Käyttäjätunnus (UID)
- Ryhmätunnus (GID) tai GUI
- Tiedoston koko tavuina
- Viimeisen muutoksen päivämäärä (mtime)
- Viimeisen tilamuutoksen päivämäärä (ctime)
- Viimeisen käyttökerran päivämäärä (atime)
- Tietolohkojen osoitteet
- Välityslohkon osoite
- Linkkien lukumäärä
- Versiotunnus
Miten inodit toimivat?
Unix-järjestelmät eivät hallinnoi levyosion sektoreita klustereiden avulla, vaan ne käyttävät datalohkoja. Toisin kuin FAT-taulukoita käyttävät DOS-järjestelmät, hakemistotietojen hallintaan ja viittaamiseen käytetään inodeja. Jos tiedot tallennetaan kiintolevylle kiinteinä datalohkoina, tiedosto voi nopeasti kasvaa lohkon kapasiteetin ylittäväksi. Tällöin järjestelmä etsii toisen vapaan lohkon, johon tallentaa tiedoston loppuosan. Tässä vaiheessa inodit astuvat kuvaan.
Inodit varmistavat, että järjestelmään tallennetut tiedot voidaan löytää viite- ja hakemistotietojen sekä inodien ja yksilöllisen inodinumeron avulla. Suuri etu tässä on, että ne eivät ole riippuvaisia tiedostonimestä. Jos tiedosto kopioidaan ja nimetään uudelleen, se voidaan silti löytää uudelleen käyttämällä samaa inode-numeroa kuin alkuperäisessä tiedostossa. Näin on esimerkiksi kovien linkkien (hardlinks) kohdalla, joita käyttäjät luovat Linux-komennolla in. Tämän sisäisen kirjanpidon muodon etuna on, että inodit voivat viitata sekä alkuperäisiin tiedostoihin että varmuuskopioihin ilman, että ne vievät ylimääräistä muistia.
Koska inodit määritetään järjestelmästä riippuen eri tavoin, tiedoston koko voi ylittää käytettävissä olevien inodien koon. Tällöin alkuperäinen inodi viittaa toiseen inodiin, jota kutsutaan toisinaan välityslohkoksi ja joka sisältää loput metatiedot.
Koska olet määrittänyt inodien määrän alusta alkaen, käytettävissä olevat inodit eivät välttämättä riitä suurille tiedostomäärille tietyissä tilanteissa. Tällöin tiedostojärjestelmää on laajennettava lisäämällä inodien määrää.
Milloin inodeja käytetään?
Inodeja käytetään tiedostojärjestelmien hallintaan ja jäsentämiseen, ja niitä hyödynnetään sekä yksityisissä Linux-järjestelmissä että hallinnoiduissa palveluratkaisuissa. Käyttäjät ja yritykset, jotka etsivät pilviratkaisuja Unix-tyyppisillä käyttöjärjestelmillä varustetuille palvelimille, voivat hyödyntää inode-tietorakenteita. Kuten useimpien pilvipalveluiden kohdalla, käyttötarkoituksesta riippuen valittavana voi olla joko julkinen tai yksityinen pilvi.
Mitkä tiedostojärjestelmät tukevat inodeja?
Kaikki Unix-tyyppiset käyttöjärjestelmät, kuten Linux tai macOS, käyttävät inodeja. Inodien rakenne ja koostumus voivat kuitenkin vaihdella tuetun tiedostojärjestelmän mukaan. Ext2-, ext3- ja ext4-järjestelmissä inodilistoja tai -taulukoita käytetään kuvailevina tietopäisinä. Inodiluettelo luodaan järjestelmän asennuksen yhteydessä, eikä sitä voi muuttaa myöhemmin. Lisäksi 256 tavun kokoiset ext4-inodit vievät tilaa kiintolevyltä, eikä niitä voi käyttää muuhun tarkoitukseen. Tässä tiedostojärjestelmässä inodi kuvaa kussakin tapauksessa järjestelmän tiedostoa tai hakemistoa käyttämällä niihin kuuluvia metatietoja.
Tämän lisäksi on olemassa monimutkaisempia tiedostojärjestelmiä, kuten xfs tai btrfs, joissa inodit luodaan vasta silloin, kun niitä tarvitaan tiedostojen etsimiseen. Tällöin inodeja sisältäviä luetteloita tai taulukoita ei luoda. Toinen ero niiden toimintatavoissa liittyy levyn inodeihin ja inodeihin, joita käytetään Linux-muistin käsittelyyn (in-core-inodit).
Yleiskatsaus tärkeisiin inode-komentoihin
Koska tiedostojärjestelmästä riippuen käytettävissä olevien inodien määrä on rajallinen, on hyvä tietää, miten järjestelmässä käytetyt inodit tai niiden viemä tila voidaan tarkistaa. Tämä on toisinaan tarpeen, jos järjestelmässä ei ole tarpeeksi vapaita inodeja uusille tiedostoille.
Komento tiedostojärjestelmän käytettyjen alueiden näyttämiseksi
Jos haluat tarkastella, mitä alueita tiedostojärjestelmä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 20shellKomento, jolla saa yleiskuvan nykyisestä inode-käytöstä
Voit tarkistaa järjestelmässä tällä hetkellä käytössä olevat inodit tällä komennolla:
df -ihshellJos haluat yleiskatsauksen inodien käytöstä, mukaan lukien tiedostojärjestelmän, inodien kokonaismäärän, nykyisen käytön ja käytössä olevat inodit, kirjoita tämä komento:
df -ishellKomento tiettyjen inode-numeroiden näyttämiseksi
Voit näyttää tiedoston tarkka inode-numeron tällä komennolla:
ls -ishellKomento, jolla näytetään inodin kaikki tiedostot
Jos haluat selvittää, mihin tiedostoihin (mukaan lukien alkuperäiset tiedostot, kopiot tai varmuuskopiot) tietty inode viittaa, toimi seuraavasti:
-inumshellVinkkejä, jos inode-tila on täynnä
Inodien suuri kuormitus ei aina tarkoita, että muisti on loppumassa. Joskus inodien käytön kasvu johtuu liian pienistä datamääristä, kuten väliaikaisista TMP-tiedostoista, välimuisteista tai istunnoista. Ongelma voidaan yleensä ratkaista poistamalla automaattisesti kaikki yli 14 päivää vanhat tiedostot. Tätä varten voit suorittaa cron-tehtävän seuraavalla komennolla:
03 *** /usr/bin/find /path/to/files/* -type f – mtime +14 -delete > /dev/null 2>&1shellMitä tapahtuu, jos minulla on liian vähän inodeja?
Jos sinulla ei ole tarpeeksi inodeja muille tiedostoille, saatat tietyissä tilanteissa huomata seuraavia ilmiöitä:
- Sovellukset kaatuvat
- Tiedot katoavat
- Odottamattomat uudelleenkäynnistykset
- Prosessit kaatuvat eivätkä käynnisty uudelleen
- Suunnitellut prosessit eivät käynnisty automaattisesti
Jos inodien kapasiteetti on todella täyttynyt, suosittelemme, että vapautat lisää tilaa. Vaihtoehtoisesti voit ryhtyä suhteellisen työlääseen prosessiin, jossa tiedostojärjestelmä järjestellään uudelleen ja inodien enimmäismäärää lisätään.