起動するサービスを増やしたり、システムをアップデートしたりしていくうちに、段々とメモリが足りなくなってくることがあります。メモリが足りなくなると、メモリを確保するためにSwap領域を使います。システムのインストール時にSwap領域を作り忘れたり、スワップ容量の指定が適切でなかった場合は、実メモリが食いつぶされた時点、もしくはSwap領域が食いつぶされた時点で特定のデーモンが勝手に停止させられたりして、サーバーに予期せぬ出来事が起こったりします。ここでは、システムの余った領域にSwap領域を作成し、それらのトラブルを回避する方法について解説していきます。
Swap領域は、容量の空いている場所ならどこにでも作成する事が出来ます。ここでは、/home/swap ディレクトリを作成し、そこに swap ファイルを作成する事とします。
swapファイルを作成するには、ddコマンドを用います。dd コマンドは、誤入力するとHDDのデータが一瞬にして消え去ってしまうので注意深くコマンドを打つようにしてください。
count で swap ファイルの大きさを指定します。大きくすればするほどパフォーマンスがあがるというものでもないので、実搭載メモリの2倍程度、ここでは1GB程度を割り当てます。
dd if=/dev/zero of=/home/swap/swap_1GB bs=1024 count=1024000 |
Swap領域にするファイルを指定します。
# mkswap /home/swap/swap_1GB |
Swap を ONの状態にします。
# swapon /home/swap/swap_1GB |
拡張したSwap領域が機能しているかどうかは free コマンドで確認します。(注※以下の例は、Swap領域を1.5GB にした例です)
# free -mt total used free shared buffers cached Mem: 504 460 43 0 90 170 -/+ buffers/cache: 199 305 Swap: 1535 57 1478 Total: 2040 518 1522 |
以下のコマンドでSwap領域の情報を表示させる事ができます。(注※以下の例は、Swap領域を1.5GB にした例です)
# swapon -s Filename Type Size Used Priority /home/swap/swap_1_5GB file 1572856 59112 -1 |
最後に、システム起動時にSwapが On になるように設定します。vi で以下のようなシェルスクリプトを作成します。
# vi /usr/local/bin/swap.sh
#!/bin/sh swapon /home/swap/swap_1GB |
ファイルに実行権を付与し、シンボリックリンクを張っておきます。以上で終了です。
# chmod 755 /usr/local/bin/swap.sh
# ln -s /usr/local/bin/swap.sh /etc/rc2.d/S12swap |
|