AzureでLinux VMを本番運用するなら、ディスク障害・OS破損・誤操作による削除などに備えたバックアップとリストアの手順を事前に確立しておく必要があります。ところが「Recovery Servicesコンテナーをどう作り、ポリシーを設定し、実際にVMを復元するまでの一連の流れ」を体系的に解説した日本語リソースは意外と少ない。リストアは練習なしにいきなり本番で実行するものではありません。
この記事では、Azure BackupによるLinux VMのバックアップとリストア(azure backup vm リストア)を、Recovery Servicesコンテナーの構築からVM復元テストまでハンズオン形式で解説します。RHEL 9.4の実機ログを交えて、コンテナー作成・ポリシー設定・手動バックアップ・復元確認まで一気にカバーします。
この記事のポイント
・azure backup vm リストアはRecovery Servicesコンテナーを起点に操作する
・az backup protection enable-for-vmでバックアップ保護を有効化できる
・VMリストアはディスク差し替え方式(新VMへの復元)で安全に行う
・復元テストは本番障害前に必ず実施しておくことが鉄則
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
Azure Backupとは何か——Recovery Servicesコンテナーの概要
Azure Backupは、Azureのマネージドバックアップサービスです。VM・Azure Files・Azure SQL Databaseなど複数のワークロードのバックアップを一元管理でき、オンプレミスのバックアップサーバーを用意する必要がありません。バックアップデータはAzureのストレージ(GRS/LRS)に暗号化して保存されます。バックアップの中核となるのが Recovery Servicesコンテナー(Recovery Services vault)です。コンテナーはバックアップデータの保存先であり、バックアップポリシーの管理単位でもあります。同一リージョン内の複数のVMを1つのコンテナーで管理できます。
Linux VMのバックアップは、VM内に自動インストールされる Azure VM Agent と Azure Backupエクステンション(VMSnapshot) を使って実行されます。バックアップ取得時の処理シーケンスは次の通りです。
・スナップショット取得(フェーズ1):VMを停止せずにOSディスク・データディスクのスナップショットを取得します(アプリ整合性スナップショットにも対応)
・データ転送(フェーズ2):スナップショットデータをRecovery Servicesコンテナーへ転送します
・バックアップ完了:リストアポイントが作成され、保持ポリシーに従って管理されます
バックアップの整合性レベルは「アプリケーション整合」「ファイルシステム整合」「クラッシュ整合」の3段階があります。LinuxのアプリケーションがAzure Backup対応のpre/postスクリプトを持っていない場合、デフォルトは「ファイルシステム整合」です。本番でDBを稼働させている場合は、アプリ整合スクリプトの導入を検討してください。
Recovery ServicesコンテナーをAzure CLIで作成する
1. 前提条件と実行環境
この記事の手順は以下の環境で動作確認しています。・RHEL 9.4(Azure VM、Standard_B2s)
・Azure CLI 2.61.0(az コマンド)
・リソースグループ: rg-linux-practice(japaneast)
・バックアップ対象VM: linuxvm-rhel94
Azure CLIのインストールと認証が済んでいない場合は、以下を実行してください。
# Azure CLI バージョン確認 $ az --version azure-cli 2.61.0 # サインイン済みアカウントの確認 $ az account show --query "{subscription:name, id:id}" -o table Name Id ---------------------------- ------------------------------------ My Azure Subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
2. Recovery Servicesコンテナーを作成する
コンテナーはバックアップ対象のVMと同じリージョンに作成する必要があります。異なるリージョンには配置できません。# Recovery Servicesコンテナーの作成 $ az backup vault create \ --resource-group rg-linux-practice \ --name rs-vault-linux-practice \ --location japaneast { "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/rg-linux-practice/providers/Microsoft.RecoveryServices/vaults/rs-vault-linux-practice", "location": "japaneast", "name": "rs-vault-linux-practice", "properties": { "provisioningState": "Succeeded" }, "sku": { "name": "Standard" }, "type": "Microsoft.RecoveryServices/vaults" } # 作成したコンテナーの一覧確認 $ az backup vault list \ --resource-group rg-linux-practice \ -o table Name ResourceGroup Location -------------------------- --------------------- ---------- rs-vault-linux-practice rg-linux-practice japaneast
注意: ストレージ冗長構成はバックアップアイテムを登録した後は変更できません。本番環境ではGRSの維持を推奨します。
# ストレージ冗長構成の確認 $ az backup vault backup-properties show \ --resource-group rg-linux-practice \ --name rs-vault-linux-practice \ -o table StorageModelType StorageType CrossRegionRestore ------------------ ------------- -------------------- GeoRedundant GeoRedundant Disabled
Linux VMのバックアップポリシーを設定する
3. 既存のバックアップポリシーを確認する
コンテナー作成直後は DefaultPolicy が自動的に用意されています。まずこれを確認します。# バックアップポリシーの一覧表示 $ az backup policy list \ --resource-group rg-linux-practice \ --vault-name rs-vault-linux-practice \ -o table Name WorkloadType BackupManagementType ------------- -------------- -------------------- DefaultPolicy VM AzureIaasVM # DefaultPolicyのスケジュール確認 $ az backup policy show \ --resource-group rg-linux-practice \ --vault-name rs-vault-linux-practice \ --name DefaultPolicy \ --query "properties.schedulePolicy" { "schedulePolicyType": "SimpleSchedulePolicy", "scheduleRunFrequency": "Daily", "scheduleRunTimes": [ "2024-01-01T19:00:00+00:00" ] }
4. バックアップ保護を有効化する
VMに対してバックアップ保護を有効化します。この操作でVM AgentとVMSnapshotエクステンションが自動インストールされます。# バックアップ対象VMのリソースIDを取得 $ VM_ID=$(az vm show \ --resource-group rg-linux-practice \ --name linuxvm-rhel94 \ --query id \ --output tsv) $ echo $VM_ID /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/rg-linux-practice/providers/Microsoft.Compute/virtualMachines/linuxvm-rhel94 # バックアップ保護の有効化 $ az backup protection enable-for-vm \ --resource-group rg-linux-practice \ --vault-name rs-vault-linux-practice \ --vm $VM_ID \ --policy-name DefaultPolicy { "name": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "properties": { "jobType": "AzureIaaSVMJob", "operation": "ConfigureBackup", "status": "Completed" } } # バックアップアイテムとして登録されたか確認 $ az backup item list \ --resource-group rg-linux-practice \ --vault-name rs-vault-linux-practice \ -o table Name WorkloadType ProtectionState --------------------------------------------------------------------- -------------- --------------- VM;iaasvmcontainerv2;rg-linux-practice;linuxvm-rhel94 VM IRPending
手動バックアップを実行してリストアポイントを作成する
5. バックアップジョブを手動実行する
スケジュールを待たずに即座にバックアップを取得する場合は `az backup protection backup-now` コマンドを使います。# 手動バックアップの実行(保持期限を30日後に設定) $ az backup protection backup-now \ --resource-group rg-linux-practice \ --vault-name rs-vault-linux-practice \ --container-name "IaasVMContainer;iaasvmcontainerv2;rg-linux-practice;linuxvm-rhel94" \ --item-name "VM;iaasvmcontainerv2;rg-linux-practice;linuxvm-rhel94" \ --retain-until $(date -d "+30 days" +%d-%m-%Y) \ --backup-management-type AzureIaasVM { "name": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "properties": { "jobType": "AzureIaaSVMJob", "operation": "Backup", "status": "InProgress", "startTime": "2026-07-13T04:15:30.123456+00:00" } }
6. バックアップジョブの完了を確認する
# ジョブ一覧でステータスを確認 $ az backup job list \ --resource-group rg-linux-practice \ --vault-name rs-vault-linux-practice \ -o table Name Operation Status StartTime ------------------------------------ --------- ---------- --------------------------- xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Backup Completed 2026-07-13T04:15:30+00:00 # ジョブ完了まで待機する(スクリプト自動化に便利) $ az backup job wait \ --resource-group rg-linux-practice \ --vault-name rs-vault-linux-practice \ --name xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx { "properties": { "operation": "Backup", "status": "Completed", "startTime": "2026-07-13T04:15:30.123456+00:00", "endTime": "2026-07-13T04:43:17.654321+00:00" } }
リストア手順に進む前に、Azure対応セミナーの情報をご確認ください。
Azure対応セミナーの詳細を見る >>
バックアップからLinux VMをリストアする(復元テスト)
azure backup vm リストアの手順は「リストアポイントの確認 → ディスクの復元 → 新VMへの接続確認」の3ステップで進めます。VMをそのまま上書き復元するオプション(既存VM置き換え)もありますが、本番環境では一度新VMに復元してデータを確認してから切り替える方式を推奨します。7. リストアポイントを確認する
# リストアポイント(復元ポイント)の一覧表示 $ az backup recoverypoint list \ --resource-group rg-linux-practice \ --vault-name rs-vault-linux-practice \ --container-name "IaasVMContainer;iaasvmcontainerv2;rg-linux-practice;linuxvm-rhel94" \ --item-name "VM;iaasvmcontainerv2;rg-linux-practice;linuxvm-rhel94" \ --backup-management-type AzureIaasVM \ -o table Name Time Consistency ------------------------------------ ------------------------- ---------------------- DefaultRangeRecoveryPoint N/A N/A xxxxxxxx20260713041500 2026-07-13T04:15:30+00:00 FileSystemConsistent # 使用するリストアポイント名を変数に格納 $ RP_NAME=xxxxxxxx20260713041500
8. ストレージアカウントを準備してディスクをリストアする
`az backup restore restore-disks` コマンドは、まずディスクVHDを指定のストレージアカウントに展開します。その後、展開したVHDを使って新しいVMを作成します。# リストア先のストレージアカウントを作成(既存のものでも可) $ az storage account create \ --name salinuxrestore01 \ --resource-group rg-linux-practice \ --location japaneast \ --sku Standard_LRS { "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/rg-linux-practice/providers/Microsoft.Storage/storageAccounts/salinuxrestore01", "name": "salinuxrestore01", "provisioningState": "Succeeded" } # ディスクをストレージアカウントへリストア $ az backup restore restore-disks \ --resource-group rg-linux-practice \ --vault-name rs-vault-linux-practice \ --container-name "IaasVMContainer;iaasvmcontainerv2;rg-linux-practice;linuxvm-rhel94" \ --item-name "VM;iaasvmcontainerv2;rg-linux-practice;linuxvm-rhel94" \ --rp-name $RP_NAME \ --storage-account salinuxrestore01 { "name": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy", "properties": { "jobType": "AzureIaaSVMJob", "operation": "Restore", "status": "InProgress" } } # リストアジョブの完了を待機 $ az backup job wait \ --resource-group rg-linux-practice \ --vault-name rs-vault-linux-practice \ --name yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
9. 復元されたディスクから新VMを起動してデータを確認する
リストアジョブ完了後、ストレージアカウントにVMテンプレート(JSON)とOSディスク(VHD)が展開されます。このテンプレートを使って新VMを起動します。# ストレージアカウントのコンテナー確認 $ az storage container list \ --account-name salinuxrestore01 \ --query "[].name" -o tsv backuprestoredisks-XXXXXXXXXXXXXXXXXX # コンテナー内のファイル一覧(VMテンプレートJSONが含まれる) $ az storage blob list \ --account-name salinuxrestore01 \ --container-name backuprestoredisks-XXXXXXXXXXXXXXXXXX \ --query "[].name" -o tsv linuxvm-rhel94_disk0_xxxxxxxxxxxxxxxx.vhd vm_deploy_linuxvm-rhel94.json # VMテンプレートをローカルにダウンロード $ az storage blob download \ --account-name salinuxrestore01 \ --container-name backuprestoredisks-XXXXXXXXXXXXXXXXXX \ --name vm_deploy_linuxvm-rhel94.json \ --file /tmp/vm_deploy_restore.json # テンプレートから新VMをデプロイ $ az deployment group create \ --resource-group rg-linux-practice \ --template-file /tmp/vm_deploy_restore.json { "properties": { "provisioningState": "Succeeded" } }
# 復元したVMのパブリックIPアドレスを確認 $ az vm list-ip-addresses \ --resource-group rg-linux-practice \ --name linuxvm-rhel94-Restored \ --query "[0].virtualMachine.network.publicIpAddresses[0].ipAddress" -o tsv 203.0.113.xx # SSHでログインしてOSのホスト名・ディスクを確認 $ ssh azureuser@203.0.113.xx "hostname && df -h / && cat /etc/redhat-release" linuxvm-rhel94 Filesystem Size Used Avail Use% Mounted on /dev/sda1 30G 5.8G 24G 20% / Red Hat Enterprise Linux release 9.4 (Plow)
Azure Backupのコスト最適化と保持ポリシーの設定
Azure Backupのコストは主に「保護するVMの数」と「バックアップデータの保存量(リストアポイントの保持期間)」で決まります。コスト最適化のポイントをまとめます。・保持期間の見直し:DefaultPolicyの日次30日・週次12週・月次60ヶ月はコストが高くなりやすいです。開発環境では日次7日のみに絞る運用も有効です
・ストレージ冗長構成の選択:本番ではGRS、DR不要の開発環境ではLRSを選ぶことでコストを削減できます
・スナップショットの保持日数:スナップショット層の保持は1~5日に短縮できます(デフォルトは2日)
カスタムポリシーをAzure CLIで作成するには、まずポリシーのJSONテンプレートを取得して編集します。
# 既存ポリシーのJSONを取得してカスタムポリシーのベースに使う $ az backup policy get-default-for-vm \ --resource-group rg-linux-practice \ --vault-name rs-vault-linux-practice > /tmp/custom_policy.json # custom_policy.jsonを編集して保持日数などを調整した後、新ポリシーとして登録 $ az backup policy create \ --resource-group rg-linux-practice \ --vault-name rs-vault-linux-practice \ --name ShortRetentionPolicy \ --policy @/tmp/custom_policy.json \ --backup-management-type AzureIaasVM
よくあるトラブルとその対処法
10. 「VMAgentPluginNotReachable」エラーが出る
バックアップジョブが失敗し、エラーコード VMAgentPluginNotReachable が表示される場合は、VMのAzure VM Agentが正常に動作していない可能性があります。# VM Agentのステータスを確認 $ az vm get-instance-view \ --resource-group rg-linux-practice \ --name linuxvm-rhel94 \ --query "instanceView.vmAgent.statuses" [ { "code": "ProvisioningState/succeeded", "displayStatus": "Ready", "level": "Info" } ]
# walinuxagent サービスのステータス確認と再起動 $ sudo systemctl status waagent $ sudo systemctl restart waagent
11. バックアップジョブが「Warning」で完了する
バックアップが「Completed with warnings」で終わる場合、多くのケースで 「一部のディスクが除外された」 か 「アプリ整合スクリプトのエラー」 が原因です。ジョブの詳細ログをAzure Portalで確認してエラーメッセージを特定してください。一時ディスク(/dev/sdb などの ephemeral disk)はデフォルトでバックアップから除外されます。これは正常動作です。/tmp パーティションが一時ディスク上にある場合、その内容は復元後には存在しません。
12. リストア後にSSHで接続できない
リストア後の新VMは、NSG(ネットワークセキュリティグループ)の設定によってSSHポート(22番)がブロックされている場合があります。また、新VMには元のVMとは異なるパブリックIPが割り当てられます。# 復元した新VMのパブリックIPを確認 $ az vm list-ip-addresses \ --resource-group rg-linux-practice \ --name linuxvm-rhel94-Restored \ -o table # NSGのインバウンドルールでSSHが許可されているか確認 $ az network nsg rule list \ --resource-group rg-linux-practice \ --nsg-name linuxvm-rhel94-Restored-nsg \ --query "[?destinationPortRange=='22']" \ -o table
本記事のまとめ
Azure BackupによるLinux VMのバックアップとリストアの主要なコマンドを以下にまとめます。| やりたいこと | コマンド |
|---|---|
| Recovery Servicesコンテナー作成 | az backup vault create --resource-group RG --name NAME --location LOC |
| バックアップポリシー一覧確認 | az backup policy list --resource-group RG --vault-name VAULT -o table |
| バックアップ保護の有効化 | az backup protection enable-for-vm --resource-group RG --vault-name VAULT --vm VM_ID --policy-name POLICY |
| 手動バックアップの実行 | az backup protection backup-now --resource-group RG --vault-name VAULT --container-name CONTAINER --item-name ITEM --retain-until DATE |
| バックアップジョブの待機 | az backup job wait --resource-group RG --vault-name VAULT --name JOB_NAME |
| リストアポイントの確認 | az backup recoverypoint list --resource-group RG --vault-name VAULT --container-name CONTAINER --item-name ITEM |
| ディスクをリストア | az backup restore restore-disks --resource-group RG --vault-name VAULT --container-name CONTAINER --item-name ITEM --rp-name RP --storage-account SA |
次に読む記事
・Azure BackupのカスタムポリシーとコストをAzure CLIで最適化する方法
・Azure Site Recoveryでリージョン間DR(災害復旧)を設計する方法
Azure対応セミナーの詳細を見る >>
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:Azure FilesをLinuxからマウントする方法|NFS・SMB共有の作成からfstabによる永続化まで
- 前のページへ:Azure Key Vaultの使い方入門|az keyvaultでLinux VMから秘密情報を安全に参照する手順
- この記事の属するカテゴリ:Azureへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます