/ tmpへの書き込み時に「ディスククォータを超えました」が、十分なスペース(linux)


9

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ノードを提供しました。

さらに調べたところ、qmailのキューがiノードでいっぱいであることがわかりました(私のマシンを使用してスパムを送信するためのハッカーの試みでいっぱいで、失敗の返信です)

ここではqmailの修正は関係ありませんが、私の回避策は関係があります。

  1. qmailのサービスを停止しました
  2. qmhandleをオーバークォータシステムにダウンロードできなかったので、
  3. スクリプトを抽出して別のWebサイトにアップロードします。
  4. 次のコマンドでキューを削除します。
  5. perl <(wget -O- http://link.to.my/script.pl)-D

この方法では、スクリプトはWebから直接実行されます(安全な方法ではありませんが、スクリプトを自分で配置しました)。コマンドラインオプションを指定します。

この特殊な設定をその場で知り、すぐに認識し、さらに診断する手段を提供してくれた@deltikに感謝します。


Linuxには、ユーザーまたはグループベースのディスククォータ割り当て設定があります。それらも確認してくださいUNIXおよびLinuxでユーザーおよびグループのディスククォータを設定する5つのステップ
DavidPostill

1
はいvzfs(OpenVZの「仮想」ファイルシステム)が原因である可能性があります。信じられないほど安価なサーバーを販売しているOpenVZプロバイダーをたくさん見ましたが、それらに信じられないほど愚かな制限を設定しています。
user1686 2015

解決策がある場合は、具体的にも回答として投稿してください。いつでも他の人の答えを受け入れることができます。
ダニエルB

回答:


15

VZFSファイルシステムがあります。つまり、VPSはParallels Virtuozzo仮想マシンです。Virtuozzoでは、ホスティングプロバイダーは、VZFSで取得する割り当てなど、多くのパラメーターに制限を設定できます。

原因:iノードが不足しています(最も一般的)

何百ものVirtuozzo VPSのお客様と何年にもわたって作業した結果、ファイルを作成できないという問題がありましたが、十分な空き容量があるように見えましたが、その大半はiノードの制限に達していました。次のコマンドを実行して、iノードの割り当て(Inodes)、使用されたiノード(IUsed)、残りのiノード(IFree)、および使用されたiノードの割合(IUse%)を確認します。

df -i

iノードの使用率が100%になることはよくあります。私の経験の一般的な原因:

  • スパムメールのバウンスバック
  • キューに入れられた送信スパムメール
  • 大量の受信メールが保存されています
  • PHPセッションのガベージコレクション(session.gc_maxlifetime)を100年以上に設定しているユーザー
  • 一般的なキャッシュファイルが多すぎる
  • WordPressプラグインW3 Total Cacheで有効になっているオブジェクトキャッシュ
  • Magentoエラーログ(エラーごとに新しいファイルが生成されます)
  • 大量のファイルを作成し、それらを削除するのを忘れるその他の不適切な構成または不適切に設計されたプログラム/スクリプト

トラブルシューティング

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

/iノードの割り当てを使い果たしている原因を見つけるまで、現在の作業ディレクトリを変更し続けることができます。

説明

VPSは、Parallels Virtuozzoの一部であるVZFSファイルシステム上にあります(OpenVZは類似しておらず、同じテクノロジーに基づいていますが、OpenVZはVZFSを使用しません)。

VirtuozzoがVZFSにファイルを保存する方法のため、多くの場合、iノードはext4やXFSなどの他のファイルシステムよりも制限されています。ホストはこれらすべてのファイルを追跡するため、単一のVPSが数億個のiノードを占有しないようにすると、ホスティングプロバイダーにとって有利になります。その結果、ホスティングプロバイダーは、iノードの制限を1,000,000 iノードのように低く設定することがあります。

Virtuozzoでのiノード割り当てを使い果たした何百もの顧客と何年にもわたって作業した後、これらの「不可解な」ディスククォータの問題はもう驚きません。

原因:Virtuozzoのその他の制限

他の制限に達したため、私が使用したVirtuozzo VPSの顧客のごく一部にファイルシステムの問題がありました。このコマンドを使用して、制限の一部(すべてではない)を確認できます。

cat /proc/user_beancounters

トラブルシューティング

列の値がfailcnt0より大きい場合、またはheld列の値が対応するlimit値と等しい場合は、制限に達しています。

OpenVZのwikiで各パラメーターの内容を調べることができます。パラメータは、「プライマリ」、「セカンダリ」、または「補助」のいずれかです。

heldVPSに達した制限の数を減らすことができない場合は、ホスティングプロバイダーに問い合わせてサポートを依頼してください。

上限に達するとさまざまな症状が発生するため、この答えは、どのBeanが最大になったかに応じて大幅に拡張できます。

原因:ヒット後に制限が減少しました

/proc/user_beancountersまたはに関してdf -i、Virtuozzoシステム管理者limitは、パラメータのheld値を値よりも小さくする場合があります。

たとえば、diskinodesパラメーターの元の制限が1,500,000で、その制限に達した場合、ホスティングプロバイダーの誰かがiノードの制限を1,000,000に設定すると、そこから奇妙なiノードレポートが表示さdf -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管理者はこの変更について通知しません。これが発生した場合は、ホスティングプロバイダーに連絡する必要があるのはこのためです。


18,446,744,069,620,218,961がワードプレスを実行するサイトのiノードの許容数かどうかはわかりません...
Berry Tsakala

@BerryTsakala:使用されているiノードの数ですか、それともファイルシステムでサポートされているiノードの総数ですか?コマンドの完全な出力を提供できれば、確信が持てます。これまでに書いた内容によると、ホストにiノード制限が設定されていないようです。これは私が間違っていることを意味します。Virtuozzoの制限をさらに探る、更新された回答をお届けします。
Deltik、2015

@BerryTsakala:あなたのホストが不吉なことをしていて、気づかないことを期待しているのではないかと思いました。回答を詳細ですぐに更新します。
Deltik 2015

ありがとうございました!すでに冗長ファイルの削除を始めています。また、スパマーがシステムを悪用していて、電子メールがqmailのキューをいっぱいにしていることも発見しました。
Berry Tsakala、2015

ところで、inodeは合計しません。df-iは、find ...コマンドで返されるtjeの合計より100兆倍大きくなります。矛盾を見つける方法を知っていますか?
Berry Tsakala、2015

4

「ディスククォータを超えました」とは、ディスクに使用可能なスペースがないことを意味しませんが、それほど多くのスペースを使用することは許可されていません。

一般に、クォータは管理者が設定するいくつかの制限です-実行できるプロセスの最大数、占有できるスペースの量、保持できるファイルの数など。ディスククォータは、iノードとディスクブロックの最大数に設定できます。

を実行quotaしてquota -g(または、を実行repquota -uしてrepqouta -g)、ユーザーがこの方法と方法で制限されているかどうかを確認してください。「はい」の場合、これらのクォータedquotaquotaoffコマンドで編集するか、コマンドでオフにすることができます。設定によっては、このためにrootとしてログインする必要がある場合があります。

このサイトでは、クォータの使用方法の例をいくつか紹介し、便利なコマンドへのマニュアルページへのリンクも含まれています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.