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