###################################################################### # All Rights Reserved, Copyright FUJITSU LIMITED 2015-2018 # # API実行サンプル名: # 03-008_スナップショットから増設ストレージの容量拡張 # # 内容: # 仮想サーバにアタッチされている増設ブロックストレージのスナップ # ショットから、容量を拡張した増設ブロックストレージを作成する手順です。 # # 版数:v1.0 # 更新日:2018/1/26 ###################################################################### 手順: ─────────────────────────────────── 項番1.リソース確認 項番1-1.仮想サーバ確認 項番1-2.スナップショット確認 項番2.ブロックストレージ作成(スナップショット指定) 項番2-1.ブロックストレージ作成(スナップショット指定) 項番2-2.ブロックストレージ確認 項番3.ブロックストレージアタッチ/デタッチ 項番3-1.仮想サーバのストレージ一覧確認 項番3-2.ブロックストレージデタッチ 項番3-3.仮想サーバのストレージ一覧確認 項番3-4.ブロックストレージアタッチ 項番3-5.仮想サーバのストレージ一覧確認 項番4.仮想サーバ起動 項番4-1.仮想サーバ起動 項番4-2.仮想サーバ確認 ─────────────────────────────────── 事前準備: あらかじめ以下を準備する必要があります。 ─────────────────────────────────── ・仮想サーバ ・増設ブロックストレージ1(仮想サーバにアタッチ済み) ・スナップショット(増設ブロックストレージ1) ─────────────────────────────────── 注意事項: ・仮想サーバが稼働中または停止中のどちらの状態でもスナップショットの 作成は可能ですが、仮想サーバが稼働中に作成したスナップショットを 利用した場合の動作は保障できません。確実な動作を期待する場合は、 事前に仮想サーバを停止してください。 ・仮想サーバ停止の手順については、API実行サンプル「仮想サーバの起動と 停止」を参照してください。 ・スナップショットの作成方法については、API実行サンプル「スナップ ショット作成」を参照し、対象ストレージのスナップショットを作成して ください。 ・本サンプルでは、以下として記載しています。 ・既存の増設ブロックストレージ : 増設ブロックストレージ1 ・容量拡張した増設ブロックストレージ : 増設ブロックストレージ2 項番1.リソース確認 増設ブロックストレージの容量を拡張する仮想サーバと、容量を拡張する 増設ブロックストレージ1のスナップショットを確認します。 項番1-1.仮想サーバ確認 増設ブロックストレージの容量を拡張する仮想サーバの以下の パラメータで、仮想サーバの状態とアタッチされているストレージを 確認します。 ・"status": "SHUTOFF" ・"os-extended-volumes:volumes_attached": [{"id": "<システム ストレージID>"},{"id": "増設ストレージ1ID"}] ※IDの表記順は異なる場合があります。 環境定義コマンド例: ====================================================================== # SERVER_ID=<増設ブロックストレージの容量を拡張する仮想サーバ> SERVER_ID=701c9671-0cac-46ee-b216-251a543487d4 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-156f80ce63r9" }, { "id": "101fe2fd-71df-4ef6-a8cc-dfc49ba60n2s" } ], "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-c445f9041c9d" }, "key_name": "TEST_KEY_AZ1", "links": [ { "rel": "self", "href": "http://10.27.0.201/v2/<プロジェクトID>/servers/701c9671-0cac-46ee-b216-251a543487d4" }, { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/servers/701c9671-0cac-46ee-b216-251a543487d4" } ], "addresses": { "TEST_NETWORK_01": [ { "OS-EXT-IPS:type": "fixed", "addr": "192.168.50.6", "version": 4, "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:86:ea:99" } ] }, "OS-EXT-SRV-ATTR:host": "jp3a01-pgy042-00", "hostId": "b2aace3ae2ae45000ea30cfda0095803eaac68959eb5515736461318", "updated": "2017-12-25T12:13:06Z", "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-251a543487d4", "security_groups": [ { "name": "TEST_SG_01" } ] } } ====================================================================== 項番1-2.スナップショット確認 容量を拡張する増設ブロックストレージ1のスナップショットの以下 パラメータを確認します。 ・"status": "available" 環境定義コマンド例: ====================================================================== # SNAPSHOT_ID=<容量を拡張する増設ブロックストレージ1のスナップ # ショットID> SNAPSHOT_ID=76323990-13f7-4608-a650-9cfedc4281e6 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": "SNAPSHOT_01_STORAGE_01", "id": "76323990-13f7-4608-a650-9cfedc4281e6", "status": "available", "os-extended-snapshot-attributes:progress": "100%", "description": "TEST_STORAGE_01_SNAPSHOT_01", "created_at": "2017-12-26T00:05:25.000000", "metadata": {}, "volume_id": "101fe2fd-71df-4ef6-a8cc-dfc49ba60n2s", "os-extended-snapshot-attributes:project_id": "<プロジェクトID>", "size": 10 } } ====================================================================== 項番2.ブロックストレージ作成(スナップショット指定) 増設ブロックストレージ1のスナップショットを指定して、容量を拡張した ブロックストレージを作成し、作成されたことを確認します。 項番2-1.ブロックストレージ作成(スナップショット指定) 増設ブロックストレージ1のスナップショットを指定して、容量を拡張 した増設ブロックストレージ2を作成します。 注意事項: ・作成するブロックストレージのサイズは、既存のブロックストレージの サイズよりも大きいサイズを指定してください。小さいサイズは指定 できません。 ・本サンプルでは以下として設定しています。 ・増設ブロックストレージ1 : 10GB ・増設ブロックストレージ2 : 20GB 環境定義コマンド例: ====================================================================== # VOLUME_NAME=<作成するブロックストレージ名> VOLUME_NAME=TEST_STORAGE_02_20GB # SNAPSHOT_ID=<増設ブロックストレージ1のスナップショットID> SNAPSHOT_ID=76323990-13f7-4608-a650-9cfedc4281e6 # SIZE=<作成するブロックストレージサイズ(GB)> SIZE=20 API実行コマンド例: ====================================================================== curl -Ss $BLOCKSTORAGE/v2/$PROJECT_ID/volumes -X POST -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"volume":{"name": "'$VOLUME_NAME'","size": '$SIZE', "snapshot_id": "'$SNAPSHOT_ID'"}}' | jq . レスポンス例: ====================================================================== { "volume": { "size": 20, "id": "ddd5e24d-a44a-47c2-b91e-c4366dc25965", "metadata": { "readonly": "False" }, "snapshot_id": "76323990-13f7-4608-a650-9cfedc4281e6", "source_volid": null, "name": "TEST_STORAGE_02_20GB", "volume_type": "M1", "description": null, "status": "creating", "user_id": "<ユーザID>", "attachments": [], "links": [ { "rel": "self", "href": "http://10.27.0.201/v2/<プロジェクトID>/volumes/ddd5e24d-a44a-47c2-b91e-c4366dc25965" }, { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/volumes/ddd5e24d-a44a-47c2-b91e-c4366dc25965" } ], "availability_zone": "jp-west-2a", "bootable": "false", "encrypted": false, "created_at": "2017-12-26T00:29:28.407939" } } ====================================================================== 項番2-2.ブロックストレージ確認 スナップショットを指定した増設ブロックストレージ2が作成された ことを以下のパラメータで確認します。 ・"status": "available" ・"snapshot_id": "<増設ブロックストレージ1のスナップショットID>" ・"size": <作成時に指定した容量(GB)> 環境定義コマンド例: ====================================================================== # VOLUME_ID=<作成した増設ブロックストレージ2ID> VOLUME_ID=ddd5e24d-a44a-47c2-b91e-c4366dc25965 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": 20, "os-vol-mig-status-attr:migstat": null, "id": "ddd5e24d-a44a-47c2-b91e-c4366dc25965", "metadata": { "readonly": "False" }, "created_at": "2017-12-26T00:29:28.000000", "encrypted": false, "bootable": "false", "availability_zone": "jp-west-2a", "links": [ { "rel": "self", "href": "http://10.27.0.201/v2/<プロジェクトID>/volumes/ddd5e24d-a44a-47c2-b91e-c4366dc25965" }, { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/volumes/ddd5e24d-a44a-47c2-b91e-c4366dc25965" } ], "attachments": [], "user_id": "<ユーザID>", "status": "available", "description": null, "os-vol-tenant-attr:tenant_id": "<プロジェクトID>", "volume_type": "M1", "name": "TEST_STORAGE_02_20GB", "os-vol-host-attr:host": "ror-cinder@M1_27", "source_volid": null, "snapshot_id": "76323990-13f7-4608-a650-9cfedc4281e6", "os-vol-mig-status-attr:name_id": null } } ====================================================================== 項番3.ブロックストレージアタッチ/デタッチ 増設ブロックストレージ1を仮想サーバからデタッチし、増設ブロック ストレージ2を仮想サーバにアタッチし、デタッチおよびアタッチされた ことを確認します。 項番3-1.仮想サーバのストレージ一覧確認 仮想サーバにアタッチされているストレージ一覧を確認します。 注意事項: ・確認時に増設ブロックストレージ1のデバイス名を控えてください。 増設ブロックストレージ2をアタッチする際に同一のデバイス名を 指定します。 異なるデバイス名を指定した場合は、増設ブロックストレージの アタッチ後に仮想サーバにログインし、対象ストレージのフォーマット、 パーティション設定等を実施してください。 環境定義コマンド例: ====================================================================== # SERVER_ID=<仮想サーバID> SERVER_ID=701c9671-0cac-46ee-b216-251a543487d4 API実行コマンド例: ====================================================================== curl -Ss $COMPUTE/v2/$PROJECT_ID/servers/$SERVER_ID/os-volume_attachments -X GET -H "X-Auth-Token:$OS_AUTH_TOKEN" -H "Content-Type:application/json" | jq . レスポンス例: ====================================================================== { "volumeAttachments": [ { "volumeId": "20ebc60b-1de8-4417-9fe3-156f80ce63r9", "id": "20ebc60b-1de8-4417-9fe3-156f80ce63r9", "serverId": "701c9671-0cac-46ee-b216-251a543487d4", "device": "/dev/vda" }, { "volumeId": "101fe2fd-71df-4ef6-a8cc-dfc49ba60n2s", "id": "101fe2fd-71df-4ef6-a8cc-dfc49ba60n2s", "serverId": "701c9671-0cac-46ee-b216-251a543487d4", "device": "/dev/vdb" } ] } ====================================================================== 項番3-2.ブロックストレージデタッチ 仮想サーバにアタッチされている増設ブロックストレージ1をデタッチ します。 環境定義コマンド例: ====================================================================== # TMP_SERVER_ID=<増設ブロックストレージ1をデタッチする仮想サーバID> TMP_SERVER_ID=701c9671-0cac-46ee-b216-251a543487d4 # ATTACHMENT_ID=<増設ブロックストレージ1ID> ATTACHMENT_ID=101fe2fd-71df-4ef6-a8cc-dfc49ba60n2s API実行コマンド例: ====================================================================== curl -i -Ss $COMPUTE/v2/$PROJECT_ID/servers/$TMP_SERVER_ID/os-volume_attachments/$ATTACHMENT_ID -X DELETE -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" レスポンス例: ====================================================================== HTTP/1.1 202 Accepted X-Fcx-Endpoint-Request: EXECUTED_REQ014893721_202 Date: Tue, 26 Dec 2017 01:09:03 GMT Server: Apache x-compute-request-id: req-6feec4eb-3ffb-4c29-aef4-d2dd014d3010 Cache-Control: no-cache X-Request-Id: 3934f78c-3305-4270-830c-52fe60173b20 X-Runtime: 1.346000 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html;charset=UTF-8 Content-Length: 0 ====================================================================== 項番3-3.仮想サーバのストレージ一覧確認 仮想サーバから増設ブロックストレージ1がデタッチされたことを確認 します。 環境定義コマンド例: ====================================================================== # SERVER_ID=<増設ブロックストレージ1をデタッチした仮想サーバID> SERVER_ID=701c9671-0cac-46ee-b216-251a543487d4 API実行コマンド例: ====================================================================== curl -Ss $COMPUTE/v2/$PROJECT_ID/servers/$SERVER_ID/os-volume_attachments -X GET -H "X-Auth-Token:$OS_AUTH_TOKEN" -H "Content-Type:application/json" | jq . レスポンス例: ====================================================================== { "volumeAttachments": [ { "volumeId": "20ebc60b-1de8-4417-9fe3-156f80ce63r9", "id": "20ebc60b-1de8-4417-9fe3-156f80ce63r9", "serverId": "701c9671-0cac-46ee-b216-251a543487d4", "device": "/dev/vda" } ] } ====================================================================== 項番3-4.ブロックストレージアタッチ 作成した増設ブロックストレージ2を仮想サーバにアタッチします。 注意事項: ・指定するデバイス名は「項番3-1」で確認した増設ブロック ストレージ1のデバイス名を指定してください。 異なるデバイス名を指定した場合は、仮想サーバにログインし、 アタッチしたブロックストレージのフォーマット、パーティション設定 等を実施してください。 ・増設ブロックストレージ1と同一デバイス名を指定した場合について、 LinuxOSの場合は、増設ブロックストレージのアタッチ後に、仮想サーバ にログインし、容量拡張のパーティション設定を実施してください。 WindowsOSの場合は、容量拡張は自動認識されています。 環境定義コマンド例: ====================================================================== # SERVER_ID=<増設ブロックストレージ2をアタッチする仮想サーバID> SERVER_ID=701c9671-0cac-46ee-b216-251a543487d4 # VOLUME_ID=<増設ブロックストレージ2のID> VOLUME_ID=ddd5e24d-a44a-47c2-b91e-c4366dc25965 # DEVICE=<デバイス名(「/dev/vda」の形式で指定(増設ブロック # ストレージ1と同一のデバイス名))> DEVICE=/dev/vdb API実行コマンド例: ====================================================================== curl -Ss $COMPUTE/v2/$PROJECT_ID/servers/$SERVER_ID/os-volume_attachments -X POST -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"volumeAttachment": {"server_id": "'$SERVER_ID'","volumeId": "'$VOLUME_ID'","device": "'$DEVICE'"}}' | jq . レスポンス例: ====================================================================== { "volumeAttachment": { "volumeId": "ddd5e24d-a44a-47c2-b91e-c4366dc25965", "id": "ddd5e24d-a44a-47c2-b91e-c4366dc25965", "serverId": "701c9671-0cac-46ee-b216-251a543487d4", "device": "/dev/vdb" } } ====================================================================== 項番3-5.仮想サーバのストレージ一覧確認 仮想サーバに増設ブロックストレージ2がアタッチされたことを確認 します。 環境定義コマンド例: ====================================================================== # SERVER_ID=<増設ブロックストレージ2をアタッチした仮想サーバID> SERVER_ID=701c9671-0cac-46ee-b216-251a543487d4 API実行コマンド例: ====================================================================== curl -Ss $COMPUTE/v2/$PROJECT_ID/servers/$SERVER_ID/os-volume_attachments -X GET -H "X-Auth-Token:$OS_AUTH_TOKEN" -H "Content-Type:application/json" | jq . レスポンス例: ====================================================================== { "volumeAttachments": [ { "volumeId": "20ebc60b-1de8-4417-9fe3-156f80ce63r9", "id": "20ebc60b-1de8-4417-9fe3-156f80ce63r9", "serverId": "701c9671-0cac-46ee-b216-251a543487d4", "device": "/dev/vda" }, { "volumeId": "ddd5e24d-a44a-47c2-b91e-c4366dc25965", "id": "ddd5e24d-a44a-47c2-b91e-c4366dc25965", "serverId": "701c9671-0cac-46ee-b216-251a543487d4", "device": "/dev/vdb" } ] } ====================================================================== 項番4.仮想サーバ起動 仮想サーバを起動し、起動したことを確認します。 項番4-1.仮想サーバ起動 仮想サーバを起動します。 注意事項: ・仮想サーバ起動後、仮想サーバにログインし、必要に応じてブロック ストレージのパーティション設定を実施してください。 LinuxOSの場合は、増設ブロックストレージのアタッチ後に、仮想サーバ にログインし、容量拡張のパーティション設定を実施してください。 WindowsOSの場合は、容量拡張は自動認識されています。 環境定義コマンド例: ====================================================================== # SERVER_ID=<増設ブロックストレージ2をアタッチした仮想サーバ> SERVER_ID=701c9671-0cac-46ee-b216-251a543487d4 API実行コマンド例: ====================================================================== curl -i -Ss $COMPUTE/v2/$PROJECT_ID/servers/$SERVER_ID/action -X POST -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"os-start": null}' レスポンス例: ====================================================================== HTTP/1.1 202 Accepted X-Fcx-Endpoint-Request: EXECUTED_REQ016335081_202 Date: Tue, 26 Dec 2017 01:36:41 GMT Server: Apache x-compute-request-id: req-3ab47c42-f081-499a-a78b-cc9122d17dac Cache-Control: no-cache X-Request-Id: 106bbc12-1709-4da9-af58-0935207f3805 X-Runtime: 0.889000 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html;charset=UTF-8 Content-Length: 0 ====================================================================== 項番4-2.仮想サーバ確認 仮想サーバが起動したことを以下のパラメータで確認します。 ・"status": "ACTIVE" 環境定義コマンド例: ====================================================================== # SERVER_ID=<起動した仮想サーバID> SERVER_ID=701c9671-0cac-46ee-b216-251a543487d4 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": 1, "progress": 0, "accessIPv6": "", "accessIPv4": "", "os-extended-volumes:volumes_attached": [ { "id": "20ebc60b-1de8-4417-9fe3-156f80ce63r9" }, { "id": "ddd5e24d-a44a-47c2-b91e-c4366dc25965" } ], "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-c445f9041c9d" }, "key_name": "TEST_KEY_AZ1", "links": [ { "rel": "self", "href": "http://10.27.0.201/v2/<プロジェクトID>/servers/701c9671-0cac-46ee-b216-251a543487d4" }, { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/servers/701c9671-0cac-46ee-b216-251a543487d4" } ], "addresses": { "TEST_NETWORK_01": [ { "OS-EXT-IPS:type": "fixed", "addr": "192.168.50.6", "version": 4, "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:86:ea:99" } ] }, "OS-EXT-SRV-ATTR:host": "jp3a01-pgy042-00", "hostId": "b2aace3ae2ae45000ea30cfda0095803eaac68959eb5515736461318", "updated": "2017-12-26T01:36:43Z", "status": "ACTIVE", "OS-EXT-STS:task_state": null, "OS-EXT-STS:vm_state": "active", "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-251a543487d4", "security_groups": [ { "name": "TEST_SG_01" } ] } } ====================================================================== 以上