Hyper-Vの仮想マシン(vhd)をAzureへOS移行する。

2019,アジュール,azure,とは,VHD,download,AZCOPY,Cドライブ,移行,microsoft,portal,powershell,OS,server,クラウド,ポータル,VM,使い方,仮想マシン

『Hyper-Vの仮想マシン(vhd(第2世代))をAzureへOS移行の仕方』をピックアップ!

いつもの爽やか青空系ブログから、IT技術に特化した記事になるがご了承願いたい。

Microsoft Azureはマイクロソフトのクラウド プラットフォーム。

最近ではアマゾンのクラウドサービス・AWSの大規模障害が話題になったが、今回はマイクロソフトのクラウドサービス・アジュールに関しての記事です。

一般的なデータドライブならネットで調べて、Azureポータルでちょちょいと出来てしまうが、マネジメントディスクともなると難しい(ましてやクラウドサーバー初体験の私にとってはなおさら、物理サーバーだってノータッチに近い)。

まずは『移行元(Hyper-V)の準備・設定』から見ていこう(^^)/

※AZUREポータルは日ごとに進化しており、画面上のデザインおよび情報が変更になっている可能性もあるので注意(本記事は2019年9月時点の内容)。

また、本記事ではザックリとしたポイントを掲載しているので、詳細を知りたい方はMicrosoftのマニュアルを読むのが最適だ(最終的な理解は絶対マニュアル読むべき)。

◆私がOS移行の際に参考にしたマニュアル。

Azure にアップロードする Windows VHD または VHDX を準備する

PowerShell を使用して特殊化されたディスクから Windows VM を作成する 

Azure Portal を使用して VHD から VM を作成する 

Azure で一般化された VM の管理対象イメージを作成する 




この記事の目次

移行元(Hyper-V)の準備・設定。

2019,アジュール,azure,とは,VHD,download,AZCOPY,Cドライブ,移行,microsoft,portal,powershell,OS,server,クラウド,ポータル,VM,使い方,仮想マシン2

基本的には『Azure にアップロードする Windows VHD または VHDX を準備する』を参照ですが、PowerShellのコマンドエラーとなる部分もあるのでポイントを解説していきます。

※以下の手順を実行する前に、必ずバックアップ作業を行うこと(Hype-Vだとエクスポートしてvhdファイル等退避しておくこと)!

Azure用のWindows構成を設定する

Azure にアップロードする予定のVMで、管理者特権でのコマンド プロンプト ウィンドウから、次のコマンドを実行。

1. ルーティング テーブルの静的な固定ルートを削除。

ルート テーブルを表示するには、コマンド プロンプト ウィンドウで route print を実行。

Persistence Routes セクションを確認。 固定ルートがある場合は、route delete コマンドを使って削除。

2019,アジュール,azure,とは,VHD,download,AZCOPY,Cドライブ,移行,microsoft,portal,powershell,OS,server,クラウド,ポータル,VM,使い方

「固定ルート:なし」を確認

2. WinHTTP プロキシを削除。

◆PowerShellコマンド

netsh winhttp reset proxy

VM で特定のプロキシを使用する必要がある場合は、Azure の IP アドレス(168.63.129.16) にプロキシ例外追加。これにより VM は Azure に接続可能。

$proxyAddress=””
$proxyBypassList=”;168.63.129.16″
netsh winhttp set proxy $proxyAddress
$proxyBypassList

3. ディスク SAN ポリシーを Onlineall に設定。

◆PowerShellコマンド

diskpart

開いているコマンド プロンプト ウィンドウに、次のコマンドを入力。

◆DISKPARTコマンド

san policy=onlineall
exit

4. Windows の協定世界時 (UTC) の時刻を設定。 また、Windows Time サービス (w32time) の起動の種類を Automatic に設定。

◆PowerShellコマンド

Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\TimeZoneInformation’ -name “RealTimeIsUniversal” -Value 1 -Type DWord -force
Set-Service -Name w32time -StartupType Automatic

5. 電源プロファイルを高パフォーマンスに設定。

◆PowerShellコマンド

powercfg /setactive SCHEME_MIN

6. 環境変数の TEMP と TMP が既定値に設定されていることを確認。

◆PowerShellコマンド

Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment’ -name “TEMP” -Value “%SystemRoot%\TEMP” -Type ExpandString -force
Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment’ -name “TMP” -Value “%SystemRoot%\TEMP” -Type ExpandString -force

Windows サービスの確認

◆PowerShellコマンド

Set-Service -Name bfe -StartupType Automatic
Set-Service -Name dhcp -StartupType Automatic
Set-Service -Name dnscache -StartupType Automatic
Set-Service -Name IKEEXT -StartupType Automatic
Set-Service -Name iphlpsvc -StartupType Automatic
Set-Service -Name netlogon -StartupType Manual
Set-Service -Name netman -StartupType Manual
Set-Service -Name nsi -StartupType Automatic
Set-Service -Name termService -StartupType Manual
Set-Service -Name MpsSvc -StartupType Automatic
Set-Service -Name RemoteRegistry -StartupType Automatic

リモート デスクトップのレジストリ設定を更新する

リモート アクセスに関して次の設定が正しく構成されていることを確認。

1. リモート デスクトップ プロトコル (RDP) が有効になっていることを確認。

◆PowerShellコマンド

Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server’ -name “fDenyTSConnections” -Value 0 -Type DWord -force
Set-ItemProperty -Path ‘HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services’ -name “fDenyTSConnections” -Value 0 -Type DWord -force

2. RDP ポートが正しくセットアップされています。 既定のポートは 3389 。

◆PowerShellコマンド

Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-Tcp’ -name “PortNumber” -Value 3389 -Type DWord -force

VM をデプロイすると、ポート 3389 に対する既定の規則が作成。

ポート番号を変更する場合は、VM が Azure にデプロイされた後で行う。

3. リスナーがすべてのネットワーク インターフェイスでリッスンしていることを確認。

◆PowerShellコマンド

Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-Tcp’ -name “LanAdapter” -Value 0 -Type DWord -force

4. RDP 接続のネットワーク レベル認証 (NLA) モードを構成。

◆PowerShellコマンド

Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp’ -name “UserAuthentication” -Value 1 -Type DWord -force
Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp’ -name “SecurityLayer” -Value 1 -Type DWord -force
Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp’ -name “fAllowSecProtocolNegotiation” -Value 1 -Type DWord -force

5. キープアライブ値を設定。

◆PowerShellコマンド

Set-ItemProperty -Path ‘HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services’ -name “KeepAliveEnable” -Value 1 -Type DWord -force
Set-ItemProperty -Path ‘HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services’ -name “KeepAliveInterval” -Value 1 -Type DWord -force
Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-Tcp’ -name “KeepAliveTimeout” -Value 1 -Type DWord -force

6. 再接続。

◆PowerShellコマンド

Set-ItemProperty -Path ‘HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services’ -name “fDisableAutoReconnect” -Value 0 -Type DWord -force
Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-Tcp’ -name “fInheritReconnectSame” -Value 1 -Type DWord -force
Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-Tcp’ -name “fReconnectSame” -Value 0 -Type DWord -force

7. コンカレント接続数を制限。

◆PowerShellコマンド

Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-Tcp’ -name “MaxInstanceCount” -Value 4294967295 -Type DWord -force

8. RDP リスナーに関連付けられている自己署名証明書をすべて削除。

◆PowerShellコマンド

Remove-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp’ -name “SSLCertificateSHA1Hash” -force

以下のようなエラーメッセージが出るかもしれないが、その場合は「ファイル名を指定して実行」⇒「regedit」レジストリエディタを開き、”SSLCertificateSHA1Hash” が存在していないことを確認しよう。

このコードは、VM のデプロイ時に最初から接続できるように。 これを後で確認する必要がある場合は、VM が Azure にデプロイされた後に行うことが可能。

9. VM がドメインの一部になる場合は、次のポリシーをチェックして、前の設定が元に戻されていないことを確認。

ポリシーの設定は「ファイル名を指定して実行」⇒「gpedit.msc」ローカルグループポリシーエディタを開き確認すること。

2019,アジュール,azure,とは,VHD,download,AZCOPY,Cドライブ,移行,microsoft,portal,powershell,OS,server,クラウド,ポータル,VM,使い方設定

この画像はマニュアルから引用したが、ポリシーのネスト順序が若干間違っているので注意。

Windowsファイアウォール規則の構成

1. 3つのプロファイル (ドメイン、標準、パブリック) で Windowsファイアウォールを有効に。

◆PowerShellコマンド

Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True

2. WinRM に 3 つのファイアウォール プロファイル (ドメイン、プライベート、パブリック) の通過を許可し、PowerShellリモート サービスを有効に。

◆PowerShellコマンド

Enable-PSRemoting -force
Set-NetFirewallRule -DisplayName “WindowsRemote Management (HTTP-In)” -Enabled True
※コマンドエラーの場合、Set-NetFirewallRule -DisplayName “ファイルとプリンターの共有 (エコー要求 – ICMPv4 受信)” -Enabled True
(上記の黄色アンダーマーカーをコピペするとダブルクォーテーションが全角に、ハイフンが環境依存の記号なるので注意!)

3. RDP トラフィックを許可するために、ファイアウォール規則を有効に。

◆PowerShellコマンド

Set-NetFirewallRule -DisplayGroup “Remote Desktop” -Enabled True
※コマンドエラーの場合、Set-NetFirewallRule -DisplayGroup “リモート デスクトップ” -Enabled True
(上記の黄色アンダーマーカーをコピペするとダブルクォーテーションが全角に、ハイフンが環境依存の記号なるので注意!)

4. VM が仮想ネットワーク内部の ping コマンドに応答できるように、”ファイルとプリンターの共有” 規則を有効に。

◆PowerShellコマンド

Set-NetFirewallRule -DisplayName “File and Printer Sharing (Echo Request – ICMPv4-In)” -Enabled True
※コマンドエラーの場合、Set-NetFirewallRule -DisplayName “ファイルとプリンターの共有 (エコー要求 – ICMPv4 受信)” -Enabled True
(上記の黄色アンダーマーカーをコピペするとダブルクォーテーションが全角に、ハイフンが環境依存の記号なるので注意!)

5. VM がドメインの一部になる場合、次の Azure AD ポリシーをチェック。前の設定が元に戻されていないことを確認。

ポリシーの設定は「ファイル名を指定して実行」⇒「gpedit.msc」でローカルグループポリシーエディタを開き確認すること。

上記のような設定をしていく際に、「ICMP の例外を許可する」を有効にしたのに自動的に無効に設定される場合がある。

原因はよくわからないが、私はその場合「未構成」のままにしました。

VM の確認

VM が正常であり、セキュリティで保護されており、RDP アクセス可能であることを確認(ここ重要!)。

1. ディスクが正常で一貫性があることを確認するには、次回の VM 再起動時にディスクをチェック。

◆PowerShellコマンド

Chkdsk /f

クリーンで正常なディスクがレポートに示されていることを確認してください。

2. ブート構成データ (BCD) を設定。

◆PowerShellコマンド

bcdedit /set “{bootmgr}” integrityservices enable
bcdedit /set “{default}” device partition=C:
bcdedit /set “{default}” integrityservices enable
bcdedit /set “{default}” recoveryenabled Off
bcdedit /set “{default}” osdevice partition=C:
bcdedit /set “{default}” bootstatuspolicy IgnoreAllFailures

bcdedit /set “{bootmgr}” displaybootmenu yes
bcdedit /set “{bootmgr}” timeout 5
bcdedit /set “{bootmgr}” bootems yes
bcdedit /ems “{current}” ON
bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200

3. Dump ログは、Windowsのクラッシュの問題をトラブルシューティングするのに役立つ場合があります。 Dump ログ コレクションを有効に。

◆PowerShellコマンド

# Set up the guest OS to collect a kernel dump on an OS crash event
Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl’ -name CrashDumpEnabled -Type DWord -force -Value 2
Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl’ -name DumpFile -Type ExpandString -force -Value “%SystemRoot%\MEMORY.DMP”
Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl’ -name NMICrashDump -Type DWord -force -Value 1# Set up the guest OS to collect user mode dumps on a service crash event
$key = ‘HKLM:\SOFTWARE\Microsoft\Windows\WindowsError Reporting\LocalDumps’
if ((Test-Path -Path $key) -eq $false) {(New-Item -Path ‘HKLM:\SOFTWARE\Microsoft\Windows\WindowsError Reporting’ -Name LocalDumps)}
New-ItemProperty -Path $key -name DumpFolder -Type ExpandString -force -Value “c:\CrashDumps”
New-ItemProperty -Path $key -name CrashCount -Type DWord -force -Value 10
New-ItemProperty -Path $key -name DumpType -Type DWord -force -Value 2
Set-Service -Name WerSvc -StartupType Manual

4. WindowsManagement Instrumentation (WMI) リポジトリに一貫性があることを確認。

◆PowerShellコマンド

winmgmt /verifyrepository

リポジトリが破損している場合は、「WMI:リポジトリが破損しているかどうか」を参照。

5. 他にポート 3389 を使用しているアプリケーションがないことを確認。

このポートは、Azure の RDP サービスに使用。 VM で使用されているポートを確認するには、netstat -anob を実行。

◆PowerShellコマンド

netstat -anob

6. ドメイン コントローラーである WindowsVHD をアップロードするには、次のように。

ドメインコントローラとは、LANなどのネットワーク環境におけるドメイン内で、ユーザアカウントのログオン認証や集中管理するソフトウェア(サーバ)であり、更にはそれを稼働させるコンピュータである。

いわゆる「ドメインサーバー」ってことかな。

以下の手順に従って、ディスクを準備。

ある時点で Directory Services Restore Mode (DSRM) の VM を起動しなければならない場合に備えて、DSRM パスワードを把握していることを確認。 詳細については、「DSRM パスワードの設定」を参照してください。

7. あらかじめ登録された Administrator アカウントとパスワードを把握していることを確認。

現在のローカル Administrator パスワードをリセットし、このアカウントを使用して RDP 接続を介して Windowsにサインイン可能であることを確認することも可能。

このアクセス許可は、”リモート デスクトップ サービスを使ったログオンを許可” グループ ポリシー オブジェクトによって制御されています。 このオブジェクトは、次の場所からローカル グループ ポリシー エディターで表示。

Computer Configuration\WindowsSettings\Security Settings\Local Policies\User Rights Assignment

8. 次の Azure AD ポリシーで、RDP 経由とネットワークからの自分の RDP アクセスをブロックしていないことを確認。

[コンピューターの構成][Windowsの設定][セキュリティ設定][ローカル ポリシー][ユーザー権利の割り当て][ネットワーク経由のアクセスを拒否]

[コンピューターの構成][Windowsの設定][セキュリティ設定][ローカル ポリシー][ユーザー権利の割り当て][リモート デスクトップ サービスを使ったログオンを拒否]

9. 次の Azure AD ポリシーで、必要なアクセス アカウントのいずれも削除していないことを確認。

[コンピューターの構成][Windowsの設定][セキュリティ設定][ローカル ポリシー][ユーザー権利の割り当て][ネットワーク経由でコンピューターへアクセス]

ポリシーには次のグループが一覧表示されるはずです。

管理者(administrator)、Backup Operators、Everyone、ユーザー

10. VM を再起動。Windowsが正常であり、RDP接続を介してアクセス可能を確認。

この時点で、ローカル Hyper-V に VM を作成して、VM が完全に起動することを確認可能。

次に、RDP を介して VM に到達できることを確認するためのテストを実行。

11. 余分な Transport Driver Interface (TDI) フィルターはすべて削除。

たとえば、TCP パケットや追加のファイアウォールを分析するソフトウェアは削除。

これを後で確認する必要がある場合は、VM が Azure にデプロイされた後に行うことが可能。

12. 物理コンポーネントまたはその他の仮想化テクノロジに関連する、その他のサードパーティ ソフトウェアまたはドライバーをアンインストール。

Windows更新プログラムのインストール状況を確認。

Sysprep を使用する状況の判断

私のケース(OS移行)の場合、Sysprepは実行していません。

Sysprepを実行してVM作成しても、VMが起動しませんでした。

システム準備ツール (Sysprep) は、Windowsインストールをリセットするために使用できるプロセスです。 Sysprep は、個人データをすべて削除し、コンポーネントをいくつかリセットすることによって、”すぐに使用できる” エクスペリエンスを提供。

Sysprep は通常、特定の構成を持つ他の複数の VM のデプロイ元となるテンプレートを作成するために実行。 このテンプレートは、一般化されたイメージと呼ばれます。

1 つのディスクから 1 つの VM のみを作成する場合は、Sysprep を使用する必要はありません。 代わりに、特殊化されたイメージから VM を作成することが可能。 特殊化されたディスクから VM を作成する方法については、以下を参照してください。

特殊化されたディスクからの VM の作成
特殊化された VHD ディスクからの VM の作成

一般化されたイメージを作成する場合は、Sysprep を実行する必要があります。 詳しくは、「How to use Sysprep: An Introduction」 (Sysprep の使用方法: 概要) をご覧ください。

vhdx(第2世代)からvhdに変換。

ポイントは対象の仮想マシンをシャットダウンし、「容量固定」でvhd変換すること。

① Hyper-V マネージャーを開いて、左側のローカル コンピューターを選択。

② コンピューター リストの上にあるメニューで、 [アクション] > [ディスクの編集] の順に選択。

③[仮想ハード ディスクの場所] ページで、対象の仮想ディスクを選択。

④[アクションの選択] ページで、 [変換] > [次へ] の順に選択。

⑤VHDX から変換する必要がある場合は、 [VHD] > [次へ] の順に選択。

⑥容量可変ディスクから変換する必要がある場合は、 [容量固定] > [次へ] の順に選択。

⑦新しい VHD ファイルの保存先となるパスを見つけて選択。

⑧[完了] を選択

Azure にアップロードする Windows VHD または VHDX を準備するから引用。

AZCOOPYでAzureポータルにアップロード。

AzCopy は、ストレージ アカウント間の BLOB(※)またはファイル コピーに利用できるコマンドライン ユーティリティです。

まぁ簡単に言うとアップロードコマンドだ。

※Azureポータル(GUI)でもストレージにアップロードできるが、私の場合、転送速度が遅い&デプロイエラー(404)になったのでAzcopyコマンドを使用。

※BLOBとは、 データベースシステムで用いられるデータ型のひとつ。

一般的に、画像や音声などの大きなバイナリデータそのままメモリに格納することが可能。

転送先のストレージを作成後

まずはAzCopy を使ってみるでAZCOPYをダウンロードしよう。

AZCOPYのコマンド説明。

AzCopy.exeが格納されているディレクトリにcdコマンドやpushdで移動。

コマンドは…

「azcopy 【移送元フォルダ】 【移送先ストレージURL】 【アクセスKEY】 【移送ファイルvhd】 【BLOBタイプ】 【スレッド数】」

※詳細はAzcopyの引数参照。

コマンド例)azcopy /Source:C:\temp\azure /Dest:https://XXXdiag.blob.core.windows.net/test /DestKey:◇◇◇◇◇◆◆◆◆== /Pattern:ZZZZ.vhd /BlobType:page /NC:32
ストレージURLの確認

ストレージURLの確認

アクセスキーの確認アクセスキーの確認

VM作成のパターンを抑えよう。

Azureポータルをいじくりまわすと分かるが、VM作成には大まかに以下の3パターンの作成方法がある(私が知っている限り)。

結論から言うと今回のケース「Hyper-Vの仮想マシン(vhd(第2世代))をAzureへOS移行」③のイメージからVMを作成するのが適していた。

①Virtual Machines画面から新規作成。

Virtual Machines画面から新規作成は、一般的な仮想マシンの作成方法でしょうね。

Virtual Machines画面からVM新規作成。

Virtual Machines画面からVM新規作成。

私はサクッとVM作成して「OSディスクのスワップ」を実行すれば余裕で入れ替えられると思っていたが無理でした。

また既定のOSは、すべて英語版

いちいち日本語化を設定するなんて時間の無駄で効率が悪い

一応OS日本語化のリンクを張っておきます。

OSを日本語化して、IISをインストール

②ディスクからVM作成。

以下の2つの方法でVMを作成してもうまくいきませんでした。

Azure Portal を使用して VHD から VM を作成する

PowerShell を使用して特殊化されたディスクから Windows VM を作成する 

特殊化されたディスクからVM作成する方法が一番しっくり来ていたんですが、

デプロイ時に以下のようにエラーになります。

New-AzVM:長時間実行中の操作は、ステータス「Failed」で失敗しました。 追加情報:「VM ‘VM201909241752’は、VMエージェントまたは拡張機能のステータスを報告していません。
VMに実行中のVMエージェントがあり、アウトバウンド接続を確立できることを確認してください。
ErrorCode:VMAgentStatusCommunicationError
ErrorMessage:VM ‘VM201909241752’は、VMエージェントまたは拡張機能のステータスを報告していません。 VMに実行中のVMエージェントがあり、Azureストレージへのアウトバウンド接続を確立できることを確認してください。
VM agent and can establish outbound connections to Azure storage.

エラーメッセージから解析し、中国語のQAサイトに行き着きましたが、結局VMはうまく起動しませんでした。

◆中国語のQAサイト

New-AzureRmVM:长时间运行操作失败,状态为“Failed”ErrorCode:VMAgentStatusCommunicationError 

◆中国語のQAサイトからのリンク先

Azure VM から非管理対象 VM イメージを作成する方法

③イメージからVM作成。

で、行き着いたのがイメージからVMを作成する方法。

”イメージ”のイメージがわかないので、イメージの概要を押さえておきましょう。

~イメージの概要~

・Azure上に存在する仮想マシンをテンプレート化して簡単に複製を作成するためのサービス。

・仮想マシンのOSディスクのみでなく追加されたデータディスクもまとめて一つのイメージとしてテンプレート化できる。

・従来のカスタムイメージと違いBLOB上のVHDファイルでなく、一つのリソースとして見える。

・仮想マシンからのみでなく、BLOB上の既存VHDからもイメージの作成が可能。

・イメージに対して課金は一切発生しない。

まずはイメージを作成する。

イメージリソースのページを開き、「追加」を選択 。

必須項目、OSの種類入力後、「VMの生成」で世代を選択。

2019,アジュール,azure,とは,VHD,download,AZCOPY,Cドライブ,移行,microsoft,portal,powershell,OS,server,クラウド,ポータル,VM作成4

世代(GEN)選択を間違わないこと!BLOBも入力しよう。

ここで言っている世代とは、移行元となるVHDファイルの世代のこと。

Gen1(第1世代)、Gen2(第2世代)を間違うと、VMデプロイ時に「プロビジョニング失敗」となるので絶対間違わないこと(私はここでハマった…)。

プロビジョニングエラーとなる原因についてはこちらの記事がわかりやすい。

仮想マシンにおけるプロビジョニングの失敗エラーについて 

イメージからVM作成。

イメージの生成に成功したら、イメージからVMを作成しよう。

2019,アジュール,azure,とは,VHD,download,AZCOPY,Cドライブ,移行,microsoft,portal,powershell,OS,server,クラウド,ポータル,VM作成3

ネットワーク速度にもよるが、結構VM作成に時間がかかりました(3,40分くらい)。

私ははじめ「プロビジョニング失敗」と通知があったが、なぜかVMの状態は実行中だし、ブート診断でスクショを確認しても正常に起動しているように見えた。

2019,アジュール,azure,とは,VHD,download,AZCOPY,Cドライブ,移行,microsoft,portal,powershell,OS,server,クラウド,ポータル,VM作成5

ブート診断で画面確認。

というわけで、以下のVMのネットワーク設定をして、RDP接続後ログインができ、VM作成に成功した。

ネットワーク設定。

ネットワーク設定をしたら、VMの再起動ネットワークが適用されます。

ポート3389を追加する。

ポート3389を追加する。

RDP接続確認。

いよいよVMにログインできるか確認するために、RDP接続しよう。

2019,アジュール,azure,とは,VHD,download,AZCOPY,Cドライブ,移行,microsoft,portal,powershell,OS,server,クラウド,ポータル,VM作成6

RDP接続しよう。

Hyper-Vの仮想マシン(vhd(第2世代))をAzureへOS移行する際のまとめ。

・移行元のWindows構成の設定時、Sysprepは行わない。

・vhdxからvhdに変換は「容量固定」で行う。

・VM作成はイメージから行う。(世代指定(Gen)をよく確認)

以上、『Hyper-Vの仮想マシン(vhd(第2世代))をAzureへOS移行の仕方』をピックアップしました!

Azureの理解を深めたい場合は専門の書籍を購入しよう。

今回行った作業は特殊なケースなのか、本屋でAZURE関連の本を立ち読みしても触れられていなかったです( ;∀;)。

今日も最後まで読んでいただきありがとうございました!

Hyper-Vで発生したエラーについてはこちらの記事参照。



スポンサーリンク

シェアしていただけると励みになります

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク