Windows AzureのLinux仮想マシンでスワップを作る

Windows Azureに東京と関西のリージョンが出来たので、ようやく日本でもまともに使えるようになったところである。以前に一時期使っていたこともあるのだが、国内リージョンだとやはりコンソールの反応が違う。

azure-tokyo

Windows AzureでもLinux仮想マシンを使ったりするのだが、1つ問題があって、デフォルトでスワップ領域が設定されておらず、たとえば最小セットのA0、768MBメモリでメモリ食いのプロセスが動くと簡単に落ちてくれる。ある程度定常化した用途ならあまり気にしなくても良いかもしれないが、Windows AzureでLinuxを使う際には最初にスワップ領域の確保はしておいたほうがいい。

freeコマンドでメモリの状態を確認すると以下のようになっている。

# free
             total       used       free     shared    buffers     cached
Mem:        686472     161780     524692       1932       9988      69848
-/+ buffers/cache:      81944     604528
Swap:            0          0          0

 ディスクデバイスは?というと、以下のように2つのパーティションが用意されている。

# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda1       30202916 1052776  27884108   4% /
none                   4       0         4   0% /sys/fs/cgroup
udev              329812       8    329804   1% /dev
tmpfs              68648     380     68268   1% /run
none                5120       0      5120   0% /run/lock
none              343236       0    343236   0% /run/shm
none              102400       0    102400   0% /run/user
/dev/sdb1       20509308   45000  19399452   1% /mnt

少しドキュメントを探してみると、過去のサポートブログで追加ディスクの上に作れという話になっていた。/mntにマウントしたデバイスに作るのはちょっと微妙な気もするが(何かのときにumount /mntを実行してしまいそう)、そいうことなら仕方がない。/dev/sdb1のところに4Gのファイルを置き、スワップとして設定する手動でスワップを作る手順は以下のとおり。

$ sudo su -
# fallocate -l 4g /mnt/swap # chmod 600 /mnt/swap # mkswap /mnt/swap # swapon /mnt/swap # free total used free shared buffers cached Mem: 686472 163136 523336 1932 10040 69972 -/+ buffers/cache: 83124 603348 Swap: 4194300 0 4194300 # exit

これでスワップは設定できた。

ちなみに、Windows AzureでなぜわざわざLinuxを?については、最安値とはいえないものの、国内の下手な事業者業者よりは安く運用できたりする。VPS単独は非常に安いサービスもあるが、クラウド系ではWindows Azureは安かったりする。