awsのEC2でswap領域を指定する際のベストプラクティス

awsのEC2では、一部のインスタンスタイプを除いてswap領域が付いていません。

swap領域を設定する方法としては、swap領域用のイメージをファイルで作成してswaponする方法があります。

今回紹介する方法は、awsナイズした方法で、ボリュームを作成してswapとしてマウントさせる方法になります。

通常はストレージとしてのボリュームはボリュームタイプを標準のgp2に設定されていると思うので、それよりも早いプロビジョンドIOPS SSDというボリュームタイプでswapを作成します。

そうすることで、swapが発生したときの性能も大きく落とすこと無くサービスを稼働させられるようになります。

ただ、最低サイズが4GBからとなります。

作成したボリュームをマウントさせたいEC2インスタンスにアタッチしたら
確認してみます。

領域をswapとしてフォーマットします。

swapの作成

終わったら/etc/fstabに設定を書きます。

この時、通常のlinux等では/dev/dbfなどのデバイスパスでマウントさせることになりますが、最近のEC2はNITRO世代と言って(t3.*)などのインスタンスは/dev配下のマウント名が変わっています。

しかも、このマウント名が常に固定では無いので、インスタンスの再起動などをすると、root fsはマウントされて起動するのにswapが外れている、ということがよく起こります。

これを解決するため

blkidというコマンドで表示されるドライブのなかからswapの物を特定し
uuidを使用して/etc/fstabに設定していきます。

# blkid

このような感じに表示されると思います。

TYPE=swapというものがあるので、そのUUIDを使って定義します。

/etc/fstabを以下のように編集(追記)します。

これで、サーバを再起動しても常にswapがマウントされるようになります。

アンケート

AWS, PC関連, 開発

Posted by GENDOSU