Articles

Detaljert Forståelse Av Linux Inoder Med Eksempel

Linux Og Andre Unix-lignende Operativsystemer opprettholder konsistens ved å behandle alt som en fil (selv maskinvareenhetene). Tastaturet, musen, skrivere, skjerm, harddisk, prosesser, selv katalogene behandles som filer I Linux. De vanlige filene inneholder data som tekst (tekstfiler), musikk, videoer (multimediefiler), etc.

Annet enn vanlige data, er det noen andre data om disse filene, for eksempel deres størrelse,eierskap, tillatelser, tidsstempel etc. Denne metadataen om en fil administreres med en datastruktur kjent som en inode (indeksnode).

Hva er en Inode I Linux?

Hver Linux-fil eller katalog (fra et teknisk synspunkt, det er ingen reell forskjell mellom dem) har en inode, og denne inoden inneholder alle filens metadata (dvs.alle administrative data som trengs for å lese en fil er lagret i sin inode).inoden inneholder for eksempel en liste over alle blokkene der en fil er lagret, eierinformasjonen for den filen, tillatelser og alle andre attributter som er angitt for filen.

inode grenser er per filsystem og avgjøres på filsystem opprettelsestid. Maksimal katalogstørrelse avhengig av filsystemet og dermed den nøyaktige grensen varierer.

for bedre ytelse gjør katalogene mindre ved å sortere filer i underkataloger i stedet for å ha en stor katalog.

Hva er et inodenummer?

Inodenummer er også kjent som indeksnummer. En inode er et unikt nummer tildelt filer og kataloger mens den er opprettet. Inodenummeret vil være unikt for hele filsystemet.en inode er en datastruktur på et Tradisjonelt Unix-filsystem som ext3 eller ext4. lagre egenskapene til en fil og kataloger.

Linux utvidede filsystemer som ext3 eller ext4 opprettholder en rekke av disse inodene kalt inodetabellen. Denne tabellen inneholder liste over alle filer i det filsystemet. De enkelte inodene i inodetabellen har et unikt nummer (unikt for det filsystemet) kalt inodenummeret.

følgende informasjon er lagret i inode:

  • Filtype: vanlig fil, katalog, rør etc.
  • Tillatelser til den filen: lese, skrive, kjøre
  • Link count: antall hard link i forhold til en inode
  • Bruker-ID: eier av filen
  • Gruppe ID: gruppe eier
  • Filstørrelse: eller større/mindre tall i tilfelle noen spesielle filer
  • tidsstempel: tilgangstid, modifikasjonstid og (inode) endringstid
  • Attributter: uforanderlig’ For eksempel
  • Tilgangskontrollliste: tillatelser for spesielle brukere/grupper
  • link til filens plassering
  • andre metadata om filen

merk at inoden ikke lagrer NAVNET på FILEN, men bare INNHOLDET.

Diagram av inode datastruktur

hvordan sjekke inode I Linux

Hvis du vil se på inoder, på et hvilket som helst ext-filsystem kan du kan bruke under kommandoer for å sjekke egenskapene til filsystemet og filene som brukes i den.

A. Vis fildatainformasjon

du kan vise inodedataene på en fil eller katalog ved hjelp av stat-kommandoen.

du må angi navnet på filen som følger:

stat-utdataene forteller deg de ulike tidsstemplene for filen, eierskapet og tillatelsene, og hvor den er lagret. Filens data holdes i diskblokken, som vises i inodens stat-kommandoutgang.

du kan velge å liste bare inodenummeret til en fil med --format alternativet som nedenfor:

# stat --format=%i hello530461

b. Skriv ut indeks antall filer

ls-kommandoen brukes til å liste fil-og kataloginformasjon. -i alternativet med ls viser inodenummeret til hver fil. Vi kan kombinere den med-l alternativ for å liste informasjon i detalj

# ls -iltotal 140984520170 dr-xrw-rw- 2 linoadmin linoadmin 4096 Mar 9 2013 asciiquarium_1.1263206 -rwxr-xr-x 1 linoadmin linoadmin 15436 Mar 9 2013 asciiquarium.tar.gz519187 drwxr----- 2 root root 4096 Apr 13 01:35-rwSr--r-- 1 root root 5747 Apr 25 01:45 bootstrap655799 drwxr-xr-x 2 root root 4096 May 16 17:46 course528927 drwxr-xr-x 3 root root 4096 Apr 29 00:29 environments

den første kolonnen gir inodenummeret. Du kan vise en bestemt fils inode som nedenfor:

# ls -i continue.sh 519450 continue.sh

c. Vis filsystem inode space information

som standard oppsummerer df-kommandoen tilgjengelig og brukt diskplass. Du kan i stedet motta en rapport om tilgjengelige og brukte inoder ved å sende -i eller --inodes alternativet.

denne informasjonen kan være nyttig hvis en partisjon har veldig mange små filer, som kan tømme tilgjengelige inoder raskere enn de tømmer ledig diskplass.

D. Oppgi innholdet i filsystemet superblock

du kan bruke tune2fs -l kommandoen for å vise all informasjon relatert til inode.

# tune2fs -l /dev/sda6 | grep inodeFilesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isizeFree inodes: 2224350First inode: 11Journal inode: 8First orphan inode: 1575905Journal backup: inode blocks

E. Manipulere filsystemet meta data

du kan se innholdet i en inode som den finnes på En Ext4 filsystem med debugfs kommando. Du må bruke stat-kommandoen som er tilgjengelig i filsystemet debugger for å vise innholdet i inoden. Når du er ferdig, bruk exit for å lukke debugfs-miljøet.

Kontroller at filer på filsystemet ikke kan nås mens du arbeider i feilsøkingsfiler. Du bør vurdere å ommontere filsystemet ved hjelp av mount -o remount /yourfilesystem

du kan bruke debugfs til å gjenopprette en fil ved å bruke inoden og angi en fil

Inodestruktur for katalog

som nevnt ovenfor behandles katalogene I Linux også som filer. Katalog er en spesiell fil som tilordner et filnavn til inodenummeret (denne tilordningen kalles katalogoppføring eller dentry). Så når vi sier at en katalog inneholder filer og andre kataloger, mener vi at denne katalogen kartlegger disse filene og katalogene (kataloger er spesielle filer, så de må også kartlegge til inodenumrene) til inodenumrene.

dette er grunnen til at en katalog ikke kan inneholde to filer med samme navn, fordi den ikke kan tilordne ett navn med to forskjellige inodenumre.

# ls -ld test/drwxr-xr-x 3 root root 4096 Apr 13 01:43 test/

som en fil er kartlagt til sin inode av sin overordnede katalog, så hvordan er topp mest katalog, (dvs. / directory) kartlagt til sin inode? Inodenummeret til / katalogen er fast, og er alltid 2.

Lenker og indeksnummer I Linux

i utgangen av ls -l, kolonnen som følger tillatelsene og før eieren er lenketellingen. Link count er antall harde lenker til en fil. For å forstå harde lenker, begynner vi med lenker. En kobling er en peker til en annen fil.

I Linux verden finnes det to typer lenker:

A. Symbolske lenker (eller myke lenker)

den symbolske lenken er en egen fil hvis innhold peker på den koblede filen. For å lage en symbolsk lenke, bruk ln-kommandoen med alternativet -s. Når du bruker ln-kommandoen, må du først referere til navnet på den opprinnelige filen og deretter til navnet på lenken du vil opprette.

# ln -s /home/bobbin/sync.sh filesync

her’ filesync ‘er en symbolsk lenke til ‘sync.sh’. Tenk på det som en snarvei. Redigering ‘filesync’ er som å redigere den opprinnelige filen, men det er virkelig hva som skjer. Hvis vi sletter eller flytter den opprinnelige filen, vil lenken bli ødelagt, og vår filesync-fil vil ikke være tilgjengelig lenger.

kommandoenls -l viser at den resulterende filen er en symbolsk lenke. Dette er angitt med bokstaven l i den første posisjonen tills -l – utgangen og også ved pilen på slutten av oppføringen, som angir filen navnet refererer til.

# ls -l filesync lrwxrwxrwx 1 root root 20 Apr 7 06:08 filesync -> /home/bobbin/sync.sh

innholdet i en symbolsk lenke er bare navnet på målfilen. Du kan se at tillatelsene på den symbolske lenken er helt åpne. Dette skyldes at tillatelsene ikke administreres

når du sammenligner den symbolske lenken og den opprinnelige filen, vil du merke en klar forskjell mellom dem.

den opprinnelige filen er bare et navn som er koblet direkte til inoden, og den symbolske lenken refererer til navnet. Størrelsen på den symbolske lenken er antall byte i navnet på filen den refererer til, fordi ingen annen informasjon er tilgjengelig i den symbolske lenken.

B. Hard links

For å få en ide om hva en hard link er, er det viktig å forstå at identiteten til en fil er inodenummeret, ikke navnet. En hard link er et navn som refererer til en inode. Det betyr at hvis ‘file1’ har en hard lenke kalt ‘file2’, refererer begge disse filene til samme inode. Så, når du oppretter en hard link for en fil, alt du egentlig gjør er å legge til et nytt navn til en inode.

for å gjøre dette, bruk kommandoen ln uten valg.

# ls -l /home/bobbin/sync.sh -rw-r----- 1 root root 5 Apr 7 06:09 /home/bobbin/sync.sh
# ln /home/bobbin/sync.sh synchro

la oss nå sammenligne de to filene

det interessante med harde lenker er at det ikke er noen forskjell mellom den opprinnelige filen og lenken: de er bare to navn som er koblet til samme inode.

som du må ha notert, i motsetning til myke lenker, er harde lenker ingen spesielle filer. Nå er link count nummeret en fil har blitt hardt koblet til. Så en link teller øker etter å ha opprettet en hard link som du kan se i figuren ovenfor. Disse harde koblingene har to begrensninger:

  • katalogene kan ikke være vanskelig knyttet. Linux tillater ikke dette for å opprettholde den asykliske trestrukturen til kataloger.
  • en hard kobling kan ikke opprettes på tvers av filsystemer. Begge filene må være på samme filsystemer, fordi forskjellige filsystemer har forskjellige uavhengige inodetabeller (to filer på forskjellige filsystemer, men med samme inodenummer vil være forskjellige).

hvordan finne hard link I Linux

du kan hente alle filnavn som peker til en inode nummer. Det betyr at du kan hente harde lenker fordi det er den eneste typen lenke der vi kan ha noen filnavn som peker på det samme innholdet (inode). Du kan gjøre det med -inum alternativet for å finne kommandoen som nedenfor

# find / -inum 517333/home/bobbin/sync.sh/root/synchro

med dette kan du vite hvilke filnavn som peker på datainformasjonen, så hent all hard link i forhold til et bestemt inodenummer

Linux-operasjoner med filer og dets forhold til inoder

De Fleste operasjonene (for eksempel kopi) utført på myke koblinger vil påvirke den faktiske koblede filen (med unntak av rm-eller mv-kommandoer, som fjerner (eller flytter) soft link selv)

her er noen filoperasjoner der inoder spiller sin viktige rolle:

a. kopier filer

når vi kopierer en fil, opprettes en ny fil med en ny inode.

# cp myfile ..
# ls -li myfile ../myfile2501 -rw------- 1 raghu raghu 36 Jun 25 20:12 myfile3746 -rw------- 1 raghu raghu 36 Jan 11 12:05 ../myfile

b. flytt filer

når du beveger deg over filsystemer, fortsetter mv-kommandoen som cp-kommando ovenfor, med unntak av at den opprinnelige filen er fjernet fra plasseringen. Men når du beveger deg i et filsystem, endres ikke inoden, bare katalogkartleggingen av inoden endres, de faktiske dataene på harddisken (innholdet i filen) beveger seg ikke.

# ls -li samplefile.txt2497 -rw------- 1 raghu raghu 22 Jun 25 20:12 samplefile.txt

la oss nå flytte filen og sjekke resultatet

# mv samplefile.txt ..
# ls -li ../samplefile.txt2497 -rw------- 1 raghu raghu 22 Jun 25 20:12 ../samplefile.txt

c. fjern filer

når rm-kommandoen er utstedt, kontrollerer den først lenketallet til filen. Hvis koblingsantallet er større enn 1, fjerner den den katalogoppføringen og reduserer koblingsantallet. Likevel er data til stede, og inoden påvirkes heller ikke. Og når koblingsantallet er 1, slettes inoden fra inodetabellen, inodenummeret blir gratis, og datablokkene som denne filen okkuperte, legges til listen over gratis datablokker.

# ls -li myfile myfile.hardlink2501 -rw------- 2 raghu raghu 36 Jun 25 2012 myfile2501 -rw------- 2 raghu raghu 36 Jun 25 2012 myfile.hardlink

la oss slette filen og sjekke resultatet

# rm myfile.hardlink
# ls -li myfile2501 -rw------- 1 raghu raghu 36 Jun 25 2012 myfile

du kan se at antall inoder er redusert.

Konklusjon

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *