Memperbarui ukuran bebas disk tanpa me-reboot host

23

Saya menggunakan RHEL4 dengan LVM2 di atasnya. Kadang-kadang bahkan setelah menghapus file besar lebih dari satu GB, ukuran partisi tidak diperbarui ketika menggunakan dfperintah.

-bash-3.00$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/sys-root  3.9G  1.4G  2.3G  39% /
/dev/cciss/c0d0p1     251M   19M  219M   8% /boot
/dev/mapper/sys-home  250G  125G  113G  53% /home
/dev/mapper/sys-tmp   3.9G   41M  3.7G   2% /tmp
/dev/mapper/sys-var   3.9G  3.6G   98M  98% /var

Tetapi ketika saya memeriksa menggunakan du itu menunjukkan ukuran yang tepat

-bash-3.00$ sudo du -sh /var/
 179M   /var/

Anda dapat melihat di sana bahwa keluaran df menunjukkan / partisi var menjadi 3.6Gb digunakan tetapi du menunjukkan bahwa hanya 179Mb.

Sekarang masalahnya adalah sinkronisasi atau partprobe tidak memperbarui informasi. Tapi tentunya me-reboot host akan menyelesaikan masalah. Tetapi karena ini adalah server produksi, saya tidak dapat mem-boot ulangnya. Apakah ada cara saya dapat memperbarui informasi disk secara manual tanpa me-reboot host?

Kannan Mohan
sumber
1
Anda mungkin telah membuka file yang dihapus (yaitu proses yang berpegang pada file yang dihapus). Cobalah sesuatu seperti lsofmencari tahu. Digunakan / tersedia tidak disimpan dalam tabel partisi, partprobe (atau semua jenis partisi baca ulang) tidak akan membantu sama sekali.
Mat

Jawaban:

28

Ketika sebuah file dihapus / dihapus / tidak ditautkan, jika masih dibuka oleh proses apa pun maka hanya entri direktori untuk file yang dihapus, bukan data file. Ketika file benar-benar ditutup oleh semua proses, data dikembalikan ke kolam ruang bebas. Ini fitur karena Anda dapat memiliki file anonim dengan cara ini.

Untuk melihat apakah Anda memiliki file yang dihapus terbuka pada sistem file, jalankan salah satu dari perintah ini, di mana /mount/pointtitik mount ( /vardalam kasus Anda):

lsof +L1 /mount/point

Ini artikel tentang terbuka, file linknya harus membantu menjelaskan hal ini lagi.

Nuno Pereira
sumber
2
Saya menghapus log tetapi dftidak menunjukkan ruang kosong sampai saya memulai kembali proses server. Terima kasih!
fet
Lebih baik panggil lsof dengan 'lsof + L1' yang menunjukkan file yang dihapus. Membuat saran edit
Nuno Pereira
Lalu bagaimana cara menutupnya?
faressoft