AzureプライベートクラウドのVMバックアップ設定|Azure Backupで世代管理を構成する

運営:リナックスマスター.JP(代表 宮崎智広)
HOME > Linux技術 リナックスマスター.JP(Linuxマスター.JP) > Azure > AzureプライベートクラウドのVMバックアップ設定|Azure Backupで世代管理を構成する
「バックアップを設定しているのに、障害が起きたら1週間前の状態にしか戻せなかった。」
こんな状況は、世代管理の設定が不十分な場合によく起きます。

Azureのプライベートクラウド(VNet内のVM)でも、Azure Backupを使えばデイリー・ウィークリー・マンスリーの世代管理を体系的に構成できます。

この記事では、Recovery ServicesコンテナーとAzure Backupを使い、VMバックアップの世代管理ポリシーを設定する手順を解説します。
プライベートエンドポイントを使ってバックアップ通信をVNet内に閉じる構成も取り上げます。

想定環境は、Azure VNet上のLinux VM(Ubuntu 22.04 LTS ~ RHEL 9系)です。

この記事のポイント

・Recovery Servicesコンテナーの作成からVMの保護設定まで手順を解説
・デイリー・ウィークリー・マンスリーの世代管理ポリシーをJSONで定義できる
・プライベートエンドポイントでバックアップ通信をVNet内に閉じる方法も説明
・よくある失敗エラーと対処法もまとめて紹介


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Azure BackupとRecovery Servicesコンテナーの基本

Azure Backupは、VMのバックアップデータをRecovery Servicesコンテナーで管理するサービスです。
スナップショット方式とは異なり、バックアップデータをAzure管理のストレージに長期保持できる点が特徴です。

Azureのプライベートクラウド構成では、VMはVNet内に配置され、パブリックなエンドポイントへの通信を制限していることが多くあります。
そのため、Azure Backupをプライベートクラウドで使う場合は、プライベートエンドポイントの設定を合わせて行うことが推奨されています。

コスト設計に不安がある場合は、Azureの実践セミナーで料金体系の全体像から学ぶのも有効です。

Recovery Servicesコンテナーを作成する

1. リソースグループとコンテナーの作成

az CLI(Azure CLI)でRecovery Servicesコンテナーを作成します。
事前に `az login` でサインインしておいてください。

# リソースグループを作成する az group create \ --name rg-backup-demo \ --location japaneast # Recovery Servicesコンテナーを作成する az backup vault create \ --resource-group rg-backup-demo \ --name rsv-backup-demo \ --location japaneast

出力例(環境により異なります):

{ "name": "rsv-backup-demo", "type": "Microsoft.RecoveryServices/vaults", "location": "japaneast", "properties": { "provisioningState": "Succeeded" } }

`provisioningState` が `Succeeded` になれば、コンテナーの作成は完了です。

2. バックアップポリシーの設定(世代管理)

Azure Backupの世代管理は、バックアップポリシーで定義します。
デイリー・ウィークリー・マンスリーの保持期間を組み合わせたカスタムポリシーを作成します。

まず、既定のポリシー一覧を確認します。

# 既定ポリシーの一覧を確認する az backup policy list \ --resource-group rg-backup-demo \ --vault-name rsv-backup-demo \ --query "[].name" \ --output tsv

出力例(環境により異なります):

DefaultPolicy EnhancedPolicy

`DefaultPolicy` の保持設定は「デイリー30日間」が既定です。
本番環境では、週次・月次の世代も保持するカスタムポリシーの作成をお勧めします。

次のJSONファイル(policy.json)を作成してから、カスタムポリシーを登録します。

# policy.json を作成する cat > policy.json << 'EOF' { "schedulePolicy": { "schedulePolicyType": "SimpleSchedulePolicy", "scheduleRunFrequency": "Daily", "scheduleRunTimes": ["2026-01-01T23:00:00Z"] }, "retentionPolicy": { "retentionPolicyType": "LongTermRetentionPolicy", "dailySchedule": { "retentionTimes": ["2026-01-01T23:00:00Z"], "retentionDuration": { "count": 30, "durationType": "Days" } }, "weeklySchedule": { "daysOfTheWeek": ["Sunday"], "retentionTimes": ["2026-01-01T23:00:00Z"], "retentionDuration": { "count": 12, "durationType": "Weeks" } }, "monthlySchedule": { "retentionScheduleFormatType": "Weekly", "retentionScheduleWeekly": { "daysOfTheWeek": ["Sunday"], "weeksOfTheMonth": ["First"] }, "retentionTimes": ["2026-01-01T23:00:00Z"], "retentionDuration": { "count": 12, "durationType": "Months" } } } } EOF # カスタムポリシーを登録する az backup policy create \ --resource-group rg-backup-demo \ --vault-name rsv-backup-demo \ --name CustomRetentionPolicy \ --policy @policy.json \ --backup-management-type AzureIaasVM

この設定で構成される世代管理のポリシーは次のとおりです。

・デイリー: 毎日バックアップ、30日間保持
・ウィークリー: 毎週日曜日バックアップ、12週間保持
・マンスリー: 毎月第1日曜日バックアップ、12ヶ月保持

3. VMにバックアップポリシーを適用する

作成したポリシーを対象のVMに適用します。

# バックアップ対象VMのリソースIDを取得する VM_ID=$(az vm show \ --resource-group rg-vm-demo \ --name vm-linux-demo \ --query id \ --output tsv) # VMのバックアップを有効にする az backup protection enable-for-vm \ --resource-group rg-backup-demo \ --vault-name rsv-backup-demo \ --vm "$VM_ID" \ --policy-name CustomRetentionPolicy

出力例(環境により異なります):

{ "properties": { "entityFriendlyName": "vm-linux-demo", "operation": "ConfigureBackup", "status": "Completed", "startTime": "2026-11-11T05:30:00Z" } }

`status` が `Completed` になれば、バックアップの設定は完了です。

バックアップの実行と世代確認

1. 初回バックアップをオンデマンドで実行する

ポリシーを適用しただけでは、スケジュール時刻まで初回バックアップは実行されません。
初回は手動で実行して、バックアップが正常に動作することを確認してください。

# コンテナー内のバックアップアイテム名を確認する az backup item list \ --resource-group rg-backup-demo \ --vault-name rsv-backup-demo \ --workload-type VM \ --query "[].name" \ --output tsv # オンデマンドバックアップを実行する # --item-name と --container-name は上記の出力を参照 az backup protection backup-now \ --resource-group rg-backup-demo \ --vault-name rsv-backup-demo \ --item-name "vm;iaasvmcontainerv2;rg-vm-demo;vm-linux-demo" \ --container-name "iaasvmcontainerv2;rg-vm-demo;vm-linux-demo" \ --retain-until 2027-01-01 \ --backup-management-type AzureIaasVM

2. バックアップジョブの完了を確認する

バックアップジョブの状態を確認します。

# 最新のバックアップジョブを確認する az backup job list \ --resource-group rg-backup-demo \ --vault-name rsv-backup-demo \ --query "[0].{Status:properties.status,Operation:properties.operation}" \ --output table

出力例(環境により異なります):

Status Operation --------- --------- Completed Backup

`Status` が `Completed` になれば、バックアップは正常に完了しています。

3. 復元ポイントの一覧を確認する

世代管理が正しく機能しているか、復元ポイントの一覧で確認します。

# 復元ポイントの一覧を確認する az backup recoverypoint list \ --resource-group rg-backup-demo \ --vault-name rsv-backup-demo \ --item-name "vm;iaasvmcontainerv2;rg-vm-demo;vm-linux-demo" \ --container-name "iaasvmcontainerv2;rg-vm-demo;vm-linux-demo" \ --workload-type VM \ --query "[].{Name:name, RecoveryPointTime:properties.recoveryPointTime}" \ --output table

出力例(環境により異なります):

Name RecoveryPointTime --------------------- ------------------------- 7391572481697 2026-11-11T05:32:10+00:00

復元ポイントが一覧に表示されていれば、世代管理は正常に機能しています。

プライベートエンドポイントでバックアップ通信を閉じる

プライベートクラウド構成では、バックアップ通信をVNet内に閉じるためにプライベートエンドポイントを設定します。
NSGでインターネット向き通信をブロックしている環境では、この設定が必要になります。

# Recovery ServicesコンテナーのリソースIDを取得する VAULT_ID=$(az backup vault show \ --resource-group rg-backup-demo \ --name rsv-backup-demo \ --query id \ --output tsv) # プライベートエンドポイントを作成する az network private-endpoint create \ --name pe-backup-demo \ --resource-group rg-backup-demo \ --vnet-name vnet-demo \ --subnet subnet-private \ --private-connection-resource-id "$VAULT_ID" \ --group-id AzureBackup \ --connection-name backup-pe-connection

プライベートエンドポイントを作成すると、VMからのバックアップ通信はVNet内で完結します。
作成後、プライベートDNSゾーン(privatelink.backup.windowsazure.com)の登録も必要です。
Portalの「プライベートエンドポイント」→「DNS の設定」から自動構成できます。

トラブルシューティング

1. バックアップジョブが「Failed」になる

バックアップジョブが失敗した場合は、ジョブ詳細でエラーコードを確認します。

# 失敗ジョブのエラー詳細を確認する az backup job list \ --resource-group rg-backup-demo \ --vault-name rsv-backup-demo \ --status Failed \ --query "[0].properties.errorDetails" \ --output json

よくあるエラーコードと対処法です。

・`UserErrorGuestAgentStatusUnavailable`:VM内のAzure Guest Agentが停止しています。VMにSSHしてサービスの状態を確認し、再起動してください
・`ExtensionSnapshotFailedNoNetwork`:NSGやファイアウォールでバックアップ用エンドポイントへの通信がブロックされています。プライベートエンドポイントの設定を確認してください

2. 復元ポイントが期待どおりに保持されない

世代管理ポリシーの設定後、復元ポイントがすぐに複数件表示されないことがあります。
スケジュール時刻(`scheduleRunTimes`)はUTC表記で指定するため、JSTとの9時間の差に注意してください。

UTC 23:00はJST換算で翌日08:00です。
「翌朝08:00ごろにバックアップが完了する」と把握しておくと分かりやすいです。

本記事のまとめ

AzureプライベートクラウドでVMバックアップの世代管理を構成する手順をまとめます。
やりたいこと コマンド
Recovery Servicesコンテナーを作成する az backup vault create
世代管理ポリシーを登録する az backup policy create --policy @policy.json
VMにポリシーを適用する az backup protection enable-for-vm
オンデマンドバックアップを実行する az backup protection backup-now
バックアップジョブの状態を確認する az backup job list
復元ポイントの一覧を確認する az backup recoverypoint list
Azure Backupの世代管理ポリシーを構成することで、「バックアップが取れているつもり」の状態を防ぐことができます。
まずは検証環境でカスタムポリシーを構成し、復元ポイントが正しく作成されることを確認してから本番環境に適用してください。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、
Azure環境でのLinuxサーバー構築から運用管理まで体系的に学べるセミナーを開催しています。
詳細はこちら>> Azureハンズオンセミナー

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録

運営

リナックスマスター.JP(代表 宮崎智広)

株式会社イーネットマーキュリーが運営するLinux教育サイトです。代表の宮崎智広は現役のLinuxサーバー管理者として20年以上の実務経験を持ち、累計3,100名以上のエンジニアを指導してきました。実践型のLinuxセミナーや無料マニュアルの配布を通じてLinux人材の育成に取り組んでいます。