ホームページ  >  記事  >  運用・保守  >  Linuxのiノードとは何ですか

Linuxのiノードとは何ですか

WBOY
WBOYオリジナル
2022-06-28 17:23:194812ブラウズ

Linux では、i ノードは 64 バイトの長さのテーブルであり、i ノードには、ファイル サイズ、ファイル所有者、ファイル アクセス許可方法、ファイルが通常かどうかなどのファイルに関する情報が含まれています。ファイル、ディレクトリ ファイル、特殊ファイルなど、i ノードで最も重要な項目はディスク アドレス テーブルです。

Linuxのiノードとは何ですか

#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。 Linux の

i ノード

i ノードは、ファイル サイズ、ファイル所有者、ファイル アクセス許可方法、ファイルのアクセス許可方法など、ファイルに関する情報が含まれる 64 バイトの長さのテーブルです。ファイルは通常のファイル、ディレクトリ ファイル、特殊ファイルなどです。

Linux ファイル システムは Linux システムの中心であり、階層的なディレクトリとファイルを提供します。ファイル システムは、ディスク領域をブロックと呼ばれる 1024 バイトのグループに分割します (SCOXENIX など、512 バイトのブロックもあります)。 0 からディスク全体の最大ブロック数までの番号が付けられます。

すべてのブロックは 4 つの部分に分割できます。ブロック 0 はブート ブロックと呼ばれ、ファイル システムでは使用されません。ブロック 1 はプライベート ブロックと呼ばれます。プライベート ブロックには、次のような多くの情報が含まれています。ディスク サイズとすべてのブロックに関するその他の情報 サイズの 2 つの部分。ブロック 2 から始まるのは i ノードを含む i ノード テーブルであり、テーブル内のブロックの数は可変ですが、これについては後述します。 i ノード テーブルの後には、ファイルの内容を保存するために使用できる空きストレージ ブロック (データ ストレージ ブロック) があります。

ファイルの論理構造と物理構造は大きく異なります。論理構造は、cat コマンドを入力した後にユーザーに表示されるファイルです。ユーザーは、ファイルの内容を表す文字ストリームを取得できます。物理構造とは、ファイルが実際にディスク上にどのように保存されるかを示します。ユーザーは自分のファイルがフロンティア キャラクタ ストリームであると考えていますが、実際にはファイルはフロンティア形式でディスクに保存されていない可能性があり、通常、1 ブロックより長いファイルはディスク上に分散して保存されます。ただし、ユーザーがファイルにアクセスすると、Linux ファイル システムは各ブロックを正しい順序で取り出し、ファイルの論理構造をユーザーに提供します。

もちろん、物理構造を論理構造に変換する方法をファイル システムに指示するテーブルが Linux システムのどこかに存在する必要があります。これには i ノードが関係します。

i ノードは、ファイル サイズ、ファイル所有者、ファイル アクセス許可方法、ファイルが通常のファイルであるかディレクトリ ファイルであるかなど、ファイルに関する情報を含む 64 バイトの長さのテーブルです。 . または特殊ファイルなど.。 i ノードで最も重要な項目はディスク アドレス テーブルです。

このテーブルには 13 個のブロック番号があります。最初の 10 ブロック番号は、ファイルの最初の 10 ブロックのストレージ アドレスです。これら 10 個のブロック番号により、最大 10 ブロック長のファイルの論理構造が得られ、ファイルはディスク アドレス テーブルにブロック番号が現れる順序で対応するブロックを取得します。ファイルが 10 ブロックより長い場合はどうなりますか? ディスク アドレス テーブルの 11 番目の項目はブロック番号を示します。このブロック番号が指すブロックには 256 個のブロック番号が含まれています。これまでのところ、この方法は 266 ブロックより長いファイルに対応しています。( 272384バイト)。ファイルが 266 ブロックより大きい場合、ディスク アドレス テーブルの項目 12 にブロック番号が与えられます。このブロック番号が指すブロックには 256 個のブロック番号が含まれます。これらの 256 個のブロック番号はそれぞれ 1 つのブロックを指し、ブロックには 256 個のブロック番号が含まれますブロック番号。これらのブロック番号は、ファイルの内容を取得するために使用されます。ディスクアドレスの項目 13 のインデックスアドレス指定方法は、間接インデックスのレベルが 1 つ多いことを除いて、項目 12 と同様です。

このように、Linux システムでは、ファイルの最大長は 16842762 ブロック、つまり 17246988288 バイトです。幸いなことに、Linux システムでは、ファイルの最大長に対してより現実的な制限が追加されています (これにより、ユーザーが誤ってディスク領域全体のすべてのブロックを使い果たすファイルを作成することがなくなります。

inode

inode については、まずハードディスクの全体的な構造を紹介する必要があります。ハードディスクには複数のハードディスク プラッタが含まれています。ハードディスク プラッタは円形です。各ハードディスク プラッタには読み書き可能な磁気ヘッド (ヘッド) が付いています。このヘッドが固定され、ハードディスク プラッタが 1 回転すると、トラックがたどります。はトラックです (トラック)。ハードディスク内のすべてのプラッターの同じトラック番号の集合をシリンダーと呼びます。各トラックは多数のエリアに分割されており、各エリアはセクターと呼ばれます。セクタはハードディスクの最小の記憶物理量であり、1 セクタの記憶容量は約 512 バイト(約 0.5K)です。

ハードディスクの一般的な構造を理解した後、ハードディスクをパーティション分割する方法について説明します。ハードディスクのパーティション分割の最小単位は磁気列であり、パーティション分割後は自然にフォーマットされます。 Linux でフォーマットするときは、ブロックと i ノードを考慮する必要があります。ブロックは理解しやすいです。ディスクに記録できる最小単位です。複数のセクターで構成されているため、サイズは通常 n*512 バイト (4K など) になります。

それでは、inodeとは何でしょうか? ブロックはファイルの内容を記録する領域で、inodeはファイルの属性とファイルが配置されるブロックの情報を記録します。したがって、各ファイルは i ノードを占有します。 Linux システムがファイルを検索する場合、まず inode テーブルを検索してファイルの属性とデータの保存場所を見つけ、次にデータが保存されているブロックを検索してデータを取得します。 i ノード数は最初に設定されています。通常、設定方法は「ハードディスク サイズ / 1 つの容量」です。この容量はブロックよりも大きい方が良いです。例えば、先ほどブロックを 4K に設定した場合、 、その場合、容量は約 8K に設定できます。したがって、1GB ハードディスクを 8K i ノードに分割すると、131072 個の i ノードが存在します。 i ノードのサイズは 128 バイトです。このようにして、パーティションがファイル システムとしてフォーマットされた後、基本的に 2 つの大きなブロック (inode テーブルとデータ領域) があり、1 つはファイル システムの記録に使用されることが明確にわかります。ファイルの属性情報 ファイルに保存されている Block ブロックは、ファイルの内容を記録するために使用されます。

ファイル作成後、inodeとブロックが同時に作成されます.inodeにはファイルの属性情報が格納されますが、ファイル名は含まれず、ファイルのアドレスへのポインタが格納されます。対応するデータが存在するブロック; ブロック ファイルデータを格納する場合、各ブロックには最大 1 つのファイルを格納できますが、ブロックが格納できない場合は、次のブロックが占有されます。

Linux では、ファイル名、ファイル属性、およびファイルの内容は個別に保存されます: ファイル名はディレクトリ エントリ (つまり、dentry) に保存され、ファイル属性は i ノードに保存されます。通常の状況では、各 i ノードは 128 バイトのディスク領域を占有し、ファイルの内容はデータ ブロックに格納されます。

mkfs.ext3 -b を使用してブロック サイズを設定できます。各ブロックには最大 1 つのファイルを保存できるため、通常、ブロック サイズの設定はサーバーのアプリケーション設定に基づく必要があります。は、主に小さなファイルを多数保存するために使用されるため、領域を無駄にしないようにブロック サイズを小さく設定できますが、大きなデータを保存する場合は、ブロック サイズを大きく設定する必要があり、これによりデータへの影響を軽減できます。ディスク ブロックの読み取り数によって、inode の記録の負担も軽減されます。

ブロックが大きいほど i ノードが少なくなり、大きなファイルを保存するファイル システムに適し、ブロックが小さいほど i ノードが多くなり、小さいファイルを多数保存するファイル システムに適します。

システムの実行中、変更後の i ノードとブロックはメモリとディスクを同期します。ls -li を使用してリストした内容はメモリ内の一時ストレージであるため、システムが異常にシャットダウンすることがあります。ブロックと i ノードの非同期の問題が発生します。

推奨学習: Linux ビデオ チュートリアル

以上がLinuxのiノードとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。