Ce este un inod orfan? [închis] (Unix, Sisteme De Fișiere, Inode)

ninjacoder a intrebat.
a intrebat.

Înțeleg ce este un inode, dar care este definiția exactă a unui inode orfan? Nu prea înțeleg ce înseamnă asta.

UPDATE

A fost o perioadă în care un server pe care îl administram a rămas fără inode, dar când făceam un df -h îmi arăta că serverul avea doar 60% din spațiu folosit. Bănuiesc că acest lucru se datorează inodelor orfane. Cum se poate ca toate inodele să fie folosite, dar să mai existe încă „spațiu” pe server? Poți aborda acest aspect în răspunsurile tale?

Comentarii

  • Actualizarea dvs. este de fapt o întrebare separată, legată de diferența dintre capacitatea de stocare a unui sistem de fișiere și numărul de inodes pe care îl poate conține; ar trebui să o puneți ca întrebare separată. –  > Por Stephen Kitt.
  • Rularea df -i va afișa informațiile corespunzătoare pentru inodes. –  > Por Kusalananda.
  • Spațiul liber/folosit pe disc este doar puțin corelat cu inodes liberi/folosiți. Un disc cu multe fișiere mici va rămâne fără inodes înainte de a rămâne fără spațiu. –  > Por Kusalananda.
3 răspunsuri
Stephen Kitt

Un inod orfan este un inod care nu este atașat la o intrare de director în sistemul de fișiere, ceea ce înseamnă că nu poate fi accesat.

Inodele orfane pot apărea din mai multe motive:

  • fișierele temporare care sunt șterse, dar menținute deschise (o practică obișnuită) ocupă noduri pe sistemul de fișiere; dacă sistemul repornește fără să se închidă corespunzător, aceste noduri rămân și sunt orfane.
  • o corupție a sistemului de fișiere poate corupe un director fără a afecta inode-urile fișierelor pe care le conține directorul; aceste inode-uri sunt atunci orfane.

fsck creează noi intrări de directoare pentru inodele orfane în lost+found.

Comentarii

  • Vă mulțumim pentru răspuns @stephen-kitt. A fost o perioadă în care un server pe care îl administram a rămas fără inodes, dar când făceam un df -h mi-a arătat că serverul avea doar 60% din spațiu folosit. Bănuiesc că acest lucru se datorează inodelor orfane. Cum se poate ca toate inode-urile să fie consumate, dar să mai rămână „spațiu” pe server? –  > Por ninjacoder.
Gilles ‘SO- nu mai fi rău’

Un inode orfan este un fișier care este „semi-eliminat”: nu mai are nici o intrare în director, dar este încă deschis în vreun proces, deci datele sunt încă prezente pe disc. Atunci când ultimul proces care a avut acest fișier deschis îl închide, fișierul va fi complet șters, iar inodul orfan va dispărea.

Un inode orfan utilizează atât un inode, cât și spațiul pe disc pentru a stoca fișierul, astfel încât ambele df și df -i îl numără ca fiind utilizat. Astfel, dacă discul este raportat ca fiind plin, dar df arată ceva spațiu rămas, acest lucru nu poate fi legat de inode orfane. Nodurile orfane sunt unul dintre motivele pentru care utilizarea sistemului de fișiere raportată de către df și dimensiunea totală a fișierelor raportată de du pot fi diferite; consultați secțiunea De ce există atât de multe moduri diferite de măsurare a utilizării discului? pentru mai multe detalii pe această temă.

Multe sisteme de fișiere au rezervat un număr fix de inodes atunci când sistemul de fișiere este creat, ceea ce înseamnă că puteți avea cel mult acel număr de fișiere pe sistemul de fișiere. Numărul de inodes este un compromis între spațiul utilizat de inodes și capacitatea de a crea multe fișiere. Dacă nu mai există spațiu pe sistemul de fișiere, atunci nu mai puteți crește fișierele existente sau crea fișiere noi (poate că puteți crea în continuare câteva fișiere goale în directoare existente, atâta timp cât acestea nu fac decât să umple blocuri parțial utilizate și nu necesită alocarea unui nou bloc). În cazul în care nu mai există niciun inod liber, puteți crește fișierele existente, dar nu puteți crea un fișier nou.

Kernelul raportează aceeași eroare aplicațiilor indiferent dacă un sistem de fișiere este plin din cauza lipsei de spațiu de date sau din cauza lipsei de inode. Astfel, puteți primi o eroare de „disk full” chiar dacă mai există spațiu de date, dacă operațiunea a necesitat un nou inode și tabelul inode este plin. Rulați df -i pentru a afla câți inode sunt utilizați și câți au mai rămas.

Rahul
  • Un inode orfan este un inode care a fost dezlegat, dar care este încă deschis într-un alt proces. De exemplu, se execută tail -f {file} într-un shell urmat de rm {file} în altul. Sistemul de fișiere ține evidența acestora, astfel încât să poată fi curățate atunci când procesul se închide.

  • Este perfect normal ori de câte ori aveți o dezmembrare necurată. Acestea sunt pur și simplu fișiere care au fost șterse, dar care erau încă deschise atunci când fs a fost remontat doar pentru citire. Ele nu sunt cauza, ci doar un simptom.


În ceea ce privește problema codurilor, rulați această interogare pentru a obține lista cu numărul de coduri utilizate în toate directoarele

for i in `find . -type d `; do echo `ls -a $i | wc -l` $i; done | sort -n

Pentru mai multe metode de verificare, puteți consulta acest lucru și acest lucru.

Comentarii

  • @ninjacoder, puteți verifica răspunsul meu actualizat pentru problema codurilor –  > Por Rahul.