この記事にはプロモーションが含まれていることがあります

Ubuntuのスワップサイズの増やし方

IT

Ubuntuでスワップのサイズの増やし方について書きます。

スポンサーリンク

スワップとはなにか?

コンピュータが処理を行う際にはメモリーという領域にデータを格納します。このメモリーは高速でアクセスできるのですが高価であるため、ハードディスクやSSD等の記憶装置に比べると容量が小さいです。

2020年初頭の今だと廉価モデルで4GB、一般モデルで8GBぐらいでしょうか。メモリーが多ければ多いほどたくさんのアプリケーションが起動できるのですが、起動しすぎるとメモリーを使い切ってしまいます。

そこでハードディスクやSSD上にメモリーとして代用できる場所を確保したものがスワップです。Ubuntuの初期値だと2GBのスワップがセットされていますが、使い方によっては足りない場合があります。

ばったん
ばったん

私はUbuntu上でGitLabサーバを立てたらメモリが無くなり更にスワップも2GBすべて使い切ってしまいました

スワップの特徴

メモリーが満タンになると、使っていないデータをスワップファイルに書き出します。そして必要になった際にメモリに読み込みます。
つまり、普段なら高速なメモリーの読み書きだけで終わる処理が、ハードディスクやSSDに書き出す、という処理が増えます。また、必要なデータがハードディスクに退避されていた場合はまたメモリー上に戻すという余計な処理が入ります。SSDならまだ良いですが、低速なハードディスクへの退避処理が入ると処理性能が悪くなります。
よって頻繁にスワップにアクセスするので処理が遅くなります。

処理性能を改善したい場合は、物理メモリーを増やしてスワップを使わないようにすると良いでしょう。

スポンサーリンク

スワップ拡張イメージ

現在の使っているスワップファイルのサイズを拡張するよりは、新しくスワップファイルを追加するほうが簡単です。ファイルは別でもスワップとして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を再起動するとまた元のサイズに戻ってしまいます。再起動後も維持したい場合は、次の章を参照してください。

スワップ追加(恒久対応)

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が消えましたね

コメント

  1. 通りがかり より:

    mkswap したあとに sudo swapon /swapfile2 が必要ですね。

タイトルとURLをコピーしました