スワップ領域をパーティションからファイルへ移行させる
「Ubuntu」では、スワップ領域にパーティションとファイルが利用できます。現在の「Ubuntu」のインストーラーでは、スワップ領域をパーティション上に作成します。
「スワップパーティション」ですね。
一方スワップ領域をファイルに確保することもできます。
「スワップファイル」ですね。
Windowsのページングファイルみたいなものです。
これらは混在して利用することもできます。
つまり「スワップパーティション」と「スワップファイル」を組み合わせ、スワップ領域を確保することができます。
また「Ubuntu」実行中にスワップ領域の追加や削除ができ、柔軟な管理が可能になっています。
Ubuntu 17.04ではスワップファイルへ移行
以前紹介した通り、「Ubuntu 17.04」でデフォルトのインストールを行うと、スワップ領域を「スワップファイル」に確保します。既存のUbuntuでも同様のことが可能
ユーザーが作業する必要がありますが、既存の「Ubuntu」でも同様のことが可能です。ここでは例として、「Ubuntu 16.10」上で「スワップパーティション」から「スワップファイル」に移行させてみます。
1.現在のスワップ領域
まず現在のスワップ領域がどのようになっているのかを確認します。1-1.パーティション構成
この環境では、「sda3」がスワップ用のパーティションとして確保されています。1-2.スワップの利用状況
スワップの利用状況を調べるには、「端末」から以下のコマンドを実行します。
swapon -s
「/dev/sda3」がスワップに使用されていることが分かります。
また「Type」の列を見ると「partition」となっており、このスワップ領域はパーティション上に確保されていることが分かります。
ちなみにこのコマンドは、スワップ領域を追加するときにも使用します。
スワップ オンです。
「システムモニター」でスワップ領域を確認すると、スワップ領域のサイズが1.9GiBであることが分かります。
2.スワップファイルの作成
スワップ領域をファイルに確保するためには、まずスワップファイルを作成する必要があります。ここでは例として、1GiBのサイズを確保します。
またファイルを「/swapfile」に作成します。
2-1.ファイルの作成
確保したいスワップ領域のサイズと同じサイズのファイルを作成します。「端末」から以下のコマンドを実行します。
sudo fallocate -l 1G /swapfile
以下のようにファイルが作成されます。
2-2.アクセス権の変更
セキュリティーのため、ファイルのアクセス権を「root」のみアクセスできるように変更します。「端末」から以下のコマンドを実行します。
sudo chmod 600 /swapfile
2-3.ファイルのフォーマット
スワップとして利用できるように、作成したファイルをフォーマットします。「端末」から以下のコマンドを実行します。
sudo mkswap /swapfile
3.スワップファイルのテスト
作成したスワップファイルをスワップとして利用できるかテストしてみます。3-1.スワップ領域の追加
「端末」から以下のコマンドを実行します。
sudo swapon /swapfile
3-2.スワップの利用状況
「端末」から以下のコマンドを実行します。
swapon -s
スワップの利用状況を調べると、作成した「スワップファイル」が追加されています。
「Type」の列を見ると「file」となっており、このスワップ領域は「スワップファイル」であることが分かります。
「システムモニター」でスワップ領域を確認すると、スワップ領域のサイズが2.9GiB(+1GiB)に増えています。
4.スワップの設定を編集する
PC起動時に作成した「スワップファイル」をスワップ領域として使用するため、スワップ領域の設定を編集する必要があります。注意
誤った編集を行うと最悪「Ubuntu」が起動しなくなるため、十分に注意してください。最低でも編集前に設定ファイルのバックアップは作成しておきましょう。
4-1.設定ファイルを開く
「端末」から以下のコマンドを実行し、設定ファイルを「root」で開きます。
sudo -i gedit /etc/fstab
4-2.現在の設定
現在の設定ファイルの中身は、以下のようになっています。
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda5 during installation
UUID=c70ab3a0-569a-4f42-b61f-8255e22ecd79 / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sda1 during installation
UUID=DE3E-A8F6 /boot/efi vfat umask=0077 0 1
# swap was on /dev/sda3 during installation
UUID=378ee6ed-61f4-470c-9ed1-e0d726db686c none swap sw 0 0
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda5 during installation
UUID=c70ab3a0-569a-4f42-b61f-8255e22ecd79 / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sda1 during installation
UUID=DE3E-A8F6 /boot/efi vfat umask=0077 0 1
# swap was on /dev/sda3 during installation
UUID=378ee6ed-61f4-470c-9ed1-e0d726db686c none swap sw 0 0
「# swap was on...」のコメント行の次の行が、スワップ領域に関する設定です。
注意
環境によって設定ファイルの中身が異なります。4-3.スワップパーティションの無効化
スワップ領域をパーティションからファイルへ移行させるため、既存のスワップ領域に関する設定を無効にする必要があります。以下のようにスワップ設定の行頭に「#」を挿入します。
...(省略)...
# swap was on /dev/sda3 during installation
# UUID=378ee6ed-61f4-470c-9ed1-e0d726db686c none swap sw 0 0
# swap was on /dev/sda3 during installation
# UUID=378ee6ed-61f4-470c-9ed1-e0d726db686c none swap sw 0 0
これで「スワップパーティション」である「/dev/sda3」は、スワップ領域として使用されなくなります。
4-4.スワップファイルの有効化
次にスワップファイルを有効にするため、以下の記述を追記します。
# swap file
/swapfile none swap sw 0 0
/swapfile none swap sw 0 0
編集したらファイルを上書き保存し、「テキストエディター」を終了します。
最終的にファイルの中身は、以下のようになります。
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda5 during installation
UUID=c70ab3a0-569a-4f42-b61f-8255e22ecd79 / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sda1 during installation
UUID=DE3E-A8F6 /boot/efi vfat umask=0077 0 1
# swap was on /dev/sda3 during installation
# UUID=378ee6ed-61f4-470c-9ed1-e0d726db686c none swap sw 0 0
# swap file
/swapfile none swap sw 0 0
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda5 during installation
UUID=c70ab3a0-569a-4f42-b61f-8255e22ecd79 / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sda1 during installation
UUID=DE3E-A8F6 /boot/efi vfat umask=0077 0 1
# swap was on /dev/sda3 during installation
# UUID=378ee6ed-61f4-470c-9ed1-e0d726db686c none swap sw 0 0
# swap file
/swapfile none swap sw 0 0
4-5.PCの再起動
PCを再起動します。補足
設定ファイルの編集に自信があるなら、ここで「スワップパーティション」をスワップ領域から削除(5-2.)し、「スワップパーティション」を削除すると良いでしょう。5.スワップ領域の確認とスワップパーティションの削除
作成した「スワップファイル」が使用されているか確認します。また、「スワップパーティション」を削除します。
5-1.スワップの利用状況
「端末」から以下のコマンドを実行します。
swapon -s
設定ファイルから除外した「/dev/sda3」がスワップ領域として使用されていることが分かります。
これは自動で「/dev/sda3」がスワップ領域として使用されただけで、気にする必要はありません。
5-2.スワップ領域からスワップパーティションを除外する
「端末」から以下のコマンドを実行します。
sudo swapoff /dev/sda3
これで「/dev/sda3」が現在のスワップ領域から除外されます。
5-3.スワップの利用状況
「端末」から以下のコマンドを実行します。
swapon -s
「/dev/sda3」がスワップ領域から除外されていることが分かります。
「システムモニター」でスワップ領域を確認すると、スワップ領域のサイズが除外した分減っています。
5-4.スワップパーティションの削除
「GParted」等パーティションを編集できるアプリを起動し、「スワップパーティション」を削除します。5-5.最後の確認
最後にPCを再起動して、スワップの利用状況を調べます。「スワップファイル」のみ使用されている状態です。
以上で完了です。