Tidak dapat menulis ke disk tetapi disk tidak penuh

36

Saya menggunakan Ubuntu 12.04 dan tidak dapat menulis ke file apa pun, bahkan sebagai root, atau melakukan operasi lain yang memerlukan penulisan. Tidak ada proses yang perlu ditulis, sehingga semuanya gagal. dfbilang aku punya banyak ruang:

Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       30G   14G   15G  48% /
udev            984M  4.0K  984M   1% /dev
tmpfs           399M  668K  399M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            997M     0  997M   0% /run/shm

Semua hasil yang saya temukan untuk "tidak dapat menulis ke disk" adalah tentang disk penuh yang sah. Saya bahkan tidak tahu harus mulai dari mana di sini. Masalahnya muncul entah dari mana pagi ini.

Entri log terakhir PHP adalah:

gagal: Tidak ada ruang tersisa di perangkat (28)

Vim mengatakan:

Tidak dapat membuka (file) untuk menulis

Aplikasi lain memberikan kesalahan serupa.

Setelah menghapus ~ 1GB hanya untuk memastikan, masalahnya tetap ada. Saya juga telah reboot.

df -i kata

Filesystem      Inodes   IUsed  IFree IUse% Mounted on
/dev/xvda1     1966080 1966080      0  100% /
udev            251890     378 251512    1% /dev
tmpfs           255153     296 254857    1% /run
none            255153       4 255149    1% /run/lock
none            255153       1 255152    1% /run/shm
felwithe
sumber
14
Silakan posting output "df -i".
EEAA
1
@ EEAA diedit. Anda benar, df -i mengatakan 100%. Apa artinya ini? Mengapa itu berbeda?
felwithe
3
IIRC, terlalu banyak file dalam satu direktori akan memiliki gejala yang mirip atau tidak sama. Apa "terlalu banyak" akan bervariasi di antara sistem file.
MSalters

Jawaban:

59

Anda kehabisan inode. Kemungkinan Anda memiliki direktori di suatu tempat dengan banyak file yang sangat kecil.

EEAA
sumber
9
Hanya ingin menambahkan bahwa aku bahkan tidak tahu rm bisa gagal. Ini merupakan pendidikan.
felwithe
2
@felwithe, saya bisa membayangkan itu find . -name sess\* -exec rm {} +akan berhasil.
Carsten S
3
@felwithe Apa yang disarankan orang lain. rm mungkin bekerja dengan baik, tetapi shell memperluas *gumpalan menjadi terlalu banyak data, dan muntah sebelum bahkan sampai pada titik meminta rm.
CVn
8
@ Karsten: Atau find . -name sess\* -deleteyang saya temukan lebih mudah diingat, dan umumnya lebih efisien.
MSalters
2
@Kaslai batasnya tidak ada RAM, tetapi sistem membatasi ARG_MAX. Standar POSIX tidak menentukan secara tepat bagaimana argumen baris perintah diukur terhadap ARG_MAX sayangnya. Beberapa implementasi tidak memiliki batas sehingga tidak mendefinisikan ARG_MAX, tetapi ini bukan opsi populer karena membuat terlalu banyak program gagal dikompilasi.
James Youngman
7

Rupanya, OP punya jawaban untuk masalah khusus mereka. Namun, untuk kelengkapan, gejala OP juga dapat terjadi jika sistem file telah di-remount hanya baca. Ini telah terjadi pada saya dengan menggunakan VM Linux yang penyimpanannya pada sistem disk berkerumun yang menderita kesalahan intermiten yang jarang terjadi. Kadang-kadang, kesalahan akan menyebabkan filesystem hanya akan dibaca kembali. Gejala eksternal yang akhirnya dapat diamati adalah berbagai layanan menjadi tidak responsif saat RAM terisi (dengan disk yang tidak dapat dicairkan).

Pada saat itu, satu-satunya resolusi adalah me-reboot sistem (kehilangan apa pun log tidak tertulis yang ada). Upaya untuk mengirim ulang RW gagal. (Sayangnya, saya tidak ingat pesan kesalahan yang dikembalikan ketika mencoba remount ini.)

Jadi, ..., bukan masalah OP, tetapi orang lain yang tiba di halaman ini dapat mengambil manfaat dari informasi ini.

Eric Towers
sumber
5
Tidak sebenarnya; ketika filesystem telah di-remount hanya baca Anda mendapatkan kesalahan yang menyatakan filesystem hanya baca, bukan di luar angkasa.
psusi
1
@psusi: Saya tidak. Saya mendapat berbagai kesalahan, termasuk "filesystem full". Jika itu telah berubah dalam dua atau tiga tahun terakhir, itu akan menjadi hal yang baik.
Eric Towers
1
Saya mencoba untuk memindahkan file ke sistem file ZFS read-only di Linux beberapa hari yang lalu. Kesalahannya cukup jelas mengatakan "sistem file read-only".
CVn
Nggak; telah seperti itu selama 30+ tahun. Menulis ke hanya baca fs mengembalikan -EROFS; a menulis ke fs lengkap mengembalikan -ENOSPC.
psusi
4
@psusi: Saya melihat bahwa Anda hidup di alam semesta fantasi di mana programmer selalu melakukan hal yang benar daripada membuat pesan kesalahan mereka sendiri. Saya sepertinya tidak tinggal di sana.
Eric Towers