Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

仮想マシンのディスクを拡張する

2015年3月に、仮想マシンのOSディスク容量が127GBから緩和されています。詳細は以下のURLを参照していただくとして、最大1TBまで増加させることができます。

ただしポータル等から仮想マシンを作成すると、依然OSディスク容量は127GB(Windowsの場合)のままです。オンプレで作成したVHDをアップロードして使用する場合なら問題ありませんが、Azureで予め準備されているイメージを利用している場合、どうすればよいのでしょうか?

同時期にリリースされた Azure PowerShell v0.8.15(3月にリリースされた版)の履歴を見てみると、

github.com

なにやら、ResizedSizeInGB パラメータが追加されていますので、これで変更できるようです。

Add 'ResizedSizeInGB' pramater for the following cmdlets
Update-AzureDisk
Set-AzureOSDisk
Set-AzureDataDisk (DiskName parameter is also added along with ResizedSizeInGB)

OSディスクの拡張

始めに、適当にWindows仮想マシンを作ります。ついで50GBのデータディスクをアタッチしておきます。

f:id:StateMachine:20150806121330p:plain

仮想マシン実行中には、ディスク容量を変更できない(エラーになります)ので、仮想マシンを停止してから作業する必要があります。

コマンド自身は、Update-AzureDiskコマンドを使用しますが、指定方法は色々あるので、ここでは一例として。

OSディスクの情報をGet-AzureVM からの OSVirtualHardDisk プロパティで取得できます。さらに、ResizedSizeInGB プロパティがありますので、適当に数字を書き換えてUpdate-AzureDiskコマンドにパイプで流し込めばOKです。

Update-AzureDiskコマンドにLabelパラメータを指定しないと、エラーになります。OSVirtualHardDisk.DiskLabel プロパティもあるのですが、ここに指定しても値が流れてくれませんでした。

PS C:\> $vm = Get-AzureVM -ServiceName disktest -Name disktest 
$vm.VM.OSVirtualHardDisk.ResizedSizeInGB = 256 
$vm.VM.OSVirtualHardDisk| Update-AzureDisk -Label "OS Disk"

詳細: 10:58:11 - Completed Operation: Get Deployment
詳細: 10:58:11 - Begin Operation: Update-AzureDisk

詳細: 10:58:45 - Completed Operation: Update-AzureDisk
OperationDescription OperationId                          OperationStatus
-------------------- -----------                          ---------------
Update-AzureDisk     bdaa82eb-1962-cc9c-a9f4-d1e3fce5ef4e Succeeded

コマンドが正常終了したら、仮想マシンを起動して確認します。Capacityが256GBになっていることが確認できますが、まだ未割り当ての状態です。

f:id:StateMachine:20150806122006p:plain

Explorerを見ても127GBままです。

f:id:StateMachine:20150806122127p:plain

Server ManagerからExtend Volumeを実行すればボリュームを拡張できます。

f:id:StateMachine:20150806122202p:plain

f:id:StateMachine:20150806122254p:plain

おおよそ256GBになりました。

f:id:StateMachine:20150806122628p:plain

データディスクの拡張

次にデータディスクの拡張です。OSディスクと同じようにとおもったら、DataVirtualHardDisksプロパティ中に、ResizedSizeInGB プロパティがありませんでした(なんでや)

ということなので、Dataディクスのプロパティを表示して、ディスク名を確認しつつ、Update-AzureDisk コマンドのみで以下のように実行すれば拡張されます。

Update-AzureDisk -DiskName disktest-disktest-0-201508060136360737 -Label "Data Disk" -ResizedSizeInGB 200
詳細: 11:32:36 - Begin Operation: Update-AzureDisk

詳細: 11:33:08 - Completed Operation: Update-AzureDisk
OperationDescription OperationId                          OperationStatus
-------------------- -----------                          ---------------
Update-AzureDisk     85203a9f-5983-c608-9263-30aace45270a Succeeded

あとはOSディスクの場合と同じく、ボリュームを拡張すればOKでしょう。

雑感

DiskLabelプロパティが必須でないにもかかわらず、指定してないとNullだよと怒られたり、DataVirtualHardDisks.ResizedSizeInGB プロパティが無かったりと、少し挙動不審なところがありますが、事後に拡張できるのは助かりますね。

Newポータル等から変更できるかは確認してません(できるのかな?)