Apakah ada cara untuk memberitahu kernel untuk mengembalikan ruang disk kosong sekarang? Seperti menulis ke sesuatu di / proc /? Menggunakan Ubuntu 11.10 dengan ext4.
Ini mungkin merupakan tema lama dan sangat berulang. Setelah menekan 0 spasi hanya diperhatikan ketika editor saya tidak dapat menyimpan file kode sumber yang telah saya buka, yang ngeri saya sekarang memiliki ukuran 0 byte dalam daftar folder, saya pergi menghapus kesenangan.
Saya menghapus 100-an MB file besar baik dari pengguna dan dari root, dan melakukan beberapa hardlinking juga.
Tepat sebelum saya melakukannya apt-get clean
ada lebih dari 900MB di / var / cache / apt / arsip, sekarang hanya ada 108KB:
# du
108 /var/cache/apt/archives
Satu jam kemudian masih tidak ada ruang kosong dan tidak dapat menyimpan file berharga saya dibuka di editor, tetapi perhatikan perbedaan di bawah ini:
# sync; df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda4 13915072 13304004 0 100% /
Ada saran? Saya mematikan beberapa layanan / proses tetapi tidak yakin bagaimana memeriksa siapa yang mungkin secara aktif memakan ruang disk.
Info lebih lanjut
# dumpe2fs /dev/sda4
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 884736
Block count: 3534300
Reserved block count: 176715
Free blocks: 422679
Free inodes: 520239
First block: 0
Block size: 4096
Fragment size: 4096
Jawaban:
Periksa dengan
lsof
untuk melihat apakah ada file yang ditahan terbuka. Ruang tidak akan dibebaskan sampai mereka ditutup.akan memberi tahu Anda file yang dihapus masih terbuka.
sumber
mysqld
kunci di / tmp, tetapi banyakapport-gt
penggunaan file yang punah di / var / lib / apt / daftar / parsial / yang tampaknya telah terakumulasi. Jadi saya mungkinkillall apport-gt
tetapi akan menyelidikinya terlebih dahulu.lsof +L1
(pilih file yang terbuka yang telah dibatalkan tautannya).Gunakan
lsof
untuk menemukan file yang dihapus, tetapi terbuka, masih memakan ruang:Temukan entri di
/proc/<pid>/fd/
yang cooresponds ke filehandle:Sekarang, tepat
cat /dev/null
di fd:Perhatikan bahwa inode masih terbuka, tetapi sekarang panjangnya 0
sumber
cat
untuk memotong. Di Bourne shell, cukup> /proc/3446/fd/128
.df
tidak akan menampilkan ruang yang disediakan untukroot
(bahkan saat dijalankan sebagairoot
):Bagaimana cara mengubah "persentase blok yang dicadangkan"
Kurangi ruang yang dipesan hingga 4%
# tune2fs -m4 /dev/sda4
df -h
sekarang menunjukkan 45 juta gratis.Masukkan kembali ke 5%
# tune2fs -m5 /dev/sda4
sumber
df
menampilkan ruang yang dapat digunakan oleh pengguna normal. Saat apt berjalan sebagai root, ruang yang disediakan hanya berguna untuk melindungi dari pengisian yang disebabkan oleh pengguna non-root (= pengguna normal dan layanan yang memiliki pengguna sendiri).mkfs
hari ini harus memesan misalnya. 5% atau 300MB, mana yang kurang . Baru saja mengatur ulang beberapa server saya menjadi 2% dan membebaskan GB!Di Ubuntu, jika Anda menghapus file menggunakan tempat sampah Anda, file Anda kemungkinan besar tidak akan sepenuhnya dihapus.
Bahkan setelah mengosongkan sampah Anda, file Anda akan tetap ada
~/.local/share/Trash/expunged
sampai setelah reboot dan mungkin bahkan lebih lama.Saya belum menemukan alasan yang bagus untuk ini, tetapi jika saya kehabisan ruang, saya selalu secara manual
rm
menghapus file sampah.sumber
Penjelasan:
Grep
lsof
output untuk mengekstrak hanya file yang dihapus. Sed ekstrak id proses dan id arsip yang diajukan dari setiap baris, dan buat string dalam format{pid}/fd/{fid}
. Sementara loop dan output tidak ada untuk setiap file, mengaturnya menjadi kosong.sumber
Saya bertanya-tanya apakah
sync
ada bantuan di sini - tetapi seharusnya tidak, seperti IIRC di sebagian besar ("banyak"?) Sistem, filesystem disinkronkan setiap 30 detik.Saya akan memeriksa log kernel (jadi
dmesg
) untuk menemukan jika sesuatu yang tidak menyenangkan sedang berjalan dan berjalanlsof
untuk melihat apakah ada file yang besar dan terhapus masih terbuka (sebenarnya, saya pikir file yang dihapus akan ditandai seperti itu dalamlsof
output).Dua alasan (salah satunya ditunjukkan dalam pertanyaan yang Anda tautkan) yang dapat menyebabkan file yang dihapus tidak memiliki ruang kosong
unlink()
mengedit file dengan lebih dari satu tautan)Tapi saya tidak tahu alasan spesifik mengapa itu bisa terjadi dengan begitu banyak file ...
sumber
sync
tidak pernah membantu. Adapun log, ini adalah sistem Ubuntu jadi itu sangat buggy, jadi ya mereka biasanya berisik.apport
telah sering digunakan karena setiap pembaruan apt-get setiap malam macet, meskipun / var / crash hanya memiliki 77MB. Juga perhatikanatd
telah membanjiri / var / log / syslog dengan baris berulang sepertiatd[8892]: File a0015c0152ab76 is in wrong format - aborting
mungkin karena beberapa file di / var / spool / cron / atspool semua berukuran 0, membuat masalah melingkar tentu sajaCentOS 6.3 juga melakukan hal yang tidak-benar-benar-mengosongkan-sampah-ketika-Anda-kosong-sampah-kaleng. Saya tidak dapat menemukan cara untuk mendapatkan kembali ruang sampai saya hanya berlari
rm -rf ~/.local/share/Trash/expunged/
. Menyebabkan banyak goresan kepala.sumber