AzureのVirtual MachinesではCPUやメモリサイズを変更できます。
用途やフェーズによってスペックを変更できるのでとても便利ですね。
ただ、インスタンスサイズを変更についていろいろと疑問点が出てきたので、その際に調べたことをまとめておきます。
疑問1 サイズ変更にはOS再起動が伴うのか?
再起動を伴います。
仮想マシンの状態は、「実行中」でもサイズの変更操作はできますが、「停止済み (割り当て解除)」してからサイズ変更行うことを推奨しています。「実行中」でサイズ変更を行うとエラーが発生する場合があるからです。
参考 : https://blogs.technet.microsoft.com/jpaztech/2016/04/15/vmresize/
また、仮想マシンの状態を「停止済み (割り当て解除)」にすると
- 動的に設定しているパブリックIPの変更
- 一時ディスクのデータの消去
が発生するので、事前に固定IPにするなど注意が必要です。
疑問2 別のシリーズのサイズに変更できるのか?
できます。ただし、変更できない場合もあるようです。
Azure のサイズについては下記のリンクがわかりやすいです。
参考 : https://azure.microsoft.com/ja-jp/documentation/articles/virtual-machines-windows-sizes/
例えば、Aシリーズを利用していて、より高スペックなDシリーズに変更したいとします。この場合AからDシリーズに変更できない場合があるようです。
理由はデータセンターの設計仕様上の問題で、AシリーズのみOKなClusterとAシリーズとDシリーズ共にOKなClusterが存在するからです。
運悪くAシリーズのみOKなClusterにVMが作られた場合Dシリーズに変更できません。
回避策としては、予め高スペックのシリーズでVMを作成し、その後サイズを下げることでこの問題を回避できます。
参考 : https://blogs.msdn.microsoft.com/dsazurejp/2015/09/29/d-1235/
疑問3 ローカルディスクを60GB使っている状態で50GBのサイズに変更できるのか?
できます。
D2_V2 Standardは100Gのローカルディスクがあります。例えばこれで60G使用している状態で50GのD1_V2に変更できるのか?ということです。
実際にcent7.2のVMを作成してやってみました。
D2_V2 Standardでは99Gあります。
# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 30G 1.3G 29G 5% / devtmpfs 3.4G 0 3.4G 0% /dev tmpfs 3.5G 0 3.5G 0% /dev/shm tmpfs 3.5G 8.3M 3.4G 1% /run tmpfs 3.5G 0 3.5G 0% /sys/fs/cgroup /dev/sdb1 99G 61M 94G 1% /mnt/resource tmpfs 697M 0 697M 0% /run/user/1000
60Gのファイルを作成します。
# fallocate -l 60GB dummy.dat
無事、いい感じに使用率が上がってくれました。
# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 30G 1.5G 29G 5% / devtmpfs 3.4G 0 3.4G 0% /dev tmpfs 3.5G 0 3.5G 0% /dev/shm tmpfs 3.5G 8.3M 3.4G 1% /run tmpfs 3.5G 0 3.5G 0% /sys/fs/cgroup /dev/sdb1 99G 56G 38G 60% /mnt/resource tmpfs 697M 0 697M 0% /run/user/1000
サイズを変更してみます。
D2_V2 Standard からD1_V2 Standardに変更してみます。
無事変更できたようです。
さて差分のファイルはどうなったのか。。。
# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 30G 1.3G 29G 5% / devtmpfs 1.7G 0 1.7G 0% /dev tmpfs 1.7G 0 1.7G 0% /dev/shm tmpfs 1.7G 8.3M 1.7G 1% /run tmpfs 1.7G 0 1.7G 0% /sys/fs/cgroup /dev/sdb1 50G 53M 47G 1% /mnt/resource tmpfs 345M 0 345M 0% /run/user/1000
消えました。
AzureはLinux VMを作成すると2つのディスクが関連づけられます。
/dev/sda1 はOSディスクで
/dev/sdb1は一時ディスクなんですね。
なので/dev/sdb1はサイズを変更はリソースの開放が伴います。その為、一時ディスクのデータは削除されます。
データ用に使用する場合はディスクをVMに接続する必要があります。
疑問4 データディスク接続数が3つのとき、接続数が2つのサイズに変更できるのか?
できません。
D2_V2 Standardのディスク上限は4つでD1_V2 Standardは2つです。
ぽちぽちディスクを追加します。D2_V2 Standardにディスクを3つ接続しました。
サイズ変更してみます。
使用できません。[i]を選択すると理由まで出てきます。
良いですね。
まとめ
AzureのVMは稼働中でもサイズの変更が可能です。ただし、稼働中に行う場合はいろいろ注意が必要です。
また、別のシリーズに変更する可能性がある場合は予め高スペックなサイズでVMを作成したほうが良さそうです。
サイズの選択画面のディスク容量は一時ディスクを表しています。