私のサーバーには2GB RAMおよび120GB SSD、さらにストレージ用のいくつかのRAIDアレイがあります。OSはDebian 8(Linux 3.16)です。
tmpdir
= _/run/mysqld
_を含むMySQL集中型アプリケーションがあり、これは_/etc/default/tmpfs
_を介してDebianによって構成されたtmpfs
です。
_# Size limits. Please see tmpfs(5) for details on how to configure
# tmpfs size limits.
TMPFS_SIZE=40%VM
_
これは、以前は_20%VM
_で、約384Mでした。私はいくつかの_no space left on device
_に対して実行したので、_40%VM
_に増やしましたが、約763Mでもまだ小さすぎます。
RAMを追加する必要がありますが、好奇心から、ここでの制限を知りたいのですが。
/dev/sdd1
_は_/
_にマウントされ、約50GBの空き容量があり、かなり高速です(Samsung 850 EVO SSD)/dev/sdd5
_は私のスワップパーティションで、3.7Gです(fdiskタイプIDは82)TMPFS_SIZE
_は_40%VM
_に設定されています。つまり、_/run
_は763Mです。これで、tmpfsがスワップできることがわかりました。 MySQLにRAM=への書き込みを可能にしたいのですが、より多くのメモリが必要な場合は、システムでSSDにスワップできるようにすることができます。
だから私のセットアップでは、_/run
_を次のようにプッシュできますか
/
_の空き領域を使用してさらにスワップできますか?安全のための経験則として、_TMPFS_SIZE
_をswap +物理メモリの半分より大きくしないことを私は推測しています。スワップパーティションを増やすことなく、これを超えることはできますか?
また、_200%VM
_を_/etc/default/tmpfs
_に入れることはできますか?私は tmpfs(5)
を読みましたが、これに100%を超えるかどうかはわかりません。
最後に、代わりに_/etc/fstab
_を使用し、_/etc/default/tmpfs
_には触れないでください。
(私は_mount -o remount
_でのみ実行したことを知っているため、まだサーバーを再起動していません)
編集:最後の質問については、_/etc/fstab
_で変更できる/可能性があることを知っています(以下のmanページの引用を参照)。ただし、_/etc/default
_ これまでのところ。
/ etc/fstabに適切なエントリを作成することで、より複雑なマウントオプションを使用できます。
私はそれをテストできると思ったので、実行しました:
Sudo mount -o remount,size=2800M /run
魅力のように働いた:
Filesystem Size Used Avail Use% Mounted on
tmpfs 2.8G 45M 2.7G 2% /run
だから私は少しそれを埋めました:
fallocate -l 1G /run/test.img
fallocate -l 1G /run/test2.img
fallocate -l 500M /run/test3.img
結果:
Filesystem Size Used Avail Use% Mounted on
tmpfs 2.8G 2.6G 208M 93% /run
システムはまだ稼働しています。スワップの可用性が低下し、それが使用されたことを証明します。
/run
に2.5 GBのファイルを作成スワップの合計は、/run
が使用した分だけ削減されます。
カーネルが再マウントを拒否するのか、予期しない動作をするのかわからないため、VMで10GBをテストします。
私はまだ実際の答えを探していますが、実用的な方法でそれが機能することを示しました。