Azure仮想マシンのLinuxインスタンスにはSwap領域が割り当てれていない.
自身でインスタンスサイズに応じた適切な領域を割り当てる必要がある.
最適なSwapファイルサイズ
インスタンスサイズ | スワップファイルサイズ |
---|---|
XS | (メモリが小さいため利用できない) |
Small | 2.625GB |
Medium | 3.5GB |
Large | 7GB |
Extra Large | 14GB |
A6 | 16GB |
A7 | 16GB |
手順1
Swap領域の割り当て
sudo fallocate -l 2625m /mnt/swap
sudo chmod 600 /mnt/swap
sudo mkswap /mnt/swap
sudo swapon /mnt/swap
-
fallocate
: 適切なサイズ (2.525GB) のスワップファイルをリソースをディスクに割り当てる -
chmod
: rootユーザーのみにスワップファイルへの読み取り/書き込み権限を持たせる -
mkswap
: ファイルをスワップ領域として設定する -
swapon
: スワップファイルを使用可能にする
これでひとまず完了.
free
コマンドを叩いてみると2687996Byte
のスワップ領域があることが確認できる
free
total used free shared buffers cached
Mem: 1720520 558552 1161968 0 24808 424484
-/+ buffers/cache: 109260 1611260
Swap: 2687996 0 2687996
再起動後も有効
VMをAzureでリサイクルする場合にもスワップの設定が維持されるようにする
sudo echo “/mnt/resource/swap5g none swap sw 0 0” >> /etc/fstab
参考
- http://www.windows-maniax.com/kuniteru/azure1228.html
- http://blogs.msdn.com/b/windowsazurej/archive/2013/08/01/azure-blog-swap-space-in-windows-azure-virtual-machines-running-pre-built-linux-images-part-1.aspx
手順2
実はAzureのLinuxインスタンスにはWindows Azure Linux Agent
というものが入っているらしく、
手順1でやったように煩雑なコマンドを打つことなくよろしくやってくれるみたい
/etc/waagent.confを編集
この部分を
ResourceDisk.EnableSwap=n
ResourceDisk.SwapSizeMB=0
こんな感じに編集
ResourceDisk.EnableSwap=y
ResourceDisk.SwapSizeMB=2625
イメージを作成して新しい仮想マシンを作成
再利用可能なイメージを作成して、それで新しい仮想マシンを作成
以上!
複数台作る場合はこっちが楽そう.