vPSを持っています。悪名高いParallels pleskで管理されています。
今日、メッセージが表示され始めました(wordpressを介して、最初はコマンドラインシェルからも)。「ディスククォータを超えました」と言っています。
user@machine:~$ echo aaa > /tmp/aaa
-bash: /tmp/aaa: Disk quota exceeded
しかし、マシンには多くのスペースがあり、パーティションは1つだけです。
user@machine:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vzfs 100G 24G 77G 24% /
/ tmp/*からすべてのファイルを削除しましたが、まだです。
「vzfs」について何も知りません。おそらくそれが原因なのでしょうか?
何が悪かったのでしょうか?そしてそれをどのように修正できますか?
ソリューション!
(Parallels Pleskを使用しない場合は、@ Adaleeの回答を参照してください)
私の場合と同様に、Parallelのシステムに関連する@deltikのソリューションを参照してください。
df -iはすぐに、とてつもない数のiノードを提供しました:18,446,744,069,620,218,961これは、wordpress Webサイトにとっては異常です。
さらに調査したところ、qmailのキューがiノードでいっぱいであることがわかりました(私のマシンを使用してスパムを送信するためのハッカーの試みでいっぱいで、失敗の返信です)
ここではqmailの修正は関係ありませんが、私の回避策は関係があります。
この方法では、スクリプトはWebから直接実行されます(安全な方法ではありませんが、スクリプトを自分で配置しました)。コマンドラインオプションを指定します。
この特殊な設定をその場で知り、すぐに認識して、さらに診断する手段を提供してくれた@deltikに感謝します。
VZFSファイルシステムがあります。つまり、VPSはParallels Virtuozzo仮想マシンです。 Virtuozzoでは、ホスティングプロバイダーは、VZFSで取得する割り当てなど、多くのパラメーターに制限を設定できます。
何百ものVirtuozzo VPSのお客様と何年にもわたって作業した結果、ファイルを作成できないという問題がありましたが、十分な空き容量があるように見えましたが、その大部分はiノードの制限に達していました。このコマンドを実行して、iノード割り当て(Inodes
)、使用されているiノード(IUsed
)、残りのiノード(IFree
)、および使用されているiノードの割合(IUse%
):
df -i
Iノードの使用率が100%になることはよくあります。私の経験の一般的な原因:
session.gc_maxlifetime
)を100年以上に設定しているIノードの数が少ないか不足しているが、それらのほとんどがどこにあるかわからない場合は、現在のディレクトリを検索し、フォルダーの深さ1でiノードをカウントするこのBashワンライナーがあります。
for i in $(find $(pwd) -maxdepth 1 -type d | sort); do echo -e "$(find "$i" | wc -l)\t: $(readlink -f "$i")"; done | sort -nr
現在の作業ディレクトリを/
から変更し続けて、inode割り当てを使い果たしている原因を見つけることができます。
VPSは、Parallels Virtuozzoの一部であるVZFSファイルシステム上にあります(OpenVZは類似しておらず、同じテクノロジーに基づいていますが、OpenVZはVZFSを使用しません)。
VirtuozzoがファイルをVZFSに保存する方法により、ext4やXFSのような他のファイルシステムにある場合よりも、iノードが制限されることがよくあります。ホストはこれらすべてのファイルを追跡するため、単一のVPSが何億ものiノードを占有しないようにすると、ホスティングプロバイダーにとって有利になります。その結果、ホスティングプロバイダーは、1,000,000のiノードのように、iノードの制限を低く設定することがあります。
Virtuozzoでのiノード割り当てを使い果たした何百ものお客様と何年にもわたって作業した後、これらの「不可解な」ディスククォータの問題はもう驚きません。
他の制限に達したため、私が使用したVirtuozzo VPSの顧客のごく一部にファイルシステムの問題がありました。このコマンドを使用すると、制限の一部(すべてではない)を確認できます。
cat /proc/user_beancounters
failcnt
列の値が0より大きいか、held
列の値が対応するlimit
の値と等しい場合は、制限に達しています。
各パラメーターの内容を調べることができます OpenVZのwikiはこちら 。パラメータは、「プライマリ」、「セカンダリ」、または「補助」のいずれかです。
VPSに達した制限のためにheld
カウントを減らすことができない場合は、ホスティングプロバイダーに問い合わせてサポートを依頼する必要があります。
上限に達するとさまざまな症状が発生するので、どのBeanが最大になったかに応じて、この答えは大幅に拡張できます。
/proc/user_beancounters
またはdf -i
に関して、Virtuozzoシステム管理者は、パラメータのlimit
をheld
値よりも小さくすることがあります。
たとえば、diskinodes
パラメータの元の制限が1,500,000で、その制限に達した場合、ホスティングプロバイダーの誰かがiノードの制限を1,000,000に設定すると、df -i
からの奇妙なiノードレポートが表示されます。意味がありません。
あなたの側で、あなたは不当に大きい数を見ることができました 18,446,744,069,620,218,961のような 。
私はこれをホスティングプロバイダーからの不吉な行動だと考えています。特に、プロバイダーから通知されない場合は、Virtuozzo/OpenVZの経験がないスーパーユーザーの知識に反するため、誤解を招く恐れがあります。アドバイス( 例 、 別の例 )。
ホスティングプロバイダーにお問い合わせください。あなたが見つけたものを彼らに見せて、彼らと協力してあなたの手持ちの豆を限界以下にしてください。
彼らがあなたを助けることを拒否した場合、あなたのホスティングプロバイダーを捨てて、Virtuozzo/OpenVZ仮想化を使用しない別のものを見つけてください。 KVM仮想化、VMware仮想化、Xen仮想化、またはベアメタルサーバーは、Virtuozzo/OpenVZよりもはるかに少ない制限の対象になります。
ホスティングプロバイダーがアラートを監査または応答していて、VPSが特定のリソース(ほとんどの場合、iノードの制限、つまり最後のdiskinodes
パラメーター)を使いすぎていることが判明した可能性があります。
ホスティングプロバイダーの経験の浅いVirtuozzo管理者は、実際のリソース使用量よりも低い値に制限を減らすことで問題を抑えることができると考えています。 iノードの場合、現在の実際の使用量が1,500,000のように高くても、1,000,000のように低い割り当てになる場合があります。
Virtuozzo管理者のコントロールパネルには、実際の使用量と新しい制限が表示されますが、Virtuozzoが仮想化する方法が原因で、非常に不当に高い偽の数が表示されます。
過失のVirtuozzo管理者はこの変更について通知しません。これが発生した場合、ホスティングプロバイダーに連絡する必要があるのはこのためです。
「ディスククォータを超えました」とは、ディスクに使用可能なスペースがないことを意味しませんが、それほど多くのスペースを使用することは許可されていません。
一般に、クォータは管理者が設定するいくつかの制限です-実行できるプロセスの最大数、占有できるスペースの量、保持できるファイルの数など。ディスククォータは、iノードとディスクブロックの最大数に設定できます。
quota
とquota -g
を実行してみてください(または、repquota -u
とrepqouta -g
を実行してください)。この方法でユーザーが制限されているかどうかとその方法を確認してください。はいの場合、edquota
を使用してこれらのクォータを編集するか、quotaoff
コマンドを使用してそれらの割り当てをオフにすることができます。設定によっては、このためにrootとしてログインする必要がある場合があります。
このサイト は、クォータを使用する方法のいくつかの例をカバーし、便利なコマンドへのマニュアルページへのリンクも含みます。