"Disk kuota terlampaui" saat menulis ke / tmp, tetapi banyak ruang (linux)

9

saya punya VPS. Itu dikelola dengan paralel paralel terkenal.

hari ini saya mulai melihat pesan (melalui wordpress pada awalnya, tetapi juga dari shell baris perintah), mengatakan: "Kuota disk terlampaui".

user@machine:~$ echo aaa > /tmp/aaa
-bash: /tmp/aaa: Disk quota exceeded

tapi ada banyak ruang di mesin, dan hanya 1 partisi.

user@machine:~$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/vzfs             100G   24G   77G  24% /

Saya menghapus semua file dari / tmp / * tetapi masih.

Saya tidak tahu apa-apa tentang "vzfs", mungkin itu penyebabnya?

Apa yang salah? dan bagaimana cara memperbaikinya?

Larutan!

(jika Anda TIDAK menggunakan Parallels Plesk, lihat jawaban @ Adalee)

Lihat solusi @deltik, yang relevan dengan sistem Parallel, seperti dalam kasus saya.

df -i segera memiliki jumlah inode yang konyol: 18.446.744.069.620.218.961 yang gila untuk situs web wordpress.

Saya lebih lanjut mengeksplorasi dan menemukan antrian qmail penuh dengan inode (penuh dengan beberapa peretas hacker untuk menggunakan mesin saya untuk spam, dan kegagalan balasan)

memperbaiki qmail tidak relevan di sini, tetapi solusi saya relevan:

  1. menghentikan layanan qmail
  2. saya tidak dapat mengunduh qmhandle ke sistem kuota berlebihan, jadi saya harus
  3. ekstrak dan unggah skrip ke situs web lain,
  4. hapus antrian dengan perintah ini:
  5. perl & lt; (wget -O - http://link.to.my/script.pl ) -D

dengan cara ini skrip berjalan langsung dari web (yang bukan praktik yang aman, tetapi saya telah menempatkan skrip itu sendiri), dengan opsi baris perintah.

terima kasih @deltik untuk mengetahui dan segera mengenali pengaturan aneh ini di tempat, dan menyediakan sarana untuk diagnosa lebih lanjut !!!

Berry Tsakala
sumber
Linux memiliki pengaturan alokasi kuota disk berbasis pengguna atau grup. Periksa juga 5 Langkah untuk Mengatur Kuota Disk Kelompok dan Pengguna di UNIX / Linux
DavidPostill
1
Iya nih, vzfs (sistem file OpenVZ "virtual") dapat menjadi penyebabnya. Saya telah melihat banyak penyedia OpenVZ yang menjual server yang sangat murah, tetapi menetapkan batas yang sangat tidak masuk akal.
grawity
Jika Anda memiliki solusi, bahkan jika spesifik, silakan posting sebagai jawaban. Anda selalu dapat menerima jawaban orang lain.
Daniel B

Jawaban:

15

Anda memiliki sistem file VZFS, yang berarti bahwa VPS Anda adalah mesin virtual Parallels Virtuozzo. Dalam Virtuozzo penyedia hosting dapat menetapkan batasan pada banyak parameter, termasuk alokasi apa yang Anda dapatkan dengan VZFS.

Penyebab: Kehabisan Inode (Paling Umum)

Setelah bertahun-tahun bekerja dengan ratusan pelanggan Virtuozzo VPS yang memiliki masalah tidak dapat membuat file, meskipun tampaknya ada banyak ruang kosong, sebagian besar dari mereka telah mencapai batas inode. Jalankan perintah ini untuk melihat alokasi inode ( Inodes ), inode yang digunakan ( IUsed ), sisa inode ( IFree ), dan persentase inode yang digunakan ( IUse% ):

df -i

Memiliki 100% penggunaan inode banyak terjadi. Penyebab umum dalam pengalaman saya:

  • Bounceback email spam
  • Email spam keluar diantri
  • Banyak email masuk disimpan
  • Beberapa pengguna mengatur pengumpulan sampah sesi PHP mereka ( session.gc_maxlifetime ) hingga lebih dari seratus tahun
  • Terlalu banyak file cache umum
  • Objek cache diaktifkan di plugin WordPress W3 Total Cache
  • Log kesalahan Magento (file baru dihasilkan untuk setiap kesalahan)
  • Program / skrip yang tidak dikonfigurasi dengan buruk atau dirancang dengan buruk yang membuat banyak file dan lupa menghapusnya

Penyelesaian masalah

Jika Anda menemukan bahwa Anda rendah atau keluar dari inode tetapi tidak tahu di mana sebagian besar dari mereka, saya punya Bash satu-liner yang mencari direktori saat ini dan menghitung inode pada kedalaman folder 1:

for i in $(find $(pwd) -maxdepth 1 -type d | sort); do echo -e "$(find "$i" | wc -l)\t: $(readlink -f "$i")"; done | sort -nr

Anda dapat terus mengubah direktori kerja saat ini mulai dari / sampai Anda menemukan pelakunya menggunakan alokasi inode Anda.

Penjelasan

VPS Anda menggunakan sistem file VZFS, yang merupakan bagian dari Parallels Virtuozzo (bukan OpenVZ, yang serupa dan didasarkan pada teknologi yang sama, tetapi OpenVZ tidak menggunakan VZFS).

Karena cara Virtuozzo menyimpan file dalam VZFS, inode seringkali lebih terbatas daripada di sistem file lain seperti ext4 atau XFS. Host melacak semua file ini, dan akan menguntungkan bagi penyedia hosting untuk tidak membiarkan satu VPS mengambil ratusan juta inode. Akibatnya, penyedia hosting dapat menetapkan batas inode menjadi rendah, seperti 1.000.000 inode.

Setelah bertahun-tahun bekerja dengan ratusan pelanggan yang kehabisan alokasi inode mereka di Virtuozzo, masalah kuota disk "misterius" ini tidak mengejutkan saya lagi.

Penyebab: Batas Virtuozzo Lainnya

Persentase yang sangat kecil dari pelanggan Virtuozzo VPS yang pernah saya kerjakan memiliki masalah sistem file karena mereka mencapai batas lain. Anda dapat melihat beberapa (tetapi tidak semua) batasan dengan perintah ini:

cat /proc/user_beancounters

Penyelesaian masalah

Jika failcnt kolom memiliki nilai lebih besar dari 0 atau a held nilai kolom sama dengan yang sesuai limit nilai, Anda telah mencapai batas.

Anda dapat melihat apa yang masing-masing parameter aktif Wiki OpenVZ di sini . Parameter mungkin "primer", "sekunder", atau "tambahan".

Anda harus menghubungi penyedia hosting Anda untuk bantuan lebih lanjut jika ternyata Anda tidak dapat mengurangi held hitung batas yang telah dicapai VPS Anda.

Jawaban ini dapat diperluas banyak tergantung pada kacang mana yang dimaksimalkan, karena batas yang berbeda tercapai menyebabkan gejala yang berbeda.

Penyebab: Batas berkurang setelah dipukul

Mengenai /proc/user_beancounters atau df -i, terkadang, administrator sistem Virtuozzo dapat mengurangi limit dari parameter di bawah held nilai.

Misalnya, jika batas asli dari diskinodes parameter 1.500.000 dan Anda mencapai batas maka seseorang di penyedia hosting Anda menetapkan batas inode Anda menjadi 1.000.000, Anda akan melihat laporan inode aneh dari df -i itu tidak masuk akal.

Di ujung Anda, Anda bisa melihat jumlah yang tidak masuk akal, seperti 18.446.744.069.620.218.961 .

Saya menganggap ini sebagai perilaku seram dari penyedia hosting, terutama jika mereka tidak memberi tahu Anda, karena nilai-nilai tidak biasa yang Anda lihat bertentangan dengan pengetahuan pengguna super yang tidak memiliki pengalaman dengan Virtuozzo / OpenVZ, yang mengarah pada menyesatkan saran ( contoh , contoh lain ).

Penyelesaian masalah

Hubungi penyedia hosting Anda. Tunjukkan pada mereka apa yang Anda temukan dan bekerjalah dengannya untuk mendapatkan kacang yang ditahan di bawah batas.

Jika mereka menolak untuk membantu Anda, tinggalkan penyedia hosting Anda dan temukan yang lain yang tidak menggunakan virtualisasi Virtuozzo / OpenVZ. Virtualisasi KVM, virtualisasi VMware, virtualisasi Xen, atau server bare metal akan tunduk pada batas yang jauh lebih sedikit daripada Virtuozzo / OpenVZ.

Penjelasan

Penyedia hosting Anda mungkin telah mengaudit atau merespons lansiran dan menemukan bahwa VPS Anda menggunakan terlalu banyak sumber daya tertentu (hampir selalu batas inode, yang merupakan diskinodes parameter di akhir mereka).

Admin Virtuozzo yang tidak berpengalaman di penyedia hosting percaya bahwa mereka dapat membatasi masalah dengan mengurangi batas untuk sesuatu yang lebih rendah dari penggunaan sumber daya yang sebenarnya. Dalam hal inode, Anda mungkin memiliki alokasi yang lebih rendah, seperti 1.000.000, meskipun penggunaan aktual Anda saat ini mungkin lebih tinggi, seperti 1.500.000.

Admin Virtuozzo di panel kontrol mereka akan melihat penggunaan aktual Anda dan batas baru, tetapi Anda akan melihat angka palsu yang mungkin sangat tinggi karena cara Virtuozzo melakukan virtualisasi.

Admin Virtuozzo lalai tidak akan memberi tahu Anda tentang perubahan ini, itulah sebabnya Anda harus menghubungi penyedia hosting Anda jika ini terjadi pada Anda.

Deltik
sumber
saya tidak tahu apakah 18.446.744.069.620.218.961 adalah jumlah inode yang dapat diterima untuk situs yang menjalankan wordpress ...
Berry Tsakala
@BerryTsakala: Apakah itu jumlah inode yang digunakan atau jumlah total inode yang didukung oleh sistem file? Jika Anda dapat memberikan hasil lengkap dari perintah, kami dapat yakin. Berdasarkan apa yang Anda tulis sejauh ini, sepertinya host Anda tidak memiliki batas inode yang ditetapkan, yang berarti bahwa saya akan salah. Saya akan memiliki jawaban yang diperbarui untuk Anda yang mengeksplorasi batas Virtuozzo lebih lanjut.
Deltik
@BerryTsakala: Baru saja terpikir oleh saya bahwa host Anda mungkin melakukan sesuatu yang jahat dan berharap Anda tidak akan menyadarinya. Saya akan segera memperbarui jawaban saya dengan perincian.
Deltik
Terima kasih! saya sudah mulai menghapus file yang berlebihan. Saya juga menemukan spammer menyalahgunakan sistem, dan email sedang mengisi antrian qmail.
Berry Tsakala
BTW, inode tidak merangkum: df -i 100 triliun kali lebih besar dari tje sum yang dikembalikan melalui perintah find ... Apakah Anda tahu cara menemukan perbedaan?
Berry Tsakala
4

"Disk kuota terlampaui" tidak berarti bahwa tidak ada ruang yang tersedia pada disk Anda, tetapi Anda tidak diperbolehkan menggunakan begitu banyak ruang.

Secara umum, kuota adalah beberapa batasan yang ditetapkan oleh administrator - jumlah maksimum proses yang dapat Anda jalankan, berapa banyak ruang yang dapat Anda tempati, berapa banyak file yang dapat Anda miliki, dll. Kuota disk dapat ditetapkan untuk jumlah inode dan blok disk maksimum.

Coba jalankan quota dan quota -g (Atau, Anda dapat menjalankan repquota -u dan repqouta -g ) untuk melihat apakah pengguna Anda dibatasi dengan cara ini dan caranya. Jika ya, Anda dapat mengedit kuota itu dengan edquota atau matikan quotaoff perintah. Anda mungkin harus masuk sebagai root untuk ini, tergantung pada pengaturan Anda.

Situs ini mencakup beberapa contoh cara bekerja dengan kuota dan juga berisi tautan ke halaman manual ke perintah yang bermanfaat.

Adalee
sumber