4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

cloud-initでswapを設定する

Last updated at Posted at 2021-10-04

t3.nanoみたいなメモリが0.5GBぐらいしかないインスタンスで遊んだりすると、ちょっとサービス起動したり、下手するとパッケージの大量アップデートなどがあるだけでメモリ不足になることがあります。

EC2に限らず昨今のクラウドサービスの仮想マシンは基本的にswapが設定されていないのですが、それだと色々困ったので、今回はcloud-initでswapの設定をやってみようと思います。

※ここではAWSを前提に進めていきますが、だいたいどの環境でも一緒でしょう。

インスタンスストアがない場合

既存のボリュームにswapファイルを作りましょう。
気の利いた設定機能はないのでruncmdでゴリゴリ書きます。

流れとしてはこのような感じになります。

  1. ddコマンドでswap用のファイルを作る
  2. mkswapでスワップ領域を作る
  3. swaponでスワップ領域を有効化する
  4. 再起動時に自動マウントされるように/etc/fstabに設定を書いておく
#cloud-config
runcmd:
  - [ sh, -c, "dd if=/dev/zero of=/swapfile bs=64M count=32" ]
  - [ sh, -c, "chmod 600 /swapfile; mkswap /swapfile; swapon /swapfile" ]
  - [ sh, -c, "echo '/swapfile none swap defaults 0 0' >> /etc/fstab" ]

サイズは環境に合わせて適宜調整してください。
ddのブロックサイズ(bs)はあまり大きくするとメモリ不足でエラーになるので、小さめにしたほうが無難です(ブロックサイズ分のメモリを消費するため)。

時々「ddよりfallocateがいいよ」みたいな記事を見かけますが、fallocatedで作成したファイルをswaponしようとするとエラーになるケースが存在するのでddが無難だと思います。

インスタンスストアをまるまるswapにする場合

インスタンスストアがあってそれをまるまるswapにする場合は……調べてみても古めの記事しか出てこないのと、実際に試したことがないので、ここではあえて触れません。
ただ、やることは大体同じでしょう。最初からデバイスがマウントされてるので、少し手順が変わるだけです。

cloud-config ephemeral swapとかで検索すると参考になりそうな記事が出てきます。

参考

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?