Inodes zijn een be­heers­struc­tuur voor be­stands­sys­te­men in Unix-achtige be­stu­rings­sys­te­men. In deze context zijn inodes ge­ge­venshe­a­ders in in­o­de­lijs­ten of andere soort­ge­lij­ke ge­ge­vens­sets die meta­ge­ge­vens over op­ge­sla­gen bestanden bevatten. Deze meta­ge­ge­vens bevatten in­for­ma­tie zoals toe­gangs­rech­ten, op­slag­lo­ca­tie, groepen, ge­brui­kers-ID’s of het tijdstip waarop wij­zi­gin­gen zijn aan­ge­bracht of het bestand is geopend.

Wat is een inode?

Inode is een afkorting van ‘index node’. Het wordt gebruikt als een vorm van be­stands­be­heer dat een be­lang­rij­ke rol heeft gespeeld sinds de in­tro­duc­tie van de Unix-be­stu­rings­sys­te­men en de daarop ge­ba­seer­de be­stu­rings­sys­te­men zoals Linux of macOS. De be­lang­rijk­ste functie van inodes in be­stands­sys­te­men is het verwijzen naar, beheren en lo­ka­li­se­ren van bepaalde bestanden in het systeem door gebruik te maken van unieke en on­ver­an­der­lij­ke inode-nummers. Als ge­de­fi­ni­eer­de ge­ge­vens­struc­tuur be­schrij­ven en beheren inodes spe­ci­fie­ke bestanden met behulp van meta­ge­ge­vens. Het type be­stands­sys­teem bepaalt welke meta­ge­ge­vens worden gebruikt.

Hoewel ze zelf geen in­for­ma­tie over de be­stands­naam bevatten, bevatten inodes over het algemeen de volgende in­for­ma­tie over bestanden en be­stands­blok­ken:

  • Type en toe­gangs­rech­ten
  • Aantal hardlinks
  • Ge­brui­kers-ID (UID)
  • Groeps-ID (GID) of GUI
  • Grootte van het bestand in bytes
  • Datum van de laatste wijziging (mtime)
  • Datum van de laatste sta­tus­wij­zi­ging (ctime)
  • Datum van de laatste toegang (atime)
  • Adres van ge­ge­vens­blok­ken
  • Adres van het indirecte blok
  • Aantal links
  • Ver­sie­num­mer

Hoe werken inodes?

Unix-systemen beheren de sectoren van schijf­par­ti­ties niet met behulp van clus­te­ring, maar gebruiken ge­ge­vens­blok­ken. In te­gen­stel­ling tot DOS-systemen die FAT-tabellen gebruiken, worden inodes gebruikt om de di­rec­to­ry­ge­ge­vens te beheren en te refereren. Als gegevens in vaste ge­ge­vens­blok­ken op de harde schijf worden op­ge­sla­gen, kan dit er snel toe leiden dat het bestand het geheugen van het blok over­schrijdt. Het systeem zoekt dan een ander be­schik­baar blok om de rest van het bestand op te slaan. Hier komen inodes om de hoek kijken.

Inodes zorgen ervoor dat gegevens die in het systeem zijn op­ge­sla­gen, kunnen worden gevonden met behulp van re­fe­ren­tie- en di­rec­to­ry­ge­ge­vens, evenals de inodes en het unieke inode-nummer. Een groot voordeel hiervan is dat ze niet af­han­ke­lijk zijn van de be­stands­naam. Als een bestand wordt ge­ko­pi­eerd en hernoemd, kan het nog steeds worden te­rug­ge­von­den met hetzelfde inode-nummer als het oor­spron­ke­lij­ke bestand. Dit is het geval bij hardlinks, die door ge­brui­kers worden aan­ge­maakt met het Linux-commando in. Deze vorm van interne boek­hou­ding heeft als voordeel dat inodes zowel naar originele bestanden als naar back-ups kunnen verwijzen zonder extra geheugen in beslag te nemen.

Aangezien inodes per systeem ver­schil­lend zijn ingesteld, kan een bestand groter zijn dan de be­schik­ba­re inodes. In dat geval verwijst de oor­spron­ke­lij­ke inode naar een andere inode, ook wel in­di­rec­tie­blok genoemd, die de rest van de meta­ge­ge­vens bevat.

Opmerking

Aangezien u de omvang van de inodes vanaf het begin hebt ingesteld, zijn de be­schik­ba­re inodes in bepaalde om­stan­dig­he­den mogelijk niet voldoende voor een groot aantal bestanden. In dat geval moet het be­stands­sys­teem worden ge­her­struc­tu­reerd met een groter aantal inodes.

Wanneer gebruik je inodes?

Inodes worden gebruikt om be­stands­sys­te­men te beheren en te struc­tu­re­ren en worden zowel in par­ti­cu­lie­re Linux-systemen als in beheerde ser­vi­ce­op­los­sin­gen gebruikt. Ge­brui­kers en bedrijven die op zoek zijn naar cloud­op­los­sin­gen voor servers met Unix-achtige be­stu­rings­sys­te­men hebben toegang tot inode-ge­ge­vens­struc­tu­ren. Zoals bij de meeste cloud­dien­sten en af­han­ke­lijk van het gebruik kunt u kiezen voor een publieke cloud of een private cloud.

Welke be­stands­sys­te­men on­der­steu­nen inodes?

Alle Unix-achtige be­stu­rings­sys­te­men, zoals Linux of MacOS, maken gebruik van inodes. Af­han­ke­lijk van het on­der­steun­de be­stands­sys­teem kunnen de structuur en sa­men­stel­ling van de inodes echter ver­an­de­ren. Hier worden ext2/ext3/ext4-systemen in de vorm van inode-lijsten of -tabellen gebruikt als be­schrij­ven­de ge­ge­venshe­a­ders. De inode-lijst wordt aan­ge­maakt wanneer het systeem wordt opgezet en kan daarna niet meer worden gewijzigd. Bovendien nemen ext4-inodes met 256 bytes ruimte in beslag op de harde schijf en kunnen ze niet op een andere manier worden gebruikt. In dit ge­ge­vens­sys­teem be­schrijft een inode telkens een bestand of een map in het systeem aan de hand van de bij­be­ho­ren­de meta­ge­ge­vens.

Daarnaast zijn er com­plexe­re be­stands­sys­te­men zoals xfs of btrfs, waarin inodes pas worden aan­ge­maakt wanneer ze nodig zijn om bestanden te vinden. In dit geval worden er geen lijsten of tabellen met inodes aan­ge­maakt. Een ander verschil in de werking ervan is te vinden in schijf-inodes en inodes die worden gebruikt om Linux-geheugen te verwerken (in-core inodes).

Overzicht van be­lang­rij­ke inode-commando’s

Aangezien er een limiet is aan het aantal be­schik­ba­re inodes, af­han­ke­lijk van het be­stands­sys­teem, moet u weten hoe u de gebruikte inodes of de door inodes bezette gebieden in het systeem kunt weergeven. Dit is soms nodig als er niet genoeg inodes be­schik­baar zijn in het systeem voor andere bestanden.

Commando om gebruikte gebieden in het be­stands­sys­teem weer te geven

Als u wilt weergeven welke gebieden door inodes in het be­stands­sys­teem worden gebruikt, kunt u de volgende opdracht gebruiken:

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

Commando om een overzicht te krijgen van het huidige gebruik van inodes

Gebruik deze opdracht om de inodes te bekijken die momenteel in het systeem worden gebruikt:

df -ih
shell

Voor een overzicht van het gebruik van inodes, inclusief welk be­stands­sys­teem, het totale aantal inodes, het huidige gebruik en welke inodes worden gebruikt, voert u deze opdracht in:

df -i
shell

Commando om spe­ci­fie­ke inode-nummers weer te geven

Om het spe­ci­fie­ke inode-nummer van een bestand weer te geven, kunt u deze opdracht gebruiken:

ls -i
shell

Commando om alle bestanden van een inode weer te geven

Als u wilt weten naar welke bestanden (inclusief ori­gi­ne­len, kopieën of back-ups) door een inode wordt verwezen, gebruikt u het volgende:

-inum
shell

Tips als inodes over­be­last zijn

Een hoge belasting van inodes betekent niet altijd dat uw geheugen bijna vol is. Soms kan een toe­ge­no­men gebruik van inodes worden verklaard door te kleine hoe­veel­he­den gegevens, zoals tij­de­lij­ke TMP-bestanden, caches of sessies. Het probleem kan meestal worden opgelost door alle bestanden die ouder zijn dan 14 dagen au­to­ma­tisch te ver­wij­de­ren. Hiervoor kunt u een cron-taak uitvoeren met de volgende opdracht:

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

Wat gebeurt er als ik te weinig inodes heb?

Als u niet genoeg inodes hebt voor andere bestanden, kunt u onder bepaalde om­stan­dig­he­den het volgende gaan merken:

  • Ap­pli­ca­ties crashen
  • Gegevens gaan verloren
  • On­ge­plan­de herstarts
  • Processen crashen en starten niet opnieuw op
  • Geplande processen starten niet au­to­ma­tisch

Als uw inode-ca­pa­ci­teit daad­wer­ke­lijk op is, raden we u aan meer vrije ca­pa­ci­teit te creëren. Als al­ter­na­tief kunt u het relatief ar­beids­in­ten­sie­ve proces van het her­struc­tu­re­ren van het be­stands­sys­teem uitvoeren en het maximale aantal inodes verhogen.

Ga naar hoofdmenu