
ハードリンクとは
ハードリンクとは、ファイルシステムにおいて、複数のファイル名(パス)が同一のデータ実体を指し示す仕組みです。通常のファイルは、ファイル名とデータ実体が一対一で対応していますが、ハードリンクを作成すると、複数のファイル名が同じデータ実体を共有します。これにより、ディスク容量を節約したり、ファイルの管理を効率化したりすることが可能です。
ハードリンクは、UNIX系のオペレーティングシステム(Linux、macOSなど)で広く利用されており、ファイルシステムの基本的な機能の一つとして提供されています。ハードリンクを作成するには、通常、lnコマンドを使用します。lnコマンドを使用することで、既存のファイルに対して新しいハードリンクを作成し、同じデータ実体を指し示す複数のファイル名を持つことができます。
ハードリンクは、シンボリックリンク(ソフトリンク)とは異なり、データ実体を直接参照するため、元のファイルを削除しても、ハードリンクからデータにアクセスできます。これは、ハードリンクがファイルシステム内のinode(ファイルに関する情報を持つデータ構造)を共有しているためです。inodeには、ファイルのデータブロックの場所やアクセス権などの情報が含まれており、ハードリンクはinodeを共有することで、同じデータ実体を指し示すことができます。
ハードリンクの仕組み
「ハードリンクの仕組み」に関して、以下を解説していきます。
- inode(アイノード)とは
- ハードリンク作成時の注意点
inode(アイノード)とは
inodeとは、ファイルシステム内でファイルやディレクトリに関するメタデータを保持するデータ構造のことです。inodeには、ファイルのサイズ、所有者、アクセス権、タイムスタンプ、データブロックの場所などの情報が格納されています。ファイル名はinode番号と紐付けられており、ファイルシステムはinode番号を通じてファイルの実体を特定します。
ハードリンクは、複数のファイル名が同じinode番号を共有することで実現されます。つまり、ハードリンクはファイルの実体を複製するのではなく、既存のファイルのinode番号を別のファイル名に割り当てることで、同じデータ実体を指し示す複数のファイル名を作成します。inodeを共有することで、ハードリンクは元のファイルと完全に同じデータ実体を指し示すことができ、どちらのファイル名からアクセスしても同じ内容を参照できます。
項目 | 内容 |
---|---|
inode番号 | ファイルを識別する番号 |
ファイルサイズ | ファイルのデータ量 |
アクセス権 | ファイルの読み書き実行権限 |
データブロック | ファイルの実データが格納場所 |
ハードリンク作成時の注意点
ハードリンクを作成する際には、いくつかの注意点があります。まず、ハードリンクは同一ファイルシステム内でのみ作成可能です。異なるファイルシステム間ではinode番号が異なるため、ハードリンクを作成することはできません。また、ハードリンクはディレクトリに対して作成することはできません。ディレクトリはファイルシステム構造の管理に使用される特殊なファイルであり、ハードリンクで共有することは許可されていません。
さらに、ハードリンクを作成すると、inodeのリンクカウントが増加します。リンクカウントは、そのinodeを指し示すファイル名の数を表しており、ファイルが削除されるとリンクカウントが減少します。リンクカウントが0になると、inodeとデータブロックが解放され、ファイルは完全に削除されます。ハードリンクを作成する際には、これらの特性を理解し、意図しないデータの損失を防ぐ必要があります。
注意点 | 詳細 |
---|---|
同一FS内 | 異なるFSでは作成不可 |
ディレクトリ | ディレクトリには作成不可 |
リンクカウント | 削除時の挙動に影響 |
削除 | リンク数0で完全削除 |