はじめに
AmazonLinuxをはじめ、モダンなVPCはストレージIO負荷を下げるためスワップ領域を予めアタッチしない構成が増えてきています。しかし、一時的なメインメモリの使用のために、サービス用のメモリを圧迫してしまうのも本末転倒(そういったスパイクな負荷を起こす処理は他のインスタンスなりに分離しろ、という意見はここでは横に置かせて頂きます)。
EC2上のAmazonLinuxでもローカルPC上のVirtualBox上のLinuxでも同様の手順でスワップ領域をオンラインにしたりオフラインにしたりできますので紹介します。
スワップ用のストレージを、メインのストレージとは別に用意する方法をとります。スワップ領域に必要な容量分のEBSなり仮想ハードディスクなりをマウントしておいてください。本投稿では、/dev/sdcにマウントすることにします。
スワップ用パーティション作成
ストレージ上にパーティションを作成する手順はこちらの投稿を参照してください。
mkswapコマンドにより、スワップ専用にフォーマットします。
$ sudo mkswap /dev/sdc1
スワップ有効化
もし現状でスワップを使用しているときにswaponコマンドでスワップ領域を追加すると、スワップ領域は単純に増えます。もしいまあるスワップ領域を一度解放してから、今回新しく作成したスワップ領域をオンラインにする場合は、現状のスワップ領域を解放する必要があります。
$ sudo swapoff -a
ただし、メインメモリに十分な空きがないとシステム全体が不安定になり、最悪ハングアップしてしまう可能性がありますので、スワップ領域の付け替えの場合は十分注意してください。
作成したスワップ領域をオンラインにして、スワップを有効化します。
$ sudo swapon /dev/sdc1