GNU/Linux >> Belajar Linux >  >> Linux

df di linux tidak menunjukkan ruang kosong yang benar setelah penghapusan file

Solusi 1:

Menghapus nama file tidak benar-benar menghapus file. Beberapa proses lain menahan file terbuka, menyebabkannya tidak dihapus; restart atau matikan proses itu untuk melepaskan file.

Gunakan

lsof +L1

untuk mengetahui proses mana yang menggunakan file yang dihapus (tidak ditautkan).

Solusi 2:

seperti yang disebutkan Ignacio, menghapus file tidak akan mengosongkan ruang hingga Anda menghapus proses yang memiliki pegangan terbuka terhadap file tersebut.

Namun demikian, Anda dapat merebut kembali ruang tanpa menghentikan prosesnya. Yang perlu Anda lakukan hanyalah menghapus deskriptor file.

Eksekusi pertama lsof | grep dihapus untuk mengidentifikasi proses yang menahan 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)

Kemudian jalankan:

cd /proc/PID/fd

lalu

[[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)

"1" akan menjadi deskriptor file. Sekarang ketik "> FD" untuk merebut kembali ruang itu

> 1

Anda mungkin perlu mengulangi operasi jika ada proses lain yang menahan file tersebut.

Solusi 3:

Satu kemungkinan adalah file yang Anda hapus memiliki lebih banyak referensi di sistem file. Jika Anda telah membuat hardlink, beberapa nama file akan mengarah ke data yang sama, dan data (konten sebenarnya) tidak akan ditandai sebagai bebas/dapat digunakan sampai semua referensi dihapus. Sebelum Anda menghapus file, stat file tersebut (Entri bernama Tautan) atau lakukan ls -l pada file tersebut (harus di kolom kedua).

Jika ternyata file tersebut direferensikan di tempat lain, saya kira Anda harus ls -i file untuk menemukan nomor inode, dan kemudian melakukan pencarian dengan -inum untuk menemukan referensi lain ke file itu (Anda mungkin juga ingin menggunakan -mount untuk tetap berada dalam sistem file yang sama juga).

Solusi 4:

Jika partisi telah dikonfigurasi untuk mencadangkan bagian tertentu dari ruang disk hanya untuk penggunaan root, df tidak akan menyertakan ruang ini jika tersedia.

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

Bahkan setelah ruang diambil kembali dengan menghapus file/direktori, pengguna non-root tidak akan dapat menulis ke partisi tertentu.

Anda dapat dengan mudah memeriksa apakah itu kasus Anda dengan mencoba membuat file di perangkat sebagai pengguna root dan non-root.

Selain itu, Anda dapat memeriksa konfigurasi sistem file dengan menjalankan

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

dan menghitung sendiri % sebenarnya.

Untuk mengubah % disk yang dicadangkan untuk penggunaan hanya root, jalankan

tune2fs -m <percentage> <device>

Solusi 5:

File masih terkunci oleh proses membukanya. Untuk mengosongkan ruang, lakukan langkah-langkah berikut:

  1. Jalankan sudo lsof | grep deleted dan lihat proses mana yang menyimpan file. Contoh hasil:

    $ 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. Hentikan proses menggunakan sudo kill -9 {PID} . Dalam contoh di atas, PID-nya adalah 1623.

    $ sudo kill -9 1623
    
  3. Jalankan df untuk memeriksa apakah ruang sudah kosong. Jika masih penuh, mungkin Anda perlu menunggu beberapa detik dan memeriksa kembali.


Linux
  1. Linux – Kali Linux Sudah Terinstal Tapi Tidak Muncul Di Boot Manager?

  2. Linux + Bagaimana Cara Mengabaikan (filter) File Dengan Spasi?

  3. Perangkat Linux tidak menunjukkan ruang disk yang benar setelah mengubah ukuran

  1. Bagaimana cara menghapus ruang disk kosong di Linux?

  2. Cara mengisi hard drive di Linux

  3. Tidak dapat cat file yang memiliki ruang dalam nama di linux

  1. 7 tips baris perintah Linux untuk menghemat ruang file media

  2. Unix/Linux membatalkan penghapusan/memulihkan file yang dihapus

  3. Skrip SH di $PATH tidak ditemukan di Linux Alpine 3.11