GNU/Linux >> Linux Esercitazione >  >> Linux

Il filesystem di Linux si sta riempiendo, nonostante non ci siano file o directory di grandi dimensioni

Il problema

Su un sistema basato su Linux, il file system di root viene riempito da un processo sconosciuto. Continua indipendentemente da quali file vengono spostati o eliminati dal file system.

# df -hP /
/dev/mapper/VGExaDb-LVDbSys1    ext3     30G   29G     0 100%    /

Non ci sono file di grandi dimensioni da considerare per l'intero file system:

# find / -xdev -type f -size +100M -exec ls -lh {} \;

Non ci sono directory di grandi dimensioni per tenere conto del file system completo:

# du -h --max-depth=1 /
42M     /sbin
13M     /etc
2.4G    /usr
45M    /tmp
451M   /var
192M   /lib
(and so on)
...

La soluzione

A un certo punto in passato, due o più processi utilizzavano un file; ad esempio,/tmp/top.log. Un processo ha interrotto l'accesso a /tmp/top.log eliminandolo (in realtà è una voce di directory) e l'altro processo ha continuato a scrivere nel riferimento dell'inode, consentendo al file di continuare a crescere.

Questo può essere visto nell'output di:“lsof +L 1

# lsof +L 1
COMMAND    PID      USER   FD     TYPE   DEVICE     SIZE/OFF      NLINK          NODE       NAME
top        34261    root   1W     REG   252,0       21460567592   0              1785896    /tmp/top.log (deleted)

Erano elencati anche altri file, ma erano molto più piccoli.

Questo mostra che user=root stava eseguendo un comando top che stava effettuando lo spooling su /tmp/top.log e che attualmente non ci sono collegamenti a quel file. Quel file di spool aveva una dimensione di 21 Gb ma non riportava nell'output "du –h –max-depth=1 /", dove /tmp elencava solo 45M.

Segui i passaggi seguenti per identificare e terminare tale processo.

1. Identifica i file sul sistema che hanno meno di 1 collegamento con il comando:

# lsof +L 1

2. Interrompere tutti i processi che stanno scrivendo su qualsiasi file insolitamente grande elencato. Nell'esempio sopra, eseguiresti:

# kill 34261

3. Lo spazio verrà rilasciato quando il processo finale smetterà di utilizzare il file.


Linux
  1. Trova file e directory su Linux con il comando find

  2. Spostare file su Linux senza mv

  3. Un modo semplice per nascondere file e directory in Linux

  4. Come trovare un file in Linux in tutte le directory in modo ricorsivo

  5. Come trovare file in formato DOS in un file system Linux

Come dividere file audio di grandi dimensioni su Linux

Come montare un filesystem Linux remoto usando SSHFS

Come rinominare file e directory in Linux

Come copiare file e directory nel terminale Linux

Come creare file zip o directory protetti da password in Linux

Come creare un file di grandi dimensioni da 1 GB o 10 GB nel sistema Linux