Proxmox VE の swap を調整する

Proxmox

十分な物理メモリーがノードにあれば swap を完全に無効化しても良いだろう。
ただし、メモリーのオーバーコミットを前提としているようなシステムだとノードが不安定になるかもしれない。

自分の環境だと常時全ての VM/CT を起動している訳じゃないから、3 ノードとも 32GB の物理メモリーで RAM 使用状況は常に 50% 以下。仮にクラスタ内のノードの一つが落ちても最小限の VM は支障なくライブマイグレーション可能な構成にしているつもり。

SSD の寿命に大きく影響するほどスワップファイルを使用してはいないと思う。でも swap 使用状況が 50% を超えるような状況になると気持ちが悪いので調整してみる。

 

【1】swap の無効化

自分の環境だとメモリーに余裕があるとは言えず、swap の無効化までは踏み込めないから参考ということで。

swap の停止

環境によっては数分くらいかかるかも。PVE の管理画面で swap 使用状況を確認できる。

swapoff -a

 

/etc/fstab の編集

次の行を削除する。

/dev/pve/swap none swap sw 0 0

 

論理ボリュームの非アクティブ化

lvchange -an /dev/pve/swap

 

論理ボリュームの削除

lvremove /dev/pve/swap

 

pve/root の拡張

僅かなスペースとはいえ無駄なので / を拡張する。

lvextend -l +100%FREE pve/root && resize2fs /dev/pve/root

 

【2】swap の利用具合の調整

こちらのサイトを参考に仮想メモリーパラメーターの vm.swappiness で SWAP の利用具合(圧力)を調整する。積極的に swap を利用したくはないけど、一応サーバーなので保険の意味を兼ねてということで。

現状確認

cat /proc/sys/vm/swappiness

デフォルトは 60。1 〜 200 の間で設定が可能で、大きな値ほど積極的に swap を利用する。0 にしても swap を無効にできる訳じゃない。RedHat のサイトによると、

メモリーまたは I/O 集約型のワークロード下で oom_killer 関数によるプロセスの強制終了のリスクが高まります。

とあるから注意。

 

swap の無効化

swapoff -a

 

一時的な swappiness の変更

ノードを再起動するとデフォルトの 60 に戻る。一時的に 10 にしてみる場合。

sysctl vm.swappiness=10
swapon -a

 

恒久的な  swappiness の変更

/etc/sysctl.conf に次の行を追加する。

vm.swappiness = 10

設定を有効化する。

sysctl -p

 

【3】参考にしたサイト

vm.swappiness = 0 で swap が無効化できるような誤った記事を見かけるから注意。