3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Power Systems Virtual Server on IBM Cloud で FlashCopy (Snapshot, Restore, Clone) を操作する

Last updated at Posted at 2020-06-26

はじめに

Power Systems Virtual Server on IBM Cloud で FlashCopy (Snapshot, Restore, Clone) を操作できるようになりました。
今回は、API 経由で操作を実施します。

Release notes
May 2020
Added snapshot, clone and restore capabilities to the Power Systems Virtual Server service. You can use these new capabilities by using the Power Systems Virtual Server API.

それぞれのベストプラクティス、ユースケース、制約については、こちらにあります。

Snapshotting, cloning, and restoring

必要情報の取得

該当リージョンに ibmcloud コマンドでログイン

ダラスなら us-south 、ワシントンなら us-east といったように指定してログインします。


export REGION="us-east"
echo $REGION
ibmcloud login -r $REGION

アカウント ID の取得

以下のコマンド、または https://cloud.ibm.com/account/settings から取得できます。


export TENANT_ID=$(ibmcloud account show --output JSON | jq -r '.account_id')
echo $TENANT_ID

Power Systems Virtual Server サービスインスタンス情報

以下のコマンド、または https://cloud.ibm.com/resources から取得できます。


export SERVICE_INSTANCE="khayama-power"
echo $SERVICE_INSTANCE

export CRN=$(ibmcloud resource service-instance $SERVICE_INSTANCE --output JSON | jq -r '.[]|.crn')
echo $CRN

export GUID=$(ibmcloud resource service-instance $SERVICE_INSTANCE --output JSON | jq -r '.[]|.guid')
echo $GUID

Kobito.fmxYvg.png

IAM アクセストークン取得

IBM Cloud API アクセスの認証に必要です。


export ACCESS_TOKEN=$(ibmcloud iam oauth-tokens --output JSON | jq -r '.iam_token')
echo $ACCESS_TOKEN

cloudInstanceId の取得

Power Systems Virtual Server の情報を API 経由で取得するために必要です。


export CLOUDINSTANCE_ID=` \
curl -X GET \
"https://$REGION.power-iaas.cloud.ibm.com/pcloud/v1/tenants/$TENANT_ID" \
-H "Authorization: $ACCESS_TOKEN" \
-H "CRN: $CRN" \
-H 'Content-Type: application/json' \
| jq -r '.cloudInstances | .[] | select (.name=="'$GUID'") | .cloudInstanceID' \
`
echo $CLOUDINSTANCE_ID

pvmInstanceID の取得

Power Systems Virtual Server のサーバー名から取得します。


export SERVER_NAME="khayama-aix"
echo $SERVER_NAME

export PVMINSTANCE_ID=` \
curl -X GET \
"https://$REGION.power-iaas.cloud.ibm.com/pcloud/v1/cloud-instances/$CLOUDINSTANCE_ID/pvm-instances" \
-H "Authorization: $ACCESS_TOKEN" \
-H "CRN: $CRN" \
-H 'Content-Type: application/json' \
| jq -r '.pvmInstances | .[] | select (.serverName=="'$SERVER_NAME'") | .pvmInstanceID' \
`
echo $PVMINSTANCE_ID

volumeIDs の取得

対象の Power Systems Virtual Server に紐づくボリュームの ID を取得します。
複数ボリュームがアタッチされている場合、複数の ID が取得できます。


export VOLUME_IDS=` \
curl -X GET \
"https://$REGION.power-iaas.cloud.ibm.com/pcloud/v1/cloud-instances/$CLOUDINSTANCE_ID/pvm-instances/$PVMINSTANCE_ID" \
-H "Authorization: $ACCESS_TOKEN" \
-H "CRN: $CRN" \
-H 'Content-Type: application/json' \
| jq -c '.volumeIDs' \
`
echo $VOLUME_IDS

FlashCopy の操作

Snapshot 実行

対象となる Power Systems Virtual Server に紐づく全てのボリュームに対して、Snapshot を実行します。


curl -X POST \
"https://$REGION.power-iaas.cloud.ibm.com/pcloud/v1/cloud-instances/$CLOUDINSTANCE_ID/pvm-instances/$PVMINSTANCE_ID/snapshots" \
-H "Authorization: $ACCESS_TOKEN" \
-H "CRN: $CRN" \
-H 'Content-Type: application/json' \
-d '{ "name": "test", "description": "Snapshot for test", "volumeIDs": '$VOLUME_IDS'}'
result.json
{"snapshotID":"***"}

Snapshot 確認

Snapshot の状態を確認します。
percentComplete100statusavailable となった場合は、問題なく処理が完了したことが確認できます。
参考までに、ボリュームが数十 GB 程度の場合、30 秒程度で処理が完了します。


curl -X GET \
"https://$REGION.power-iaas.cloud.ibm.com/pcloud/v1/cloud-instances/$CLOUDINSTANCE_ID/pvm-instances/$PVMINSTANCE_ID/snapshots" \
-H "Authorization: $ACCESS_TOKEN" \
-H "CRN: $CRN" \
-H 'Content-Type: application/json' \
| jq -r
result.json
{
  "snapshots": [
    {
      "action": "snapshot",
      "creationDate": "2020-06-26T16:48:59.000Z",
      "description": "Snapshot for test",
      "lastUpdateDate": "2020-06-26T16:49:33.000Z",
      "name": "test",
      "percentComplete": 100,
      "pvmInstanceID": "***",
      "snapshotID": "***",
      "status": "available",
      "volumeSnapshots": {
        "***": "***",
        "***": "***"
      }
    }
  ]
}

Restore 実行

snapshotID を指定して、リストアを実行します。
percentComplete100 となった場合は、問題なく処理が完了したことが確認できます。
参考までに、ボリュームが数十 GB 程度の場合、30 秒程度で処理が完了します。


export SNAPSHOT_ID="***"
echo $SNAPSHOT_ID

curl -X POST \
"https://$REGION.power-iaas.cloud.ibm.com/pcloud/v1/cloud-instances/$CLOUDINSTANCE_ID/pvm-instances/$PVMINSTANCE_ID/snapshots/$SNAPSHOT_ID/restore" \
-H "Authorization: $ACCESS_TOKEN" \
-H "CRN: $CRN" \
-H 'Content-Type: application/json' \
-d '{ "force": true }'
result.json
{
  "action": "restore",
  "creationDate": "2020-06-26T16:48:59.000Z",
  "description": "Snapshot for test",
  "lastUpdateDate": "2020-06-26T16:58:54.000Z",
  "name": "test",
  "percentComplete": 11,
  "pvmInstanceID": "***",
  "snapshotID": "***",
  "status": "available",
  "volumeSnapshots": {
    "***": "***",
    "***": "***"
  }
}

Roll back 実行

以下のようなクエリパラメータを付与してリストア実行することで、エラー時にロールバックすることができます。

To roll back the clone operation, append '?restore_fail_action=rollback' to the cURL URL. If you'd like to try the clone operation again, append '?restore_fail_action=retry' to the cURL URL.


curl -X POST \
"https://$REGION.power-iaas.cloud.ibm.com/pcloud/v1/cloud-instances/$CLOUDINSTANCE_ID/pvm-instances/$PVMINSTANCE_ID/snapshots/$SNAPSHOT_ID/restore?restore_fail_action=rollback" \
-H "Authorization: $ACCESS_TOKEN" \
-H "CRN: $CRN" \
-H 'Content-Type: application/json' \
-d '{ "force": true }'

statusavailable である場合には、この操作は無効です。

result.json
{"description":"bad request: snapshot *** is in state available, restore fail actions only valid if snapshot in restore error state","error":"bad request"}

Clone 実行

任意のボリュームを指定して、 Clone を実行できます。
参考までに、ボリュームが数十 GB 程度の場合、30 秒程度で処理が完了します。


curl -X POST \
"https://$REGION.power-iaas.cloud.ibm.com/pcloud/v1/cloud-instances/$CLOUDINSTANCE_ID/volumes/clone" \
-H "Authorization: $ACCESS_TOKEN" \
-H "CRN: $CRN" \
-H 'Content-Type: application/json' \
-d '{ "volumeIDs": '$VOLUME_IDS', "displayName": "khayama-clone-test" }'
result.json
{
  "clonedVolumes": {
    "***": "***",
    "***": "***"
  }
}

Clone 確認

Clone されたボリュームは特定のサーバーに紐付かない独立したボリュームとなり、 UI からも確認ができます。
貼り付けた画像_2020_06_27_2_54.png

参考リンク

参考 : Image Capture

上記の同一インスタンスに対して、 Image Capture (内部で PowerVC が外部ストレージ装置のディスクコピーを取得) をおこなうと、開始してから ICOS に Export されるまで約 30 分かかりました。

Image Capture の対象となるインスタンスのボリューム容量が増えると、OVA イメージ化の処理と ICOS へのアップロード処理の時間が長くなっているものと推測します。

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?