休止機能では、使われていないVMを一時停止し、コンピューティングコストを節約できます。
VMを休止状態にすると、AzureはVMのオペレーティングシステムに対して、ディスクへの一時停止アクションを実行するように通知します。
Azureは、VM のメモリの内容を OS ディスクに格してから、VMの割り当てを解除します。
VMが再び起動されると、メモリの内容がOSディスクからメモリに転送されます。VMで以前に実行されていたアプリケーションとプロセスは、休止前の状態から再開されます。
VMが休止状態になるとVMの使用に対する課金は行われません。アカウントに対する課金は、VMにアタッチされているストレージ (OS ディスク、データ ディスク)とネットワークリソース (IP など) についてのみ行われます。
Stop-AzVM -ResourceGroupName $ResourceGroupName -Name $SessionHostName -Hibernate -Force
で実施しています。# Azure Automation Runbookで使用するPowerShellスクリプト
# VMの起動、再起動、休止状態(休止)を操作
param (
[Parameter(Mandatory=$true)]
[string]$ResourceGroupName, # リソースグループ名
[Parameter(Mandatory=$true)]
[string]$HostPoolName, # ホストプール名
[Parameter(Mandatory=$true)]
[string]$SessionHostName, # 対象のVM名
[Parameter(Mandatory=$true)]
[ValidateSet("Start", "Restart", "Hibernate")]
[string]$Action # 実行するアクション: Start, Restart, Hibernate
)
# Azureに接続
Write-Output "Authenticating to Azure..."
Connect-AzAccount -Identity
# 対象のセッションホストの完全なリソースIDを取得
$sessionHostResourceId = "/subscriptions/$((Get-AzContext).Subscription.Id)/resourceGroups/$ResourceGroupName/providers/Microsoft.DesktopVirtualization/hostPools/$HostPoolName/sessionHosts/$SessionHostName"
Write-Output "Target Session Host Resource ID: $sessionHostResourceId"
# アクションの実行
switch ($Action) {
"Start" {
Write-Output "Starting session host: $SessionHostName..."
Start-AzVM -ResourceGroupName $ResourceGroupName -Name $SessionHostName
}
"Restart" {
Write-Output "Restarting session host: $SessionHostName..."
Restart-AzVM -ResourceGroupName $ResourceGroupName -Name $SessionHostName
}
"Hibernate" {
Write-Output "Putting session host into hibernation: $SessionHostName..."
Stop-AzVM -ResourceGroupName $ResourceGroupName -Name $SessionHostName -Hibernate -Force
}
default {
Write-Error "Unknown action: $Action"
}
}
Write-Output "Action '$Action' completed for session host: $SessionHostName"