既知の事象

Create server API の”block_device_mapping_v2″において”source_type:blank”により意図しない動作をする事象

(:更新)

事象概要

仮想サーバーのインスタンス作成を行うAPI:Virtual Server(Nova) Create serverでは、リクエストボディに“block_device_mapping_v2”を指定することで、あらかじめボリュームをアタッチした状態でインスタンスを作成する事が出来ます。

この際にアタッチするボリュームについて “source_type”: “blank” を設定すると、新規にボリュームを作成しアタッチいたします。インスタンスの初回起動時は問題なくボリュームをご利用いただくことができますが、インスタンスを停止/起動するとボリュームのデタッチ/アタッチが出来ずインスタンスから参照することも出来ない状態になります。

事象詳細

以下のように “block_device_mapping_v2”を設定したリクエストボディでCreate server APIをコールします。

{

   “server”: {

       “availability_zone”: “zone1-groupa”,

       “block_device_mapping_v2”: [

           {

               “boot_index”: 0,

               “delete_on_termination”: true,

               “destination_type”: “volume”,

               “source_type”: “image”,

               “uuid”: “29266056-fd5b-4f73-8b4d-194785cbbc45”,

               “volume_size”: 100

           },

           {

               “boot_index”: 1,

               “delete_on_termination”: true,

               “destination_type”: “volume”,

               “source_type”: “blank”,

               “volume_size”: 100

           },

           {

               “boot_index”: 2,

               “delete_on_termination”: true,

               “destination_type”: “volume”,

               “source_type”: “blank”,

               “volume_size”: 15

           }

       ],

       “flavorRef”: “1CPU-4GB”,

       “imageRef”: “”,

       “name”: “el1nv-vspr0002n “,

       “networks”: [

           {

               “fixed_ip”: “10.10.0.6”,

               “uuid”: “xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,

           }

       ],

       “user_data”: “”

   }

}

以下の画像をご覧ください。インスタンス作成直後ではvdb(100G),vdc(15G)が認識出来ております。

しかし、一度インスタンスの停止/起動を行うと以下のようにvdb(100G),vdc(15G)が見えなくなってしまいます。

また、クラウド・コンピューティングコントロールパネルから、対象ボリュームのアタッチ・デタッチを実行することも出来なくなってしまいます。

対処方法

“block_device_mapping_v2” で、“source_type” “blank” を指定しないでください。あらかじめボリュームをアタッチした状態でインスタンスを作成したい場合は、事前に仮想サーバーのボリュームを作成するAPI:Virtual Server(Cinder) Create Volumeか、クラウド・コンピューティングコントロールパネルからボリュームを作成し、“block_device_mapping_v2”の中で“source_type”: “volume”“uuid”: “(事前に作成いただいたボリュームのUUID)”を設定してください。

以下にそのリクエストボディの例を示します。

{

   “server”: {

       “availability_zone”: “zone1-groupa”,

       “block_device_mapping_v2”: [

           {

               “boot_index”: 0,

               “delete_on_termination”: true,

               “destination_type”: “volume”,

               “source_type”: “image”,

               “uuid”: “29266056-fd5b-4f73-8b4d-194785cbbc45”,

               “volume_size”: 100

           },

           {

               “boot_index”: 1,

               “delete_on_termination”: true,

               “destination_type”: “volume”,

               “source_type”: “volume”,

               “uuid”: “xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”

           },

           {

               “boot_index”: 2,

               “delete_on_termination”: true,

               “destination_type”: “volume”,

               “source_type”: “volume”,

               “uuid”: “xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”

           }

       ],

       “flavorRef”: “1CPU-4GB”,

       “imageRef”: “”,

       “name”: “el1nv-vspr0002n”,

       “networks”: [

           {

               “fixed_ip”: “10.10.0.6”,

               “uuid”: “xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,

           }

       ],

       “user_data”: “”

   }

}