Hvad er en inode? En forklaring på dens funktion og anvendelse
Inoder er en struktur til administration af filsystemer i Unix-lignende operativsystemer. I denne sammenhæng er inoder datahovedet i inodelister eller andre lignende datasæt, der indeholder metadata om gemte filer. Disse metadata indeholder oplysninger såsom adgangsrettigheder, gemmested, grupper, bruger-id’er samt tidspunktet for ændringer eller adgang til filen.
Hvad er en inode?
Inode er en forkortelse for »index node«. Det anvendes som en form for filhåndtering, der har spillet en vigtig rolle siden indførelsen af Unix-operativsystemerne og de systemer, der er baseret på disse, såsom Linux eller macOS. Inodes’ hovedfunktion i filsystemer er at henvise til, administrere og lokalisere bestemte filer i systemet ved hjælp af unikke og uforanderlige inode-numre. Som en defineret datastruktur beskriver og administrerer inodes specifikke filer ved hjælp af metadata. Filsystemets type bestemmer, hvilke metadata der anvendes.
Selvom inoder ikke indeholder oplysninger om selve filnavnet, indeholder de generelt følgende oplysninger om filer og filblokke:
- Type og adgangsrettigheder
- Antal hardlinks
- Bruger-ID (UID)
- Gruppe-ID (GID) eller GUI
- Filens størrelse i byte
- Dato for sidste ændring (mtime)
- Dato for sidste statusændring (ctime)
- Dato for sidste adgang (atime)
- Adresse på datablokke
- Indirektionsblokkens adresse
- Antal links
- Versionsnummer
Hvordan fungerer inoder?
Unix-systemer administrerer ikke sektorerne i en diskpartition ved hjælp af klynger, men bruger i stedet datablokke. I modsætning til DOS-systemer, der bruger FAT-tabeller, anvendes inoder til at administrere og henvise til katalogdataene. Hvis data lagres på harddisken i faste datablokke, kan det hurtigt føre til, at filen overskrider blokkens kapacitet. Systemet finder derefter en anden ledig blok, hvor resten af filen kan gemmes. Det er her, inoder kommer ind i billedet.
Inoder sikrer, at data, der er gemt i systemet, kan findes ved hjælp af reference- og katalogdata samt inoder og det unikke inodenummer. En stor fordel her er, at de ikke er afhængige af filnavnet. Hvis en fil kopieres og omdøbes, kan den stadig findes igen ved hjælp af det samme inode-nummer som den oprindelige fil. Dette er tilfældet med hardlinks, som oprettes af brugere med kommandoen ln i Linux. Denne form for intern bogføring har den fordel, at inodes kan henvise til både originale filer og sikkerhedskopier uden at optage mere hukommelse.
Da inoder er konfigureret forskelligt afhængigt af systemet, kan en fil overstige størrelsen på de tilgængelige inoder. I dette tilfælde henviser den oprindelige inode til en anden inode, som undertiden kaldes en indirekte blok, og som indeholder resten af metadataene.
Da du fra starten har fastsat antallet af inoder, kan det under visse omstændigheder ske, at det tilgængelige antal ikke er tilstrækkeligt til et stort antal filer. I så fald skal filsystemet omstruktureres, så det rummer et større antal inoder.
Hvornår bruger man inodes?
Inoder bruges til at administrere og strukturere filsystemer og anvendes både i private Linux-systemer og i administrerede serviceløsninger. Brugere og virksomheder, der søger cloud-løsninger til servere med Unix-lignende operativsystemer, har adgang til inode-datastrukturer. Som med de fleste cloud-tjenester kan man, afhængigt af anvendelsen, vælge mellem en offentlig cloud og en privat cloud.
Hvilke filsystemer understøtter inoder?
Alle Unix-lignende operativsystemer, såsom Linux eller macOS, bruger inoder. Afhængigt af det understøttede filsystem kan inodernes struktur og sammensætning dog variere. Her anvendes ext2/ext3/ext4-systemer i form af inodelister eller -tabeller som beskrivende datahoveder. Inodelisten oprettes, når systemet konfigureres, og kan ikke ændres efterfølgende. Derudover optager ext4-inoder med 256 byte plads på harddisken, og de kan ikke bruges på anden måde. I dette datasystem beskriver en inode i hvert tilfælde en fil eller et bibliotek i systemet ved hjælp af de metadata, der hører til dem.
Derudover findes der mere komplekse filsystemer som f.eks. XFS eller Btrfs, hvor inoder først oprettes, når der er brug for dem til at finde filer. I dette tilfælde oprettes der ingen lister eller tabeller, der indeholder inoder. En anden forskel i deres funktionsmåde ligger i skellet mellem disk-inoder og inoder, der bruges til at håndtere Linux-hukommelsen (in-core-inoder).
Oversigt over vigtige inode-kommandoer
Da der er en begrænsning på antallet af tilgængelige inoder, afhængigt af filsystemet, er det vigtigt at vide, hvordan man viser de anvendte inoder eller den plads, som inoder optager i systemet. Dette kan være nødvendigt, hvis der ikke er nok inoder til rådighed i systemet til andre filer.
Kommando til at vise anvendte områder i filsystemet
Hvis du vil se, hvilke områder der bruges af inoder i filsystemet, kan du bruge følgende kommando:
~ find /home /tmp -xdev -printf ´%h \n´ | sort | uniq -c | sort -k 1 -nr | head -n 20shellKommando til at få et overblik over den aktuelle brug af inoder
Brug denne kommando for at se de inoder, der i øjeblikket er i brug i systemet:
df -ihshellFor at få et overblik over brugen af inoder, herunder hvilket filsystem der er tale om, det samlede antal inoder, den aktuelle brug og hvilke inoder der er i brug, skal du indtaste denne kommando:
df -ishellKommando til visning af bestemte inode-numre
For at få vist et fils specifikke inode-nummer kan du bruge denne kommando:
ls -ishellKommando til at vise alle filer tilhørende en inode
Hvis du vil vide, hvilke filer (herunder originaler, kopier eller sikkerhedskopier) der henvises til af en inode, skal du bruge følgende:
-inumshellTips, hvis inodes er overbelastede
En høj belastning på inodes betyder ikke altid, at din hukommelse er ved at løbe tør. Nogle gange kan den øgede brug af inodes skyldes meget små datamængder, såsom midlertidige TMP-filer, cacher eller sessioner. Problemet kan normalt løses ved automatisk at slette alle filer, der er mere end 14 dage gamle. For at gøre dette kan du køre et cron-job med følgende kommando:
03 *** /usr/bin/find /path/to/files/* -type f – mtime +14 -delete > /dev/null 2>&1shellHvad sker der, hvis jeg har for få inoder?
Hvis du ikke har nok inoder til andre filer, kan du under visse omstændigheder begynde at opleve nogle af følgende problemer:
- Programmer går ned
- Data går tabt
- Uplanlagte genstarter
- Processer går ned og genstarter ikke
- Planlagte processer starter ikke automatisk
Hvis din inode-kapacitet faktisk er opbrugt, anbefaler vi, at du frigør mere plads. Alternativt kan du gennemføre den relativt tidskrævende proces med at omstrukturere filsystemet og øge det maksimale antal inoder.