Berurusan dengan kotak CentOS 5.6 lama, tanpa pengaturan lvm, sistem file root saya / penuh, saya telah menghapus banyak file log lama dan file aplikasi yang tidak saya butuhkan, yang berukuran lebih dari 2 -5GB, namun sistem saya masih melaporkan bahwa disk sudah penuh.
[root@tornms1 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 130G 124G 0 100% /
/dev/sdb1 264G 188M 250G 1% /data
/dev/sda1 99M 24M 71M 26% /boot
tmpfs 2.0G 0 2.0G 0% /dev/shm
[root@tornms1 ~]# mount
/dev/sda3 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sdb1 on /data type ext3 (rw)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
Ada ide tentang apa yang harus saya coba lakukan selanjutnya? sayangnya me-reboot kotak bukanlah pilihan saat ini.
/.Trash/
kosong? Apakah kamu sudah selesaisudo rm -Rf ~/.Trash/*
?Jawaban:
Dua hal mungkin terjadi di sini.
Pertama , sistem file Anda telah mencadangkan beberapa ruang yang hanya
root
bisa digunakan untuk menulis, sehingga proses sistem kritis tidak gagal ketika pengguna normal kehabisan ruang disk. Itu sebabnya Anda melihat 124G dari 130G digunakan, tetapi nol tersedia. Mungkin file yang Anda hapus membawa pemanfaatan ke titik ini, tetapi tidak di bawah ambang batas untuk pengguna normal.Jika ini adalah situasi Anda dan Anda putus asa, Anda mungkin dapat mengubah jumlah ruang yang disediakan
root
. Untuk menguranginya menjadi 1% (standarnya adalah 5%), perintah Anda adalahKedua , sistem operasi tidak akan merilis ruang disk untuk file yang dihapus yang masih terbuka. Jika Anda telah menghapus (misalnya) salah satu file log Apache, Anda harus memulai ulang Apache untuk membebaskan ruang.
sumber
Jika Anda menghapus file yang sedang digunakan oleh suatu proses, Anda tidak dapat lagi melihat file
ls
. Proses masih menulis ke file itu sampai Anda menghentikan proses.Untuk melihat file-file yang dihapus, jalankan saja
lsof|grep delete
sumber
2 cara lain untuk mendapatkan disk adalah masalah penuh :
1) tersembunyi di bawah titik mount: linux akan menampilkan disk penuh dengan file "tersembunyi" di bawah titik mount. Jika Anda memiliki data yang ditulis ke drive dan me-mount sistem file lain di atasnya, linux dengan benar mencatat penggunaan disk meskipun Anda tidak dapat melihat file di bawah titik mount. Jika Anda memiliki nfs mount, coba umount mereka dan cari untuk melihat apakah ada sesuatu yang tidak sengaja ditulis dalam direktori tersebut sebelum mount.
2) file rusak: Saya melihat ini kadang-kadang di windows ke linux transfer file melalui SMB. Satu file gagal menutup deskriptor file dan Anda menghasilkan file sampah 4GB.
Ini bisa lebih membosankan untuk diperbaiki, karena Anda perlu menemukan subdirektori tempat file tersebut berada, tetapi mudah untuk memperbaikinya karena file itu sendiri dapat dengan mudah dilepas. Saya menggunakan
du
perintah dan melakukan daftar subdir root untuk mencari tahu di mana ruang file sedang digunakan.Jumlah direktori tingkat atas biasanya terbatas, jadi saya mengatur bendera yang dapat dibaca manusia
-h
untuk melihat subdirektori mana yang merupakan space hog.Kemudian Anda masuk ke anak bermasalah dan ulangi proses untuk semua item di dalamnya. Untuk mempermudah menemukan barang-barang besar, kami sedikit mengubah du dan memasangkannya dengan semacam.
yang menghasilkan keluaran terkecil hingga terbesar dengan ukuran byte untuk semua file dan direktori
Setelah Anda menemukan file yang terlalu besar, biasanya Anda bisa menghapusnya.
sumber
Anda bisa mencari tahu file mana yang terbuka dengan lsof. Ini dapat menghasilkan banyak output, jadi saya membatasi contoh di bawah ini untuk baris yang diakhiri dengan log:
sumber
Jika beberapa file dihapus tetapi masih digunakan oleh beberapa proses maka ruang itu tidak akan dirilis. Dalam hal ini, baik restart proses yang menggunakan file atau membatalkan file. Itu selalu praktik yang baik untuk membatalkan file seperti itu daripada menghapusnya. Untuk menemukan file yang dihapus tetapi masih digunakan oleh beberapa proses
itu akan memberikan proses id dan file descriptor. Untuk membatalkan file yang dihapus oleh deskriptor file
sumber
Ketikkan perintah
Yang akan menampilkan daftar file yang menyimpan memori dengan kutipan yang dihapus.
Perhatikan pid (id Proses) file
Bunuh prosesnya
Memori akan dirilis oleh proses
Periksa dengan perintah
sumber
Selain apa yang telah dijelaskan, masalahnya mungkin ada titik pemasangan lain dari direktori file yang dihapus pada perangkat disk lain yang terpasang pada server yang sama. Periksa tunggangan saat ini dan entri fstab.
sumber
Masalah aktual yang diamati di alam liar:
Pastikan Anda menghapus file yang sebenarnya dan tidak symlink ke file. Ini dapat menjadi kasus untuk file log terutama.
sumber