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

推薦する

一定時間後にNavicatがデータベースから自動的に切断される問題の解決方法

これは、データベース サーバーが、接続が多すぎるのを避けるために、一定時間非アクティブな状態が続くと...

Linux での Jenkins の詳細なインストール手順

目次1. JDKをインストールする2. Jenkinsをインストールする3. Jenkinsの設定を...

Linuxはデュアルネットワークカードボンドとドライバーインターフェースを使用する

債券とは何かNIC ボンドは、実稼働シナリオでよく使用されるテクノロジーです。複数の NIC を 1...

Linux が Sudo 権限昇格の脆弱性を公開、どのユーザーでも root コマンドを実行可能

Linux で最も一般的に使用される重要なユーティリティの 1 つである Sudo は、ほぼすべての...

jsはショッピングウェブサイトの商品の拡大鏡効果を実現します

この記事では、ショッピングサイトの商品の拡大鏡効果を実現するためのjsの具体的なコードを紹介します。...

MySQLインジェクションバイパスフィルタリング技術の概要

まず、GIF 操作を見てみましょう。ケース1: スペースがフィルタリングされるスペースの代わりに角括...

ユーザーエクスペリエンスの概要

最近では、ソフトウェアやウェブサイトのいずれの作業であっても、設計時に「ユーザー エクスペリエンス」...

nginx を https をサポートするように設定するためのサンプル コード

1. はじめにあなたのウェブサイトはまだインターネット上に公開されたままですか?ここでは、HTTPS...

Tomcat のインストール後に起こりうる問題の紹介

1. Tomcatサービスが開いていませんブラウザのアドレスバーにlocalhost:8080と入力...

Vueはシンプルな計算機を実装する

この記事では、参考までに、Vue の具体的なコードで簡単な計算機を実装する方法を紹介します。具体的な...

CentOS 7 でゲートウェイを変更して IP を設定する方法の例

Centos7 バージョンをインストールするときに、外部ネットワークへの接続を選択すると、外部ネット...

VSCode の Remote-SSH を使用して Linux に接続し、リモート開発を行う

Remote-SSHをインストールして設定するまず VSCode を開き、拡張機能を見つけて、Rem...

Linux の cut コマンドの説明

Linux や Unix の cut コマンドは、ファイルの各行から一部を切り取って標準出力に出力す...

MySQL 8.0.17 winx64 (Navicat 付き) 手動構成バージョンのインストール チュートリアル図

1. ダウンロードアドレス: mysql-8.0.17-winx64ダウンロードして解凍する2. フ...