Articles

Linux-Inodien yksityiskohtainen ymmärtäminen esimerkillä

Linux ja muut Unixin kaltaiset käyttöjärjestelmät ylläpitävät johdonmukaisuutta käsittelemällä kaikkea tiedostona (jopa laitteistoja). Näppäimistö, hiiri, tulostimet, monitori, kiintolevy, prosessit, jopa hakemistot käsitellään tiedostoina Linuxissa. Tavalliset tiedostot sisältävät tietoja, kuten tekstiä (tekstitiedostoja), musiikkia, videoita (multimediatiedostoja), jne.

normaalien tietojen lisäksi näistä tiedostoista on joitakin muita tietoja, kuten niiden koko, omistus, käyttöoikeudet, aikaleima jne. Tätä tiedostoa koskevaa metatietoa hallitaan tietorakenteella, joka tunnetaan nimellä inode (indeksisolmu).

mikä on inodi Linuxissa?

jokaisella Linux-tiedostolla tai-hakemistolla (tekniseltä kannalta niiden välillä ei ole todellista eroa) on inodi, ja tämä inodi sisältää kaikki tiedoston metatiedot (eli kaikki tiedoston lukemiseen tarvittava hallinnollinen tieto on tallennettu sen inodeen).

esimerkiksi inode sisältää luettelon kaikista lohkoista, joihin tiedosto on tallennettu, kyseisen tiedoston omistajatiedot, käyttöoikeudet ja kaikki muut tiedostolle asetetut attribuutit.

inodirajat on tiedostojärjestelmää kohti ja niistä päätetään tiedostojärjestelmän luontihetkellä. Tiedostojärjestelmästä riippuva hakemiston enimmäiskoko ja siten tarkka raja eroavat toisistaan.

paremman suorituskyvyn vuoksi tee hakemistoistasi pienempiä lajittelemalla tiedostoja alihakemistoihin, joissa on vain yksi suuri Hakemisto.

mikä on inodiluku?

Inodiluku tunnetaan myös indeksilukuna. Inode on tiedostoille ja hakemistoille annettu yksilöllinen numero, kun se luodaan. Inodiluku on yksilöllinen koko tiedostojärjestelmälle.

inodi on tietorakenne perinteisessä Unix-tyylisessä tiedostojärjestelmässä kuten ext3 tai ext4. tiedoston ja hakemistojen ominaisuuksien tallentaminen.

Linux-laajennetut tiedostojärjestelmät, kuten ext3 tai ext4, ylläpitävät joukon näitä inodeja, joita kutsutaan inoditaulukoksi. Tämä taulukko sisältää luettelon tiedostojärjestelmän kaikista tiedostoista. Yksittäisillä inodeilla inoditaulukossa on uniikki numero (ainutlaatuinen kyseiselle tiedostojärjestelmälle), jota kutsutaan inodinumeroksi.

seuraavat tiedot on tallennettu inodeen:

  • Tiedostotyyppi: tavallinen tiedosto, hakemisto, putki jne.
  • oikeudet kyseiseen tiedostoon: Lue, Kirjoita, suorita
  • Linkkiluku: kovan linkin määrä suhteessa inodeen
  • käyttäjätunnus: tiedoston omistaja
  • Ryhmätunnus: ryhmän omistaja
  • Tiedoston koko: tai merkittävä/Vähäinen numero joidenkin erikoistiedostojen tapauksessa
  • aikaleima: käyttöaika, muutosaika ja (inode) muutosaika
  • attribuutit: muuttumaton ” esimerkiksi
  • käyttöoikeusluettelo: erityisille käyttäjille/ryhmille
  • linkki tiedoston sijaintiin
  • muut tiedostoa koskevat metatiedot

huomaa, että inode ei tallenna tiedoston nimeä vaan ainoastaan sen sisällön.

Diagram of Inode data structure

Miten tarkistaa Inode Linuxissa

Jos haluat katsoa inodeja, missä tahansa ext-tiedostojärjestelmässä voit voi käyttää alla komentoja tarkistaa ominaisuuksia tiedostojärjestelmän ja tiedostoja, joita käytetään siinä.

A. Display file data information

voit näyttää inode-tiedot tiedostossa tai hakemistossa stat-komennolla.

tiedoston nimi on ilmoitettava seuraavasti:

stat-tuloste kertoo tiedoston eri aikaleimat, sen omistuksen ja käyttöoikeudet sekä sen tallennuspaikan. Tiedoston tiedot säilytetään levylohkossa, joka näkyy inoden stat-komennon ulostulossa.

voit listaa vain tiedoston inodiluvun --format vaihtoehto kuten alla:

# stat --format=%i hello530461

B. Print index tiedostojen lukumäärä

LS-komentoa käytetään tiedostojen ja hakemistojen tietojen luettelointiin. -i valinta ls näyttää jokaisen tiedoston inodiluvun. Voimme yhdistää sen -l option luetella tiedot yksityiskohtaisesti

# 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

ensimmäinen sarake antaa inodiluvun. Voit näyttää tietyn tiedoston inodin kuten alla:

# ls -i continue.sh 519450 continue.sh

c. Näytä tiedostojärjestelmän inode-avaruustiedot

oletuksena, DF-komento tiivistää käytettävissä olevan ja käytetyn levytilan. Voit sen sijaan saada raportin saatavilla olevista ja käytetyistä inodeista ohittamalla -i tai --inodes – vaihtoehdon.

näistä tiedoista voi olla apua, jos osiolla on hyvin paljon pieniä tiedostoja, jotka voivat heikentää saatavilla olevia inodeja nopeammin kuin ne heikentävät käytettävissä olevaa levytilaa.

D. listaa tiedostojärjestelmän superblokin sisältö

voit käyttää tune2fs -l – komentoa näyttääksesi kaiken inodeen liittyvän tiedon.

# 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. muokkaa tiedostojärjestelmän metatietoja

voit nähdä inodin sisällön sellaisena kuin se on olemassa Ext4-tiedostojärjestelmässä, jossa on debugfs-komento. Sinun täytyy käyttää stat-komentoa, joka on saatavilla tiedostojärjestelmän debuggerissa, näyttääksesi inoden sisällön. Kun olet valmis, sulje debugfs-ympäristö exit-ohjelmalla.

varmista, että tiedostojärjestelmän tiedostoja ei voi käyttää työskennellessä debugfs: ssä. Kannattaa harkita tiedostojärjestelmän remonttaamista käyttämällä mount -o remount /yourfilesystem

voit käyttää debugfeja tiedoston undeletointiin käyttämällä sen inodea ja osoittamalla tiedoston

inode-rakenteen hakemistolle

kuten edellä todettiin, Linuxissa hakemistoja käsitellään myös tiedostoina. Hakemisto on erikoistiedosto, joka kartoittaa tiedostonimen sen inodinumeroon (tätä yhdistämistä kutsutaan hakemistomerkinnäksi tai dentryksi). Joten kun sanomme, että hakemisto sisältää tiedostoja ja muita hakemistoja, tarkoitamme, että tämä hakemisto kartoittaa näitä tiedostoja ja hakemistoja (hakemistot ovat erityisiä tiedostoja, joten ne tarvitsevat myös kartoitusta inodinumeroihinsa) inodinumeroihinsa.

Tämä on syy, miksi hakemistossa ei voi olla kahta samannimistä tiedostoa, koska se ei voi kartoittaa yhtä nimeä kahdella eri inodiluvulla.

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

koska tiedosto on kartoitettu inodeensa sen ylähakemiston avulla, niin miten ylähakemisto on kartoitettu (eli / directory) sen inodeen? / hakemiston inodiluku on kiinteä, ja se on aina 2.

linkkien ja indeksiluvun Linuxissa

ls -l, käyttöoikeuksia Seuraava ja omistajaa edeltävä sarake on linkkiluku. Linkkiluku on kovien linkkien lukumäärä tiedostoon. Kovien linkkien ymmärtämiseksi aloitetaan linkeistä. Linkki on osoitin toiseen tiedostoon.

Linux-maailmassa on kahdenlaisia linkkejä:

a. symboliset linkit (tai pehmeät linkit)

symbolinen linkki on erillinen tiedosto, jonka sisältö viittaa linkitettyyn tiedostoon. Voit luoda symbolisen linkin käyttämällä Ln-komentoa valinnalla -s. Kun käytät Ln-komentoa, varmista, että viittaat ensin alkuperäisen tiedoston nimeen ja sitten sen linkin nimeen, jonka haluat luoda.

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

tässä ”filesync” on symbolinen linkki ” sync.sh ajattele sitä oikotienä. Muokkaaminen ’filesync’ on kuin suoraan muokata alkuperäistä tiedostoa, mutta se on todella mitä tapahtuu. Jos poistamme tai siirrämme alkuperäisen tiedoston, linkki murtuu ja ’filesync’ – tiedostomme ei ole enää saatavilla.

ls -l komento osoittaa, että tuloksena oleva tiedosto on symbolinen linkki. Tähän viittaa l-kirjain ls -l lähtö ja myös luettelon lopussa oleva nuoli, joka osoittaa tiedoston, johon nimi viittaa.

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

symbolisen linkin sisältö on vain kohdetiedoston nimi. Näet, että symbolisen linkin käyttöoikeudet ovat täysin auki. Tämä johtuu siitä, että käyttöoikeuksia ei hallita

vertaillessasi symbolista linkkiä ja alkuperäistä tiedostoa, huomaat selkeän eron niiden välillä.

alkuperäinen tiedosto on vain nimi, joka on liitetty suoraan inodiin, ja symbolinen linkki viittaa nimeen. Symbolisen linkin koko on sen tarkoittaman tiedoston nimen tavumäärä, koska symbolisesta linkistä ei ole saatavilla muuta tietoa.

B. kovat linkit

saadakseen käsityksen siitä, mikä kova linkki on, on tärkeää ymmärtää, että tiedoston identiteetti on sen inodiluku, ei sen nimi. Kova linkki on nimi, joka viittaa inodiin. Se tarkoittaa, että jos ”tiedosto1”: ssä on kova linkki nimeltä ”tiedosto2”, molemmat tiedostot viittaavat samaan inodiin. Joten, kun luot kovan linkin tiedoston, kaikki todella tehdä on lisätä uuden nimen inode.

voit tehdä tämän käyttämällä Ln-komentoa ilman valintaa.

# 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

nyt verrataan kahta tiedostoa

kiintoisaa kovissa linkeissä on se, että alkuperäisen tiedoston ja linkin välillä ei ole eroa: ne ovat vain kaksi samaan inodiin liitettyä nimeä.

kuten olet varmasti huomannut, toisin kuin pehmeät linkit, kovat linkit eivät ole erityisiä tiedostoja. Nyt, link count on numero tiedosto on vaikea linkitetty. Joten linkki määrä kasvaa luomisen jälkeen kova linkki kuten näet yllä kuvassa. Näillä kovilla lenkeillä on kaksi rajoitusta:

  • hakemistoja ei voi linkittää tiukasti toisiinsa. Linux ei salli tämän ylläpitää hakemistojen asyklistä puurakennetta.
  • tiedostojärjestelmien välille ei voi luoda kovaa linkkiä. Molempien Tiedostojen on oltava samoissa tiedostojärjestelmissä, koska eri tiedostojärjestelmillä on erilaiset itsenäiset inoditaulukot (kaksi tiedostoa eri tiedostojärjestelmillä, mutta samalla inodinumerolla on erilainen).

kuinka löytää kova linkki Linuxissa

voit hakea kaikki tiedostonimet, jotka viittaavat inodilukuun. Se tarkoittaa, että voit hakea kovia linkkejä, koska se on ainoa linkki, jossa meillä voi olla joitakin tiedostonimiä, jotka viittaavat samaan sisältöön (inode). Voit tehdä sen -inum hakukomentovalinnalla kuten alla

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

tällä voit tietää, mitkä tiedostonimet viittaavat datatietoon, joten Nouda kaikki kova linkki suhteessa tiettyyn inodilukuun

Linux-operaatiot tiedostoineen ja sen suhde inodeihin

useimmat operaatiot (kuten Kopioi) suoritetut pehmeät linkit vaikuttavat varsinaiseen linkitettyyn tiedostoon (poikkeuksena RM-tai MV-komennot, jotka poistavat (tai siirtävät) pehmeän linkin itse)

tässä muutamia tiedostooperaatioita, joissa inodeilla on tärkeä rooli:

A. kopioi tiedostot

kun kopioimme tiedoston, luodaan uusi tiedosto uudella inodella.

# 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. Siirrä tiedostoja

siirryttäessä tiedostojärjestelmien yli MV-komento etenee yllä olevana cp-käskynä sillä poikkeuksella, että alkuperäinen tiedosto poistetaan sijainnistaan. Mutta kun siirrytään tiedostojärjestelmän sisällä, inode ei muutu, vain inodin hakemistokartoitus muuttuu, kiintolevyn todelliset tiedot (tiedoston sisältö) eivät liiku.

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

nyt siirretään tiedostoa ja tarkistetaan tulos

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

C. Poista tiedostot

kun RM-komento on annettu, se tarkistaa ensin tiedoston linkkiluvun. Jos linkkien lukumäärä on suurempi kuin 1, se poistaa kyseisen hakemistomerkinnän ja pienentää linkkimäärää. Silti data on läsnä,eikä inode vaikuta. Ja kun linkkiluku on 1, inodi poistetaan inoditaulukosta, inodiluvusta tulee vapaa ja datalohkot, joita tämä tiedosto miehitti, lisätään vapaan datalohkon luetteloon.

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

poistetaan tiedosto ja tarkistetaan tulos

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

näet, että inoden määrä on vähentynyt.

johtopäätös

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *