###################################################################### # All Rights Reserved, Copyright FUJITSU LIMITED 2015-2018 # # API実行サンプル名: # 03-005_ブロックデバイスマッピング設定 # # 内容: # ブロックデバイスマッピング設定を行い、事前に作成したブロック # ストレージを仮想サーバの起動デバイスとしてアタッチ/デタッチする # 手順です。 # # 版数:v1.1 # 更新日:2018/1/26 ###################################################################### 手順: ─────────────────────────────────── 項番1.リソース確認 項番1-1.仮想サーバ確認 項番1-2.ブロックストレージ確認 項番2.ブロックストレージアタッチ 項番2-1.ブロックストレージアタッチ 項番2-2.仮想サーバのストレージ一覧確認 項番2-3.ブロックストレージ確認 項番3.ブロックストレージデタッチ 項番3-1.ブロックストレージデタッチ 項番3-2.仮想サーバのストレージ一覧確認 項番3-3.ブロックストレージ確認 参考1.ストレージ削除 ─────────────────────────────────── 事前準備: あらかじめ以下を準備する必要があります。 ─────────────────────────────────── ・仮想サーバ ・ブロックストレージ ─────────────────────────────────── 注意事項: ・ブロックストレージを仮想サーバにアタッチする場合、ブロックデバイス マッピング設定を行う必要があります。 ・ブロックストレージの作成方法については、API実行サンプル「ブロック ストレージ作成」を参照してください。 ・ブロックストレージのアタッチ後、仮想サーバにログインし、ストレージ のフォーマット、パーティション設定等を実施の上、ご利用ください。 項番1.リソース確認 事前に作成した仮想サーバ、ブロックストレージの状態を確認します。 項番1-1.仮想サーバ確認 事前に作成した仮想サーバの以下パラメータでアタッチされている ストレージを確認します。 ・"os-extended-volumes:volumes_attached": [{"id": "<仮想サーバに アタッチされているストレージID>"}] 注意事項: ・アタッチされているストレージが1つのみの場合はシステムストレージ のみがアタッチされている状態となります。 環境定義コマンド例: ====================================================================== # SERVER_ID=<事前に作成した仮想サーバID> SERVER_ID=2d21f5c5-02dc-48ad-9e0a-4bdaf8959821 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": "9e1eb3bb-e412-4b53-9afb-89ef26643h5s" } ], "OS-DCF:diskConfig": "MANUAL", "tenant_id": "<プロジェクトID>", "created": "2017-12-26T06:22: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/2d21f5c5-02dc-48ad-9e0a-4bdaf8959821" }, { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/servers/2d21f5c5-02dc-48ad-9e0a-4bdaf8959821" } ], "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:bd:cc:92" } ] }, "OS-EXT-SRV-ATTR:host": "jp3a01-pgy042-00", "hostId": "b2aace3ae2ae45000ea30cfda0095803eaac68959eb5515736461318", "updated": "2017-12-26T06:33:05Z", "status": "SHUTOFF", "OS-EXT-STS:task_state": null, "OS-EXT-STS:vm_state": "stopped", "OS-EXT-SRV-ATTR:instance_name": "instance-0001e357", "OS-SRV-USG:launched_at": "2017-12-26T06:24:00.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": "2d21f5c5-02dc-48ad-9e0a-4bdaf8959821", "security_groups": [ { "name": "TEST_SG_01" } ] } } ====================================================================== 項番1-2.ブロックストレージ確認 事前に作成したブロックストレージが仮想サーバに割り当てられていない ことを以下パラメータで、確認します。 ・"status": "available" ・"attachments": [] ※何も記載されていない 環境定義コマンド例: ====================================================================== # VOLUME_ID=<事前に作成したブロックストレージID> VOLUME_ID=3b4d3989-8048-4020-8f7d-8f41bdeb9m5b 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": "3b4d3989-8048-4020-8f7d-8f41bdeb9m5b", "metadata": { "readonly": "False" }, "created_at": "2017-12-26T06:25:18.000000", "encrypted": false, "bootable": "false", "availability_zone": "jp-west-2a", "links": [ { "rel": "self", "href": "http://10.27.0.201/v2/<プロジェクトID>/volumes/3b4d3989-8048-4020-8f7d-8f41bdeb9m5b" }, { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/volumes/3b4d3989-8048-4020-8f7d-8f41bdeb9m5b" } ], "attachments": [], "user_id": "<ユーザID>", "status": "available", "description": null, "os-vol-tenant-attr:tenant_id": "<プロジェクトID>", "volume_type": "M1", "name": "TEST_STORAGE_01", "os-vol-host-attr:host": "ror-cinder@M1_28", "source_volid": null, "snapshot_id": null, "os-vol-mig-status-attr:name_id": null } } ====================================================================== 項番2.ブロックストレージアタッチ ブロックストレージを仮想サーバにアタッチし、アタッチされたことを 確認します。 注意事項: ・ブロックストレージのアタッチ後、仮想サーバにログインし、ストレージ のフォーマット、パーティション設定等を実施の上、ご利用ください。 項番2-1.ブロックストレージアタッチ ブロックストレージを仮想サーバの起動デバイスとしてアタッチします。 注意事項: ・デバイス名「/dev/vda」はシステムストレージを指定してください。 環境定義コマンド例: ====================================================================== # SERVER_ID=<ブロックストレージをアタッチする仮想サーバID> SERVER_ID=2d21f5c5-02dc-48ad-9e0a-4bdaf8959821 # VOLUME_ID=<アタッチするブロックストレージID> VOLUME_ID=3b4d3989-8048-4020-8f7d-8f41bdeb9m5b # DEVICE=<デバイス名(「/dev/vda」の形式で指定)> 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": "3b4d3989-8048-4020-8f7d-8f41bdeb9m5b", "id": "3b4d3989-8048-4020-8f7d-8f41bdeb9m5b", "serverId": "2d21f5c5-02dc-48ad-9e0a-4bdaf8959821", "device": "/dev/vdb" } } ====================================================================== 項番2-2.仮想サーバのストレージ一覧確認 仮想サーバにアタッチされているストレージ一覧を表示し、指定した ブロックストレージがアタッチされていることを確認します。 環境定義コマンド例: ====================================================================== # SERVER_ID=<ブロックストレージをアタッチした仮想サーバID> SERVER_ID=2d21f5c5-02dc-48ad-9e0a-4bdaf8959821 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": "9e1eb3bb-e412-4b53-9afb-89ef26643h5s", "id": "9e1eb3bb-e412-4b53-9afb-89ef26643h5s", "serverId": "2d21f5c5-02dc-48ad-9e0a-4bdaf8959821", "device": "/dev/vda" }, { "volumeId": "3b4d3989-8048-4020-8f7d-8f41bdeb9m5b", "id": "3b4d3989-8048-4020-8f7d-8f41bdeb9m5b", "serverId": "2d21f5c5-02dc-48ad-9e0a-4bdaf8959821", "device": "/dev/vdb" } ] } ====================================================================== 項番2-3.ブロックストレージ確認 ブロックストレージの詳細を確認し、仮想サーバにアタッチされたことを 以下のパラメータで確認してください。 ・"status": "in-use" ・"attachments":[{"server_id": "<仮想サーバID>"}] 環境定義コマンド例: ====================================================================== # VOLUME_ID=<仮想サーバにアタッチしたブロックストレージID> VOLUME_ID=3b4d3989-8048-4020-8f7d-8f41bdeb9m5b 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": "3b4d3989-8048-4020-8f7d-8f41bdeb9m5b", "metadata": { "attached_mode": "rw", "readonly": "False" }, "created_at": "2017-12-26T06:25:18.000000", "encrypted": false, "bootable": "false", "availability_zone": "jp-west-2a", "links": [ { "rel": "self", "href": "http://10.27.0.201/v2/<プロジェクトID>/volumes/3b4d3989-8048-4020-8f7d-8f41bdeb9m5b" }, { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/volumes/3b4d3989-8048-4020-8f7d-8f41bdeb9m5b" } ], "attachments": [ { "volume_id": "3b4d3989-8048-4020-8f7d-8f41bdeb9m5b", "id": "3b4d3989-8048-4020-8f7d-8f41bdeb9m5b", "server_id": "2d21f5c5-02dc-48ad-9e0a-4bdaf8959821", "device": "/dev/vdc", "host_name": null } ], "user_id": "<ユーザID>", "status": "in-use", "description": null, "os-vol-tenant-attr:tenant_id": "<プロジェクトID>", "volume_type": "M1", "name": "TEST_STORAGE_01", "os-vol-host-attr:host": "ror-cinder@M1_28", "source_volid": null, "snapshot_id": null, "os-vol-mig-status-attr:name_id": null } } ====================================================================== 項番3.ブロックストレージデタッチ ブロックストレージを仮想サーバからデタッチし、デタッチされたことを 確認します。 項番3-1.ブロックストレージデタッチ ブロックストレージを仮想サーバからデタッチします。 注意事項: ・デバイス名「/dev/vda」はシステムストレージのため、デタッチ できません。 環境定義コマンド例: ====================================================================== # TMP_SERVER_ID=<ブロックストレージをデタッチする仮想サーバID> TMP_SERVER_ID=2d21f5c5-02dc-48ad-9e0a-4bdaf8959821 # TMP_ATTACHMENT_ID=<デタッチするブロックストレージID> TMP_ATTACHMENT_ID=3b4d3989-8048-4020-8f7d-8f41bdeb9m5b API実行コマンド例: ====================================================================== curl -i -Ss -X DELETE $COMPUTE/v2/$PROJECT_ID/servers/$TMP_SERVER_ID/os-volume_attachments/$TMP_ATTACHMENT_ID -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" レスポンス例: ====================================================================== HTTP/1.1 202 Accepted X-Fcx-Endpoint-Request: EXECUTED_REQ016397941_202 Date: Tue, 26 Dec 2017 07:07:17 GMT Server: Apache x-compute-request-id: req-9d0b8ce6-f8b1-4053-9c1e-64561003544e Cache-Control: no-cache X-Request-Id: 91ea8fbf-e0e1-407b-86db-958e7c07a4e3 X-Runtime: 1.324000 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html;charset=UTF-8 Content-Length: 0 ====================================================================== 項番3-2.仮想サーバのストレージ一覧確認 仮想サーバにアタッチされているストレージ一覧を表示し、 アタッチされていたストレージがデタッチされていることを確認します。 環境定義コマンド例: ====================================================================== # SERVER_ID=<ブロックストレージをデタッチした仮想サーバID> SERVER_ID=2d21f5c5-02dc-48ad-9e0a-4bdaf8959821 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": "9e1eb3bb-e412-4b53-9afb-89ef26643h5s", "id": "9e1eb3bb-e412-4b53-9afb-89ef26643h5s", "serverId": "2d21f5c5-02dc-48ad-9e0a-4bdaf8959821", "device": "/dev/vda" } ] } ====================================================================== 項番3-3.ブロックストレージ確認 ブロックストレージの詳細を確認し、仮想サーバからデタッチされたことを 以下のパラメータで確認してください。 ・"status": "available" ・"attachments": [] ※何も記載されていない 環境定義コマンド例: ====================================================================== # VOLUME_ID=<仮想サーバからデタッチしたブロックストレージID> VOLUME_ID=3b4d3989-8048-4020-8f7d-8f41bdeb9m5b 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": "3b4d3989-8048-4020-8f7d-8f41bdeb9m5b", "metadata": { "readonly": "False" }, "created_at": "2017-12-26T06:25:18.000000", "encrypted": false, "bootable": "false", "availability_zone": "jp-west-2a", "links": [ { "rel": "self", "href": "http://10.27.0.201/v2/<プロジェクトID>/volumes/3b4d3989-8048-4020-8f7d-8f41bdeb9m5b" }, { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/volumes/3b4d3989-8048-4020-8f7d-8f41bdeb9m5b" } ], "attachments": [], "user_id": "<ユーザーID>", "status": "available", "description": null, "os-vol-tenant-attr:tenant_id": "<プロジェクトID>", "volume_type": "M1", "name": "TEST_STORAGE_01", "os-vol-host-attr:host": "ror-cinder@M1_28", "source_volid": null, "snapshot_id": null, "os-vol-mig-status-attr:name_id": null } } ====================================================================== 参考1.ストレージ削除 指定したストレージを削除します。 環境定義コマンド例: ====================================================================== # TMP_VOLUME_ID=<削除するストレージID> TMP_VOLUME_ID=3b4d3989-8048-4020-8f7d-8f41bdeb9m5b API実行コマンド例: ====================================================================== curl -i -Ss $BLOCKSTORAGE/v2/$PROJECT_ID/volumes/$TMP_VOLUME_ID -X DELETE -H "X-Auth-Token: $OS_AUTH_TOKEN" レスポンス例: ====================================================================== HTTP/1.1 202 Accepted X-Fcx-Endpoint-Request: EXECUTED_REQ014919729_202 Date: Tue, 26 Dec 2017 07:12:19 GMT Server: Apache x-openstack-request-id: req-bfe83d77-6ac3-4034-8408-83b9627aecbc Cache-Control: no-cache X-Request-Id: 9ecb8156-d90d-4567-8a5e-868a7ba35674 X-Runtime: 0.942000 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html;charset=UTF-8 Content-Length: 0 ====================================================================== 変更履歴: ─────────────────────────────────── v1.1版: ・項番全体:項番構成の見直し、説明修正 ─────────────────────────────────── 以上