概要

Linuxを使っていると、メモリが足りない場合にOOM Killerというシステムの維持のために突然プロセスを落とされることがあります。

そのような場合には、ストレージの方にメモリ用の領域を用意して、それをメモリとして認識して使うという方法があり、その領域のことをスワップ領域といいます。

用語として、スワップ領域をメモリとして使う場合、物理的な方のメモリのことを物理メモリと区別して呼びます。

ここでは、スワップ領域を追加する方法を紹介します。

スワップ領域の追加

スワップ領域は、パーティションとして用意する方法と、ファイルとして用意する方法の2種類があります。

どちらを使ってもいいのですが、パーティションの場合、設定が面倒なので、ここではファイルを用意する方法を紹介します。

スワップ領域のデメリット

ストレージにスワップ領域を作った場合、忘れてはならないのは物理メモリにデータをおく場合と異なり、アクセスの速度が桁違いに落ちます。

そのため、あまりにもスワップ領域が使われる場合には、物理メモリの量を増やした方が、パフォーマンスが向上します。

作り方

まず、スワップ領域となるファイルを用意します。

ファイルの用意には、ddコマンドを使い、ファイルのサイズは2GiBでルートディレクトリにswapfileという名前で作成します。

dd if=/dev/zero of=/swapfile bs=1M count=2048

ddコマンドはデータのコピーや変換をして、ファイル等へ保存するために使用するコマンドです。

if=/dev/zeroで空のデバイスファイルの情報をファイルに書き込むことを表し、of=でファイルの場所と名前を指定し、bs=1M count=2048でサイズを指定しています。

サイズの計算方法として、bs=1M count=2048の場合、1MBの情報を2048個書き込むということで、1MB * 2048 = 2048MB = 2GiBとなります。

次に誰でもファイルにアクセスできるとセキュリティとしてまずいので、パーミッションの変更をします。

chmod 0600 /swapfile

さらに、次のコマンドでスワップ領域のファイルとして変換します。

mkswap /swapfile

これでスワップ領域用のファイルができたので、Linuxに認識させます。

swapon /swapifle

本当にスワップ認識できたかどうかは、topコマンド等で確認しましょう。

もし、スワップ領域として使うのをやめる場合は次のコマンドを実行します。

swapoff /swapfile

これで、スワップ領域を作って認識させることができました。

永続化

実は、swaponコマンドを使って認識させる場合、OSの再起動のたびにswaponコマンドを使ってスワップ領域を認識させる必要があります。

そのため、OSの起動時に必ず認識させたい場合は/etc/fstabに次のように追記します。

/swapfile   swap swap   defaults    0 0

これで、OSの起動時に/swapfileがスワップ領域として認識されるようになりました。

さいごに

毎回調べているので、今回備忘録の意味を兼ねてここに書きました。

誰かの参考になれば幸いです。