LinuCレベル1 Version 4.0 101試験の例題と解説

104.6 ハードリンクとシンボリックリンクの作成・変更

今回はLinuC 101試験の試験範囲から、「104.6 ハードリンクとシンボリックリンクの作成・変更」についての例題を解いてみます。

■トピックの概要
このトピックの内容は以下の通りです。

<104.6 ハードリンクとシンボリックリンクの作成・変更>
重要度 2

<説明>
ファイルに対するハードリンクとシンボリックリンクを作成して管理できる。

<主要な知識範囲>
・リンクを作成する
・ハードリンクとソフトリンクを識別する
・ファイルのコピーとリンクの違い
・システム管理業務をサポートするためにリンクを使用する

<重要なファイル、用語、ユーティリティ>
・ln
・ls

■例題
ハードリンクの説明として正しいものを選択してください。

1. ハードリンクは、別のファイルシステムに作成することができる
2. ハードリンクは、リンクするファイルと同じiノード番号になる
3. ハードリンクは、リンクするファイルを削除すると利用できなくなる
4. ハードリンクの内容を変更する場合は、先に作成したファイルを更新しなければならない

※この例題は実際のLinuC試験問題とは異なります。


解答と解説

答えは「2. ハードリンクは、リンクするファイルと同じiノード番号になる」です。

ハードリンクは、既に存在するファイルに別名を付けること、または作成されたリンクそのものを指す言葉です。

もう少し詳しく解説します。
Linux上のファイルは、全てiノード番号という番号でデータとの紐付けが管理されています。例えば「ls -i」コマンドでファイルのiノード番号を表示すると以下のようになります。

$ ls -i1
2754218 a.txt
2754219 b.txt

「a.txt」は「2754218」という番号が付与されていることがわかります。
「a.txt」に「hello」というデータが入っている場合、以下のような関連性が生まれます。

------------------------------
ファイル名       iノード番号
------------------------------
a.txt            2754218

------------------------------
iノード番号      データ
------------------------------
2754218          hello

つまりファイル名と実際のデータは、iノード番号で結びついています。

そしてハードリンクでは、1つの実体に対して複数のファイル名を付けることができます。
ハードリンクを作成する「ln」コマンドで、「a.txt」のハードリンクを作成すると以下のようになります。

ln a.txt c.txt
ls -i
2754218 a.txt
2754219 b.txt
2754218 c.txt

「a.txt」と「c.txt」が同じiノード番号になっていることがわかります。つまりa.txtもc.txtも同じデータを指し示すということになります。
なお、a.txtに更新を行っても、c.txtに更新を行っても、同じデータが更新される動きになります。

これらの理由で、選択肢2が正解になります。

その他の選択肢の解説は以下のとおりです。

「1. ハードリンクは、別のファイルシステムに作成することができる」

iノード番号は、ファイルシステム毎に管理されています。
そのため、iノード番号を利用して作成するハードリンクは、ファイルシステムを超えて作成することはできません。

「3. ハードリンクは、リンクするファイルを削除すると利用できなくなる」

1つファイルからハードリンクを作成した後、一方のファイルを削除したとしても他方のファイルは今まで通り利用できます。

「4. ハードリンクの内容を変更する場合は、先に作成したファイルを更新しなければならない」

上記解説にあるとおり、ハードリンクはどのファイルに更新を行っても同じ更新結果となります。

ハードリンクを利用することで、別のパスに同じ内容のファイルを作ることができます。また新たにハードリンクを作成しても、基本的にディスク容量が増えません。この特性は、ファイルの管理や、バックアップの技術に応用されています。

どのような場合にハードリンクが使われているか調べてみると、理解が深まるのではないでしょうか。


■例題作成者 株式会社デージーネット ソリューション開発部    森 彰吾 氏

ページトップへ