【Linux】swap領域の拡張する方法

10GB分のスワップ領域の拡張する方法を記述します.

/etc/fstabにて自動的にスワップ領域を有効化する方法も記載しています.

>> スーパーユーザーなら知っておくべきLinuxシステムの仕組み

目次

スワップ領域とは

ものすごくざっくり説明すると,

「スワップとは,システムのメモリに関連する安全性や安定性を効率的に確保するための領域」

です.

RAMとスワップ領域を合わせたものが利用可能なメモリ(仮想メモリ)となりますが,RAMの増設の代わりを担うものではありません.

スワップ領域はディスク上に構築されるため,RAMとして扱おうとしてもかなり低速になります.

下記にスワップにまつわる議論がありましたので,いくつか抜粋しています.

・「スワップ領域はシステムのメモリ不足回避のために使用されるもの」という考え方が厳密には違うようです.

Swap is not generally about getting emergency memory, it’s about making memory reclamation egalitarian and efficient. In fact, using it as “emergency memory” is generally actively harmful.

https://chrisdown.name/2018/01/02/in-defence-of-swap.html

・スワップ領域はシステムの安定性の面で確保すべき重要なものです.スワップ領域を確保しないことによる性能改善などはあまり期待できないようです.

Having swap is a reasonably important part of a well functioning system. Without it, sane memory management becomes harder to achieve.

https://chrisdown.name/2018/01/02/in-defence-of-swap.html

・ディスクに空きがある場合スワップ領域は大きければ大きいほど良いみたいです.

If you have a bunch of disk space and a recent (4.0+) kernel, more swap is almost always better than less. In older kernels kswapd, one of the kernel processes responsible for managing swap, was historically very overeager to swap out memory aggressively the more swap you had. In recent times, swapping behaviour when a large amount of swap space is available has been significantly improved. If you’re running kernel 4.0+, having a larger swap on a modern kernel should not result in overzealous swapping. As such, if you have the space, having a swap size of a few GB keeps your options open on modern kernels.

https://chrisdown.name/2018/01/02/in-defence-of-swap.html

RAMサイズに依存してスワップを確保することが良いといわれることがありますが,その真偽は微妙なところですね.

>> スーパーユーザーなら知っておくべきLinuxシステムの仕組み

スワップ領域の拡張方法

現在のスワップ領域の確認


swapon -s

Filename                                Type            Size    Used    Priority
/swapfile                               file            2097148 0       -2

スワップ用ファイルの作成


dd if=/dev/zero of=/swapfile3 bs=1G count=10

10+0 records in
10+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 7.96747 s, 1.3 GB/s

fallocateコマンドでもファイルシステムを作成できます.こちらの方が高速です.


fallocate -l 10G /swapfile2

スワップ用ファイルの権限変更

権限を600に変更します.


chmod 600 /swapfile2

スワップ領域の作成

mkswapコマンドで,作成したファイルにスワップ領域を作成します.


mkswap /swapfile2

Setting up swapspace version 1, size = 10 GiB (10737414144 bytes)
no label, UUID=1c414e7a-4440-4e4a-a431-7cf2079adfa6

スワップ領域の有効化


swapon /swapfile2

スワップ領域が作成されているか確認します.


swapon -s

/swapfile2が表示されていれば成功です.


Filename                                Type            Size    Used    Priority
/swapfile                               file            2097148 345696  -2
/swapfile2                              file            10485756       0       -3

スワップ領域の永続化

上記に示した設定は,再起動後にリセットされます.

再起動の度にswapon /swapfile2コマンドで有効化する必要があります.

/etc/fstabに下記の設定を記述すると,再起動後も自動的にスワップ領域を有効化することが出来ます.

/etc/fstab


...
/swapfile2 swap swap defaults 0 0

>> 新しいLinuxの教科書

よかったらシェアしてね!
目次