GCP VM インスタンス に SWAP (スワップ) を設定する

Set Up Swap PC・サーバー

GCP (Google Cloud Platform)、マシンタイプ e2-micro (メモリ 1GB)、Ubuntu 20.04.4 の VM インスタンスでのこと。最近、メモリ不足と思われる原因で頻繁にフリーズするようになりました。そこで SWAP を設定することに。過去に SWAP 領域を拡張したことがあるので、その当時を思い出しならが作成することにしました。
以下、その手順です。
なお、全ての操作は GCP 管理コンソールを開き「Computer Engine」 の「 VMインスタンス」内の 「SSH 接続」から行えます。

アクティブな SWAP の有無を確認します

「free コマンド」で アクティブな SWAP の有無を確認します。
併せて [swapon -s]、[cat /proc/swaps] でも確認してみましょう。

free -m

以下「free コマンド」のアウトプットです。
「Swap」のサイズが「0」ですのでアクティブな SWAP はありませんね。

              total        used        free      shared  buff/cache   available
Mem:            968         530         102          69         335         218
Swap:             0           0           0

仮に、あったとしてもこの手順で複数の追加 SWAP 領域の作成は可能ですよ。
これからの説明にある新たに作成する SWAP ファイル名を既存の SWAP ファイル名と異なるの名前(フルパス)にすれば良いだけですので ...

SWAP 領域をアロケートします

SWAP 領域は、以下のようなファイルで設定することにします。SWAP サイズ、SWAP ファイル名は、ご自由に ...

  • SWAP サイズ:2GB
  • SWAP ファイル名:swapfile(ルートディレクトリ直下)

「fallocate コマンド」で SWAP ファイルを作成しましす。
なお、下層ディレクトリ内に作成する場合は、フルパス指定を推奨します。

sudo fallocate -l 2G /swapfile

SWAP ファイルのパーミッションを設定します

「chmod コマンド」で 作成した /swapfile のパーミッションを 600 に設定します。

sudo chmod 600 /swapfile

「ls コマンド」で /swapfile のパーミッションが 600 であることを確認しましょう。

sudo ls -l /swapfile

SWAP ファイルを SWAP 領域として初期化します

「mkswap コマンド」で /swapfile を SWAP 領域として初期化 (mk) します。

sudo mkswap /swapfile

SWAP ファイルを SWAP 領域として有効化します

「swapon コマンド」で /swapfile を SWAP 領域として有効化 (on) します。

sudo swapon /swapfile

SWAP ファイルを SWAP 領域として自動マウントするようにします

サーバを再起動する度に手動で「swapon」コマンドを実行する必要が無いように「tee コマンド」で「/swapfile none swap defaults 0 0」の情報を /etc/fstab に追加します。
なお、テキストエディタで追加することもできますね。

この追加情報は、ファイルシステムをマウントするための情報を定義してある「/etc/fstab」の仕様に従うことになりますので、興味のある方はご自身で調べてみましょう。

echo '/swapfile none swap defaults 0 0' | sudo tee -a /etc/fstab

「cat コマンド」で /etc/fstab に情報が書き込まれたことを確認しましょう。

cat /etc/fstab

SWAP の動作確認をします

「reboot コマンド」でシステムの再起動を行ってから「free コマンド」で SWAP が有効になっていることを確認します。

sudo reboot
free -m

以下「free コマンド」のアウトプットです。「Swap」にサイズが入っていれば、無事完了です。

              total        used        free      shared  buff/cache   available
Mem:            968         377         225          43         365         399
Swap:          2047         331        1716