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 はポリシー管理・長期
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
スナップショットとAzure Backupの使い分けを整理する
両方ともディスクを保護する仕組みですが、設計思想が異なります。| 比較軸 | スナップショット | Azure Backup |
|---|---|---|
| 取得先 | マネージドディスクの直接コピー | Recovery Servicesコンテナ |
| 操作 | az snapshot create 1コマンド | ポリシー設定・保護有効化が必要 |
| 向いている用途 | 設定変更前の保険、VM複製、即時切り戻し | 定期バックアップ、長期保持、コンプライアンス対応 |
| コスト | スナップショット容量分のみ | バックアップストレージ+管理コスト |
| 復元速度 | 即時(同一リージョン内) | ジョブ実行が必要(数分以上) |
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
・--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
State が Succeeded になっていれば取得完了です。
現場で通用する安全な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 の値を変えて同じ手順を繰り返します。
スナップショットから新規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": "" }
・--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
スナップショットからデータディスクを復元して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"
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の学習をもっと体系的に進めたいなら、Azure実践ハンズオン講座をご覧ください。現役エンジニアが教える実務直結カリキュラムで、VM構築からインフラ管理まで一気に習得できます。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:AzureのLinux VMにデータディスクを追加する方法|azコマンドでManaged Diskをアタッチしてparted・mkfs・fstabで永続化する実践手順
- この記事の属するカテゴリ:Azureへ戻る

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