GNU/Linux >> Linux Esercitazione >  >> Linux

df in Linux non mostra lo spazio libero corretto dopo la rimozione del file

Soluzione 1:

L'eliminazione del nome del file in realtà non elimina il file. Qualche altro processo tiene aperto il file, impedendone l'eliminazione; riavvia o termina il processo per rilasciare il file.

Usa

lsof +L1

per scoprire quale processo sta utilizzando un file eliminato (non collegato).

Soluzione 2:

come menziona Ignacio, l'eliminazione del file non libererà lo spazio fino a quando non eliminerai i processi che hanno handle aperti su quel file.

Tuttavia, puoi recuperare lo spazio senza interrompere i processi. Tutto quello che devi fare è rimuovere i descrittori di file.

Eseguire prima lsof | grep deleted per identificare il processo che contiene il file

[[email protected] log]$ /usr/sbin/lsof |grep deleted
java       8859   hudson    1w      REG              253,0 3662503356    7578206 /crucible/data/current/var/log/fisheye.out (deleted)

Quindi eseguire:

cd /proc/PID/fd

quindi

[[email protected] fd]$ ls -l |grep deleted
total 0
l-wx------ 1 hudson devel 64 Feb  7 11:48 1 -> /crucible/data/current/var/log/fisheye.out (deleted)

Il "1" sarà il descrittore del file. Ora digita "> FD" per recuperare quello spazio

> 1

Potrebbe essere necessario ripetere l'operazione se ci sono altri processi che detengono il file.

Soluzione 3:

Una possibilità è che i file che hai eliminato abbiano più riferimenti nel filesystem. Se hai creato hardlink, diversi nomi di file punteranno agli stessi dati e i dati (i contenuti effettivi) non saranno contrassegnati come liberi/utilizzabili fino a quando tutti i riferimenti ad essi non saranno stati rimossi. Prima di eliminare i file, specificali (voce denominata Link) o esegui ls -l su di essi (dovrebbe essere la seconda colonna).

Se risulta che i file sono referenziati altrove, immagino che dovrai ls -i il file (s) per trovare il numero di inode, e poi fare una ricerca con -inum per trovare il altri riferimenti a quel file (probabilmente vorrai usare anche -mount per rimanere all'interno dello stesso filesystem).

Soluzione 4:

Se la partizione è stata configurata per riservare una certa porzione di spazio su disco solo per l'utilizzo da parte di root, df non includerà questo spazio come disponibile.

[[email protected]]# df -h
Filesystem            Size  Used Avail Use% Mounted on
...
/dev/optvol           625G  607G     0 100% /opt
...

Anche dopo che lo spazio sarà stato recuperato eliminando file/directory, l'utente non root non sarà in grado di scrivere su una particolare partizione.

Puoi facilmente verificare se è il tuo caso provando a creare un file su un dispositivo come utente root e non root.

Inoltre puoi controllare la configurazione del filesystem eseguendo

tune2fs -l <device> | egrep "Block count|Reserved block count

e calcolando la percentuale effettiva da solo.

Per modificare la % del disco riservata per l'utilizzo solo da root, eseguire

tune2fs -m <percentage> <device>

Soluzione 5:

Il file è ancora bloccato dal processo che lo apre. Per liberare spazio, procedi come segue:

  1. Esegui sudo lsof | grep deleted e vedere quale processo sta tenendo il file. Esempio di risultato:

    $ sudo lsof | grep deleted
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
    cron     1623 root    5u   REG   0,21        0 395919638 /tmp/tmpfPagTZ4 (deleted)
    
  2. Uccidi il processo usando sudo kill -9 {PID} . Nell'esempio precedente, il PID è 1623.

    $ sudo kill -9 1623
    
  3. Esegui df per verificare se lo spazio è già stato liberato. Se è ancora pieno, forse devi attendere qualche secondo e ricontrollare.


Linux
  1. 7 Suggerimenti per la riga di comando di Linux per risparmiare spazio sui file multimediali

  2. Usa df per controllare lo spazio libero su disco su Linux

  3. Come recuperare un file cancellato in Linux

  4. Linux – Kali Linux è installato ma non viene visualizzato in Boot Manager?

  5. Linux + Come ignorare (filtrare) il file con lo spazio?

Controlla lo spazio libero su disco in Linux con ncdu

5 comandi Linux per controllare lo spazio libero su disco

Come estendere lo spazio di scambio utilizzando il file di scambio in Linux

Come controllare lo spazio libero su disco su Linux

Comprendere lo spazio su disco tramite il comando 'df' in Linux

Come usare Linux per recuperare file cancellati