Azure Backupでの仮想マシンの復元_非管理ディスクの場合と管理ディスクの場合

パーソルプロセス&テクノロジーの土山です。
Azure Backupにより定期的なスケジュールでバックアップを取得していた場合、仮想マシンの復元は非常に簡単に実施できます。
しかしながら、いざ障害時に「既存のVM」(同じ名前で同じ設定のVM)を復元しようとすると、情報が散乱していたり、操作を進めることが不安になったり、といろいろと時間がかかってしまうことがよくあります(経験談)特に非管理ディスクの場合、既存のVMを復元させる際に必ずPowershell操作が必要となり、手順も長くなります。管理ディスクの場合と非管理ディスクの場合それぞれで、同じ名前のVMを復元したい際の手順を本記事でまとめておきたいと思います。

非管理ディスク(unmanaged disks)VMの場合

全体の流れ
1.AzureBackupからディスクの復元を実施する
2.既存のVMを削除する
3.Powershellで仮想マシンを再作成する
4.データディスク追加
5.不要ディスク削除

注意点や分かり辛いと思うところ

・既存VMの復元にはPowershell操作が必要

非管理ディスク:具体的な手順はこちら

管理ディスク(managed disks)VMの場合

全体の流れ
1.AzureBackupから「既存を置換」オプションで復元を実施する
2.不要ディスク削除

注意点や分かり辛いと思うところ

・事前にVMの停止が必要
・「ステージングの場所」という一時的に使用されるストレージアカウントの指定が必要

管理ディスク:具体的な手順はこちら

以下にそれぞれの場合の具体的な手順を記載します。

手順:非管理ディスク(unmanaged disks)VMの場合

1.AzureBackupからディスクの復元を実施する

Recovery Serviceコンテナのバックアップアイテムから、リストア対象仮想マシンのバックアップアイテム をクリックし、以下画面で「VMの復元」をクリックします。

「復元ポイント」に復元したい仮想マシンバックアップの復元ポイントを指定し、「復元の種類」にて「ディスクの復元」を選択します。

※「データリストア」欄の「マネージドディスクまたはVMとして復元」を有効にすることで、マネージドディスクとして復元することも可能です。
参考:アンマネージドの VM およびディスクをマネージドとして復元する
※「構成の復元」欄の「既存を置換」がグレーアウトしているのは、このオプションが、「暗号化されたVM、 クラシック VM、アンマネージド VM、および一般化された VM」 ではサポートされていないからです。

続いて「ストレージアカウント」指定欄のプルダウンから、既存のストレージアカウントを指定します。
ここで指定したストレージアカウント配下にBackupで取得したディスクが復元されるので指定先のストレージアカウントを覚えておく必要があります。「元のVMのストレージアカウントを使用する」というチェックがデフォルトで有効であり、既存と同じストレージアカウントを選択するのがよいです。

ストレージアカウント指定後、「復元」をクリックし、復元を実行します。

復元がトリガーされるのでリストアジョブの終了を待機してください。

ディスクのリストア完了後、復元したディスクの情報を確認します。
リストアする際に指定したストレージアカウントの「コンテナ」をクリックします。

表示された一覧からリストアする際に作成されたコンテナをクリックします。この名前は自動で作成される為、「最終変更日時」がリストアを実行した時間かどうかや、リース状態が「利用可能」ステータスかどうかにより判断が可能です。
※リストアで自動的に作成されたコンテナは下記のように長い数字が付与されるので判断可能かと思います

名前に「osdisk」と表記されているvhdファイルをクリックします。
※VMに複数ディスクがアタッチされている場合、全てのディスクが指定ストレージアカウント配下に復元されまています。破線の「datadisk」と表記されているvhdファイルは、「4.データディスク追加」手順で使用します。また、カスタムVM作成用としてjsonファイルなども格納されています。必ず「osdisk」のvhdファイルを選択してください。

vhdファイルの詳細画面で「URL」欄の「クリップボードにコピー」するアイコンをクリックし、vhdのURL情報をコピーします。この情報はこの後Posershellでのデプロイ時に使用する為、テキストに保持しておいてください。

2.リストア対象VMの削除

リストア対象の仮想マシンを削除します。本オペレーションを実行しても、仮想マシンのディスクやNICが削除されるわけではなく、仮想マシンとしての入れ物が削除されるのみです。非管理ディスクで既存の仮想マシンを同じ名前で復旧させる場合、事前に仮想マシンの削除を実行するこの手順が必須となります。本番で実行するとなると恐ろしく思うかもしれませんが同じ名前の仮想マシンを復元する必要がある場合は、この手順を実行してください。
※異なる仮想マシンの名前でよければこの削除手順の必要はありません。そうすると、この記事での解説よりも他を参照された方がよいです。
該当仮想マシン上で「削除」をクリックし、確認のポップアップに対して「OK」をクリックする。

3.Powershellで仮想マシンを再作成する

以下サンプルスクリプトを参考に、1行づつ上から実行するのがよいです。
スクリプト全体で一度に実行しようとすると途中で何がエラーになったのか分かり辛い為、1行づつ順番に実行し、エラーが出れば都度対処するのがよいです。
Powershellは以下を参考に作成しています。
特殊化 VHD ファイルから ARM 環境へ仮想マシンをデプロイする Azure PowerShell

##################################################################
# ① ログイン処理
##################################################################
Connect-AzAccount
#ログイン先のサブスクリプション一覧表示
Get-AzSubscription
#表示結果から今回リストア作業を実行したいサブスクリプションを指定
Select-AzSubscription -SubscriptionId XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXXXXXXX
#意図したサブスクリプションが選択できているか、VM一覧を出力して確認
Get-AzVM

 

##################################################################
# ② 環境変数設定
##################################################################
# 可用性セットなどは無ければ指定不要
$ResourceGroupName = “リソースグループ名”
$Location = “リージョン”
$VhdUri = “OS ディスクの VHD フルパス”
$VmName = “仮想マシン名”
$VmSize = “仮想マシンサイズ”
$VnetName = “仮想ネットワーク名”
$SubnetName = “サブネット名”
$Nic1Name = “ネットワーク インターフェイス名”
$AvailabilitySetName = “可用性セット名”

# ——————————————————————
# 補足説明1

# $Location に設定する値は以下コマンドで確認可能
# Get-AzLocation


# 補足説明2

# $VmSize に設定する値は以下コマンドで確認可能
# GUI上の仮想マシンサイズに表記されているものとは異なり「Standard_」の形での指定
# 例
# 米国中央部
# Get-AzVMSize -Location “Central US”
# 東日本
# Get-AzVMSize -Location “japaneast”


# 補足説明3
# $VhdUri には、「1.AzureBackupからディスクの復元を実施する」にて確認した復元したディスク「osdisk」のURLを入力する
# ——————————————————————

 

 

注意:「仮想マシンのOSに応じて、「OSがWindowsの場合のコマンド」か「OSがLinuxの場合のコマンド」のどちらかを入力する」という箇所に注意してください。仮想マシンに応じてどちらかを指定してください。
##################################################################
# ③ 以降仮想マシンのデプロイ情報を構成していく
##################################################################
# 対象の仮想ネットワーク、サブネット情報を取得
$Vnet = Get-AzVirtualNetwork -ResourceGroupName $ResourceGroupName -Name $VnetName
$Subnet = Get-AzVirtualNetworkSubnetConfig -Name $SubnetName -VirtualNetwork $Vnet

# 対象の可用性セット情報を取得 (任意)
$AvailabilitySet = Get-AzAvailabilitySet -Name $AvailabilitySetName -ResourceGroupName $ResourceGroupName

# 仮想マシンの設定を定義
$VmConfig = New-AzVMConfig -Name $VmName -VMSize $VmSize
# 仮想マシンのOSに応じて、「OSがWindowsの場合のコマンド」か「OSがLinuxの場合のコマンド」のどちらかを入力する
# OSがLinuxの場合のコマンド
$VmConfig = Set-AzVMOSDisk -VM $VmConfig -VhdUri $VhdUri -Name “OSDisk” -CreateOption attach -Linux -Caching ReadWrite
# OSがWindowsの場合のコマンド
$VmConfig = Set-AzVMOSDisk -VM $VmConfig -VhdUri $VhdUri -Name “OSDisk” -CreateOption attach -Windows -Caching ReadWrite

# 可用性セット設定(任意)
$VmConfig.AvailabilitySetReference = $AvailabilitySet.Id

# 既存のNICを設定
$Nic1 = Get-AzNetworkInterface -ResourceGroupName $ResourceGroupName -Name $Nic1Name
$VmConfig = Add-AzVMNetworkInterface -VM $VmConfig -NetworkInterface $Nic1
$VmConfig.NetworkProfile.NetworkInterfaces.Item(0).Primary = $true

 

※この④の手順は確認の為だけに実行しています。$Vmconfigの中身に何が設定されているか、確認の必要がある場合のみチェックしてください
#################################################################

 ④ 確認
##################################################################
# $VmConfig に仮想マシンのデプロイ情報が設定されています。必要であればデプロイ前に設定された値について確認してください。
# 確認例:
# $VmConfig.NetworkProfile.NetworkInterfaces
# $VmConfig.StorageProfile.OsDisk.Vhd

 

############################################################
# ⑤ 仮想マシンを作成
##################################################################
# 仮想マシンは起動状態で復元される
New-AzVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $VmConfig -Verbose

 

############################################################
# ⑥ 仮想マシンリストア後、切断
##################################################################
Disconnect-AzAccount

以下に実際に使用したサンプルスクリプトを掲載しておきます。サブスクリプションID以外は全て実際にリストアで使用したパラメータです。


# ①ログイン処理
Connect-AzAccount
#ログイン先のサブスクリプション一覧表示
Get-AzSubscription
#表示結果から今回リストア作業を実行したいサブスクリプションを指定
$SubscriptionId = "123456-XXXXXXXX-XXXXXXXXXX-XXXXXXXXX"
Select-AzSubscription -SubscriptionId $SubscriptionId
#意図したサブスクリプションが選択できているか、VM一覧を出力して確認
Get-AzVM

# ②環境変数設定
# 可用性セットなどは無ければ指定不要
$ResourceGroupName = "Machida-RG"
$Location = "eastus2"
$VhdUri = "https://machidargdisks.blob.core.windows.net/centos7601-5903fa8d301d47bb88c6f23458bedc44/centos7601-osdisk-20210605-213213.vhd"
$VmName = "CentOS76-01"
$VmSize = "Standard_B2s"
$VnetName = "Machida-VNET"
$SubnetName = "SUBNET01"
$Nic1Name = "centos76-01321"
$AvailabilitySetName = "AVAIL-SET01"

# ③以降仮想マシンのデプロイ情報を構成していく
# 対象の仮想ネットワーク、サブネット情報を取得
$Vnet = Get-AzVirtualNetwork -ResourceGroupName $ResourceGroupName -Name $VnetName
$Subnet = Get-AzVirtualNetworkSubnetConfig -Name $SubnetName -VirtualNetwork $Vnet

# 対象の可用性セット情報を取得 (任意)
$AvailabilitySet = Get-AzAvailabilitySet -Name $AvailabilitySetName -ResourceGroupName $ResourceGroupName

# 仮想マシンの設定を定義
$VmConfig = New-AzVMConfig -Name $VmName -VMSize $VmSize
# Linux仮想マシンの場合、引数はLinuxにすること
$VmConfig = Set-AzVMOSDisk -VM $VmConfig -VhdUri $VhdUri -Name "OSDisk" -CreateOption attach -Linux -Caching ReadWrite

# 可用性セット設定(任意)
$VmConfig.AvailabilitySetReference = $AvailabilitySet.Id

# 既存のNICを設定
$Nic1 = Get-AzNetworkInterface -ResourceGroupName $ResourceGroupName -Name $Nic1Name
$VmConfig = Add-AzVMNetworkInterface -VM $VmConfig -NetworkInterface $Nic1
$VmConfig.NetworkProfile.NetworkInterfaces.Item(0).Primary = $true

# ④ 確認
# 適宜確認実施
# $VmConfig.NetworkProfile.NetworkInterfaces
# $VmConfig.StorageProfile.OsDisk.Vhd

# ⑤ 仮想マシンを作成
New-AzVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $VmConfig -Verbose

# ⑥切断
Disconnect-AzAccount

⑤ 「仮想マシンを作成」のコマンド部分で、以下のようにStatusCodeがOKで返ってくれば、正常終了です。
⑥の切断 処理を実行し、次の手順へ進んでください。

4.データディスク追加

リストアした仮想マシンの「ディスク」から「データディスクの追加」をクリックします。本手順はデータディスクの追加が必要な場合に行ってください。

「ソースの種類」のプルダウンから「既存のBLOB」を選択し、「参照」ボタンから接続したいデータディスク(※)を選択します。

※「1.AzureBackupからディスクの復元を実施する」の手順の中で確認た、リストアしたディスクの「datadisk」の方のディスクを指定してください。なお、リストアしたディスクを接続せず、データディスクのみ元のディスクを接続する、といったことも可能です。(OSディスクのみリストアし、データディスクは既存のものを使用する、といった復元が可能です)

5.不要ディスク削除

ストレージアカウント配下に、リストア前のvhdファイル、などは保持されたままですので、必要に応じて削除などを実施してください。
リース状態が「利用可能」となっていれば、ディスクは使用されておらず、削除が可能です。

非管理ディスクの復元手順は以上です。


手順:管理ディスク(managed disks)VMの場合

1.AzureBackupから「既存を置換」オプションで復元を実施する

管理ディスクの場合、手順は非常に簡単になります。
VMのリストア:既存のディスクの置き換え
に記載のとおりです。

まず、対象の仮想マシンを停止させます。停止させずに以下手順で復元しようとするとエラーとなります。

Recovery Serviceコンテナのバックアップアイテムから、リストア対象仮想マシンのバックアップアイテム をクリックし、以下画面で「VMの復元」をクリックします。

「復元ポイント」に復元したい仮想マシンバックアップの復元ポイントを指定し、「復元の構成」にて「既存を置換」を選択します。

続いて「ステージングの場所」欄のプルダウンから、一時的に使用するストレージアカウントを指定します。
「現在のマネージド ディスクのスナップショットを保存する場所」として指定し、一時的に利用されるのみで、このストレージアカウント配下にデータは残りません。

※「復元」実行時にリストア対象の仮想マシンが稼働していると以下のようにエラーが表示され、VMが稼働中であると通知されます。

復元がトリガーされると、以下のように「Restore」と「Backup」の2種類のジョブが同時に実行されます。既存(置き換え前の)仮想マシンのバックアップが自動で取得されます。

「Restore」の方のジョブが完了すれば、復元完了です。仮想マシンを起動可能です。
※「Backup」の方は時間がかかります。完了を待機する必要はありません。

2.不要ディスク削除

必要に応じてリストア前ディスクの削除を実施してください。管理ディスク一覧は、「ディスク」というリソースから一覧表示させることが可能です。

以上、管理ディスクの方の復元は非常に簡単です。

最後に

以上、非管理ディスクの場合と管理ディスクの場合それぞれで、Azure Backupから既存仮想マシンをリストアする手順を紹介しました。
管理ディスクであればリストアも非常に簡単なので、仮想マシンの作成は管理ディスクで実施することが必須でしょう。しかしながら、非管理ディスクの運用も継続する必要あり、且つ、管理ディスクへの変換も実施できないという環境もあると思います。そのような場合、本記事をうまく参照していただければと思います。

いいね (この記事が参考になった人の数:1)
(↑参考になった場合はハートマークを押して評価お願いします)
読み込み中...

注意事項・免責事項

※技術情報につきましては投稿日時点の情報となります。投稿日以降に仕様等が変更されていることがありますのでご了承ください。

※公式な技術情報の紹介の他、当社による検証結果および経験に基づく独自の見解が含まれている場合がございます。

※これらの技術情報によって被ったいかなる損害についても、当社は一切責任を負わないものといたします。十分な確認・検証の上、ご活用お願いたします。

※当サイトはマイクロソフト社によるサポートページではございません。パーソルプロセス&テクノロジー株式会社が運営しているサイトのため、マイクロソフト社によるサポートを希望される方は適切な問い合わせ先にご確認ください。
 【重要】マイクロソフト社のサポートをお求めの方は、問い合わせ窓口をご確認ください