https://qiita.com/y_tama/items/5c51ac5c28234992476a
上記で、CLIコマンドを使ってPowerVSのsnapshot&リストアを行う方法を書きましたが、当記事では同じ事をAPIを呼び出して行う方法を書きます。
基本的にはAPI referenceの通りで問題ありません。
snapshot取得
API reference
https://cloud.ibm.com/apidocs/power-cloud#pcloud-pvminstances-snapshots-post
curl -X POST https://us-east.power-iaas.cloud.ibm.com/pcloud/v1/cloud-instances/$CLOUD_INSTANCE_ID/pvm-instances/$PVM_INSTANCE_ID/snapshots -H "Authorization: Bearer $TOKEN" -H "CRN: $CRN" -H "Content-Type: application/json" -d '{
"name": "VM1-SS",
"description": "Snapshot for VM1",
"volumeIDs":["VM1-7397dc00-0000035b-boot-0"]
}'
呼び出し先となるAPIエンドポイントのFQDNは、PowerVSワークスペースの場所に合わせて書き換えます。エンドポイント一覧は下記にあります。
https://cloud.ibm.com/apidocs/power-cloud#endpoint
今回は東京なのでパブリックエンドポイントはこちらです。
tok.power-iaas.cloud.ibm.com
IBM Cloud上のサーバーからプライベート側エンドポイントを呼び出す場合は、下記。
private.jp-tok.power-iaas.cloud.ibm.com
上記のAPIエンドポイントにアクセス可能で、curlコマンドが実行できれば、どこから実施しても構いませんが、今回はVPC上に作成したLinuxサーバーからAPIを呼び出しています。
必要なパラメータの値を確認します。
$CLOUD_INSTANCE_ID
PowerVSワークスペースのID。下記のID
の値。
$ ic pi ws list
Listing workspaces under account xxxxxxx as user xxxxxxx...
ID Name CRN
7e43b216-4f76-4de6-9baf-339b1fd2304c xxxxxxxxxxxx crn:v1:bluemix:public:power-iaas:tok04:a/27dc483dc1f14d2f821e8b3a4193ad13:7e43b216-4f76-4de6-9baf-339b1fd2304c::
$
$PVM_INSTANCE_ID
LPARのID。
$ ic pi ins ls
Listing instances under account xxxxxxx as user xxxxxxx...
ID Name Path
1f93089e-c768-41c6-b667-c929d6fac339 tmgw-aix /pcloud/v1/cloud-instances/91763b06712f4b1e9b5b0023ca784c70/pvm-instances/1f93089e-c768-41c6-b667-c929d6fac339
$
$TOKEN
API呼び出しに必要なIAMトークン。下記などの方法でセットします。
https://cloud.ibm.com/docs/atracker?topic=atracker-retrieve-iam-token&interface=api
https://qiita.com/testnin2/items/3a4ca8a1a2b79b713c48
$CRN
PowerVSワークスペースのCRN。下記のCRN
の値。
$ ic pi ws list
Listing workspaces under account xxxxxxx as user xxxxxxx...
ID Name CRN
7e43b216-4f76-4de6-9baf-339b1fd2304c xxxxxxxxxxxx crn:v1:bluemix:public:power-iaas:tok04:a/27dc483dc1f14d2f821e8b3a4193ad13:7e43b216-4f76-4de6-9baf-339b1fd2304c::
$
volumeIDs
(今回のsnapshot対象は1行目のtmgw-vol01です)
$ ic pi vol ls
Listing volumes under account xxxxxxx as user xxxxxxx...
ID Name Address
f84c21a1-6d71-4e3f-bfa3-0e26a650be9d tmgw-vol01 /pcloud/v1/cloud-instances/7e43b216-4f76-4de6-9baf-339b1fd2304c/volumes/f84c21a1-6d71-4e3f-bfa3-0e26a650be9d
20fd6d56-d1d5-4f93-92be-6b727c027268 tmgw-aix-1f93089e-00062b85-boot-0 /pcloud/v1/cloud-instances/7e43b216-4f76-4de6-9baf-339b1fd2304c/volumes/20fd6d56-d1d5-4f93-92be-6b727c027268
b6c40888-915d-4f87-a32c-e911af7815f9 vol01 /pcloud/v1/cloud-instances/7e43b216-4f76-4de6-9baf-339b1fd2304c/volumes/b6c40888-915d-4f87-a32c-e911af7815f9
$
上記で確認した値を変数にセット。
# CLOUD_INSTANCE_ID=7e43b216-4f76-4de6-9baf-339b1fd2304c
# PVM_INSTANCE_ID=1f93089e-c768-41c6-b667-c929d6fac339
# TOKEN=eyJrbWQiOiIyNDE4MDcyNC・・・(略)
# CRN=crn:v1:bluemix:public:power-iaas:tok04:a/27dc483dc1f14d2f821e8b3a4193ad13:7e43b216-4f76-4de6-9baf-339b1fd2304c::
コマンド実行。対象LPARが稼働していても実行できますが、静止点を確保する意味で、対象ボリュームにI/Oが無い状態で実行するのが良いでしょう。
正常に実行されると、作成されたsnapshotのCRNとIDが返ります。
# curl -X POST https://private.jp-tok.power-iaas.cloud.ibm.com/pcloud/v1/cloud-instances/$CLOUD_INSTANCE_ID/pvm-instances/$PVM_INSTANCE_ID/snapshots -H "Authorization: Bearer $TOKEN" -H "CRN: $CRN" -H "Content-Type: application/json" -d '{
"name": "snap06",
"description": "Snapshot API test",
"volumeIDs":["f84c21a1-6d71-4e3f-bfa3-0e26a650be9d"]
}'
{"crn":"crn:v1:bluemix:public:power-iaas:tok04:a/27dc483dc1f14d2f821e8b3a4193ad13:7e43b216-4f76-4de6-9baf-339b1fd2304c:snapshot:d970ddef-2f25-4a9b-94c8-699eaeb99d2d","snapshotID":"d970ddef-2f25-4a9b-94c8-699eaeb99d2d"}
#
snapshotリストア
API reference
https://cloud.ibm.com/apidocs/power-cloud#pcloud-pvminstances-snapshots-restore-post
curl -X POST https://us-east.power-iaas.cloud.ibm.com/pcloud/v1/cloud-instances/$CLOUD_INSTANCE_ID/pvm-instances/$PVM_INSTANCE_ID/snapshots/$SNAPSHOT_ID/restore -H "Authorization: Bearer $TOKEN" -H "CRN: $CRN" -H "Content-Type: application/json" -d '{
"force": true
}'
新たなパラメータは、$SNAPSHOT_ID
です。
これは、先ほどsnapshotを取得した際に出力されています。
# SNAPSHOT_ID=d970ddef-2f25-4a9b-94c8-699eaeb99d2d
このSNAPSHOT_IDとTOKEN以外は、snapshot作成時と変わりません。
TOKENは有効期限があるので、expireしていたら新たに生成してください。
リストア時は、オプションのforce
がデフォルトのfalse
だと、対象LPARがシャットダウンした状態である必要があります。
force
にtrue
を指定することで、LPAR稼働中でもrestoreコマンドを実行できますが、対象ボリュームにI/Oが無い状態をユーザー側で確保する必要があります。下記はforceをtrueにしている例です。
# curl -X POST https://private.jp-tok.power-iaas.cloud.ibm.com/pcloud/v1/cloud-instances/$CLOUD_INSTANCE_ID/pvm-instances/$PVM_INSTANCE_ID/snapshots/$SNAPSHOT_ID/restore -H "Authorization: Bearer $TOKEN" -H "CRN: $CRN" -H "Content-Type: application/json" -d '{
"force": true
}'
{"action":"restore","creationDate":"2025-07-15T13:11:35.000Z","crn":"crn:v1:bluemix:public:power-iaas:tok04:a/27dc483dc1f14d2f821e8b3a4193ad13:7e43b216-4f76-4de6-9baf-339b1fd2304c:snapshot:d970ddef-2f25-4a9b-94c8-699eaeb99d2d","description":"Snapshot API test","lastUpdateDate":"2025-07-15T14:59:00.000Z","name":"snap06","percentComplete":30,"pvmInstanceID":"1f93089e-c768-41c6-b667-c929d6fac339","snapshotID":"d970ddef-2f25-4a9b-94c8-699eaeb99d2d","status":"restoring","volumeSnapshots":{"f84c21a1-6d71-4e3f-bfa3-0e26a650be9d":"a1561f9b-ecb7-41c2-84c9-af8bbf887d78"}}
#
以上