Linuxのiノードとは何ですか?どのように使用されますか?

Linuxのすべては、一貫性を維持するためのファイルと見なされます。これには、ハードウェアデバイス、プリンター、ディレクトリ、およびプロセスが含まれます。音楽、テキスト、ビデオ、その他のマルチメディアファイルなどの通常のファイルにも、メタデータと呼ばれる追加のデータが関連付けられています。

Linuxの(Linux)iノード(Inodes)とは何ですか?iノード(Inode)エントリは、Linuxファイルシステム(Linux file system)の基礎です。これらはファイルに関するメタデータを管理し、 Linux(Linux)の内部動作の重要な部分です。 

ファイルシステムの構造は何ですか?(What Is The Structure Of a File System?)

ファイルシステムは、データブロックとiノードの2つの部分に分かれています。ブロック数は一度作成すると固定され、変更することはできません。

名前、パス、場所、リンク、およびその他のファイル属性がディレクトリにありません。ディレクトリは、iノード番号が一致するファイルの名前を含む単なるテーブルです。

同じファイルに複数の名前を付けるハードリンクを作成できます。ハードリンクを作成すると、iノードを使用してテーブルに新しい名前も作成されますが、ファイルは移動されません。

大きなファイルを移動する場合は、時間がかかります。新しいディレクトリに名前エントリを作成し、古いエントリを削除する方が効率的です。同じ方法でファイルの名前を変更することもできます。

階層の最上位はファイルシステム自体です。ファイルシステム内にはファイル名があります。ファイル名はiノードにリンクしています。iノードは物理データにリンクします。

Linuxのiノードとは何ですか?(What Are Inodes In Linux?)

iノードはデータ構造です。ファイルまたはファイルシステム上のディレクトリを定義し、ディレクトリエントリに保存されます。iノードは、ファイルを構成するブロックを指します。iノードには、ファイルの読み取りに必要なすべての管理データが含まれています。すべて(Every)のファイルのメタデータ(metadata)は、テーブル構造のiノードに格納されます。

名前でファイルを参照するプログラムを使用する場合、システムは、対応するiノードをプルアップするために存在するディレクトリエントリファイルを調べます。これにより、プロセスまたは操作を実行するために必要なファイルデータと情報がシステムに提供されます。

iノードは通常、パーティション(beginning of a partition)の先頭近くにあります。これらは、ファイル名と実際のデータを除く、ファイルに関連付けられたすべての情報を格納します。Linuxディレクトリ内のすべてのファイルには、ファイル名とiノード番号があります。ユーザーは、iノード番号を参照することでファイルのメタデータを取得できます。

ファイル(File)名とiノード番号は別のインデックスに保存され、iノードにリンクします。ファイルを表すメタデータにリンクできます。次の画像に示すように、1つのデータまたはiノードにリンクする複数のファイル名を持つことができます。

iノード番号とは何ですか?(What Is The Inode Number?)

Linux構造のすべてのiノードには、一意の番号が付けられています。インデックス番号とも呼ばれ、次の属性があります。

  • サイズ
  • オーナー
  • 日付時刻
  • アクセス許可とアクセス制御
  • ディスク上の位置
  • ファイルタイプ
  • リンク数
  • ファイルに関する追加のメタデータ

iノード番号のリストを確認するには、次のコマンドを使用します。

ls -i

以下のスクリーンショットは、左端の列にiノード番号が表示されているディレクトリを示しています。

iノードはどのように機能しますか?(How Do Inodes Work?)

新しいファイルを作成すると、ファイル名とiノード番号が割り当てられます。どちらもエントリとしてディレクトリに保存されます。lsコマンド(ls -li)を実行すると、ディレクトリに保存されているファイル名とiノード番号のリストが表示されます。

以下のコマンドを使用して、各ファイルシステムのiノード情報を一覧表示します。

df -hi

いくつのiノードを使用していますか?

ファイルシステムのスペースを使い果たす1つの方法は、すべてのiノードを使い果たすことです。ディスクに十分な空き容量がある場合でも、新しいファイルを作成することはできません。

すべてのiノードを使い切ると、システムが突然停止する可能性もあります。使用済み、空き、使用率などのiノード使用量に関する統計のリストを表示するには、次のコマンドを入力します。

sudo df -ih

iノードが使用される追加の方法(Additional Ways Inodes Are Used)

Linuxでのiノードの動作方法により、iノード番号が競合することは不可能です。異なるファイルシステム間でハードリンクを作成することはできません。ただし、異なるファイルシステム間でソフトリンクを使用できます。元のファイルを削除しても、ハードリンクを介してデータを利用できます。

ファイルを削除することで、特定のiノード番号を指す名前の1つを削除するだけです。同じiノード番号に関連付けられているすべての名前を削除するまで、データは残ります。Linuxシステムは、主にiノードの動作方法により、システムの再起動を必要とせずに更新されます。 

プロセスは、ライブラリファイルを同時に使用できます。同時に、別のプロセスが同じファイルを新しい更新バージョンに置き換えて、新しいiノードを作成します。実行中のプロセスは引き続き古いファイルを使用します。次に同じプロセスを使用するときは、新しいバージョンが使用されます。

ユーザーはiノードと直接対話しませんが、Linuxファイル構造の基本的なコンポーネントを表します。



About the author

私は、Windows 11 または 10 アプリケーションの開発と保守に 10 年以上の経験を持つソフトウェア エンジニアです。また、Google ドキュメントと Microsoft Edge の使用経験もあります。これらの分野での私のスキルは、将来のソフトウェア エンジニアリングの役割の優れた候補者になります。



Related posts