web-dev-qa-db-ja.com

/ tmpへのシンボリックリンクとtmpfsの違い

読み取り専用のファイルシステム(Raspbian)を作成しようとしています。一般的な方法の1つは、tmpfsにディレクトリ(書き込み可能)を配置することです。

例として、私は以下を示唆するいくつかのチュートリアルを見つけました:

rm -rf /var/lib/dhcp/ /var/run /var/spool /var/lock
ln -s /tmp /var/lib/dhcp
ln -s /tmp /var/run
ln -s /tmp /var/spool
ln -s /tmp /var/lock

および/etc/fstab

tmpfs           /tmp            tmpfs   nosuid,nodev            0       0
tmpfs           /var/log        tmpfs   nosuid,nodev            0       0
tmpfs           /var/tmp        tmpfs   nosuid,nodev            0       0

私が理解する限りでは:

  • /var/lib/dhcp//var/run/var/spool、および/var/lockは、tmpfsとしてマウントされる/tmpにシンボリックリンクされます
  • ただし、/var/log/var/tmpは別々のtmpfsにマウントされます

/tmpだけをtmpfsとしてマウントし、他のすべてのディレクトリにシンボリックリンクできないのはなぜですか?

1
Mark

真の正しいアプローチは1つではありませんが、より良いアプローチの1つは次のとおりです xenoidが提案/tmptmpfsとしてマウントし、適切な権限でサブディレクトリを作成します。次に、/varの適切なサブディレクトリをそれらにリンクします。

一般に、手動でサイズを指定しない限り、複数の一時ファイルシステムをマウントすることはおそらく良い考えではありません。デフォルトでは(man tmpfsによると)、それぞれが使用可能なRAM)の半分の量を取得します。この例では、マウント時の空きメモリの合計87.5%を使用し、それぞれが連続するインスタンスは前のインスタンスの半分のサイズです。これは非常に奇妙なことです。

別の方法として、本当に一時ファイルシステムのみが必要な場合は、単一の大きなtmpfsを作成し、 nionFS などを使用して、/の書き込み可能な一時オーバーレイを作成できます。基本的に書き込み可能な/(とにかく通常のセキュリティを提供する権限を持つ)を使用することで失われる可能性のある安全性は、再起動時にすべてがクリアされることによって相殺されます。

1
Zombie Feynman