〜ときどきメモる備忘録〜
十分な物理メモリーがノードにあれば swap を完全に無効化しても良いだろう。
ただし、メモリーのオーバーコミットを前提としているようなシステムだとノードが不安定になるかもしれない。
自分の環境だと常時全ての VM/CT を起動している訳じゃないから、3 ノードとも 32GB の物理メモリーで RAM 使用状況は常に 50% 以下。仮にクラスタ内のノードの一つが落ちても最小限の VM は支障なくライブマイグレーション可能な構成にしているつもり。
SSD の寿命に大きく影響するほどスワップファイルを使用してはいないと思う。でも swap 使用状況が 50% を超えるような状況になると気持ちが悪いので調整してみる。
自分の環境だとメモリーに余裕があるとは言えず、swap の無効化までは踏み込めないから参考ということで。
環境によっては数分くらいかかるかも。PVE の管理画面で swap 使用状況を確認できる。
swapoff -a
次の行を削除する。
/dev/pve/swap none swap sw 0 0
lvchange -an /dev/pve/swap
lvremove /dev/pve/swap
僅かなスペースとはいえ無駄なので / を拡張する。
lvextend -l +100%FREE pve/root && resize2fs /dev/pve/root
こちらのサイトを参考に仮想メモリーパラメーターの vm.swappiness で SWAP の利用具合(圧力)を調整する。積極的に swap を利用したくはないけど、一応サーバーなので保険の意味を兼ねてということで。
cat /proc/sys/vm/swappiness
デフォルトは 60。1 〜 200 の間で設定が可能で、大きな値ほど積極的に swap を利用する。0 にしても swap を無効にできる訳じゃない。RedHat のサイトによると、
メモリーまたは I/O 集約型のワークロード下で oom_killer 関数によるプロセスの強制終了のリスクが高まります。
とあるから注意。
swapoff -a
ノードを再起動するとデフォルトの 60 に戻る。一時的に 10 にしてみる場合。
sysctl vm.swappiness=10
swapon -a
/etc/sysctl.conf に次の行を追加する。
vm.swappiness = 10
設定を有効化する。
sysctl -p
vm.swappiness = 0 で swap が無効化できるような誤った記事を見かけるから注意。