Ubuntuでスワップのサイズの増やし方について書きます。
スワップとはなにか?
コンピュータが処理を行う際にはメモリーという領域にデータを格納します。このメモリーは高速でアクセスできるのですが高価であるため、ハードディスクやSSD等の記憶装置に比べると容量が小さいです。
2020年初頭の今だと廉価モデルで4GB、一般モデルで8GBぐらいでしょうか。メモリーが多ければ多いほどたくさんのアプリケーションが起動できるのですが、起動しすぎるとメモリーを使い切ってしまいます。
そこでハードディスクやSSD上にメモリーとして代用できる場所を確保したものがスワップです。Ubuntuの初期値だと2GBのスワップがセットされていますが、使い方によっては足りない場合があります。
私はUbuntu上でGitLabサーバを立てたらメモリが無くなり更にスワップも2GBすべて使い切ってしまいました
スワップ拡張イメージ
現在の使っているスワップファイルのサイズを拡張するよりは、新しくスワップファイルを追加するほうが簡単です。ファイルは別でもスワップとしてOSに認識させれば勝手にいい感じで使ってくれます。
スライスを別に切る方法もありますが、ファイル追加のほうが簡単なので、ここではファイル追加方式で進めます。
Ubuntuのスワップサイズの増やし方
現在のメモリーとスワップの状態を確認
freeコマンドで確認できます。memがメモリーサイズ、Swapがスワップのサイズです。-mオプションを指定しているので単位はメガバイトです。
この環境ではメモリが4GB、スワップが2GBです。usedは使用している容量です。メモリーは半分以上使っていますが、スワップはまだほとんど使ってない状況ということが分かります。
$ free -m
total used free shared buff/cache available
Mem: 3908 2237 114 33 1556 1367
Swap: 2047 2 2045
GUIで見るとこんな感じです。
スワップ追加
スワップファイルの作成
まずは入れ物となる空っぽのファイルを作成します。fallocateコマンドを使うと大きなファイルも一瞬で作れます。スワップファイルは/swapfile で既に存在すると思いますので、同じところにもう1つ作ります。取り敢えず2GBの入れ物を作ってみます。
$ sudo fallocate -l 2G /swapfile2
スワップファイルのパーミッションを変更
パーミッションというのはアクセス権限制御のことです。スワップファイルはメモリの中身を一時的に保管する大事なファイルですので、rootユーザしか読み書きできないように変更します。
パーミッション変更
$ sudo chmod 600 /swapfile2
変更できたか確認
$ ls -l swapfile*
-rw------- 1 root root 2147483648 7月 19 2019 swapfile
-rw------- 1 root root 2147483648 2月 11 19:06 swapfile2 ←今回追加したスワップファイル
一番左側が「-rw——-」となっていればOKです。「-rw-rw-rw-」とかはだめです。
スワップファイルとして登録
スワップファイルとして認識させるには、mkswapコマンドを使って先程作成したスワップファイルを指定します。
$ sudo mkswap /swapfile2
mkswap: /swapfile2: 警告: 古い swap 署名を消去しています。
スワップ空間バージョン 1 を設定します。サイズ = 2 GiB (2147479552 バイト)
ラベルはありません, UUID=3348812e-77a4-4b88-8509-ef2ce3923ffd
きちんと登録できたか確認するには、swaponコマンドを使います。
$ swapon -s
ファイル名 タイプ サイズ 使用済み 優先順位
/swapfile file 2097148 28672 -2
/swapfile2 file 2097148 0 -3
うん、ちゃんと先程追加したスワップファイルが追加されていますね。ついでにfreeコマンドでも確認しておきましょう。登録前のSwapは2047でしたが、4095に増えましたね。
$ free -m
total used free shared buff/cache available
Mem: 3908 2920 129 30 858 783
Swap: 4095 28 4067 ←増えたーー
GUIで見ても増えてますね(当たり前か)
スワップは即時反映されますので、再起動とか不要ですので、緊急時にも追加してシステムダウンを避けることもできます。
スワップ追加(恒久対応)
OS再起動する度にスワップを拡張するのが面倒な場合は、/etc/fstabに設定を追加すれば自動で毎回拡張されます。次のコマンドで先程のスワップファイルを起動時に自動で設定します。/swapfile2の部分はスワップファイル名です。適宜読み替えてください。
※コマンド実行前に元のfstabファイルは必ずバックアップを取ってから進んでください。
$ sudo sh -c "echo /swapfile2 none swap sw 0 0 >> /etc/fstab"
Ubuntuのスワップサイズの減らし方
スワップファイルは減らすことも出来ます。追加したスワップファイルを解除するには、swapoffコマンドを使います。
スワップ解除
$ sudo swapoff /swapfile2
確認
$ swapon -s
ファイル名 タイプ サイズ 使用済み 優先順位
/swapfile file 2097148 0 -2
ここに表示されていたswapfile2が消えましたね
コメント
mkswap したあとに sudo swapon /swapfile2 が必要ですね。