AWS(EC2)などで検証環境を構築しているとき、「メモリがちょっと足りなくて処理が止まってしまった…」という経験はありませんか?
今回は、そんな時に役立つ「swap(スワップ)領域の作成方法」と、検証コストを賢く抑えるコツをご紹介します!
第1章:swap領域の概要とメリット
swap(スワップ)領域とは?
メモリ(RAM)が不足した際、ストレージ(SSDやHDD)の一部を「仮想的なメモリ」として使う仕組みです。メモリ不足によってプロセスが強制終了してしまう現象(OOM Killer)を防ぐことができます。
swap領域の作成理由
EC2などのクラウド環境でメモリ不足になった場合、インスタンスタイプを「nano → micro → small」とスケールアップすればメモリは増やせます。しかし、スペックを1段階上げると利用料金はほぼ倍になってしまいます。
そこで知っておきたいのが使い分けです。
- スケールアップが必要なケース:応答速度や負荷テストなど、本番環境に近いパフォーマンスを見たいとき
- swap対応で十分なケース:「とりあえず動くかどうか」の動作確認や、パッケージのビルドを一時的に通したいとき
単に動かして試したいだけなら、インスタンスタイプを上げずにswap領域を追加するのが費用を大幅に抑えるコツです!
第2章:swapファイルの作成手順
今回は、パーティションの再設定が不要で安全な「ファイル形式(swapファイル)」で作る手順をご紹介します。
swapファイルの作成
まずは、メモリ代わりに使うファイル(ここでは2GB)を作成します。ファイルの作成には主に2つのコマンドが使えます。
dd コマンドを使う場合
環境を選ばず、ほぼすべてのLinux環境で標準利用できる確実な方法です。
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
fallocate コマンドを使う場合
一瞬でファイルが作成できる便利なコマンドです。
※環境によっては未インストールの場合や、ファイルシステムによって実行できないことがあります。
sudo fallocate -l 2G /swapfile
アクセス権限の変更
セキュリティのため、管理者のみが読み書きできるように権限を設定します。
sudo chmod 600 /swapfile
swap領域としてフォーマット&有効化
作成したファイルをswap用に初期化し、有効化します。
sudo mkswap /swapfile
sudo swapon /swapfile
これで、即座に2GB分のswap領域が追加されます。
第3章:確認方法とワンポイントアドバイス
設定の確認方法
以下のコマンドでメモリの状況を確認してみましょう。
free -h
「Swap:」の項目に数値(2.0Giなど)が表示されていれば設定完了です!
再起動後も有効にしたい場合(永続化)
サーバーを再起動しても設定を維持したい場合は、/etc/fstab に以下の1行を追記します。
注意:
/etc/fstabの設定ミスは OS の起動不可に繋がるため、編集時のタイポ(打ち間違い)にはご注意ください。
/swapfile swap swap defaults 0 0
Tips
毎回手動で設定するのが面倒な場合は、Ansibleで自動化コードを組んだり、EC2のユーザーデータ(起動スクリプト)にこの手順を書き込んでおくと、検証環境の立ち上げがさらに楽になります!
まとめ
いかがでしたでしょうか?
「ちょっと動かして試してみたい」という時には、むやみにスケールアップせずswap領域を活用するのがとても効果的です。
知っておくと費用を抑えつつスムーズに検証が進められますので、ぜひ試してみてください!

