自宅サーバー(CentOS 7)を構築してしばらく経つのですが、今頃になって以下のようなメールが通知されるようになりました。
Lack of free swap space on {HOSTNAME}
メモリ4GBも積んでいるのに、どうやらswap領域が足りない様子。
時間的に夜間のバックアップ時に通知されているようなので、一時的なものだと思われるが放っておくのも気持ち悪い。
そこで、swap領域の警告に対処するための2つの方法をご紹介します。
swap領域とは?
そもそも、swap領域とは何でしょう?
※知っている方は読み飛ばしてください
私的には、メモリが足りなくなった際の補助領域くらいにしか思っていませんでした。
一言でいうと、
使っていないメモリの内容を一時的にしまっておくための場所
らしいです…。
以下の参考サイトに図解で分かりやすく掲載されていますので、ぜひ参考にしてみてください!
1. swap領域の拡張(追加)
swap領域が足りないって言ってるんだから、追加してあげましょう。
しかし、ただ好きなだけ追加したら良いってわけじゃなさそうです。
推奨しているswap領域の目安があるらしいので、どのくらい割り当てるか、以下を参考にしてみてください。
確保するswap領域の目安
swap領域は、OSインストール中に自動的に確定されますが、最適なパフォーマンスを出すためには、swapサイズを手動で指定することが推奨されています。
RAM の容量(GB) | 推奨 Swap 領域(GB) | ハイバネートを許可する場合の推奨 Swap 領域(GB) |
---|---|---|
2GB 以下 | RAM * 2 | RAM * 3 |
2GB から 8GB | RAM と同じ | RAM * 2 |
8GB から 64GB | 最低 4GB | RAM * 1.5 |
64GB 以上 | 最低 4GB | 推奨しない |
swap領域を確認する
まずは、以下のコマンドで現在のswap領域がないか確認します。
free -m total used free shared buffers cached
Mem: 7872 7728 143 0 15 3325
Swap: 4095 3 4092
次に有効になっているswapを確認します。
swapon -sFilename Type Size Used Priority
/dev/dm-1 partition 1639 83592 -1
既にswap領域がありましたね。
どうやら、全く知識がないままCentOS 7をインストールした際に「標準パーティション」として設定したようです…。余談ですが、ファイルシステムをLinux標準の「ext4」ではなく、「xfs」のままに設定していた場合、swapパーティションを拡張する際に注意が必要になりますが、今回はswapファイルを作成しますので、ここでは特に説明しません。
※著者はこれでサーバーを破壊してしまいました
swapファイルを作成する
対象のサーバーに割り当てているメモリは4GBですので、上記の目安を参考に、トータル4GBのswap領域にします。
今回は、既に1.6GBのswapパーティションが存在しますので、2.4GB分のswapファイルを作成していきます。
swapファイル領域を確保
dd if=/dev/zero of=/swapfile bs=1M count=2457
パーミッションの変更
chmod 600 /swapfile
swapファイルを作成
mkswap /swapfile
swapファイルを有効化
swapon /swapfile
起動時に自動で有効化
最後にサーバーが起動した際に、作成したswapファイルが自動で有効になるよう、ディスクのマウントと同じ要領でfstab
の末尾に追記します。
vi /etc/fstab
/swapfile swap swap defaults 0 0
2. Zabbixの監視を無効にする
もう1つは、swap領域をZabbixの監視対象から外す方法です。
使わないんだったら監視しなくてもいいじゃん!って発想。
Zabbixの管理画面からswapトリガーを無効にします。[設定] > [テンプレート] > [Template OS Linux] > [トリガー]を開きます。
[Lack of free swap space on {HOST.NAME}]のステータスの右側にある[有効]をクリックし、[無効]にします。
これで通知が来なくなりましたね。
- Original:https://minory.org/swap-warning.html
- Source:Minory
- Author:管理者