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つのストレージエンジンについて簡単に説明します。

推薦する

マークアップ言語 - リスト

標準化されたデザインソリューション - マークアップ言語とスタイルマニュアルWeb 標準ソリューショ...

CSS で画像アダプティブ コンテナを実装するいくつかの方法 (要約)

多くの場合、画像をコンテナのサイズに合わせて調整する必要があります。 1. imgタグ方式幅と高さを...

JS での new の手書き実装

目次1 新しいオペレータの紹介2 新しいものは何をしましたか? 3 新しい演算子の実装をシミュレート...

Mysql5.7 で中国語の文字化けの問題を解決する

MySQL 5.7 を使用すると、Web ターミナル経由でデータベースに中国語の文字を書き込むと文字...

JavaScript の構成と継承の説明

目次1. はじめに2. プロトタイプチェーン継承3. コンストラクタの継承4. 組み合わせ継承1. ...

mysql8.0.11 winx64 手動インストールと設定チュートリアル

まず、私の日常生活についてお話しします。MySQLの急速なアップデートにより、MySQLはバージョン...

MySQL カーソルの概念と使用法の詳細な説明

この記事では、例を使用して MySQL カーソルの概念と使用方法を説明します。ご参考までに、詳細は以...

MySQL テーブル全体の暗号化ソリューション keyring_file の詳細な説明

例示するMySql Community Edition は、5.7.11 以降、テーブルベースのデー...

初心者がソースコードからMySQLのデッドロック問題を理解する

夜遅くまで何度も困難なシングルステップデバッグを行った後、ようやく理想的なブレークポイントを見つけま...

Linux での Nginx アンチホットリンクと最適化の実装コード

バージョン番号を非表示バージョン番号は非表示になっていません。セキュリティを強化するために、バージョ...

MySQLの高性能最適化スキルの概要

データベースコマンド仕様すべてのデータベース オブジェクト名には小文字を使用し、アンダースコアで区切...

MySQLがサブクエリと結合の使用を推奨しない理由

ページ分割されたクエリを実行するには: 1. MySQL の場合、サブクエリと結合の使用は推奨されま...

CSS3で実装された水平ヘッダーメニュー

結果:実装コードhtml <nav class="dropdownmenu"...

MySqlを最適化するためにnot inを使用する方法

最近、プロジェクトで選択クエリを使用する際に、未使用の主キー ID を除外するために not in ...

XAML でボタンを円として再描画する方法

XAML レイアウトを使用する場合、インターフェイスを Metro 風にするために、一部のボタンでは...