Wat is een inode? Uitleg over de functie en het gebruik ervan
Inodes zijn een beheersstructuur voor bestandssystemen in Unix-achtige besturingssystemen. In deze context zijn inodes gegevensheaders in inodelijsten of andere soortgelijke gegevenssets die metagegevens over opgeslagen bestanden bevatten. Deze metagegevens bevatten informatie zoals toegangsrechten, opslaglocatie, groepen, gebruikers-ID’s of het tijdstip waarop wijzigingen zijn aangebracht of het bestand is geopend.
Wat is een inode?
Inode is een afkorting van ‘index node’. Het wordt gebruikt als een vorm van bestandsbeheer dat een belangrijke rol heeft gespeeld sinds de introductie van de Unix-besturingssystemen en de daarop gebaseerde besturingssystemen zoals Linux of macOS. De belangrijkste functie van inodes in bestandssystemen is het verwijzen naar, beheren en lokaliseren van bepaalde bestanden in het systeem door gebruik te maken van unieke en onveranderlijke inode-nummers. Als gedefinieerde gegevensstructuur beschrijven en beheren inodes specifieke bestanden met behulp van metagegevens. Het type bestandssysteem bepaalt welke metagegevens worden gebruikt.
Hoewel ze zelf geen informatie over de bestandsnaam bevatten, bevatten inodes over het algemeen de volgende informatie over bestanden en bestandsblokken:
- Type en toegangsrechten
- Aantal hardlinks
- Gebruikers-ID (UID)
- Groeps-ID (GID) of GUI
- Grootte van het bestand in bytes
- Datum van de laatste wijziging (mtime)
- Datum van de laatste statuswijziging (ctime)
- Datum van de laatste toegang (atime)
- Adres van gegevensblokken
- Adres van het indirecte blok
- Aantal links
- Versienummer
Hoe werken inodes?
Unix-systemen beheren de sectoren van schijfpartities niet met behulp van clustering, maar gebruiken gegevensblokken. In tegenstelling tot DOS-systemen die FAT-tabellen gebruiken, worden inodes gebruikt om de directorygegevens te beheren en te refereren. Als gegevens in vaste gegevensblokken op de harde schijf worden opgeslagen, kan dit er snel toe leiden dat het bestand het geheugen van het blok overschrijdt. Het systeem zoekt dan een ander beschikbaar 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 opgeslagen, kunnen worden gevonden met behulp van referentie- en directorygegevens, evenals de inodes en het unieke inode-nummer. Een groot voordeel hiervan is dat ze niet afhankelijk zijn van de bestandsnaam. Als een bestand wordt gekopieerd en hernoemd, kan het nog steeds worden teruggevonden met hetzelfde inode-nummer als het oorspronkelijke bestand. Dit is het geval bij hardlinks, die door gebruikers worden aangemaakt met het Linux-commando in. Deze vorm van interne boekhouding 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 verschillend zijn ingesteld, kan een bestand groter zijn dan de beschikbare inodes. In dat geval verwijst de oorspronkelijke inode naar een andere inode, ook wel indirectieblok genoemd, die de rest van de metagegevens bevat.
Aangezien u de omvang van de inodes vanaf het begin hebt ingesteld, zijn de beschikbare inodes in bepaalde omstandigheden mogelijk niet voldoende voor een groot aantal bestanden. In dat geval moet het bestandssysteem worden geherstructureerd met een groter aantal inodes.
Wanneer gebruik je inodes?
Inodes worden gebruikt om bestandssystemen te beheren en te structureren en worden zowel in particuliere Linux-systemen als in beheerde serviceoplossingen gebruikt. Gebruikers en bedrijven die op zoek zijn naar cloudoplossingen voor servers met Unix-achtige besturingssystemen hebben toegang tot inode-gegevensstructuren. Zoals bij de meeste clouddiensten en afhankelijk van het gebruik kunt u kiezen voor een publieke cloud of een private cloud.
Welke bestandssystemen ondersteunen inodes?
Alle Unix-achtige besturingssystemen, zoals Linux of MacOS, maken gebruik van inodes. Afhankelijk van het ondersteunde bestandssysteem kunnen de structuur en samenstelling van de inodes echter veranderen. Hier worden ext2/ext3/ext4-systemen in de vorm van inode-lijsten of -tabellen gebruikt als beschrijvende gegevensheaders. De inode-lijst wordt aangemaakt 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 gegevenssysteem beschrijft een inode telkens een bestand of een map in het systeem aan de hand van de bijbehorende metagegevens.
Daarnaast zijn er complexere bestandssystemen zoals xfs of btrfs, waarin inodes pas worden aangemaakt wanneer ze nodig zijn om bestanden te vinden. In dit geval worden er geen lijsten of tabellen met inodes aangemaakt. 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 belangrijke inode-commando’s
Aangezien er een limiet is aan het aantal beschikbare inodes, afhankelijk van het bestandssysteem, 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 beschikbaar zijn in het systeem voor andere bestanden.
Commando om gebruikte gebieden in het bestandssysteem weer te geven
Als u wilt weergeven welke gebieden door inodes in het bestandssysteem worden gebruikt, kunt u de volgende opdracht gebruiken:
~ find /home /tmp -xdev -printf ´%h \n´ | sort | uniq -c | sort -k 1 -nr | head -n 20shellCommando 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 -ihshellVoor een overzicht van het gebruik van inodes, inclusief welk bestandssysteem, het totale aantal inodes, het huidige gebruik en welke inodes worden gebruikt, voert u deze opdracht in:
df -ishellCommando om specifieke inode-nummers weer te geven
Om het specifieke inode-nummer van een bestand weer te geven, kunt u deze opdracht gebruiken:
ls -ishellCommando om alle bestanden van een inode weer te geven
Als u wilt weten naar welke bestanden (inclusief originelen, kopieën of back-ups) door een inode wordt verwezen, gebruikt u het volgende:
-inumshellTips als inodes overbelast zijn
Een hoge belasting van inodes betekent niet altijd dat uw geheugen bijna vol is. Soms kan een toegenomen gebruik van inodes worden verklaard door te kleine hoeveelheden gegevens, zoals tijdelijke TMP-bestanden, caches of sessies. Het probleem kan meestal worden opgelost door alle bestanden die ouder zijn dan 14 dagen automatisch te verwijderen. 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>&1shellWat gebeurt er als ik te weinig inodes heb?
Als u niet genoeg inodes hebt voor andere bestanden, kunt u onder bepaalde omstandigheden het volgende gaan merken:
- Applicaties crashen
- Gegevens gaan verloren
- Ongeplande herstarts
- Processen crashen en starten niet opnieuw op
- Geplande processen starten niet automatisch
Als uw inode-capaciteit daadwerkelijk op is, raden we u aan meer vrije capaciteit te creëren. Als alternatief kunt u het relatief arbeidsintensieve proces van het herstructureren van het bestandssysteem uitvoeren en het maximale aantal inodes verhogen.