SOFTELメモ

Softel Inc.

Linuxのswap領域を追加する方法

手順はこちらの記事からの引用です。

http://piro791.blog.so-net.ne.jp/2009-03-05

同じように試してみて、できました。


swap領域の確認

現状のswap領域について確認するには /proc/swapsを見る。

[root@test-server1 ~]# cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/sda2                               partition       2096472 2091628 -1

/dev/sda2に、およそ2GBのswap領域が作成されている。で、この2GBの領域をもうじき使い切りそうな勢いである。

swapを追加する方法としては、上記のように、ディスクにswap用のパーティションを作成する方法と、通常のファイルシステムの上にswap用のファイルを作成し、それをあたかもswap専用の領域として使わせる方法とがある。(アレなOSの「pagefile.sys」みたいな感じ)

ディスクにパーティションとして未使用の領域があるならいざ知らず、おそらく大多数の場合はディスクはめいっぱいパーティションを切って使用しているはずだろうから、後者の方法を使って急場しのぎをするのが手軽で良いだろう。

手順

それでは、swap用のファイルを作成し、それをswap領域として追加する手順を以下に記述する。

1、swap用のファイルを作成する
2、作成したswap用ファイルの属性を変更する
3、swap用のファイルをswapとして登録する
4、(必要に応じて)fstabにその領域をswapとしてマウントするように記述する

※4を実施しないと、リブートした時にはその領域をswapとして使用しなくなってしまう。

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

まずは、swap用のファイルを作成する。ここで作成したファイルの大きさがそのまま「追加されるswap領域の大きさ」になる。よって、2GBのswap領域を追加したい場合は、「2GBの大きさのファイル」を作成することとなる。

ddコマンドを使うのが簡単だろう。

dd if=/dev/zero of=swap用ファイルのパス名 bs=単位 count=サイズ

例えば、256MBのswap領域を追加したいなら、単位には「1M」を、サイズには「256」と書けばいいし、4GBくらいばばーんと追加したいなら、単位には「1G」を、サイズには「4」と書けばいいだろう。(もちろん、1Mの4096と書いてもいいけど)

 そして、swap用ファイルのパス名にはこれから作成するswap用ファイルを指定する。いかにもswap用のファイルだと判るような名前にしておくのがよろしかろう。

 ここでは、/swap.extended というファイルで2GBの領域を追加したいと思うので、以下のようにしてファイルを作成した。

dd if=/dev/zero of=/swap.extended bs=1M count=2048
[root@test-server1 ~]# ls -l /
total 2099374
  (途中省略)
-rw-r--r--    1 root  root  2147483648 Mar  5 11:43 swap.extended
drwxr-xr-x    9 root  root           0 Feb 18 03:02 sys
drwxrwxrwt    7 root  root       12288 Mar  5 13:40 tmp
drwxr-xr-x   15 root  root        4096 Sep 14  2006 usr
drwxr-xr-x   21 root  root        4096 Jun  5  2008 var

こんな感じでswapファイルが作成された。

2、作成したswap用ファイルの属性を変更する

続いて、今作成したファイルをswap用ファイルとして属性を変更する。用いるコマンドはmkswapである。

mkswap swap用ファイルのパス名

なお、パス名に続けてswapとして使用する領域の大きさを変更することが出来るが、まずほとんどのケースでは指定する必要はない。「2GBのswap用ファイルを作成したものの、このうち1GBしか使いたくない」とかそんなかなりレアっぽい場合に限り、これを指定することになろう。

そんな訳で、今回はswap用ファイルの全ての領域をそのままswapとして使用したいので、指定を省略して構わない。今回の例では、以下のようにコマンドを投入することになろう。

mkswap /swap.extended

3、swap用のファイルをswapとして登録する

いよいよswap領域としてOSに使用させる。ここで用いるコマンドはswaponコマンドである。

swapon swap用ファイルのパス名

ということになるので、今回の例では

swapon /swap.extended

でOK。

swapが追加されたかどうか確認してみる。

[root@test-server1 ~]# cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/sda2                               partition       2096472 2074848 -1
/swap.extended                          file            2097144 470944  -2

元々の2GBのswap領域に加え、新しく2GBのswap領域が追加されているのが判る。

4、(必要に応じて)fstabにその領域をswapとしてマウントするように記述する

最後に/etc/fstabに今追加したswap領域を自動的にマウントするように追加してやる必要がある。

[root@test-server1 ~]# cat /etc/fstab
# This file is edited by fstab-sync - see 'man fstab-sync' for details
  (途中省略)
/dev/sda2               swap                    swap    defaults        0 0
/swap.extended          swap                    swap    defaults        0 0

これで、サーバをリブートしても今追加したswap領域が自動的にマウントされるようになる。

関連するメモ

コメント