スワップファイルのサイズを変更する
この記事は
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