ただの雑記

おっさんエンジニアが適当に書き散らかしてます。

CentOSに後からswapを追加する。

クラウドサービスのLinux系のテンプレートにはswapが無いようです。(2社しか試してませんが。)

例えばAzureなら、Windows Azure Linux Agentを入れていれば(VM作るときに確か選択肢があった)
/etc/waagent.confを編集するだけでOKだったりします。

azure.microsoft.com

とはいえ、他のクラウドサービスでは同様にできませんので、CentOSだけで出来る方法を一つ。

正直に言えば、パーティションを新しく作って~なんてスキルはまだ無いので、swap用のファイルを作ってさくっとswapを作ります。

手順を軽く書くと

  1. swap用のファイルを作成する
  2. mkswapでswap領域を作る
  3. swaponでswap領域を使える様にする
  4. fstabに書いて自動でマウントするようにする。

1.swap用のファイルを作成する

さて、まずはswap領域用のファイルを作成します。
この手順で作成したファイルサイズがswapのサイズになります。

dd if=/dev/zero of=/var/tmp/swap bs=1G count=4

このコマンドの例ですと/var/tmpswapと言う名前の4GBのファイルを作成します。
ofには作るファイル名を指定します。
bsには1回に書き込むバイト数を指定します(1G,1M等が使えます。)
countで指定した回数bsで指定したバイト数を書き込みます。
ですので、例で言えば1G×4で4Gのswap用のファイルになります。
(別に4G×1でも良いのですがその分メモリを使いますので注意)

2.mkswapでswap領域を作る

お次は、mkswapでswap領域をつくります。
コマンドを叩くだけ。

mkswap /var/tmp/swap

mkswapに続いて、先ほど作ったファイルを指定するだけ。簡単です。

3.swaponでswap領域を使える様にする

はい、次はswaponコマンドでmkswapした領域を使える様にします。

swapon /var/tmp/swap

以上で、swap領域が作成されて、使える様になっています。

4.fstabに書いて自動でマウントするようにする。

3.まででswap領域が使えるのですが、再起動すると解除されてしまうので、 /etc/fstabに書き込んで自動でマウントするようにします。

vi /etc/fstabでfstabを開いて次の内容を追記して、保存して終了すると完了
/var/tmp/swap swap swap defaults 0 0

以上です。
この手順ならfdiskでパティション切ったりするより楽かなぁと思います。