beta

Rancher OSでswapを設定して永続化する方法

Dockerに特化したOS・Rancher OSでswapを設定して永続化する方法をまとめました。メモリサイズが小さいサーバーでRancher OSを使う場合は設定しておくと便利です。

公開日:2021年5月19日

SWAPを作成するところはDebianのまま

まずはスワップファイルを作成してスワップ化します。ここの行程は普通のDebian系OSと同じです。

## swapfileを作成
sudo fallocate -l 1G /swapfile
## swapfileを確認
ls -lh /swapfile
## swapfileの権限を変更してスワップ化
sudo chmod 600 /swapfile
sudo mkswap /swapfile
## swapfileをスワップにする
sudo swapon /swapfile

ここまでできたらスワップが追加されているはずなので、freeコマンドで確認します。

$ free
             total       used       free     shared    buffers     cached
Mem:       1012000     939084      72916     277912       9500     774572
-/+ buffers/cache:     155012     856988
Swap:      1048572          0    1048572

問題ないですね。

SWAPの自動マウントは設定ファイルで行う

先程設定したスワップは今回の起動限りになるので、再起動するとスワップマウントが外れます。永続化するためには、追加の設定が必要です。

/etc/fstabの設定は無視される

Debian系なら/etc/fstabに、

/swapfile none swap sw 0 0

と設定を書けば起動時に自動で/swapfileがマウントされますが、Rancher OSでは設定が無視されます。これはコンソールをubuntuなどにしても同じでした。

Rancher OSがDockerに特化したシステムになっていることが要因でしょう。

cloud-config.ymlを書いて設定に追加

では、どうやってRancher OSでスワップを永続化させるのかというと、Rancher OSの設定ファイル(xxx.yml)を使用するようです。

作成した設定ファイルは、Rancher OS独自のrosコマンドで実際の設定にマージするので、設定用のymlファイルの、ファイル名や設置場所はどこでも大丈夫です。

vi test.yml

#cloud-config
runcmd:
 - sudo mkswap /swapfile
 - sudo swapon /swapfile
mounts:
 - [ /swapfile, none, swap, sw, 0, 0 ]

cloud-config.ymlは必ず「#cloud-config」から書き始めるのがルールです。シェルスクリプトなどと同じですね。「mounts」はそのままの意味ですが、「runcmd」は起動時に実行するコマンドです。

上の例では、/swapfileをマウントして、スワップ化してswaponするという流れになっています。

設定ファイルが書けたらマージします。

sudo ros config merge -i test.yml

設定ができたら再起動します。再起動されたら設定が反映されているかをチェックします。

sudo ros config export

Rancher OS全体の設定になるので、記述したymlファイルよりも大きくなっていますが、

  • mounts:
  • runcmd:

に先程の設定が追加されていればOKです。

念の為freeコマンドでswapがあるかもチェックすると良いでしょう。

Author

Koji Kadoma
Member of codit.work

新着ノート

新着コード