Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

Hyper-Vで仮想マシン(VM)の自動起動と起動順序を設定する方法

Hyper-Vでは、ホストOSの起動や再起動時に、登録されている仮想マシン(VM)を自動的に開始・停止させる動作を構成できます。本記事では、Hyper-Vホストの電源投入時および正常なシャットダウン時に仮想マシンに対して実行されるアクションの設定方法と、仮想マシンの起動順序を制御する方法について解説します。

Hyper-V仮想マシンの自動起動・自動停止アクションの構成

デフォルトでは、Hyper-Vホストを再起動すると、登録済みの仮想マシンの状態が保存されます。つまり、再起動前に仮想マシンが稼働していた場合、Hyper-VはそのVMを自動的に起動します。自動起動の設定は、仮想マシンごとに個別に行います。

Hyper-Vマネージャーを起動し、任意のVMのプロパティを開いて「設定」→「自動起動アクション」に移動します。VMの自動起動を管理するためのオプションは以下の3つです。

  • 何もしない(Nothing) – ホスト起動時に仮想マシンを自動起動しません(ホスト再起動前の状態に関わらず)
  • サービス停止時に実行されていた場合は自動的に起動する(StartIfRunning) – ホストのシャットダウン/再起動前に稼働していたVMのみ、自動的に起動します
  • 常にこの仮想マシンを自動的に起動する(Start) – Hyper-Vホストの起動時に、常にこの仮想マシンを起動します

最後のオプションには「起動遅延時間(Startup Delay)」というパラメーターもあります。ここでは仮想マシンの起動遅延時間を秒単位で指定できます。この遅延を利用することで、VMの起動順序を制御したり(例:SQL ServerのVMより先にドメインコントローラーを起動する)、複数のVMが同時に起動することによるディスクストレージへの負荷を軽減したりできます。

Hyper-Vで仮想マシン(VM)の自動起動と起動順序を設定する方法

なお興味深いことに、Windows Admin Center(WAC)にはまだHyper-V仮想マシンの自動起動を管理する機能は用意されていません。

また、「自動停止アクション」セクションでは、ホストのシャットダウンや再起動時に仮想マシンをどのように扱うかを設定できます。

この設定は、仮想マシンが正常にシャットダウンする時間を確保してHyper-Vホストを正しく再起動することを想定したものです。停電やBSODなどの緊急事態とは異なる点に注意してください。選択できるオプションは以下の3つです。

  • 仮想マシンの状態を保存する(Save) – 仮想マシンの完全な状態(メモリ内容を含む)が保存され、次回起動時にはこの状態から再開されます。VMのメモリ内容を保存するための*.BINファイル用に、ディスク上に追加の空き容量が必要になる点に注意してください。ゲストOSは再起動されません。
  • 仮想マシンをオフにする(TurnOff) – Hyper-Vホストのシャットダウン時に、物理コンピューターの電源を切るのと同じように仮想マシンも停止します。VMの状態は保存されず、次回はゲストOSがフルブートサイクルで起動します。このモードでは、VM内で稼働しているアプリケーションのデータに不整合が発生するリスクがあります。
  • ゲストオペレーティングシステムをシャットダウンする(ShutDown) – Hyper-V統合サービスを使用してゲストOSを正常にシャットダウンします。VM内で実行中のすべてのアプリケーションが適切に停止されるため、データ不整合のリスクは非常に低くなります。

Hyper-Vで仮想マシン(VM)の自動起動と起動順序を設定する方法

Hyper-V仮想マシンの自動起動・自動停止の設定は、PowerShellでも確認・変更できます。

すべてのVMの現在の起動・停止設定を表示するには、次のコマンドを実行します。

Get-VM –VMname * | Select-Object VMname,AutomaticStartAction,AutomaticStartDelay,AutomaticStopAction

Hyper-Vで仮想マシン(VM)の自動起動と起動順序を設定する方法

VMの自動起動設定を変更するには、AutomaticStartActionパラメーターを使用します。指定できる値は NothingStartIfRunningStart の3種類です。

Get-VM –VMname lon-win10| Set-VM –AutomaticStartAction Start

GUIを持たない無料版のWindows Hyper-V Serverホスト上でも、PowerShellを使えば仮想マシンの設定を行えます。

特定のVM(例:FSMOロールを持つドメインコントローラー)以外のすべてのVMに起動遅延を設定する例:

Get-VM –VMname * | Where-object –FilterScript {$_.vmname –notlike "lon-dc*"} | Set-VM –AutomaticStartDelay 90

–AutomaticStopActionパラメーターを使用すれば、VMのシャットダウン動作も設定できます(SaveTurnOffShutDown)。

Hyper-V仮想マシンの起動順序の制御

スタンドアロンのHyper-Vホストを起動する際、管理者は仮想マシンの起動順序を管理する必要があります。たとえば、ExchangeのVMはドメインコントローラーが利用可能になった後に起動し、アプリケーションサーバーはデータベースサーバーの後に起動したいといったケースです。しかし、Hyper-Vには起動遅延オプション(AutomaticStartDelay)以外に、VMの起動順序を管理する組み込みツールがありません。

最もシンプルなケースでは、VMごとに異なる起動遅延を設定することで起動順序を制御できます。

Get-VM –VMname lon-dc01| Set-VM –AutomaticStartDelay 0
Get-VM –VMname lon-exch1,lon-db01 | Set-VM –AutomaticStartDelay 90
Get-VM –VMname lon-rds01,lon-app01 | Set-VM –AutomaticStartDelay 180

もうひとつの方法として、PowerShellの起動スクリプトを使ってVMを順番に起動する方法があります。スクリプト内では、次のVMを起動するまでの待機時間を設定できるほか、VM内のアプリケーションやサービスの可用性を確認する追加チェックも実装できます(アプリやサービスが確実に起動していることを確認するため)。管理を簡単にするために、複数のVMをタグでグループ化しておくと便利です。たとえば、以下のようなタグ(メモ)をVMに設定します。

set-vm lon-dc01,lon-dc02 -Notes "Boot order 1"
set-vm lon-exch1, lon-db01 -Notes "Boot order 2"
set-vm lon-rds01,lon-app01 -Notes "Boot order 3"

Hyper-Vで仮想マシン(VM)の自動起動と起動順序を設定する方法

次のPowerShellスクリプトは、仮想マシンを指定した順序で起動し、Test-NetConnectionコマンドレットを使用して一部のサービス(TCPポート)の可用性チェックも実行します。

$VMtoStart = Get-VM | where notes -contains 'Boot order 1'
foreach ($cn in $VMtoStart)
{Start-VM $cn.name -asjob}
While (!(Test-NetConnection lon-dc01 -Port 445 -WarningAction SilentlyContinue).tcpTestSucceeded ){
Start-Sleep 30
}
$VMtoStart = Get-VM | where notes -contains 'Boot order 2'
foreach ($cn in $VMtoStart)
{Start-VM $cn.name -asjob}
While ((Test-NetConnection lon-exch1 -Port 25 -WarningAction SilentlyContinue).tcpTestSucceeded ){
Start-Sleep 30
}
$VMtoStart = Get-VM | where notes -contains 'Boot order 3'
foreach ($cn in $VMtoStart)
{Start-VM $cn.name -asjob}

最後に、このPowerShellスクリプトを自動起動に登録するか、タスクスケジューラから実行するようにしてください(このスクリプトで起動するすべてのVMについては、自動起動設定を無効にすることを忘れないでください)。なお、WindowsではデフォルトでPowerShellスクリプトの実行が制限されています。必要に応じてPS1スクリプトに署名するか、PowerShellのスクリプト実行ポリシーを変更してください。

  1. Hyper-V 2019で仮想マシンをエクスポート・インポートする完全ガイド

    2019年8月に、Hyper-V 2019のインストールから仮想マシンの構築・展開までを解説する全4回のシリーズ記事を公開しました。まだお読みでない方は、以下のリンクからご確認いただけます。Part 1:Hyper-V 2019 Server Coreのインストール方法Part 2:Hyper-V 2019 Core Serverの初期設定Part 3:Hyper-V 2019 Coreのリモート管理Part 4:Hyper-V 2019で最初の仮想マシンを作成する本記事の概要本記事では、あるHyper-V 2019サーバーから別のHyper-V 2019サーバーへ仮想マシンを移行するための「

  2. Windows 10とWindows 11をデュアルブートする方法|初心者向け完全ガイド

    デュアルブート環境の最大の魅力は、既存のWindows 10をアンインストールせずに、同じPC上にWindows 11をインストールできる点にあります。 これにより、新しいOSを実際に試しながら、自分の使い方に合っているかどうかをじっくり判断できます。古いバージョンと新しいバージョンの両方を、1台のデバイスで同時に体験できるのがデュアルブートの大きなメリットです。 デュアルブート前に確認すべき要件 作業を始める前に、以下の条件を満たしているか必ず確認しましょう。 システム要件:お使いのデバイスがWindows 11の動作要件(TPM 2.0、UEFI対応など)を満たしていること ISOイメー