Azure 仮想マシン (IaaS VM) のバックアップ方法について

こんにちは、Windows プラットフォーム サポートの世古です。

今回は仮想マシンをバックアップする手順についてご案内させていただきます。

## 追記## (2017年4月13日)
後述の内容につきましては、現在機能が追加され V2 の仮想マシンにおいても、IaaS バックアップがサポートされております。その為、V2 の仮想マシンのバックアップについては以下の公開情報をご参照ください。
Resource Manager でデプロイされた仮想マシンをバックアップする環境の準備
https://docs.microsoft.com/ja-jp/azure/backup/backup-azure-arm-vms-prepare
#######

現状 (2016年1 月 14 日) は V1 ”クラシック” の仮想マシンにおいては  IaaS バックアップが可能ですが、V2 の仮想マシンにおいては IaaS バックアップはサポートされておらず、VHD の情報をコピーして、その情報を基に復元する必要がございます。以下それぞれの手順についてご紹介させていただきます。

V1 の仮想マシンのバックアップ方法について
======================================================================
以下弊社公開情報より Azure Backup による Azure 上の仮想マシンのバックアップ手順が記載されております。画面ピクチャ付きの手順となりますので、以下の手順を参考に仮想マシンのバックアップを実施ください。

タイトル: Azure 仮想マシンのバックアップ
https://azure.microsoft.com/ja-jp/documentation/articles/backup-azure-vms/

事前準備および構成の計画については以下の URL をご参照ください。

タイトル: Azure 仮想マシンをバックアップする環境の準備
https://azure.microsoft.com/ja-jp/documentation/articles/backup-azure-vms-prepare/

タイトル: Azure における VM バックアップ インフラストラクチャの計画を立てる
https://azure.microsoft.com/ja-jp/documentation/articles/backup-azure-vms-introduction/

・リストアの手順について
============================================
以下の公開情報を参考に仮想マシンの復元を実行出来ます。

タイトル: Azure での仮想マシンの復元
https://azure.microsoft.com/ja-jp/documentation/articles/backup-azure-restore-vms/

・バックアップ データの削除方法について
============================================
以下の公開情報を参考に仮想マシンの登録を解除し、仮想マシンに関連付けられているバックアップ データを削除ください。

タイトル: 仮想マシンの保護を停止する
https://azure.microsoft.com/ja-jp/documentation/articles/backup-azure-manage-vms/\#-2

タイトル: バックアップ データの削除
https://azure.microsoft.com/ja-jp/documentation/articles/backup-azure-manage-vms/\#-5

V2 の仮想マシンのバックアップ方法について
======================================================================
V2 の仮想マシンについては、現状として IaaS のバックアップはサポートされておらず、VHD の情報をコピーして、その情報を基に復元する必要がございます。その為、後述の手順よりバックアップおよび復元を実施ください。

以下のコマンドレットは、VHD ファイルの Blob をコピーするコマンドレットであり、コピーを取得している期間中、対象の VHD ファイルの読み書きが発生します。そのため、オンラインでバックアップを実行した場合、データ内容に不整合が生じる可能性がございます。運用要件上、許容されるダウンタイムが少ない場合や、オンラインでバックアップを取得する必要がある場合は、事前に Blob のスナップショットを作成する方法が有効でございます。Blob のスナップショット作成手順も併せてご案内いたしますので、必要に応じご参照ください。

なお、SQL 等ファイル レベルではなくアプリケーション レベルでの整合性を必要とするデータをバックアップする場合、整合性を保てない状態でバックアップが取得される可能性があるため、対象の仮想マシンが停止している状態での実行を推奨します。

これらの方法にてコピーされた Blob から起動可能であることは確認しておりますが、ご利用の際には、リストアの手順も含めてお客様環境にて十分なテストを行った上で、運用に組み込んでいただきますようお願いいたします。

- 現在の仮想マシン データを別の VHD として保存します。
============================================
1.現在の仮想マシンの構成情報を確認します。
実行コマンド1 : $VMinfo = Get-AzureRmVM -Name ”仮想マシン名” -ResourceGroupName ”リソース グループ名”
例: $VMinfo = Get-AzureRmVM -Name 2008r2d1 -ResourceGroupName 2008r2d1
リソース グループ名については、新ポータルより ”仮想マシン” - ”対象の仮想マシン” を選択すると画面左上より確認出来ます。

実行コマンド2 : $VMinfo.StorageProfile.OSDisk.VirtualHardDisk.Uri

2.上記実行コマンド 2 より仮想マシンの OS ディスクの情報を確認します。

実行結果例:  https://2008r2d19472.blob.core.windows.net/vhds/2008R2D1.vhd

"コピー元ストレージ アカウント名" = 2008r2d19472
"コピー元コンテナー名" = vhds
"コピー元 Blob 名" =2008R2D1.vhd

3.Azure の新ポータルより、コピー元ストレージ アカウントのアクセス キーを確認します。
3.1 新ポータルより "ストレージ アカウント" を選択します。
3.2 対象のストレージ アカウントをクリックします。対象のストレージ アカウントは手順 2 で実行した "コピー元ストレージ アカウント名" と同様です。
3.3 画面中央部より鍵のマークをクリックします。
3.4 "KEY1" をメモします。

4.同じコンテナー上にデータをバックアップする場合には、コピー先およびコピー元は同じ情報を使用します。もし他のコンテナーや他の仮想マシンのコンテナーにバックアップする場合には、上記手順に従い、移行先の仮想マシンを対象に 1 ~ 3 の手順を実行します。

5.以下の 2 つコマンドを実行し、対象の仮想マシンの BLOB をコピーします。
- 仮想マシンの情報を記載し実行します。
$SourceStorageAccountName = "コピー元ストレージ アカウント名"
$SourceStorageAccountKey = "コピー元ストレージ アカウントのアクセス キー"
$SourceContainerName = "コピー元コンテナー名"
$SourceBlobName = "コピー元 Blob 名"
$DestStorageAccountName = "コピー先ストレージ アカウント名"
$DestStorageAccountKey = "コピー先ストレージ アカウントのアクセス キー"
$DestContainerName = "コピー先コンテナー名"
$DestBlobName = "コピー先 Blob 名 (任意)"
$Ctx = New-AzureStorageContext -StorageAccountName $SourceStorageAccountName -StorageAccountKey $SourceStorageAccountKey
$blob = Get-AzureStorageBlob -Context $Ctx -Container $SourceContainerName -Blob $SourceBlobName
$snap = $blob.ICloudBlob.CreateSnapshot()
$DestContext = New-AzureStorageContext -StorageAccountName $DestStorageAccountName -StorageAccountKey $DestStorageAccountKey

- BLOB のコピーを実施します。
Start-AzureStorageBlobCopy -SrcUri $snap.SnapshotQualifiedUri -SrcContext $Ctx -DestContext $DestContext -DestContainer $DestContainerName -DestBlob $DestBlobName

- バックアップした VHD を仮想マシンに接続します。
============================================
6.Azure の新ポータルの "仮想マシン" - ”すべての設定” - ”ディスク” を選択します。
7.画面上部より "既存のディスクの接続" を選択します。
8."必要な設定の構成" - ”対象のストレージ アカウント” - ”対象のコンテナー名” をクリックします。
9.コンテナーの画面より手順 5 にて指定した Blob 名 (DestBlobName) を選択し ”選択”をクリックします。(画面上に無い場合には ”更に読み込む” をクリックし、すべての表示します。)
10.”既存ディスクの接続” 画面より ”OK” をクリックします。

- バックアップした VHD よりデータを移行します。
============================================
11.仮想マシンを起動し接続します。
12.エクスプローラーを起動し、新しいディスクが接続されている事を確認します。(ドライブ レターが割り振られていない場合にはディスクの管理より設定ください。)
13.データを新しく接続したディスクから、既存のディスクにコピーします。

- 接続したディスクを取り外します。
============================================
14.仮想マシンをシャットダウンします。
15.Azure の新ポータルの左ペインより "仮想マシン" を選択します。
16.中央ペインより対象の仮想マシンを選択し ”すべての設定” - ”ディスク” をクリックします。
17.取り外すディスクをクリックします。
18.  画面上部より ”切断” をクリックし ”はい” をクリックします。

以上でデータ移行が完了します。