"Tidak ada ruang yang tersisa di perangkat", df menunjukkan perbedaan

15

Beberapa jam yang lalu partisi root saya terisi, saya memindahkan file darinya dan melaporkan:

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda1             183G  174G     0 100% /

Jadi harus ada 9GB gratis, tetapi faedah laporan 0 dan Penggunaan masih 100%.

Saya diuji sebagai root, misalnya

# echo test >a ; cat a
test

itu bekerja seperti yang diharapkan; namun sebagai pengguna normal, saya masih mendapatkan kesalahan:

$ echo test >a ; cat a
bash: echo: write error: No space left on device

Direktori home root tempat saya melakukan tes positif dan direktori home saya berada di partisi yang sama. Entri fstab adalah:

/dev/hda1 / ext3 noatime,defaults,errors=remount-ro 0 1
menandai
sumber

Jawaban:

34

Sebagian besar sistem pengarsipan menyimpan persentase tertentu untuk root, sehingga Anda masih bisa login sebagai root dan menyelesaikan masalah diskspace. Biasanya ini 5%. 9GB kira-kira 5% dari 183GB, jadi ini masuk akal. Anda dapat melihat berapa banyak yang dipesan menggunakan tune2fs:

# tune2fs -l /dev/sda1 | grep -i reserved
Reserved block count:     936488
Reserved GDT blocks:      1019
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)

Anda dapat memodifikasinya menggunakan

# tune2fs -m 3 /dev/sda1
tune2fs 1.41.9 (22-Aug-2009)
Setting reserved blocks percentage to 3% (561893 blocks)

Pada drive besar modern 5% mungkin sedikit berlebihan, dan Anda mungkin ingin mengaturnya lebih rendah. Anda tidak ingin mengaturnya menjadi nol.

David Pashley
sumber
1
Tidak percaya saya tidak tahu itu. Saya lebih baik tidak mengatakan berapa lama saya telah menggunakan Linux sekarang ...
tandai
@ nfm Hai, saya telah melakukan administrasi Linux dasar pada home box selama bertahun-tahun dan tidak pernah mendengarnya. +1 untuk informasi hebat :-)
Topher Fangio
5

im dengan bob, coba df -i, jika Anda memiliki banyak crontab keluaran buruk misalnya, direktori / var / spool / clientmqueue / Anda bisa diisi

CDATA
sumber
3

Lihatlah INODES juga. Dalam instalasi "vanilla", jika Anda harus banyak file kecil mereka dapat mengkonsumsi inode, tetapi tidak ruang. Anda akan melihat bahwa Anda memiliki ruang yang tersedia, tetapi karena inode Anda penuh, Anda tidak akan dapat menggunakan ruang ini.

Bob Rivers
sumber
3
Kebanyakan unix modern memiliki jumlah inode yang sangat besar bahkan pada sistem file kecil. Kadang-kadang masalah tetapi mengingat bahwa pengguna dapat membuat file c sama sekali, itu tidak mungkin menjadi masalah inode. (entri direktori memerlukan inode bahkan jika mereka tidak memerlukan ruang apa pun).
chris
2

"Secara default, setiap sistem file di Unix memiliki beberapa ruang yang disediakan untuk superuser (root). Ini berarti bahwa tidak ada pengguna Unix biasa yang dapat mengisi sistem file Anda hingga 100%, dan karena itu selalu akan memiliki ruang kosong yang cukup untuk melanjutkan fungsi normal. "

Dari: http://www.unixtutorial.org/commands/tune2fs/

Dave P.
sumber
1

Hal lain yang perlu diperiksa adalah melihat apakah ada file terbuka di sistem file itu (terutama log). Menghapus file tidak akan menghapus ruang pada disk hingga file benar-benar ditutup.

Chris Anderson
sumber
0

Saya berani bertaruh $ 1 bahwa Clyde punya jawabannya. Suatu proses memiliki file terbuka di perangkat itu. Di linux, file tidak benar-benar dihapus sampai proses memegangnya terbuka melepaskannya.

Saya akan mulai dengan: lsof | grep hda1

Greeblesnort
sumber