Azure VMの起動/停止に合わせてManaged Disksの種類を変更し課金を抑える
仮想マシン(Azure VM)の起動停止時に、ディスク(Azure Managed Disks)の種類を変更するためのPowerShellスクリプトです。
仮想マシンに接続されているディスクについては、起動や停止の状態に関わらず料金が発生します。
しかし、仮想マシンが停止している間は、ディスクに高いI/O性能は必要ありません。
そこで、仮想マシンが停止させる時に、安価なディスクの種類へと変更することで、料金を抑える方法について確認しました。
※本記事内では、Azure Virtual Machines(Azure VM)を仮想マシンとして表記しています。
※本記事内では、Azure Managed Disksをディスクとして表記しています。
※ディスクの暗号化や共有ディスクについては考慮していません。
※作成したPowerShellは、Runbookでの利用を想定しています。
※2022年7月に記事を更新しています。
ディスクの種類(SKU)による課金の違い
ディスクにはパフォーマンスに応じて4種類あります。
パフォーマンス順に並べるとUltra Disk、Premium SSD、Standard SSD、Standard HDDになります。
このうちUltra Disk除く3種類については変更が可能です。
ディスクは種類(SKU)により同じ容量でも使用料金が異なります。
例えば256GBの場合(東日本リージョン)(2022年7月)で比較するとこのような形になります。
ディスクの種類 | 価格 | トランザクションによる課金 |
Premium SSD(P15) | ¥5,957.6 | 無し |
Standard SSD(E15) | ¥2,616.29 |
有り |
Standard HDD(S15) | ¥1,543.61 | 有り (トランザクション 10,000 回あたり ¥0.056) |
ディスクへの課金は仮想マシンの電源ステータス(起動、停止)に関わらず発生します。
仮想マシンを削除してもディスクが残っていると継続して課金が発生します。
最新のディスクの課金については、こちらを参照願います。
ディスクの種類によりSLAが異なるので、その点は注意が必要です。
仮想マシンのステータスと課金状況についてはこちらに纏めています。
併せて見て頂けると大変有難いです。
仮想マシン起動や停止と同時にディスクの種類(SKU)を変更するPowerShellスクリプト
ディスクの種類(SKU)を、以下の通りに変更しています。
-
- 仮想マシン起動時:Standard SSD
- 仮想マシン停止時:Standard HDD
仮想マシン起動と共にディスクの種類をStandard HDDからStandard SSDに変更
仮想マシンの起動時に仮想マシンに接続されているディスクの種類をStandard SSDとしています。
$StorageTypeでディスクの種類を指定するようにしています。
PremiumSSDの場合は$StorageType ="PremiumSSD_LRS"とします。
PowerShellは仮想マシン名を変数として実行するようにしています。
# Vm Start (Changed Disk Type) param ( $ResourceGroupName =“リソースグループ名" $VM = Get-AzVM -Name $VmName -ResourceGroupName $ResourceGroupName foreach ($disk in $vmDisks) Start-AzVM -ResourceGroupName $ResourceGroupName -Name $VmName |
PowerShellスクリプトの名は、VM_Start_SelectDiskType.ps1としています。
起動対象の仮想マシン名を指定して、PowerShellスクリプトを実行します。
c:\>VM_Start_SelectDiskType.ps1 -VmName 仮想マシン名 |
仮想マシン停止と共にディスクの種類をStandard SSDからStandard HDDに変更
仮想マシンの停止時に仮想マシンに接続されているディスクの種類をStandard HDDとしています。
仮想マシン名を変数としてPowerShellを実行するようにしています。
※Standard HDDの場合はディスクの種類の指定は”Standard_LRS”になります。
# Vm Stop (Changed Disk Type) param ( $ResourceGroupName =“リソースグループ名" Stop-AzVM -ResourceGroupName $ResourceGroupName -Name $VmName -Force $VM = Get-AzVM -Name $VmName -ResourceGroupName $ResourceGroupName foreach ($disk in $vmDisks) } |
PowerShellスクリプトの名は、VM_Stop_SelectDiskType.ps1としています。
停止対象の仮想マシン名を指定して、PowerShellスクリプトを実行します。
c:\>\VM_Stop_SelectDiskType.ps1 -VmName 仮想マシン名 |
ディスクの種類をGet-AzDiskを使って確認
Get-AzDiskを使用して、ディスクの種類を表示することができます。
変更後の確認として、ディスク名と種類(SKU)を表示するようにしています。
Get-AzDisk -ResourceGroupName “リソースグループ名" | ft Name,@{Name="Name"; Expression={$_.Sku.Name}} #実行結果例 |
—広告—
最後に
ディスクの種類を変更するPowerShellスクリプトを確認しました。
仮想マシンの起動停止と併せて実施することで、課金を抑えることができるため、検証環境などで活用すると有益だと思いました。
Logic Appsを利用した仮想マシンの起動停止方については、こちらの記事で紹介しています。
Automationアカウントでの実行時間制限方法については、こちらの記事で紹介しています。