1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PowerVSのAPIでsnapshot取得&リストア

Last updated at Posted at 2025-07-15

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

API referenceに記載されたコマンド例
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
$ 

上記で確認した値を変数にセット。

curlを実行するLinuxサーバーで変数セット
# 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が返ります。

snapshot作成コマンド
# 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

API referenceに記載されたコマンド例
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を取得した際に出力されています。

curlを実行するLinuxサーバーで変数セット
# SNAPSHOT_ID=d970ddef-2f25-4a9b-94c8-699eaeb99d2d

このSNAPSHOT_IDとTOKEN以外は、snapshot作成時と変わりません。
TOKENは有効期限があるので、expireしていたら新たに生成してください。

リストア時は、オプションのforceがデフォルトのfalseだと、対象LPARがシャットダウンした状態である必要があります。
forcetrueを指定することで、LPAR稼働中でもrestoreコマンドを実行できますが、対象ボリュームにI/Oが無い状態をユーザー側で確保する必要があります。下記はforceをtrueにしている例です。

snapshotリストアコマンド
# 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"}}
#

以上

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?