Linuxはメモリが少なくても動作する軽快なOSですが、重めの処理などを行うとメモリ不足に陥る可能性があります。 今回は予算の問題などでメモリを追加できない状況で、メモリを確保するためにスワップ領域を確保して対応する方法を解説します。 今回はAWSの解説記事に沿って、細かい説明付きで解説します。

Linuxでのスワップ領域の確保

3年以上前に更新されました。情報が古い可能性があります。
更新日 : 2020年05月27日

Linuxはメモリが少なくても動作する軽快なOSですが、重めの処理などを行うとメモリ不足に陥る可能性があります。

今回は予算の問題などでメモリを追加できない状況で、メモリを確保するためにスワップ領域を確保して対応する方法を解説します。

今回はAWSの解説記事に沿って、細かい説明付きで解説します。

まずはスワップ領域の計算

一般的なスワップ推奨領域が物理メモリの容量に応じてある程度決まっているので、それを参考にしていきます。

物理メモリ容量(RAM)推奨スワップ容量
RAM <= 2GBRAM × 2
2GB <= RAM <= 32GB4GB + (RAM–2GB)
32GB <= RAMRAM × 1

今回は1GBのRAMを積んでいるLinuxサーバーに対してスワップ領域を確保する前提でコマンドを記載していきます。つまり推奨スワップ容量は2GBとなります。

スワップファイルを作成し、スワップ領域として設定

以下コマンドはすべてrootユーザーで実行します。sudoコマンドを利用しても構いません。

  1. まずはスワップファイルを0埋めしたファイルで作成します。
    $dd if=/dev/zero of=/var/swapfile bs=128M count=16

    ddコマンドを利用し、/dev/zeroを入力ファイルとして/var/swapfileファイルに出力します。

    /dev/zeroは特殊ファイルです。すべて0で埋まったファイルが読み出されます。
    そしてbsオプションは書き込むブロックサイズを表し、countオプションでブロックサイズの個数を指定します。つまり128MB×16=2048MB(2GB)のサイズの0埋めされたファイルを/var/swapfileとして作成するというコマンドです。

  2. 作成したスワップファイルの権限を変更

    作成したswapfileの権限をrootユーザーのみが読み書きできるように変更します。

    $chmod 600 /var/swapfile
  3. スワップ領域として設定

    作成されたファイルはただの0埋めされたファイルなので、このファイルをスワップ用のファイルとして設定します。

    $mkswap /var/swapfile
  4. スワップの使用開始

    スワップ用のファイルとして作成後、実際にスワップの使用を開始します。

    $swapon /var/swapfile

これでスワップの作成完了です。以下のコマンドでスワップが作成されたかどうか確認しましょう。

$swapon -s
ファイル名	タイプ	サイズ	使用済み	優先順位
/var/swapfile	file	2097148	50176	-2

有効化されていることを確認できました。

スワップ領域の自動起動

作成したスワップ領域はLinuxが再起動するとただのファイルに戻ってしまいます。
スワップを自動起動するために/etc/fstabファイルに以下の内容を追記しておきます。

/var/swapfile swap swap defaults 0 0

これで再起動されても自動的にスワップ領域として再設定されます。

スワップ領域の使用中止

スワップ領域が不要になった場合には以下のコマンドで解除可能です。

$swapoff /var/swapfile