
tmpfsメモリベースのファイルシステムに/ tmpディレクトリをマウントする方法は次のとおりです。
systemctl enable tmp.mount
そして、次の点を考慮してください。
理由の1つ:異なるパスに別々のファイルシステムを使用すると、ファイルシステム全体またはエラーが発生したファイルシステムによって引き起こされるエラーからシステムを保護できます。
-
他の理由:/ tmpディレクトリにファイルを書き込む一部のアプリケーションは、ディスクの代わりにメモリを使用すると大きな改善が見られます。
ディスクキャッシュは常に機能しますか?私の言葉は、あなたが書くときどのディスクにフラッシュされるまでとにかくRAMに書き込むフォルダ(だけでなく/tmp
)...カーネルはこれらすべてを後ろから処理するので、調整するために介入する必要がないと思います。もしそうなら、これは本当に価値がありますかsystemctl enable tmp.mount
?だとしたらどうでしょうか?
また、(CentOS-7.6で)現在経験している状況を理解するためにこれをテストしています。
- CentOS 7.6は500GB SSDにインストールされており、単純なディスクパーティションは次のとおりです。
/dev/sda1
1GB/boot
- 100MB
/dev/sda2
は/boot/efi
/dev/sda3
475GB/
- 8GB DDR-4 RAMを搭載したPC
- 私がそうすれば
systemctl enable tmp.mount
私は得るでしょう- 3.9GB
tmpfs
は/tmp
- 3.9GB
tmpfs /tmp at 3.9GB
(a)最初にディスクキャッシュのためにRAMに基づいて最大8 GBの容量を持ち、(b)利用可能なディスク使用量のうち、8 GB RAMのディスクキャッシュに基づいて400 GBを超える基本的な方法よりも、これはどのように優れていますか?
答え1
この構成が「価値を追加」するかどうかは、そのユースケースによって完全に異なります。 「良い」、「悪い」は、コンテキストのないさまざまな設定オプションの有効なラベルではありません。
RAM容量が大きくトランザクション数が多いシステムでは、tmpfsファイルシステムを使用するとパフォーマンスが向上する可能性があります。タイプ2ハイパーバイザー)。これは「良い」ユースケースかもしれません。
あるいは、RAMは少ないが、ストレージスペースは多くのシステム(例えば、今日作成されているすべてのIoTごみ)は/ tmpストレージデバイスへの物理書き込みでより良いパフォーマンスを発揮する可能性があります。スワップも有効になります)。これはtmpfs /tmpの「悪い」ケースと見なすことができます。
答え2
マウントパスを使用する場合、tmpfs
デフォルトのサイズは物理メモリの半分です。システムにメモリ不足がない限り、ここに入れたファイルはすべてメモリに保存され、ディスクには影響しません。
これは、回転ディスク、SSD、nvme などの物理永続ストレージにファイルを書き込むこととは対照的です。 500 GBの空きメモリがあり、ローテーションディスク上のファイルに対して1 GBのOpen-Write-Close操作を実行している場合、カーネルは次のようないくつかの操作を行います。
- カーネルが書き込みをバッファリングします。
- ファイルシステムがジャーナリングファイルシステム(例:ext4、xfs、btrfs、zfsなど、現在使用されているほとんどのファイルシステム)の場合は、まずそのログ書き込みをバッファリングします。
- カーネルは、設定された I/O スケジューラに応じて、適切な I/O アイドル期間または期限の間、バッファを適切な順序でフラッシュします。
- これらのアイドル状態が発生する前にファイルを作成、書き込み、削除しても、カーネルは最終的に含まれるディレクトリの修正時間を更新します。
tmpfsは、システム全体のメモリ使用量が十分に高く、十分なメモリを使用するアプリケーション(およびすべてのプロセス)をディスクに置き換える必要がある場合にのみディスクにアクセスします。 tmpfs ブロックはページアウトされ、他のアプリケーションのメモリと同様にスワップに書き込まれます。スワップを無効にすると、カーネルはメモリを解放するためにプロセスを終了し始めます。しかし、それ以外はディスクに触れることはありません。ログなし、生成/アクセス/変更タイムスタンプなし、ユーザー権限なし、何もありません。 tmpfsを使用すると、「これらのファイルを他のすべてのファイルと一緒にメモリに保存し、忘れる可能性があるメインメモリとして扱います」と言います。
tmpfsは最初に出てきたときに本当に驚きで、Solaris / Linuxで「RAMディスク」を作成するほとんどすべての方法を置き換えました(まだどこに移植されたのか覚えていません)。