Linux デバイスに空き容量がありません inode の満杯により 500 エラーが発生します

Linux デバイスに空き容量がありません inode の満杯により 500 エラーが発生します

iノードとは何ですか?

inode を理解するには、まずファイル ストレージから始める必要があります。

ファイルはハードディスクに保存され、ハードディスクの最小の保存単位は「セクター」と呼ばれます。各セクターには 512 バイト (0.5 KB に相当) が格納されます。

オペレーティング システムがハード ディスクを読み取るとき、セクターごとに読み取るのではなく (これは非常に非効率的です)、一度に複数のセクターを連続して読み取ります。つまり、一度に 1 つの「ブロック」を読み取ります。 <br>複数のセクターで構成されるこの「ブロック」は、ファイル アクセスの最小単位です。最も一般的な「ブロック」サイズは 4KB です。つまり、8 つの連続したセクターがブロックを形成します。

ファイル データは「ブロック」に保存されるため、ファイルの作成者、ファイルの作成日、ファイルのサイズなどのファイルのメタデータを保存する場所も見つける必要があります。 <br>ファイルのメタデータを保存するこの領域は、inode と呼ばれ、中国語では「インデックス ノード」と翻訳されます。

最近、ウェブサイトの編集者から、写真のアップロードが失敗し、ウェブサイトのページに 500 エラーが頻繁に発生すると報告されました。

一般的な 500 エラーについては、https://www.jb51.net/article/175431.htm を検索し、構成が正常であることがわかりました。

nginxのエラーログを確認すると、ディスク容量がいっぱいであることがわかりました

df -h コマンドでディスク使用量を確認したところ、まだいくらか空き容量があることがわかりました。

問題が見つかりました:その後、df -i を使用してインデックス ノード (inode) をチェックしたところ、インデックス ノードがいっぱい (IUsed=100%) であることがわかりました。そのため、システムは新しいディレクトリとファイルを作成できませんでした。

解決策:不要な一時ファイルを削除し、i ノードを解放します。

/tmp ディレクトリに多くの一時ファイルがあることがわかります。

/var/spool/ディレクトリを選択することもできます

/var/spool/ の下にあるファイルの数を表示するには、次のコマンドを入力します。

/var/spool/ の i に対して、 echo $i を実行します。 $i を検索します |wc -l|sort -nr; 完了

200万以上のファイルがあることがわかります

cd /var/spool/clientmqueue/このディレクトリに入り、これらの無駄なファイルを削除し、チェックすると、600,000個のファイルがあり、ファイルが多すぎます。

そこで私は次のコマンドを使用しました:

ls | xargs rm -rf

2またはこのコマンド

検索 . -name "*" | xargs rm -rf

ファイルはバッチで削除できます。次の図は削除後の効果を示しています。inode の使用率は 21% です。大丈夫

ジャンク ファイルが長期間クリーンアップされていないため、ファイルのクリーンアップに時間がかかりすぎます。このような問題を回避するには、システムのジャンク ファイルを定期的にクリーンアップするか、監視システムを導入するのが最善です。

大きいディレクトリのファイル占有率に基づいて、一部のファイルを、より少ないディスク領域を占めるディレクトリに一時的に転送できます。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux インデックスノード inode の詳細な説明
  • Linux ネットワーク設定の詳細
  • MyCat を使用して Linux で MySQL マスター/スレーブの読み取り/書き込み分離を実装する方法
  • Unix/Linuxフォークの隠れたオーバーヘッド
  • Linux での UDP について学ぶ
  • Linux スワップ パーティション (詳細説明)
  • Linux での C++ ネットワーク プログラミング、epoll テクノロジ、Windows での IOCP モデル
  • Linux サーバーは最大いくつのポートを開くことができますか?
  • Linux ファイル記述子、ファイルポインタ、および inode の詳細

<<:  ECMAScript6 におけるマップマッピングの基本概念と一般的な方法

>>:  MySQLでよく使われる4つのストレージエンジンについて簡単に説明します。

推薦する

ブートストラップテーブルの使い方のまとめ

この記事では、bootstrapテーブルの使い方を参考までに紹介します。具体的な内容は次のとおりです...

Angular CDK を使用してサービスポップアップトーストコンポーネント機能を実装する

目次1. 環境設備2. ToastコンポーネントとToastServiceを作成する2.1 Toas...

HTML における br と br/ の違い

スタックフローからの回答:単に<br>だけで十分です。その他の形式は、XHTML との互...

Ubuntu 19.10 で ssh サービスを有効にする (詳細なプロセス)

Ubuntuでsshを開くのに1時間以上かかりました。主な原因は、最初に読んだチュートリアルの手順...

CSSアニメーションを使用して背景のシームレスな無限ループを実装する例

1. 需要絵が左から右へ無限ループで動く2. コードモバイルデバイスに適用されているため、rem 単...

MySQL/MariaDB ルートパスワードリセットチュートリアル

序文パスワードを忘れることは、よく遭遇する問題です。MySQL または MariaDB データベース...

Deepin Linuxでカーネルを手動でアップグレードする方法

deepinとUbuntuどちらもdebianをベースにしたディストリビューションであり、ここではU...

MySQLの文字セット設定を5分で理解しましょう

目次1. コンテンツの概要2. 文字セットと文字順序の概念と関係3. MySQL でサポートされてい...

CocosCreator 入門チュートリアル: TS で初めてのゲームを作る

目次前提TypeScript と JavaScriptコードエディタの選択TypeScriptを学ぶ...

CSS flex 複数列レイアウト

基本的な3列レイアウト 。容器{ ディスプレイ: フレックス; 幅: 500ピクセル; 高さ: 20...

CentOS での MySQL ログイン 1045 問題を解決する

アプリケーション全体を CentOS にデプロイする必要があるため、当然ながらデータベース操作は不可...

ウェブデザインでは、まずウェブサイトの包括的なイメージの位置付けが必要です。

⑴ 内容によって形式が決まります。まず内容を充実させ、次にブロックに分割し、トーンを決め、最後に細部...

Vueはシンプルなデータ双方向バインディングを実装します

この記事では、Vueの具体的なコード例を参考までに紹介します。具体的な内容は以下のとおりです。初心者...

ウェブデザインの発展と西洋建築の類似点は何でしょうか?

歴史は常に驚くほどうまく繰り返される。西洋建築とウェブデザインは、どちらも工学と芸術の組み合わせです...

経験豊富な人が、プロフェッショナルで標準化されたMySQL起動スクリプトの開発方法を紹介します。

シェル スクリプト言語は、すべてのプログラミング言語の中で最も単純な言語であるため、資格のある Li...