Ketika saya menjalankannya df
menunjukkan perangkat root penuh.
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 9.9G 9.4G 0 100% /
Saya melihat inode
penggunaannya dan ada cukup banyak ruang yang tersedia untuk perangkat root
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 640K 103K 538K 16% /
Tetapi, ketika saya menjalankan du
perintah, itu menunjukkan saya hanya menggunakan 2G
dari 9.9G
.
ip-XXX-XXX-XXX-XXX:/$ du -xh --max-depth=1
14M ./etc
4.0K ./mnt
96K ./tmp
3.5M ./bin
0 ./sys
964K ./boot
4.0K ./srv
0 ./dev
55M ./lib
25M ./root
1.1G ./usr
4.0K ./opt
846M ./var
4.3M ./sbin
23M ./home
16K ./lost+found
0 ./proc
2.0G .
Itu hanya membuatku gila dan menarik juga. Ini adalah masalah besar bagi kami karena root disk /
penuh dan beberapa fungsi di situs kami gagal.
Tolong bantu saya menyelesaikan (juga mengerti) masalah ini.
Terima kasih.
linux
debian
filesystems
disk-space
Rakesh Sankar
sumber
sumber
+df +du
pertanyaan lain di Unix & Linux .du -x /
dan saya melihat hanya 2G yang digunakan dan saya menghitung ukuran inode160M
. Itu membantu saya memahami barang-barang tetapi saya hanya ingin menyelesaikan masalah ini.du
sebagai root? Kalau tidak, itu hanya dapat melaporkan file yang dapat Anda akses.root
ncdu
program hebat , yang membantu memvisualisasikan penggunaan disk.Jawaban:
Ketika file dihapus di * nix, mereka terus hidup pada disk (dan mengambil ruang disk) selama proses itu terbuka. Ini cukup umum untuk mengambil keuntungan dari ini untuk "mengamankan" file temp dengan membuat mereka dengan ukuran kecil, menghapusnya, dan kemudian menggunakan file yang dihapus untuk menyimpan data tanpa harus khawatir tentang proses lain (mudah) mendapatkan akses ke sana, jadi jumlah ruang dalam file yang dihapus dapat tumbuh cukup besar jika, katakanlah, database temp atau sesi editing multimedia sedang ditangani dengan cara ini. Kemungkinan lain untuk bagaimana Anda bisa memiliki begitu banyak ruang "hilang" adalah jika sistem telah ditingkatkan (beberapa kali) tanpa me-reboot atau memulai kembali program, sehingga semua perpustakaan lama Anda. Jadi diadakan oleh program yang dimulai sebelum tingkatkan dan masih berjalan.
df
melihat ruang yang digunakan oleh file-file ini karena hanya melihat seberapa banyak ruang yang dialokasikan pada perangkat, tetapidu
tidak melihatnya karena tidak ada entri direktori yang sesuai.Ruang terpakai "Tersembunyi" seperti ini hanya bisa dibebaskan ketika proses yang telah menghapus file dibuka tutup. Anda dapat menemukan proses-proses ini dengan
fuser
perintah dan menghentikannya (atau, untuk banyak daemon, mengirim sinyal untuk menutup dan membuka kembali file yang terbuka).sumber
hidden
ruang yang digunakan, saya mencoba menjalankanfuser
perintah untuk melihat semua file yang sedang digunakan oleh suatu proses tetapi tidak terhubung - saya tidak dapat menemukan. Apakah Anda memiliki perintah atau arahan yang menuntun saya untuk menemukannya? Ini adalah perintah yang saya gunakanfuser -v -a /
Ada saat-saat ketika disk menjadi penuh, kemudian dapat menjadi bingung sampai reboot / remount bahwa disk masih penuh, bahkan ketika Anda telah menghapus banyak file.
sumber
Di pihak saya, saya cukup restart syslogd untuk mendapatkan ruang disk kembali. 3GB saya hilang! Server saya sudah aktif dan berjalan selama 250 hari.
sumber
Ada cara untuk membersihkan ruang tanpa me-restart aplikasi. Berikut detailnya:
Katakanlah Anda memiliki proses
foo
menjalankan dan membuat file 2 GB bernama abc.log. Sekarang katakan abc.log ini dihapus oleh orang lain.Dapatkan
foo
pid (misalkan 123). Maka/proc/123/fd
akan muncul daftar deskriptor file yang dibuka olehfoo
. Satu dengan abc.log akan ditampilkan sebagai terhapus. Katakanlahfd
abs.log adalah 111. Jika Anda menjalankanless /proc/123/fd/111
, itu akan tetap menunjukkan kepada Anda semua data 2 GB.Lari
echo " " > /proc/123/fd/111
. Ini akan menimpa konten dengan string kosong. Setelah perintah ini, jika Anda mencobanyadf
akan menunjukkan tambahan 2 GB yang dipulihkan dengan membersihkan abc.log.Itu dia. Saya mencoba ini pada CentOS dan berhasil.
sumber