1. はじめに
VPCのregional snapshot機能のBetaが始まっていたので試してみた(2021/03/30時点でBetaですが、利用いただきたい場合はIBMの営業にご相談いただき、snapshot機能の有効化の許可を得る必要があります)
https://cloud.ibm.com/docs/vpc?topic=vpc-snapshots-vpc-create&locale=en
なお、ここに記載があるように、ベータであっても東京リージョンではまだUIが利用できないようだ。UIでの作業は簡単に構成できるので、UIは画面キャプチャーをメインに紹介し、CLIでのステップを詳細に追ってみた。
In the UI, you can create a snapshot of a Block Storage for VPC volume that's attached to a running virtual server instance.
The snapshots UI is available only in these regions: Sydney (au-syd), France (eu-fr2), and Japan (jp-osa).
以下に主な特徴を記す。
- Regional Snapshotと呼ばれているように、同一Region内であればZone1で作られたSnapshotを元にZone2やZone3のVolumeとして展開することができる。
- 同一Regionであれば、別VPCへの展開にも利用できる。(さすがに別アカウントのVPCには利用できなさそう)
- Snapshotを取得する対象のVSIは起動中である必要がある。VSIが停止している場合は以下のエラーが発生する。
$ ibmcloud is snapshot-create --name syasuda-tok1-vpc1-boot-snap3 --volume r022-47b737a7-5fdb-47da-9b1e-09726a0966cc --resource-group-name Common
Creating snapshot syasuda-tok1-vpc1-boot-snap3 in resource group Common under account IBM as user shiyasu@jp.ibm.com...
FAILED
Failed to create snapshot.
FAILED
Response HTTP Status Code: 409
Error code: snapshots_attached_instance_not_running
Error message: The attached instance is not running
More information: Ensure the attached instance is powered on
Trace ID: 4db45f17-eafe-42f7-b907-c5cfa47a8e9b
2. UI(大阪リージョン)での使用例
2-1. Snapshot作成
2-2. リストア例1: Snapshotから新規VSIを作成する場合
選択肢として、Snapshot
というカテゴリーが表示されている
2-3. リストア例2: Snapshotから作成したVolumeを既存VSIに追加する場合
3. CLI(東京リージョン)での使用例
CLIについてのガイドは、(若干わかりづらいが)以下のタブを選択する必要がある。
3-1. 事前準備
# 英語表示
$ export LANG=C
# CLIの最新化
$ ibmcloud update
Checking for updates...
No update required. Your CLI is already up-to-date.
# ログイン
$ibmcloud login
or
$ibmcloud login -sso
# 東京リージョンにスイッチ
$ ibmcloud target -r jp-tok
# VPC Gen2がCLIのtargetになっていることを確認
$ ibmcloud is target
Target Generation: 2
このままでも、snapshotのCLIは使えるのだが、コマンド一覧には見えてこない。コマンド一覧への表示を有効化するためには以下の環境変数を設定する。
$ ibmcloud is --help|grep snapshot
# ヘルプの有効化
$ export IBMCLOUD_IS_FEATURE_SNAPSHOT=true
$ibmcloud is --help|grep snapshot
snapshot [Beta] View details of a snapshot
snapshot-create, snapshotc [Beta] Create a snapshot from a volume
snapshot-delete, snapshotd [Beta] Delete snapshots
snapshot-delete-from-source, snapshotsd, snapshots-delete [Beta] Delete snapshots by source volume
snapshot-update, snapshotu [Beta] Update a snapshot
snapshots [Beta] List all snapshots
3-2. Snapshotの作成
$ ibmcloud is volumes
Listing volumes for generation 2 compute in all resource groups and region jp-tok under account xxx as user xxxxxxx@xx.xxx.xxx...
ID Name Status Capacity IOPS Profile Attachment type Zone Resource group
r022-47b737a7-5fdb-47da-9b1e-09726a0966cc syasuda-tok1-vpc1-boot available 100 3000 general-purpose boot jp-tok-1 Common
r022-08541c07-c825-4918-9ae1-3b94cd7e7d6e syasuda-webserver1-boot-1611015072000 available 100 3000 general-purpose boot jp-tok-1 Common
# resource groupに何も指定をしないとDefaultで作られてしまうので、今回は指定をした。
$ ibmcloud is snapshot-create --name syasuda-tok1-vpc1-boot-snap --volume r022-47b737a7-5fdb-47da-9b1e-09726a0966cc --resource-group-name Common
Creating snapshot syasuda-tok1-vpc1-boot-snap in resource group Common under account xxx as user xxxxxx@xx.xxx.xxx...
ID r150-4d5a7b24-98ba-4cb9-b6fb-215cc79c69e6
Name syasuda-tok1-vpc1-boot-snap
CRN crn:v1:bluemix:public:is:jp-tok:a/039dbe6794084c7cb514a276dd2345da::snapshot:r150-4d5a7b24-98ba-4cb9-b6fb-215cc79c69e6
Status pending
Source Volume ID Name
r022-47b737a7-5fdb-47da-9b1e-09726a0966cc syasuda-tok1-vpc1-boot
Progress 0
Bootable true
Deletable false
Encryption provider_managed
Encryption key -
Minimum Capacity 100
Size 1
Source Image ID Name
r022-6f153a5d-6a9a-496d-8063-5c39932f6ded ibm-centos-7-6-minimal-amd64-2
Operating System Name Vendor Version Family Architecture Display Name
centos-7-amd64 CentOS 7.x - Minimal Install CentOS amd64 CentOS 7.x - Minimal Install (amd64)
Resource group ID Name
89e3e245955e4c59a83bc9d0db590082 Common
Created 2021-03-30T09:06:45+09:00
# Snapshot取得直後のステータスはpending
$ ibmcloud is snapshots
Listing snapshots for generation 2 compute in all resource groups and region jp-tok under account xxx as user xxxxxx@xx.xxx.xxx...
ID Name Status Progress Source Volume Bootable Resource group Created
r150-4d5a7b24-98ba-4cb9-b6fb-215cc79c69e6 syasuda-tok1-vpc1-boot-snap pending 0 r022-47b737a7-5fdb-47da-9b1e-09726a0966cc true Common 2021-03-30T09:06:45+09:00
# Snapshot取得30秒後ぐらいのステータスはstable
$ ibmcloud is snapshots
Listing snapshots for generation 2 compute in all resource groups and region jp-tok under account xxx as user xxxxxx@xx.xxx.xxx...
ID Name Status Progress Source Volume Bootable Resource group Created
r150-4d5a7b24-98ba-4cb9-b6fb-215cc79c69e6 syasuda-tok1-vpc1-boot-snap stable - r022-47b737a7-5fdb-47da-9b1e-09726a0966cc true Common 2021-03-30T09:06:45+09:00
# 詳細情報
$ ibmcloud is snapshot r150-4d5a7b24-98ba-4cb9-b6fb-215cc79c69e6
Getting snapshot r150-4d5a7b24-98ba-4cb9-b6fb-215cc79c69e6 under account xxx as user xxxxxx@xx.xxx.xxx...
ID r150-4d5a7b24-98ba-4cb9-b6fb-215cc79c69e6
Name syasuda-tok1-vpc1-boot-snap
CRN crn:v1:bluemix:public:is:jp-tok:a/039dbe6794084c7cb514a276dd2345da::snapshot:r150-4d5a7b24-98ba-4cb9-b6fb-215cc79c69e6
Status stable
Source Volume ID Name
r022-47b737a7-5fdb-47da-9b1e-09726a0966cc syasuda-tok1-vpc1-boot
Progress -
Bootable true
Deletable true
Encryption provider_managed
Encryption key -
Minimum Capacity 100
Size 2
Source Image ID Name
r022-6f153a5d-6a9a-496d-8063-5c39932f6ded ibm-centos-7-6-minimal-amd64-2
Operating System Name Vendor Version Family Architecture Display Name
centos-7-amd64 CentOS 7.x - Minimal Install CentOS amd64 CentOS 7.x - Minimal Install (amd64)
Resource group ID Name
89e3e245955e4c59a83bc9d0db590082 Common
Created 2021-03-30T09:06:45+09:00
3-3. Snapshotのリストア
CLIでも実行できそうだが、より細かいカスタマイズを簡単に実施したいため、
https://qiita.com/testnin2/items/337bc02892024fb684a3
で紹介したように、sample APIを生成させた後に、volumeの箇所にsource_snapshot
の項を追加。また、imageは指定する必要がないので削除。
"volume":{
(省略)
"source_snapshot":{
"id":"r150-4d5a7b24-98ba-4cb9-b6fb-215cc79c69e6"
}
}
"image": {
"id": "r022-2c5a6b07-1e34-420c-8361-286c8ba178dc"
}
# 実際の生成したスクリプトを、今回取得したsnapshotに合わせて置き換えた例
# Create a virtual server instance
curl -X POST \
"https://jp-tok.iaas.cloud.ibm.com/v1/instances?version=2021-03-09&generation=2" \
-H "Authorization: Bearer $iam_token" \
-H "User-Agent: IBM_One_Cloud_IS_UI/5.35.0" \
-H "Content-Type: application/json" \
-H "Cache-Control: no-cache" \
-H "accept: application/json" \
-H "x-proxy-from: https://cloud.ibm.com/vpc-ext/data/graphql?bss_account=039dbe6794084c7cb514a276dd2345da&ims_account=1756623&country=JPN" \
-d '{
"zone": {
"name": "jp-tok-3"
},
"resource_group": {
"id": "89e3e245955e4c59a83bc9d0db590082"
},
"name": "snapshottest1",
"vpc": {
"id": "r022-85621b2c-a349-4ae6-87e3-767ddeac7298"
},
"user_data": "",
"profile": {
"name": "bx2-2x8"
},
"keys": [
{
"id": "r022-b2ea5471-72f1-454a-9d3c-c865ad02545d"
}
],
"primary_network_interface": {
"name": "eth0",
"allow_ip_spoofing": false,
"subnet": {
"id": "02g7-a65939b2-6b69-443a-b149-d7f241d7a6c1"
},
"security_groups": [
{
"id": "r022-1a2bb9f2-7647-4332-8a1b-eb925fb6e160"
}
]
},
"network_interfaces": [],
"volume_attachments": [],
"boot_volume_attachment": {
"volume": {
"name": "snapshottest1-boot-1617064484000",
"capacity": 100,
"profile": {
"name": "general-purpose"
},
"source_snapshot":{
"id":"r150-4d5a7b24-98ba-4cb9-b6fb-215cc79c69e6"
}
},
"delete_volume_on_instance_delete": true
}
}'
$ export iam_token=`ibmcloud iam oauth-tokens | awk '{printf $4}'`
$ sh createVSIfromSnapshot.sh
これで、このsnapshotを元にVSIが作成される。
4. UUIDの比較
- System UUIDは変更される。これは、ここでも記載した通り、別VSIとして起動してくるので仕方がないことかも。。。
- Storage領域は、SWAP領域を除きUUIDは変更されていない。
[root@new-syasuda-tok1-vpc1 ~]# dmidecode -s system-uuid
1ef7e055-d4b5-46e9-ac5f-014af031a808
[root@new-syasuda-tok1-vpc1 ~]# cat /sys/devices/virtual/dmi/id/product_uuid
1EF7E055-D4B5-46E9-AC5F-014AF031A808
[root@new-syasuda-tok1-vpc1 ~]# lsblk -o +LABEL,UUID,FSTYPE,SIZE,OWNER,MODE
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT LABEL UUID FSTYPE SIZE OWNER MODE
vda 253:0 0 100G 0 disk 100G root brw-rw----
├─vda1 253:1 0 1G 0 part /boot BOOT fa4c5ff7-f540-40a1-be62-347aa246a856 ext3 1G root brw-rw----
└─vda2 253:2 0 99G 0 part / ROOT ddac8416-8037-4b93-a480-71c74b7ee6e7 ext3 99G root brw-rw----
vdb 253:16 0 368K 0 disk cidata 2021-03-30-03-31-23-00 iso9660 368K root brw-rw----
vdc 253:32 0 44K 0 disk [SWAP] SWAP-xvdb1 f824a6dd-8300-4295-83b4-11dfd06bbd71 swap 44K root brw-rw----
[root@snapshottest1 ~]# dmidecode -s system-uuid
98961c37-2d03-426f-8b9c-d09d9c646842
[root@snapshottest1 ~]# cat /sys/devices/virtual/dmi/id/product_uuid
98961C37-2D03-426F-8B9C-D09D9C646842
[root@snapshottest1 ~]# lsblk -o +LABEL,UUID,FSTYPE,SIZE,OWNER,MODE
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT LABEL UUID FSTYPE SIZE OWNER MODE
vda 253:0 0 100G 0 disk 100G root brw-rw----
├─vda1 253:1 0 1G 0 part /boot BOOT fa4c5ff7-f540-40a1-be62-347aa246a856 ext3 1G root brw-rw----
└─vda2 253:2 0 99G 0 part / ROOT ddac8416-8037-4b93-a480-71c74b7ee6e7 ext3 99G root brw-rw----
vdb 253:16 0 368K 0 disk cidata 2021-04-01-00-57-29-00 iso9660 368K root brw-rw----
vdc 253:32 0 44K 0 disk [SWAP] SWAP-xvdb1 3c2b9f6e-cfc1-488e-b01e-93349db98cc3 swap 44K root brw-rw----