ハードリンクがたくさんあると、ファイル操作が遅くなる?
削除に関しては、原理上、(少なくとも古典的な UNIX のファイルシステムでは)i-node のリンクカウントを -1 するだけなので、遅くなりません。むしろ、データ領域の bitmap に対する操作が不要なぶん、速くなります。
参照: システムプログラム概論 - ファイルシステム 1 2
実験: サンプルとして、
- 総ディレクトリ数 2221
- 階層数 3
- ファイルサイズ 1000 バイト
- 総ファイル数 28060
- ディスク領域 237MB
というディレクトリツリーを作成する。これを、cp -a と cp -al でそれぞ れ 30 セット複製する。1 セットを削除するのに要する時間は、
- cp -a (実体) 9.6 秒
- cp -al (リンク) 3.6 秒
となり、ハードリンクを削除するほうがずっと速い。
大量のハードリンクがあると遅くなる操作の例としては、du があります。du はリンクを二重カウントしないように i-node を追跡するため、大量のハードリンクがあると動作が遅くなります。