Che cos'è un inode orfano? [chiuso]


16

Capisco cos'è un inode ma qual è la definizione esatta di un inode orfano? Non capisco davvero cosa significhi.

AGGIORNARE

C'è stato un tempo in cui un server che stavo gestendo ha esaurito gli inode ma quando avrei fatto un df -h mi ha mostrato che il server aveva solo il 60% di spazio esaurito. Immagino che ciò sia dovuto a inode orfani. Come si possono utilizzare tutti gli inode ma sul server rimane ancora "spazio"? Puoi affrontarlo nelle tue risposte?


1
Il tuo aggiornamento è davvero una domanda separata, a che fare con la differenza tra la capacità di archiviazione di un filesystem e il numero di inode che può contenere; dovresti fare una domanda separata.
Stephen Kitt,

In esecuzione df -imostrerà le informazioni corrispondenti per gli inode.
Kusalananda

Lo spazio libero / usato sul disco è solo leggermente correlato con gli inode liberi / usati. Un disco con molti file di piccole dimensioni esaurirà gli inode prima di esaurire lo spazio.
Kusalananda

Risposte:


17

Un inode orfano è un inode che non è associato a una voce della directory nel filesystem, il che significa che non può essere raggiunto.

Gli inode orfani possono apparire per una serie di motivi:

  • i file temporanei che vengono eliminati ma mantenuti aperti (una pratica comune) occupano inode sul filesystem; se il sistema si riavvia senza spegnersi correttamente, questi inode rimangono e sono orfani
  • la corruzione del filesystem può corrompere una directory senza influenzare gli inode dei file contenuti nella directory; questi inode vengono quindi resi orfani

fsckcrea nuove voci di directory per inode orfani in lost+found.


Grazie per la tua risposta @ stephen-kitt. C'è stato un tempo in cui un server che stavo gestendo ha esaurito gli inode ma quando lo avrei fatto df -hmi ha mostrato che il server aveva solo il 60% di spazio esaurito. Immagino che ciò sia dovuto a inode orfani. Come si possono utilizzare tutti gli inode ma sul server rimane ancora "spazio"?
ninjacoder

3

Un inode orfano è un file “semi-cancellato”: non ha più voci di directory, ma è ancora aperto in qualche processo, quindi i dati sono ancora presenti sul disco. Quando l'ultimo processo che ha questo file aperto lo chiude, il file verrà completamente eliminato e l'inode orfano scomparirà.

Un inode orfano utilizza sia un inode sia lo spazio su disco per archiviare il file, quindi entrambi dfe df -icontarlo come usato. Pertanto, se il disco viene segnalato come pieno ma dfmostra dello spazio rimasto, ciò non può essere correlato a inode orfani. Gli inode orfani sono uno dei motivi per cui l'utilizzo del filesystem segnalato dfe le dimensioni totali del file riportate dupossono differire; vedi Perché ci sono tanti modi diversi per misurare l'utilizzo del disco? per maggiori dettagli su questo argomento.

Molti filesystem hanno riservato un numero fisso di inode durante la creazione del filesystem, il che significa che è possibile avere al massimo tanti file sul filesystem. Il numero di inode è un compromesso tra lo spazio utilizzato dagli inode e la possibilità di creare molti file. Se non c'è più spazio sul filesystem, non è possibile aumentare i file esistenti o creare nuovi file (forse è ancora possibile creare alcuni file vuoti nelle directory esistenti, purché riempiano solo blocchi parzialmente utilizzati e non richiedere l'assegnazione di un nuovo blocco). Se non ci sono più inode gratuiti, puoi far crescere file esistenti ma non puoi creare un nuovo file.

Il kernel segnala lo stesso errore alle applicazioni se un filesystem è pieno a causa della mancanza di spazio dati o della mancanza di inode. Quindi è possibile ottenere un errore "disco pieno" anche se è rimasto dello spazio dati, se l'operazione ha richiesto un nuovo inode e la tabella degli inode è piena. Esegui df -iper sapere quanti inode vengono utilizzati e quanti ne rimangono.


1
  • Un inode orfano è uno che è stato scollegato ma è ancora aperto in un altro processo. Ad esempio in esecuzione tail -f {file}in una shell seguita da rm {file}un'altra. Il filesystem tiene traccia di questi in modo che possano essere ripuliti quando il processo termina.

  • È perfettamente normale ogni volta che si ha uno smontaggio sporco. Sono semplicemente file che erano stati eliminati, ma erano ancora aperti quando il fs veniva rimontato in sola lettura. Non sono la causa, ma solo un sintomo.


Per il problema degli inode, eseguire questa query per ottenere l'elenco di quanti inode vengono utilizzati in tutte le directory

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

È possibile fare riferimento a questo e questo per ulteriori metodi da verificare.


@ninjacoder puoi controllare la mia risposta aggiornata per il tuo problema di inode
Rahul
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.