VMのディスクをStandardからPremiumに変更する手順

今回は「AzCopy」コマンドを使って、Virtual MachineのディスクをStandardからPremiumに変更する手順を紹介致します。
VMは一度立ててしまうとOSディスクをStandardからPremiumに変更することができない為、
本記事を参考にしてもらえればと思います。

1.AzCopyとは

AzCopyはAzure BLOB,File,Tableの記憶域との間でデータをコピーするために設計されたWindowsコマンドラインユーティリティです。

こちらから

下記よりダウンロードすることができます。
ダウンロードはこちらから

2.Azure環境準備

今回は下記のような環境で行います。

移行元Storage : japanwestdisks928
パフォーマンス : Standard
移行vhd : westtest201691818370.vhd

移行先Storage : easttestpremium
パフォーマンス : Premium

予め、Storage Accountのアクセスキーを取得する必要があります。
アクセスキーは管理画面から確認できます。

なお、AzCopyに使うvhdファイルでVMを起動させている場合、ファイルシステムを一貫した状態に保持するために、VM を停止する必要があります。

3.AsCopyを実行する

今回はPowerShellからAzCopyコマンドを使います。

まずはAzCopyをダウンロードしたディレクトリに移動します。
cd ‘C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy’

AzCopyでディスクコピーをする構文は下記の通りです。
AzCopy /Source:/SourceKey:/Dest: /DestKey: /Pattern:

パラメータは下記になります。
/Source: <移行vhdが格納されているコンテナーのURL>
/SourceKey: <移行元Storageのアクセスキー>
/Dest: <移行先コンテナーのURL>
/DestKey: <移行先コンテナーのアクセスキー>
/Pattern: <移行vhdのファイル名>

実行すると、PowerShell上で経過が確認できます。

下の画像のように表示されたらコピー完了です。

実際にStorageの管理画面を開くとコピーされていることが確認できます。

4.vhdからVMを立ち上げる

Premium StorageにコピーしたvhdをVMとして起動させるにはPowerShellのコマンドが便利です。

PowerShellを起動したらログインします。
Login-AzureRmAccount

下記情報を変数に登録します。
$rgName = “
$vnetName = “
$location = “
$subnetName = “
$vmName = “
$vmSize = “
$ipName = “
$nicName = “
$vhdName = “
$vhdUri = “

仮想ネットワークの設定を読み込みます。
$vnet = Get-AzureRmVirtualNetwork -ResourceGroupName $rgName -Name $vnetName

パブリックIPを取得します。
固定IPにしたい場合は「AllocationMethod」を「Static」にしてください。
$pip = New-AzureRmPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location -AllocationMethod Dynamic

ネットワークインターフェースを作成し、読み込みます。
$nic = New-AzureRmNetworkInterface -Name $nicName -ResourceGroupName $rgName -Location $location -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id
$nic = Get-AzureRmNetworkInterface -ResourceGroupName $rgName -Name $nicName

立ち上げるVMの設定をしていきます。
まずは名前とサイズを指定します。
$VmConfig = New-AzureRmVMConfig -Name $vmName -VMSize $vmSize

先ほどコピーしてきたVHDファイルを指定します。
$VmConfig = Set-AzureRmVMOSDisk -VM $VmConfig -VhdUri $vhdUri -Name $vhdName -CreateOption attach -Windows -Caching ReadWrite

ネットワークインターフェースの紐づけをします。
$VmConfig = Add-AzureRmVMNetworkInterface -VM $VmConfig -NetworkInterface $nic
$VmConfig.NetworkProfile.NetworkInterfaces.Item(0).Primary = $true

設定を元にVMを立ち上げます。
New-AzureRmVM -ResourceGroupName $rgName -Location $location -VM $VmConfig -Verbose

実行後、下の画像のようにOKの表示がされていれば作成完了です。

いかがでしたでしょうか。

別記事でもご紹介しますが、Premium Storageを使うことで可用性セットに設定しなくてもSLA99.9%が保証されるように
なりましたので、この機会に是非ご利用ください。

次回もお楽しみに!

この記事を書いた人

azure-recipe-user