Posted at

Azure仮想マシンへのSwap領域の割り当て

More than 5 years have passed since last update.

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



  1. fallocate: 適切なサイズ (2.525GB) のスワップファイルをリソースをディスクに割り当てる


  2. chmod: rootユーザーのみにスワップファイルへの読み取り/書き込み権限を持たせる


  3. mkswap: ファイルをスワップ領域として設定する


  4. 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


参考


手順2

実はAzureのLinuxインスタンスにはWindows Azure Linux Agentというものが入っているらしく、

手順1でやったように煩雑なコマンドを打つことなくよろしくやってくれるみたい


/etc/waagent.confを編集

この部分を

ResourceDisk.EnableSwap=n 

ResourceDisk.SwapSizeMB=0

こんな感じに編集

ResourceDisk.EnableSwap=y 

ResourceDisk.SwapSizeMB=2625


イメージを作成して新しい仮想マシンを作成

再利用可能なイメージを作成して、それで新しい仮想マシンを作成

以上!

複数台作る場合はこっちが楽そう.


参考