👌

スワップファイルのサイズを変更する

2024/08/17に公開

この記事は

Linux上で一度作成したスワップファイルのサイズを後から変更する方法です。Ubuntu 24.04の手順を説明します。

以下のように/swapfileというサイズ1Gのスワップファイルが割り当てられている状態で、スワップファイルのサイズを2Gに拡張します。

$ sudo swapon -s
Filename    Type  Size     Used    Priority
/swapfile   file  1048572  497664  -2

やり方

メモリーの使用状況を確認する

スワップファイルのサイズを変更するためには、一旦スワップファイルの登録を解除する必要があります。その前にfreeコマンドを使用して現在のメモリーの使用状況を確認します。

$ free -h
               total        used        free      shared  buff/cache   available
Mem:           953Mi       725Mi        44Mi       392Ki       264Mi       228Mi
Swap:          1.0Gi       475Mi       548Mi

物理メモリーのサイズは953Mです。それに対して、物理メモリーとスワップの使用量を合計すると725M+475M=1200Mとなり、物理メモリーのサイズを超えています。この状況でスワップファイルを登録解除すると、メモリー不足になってしまいます。

メモリー使用量の合計が物理メモリーのサイズより少ない場合には直接スワップファイルを登録解除しても良いのですが、今回の場合にはメモリ不足にならないよう一旦テンポラリのスワップファイルを追加します。

テンポラリのスワップファイルを追加する

/swapfile_tmpと言う、サイズが1Gでモードが600のファイルを作ります。

$ sudo fallocate -l 1G /swapfile_tmp
$ sudo chmod 600 /swapfile_tmp
$ ls -l /swapfile_tmp
-rw------- 1 root root 1073741824 Aug 16 14:40 /swapfile_tmp

このファイルをスワップファイルとして登録します。

$ sudo mkswap /swapfile_tmp
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=1b654add-d919-45c9-9752-cee1095777c9
$ sudo swapon /swapfile_tmp

結果を確認します。

$ sudo swapon -s
Filename        Type  Size     Used    Priority
/swapfile       file  1048572  478464  -2
/swapfile_tmp   file  1048572  0       -3

/swapfile_tmpがスワップファイルとして追加されていることが確認できます。この時点では使用量は0バイトです。

ちなみにこの時点でOSを再起動すると、/swapfile_tmpと言うファイルは残りますが、スワップファイルからは登録解除されてしまいます。これは/etc/fstab/swapfile_tmpが登録されていないためです。今回はテンポラリ的に追加しているのでこのままで良いですが、恒久的にスワップファイルとして使う場合には/etc/fstabの更新も必要です。

スワップファイルのサイズを拡張する

登録解除する

/swapfileのサイズを拡張するため、一度スワップファイルの登録を解除します。

$ sudo swapoff /swapfile
$ sudo swapon -s
Filename      Type  Size     Used    Priority
/swapfile_tmp file  1048572  330552  -2

無事/swapfileを登録解除できました。

再作成する

/swapfileを2Gで作り直します。

$ sudo fallocate -l 2G /swapfile
$ ls -l /swapfile
-rw------- 1 root root 2147483648 Aug 16 14:59 /swapfile
$ sudo mkswap /swapfile
mkswap: /swapfile: warning: wiping old swap signature.
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=2e4d51bb-b3ed-42ed-a1a4-b30caf8597bf

スワップファイルを再登録する

できたファイルを再度スワップファイルとして登録します。

$ sudo swapon /swapfile
$ sudo swapon -s
Filename       Type  Size     Used    Priority
/swapfile      file  2097148  0       -3
/swapfile_tmp  file  1048572  321336  -2

2Gのスワップファイルが追加されました。

テンポラリのスワップファイルを削除する

最後にテンポラリのスワップファイルを登録解除し、ファイルも削除します。

$ sudo swapoff /swapfile_tmp
$ sudo rm /swapfile_tmp
$ sudo swapon -s
Filename  Type  Size     Used    Priority
/swapfile file  2097148  302796  -2

以上です。

Discussion