LinuCレベル1 Version 4.0 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. ハードリンクの内容を変更する場合は、先に作成したファイルを更新しなければならない」
上記解説にあるとおり、ハードリンクはどのファイルに更新を行っても同じ更新結果となります。
ハードリンクを利用することで、別のパスに同じ内容のファイルを作ることができます。また新たにハードリンクを作成しても、基本的にディスク容量が増えません。この特性は、ファイルの管理や、バックアップの技術に応用されています。
どのような場合にハードリンクが使われているか調べてみると、理解が深まるのではないでしょうか。
■例題作成者 株式会社デージーネット ソリューション開発部 森 彰吾 氏