###################################################################### # All Rights Reserved, Copyright FUJITSU LIMITED 2015-2018 # # API実行サンプル名: # 03-006_スナップショットからストレージ作成 # # 内容: # 作成したスナップショットを指定してストレージを作成する手順です。 # # 版数:v1.1 # 更新日:2018/1/26 ###################################################################### 手順: ─────────────────────────────────── 項番1.仮想サーバ確認 項番2.スナップショット作成 項番2-1.スナップショット作成 項番2-2.スナップショット確認 項番3.スナップショットからストレージ作成 項番3-1.スナップショットからストレージ作成 項番3-2.ストレージ確認 ─────────────────────────────────── 事前準備: あらかじめ以下を準備する必要があります。 ─────────────────────────────────── ・仮想サーバ ─────────────────────────────────── 注意事項: ・仮想サーバが稼働中または停止中のどちらの状態でもスナップショットの 作成は可能ですが、仮想サーバが稼働中に作成したスナップショットを 再利用した場合の動作は保障できません。確実な動作を期待する場合は、 事前に仮想サーバを停止してください。仮想サーバ停止の手順については API実行サンプル「仮想サーバの起動と停止」を参照して下さい。 項番1.仮想サーバ確認 スナップショットを作成する仮想サーバが停止していることを以下の パラメータで確認します。 ・"status": "SHUTOFF" 環境定義コマンド例: ====================================================================== # SERVER_ID=<スナップショットを作成する仮想サーバID> SERVER_ID=701c9671-0cac-46ee-b216-251a543409ts API実行コマンド例: ====================================================================== curl -Ss $COMPUTE/v2/$PROJECT_ID/servers/$SERVER_ID -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq . レスポンス例: ====================================================================== { "server": { "metadata": {}, "config_drive": "", "OS-EXT-STS:power_state": 4, "accessIPv6": "", "accessIPv4": "", "os-extended-volumes:volumes_attached": [ { "id": "20ebc60b-1de8-4417-9fe3-156f80ce82j5" } ], "OS-DCF:diskConfig": "MANUAL", "tenant_id": "<プロジェクトID>", "created": "2017-12-12T09:29:32Z", "name": "TEST_SERVER_01", "user_id": "<ユーザID>", "OS-EXT-AZ:availability_zone": "jp-west-2a", "OS-SRV-USG:terminated_at": null, "image": { "links": [ { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/images/c3867e5e-afd6-4858-918e-c445f9041c9d" } ], "id": "c3867e5e-afd6-4858-918e-c445f9043km4" }, "key_name": "TEST_KEY_AZ1", "links": [ { "rel": "self", "href": "http://10.27.0.201/v2/<プロジェクトID>/servers/701c9671-0cac-46ee-b216-251a543409ts" }, { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/servers/701c9671-0cac-46ee-b216-251a543409ts" } ], "addresses": { "TEST_NETWORK_01": [ { "OS-EXT-IPS:type": "fixed", "addr": "192.168.50.10", "version": 4, "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:86:ea:99" } ] }, "OS-EXT-SRV-ATTR:host": "jp3a01-pgy042-00", "hostId": "b2aace3ae2ae45000ea31cfda0095803easc68959jb5515732461398", "updated": "2017-12-25T05:43:03Z", "status": "SHUTOFF", "OS-EXT-STS:task_state": null, "OS-EXT-STS:vm_state": "stopped", "OS-EXT-SRV-ATTR:instance_name": "instance-0001d475", "OS-SRV-USG:launched_at": "2017-12-12T13:09:34.000000", "OS-EXT-SRV-ATTR:hypervisor_hostname": "jp3a01-pgy042-00", "flavor": { "links": [ { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/flavors/1101" } ], "id": "1101" }, "id": "701c9671-0cac-46ee-b216-251a543409ts", "security_groups": [ { "name": "TEST_SG_01" } ] } } ====================================================================== 項番2.スナップショット作成 仮想サーバのシステムストレージを指定してスナップショットを作成し、 スナップショットが作成したことを確認します。 項番2-1.スナップショット作成 仮想サーバのシステムストレージを指定してスナップショットを作成 します。 環境定義コマンド例: ====================================================================== # SNAPSHOT_NAME=<作成するスナップショット名> SNAPSHOT_NAME=TEST_SNAPSHOT_01 # DESCRIPTION=<作成するスナップショットの説明> DESCRIPTION=SERVER_01_SNAPSHOT_01 # VMVOL_ID=<仮想サーバのシステムストレージID> VMVOL_ID=20ebc60b-1de8-4417-9fe3-156f80ce82j5 # FORCE=<(true:対象のストレージが仮想サーバに接続されている場合), # (false:対象のストレージが仮想サーバに接続されていない場合)> FORCE=true # AZ=<スナップショットを作成するアベイラビリティゾーン> AZ=jp-west-2a API実行コマンド例: ====================================================================== curl -Ss $BLOCKSTORAGE/v2/$PROJECT_ID/snapshots -X POST -H "Content-Type: application/json" -H "Accept: application/json" -H "X-Auth-Token: $OS_AUTH_TOKEN" -d '{"snapshot":{"name":"'$SNAPSHOT_NAME'", "availability_zone": "'$AZ'","description":"'$DESCRIPTION'","volume_id":"'$VMVOL_ID'","force":"'$FORCE'"}}' | jq . レスポンス例: ====================================================================== { "snapshot": { "name": "TEST_SNAPSHOT_01", "id": "732afa68-d89f-473b-8372-0ae8c520k72d", "size": 30, "volume_id": "20ebc60b-1de8-4417-9fe3-156f80ce82j5", "metadata": {}, "created_at": "2017-12-25T05:50:19.971557", "description": "SERVER_01_SNAPSHOT_01", "status": "creating" } } ====================================================================== 項番2-2.スナップショット確認 スナップショットが作成されたことを以下のパラメータで確認します。 ・"status": "available" 環境定義コマンド例: ====================================================================== # SNAPSHOT_ID=<作成したスナップショットID> SNAPSHOT_ID=732afa68-d89f-473b-8372-0ae8c520k72d API実行コマンド例: ====================================================================== curl -Ss $BLOCKSTORAGE/v2/$PROJECT_ID/snapshots/$SNAPSHOT_ID -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq . レスポンス例: ====================================================================== { "snapshot": { "availability_zone": "jp-west-2a", "name": "TEST_SNAPSHOT_01", "id": "732afa68-d89f-473b-8372-0ae8c520k72d", "status": "available", "os-extended-snapshot-attributes:progress": "100%", "description": "SERVER_01_SNAPSHOT_01", "created_at": "2017-12-25T05:50:19.000000", "metadata": {}, "volume_id": "20ebc60b-1de8-4417-9fe3-156f80ce82j5", "os-extended-snapshot-attributes:project_id": "<プロジェクトID>", "size": 30 } } ====================================================================== 項番3.スナップショットからストレージ作成 作成したスナップショットを指定してストレージを作成し、ストレージが 作成されたことを確認します。 項番3-1.スナップショットからストレージ作成 作成したスナップショットを指定してストレージを作成します。 環境定義コマンド例: ====================================================================== # VOLUME_NAME=<作成するストレージ名> VOLUME_NAME=TEST_STORAGE_01 # SNAPSHOT_ID=<作成したスナップショットID> SNAPSHOT_ID=732afa68-d89f-473b-8372-0ae8c520k72d # AZ=<ストレージを作成するアベイラビリティゾーン名> AZ=jp-west-2a API実行コマンド例: ====================================================================== curl -Ss $BLOCKSTORAGE/v2/$PROJECT_ID/volumes -X POST -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"volume":{"display_name": "'$VOLUME_NAME'", "snapshot_id": "'$SNAPSHOT_ID'", "availability_zone": "'$AZ'"}}' | jq . レスポンス例: ====================================================================== { "volume": { "size": 30, "id": "80a0f40e-954a-4834-b8cf-86b6df401846", "metadata": { "readonly": "False" }, "snapshot_id": "732afa68-d89f-473b-8372-0ae8c520k72d", "source_volid": null, "name": "TEST_STORAGE_01", "volume_type": "M1", "description": null, "status": "creating", "user_id": "<ユーザID>", "attachments": [], "links": [ { "rel": "self", "href": "http://10.27.0.201/v2/<プロジェクトID>/volumes/80a0f40e-954a-4834-b8cf-86b6df401846" }, { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/volumes/80a0f40e-954a-4834-b8cf-86b6df401846" } ], "availability_zone": "jp-west-2a", "bootable": "false", "encrypted": false, "created_at": "2017-12-25T06:07:03.262634" } } ====================================================================== 項番3-2.ストレージ確認 スナップショットを指定したストレージが作成されたことを以下の パラメータで確認します。 ・"status": "available" 環境定義コマンド例: ====================================================================== # VOLUME_ID=<作成したストレージID> VOLUME_ID=80a0f40e-954a-4834-b8cf-86b6df401846 API実行コマンド例: ====================================================================== curl -Ss $BLOCKSTORAGE/v2/$PROJECT_ID/volumes/$VOLUME_ID -X GET -H "X-Auth-Token:$OS_AUTH_TOKEN" -H "Content-Type:application/json" | jq . レスポンス例: ====================================================================== { "volume": { "size": 30, "os-vol-mig-status-attr:migstat": null, "id": "80a0f40e-954a-4834-b8cf-86b6df401846", "metadata": { "readonly": "False" }, "os-vol-mig-status-attr:name_id": null, "encrypted": false, "bootable": "true", "availability_zone": "jp-west-2a", "links": [ { "rel": "self", "href": "http://10.27.0.201/v2/<プロジェクトID>/volumes/80a0f40e-954a-4834-b8cf-86b6df401846" }, { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/volumes/80a0f40e-954a-4834-b8cf-86b6df401846" } ], "attachments": [], "user_id": "<ユーザID>", "volume_image_metadata": { "size": "944243200", "min_disk": "30", "image_id": "c3867e5e-afd6-4858-918e-c445f9041c9d", "container_format": "bare", "min_ram": "0", "disk_format": "qcow2", "image_name": "CentOS 6.8 64bit (English) 01", "fcx.base_image_id": "c3867e5e-afd6-4858-918e-c445f9041c9d", "fcx.centos": "true", "checksum": "149b8f5d01ef09d3a2c489f4b3b9cc47" }, "status": "available", "created_at": "2017-12-25T06:07:03.000000", "description": null, "os-vol-tenant-attr:tenant_id": "<プロジェクト>", "volume_type": "M1", "name": "TEST_STORAGE_01", "os-vol-host-attr:host": "ror-cinder@M1_6", "source_volid": null, "snapshot_id": "732afa68-d89f-473b-8372-0ae8c520k72d" } } ====================================================================== 変更履歴: ─────────────────────────────────── v1.1版: ・項番全体:項番構成の見直し、説明修正 ─────────────────────────────────── 以上