How To Add Swap Space on Ubuntu 20.04

This tutorial focuses on how to create swap space on Ubuntu 20.04 using swap partition or swap file.

システム管理者にとって、サーバーの RAM が不足することはよくあることです。

場合によっては、あまりにも多くのプログラムを起動したり、一部のプログラムがすでに多くのリソースを使用していたりすることがあります。

いくつかのプロセスを停止して RAM を確保することもできますが、それができない場合もあります。

幸いにも、別の解決策があります。

目次

Prerequisites

始める前に、Ubuntu 20.04 で sudo 権限があることを確認します。

$ groups

グループリストに “sudo” グループがあれば、スワップパーティションを作成できるはずです。

Check Existing Swap Partitions

システム上の既存のスワップパーティションを確認するには、 “swapon” コマンドを使用する必要があります。

$ sudo swapon --show

デフォルトでは、Ubuntu のインストール中に、スワップパーティションがすでに作成されていることが非常によくあります。

結果として、コンソール上に以下の出力が表示されるはずです。

ご覧のように、私はサイズ 980 Mb の “dm-1” というスワップ パーティションを所有しています。

しかし、現在の RAM は私のサーバーにとって十分なので、それはまったく使用されていません。

サーバーにスワップ領域が設定されていない場合、次の出力が表示されます。

Add Swap Space on Ubuntu 20.04 using a swap partition

Ubuntu でスワップ領域を追加する最初の方法として、スワップパーティションを追加することが挙げられます。

  • LVM デバイス (LVM としてフォーマットされたディスク パーティションを意味する) を使用している場合は、「lvcreate」コマンドを使用します。

a – LVM デバイス上にスワップパーティションを作成する

まず最初に、ホスト上の既存のパーティションを調査する必要があります。

  • /dev/sda2 : サイズ 14.5 GB の拡張パーティション、
  • /dev/sda5 : プライマリ LVM パーティションです。
  • このように、スワップパーティションを拡張パーティションに作成するか、プライマリ LVM パーティションに作成するか、どちらかを選択します。

    注意事項として、/dev/sda5 はディスク パーティションであり、物理ボリュームとも呼ばれ、ボリューム グループにリンクされています。

    $ sudo vgs

    この場合、スワップ パーティションに十分な約 980 Mb の領域が残っています。

    このボリュームグループに新しい論理ボリュームを作成するために、「lvcreate」コマンドを使用します。

    $ sudo lvcreate -L 500M -n lvswap vgubuntu

    Note : ある論理ボリューム上のスワップ署名を削除するかどうかを尋ねられる場合があります。 136>

    $ sudo lvs

    b – 通常のパーティションにスワップパーティションを作成

    LVM デバイスにパーティションを作成した場合は、このセクションをスキップして次のセクションに進むことが可能です。

    「通常の」Linux パーティションを扱っている場合、fdisk コマンドを使用しなければなりません。

    この例では、「通常の」 (Linux タイプ) パーティションは “/dev/sda2” という名前です。 プライマリパーティションが4つ以上ある場合は、論理パーティションを作成することができます。

    Select (default p) : pPartition number (2-4, default 2):

    この場合、デフォルトのままでかまいません。

    次のプロンプトで、最初のセクタを指定するよう求められますが、デフォルトのままでも構いません。

    All space for primary partitions is in useAdding logical partition 5First sector (48291898-65062911, default 48291840):

    最後に、作成するパーティションの総サイズを指定するよう求められます。 私たちの場合、1GB のスワップ領域 (または「+1G」) を選択します。

    Last sector, +/-sectors or +/-size{K,M,G,T,P} : +1GCreated a new partition 5 of type 'Linux' and of size 1 GiB.

    デフォルトでは、パーティションは「Linux」タイプで作成されます。

    これをスワップパーティションタイプに変更したいのですが、どうすればいいですか。

    これを実現するには、「type」に「t」と入力し、「82」 (swap) に変更します。

    Command (m for help): tPartition number (1,2,5, default 5): 1Hex code (type L to list all codes): 82

    Enterキーを押して、パーティションのタイプが正しく変更されていることを確認します。

    Changed type of partition 'Linux' to 'Linux swap / Solaris'

    w コマンドを使って変更をディスクに書き込むのを忘れないでください。

    Command (m for help): wThe partition table has been alteredSyncing disks.

    c – スワップパーティションを有効にする

    まず、スワップヘッダーをパーティションに正しく設定するために、mkswap を実行するのを確認してください。

    # For a regular partition$ sudo mkswap /dev/sda5# For a LVM partition$ sudo mkswap /dev/vgubuntu/lvswap

    ヘッダーが設定されたので、「swapon」を使用してスワップ領域を有効にするのは簡単です。

    $ sudo swapon --show

    Awesome, you successfully created a swap partition on Linux!

    d – Make your swap space permanent

    As any other partitions, you need to make your partitions permanative.

    今サーバーを再起動しても、変更は持続しません。

    まず最初に、新しく作成したパーティション用の UUID を取得する必要があります。

    $ sudo blkid | grep "swap"

    UUID 値をコピーし、fstab ファイルを編集して以下の変更を追加します。

    $ sudo nano /etc/fstabUUID=<copied value> none swap defaults 0 0

    ファイルを保存し、システムを再起動して変更が永続的であるかどうかを確認します。

    スワップ ファイルを使用して Ubuntu 20.04 でスワップ領域を追加する

    領域を追加する別の一般的な方法は、それ専用のファイルを作成することです。

    多くのチュートリアルはこの詳細を指定していませんが、スワップ ファイルには穴をまったく含めることはできません。

    つまり、スワップ ファイルを作成するために、ホスト上で cp コマンドを使用してはいけないということです。

    このため、ファイルに穴がないことを確認する「dd」コマンドを使用することにします。

    a – dd を使用してスワップファイルを作成する

    スワップ領域を追加するには、次のコマンドを実行します

    $ sudo dd if=/dev/zero of=swapfile bs=1MB count=$((1*2014))

    このケースでは、2Gb のスワップ領域を作成するつもりです。

    以下のコマンドを実行して、スワップファイルが作成されたことを確認します。

    $ ls -l swapfile

    b – スワップファイルを権限で保護する

    スワップファイルはメモリの最適化のために使用されることを意図しています。

    結果として、それらはいかなる方法でも編集または変更すべきではありません。

    結果として、その権限を変更します。

    $ sudo chmod 600 swapfile

    この場合、ファイルは root アカウントに対してのみ読み取り/書き込み可能です。

    c – swapfile を有効にする

    スワップファイルを有効にするには、「mkswap」コマンドと「swapon」コマンドを使用します。

    $ sudo mkswap swapfile$ sudo swapon swapfile

    素晴らしい、あなたはスワップファイルを正常に作成できました!

    最後に行うべきことは、fstab を使用して永久的にすることです。

    d – スワップファイルを永久的にする

    スワップスペースを永久的にするには、/etc/fstab ファイルを編集して、次の変更を貼り付けます。

    $ sudo nano fstab<path_to_file>/swapfile none swap defaults 0 0

    ファイルを保存して再起動すると、スワップスペースはまだマウントされているか確認するために、再起動をします。

    $ sudo reboot$ sudo swapon --show

    Ubuntu 20.04 でスワップ領域を追加することに成功しました!

    Troubleshooting

    Ubuntu 20.04 でスワップ領域を追加すると、以下のエラーに遭遇することがあります。

    • swapon: /swapfile: read swap header failed.

    このエラーは、swapon コマンドを実行する前に mkswap コマンドを実行しない場合に発生するものです。

    注意事項として、mkswap はスワップスペースとして使用するファイルまたはパーティションのヘッダーを設定します。

    mkswapコマンドの実行を忘れると、Linux はホスト上でスワップスペースとしてそれを割り当てることができません。

    • Failed to find logical volume “vg/lv”

    このエラーは initramfs 構成でロードするように定義された論理ボリュームを削除したときに発生します。

    これを修正するには、2 つの選択肢があります。

    • Run “update-initramfs -u”
    • initramfs の “resume” ファイルでもともと論理ボリュームが言及されていないことを確認することです。

    コメントを残す

    メールアドレスが公開されることはありません。