AzureのLinux VMスナップショットを作成・リストアする方法|azコマンドによるOSディスクバックアップとVM再作成の実践手順

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Azure > AzureのLinux VMスナップショットを作成・リストアする方法|azコマンドによるOSディスクバックアップとVM再作成の実践手順
「AzureのLinux VMの設定を変えたら起動しなくなった」「元の状態に戻したい」——こうした場面に役立つのがAzureのスナップショット機能です。

Azureのスナップショットはマネージドディスクの時点コピーをazコマンド1本で取得できる機能です。設定変更前の保険、検証VMの量産、障害発生時の即時切り戻しに使われます。Azure BackupのようにRecovery Servicesコンテナの事前設定が不要で、取得から数分でVMを丸ごと復元できます。

この記事では、azコマンドでLinux VMのOSディスクスナップショットを取得し、スナップショットから新規VMを起動するまでの実践手順を解説します。実行環境:Ubuntu 22.04 LTS / RHEL 9.4で動作確認済みです。

この記事のポイント

・ az snapshot create でマネージドディスクの時点コピーを即座に取得できる
・ スナップショットから az disk create でディスクを復元し VM へアタッチ可能
・ OSディスクのスナップショットを使えば VM 丸ごとの複製・復元ができる
・ Azure Backup との使い分け:スナップショットは即時・短期、Backup はポリシー管理・長期


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

スナップショットとAzure Backupの使い分けを整理する

両方ともディスクを保護する仕組みですが、設計思想が異なります。
比較軸 スナップショット Azure Backup
取得先 マネージドディスクの直接コピー Recovery Servicesコンテナ
操作 az snapshot create 1コマンド ポリシー設定・保護有効化が必要
向いている用途 設定変更前の保険、VM複製、即時切り戻し 定期バックアップ、長期保持、コンプライアンス対応
コスト スナップショット容量分のみ バックアップストレージ+管理コスト
復元速度 即時(同一リージョン内) ジョブ実行が必要(数分以上)
「nginx.confを大きく変更する前に一時保護したい」「検証VMを複製したい」という場面ではスナップショットが適しています。定期バックアップやスケジュール管理が必要な場合はAzure Backupを使います。

OSディスクのスナップショットを作成する

1. 対象VMのOSディスクIDを取得する

スナップショットの取得対象はVMではなく「マネージドディスク」です。まずVMに紐づくOSディスクのリソースIDを確認します。

# set these variables to match your environment # リソースグループ名とVM名は環境に合わせて変更する RG="myResourceGroup" VM_NAME="myLinuxVM" # OSディスクのリソースIDを取得 DISK_ID=$(az vm show \ --resource-group $RG \ --name $VM_NAME \ --query storageProfile.osDisk.managedDisk.id \ --output tsv) echo "OSディスクID: $DISK_ID"

実行例(出力):

OSディスクID: /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/myLinuxVM_OsDisk_1_xxxxxxxx

2. az snapshot create でスナップショットを作成する

OSディスクIDを使ってスナップショットを作成します。VMを停止せずに取得できますが、データ整合性が重要な場合は事前にVMをシャットダウンすることを推奨します。

# 日付をスナップショット名に含めると管理しやすい SNAPSHOT_NAME="${VM_NAME}-snap-$(date +%Y%m%d)" az snapshot create \ --resource-group $RG \ --name $SNAPSHOT_NAME \ --source $DISK_ID \ --sku Standard_LRS

--source:ディスクのリソースIDを指定する。既存スナップショットのIDを渡すとスナップショットからスナップショットを作成することも可能
--sku:Standard_LRS が最安。ゾーン冗長が必要な場合は Standard_ZRS を指定する
注意:データ整合性が重要な場合(DBが稼働中など)はVMをシャットダウンしてから取得してください。稼働中に取得したスナップショットは「クラッシュ整合性」であり、アプリケーション層での整合性は保証されません。

3. 取得したスナップショットを確認する

# スナップショットの取得状態を確認する az snapshot show \ --resource-group $RG \ --name $SNAPSHOT_NAME \ --query "{name:name, sizeGb:diskSizeGb, state:provisioningState, created:timeCreated}" \ --output table

実行例(出力):

Name SizeGb State Created ------------------------ -------- ---------- ------------------------ myLinuxVM-snap-20260819 30 Succeeded 2026-08-19T03:25:18.0Z

StateSucceeded になっていれば取得完了です。

現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、Azureの学習をもっと体系的に進めたいなら、Azure実践ハンズオン講座をご覧ください。現役エンジニアが教える実務直結カリキュラムで、VM構築からインフラ管理まで一気に習得できます。

データディスクのスナップショットを取得する

OSディスク以外にデータディスクがある場合、それぞれ個別にスナップショットを取得します。

# VMにアタッチされているデータディスク一覧を確認する az vm show \ --resource-group $RG \ --name $VM_NAME \ --query "storageProfile.dataDisks[].{lun:lun, name:name, id:managedDisk.id}" \ --output table # LUN 0のデータディスクIDを取得する DATA_DISK_ID=$(az vm show \ --resource-group $RG \ --name $VM_NAME \ --query "storageProfile.dataDisks[?lun==\`0\`].managedDisk.id | [0]" \ --output tsv) # データディスクのスナップショットを取得する az snapshot create \ --resource-group $RG \ --name "${VM_NAME}-data-snap-$(date +%Y%m%d)" \ --source $DATA_DISK_ID \ --sku Standard_LRS

LUNはアタッチ順(0から採番)です。データディスクが複数ある場合は lun の値を変えて同じ手順を繰り返します。

スナップショットから新規VMを復元する

OSスナップショットからVM丸ごとを復元するには、スナップショット→OSディスク→VMの順で作成します。

1. スナップショットからOSディスクを作成する

# スナップショットのリソースIDを取得する SNAP_ID=$(az snapshot show \ --resource-group $RG \ --name $SNAPSHOT_NAME \ --query id \ --output tsv) # スナップショットからOSディスクを作成する NEW_DISK_NAME="restored-osdisk-$(date +%Y%m%d)" az disk create \ --resource-group $RG \ --name $NEW_DISK_NAME \ --source $SNAP_ID \ --sku Standard_LRS \ --os-type Linux

【重要】 --os-type Linux を省略すると次のVM作成ステップで失敗します。スナップショットからOSディスクを作成する際は必ず指定してください。

2. az vm create でスナップショットから新規VMを起動する

# 既存VNetのサブネットIDを取得する(VNet名・サブネット名は環境に合わせて変更) SUBNET_ID=$(az network vnet subnet show \ --resource-group $RG \ --vnet-name "myVNet" \ --name "default" \ --query id \ --output tsv) # OSディスクを使って新規VMを起動する RESTORED_VM="restoredVM-$(date +%Y%m%d)" az vm create \ --resource-group $RG \ --name $RESTORED_VM \ --attach-os-disk $NEW_DISK_NAME \ --os-type Linux \ --size Standard_B2s \ --subnet $SUBNET_ID \ --public-ip-sku Standard \ --ssh-key-values ~/.ssh/id_rsa.pub

実行例(出力):

{ "fqdns": "", "id": "/subscriptions/.../restoredVM-20260819", "location": "japaneast", "macAddress": "00-0D-3A-xx-xx-xx", "powerState": "VM running", "privateIpAddress": "10.0.0.5", "publicIpAddress": "20.xxx.xxx.xxx", "resourceGroup": "myResourceGroup", "zones": "" }

--attach-os-disk:Marketplaceイメージからではなく既存のOSディスクからVMを作成する際に使用するオプション
--ssh-key-values:元のVMとは別のSSH公開鍵を指定することも可能(検証目的の複製に便利)

3. 起動したVMへSSH接続して動作確認する

# パブリックIPを取得して接続する PUBLIC_IP=$(az vm show \ --resource-group $RG \ --name $RESTORED_VM \ --show-details \ --query publicIps \ --output tsv) # SSH接続(azureuserは元のVMと同じ管理者ユーザー) ssh azureuser@$PUBLIC_IP # 接続後:ホスト名・カーネル・ディスク使用量を確認 hostname uname -r df -h

スナップショット取得時点のOSカーネルやパッケージ構成がそのまま引き継がれています。スナップショット後に加えた変更は存在しない状態です。

スナップショットからデータディスクを復元してVMへアタッチする

データディスクのみを別VMで確認したい場合は、データディスクスナップショットからディスクを作成してアタッチします。

# データスナップショットのIDを取得する DATA_SNAP_ID=$(az snapshot show \ --resource-group $RG \ --name "${VM_NAME}-data-snap-20260819" \ --query id \ --output tsv) # データスナップショットからディスクを作成する az disk create \ --resource-group $RG \ --name "restored-datadisk-20260819" \ --source $DATA_SNAP_ID \ --sku Standard_LRS # 別のVMにデータディスクとしてアタッチする az vm disk attach \ --resource-group $RG \ --vm-name "inspectionVM" \ --name "restored-datadisk-20260819"

アタッチ後、SSHで接続してディスクを確認します。lsblkでデバイス名を特定し、sudo mountでマウントして内容を参照できます(mount コマンドの使い方)。

スナップショットの一覧確認と定期削除

スナップショットを放置するとストレージコストが積み上がります。Standard_LRSで30GBのスナップショットが月$1.2程度です。定期的な棚卸しが必要です。

# リソースグループ内のスナップショット一覧を確認する az snapshot list \ --resource-group $RG \ --query "[].{name:name, sizeGb:diskSizeGb, created:timeCreated}" \ --output table # 不要なスナップショットを削除する(名前を指定) az snapshot delete \ --resource-group $RG \ --name "myLinuxVM-snap-20260801" \ --yes

トラブルシュート|よくあるエラーと対処

「The disk is currently attached to a running VM」エラー
スナップショット自体はVM稼働中でも取得できますが、アプリケーション層の整合性が必要な場合は先に az vm deallocate --resource-group $RG --name $VM_NAME でVMを停止してください。 「OS disk type must be set」エラー(az vm create 時)
az disk create 時に --os-type Linux を付け忘れるとこのエラーが出ます。ディスクを作成し直す際は必ず --os-type を指定してください。 スナップショットから起動したVMにSSH接続できない
新規VMは自動的に別のNSGが作成されるため、元のVMのSSHルールは引き継がれません。az network nsg rule create でポート22のインバウンドルールを追加するか、VM作成時に --nsg で既存NSGを指定してください。 「Disk size exceeds the supported limit」エラー
スナップショットからディスクを復元する際にサイズを元より小さく指定すると失敗します。az snapshot show --query diskSizeGbで元のサイズを確認してから、同サイズ以上を指定してください。

本記事のまとめ

やりたいこと コマンド
OSディスクIDを取得する az vm show --query storageProfile.osDisk.managedDisk.id --output tsv
スナップショットを作成する az snapshot create --resource-group RG --name NAME --source DISK_ID --sku Standard_LRS
スナップショット一覧を確認する az snapshot list --resource-group RG --output table
スナップショットのIDを取得する az snapshot show --name NAME --query id --output tsv
スナップショットからOSディスクを作成する az disk create --source SNAP_ID --os-type Linux
OSディスクからVMを起動する az vm create --attach-os-disk DISK_NAME --os-type Linux
スナップショットを削除する az snapshot delete --name NAME --yes
AzureのLinux VMスナップショットを使いこなせば、設定変更前の即時保護から障害発生時のVM丸ごと復元まで、管理負荷を大幅に下げられます。VMの複製・検証環境の量産にも活用できる強力な仕組みです。

Azureの学習をもっと体系的に進めたいなら、Azure実践ハンズオン講座をご覧ください。現役エンジニアが教える実務直結カリキュラムで、VM構築からインフラ管理まで一気に習得できます。

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

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

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

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

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

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

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

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

この記事を書いた人

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

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

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