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

推薦する

JavaScriptがDOMツリーの構築にどのように影響するかについて詳しく説明します。

目次ドキュメント オブジェクト モデル (DOM) DOM と JavaScript DOMツリーの...

React における ref の一般的な使用法の概要

目次Refsとは何か1. 文字列型参照2. コールバック参照React.createRef() 4....

あるテーブルのデータの列を別のテーブルの列にコピーするMySQLメソッド

mysql 1 つのテーブル列を別のテーブルにコピーする場合によっては、フィールドから別の新しいフィ...

スキン効果を実現するJavaScript(背景の変更)

この記事では、スキン変更効果を実現するためのJavaScriptの具体的なコードを参考までに紹介しま...

JSはストップウォッチタイマーを実装します

この記事の例では、ストップウォッチタイマーを実装するためのJSの具体的なコードを参考までに共有してい...

Linux で MySQL のデフォルト エンコーディングを変更する方法

開発プロセス中に、MySQL データベースを復元した後にデータベース データに文字化けが発生した場合...

Vue ユニットテストに関する予備調査

目次序文なぜユニットテストを導入するのですか?ユニットテストの概要テスト開発パターン1. テスト駆動...

Dockerのインストール方法とDockerの4つのネットワークモードの詳細説明

1. Dockerをインストールするyum -y install docker-ioインストールが完...

Linux での vi (vim) の新しい使い方のまとめ

私は数年間 vi エディタを使ってきましたが、実用的な用途で使ったことはありませんでした。今日 Py...

MySQLの通常インデックスとユニークインデックスの違いの詳しい説明

目次1 概念上の区別2 事例紹介3 クエリパフォーマンス4 アップデートのパフォーマンス4.1 記憶...

プライベートイメージウェアハウスを構築するためのDockerレジストリの実装方法

マイクロサービスのイメージは、保存用に Docker リポジトリにアップロードされます。一般的に使用...

gbk utf8 GBK と UTF-8 ウェブページエンコーディングを正しく理解して使用する方法

Web ページ エンコーディングは英語では web page encoding と翻訳され、Web ...

JavaScript で右クリック メニューを統合する layim のサンプル コード

目次1. 効果の実証2. 実装チュートリアル3. 最後に、完全なコードを添付します4. その他の右ク...

初心者向け入門チュートリアル⑨:ポータルサイトの構築方法

さらに、ブログ プログラムで構築された記事 Web サイトは常にブログのように見え、カスタマイズでき...

Linux システムで grub.cfg ファイルの破損を修復する手順

目次1. grub.cfg ファイルの紹介1. grub.cfg ファイルの場所2. grub.cf...