GNU/Linux >> Linux Esercitazione >  >> Linux

Come liberare l'utilizzo di Inode?

La mia soluzione:

Prova a scoprire se si tratta di un problema di inode con:

df -ih

Prova a trovare cartelle root con un numero elevato di inode:

for i in /*; do echo $i; find $i |wc -l; done

Prova a trovare cartelle specifiche:

for i in /src/*; do echo $i; find $i |wc -l; done

Se si tratta di intestazioni Linux, prova a rimuovere le più vecchie con:

sudo apt-get autoremove linux-headers-3.13.0-24

Personalmente li ho spostati in una cartella montata (perché per me l'ultimo comando non è riuscito) e ho installato l'ultimo con:

sudo apt-get autoremove -f

Questo ha risolto il mio problema.


La mia situazione era che avevo esaurito gli inode e avevo già cancellato tutto ciò che potevo.

$ df -i
Filesystem     Inodes  IUsed  IFree IUse% Mounted on
/dev/sda1      942080 507361     11  100% /

Sono su Ubuntu 12.04LTS e non sono riuscito a rimuovere i vecchi kernel Linux che occupavano circa 400.000 inode perché apt era rotto a causa di un pacchetto mancante. E non ho potuto installare il nuovo pacchetto perché avevo esaurito gli inode, quindi ero bloccato.

Ho finito per eliminare manualmente alcuni vecchi kernel Linux per liberare circa 10.000 inode

$ sudo rm -rf /usr/src/linux-headers-3.2.0-2*

Questo è stato sufficiente per permettermi di installare il pacchetto mancante e riparare il mio apt

$ sudo apt-get install linux-headers-3.2.0-76-generic-pae

e quindi rimuovere il resto dei vecchi kernel Linux con apt

$ sudo apt-get autoremove

le cose ora vanno molto meglio

$ df -i
Filesystem     Inodes  IUsed  IFree IUse% Mounted on
/dev/sda1      942080 507361 434719   54% /

È abbastanza facile per un disco avere un gran numero di inode utilizzati anche se il disco non è molto pieno.

Un inode è allocato a un file, quindi, se hai miliardi di file, tutti da 1 byte ciascuno, finirai gli inode molto prima di esaurire il disco.

È anche possibile che l'eliminazione dei file non riduca il conteggio degli inode se i file hanno più collegamenti reali. Come ho detto, gli inode appartengono al file, non la voce della rubrica. Se un file ha due voci di directory collegate ad esso, eliminarne una non libererà l'inode.

Inoltre, puoi eliminare una voce di directory ma, se un processo in esecuzione ha ancora il file aperto, l'inode non verrà liberato.

Il mio consiglio iniziale sarebbe quello di eliminare tutti i file che puoi, quindi riavviare la scatola per assicurarti che non rimangano processi che tengono aperti i file.

Se lo fai e hai ancora un problema, faccelo sapere.

A proposito, se stai cercando le directory che contengono molti file, questo script può aiutarti:

#!/bin/bash

# count_em - count files in all subdirectories under current directory.
echo 'echo $(ls -a "$1" | wc -l) $1' >/tmp/count_em_$$
chmod 700 /tmp/count_em_$$
find . -mount -type d -print0 | xargs -0 -n1 /tmp/count_em_$$ | sort -n
rm -f /tmp/count_em_$$

Se sei molto sfortunato, hai utilizzato circa il 100% di tutti gli inode e non riesci a creare lo scipt. Puoi verificarlo con df -ih .

Allora questo comando bash può aiutarti:

sudo find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n

E sì, ci vorrà del tempo, ma puoi individuare la directory con il maggior numero di file.


Linux
  1. Come rinominare i file in Linux

  2. Come comprimere più file su Linux

  3. Come trovare spazio libero su disco e analizzare l'utilizzo del disco?

  4. Linux:in che modo Linux assegna numeri di inode a filesystem non basati su inode?

  5. Come controllare l'utilizzo degli inode nel tuo account cPanel

Come liberare spazio su Ubuntu Linux

Come interpretare l'utilizzo della memoria top/htop?

Come ridurre l'utilizzo degli inode in CPanel?

Come controllare l'utilizzo di Inode da cPanel e dalla riga di comando?

Come trovare file in Debian

Come ripulire i file non necessari