私は Gentoo Linux を使用しており、現在/usr/portage
(数千の小さな ebuild ファイルを含む portage のデータベース)、/var/tmp/portage
(portage のコンパイル ディレクトリ)、/var/tmp/ccache
(コンパイラ キャッシュ ディレクトリ) を reiserfs に移動しています。これらのディレクトリはパフォーマンスに敏感で、portage がパッケージの依存関係を計算してパッケージをコンパイルするときに、数千の小さなファイルにアクセスして書き込みが行われます。
ディレクトリを新しいファイルシステムにリダイレクトする最も速い方法は何ですか? システムはシンボリックリンクをテキストとして解析するため、シンボリックリンクを使用するとパフォーマンスが大幅に低下しますか? マウント バインドの方が適していますか?
答え1
Mount --bind
シンボリックリンクよりも高速になるはずです。
mount -B /mnt/portage /usr/portage
読んでいただければ/usr/portage
i-node がわかり/mnt/portage
、通常のディレクトリと同じくらい速く動作するはずです。
シンボリック リンクの解決速度は、リンクされたパス内のコンポーネントの数によって異なります。そのため、/usr/portage
リンクされている場合は/mnt/portage
、追加の i ノード読み取りが 3 回、ディレクトリ検索が 2 回行われます。
これらのファイル システムを実際に頻繁に使用しない限り、これらの方法の違いに気付くことはないと思います。