Saya memiliki server file yang digunakan untuk menyimpan file. File mungkin berada di sana selama seminggu, atau selama satu tahun. Sayangnya, ketika saya menghapus file dari server, df
perintah tidak mencerminkan ruang kosong. Jadi akhirnya, server terisi ( df
menunjukkan 99%), dan skrip saya tidak mengirim file lagi di sana, kecuali mungkin ada beberapa lusin GB ruang kosong di sana.
Saya mendapat noatime
bendera pada partisi yang dipasang jika itu membuat perbedaan.
linux
filesystems
disk-space-utilization
Aminah Nuraini
sumber
sumber
Jawaban:
Menghapus nama file sebenarnya tidak menghapus file. Beberapa proses lain menahan file terbuka, menyebabkannya tidak dihapus; restart atau bunuh proses itu untuk melepaskan file.
Menggunakan
untuk mengetahui proses mana yang menggunakan file yang dihapus (tidak ditautkan).
sumber
sebagai Ignacio menyebutkan, menghapus file tidak akan membebaskan ruang sampai Anda menghapus proses yang memiliki pegangan terbuka terhadap file itu.
Namun demikian, Anda dapat merebut kembali ruang tanpa membunuh prosesnya. Yang perlu Anda lakukan adalah menghapus deskriptor file.
Pertama jalankan lsof | grep dihapus untuk mengidentifikasi proses memegang file
Kemudian jalankan:
kemudian
"1" akan menjadi deskriptor file. Sekarang ketik "> FD" untuk mendapatkan kembali ruang itu
Anda mungkin perlu mengulangi operasi jika ada proses lain yang menahan file.
sumber
> FD
dilakukan?>
perintah ini memiliki nama? saya harus beralih dari zsh ke bash agar dapat menggunakannya. Apakah mungkin menjalankannya di zsh?Satu kemungkinan adalah bahwa file yang Anda hapus memiliki lebih banyak referensi di sistem file. Jika Anda telah membuat hardlink, beberapa nama file akan menunjuk ke data yang sama, dan data (konten yang sebenarnya) tidak akan ditandai sebagai bebas / dapat digunakan sampai semua referensi telah dihapus. Sebelum Anda menghapus file, baik itu stat (Entri bernama Tautan) atau lakukan ls-l pada mereka (harus menjadi kolom kedua).
Jika ternyata file-file tersebut dirujuk di tempat lain, saya kira Anda harus ls -i file untuk menemukan nomor inode, dan kemudian melakukan pencarian dengan -inum <inode-number> untuk menemukan referensi lain ke file itu (Anda mungkin juga ingin menggunakan -mount untuk tetap berada dalam sistem file yang sama juga).
sumber
File masih terkunci oleh proses membukanya. Untuk mengosongkan ruang, lakukan langkah-langkah ini:
Jalankan
sudo lsof | grep deleted
dan lihat proses mana yang menahan file. Contoh hasil:Matikan proses menggunakan
sudo kill -9 {PID}
. Dalam sampel di atas, PID adalah 1623.Jalankan
df
untuk memeriksa apakah ruang sudah dibebaskan. Jika masih penuh, mungkin Anda perlu menunggu beberapa detik dan memeriksa lagi.sumber
Jika partisi telah dikonfigurasikan untuk memesan ruang disk tertentu hanya untuk penggunaan root,
df
tidak akan menyertakan ruang ini jika tersedia.Bahkan setelah ruang akan direklamasi 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
dan menghitung% aktual Anda sendiri.
Untuk mengubah% disk yang dicadangkan untuk penggunaan hanya root, jalankan
sumber
Jawaban lainnya benar: Jika Anda menghapus file, dan ruang tidak dibebaskan, biasanya karena file tersebut tetap terbuka, atau ada hardlink lain untuk itu.
Untuk membantu dalam pemecahan masalah, gunakan alat yang memberi tahu Anda di mana ruang drive dihabiskan: Anda dapat menggunakan
du
untuk mendapatkan gambaran di mana ruang akan pergi. Lebih baik lagi, gunakan alat grafis seperti xdiskusage (ada banyak seperti ini) untuk memburu pelakunya. xdiskusage dan teman-teman memungkinkan Anda menelusuri ruang-ruang babi terbesar untuk menemukan ke mana ruang akan pergi.Dengan begitu, Anda akan dengan cepat menemukan file yang masih menempati ruang karena hardlink kedua. Ini juga akan menunjukkan ruang ditempati oleh dihapus, tetapi membuka file (sebagai (izin ditolak), saya percaya, karena tidak dapat membaca nama file).
sumber
Karena saya tahu banyak dari Anda melakukan ini untuk redhat
/var
dan gzipping file mengharapkan FS menyusut, tetapi malah tumbuh, pastikan Anda service syslog restart. danakan menunjukkan ini padamu.
sumber
Satu lagi opsi: Disk mungkin penuh karena proses yang terus-menerus membuat data: log, core dan sejenisnya. Ada kemungkinan bahwa ruang sebenarnya dibebaskan tetapi segera diisi. Sebenarnya saya sudah melihat kasus seperti itu.
df
dalam hal ini sama sekali tidak memberikan gambar lubang. Gunakandu
untuk mempelajari lebih lanjut.sumber
Saya menggunakan EXT2, FSCK membantu saya dalam situasi ini. Coba shudown -F sekarang, setelah beberapa restart dan fscks, saya melihat setengah ruang yang digunakan.
sumber
Untuk memeriksa file yang terhapus yang telah ditempati memori, masukkan perintah
Ini akan menunjukkan file yang dihapus yang menyimpan memori.
Kemudian bunuh proses dengan pid atau nama
periksa sekarang Anda akan memiliki memori yang sama
Jika tidak ketikkan perintah di bawah ini untuk melihat file mana yang menempati memori
menyebutkan ukuran apa pun itu akan menunjukkan file mana yang menempati di atas ukuran ambang dan menghapus file Anda akan menemukan memori dipertahankan
sumber
buka terminal coba perintah ini df -Lalu gunakan perintah ini sudo du -h --max-depth = 1 / dalam perintah ini Anda akan menemukan detail penggunaan disk kemudian buka sebagai pengguna root menghapus file (root-local-share-trash) dan hapus file Anda
sumber