図1 ハード・リンク。実体のファイルとリンクのiノード番号が同じ値になります
図1 ハード・リンク。実体のファイルとリンクのiノード番号が同じ値になります
[画像のクリックで拡大表示]

 ファイルに別名を設定し,その別名で基のファイルにアクセスできるようにする「リンク」機能の1つです。基のファイルに別名を設けることを,LinuxなどのUNIX系OSでは“リンクを張る”といいます。そのうちの1形態が「ハード・リンク」です。

 UNIX系OSのリンクには,ハード・リンクとシンボリック・リンクがあります。ハード・リンクの場合,実体のファイルとリンクのiノード番号(ファイルやディレクトリを管理・識別するための数値)が同じ値になります(図1)。iノード番号が同じですから,別名でも同じファイルを参照できるわけです。

 ハード・リンクでは,同じiノード番号の別名を管理するだけでよいため,ディスクを無駄に消費しません。ただし,主に2つの制限があります。一つは,ディレクトリに対してハード・リンクを作れないことです。もう一つは,同じiノード番号体系の領域内でしかリンクを作成できないことです。Linuxでは,マウントするデバイスやパーティションごとに,別のiノード番号体系を使用します。そのため,デバイスやパーティションをまたいだハード・リンクは作成できません。

 よって,以上のような制限のないシンボリック・リンクの方が一般的に使われています。