私の VPS ホストの設定用 Web インターフェイスには、 を設定するためのドロップダウン ボックスがあります/tmp
。
デフォルトは「16MB RAM」で、代替は「ハードディスク」です。
使用可能なメモリが 16 MB しかないと、/tmp
一部のソフトウェアに問題が発生する可能性はありますか? あるいは、ないでしょうか?
答え1
/tmp が 16MB しか使用できないと、一部のソフトウェアに問題が発生する可能性はありますか?
はい、あるソフトウェアが書き込みを行おうとしてい/tmp
て、そのソフトウェアまたは他のソフトウェアがすでにパーティションをいっぱいにしている場合は、書き込みが行われます。通常、これはシステムの構成が不適切であるか、使用可能なリソースに正当な制限があるか、他のソフトウェアの誤動作のいずれかを示します。いずれの場合も、書き込みを行おうとしているソフトウェアが自分で解決策を見つけようとすることはほとんどなく、エラーが発生します。
一部のソフトウェアは、 に大きなファイルを書き込むことができると想定していますが/tmp
、公平に言えば、これは妥当な想定です。この問題は、ミスの「不適切な構成」の範疇に入るでしょう。
最初に自問すべき質問は、「RAMを に使用することで、どのようなメリットがあるか/tmp
?」です。最も明白なのは、潜在的利点は、RAM へのアクセスがディスクへのアクセスよりはるかに高速であることです。ただし、この明らかな潜在的な利点は、実際にはそれほど有益ではない可能性があります。その理由は次のとおりです。
システムは、頻繁にアクセスされるファイルを RAM にキャッシュします。このキャッシュに使用できる RAM の量を減らしてそこに保存するのは、あまり使用されないファイルがキャッシュ内の頻繁に使用されるファイルに取って代わる
/tmp
ことになるので、少しばかげています。/tmp
アプリケーションは既に RAM に自由にデータを保存できます。これは一般的にファイルに保存するよりも簡単です。そのため、アプリケーションが tmp ファイルに何かを保存する場合、それが RAM に保存することでメリットを得られるものである可能性は非常に低くなります。 に実際に何が入っているかを確認すると
/tmp
、おそらくほとんどがソケットと FIFO、または小さな IPC データです。RAM ベースのファイル システムを介してそれらにアクセスすると、概念的には整理されますが、実際に違いが出るとは思えません。
そうだとすると、なぜ/tmp
RAM に実装されるのでしょうか?
/tmp
これにより、シャットダウン時に消去されるという の推奨プロパティの実装が簡素化されます。ハードウェアの消耗をわずかに軽減できる可能性があります。これは、ストレージに安価で寿命が限られたフラッシュのみを使用している場合や、書き込み可能なストレージがまったくない場合 (組み込みシステムなど) には、さらに重要です。
乱用されていないと仮定すると
/tmp
、RAM を使用すると、現代のハードウェアの通常膨大なメモリ容量が活用されます。つまり、これが本来あるべきものであると仮定すると、このものは RAM 内にあるのと同じようなものです。
16MBできた十分ですが、何らかのプロセスがおかしくなって、/tmp
誰でも書き込み可能になる必要がある場合は/tmp
、それでも十分ではありません。しかし、何らかのプロセスがおかしくなって にデータを書き込む場合、最終的にハードドライブがいっぱいになるか、RAM パーティションを使い果たしたためにすぐに赤旗が振られる方がよいでしょうか。
使用しているソフトウェアに自信がある場合は、後者の方が理にかなっているため、RAM パーティションを選択できます。/tmp
まず、何か異常なことが起きていないか、実際の使用状況を少し調べる必要があります (例du -h /tmp
)。「通常のしきい値」を設定し、それを cron ジョブでチェックして、しきい値を超えたときに誰かに警告したり、緊急クリーニングを実行したりすることができます。
残念ながら、一部のアプリは、/tmp
突然障害が発生した場合に削除されないものを時々ダンプすることがあります。また、頻繁にシャットダウンしないサーバーでは、それが無期限に残される可能性があります。これは、たとえば誰かがログインして何かを使用すると、接続が勝手に閉じられたり破棄されたりするなど、非常に無害な形で発生する可能性があると思います。
したがって、RAM 以外の方が/tmp
安全です。不正使用は長期間気付かれない可能性がありますが、それは RAM の場合ほど重大ではないからです。さらに、何かが本当に問題を引き起こした場合、問題の原因を示す決定的な証拠がディスク上に残ります。