Azure 仮想マシンのディスクのスナップショット

スポンサーリンク

Microsoft Azureで管理されるディスクのスナップショット取得方法と復元方法をまとめます。

Microsoft Azureには「Azure Backup」と呼ばれるバックアップの仕組みがあります。この記事はバックアップの説明ではない事に留意ください。バックアップとスナップショットは異なります。

参考資料

参考になる公式ドキュメントを以下に示します。

事前準備

仮想ネットワークなど

以下、仮想ネットワーク等のリソースを作成します。

az group create --name MyResourceGroup --location japaneast

az network vnet create \
    -g MyResourceGroup \
    -n MyVnet \
    --address-prefix 172.16.0.0/16 \
    --subnet-name MySubnet \
    --subnet-prefix 172.16.0.0/24

仮想マシン

スナップショットの取得元となる仮想マシンを作成します。

az vm create \
  --resource-group MyResourceGroup \
  --name linux010 \
  --image UbuntuLTS \
  --size Standard_B1s \
  --admin-username azureuser \
  --authentication-type ssh \
  --ssh-key-values ~/.ssh/authorized_keys

スナップショットの作成

フルスナップショットの作成

スナップショットを作成するにはaz snapshot createコマンドを使用します。引数sourceにバックアップ対象となるディスクの名前またはIDを指定してください。

DISK_NAME=$(az vm show \
  --resource-group MyResourceGroup \
  --name linux010 \
  --query "storageProfile.osDisk.name" \
  --output tsv )

az snapshot create \
  --resource-group MyResourceGroup \
  --name MySnapshot10 \
  --tag snapshot=full \
  --source ${DISK_NAME}

増分スナップショットの作成

増分スナップショットを作成するにはaz snapshot createコマンドの引数incrementalにtrueを指定してください。

az snapshot create \
  --resource-group MyResourceGroup \
  --name MySnapshot11 \
  --source ${DISK_NAME} \
  --tag snapshot=incremental \
  --incremental true

ポータルで確認すると以下のようになります。確かに「フル」と「増分」の2種類のバックアップが作成されています。

「すべてのサービス」から辿る場合は、「その他」「スナップショット」の順に押下します。

スナップショットの確認 01

なお、「フル」も「増分」もどちらも30GBになっていて、この画面を見ただけでは「増分スナップショット」のように見えません。ですが、確かに増分スナップショットは容量が小さく費用削減に寄与しています。どの程度の費用削減になるかは「請求書」などからの確認が可能です。

スナップショットからの復元

復元操作

スナップショットからマネージドディスクを作成します。az disk createコマンドの引数sourceにスナップショットのIDを指定します。

SNAPSHOT_ID=$(az snapshot show \
  --resource-group MyResourceGroup \
  --name MySnapshot02 \
  --query "id" \
  --output tsv )

az disk create \
  --resource-group MyResourceGroup \
  --name linux020-disk01 \
  --source ${SNAPSHOT_ID}

仮想マシンを作成します。引数attach-os-diskには、スナップショットから作成したディスクを指定します。os-typeは状況に応じて、linuxまたはwindowsを指定します。

az vm create \
  --resource-group MyResourceGroup \
  --name linux020 \
  --os-type linux \
  --size Standard_B2s \
  --attach-os-disk linux020-disk01

補足

増分スナップショット 請求額の確認

事前準備

増分スナップショットは確かに請求金額が安くなっている事を確認します。

まずは適当な仮想マシンを作成します。動作確認しやすいように1Gのファイルを10個作成します。

az vm create \
  --resource-group MyResourceGroup \
  --name linux010 \
  --image UbuntuLTS \
  --size Standard_B1s \
  --admin-username azureuser \
  --authentication-type ssh \
  --ssh-key-values ~/.ssh/authorized_keys \
  --custom-data /dev/stdin << EOF
#!/bin/bash
dd if=/dev/urandom of=/home/azureuser/1G_00.txt bs=1M count=1024 iflag=fullblock
dd if=/dev/urandom of=/home/azureuser/1G_01.txt bs=1M count=1024 iflag=fullblock
dd if=/dev/urandom of=/home/azureuser/1G_02.txt bs=1M count=1024 iflag=fullblock
dd if=/dev/urandom of=/home/azureuser/1G_03.txt bs=1M count=1024 iflag=fullblock
dd if=/dev/urandom of=/home/azureuser/1G_04.txt bs=1M count=1024 iflag=fullblock
dd if=/dev/urandom of=/home/azureuser/1G_05.txt bs=1M count=1024 iflag=fullblock
dd if=/dev/urandom of=/home/azureuser/1G_06.txt bs=1M count=1024 iflag=fullblock
dd if=/dev/urandom of=/home/azureuser/1G_07.txt bs=1M count=1024 iflag=fullblock
dd if=/dev/urandom of=/home/azureuser/1G_08.txt bs=1M count=1024 iflag=fullblock
dd if=/dev/urandom of=/home/azureuser/1G_09.txt bs=1M count=1024 iflag=fullblock
EOF

1回目のスナップショットを取ります。

DISK_NAME=$(az vm show \
  --resource-group MyResourceGroup \
  --name linux010 \
  --query "storageProfile.osDisk.name" \
  --output tsv )

az snapshot create \
  --resource-group MyResourceGroup \
  --name MySnapshot-20220418-2000 \
  --source ${DISK_NAME} \
  --incremental true

1Gのファイルを1個作成します。

az vm run-command invoke \
  --resource-group MyResourceGroup \
  --name linux010 \
  --command-id RunShellScript \
  --scripts @/dev/stdin << EOF
#!/bin/bash
dd if=/dev/urandom of=/home/azureuser/1G_10.txt bs=1M count=1024 iflag=fullblock
EOF

2回目のスナップショットを取ります。増分スナップショットですので、2回目は1回目の増分だけを取得していはずで請求金額は安くなっているはずです。

DISK_NAME=$(az vm show \
  --resource-group MyResourceGroup \
  --name linux010 \
  --query "storageProfile.osDisk.name" \
  --output tsv )

az snapshot create \
  --resource-group MyResourceGroup \
  --name MySnapshot-20220418-2100 \
  --source ${DISK_NAME} \
  --incremental true

請求金額の確認

2回目のスナップショットは1回目のスナップショットよりも安くなっている事を確認します。

「すべてのサービス」から「全般」「コストの管理と請求」「コスト管理」の順に画面遷移します。

スナップショットの請求金額 01

「コスト分析」「リソース毎のコスト」「リソース毎のコスト」の順に押下します。

スナップショットの請求金額 02

適当なリソース名で絞り込みます。すると、1回目のスナップショットは「0.68円」で、2回目のスナップショットは「0.05円」である事が分かります。

スナップショットの請求金額 03

タイトルとURLをコピーしました