web-dev-qa-db-ja.com

/ tmpディレクトリにRAMストレージを使用する方法と、RAM使用量の最大量を設定するにはどうすればよいですか?

コメント by 匿名 質問 / tmpディレクトリはどのようにクリーンアップされますか? を見た後、私はそれが16GBのRAMがあり、すべてを使用したことがないため、システムに実装します。

一時ファイルがディスクに書き込まれることはありません。それらはRAMディスクに書き込まれます。 tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0を/ etc/fstabに入れました。

私の質問は:

RAMの最大値を/tmpに設定できますか?そして、その場合、最大量を超えた場合はどうなりますか?ハードディスクドライブに書き込みますか?

私は次のような解決策を読みました:

mkdir -p /tmp/ram
Sudo mount -t tmpfs -o size=512M tmpfs /tmp/ram/

しかし、私の理解では、これは永続的な解決策ではありません。永続的にする必要がある場合は、/etc/fstab構成ファイルに追加する必要があります。

これが正しい解決策である場合、そのマウントコマンドを/etc/fstabの行に変換するにはどうすればよいですか?

92
Dan

あなたは、絶対に正しい。それに応じたfstabエントリは次のようになります。

tmpfs /tmp tmpfs defaults,noatime,nosuid,nodev,noexec,mode=1777,size=512M 0 0

注意してください:

tmpfsがいっぱいになると、「スペースが不足しています」というエラーが表示され、物理ハードドライブとして動作します。再起動(したがってキャッシュを空にする)でこれが修正されますが、1つの操作がtmpfsにあるスペースよりも多くのスペースを最初に消費すると問題が発生する可能性があります。この場合、コンピュータはRAMからディスクへのスワップを開始します。当然、スワップパーティションがあると、システムはクロールを停止します。

これを考慮すると、最近のマシンでははるかに多くのRAMが存在し、はるかに安価になっているため、512MBのサイズは今日でははるかに少ないかもしれません。既に16 GBのRAMを持っているので、tmpfsにRAMの半分のデフォルト値を使用すると、ほとんどすべてのシナリオで十分です。デフォルト値を使用するには、size=512Mファイルの/etc/fstabエントリを省略します。

別のメモ:

以下のように、他のシステムフォルダーをRAMディスクに簡単にマウントすることもできます。

/var/cache

/var/games

/var/log/aptdefaults,noatimeまたはnosuidなしでmode=のみを使用してください)

ただし、注意してください:上記と同じルールが適用されます。スペースが不足すると、重大な問題が発生する可能性があります。例えば。/var/log/aptのスペースが不足すると、プログラムをインストールできなくなります。さらに、/var/logフォルダーをramdiskにロードすると、再起動時にすべてのログファイルが削除されるため、予期しないことが発生した場合にシステムをデバッグできなくなります。したがって、これらの設定は自己責任で使用してください。

編集上の注意:tmpfsマウントオプションで/runを削除しました。このフォルダーとそのサブフォルダーはデフォルトでtmpfsに既にマウントされているためです。

80
FuzzyQ

systemdを使用するシステムでは、tmpfsを使用してtmpをマウントするという目標を達成するために、fstabではなくsystemdユニットファイルを使用するオプションがあります。 Ubuntu 16.04システムで、次を実行しました。

Sudo cp /usr/share/systemd/tmp.mount /etc/systemd/system/tmp.mount
Sudo systemctl enable tmp.mount
Sudo systemctl start tmp.mount

ファイル/usr/share/systemd/tmp.mountは次のようになります。

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
[Unit]
Description=Temporary Directory
Documentation=man:hier(7)
Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems
ConditionPathIsSymbolicLink=!/tmp
DefaultDependencies=no
Conflicts=umount.target
Before=local-fs.target umount.target
After=swap.target

[Mount]
What=tmpfs
Where=/tmp
Type=tmpfs
Options=mode=1777,strictatime

[Install]
WantedBy=local-fs.target

Systemdは、FuzzyQのfstabアプローチを使用して、fstabエントリをマウントユニットに動的に変換します。どちらのアプローチも優れているとは思いません。

RAMの最大制限を設定するために、size=512MOptions行にコンマで区切って追加する必要があります。

34
Rick Ramstetter