LoginSignup
4
2

Azure Disk BackupのGRS構成 (スナップショットのリージョン間コピー) について

Last updated at Posted at 2023-02-09

駆け出しアーキテクトのやまぱんです。
今回はAzure Disk BackupのGRS構成 (スナップショットのリージョン間コピー) についてお伝えします。

リージョン間のスナップショットのコピー方法として、VHDエクスポート編スナップショット移動編を記載してますがスナップショット移動編の方がVHDに変換しなくてよく、スナップショットリソースのまま行える分比較的楽かと思います。

Azure Disk BackupのGRS構成 (スナップショットのリージョン間コピー) について

【前座】そもそも Azure Disk Backup ってなにか

Azure Disk Backup とは

Azure Disk Backup とはマネージドディスクのスナップショットの取得を自動で取得、および保持期間に従って削除、管理するソリューションです。簡単にいうと、マネージドディスクの増分スナップショットの取得および管理を自動で行ってくれるソリューションになります。
Azure Disk Backup一回あたりのバックアップ ジョブ時間は数分で終わることがほとんどです。
なお、後述のスナップショットリソースの一覧にはバックアップ ジョブ終了後、数分~20分ほどすると確認できるようになります。
2023-02-11_02h27_58.png

  • 手動でマネージドディスクの増分スナップショットを取得するイメージ図
    image.png

・仮想ハード ディスクのスナップショットを作成する(手動でマネージドディスクのスナップショットを取得する方法)
https://learn.microsoft.com/ja-jp/azure/virtual-machines/snapshot-copy-managed-disk?tabs=portal

  • 参考: Azure Portal からみたAzure Disk Backupによるスナップショットと手動で取得したスナップショット
    タグ [Createdby:AzureBackup] がついているものがAzure Disk Backupによって取得されたバックアップ(スナップショット)です。
    また、AzureBackup_738bec5f-5722-4579-91f2-aff17d940ef5_2023-02-09T09-26-47.3096919 のように、Azure Disk Backupで取得されたスナップショットには ”AzureBackup_” が接頭辞として付与されています。
    2023-02-09_20h05_49.png

Azure VM Backup とAzure Disk Backup の違い

またAzure Disk Backup は Azure VM バックアップのように Azure VM 単位でバックアップを構成するものではなく、あくまでマネージドディスク単位でバックアップを構成するものです。
また大きな違いとしては、Azure VM Backup が Azure VM の OS 内部と連携して整合性を担保するのに対して、Azure Disk Backup はあくまでディスクに対するバックアップソリューションであるため、 Azure VM の OS の状態を考慮しません。(Azure VM にアタッチされているかどうかも考慮しません。)

上記のことをドキュメントでは下記のように表現しています。

1 日に複数のバックアップをサポートする増分スナップショットを使用してマネージド ディスクの特定時点のバックアップを作成する、クラッシュ整合性バックアップ ソリューションです。 また、エージェントレスのソリューションでもあり、運用アプリケーションのパフォーマンスに影響しません。 実行中の Azure 仮想マシンに OS とデータ ディスク (共有ディスクを含む) が現在接続されているかどうかにかかわらず、この両方のバックアップと復元がサポートされます。

クラッシュ整合性、およびその他のAzure VM Backup やAzure Disk Backup の整合性に関しては下記のサポートブログの方に詳しく記載されていますのでご参考になれば幸いです。

また後述する冗長性の違いもあります。
これらの違い(整合性の違い、冗長性の違い、バックアップ取得単位の違い) から個人的には Azure VM のバックアップにおいて、Azure VM Backupで要件を満たせる場合は、あえてAzure Disk Backupを使わずAzure VM Backupを使った方が良いかと思います。

そもそもなぜこういう話がでるか

何らかの要件によりAzure VM Backup ではなく、Azure Disk Backup の利用を検討している際によくGeo 冗長を持たせたいというお話があります。
しかしながら、Azure Disk Backup は Azure VM Backup とは異なり、 バックアップしたデータの冗長性に Geo 冗長を持たせることはできません。具体的には ZRS に対応しているリージョンであれば ZRS、そうでない場合は LRS となります。

Azure Disk Backup のバックアップ (スナップショット)は GRS 冗長性をもたせることができない。
また、手動で取得したマネージドディスクのスナップショットにおいても同様です。

Azure ディスク バックアップでは、運用層のバックアップのみがサポートされています。 コンテナー ストレージ層へのバックアップのコピーは現在サポートされていません。 バックアップ コンテナーのストレージ冗長設定 (LRS または GRS) は、運用層に格納されているバックアップには適用されません。
増分スナップショットは、選択された親ディスクのストレージの種類に関係なく、Standard HDD ストレージに格納されます。 ゾーン冗長ストレージ (ZRS) をサポートするリージョンでは、信頼性を向上させるため、増分スナップショットが既定で ZRS に保存されます。

Azure Disk Backup で取得したバックアップ (実態はマネージドディスクのスナップショット) に Geo 冗長 (GRS) をもたせるにはひと手間が必要です。

【本題】Azure Disk Backup にGRS冗長性を持たせる方法とそのリストア方法① (VHDエクスポート編)

Azure Disk Backup にGRS冗長性を持たせる方法としては、Azure Disk Backup のデータの実態であるマネージドディスクのスナップショットを別リージョンにコピーする方法があります。
ただし、スナップショットリソースそのままでは移動 / エクスポートできないので VHD の形で別リージョンでエクスポートし保持することになります。
こちら後日確認した結果スナップショットリソースのまま別リージョンへ移動することが可能でしたのでそちらの方法も(スナップショット移動編 で後述しております。

例として、東日本リージョンで作成したデータディスクのスナップショット(Azure Disk Backup のバックアップデータの実態) を西日本リージョンにコピー(VHDエクスポート)します。

1.Azure Disk Backup にGRS冗長性を持たせる方法

スナップショットを別リージョンのストレージ アカウントに VHD として エクスポートします。
今回は、Azure PowerShell をWindows 環境 で PowerShellインターフェースを用いて実施しました。

対象のスナップショット:AzureBackup_738bec5f-5722-4579-91f2-aff17d940ef5_2023-02-09T09-26-47.3096919
東日本リージョン(Japan East)にあることが分かります。
image.png

コマンド

PowerShell (Azure PowerShell)

#Provide the subscription Id of the subscription where snapshot is created
$subscriptionId = "yourSubscriptionId"

#Provide the name of your resource group where snapshot is created
$resourceGroupName ="yourResourceGroupName"

#Provide the snapshot name 
$snapshotName = "yourSnapshotName"

#Provide Shared Access Signature (SAS) expiry duration in seconds e.g. 3600.
#Know more about SAS here: https://docs.microsoft.com/en-us/Az.Storage/storage-dotnet-shared-access-signature-part-1
$sasExpiryDuration = "3600"

#Provide storage account name where you want to copy the snapshot. 
$storageAccountName = "yourstorageaccountName"

#Name of the storage container where the downloaded snapshot will be stored
$storageContainerName = "yourstoragecontainername"

#Provide the key of the storage account where you want to copy snapshot. 
$storageAccountKey = 'yourStorageAccountKey'

#Provide the name of the VHD file to which snapshot will be copied.
$destinationVHDFileName = "yourvhdfilename(.vhd)"


# Set the context to the subscription Id where Snapshot is created
Select-AzSubscription -SubscriptionId $SubscriptionId

#Generate the SAS for the snapshot 
$sas = Grant-AzSnapshotAccess -ResourceGroupName $ResourceGroupName -SnapshotName $SnapshotName  -DurationInSecond $sasExpiryDuration -Access Read
#Create the context for the storage account which will be used to copy snapshot to the storage account 
$destinationContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey

#Copy the snapshot to the storage account 
Start-AzStorageBlobCopy -AbsoluteUri $sas.AccessSAS -DestContainer $storageContainerName -DestContext $destinationContext -DestBlob $destinationVHDFileName
実行結果

実行自体はすぐに終わりました。
実行参考画面
image.png

移行後のストレージ アカウント
西日本リージョン (Japan west) にあるストレージ アカウントのなかのコンテナーのなかに VHD が作成されていることが分かります。
image.png

別リージョンの VHD からのマネージドディスクのリストア方法

シナリオによって大きく2つのパターンがあると思います
今回のオリジナルリージョンは東日本リージョン(Japan East)、別リージョンは西日本リージョン(Japan West)です。
どちらの方法もまず、マネージドディスクに変換する必要があります。

  • そのまま別リージョンでリストアする方法
  • オリジナルのリージョンでリストアする方法

VHD から マネージドディスクを作成(リストア)したあとは、任意の Azure VM にアタッチするなどしてファイルを取り出したり、破損したディスクとスワップするなどすることが可能です。

2.別リージョン(西日本)でリストアする方法

別リージョンに作成した VHD からマネージドディスクを作成するには下記を参考にAzure PowerShellを利用します。
具体的にはまず、VHDからスナップショットを作成して、スナップショットからマネージドディスクを作成します
対象の VHD は先ほどの手順で西日本リージョンに作成した、下記の名前のVHDです。
jpw_VHD_AzureBackup_738bec5f-5722-4579-91f2-aff17d940ef5_2023-02-09T09-26-47.3096919

2.1 VHD からスナップショットを作成する

下記のURLを参考にVHDからスナップショットを作成することができます。
ただし、$storageType = 'Standard_LRS' のように "_" を入れなければコマンドが通りません。

PowerShell (Azure PowerShell)
#Provide the subscription Id where snapshot will be created
$subscriptionId = 'yourSubscriptionId'

#Provide the name of your resource group where snapshot will be created. 
$resourceGroupName ='yourResourceGroupName'

#Provide the name of the snapshot
$snapshotName = 'yourSnapshotName'

#Provide the storage type for snapshot. PremiumLRS or StandardLRS.
#Docsのサンプルスクリプトでは _ が抜けていましたが入れることでコマンドが通ります。
$storageType = 'Standard_LRS'

#Provide the Azure region (e.g. westus) where snapshot will be located.
#This location should be same as the storage account location where VHD file is stored 
#Get all the Azure location using command below:
#Get-AzLocation
$location = 'westus'

#Provide the URI of the VHD file (page blob) in a storage account. Please not that this is NOT the SAS URI of the storage container where VHD file is stored. 
#e.g. https://contosostorageaccount1.blob.core.windows.net/vhds/contosovhd123.vhd
#Note: VHD file can be deleted as soon as Managed Disk is created.
$sourceVHDURI = 'https://yourStorageAccountName.blob.core.windows.net/vhds/yourVHDName.vhd'

#Provide the resource Id of the storage account where VHD file is stored. 
#e.g. /subscriptions/6582b1g7-e212-446b-b509-314e17e1efb0/resourceGroups/MDDemo/providers/Microsoft.Storage/storageAccounts/contosostorageaccount1
#This is an optional parameter if you are creating snapshot in the same subscription
$storageAccountId = '/subscriptions/yourSubscriptionId/resourceGroups/yourResourceGroupName/providers/Microsoft.Storage/storageAccounts/yourStorageAccountName'

#Set the context to the subscription Id where Managed Disk will be created
Select-AzSubscription -SubscriptionId $SubscriptionId

$snapshotConfig = New-AzSnapshotConfig -AccountType $storageType -Location $location -CreateOption Import -StorageAccountId $storageAccountId -SourceUri $sourceVHDURI 

New-AzSnapshot -Snapshot $snapshotConfig -ResourceGroupName $resourceGroupName -SnapshotName $snapshotName
実行結果

image.png
処理自体は一分もかからない程度で完了しました。

実行時間についてはあくまでも参考程度です。
明確な実行時間に関する SLA などはありません。

  • Azure Portal で確認
    見やすいように元の東日本リージョンのスナップショットも並べて表示しています。
    無事に西日本リージョンにエクスポートしたVHDからスナップショットが作成されていることがわかります。
    image.png
2.2 スナップショットからディスクを作成する

Azure Portal から下記のようにマネージドディスクを作成することが可能です。
image.png

Azure PowerShell を利用する手順については下記をご覧ください。
https://learn.microsoft.com/ja-jp/azure/virtual-machines/scripts/virtual-machines-powershell-sample-create-managed-disk-from-snapshot?toc=%2Fpowershell%2Fmodule%2Ftoc.json

VHD から マネージドディスクを作成(リストア)したあとは、任意の Azure VM にアタッチするなどしてファイルを取り出したり、破損したディスクとスワップするなどすることが可能です。

3.オリジナルリージョン(東日本)でリストアする方法

こちらは 2.別リージョン(西日本)でリストアする方法 で作成したスナップショットから、1.Azure Disk Backup にGRS冗長性を持たせる方法 を用いてオリジナルリージョン(東日本)にVHDをエクスポートし、再び2.別リージョン(西日本)でリストアする方法でリストアする方法を参考にしていただくことで可能です。

【本題】Azure Disk Backup にGRS冗長性を持たせる方法とそのリストア方法② (スナップショット移動編)

例として、東日本リージョンで作成したデータディスクのスナップショット(Azure Disk Backup のバックアップデータの実態) を西日本リージョンにコピー(スナップショットリソースのまま)します。
前述の方法に比べて、VHDへのエクスポート(リソースの変換)の手間がない分こちらの方が簡単です。
なお、ソースのスナップショットがフルスナップショットの場合はこちらの方法は利用できません。(別リージョンにコピーするのは "スナップショットリソースの種類"が"増分スナップショット"のみです。"スナップショットリソースの種類"が"フルスナップショット"の場合はリージョンは変更することができません。 )
しかし、Azure Disk Backup によって取得されるスナップショットは増分スナップショットなのでこちらの方法で対応可能です。

・マネージド コピー - 増分スナップショットを新しいリージョンにコピーする
https://learn.microsoft.com/ja-jp/azure/virtual-machines/disks-copy-incremental-snapshot-across-regions?tabs=azure-portal#managed-copy

1.Azure Disk Backup にGRS冗長性を持たせる方法

スナップショットを別リージョへスナップショットリソースのままコピーします。
今回は、Azure Portal を用いて実施します。
Azure CLI やAzure PowerShell を用いた方法は上記 Docs をご覧ください。

別リージョンへ増分スナップショットをコピーする

image.png

そのまま、進む。
名前を任意の名前にして、スナップショットの種類を増分にして地域(リージョン)をJapanWestを選択します。
フルを選択した場合はリージョンの変更ができません。
image.png

実行結果

1 分程度でコピーしたスナップショットリソースが確認できるようになります。
赤枠が Japan West に作成したリソースで、青枠がコピー元のソースのスナップショットです。
image.png

2.別リージョン(西日本)でリストアする方法

Azure Portal から下記のようにマネージドディスクを作成することが可能です。
image.png

もし、コピー完了直後で "ディスクの作成" がグレーアウトしている場合はしばらく待つとグレーアウトが解除されてクリック可能になります。
2023-02-11_04h46_56.png

これは内部的にデータの転送が行われているためです。
検証したところ、すぐにクリックできるものもありましたが最大 30 分ほどかかりました。
またこの表示がグレーアウトしてるかどうかが最も簡単なコピー完了したかの確認方法です。

Azure PowerShell を利用する手順については下記をご覧ください。
https://learn.microsoft.com/ja-jp/azure/virtual-machines/scripts/virtual-machines-powershell-sample-create-managed-disk-from-snapshot?toc=%2Fpowershell%2Fmodule%2Ftoc.json

スナップショット から マネージドディスクを作成(リストア)したあとは、任意の Azure VM にアタッチするなどしてファイルを取り出したり、破損したディスクとスワップするなどすることが可能です。

3.オリジナルリージョン(東日本)でリストアする方法

1.Azure Disk Backup にGRS冗長性を持たせる方法 を参考にメインリージョンに再度スナップショットをコピーし、コピーしたスナップショットから 2.別リージョン(西日本)でリストアする方法 を参考にディスクを作成していただければと思います。

共有ディスクでも上記手順は可能です。
スナップショットから共有ディスクを作る際には共有ディスクのオプションを設定する必要があります。
image.png

検証

念のためオリジナルリージョンのソーススナップショット、およびソースのディスクを削除した状態で、別リージョンへコピーしたスナップショットからディスクを作成できることも確認しました。

オリジナルリージョンのソーススナップショットおよびソースのディスクがなくても、別リージョンへコピーしたスナップショットからディスクを作成することが可能

4
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2