Azure BackupでLinux VMをバックアップ・リストアする方法|Recovery Servicesコンテナーの構築と復元テスト

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Azure > Azure BackupでLinux VMをバックアップ・リストアする方法|Recovery Servicesコンテナーの構築と復元テスト
「Azure VMが壊れた。バックアップはあるけど、リストアの手順が分からない」——クラウドへの移行直後に初めて直面するインシデントの典型例です。

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への復元)で安全に行う
・復元テストは本番障害前に必ず実施しておくことが鉄則


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

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 AgentAzure 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(Geo-Redundant Storage:ペアリージョンへのレプリケーション) です。コスト削減を優先する場合はLRS(Locally-Redundant Storage)に変更できます。

注意: ストレージ冗長構成はバックアップアイテムを登録した後は変更できません。本番環境では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" ] }

DefaultPolicyは「毎日19:00 UTC(日本時間 翌4:00)」にバックアップを実行し、「日次30日・週次12週・月次60ヶ月」の保持ポリシーが設定されています。テスト用途ではDefaultPolicyをそのまま使い、本番では保持期間を調整したカスタムポリシーを作成することを推奨します。

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

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" } }

バックアップ完了後、ジョブのステータスが Completed に変わります。VMのサイズやディスク容量によって所要時間は変わりますが、初回は20分程度かかることが多いです。

リストア手順に進む前に、Azure対応セミナーの情報をご確認ください。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、20年以上の運用経験を持つ現役エンジニアが基礎から教えます。
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

FileSystemConsistent はLinuxのファイルシステムが整合した状態でバックアップされたことを示します。アプリケーション整合スクリプトを使用した場合は ApplicationConsistent と表示されます。

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が起動したら、SSHでログインしてデータの整合性を確認します。バックアップ取得時点のデータが正しく復元されていることを実際に確認することが、復元テストの目的です。

# 復元した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)

バックアップ時点のOSとデータが正常に復元できていることを確認できました。動作確認が完了したら、復元に使ったストレージアカウントとテスト用VMは削除してコスト最適化しましょう。

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" } ]

displayStatusReady 以外(例: NotReady)の場合は、VMにSSHでログインして walinuxagent サービスを確認します。

# 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 vm リストアの一連の手順を体系的に把握できたことで、本番障害時に焦ることなく対応できるはずです。特にリストア手順は定期的な復元テストを実施し、「実際に復元できる」ことを確認しておくことが重要です。バックアップポリシーの保持期間もVMの重要度に応じて最適化し、不要なコストを削減してください。

次に読む記事
・Azure BackupのカスタムポリシーとコストをAzure CLIで最適化する方法
・Azure Site Recoveryでリージョン間DR(災害復旧)を設計する方法
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、20年以上の運用経験を持つ現役エンジニアが基礎から教えます。
Azure対応セミナーの詳細を見る >>

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

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

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

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

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

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

登録10秒/合わなければ解除3秒 / 詳細はこちら

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

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。