ボリュームの管理

ボリュームの管理

ボリュームは、USB ハードディスクのように、着脱可能なブロックストレージです。ボリュームは、インスタンス 1 つだけに接続できます。openstack コマンドを使用して、ボリュームを作成して管理します。

ボリュームの移行

管理者は、ユーザーに意識させず、またワークロードの中断なしに、データを含めた状態でボリュームを別の場所に移動することができます。スナップショットを持たない、切断されているボリュームだけが移動できます。

データ移動で考えられるユースケースは、以下のとおりです。

  • Bring down a physical storage device for maintenance without disrupting workloads.
  • ボリュームのプロパティーを編集します。
  • シンプロビジョニングされたバックエンドで空き容量を解放する

以下の例にあるように、openstack volume migrate コマンドでボリュームを移行します。

$ openstack volume migrate [-h] --host <host> [--force-host-copy]
                                  [--lock-volume | --unlock-volume]
                                  <volume>

この例では、--force-host-copy は、強制的に一般的なホストベースのマイグレーションの仕組みを使用してドライバーの最適化なしで進めます。--lock-volume | --unlock-volume は、利用可能なボリュームに適用されます。他のコマンドによりボリュームの移動が終了したかどうかを調べるためです。--lock-volume は、ボリュームの状態がロックされ、移動の中断が許可されません。

注釈

ボリュームにスナップショットが存在する場合、指定のマイグレーション先のホストは、そのボリュームを受け入れることができません。また、管理ユーザーではない場合も、マイグレーションは失敗します。

ボリュームの作成

以下の例では、イメージをベースにして my-new-volume ボリュームを作成します。

  1. イメージを一覧表示し、ボリュームに使用したいイメージの ID を記録します。

    $ openstack image list
    +--------------------------------------+---------------------------------+
    | ID                                   | Name                            |
    +--------------------------------------+---------------------------------+
    | 8bf4dc2a-bf78-4dd1-aefa-f3347cf638c8 | cirros-0.3.5-x86_64-uec         |
    | 9ff9bb2e-3a1d-4d98-acb5-b1d3225aca6c | cirros-0.3.5-x86_64-uec-kernel  |
    | 4b227119-68a1-4b28-8505-f94c6ea4c6dc | cirros-0.3.5-x86_64-uec-ramdisk |
    +--------------------------------------+---------------------------------+
    
  2. アベイラビリティゾーンを表示して、その中からボリュームを作成するアベイラビリティゾーンの ID をメモします。

    $ openstack availability zone list
    +------+-----------+
    | Name |   Status  |
    +------+-----------+
    | nova | available |
    +------+-----------+
    
  3. Create a volume with 8 gibibytes (GiB) of space, and specify the availability zone and image:

    $ openstack volume create --image 8bf4dc2a-bf78-4dd1-aefa-f3347cf638c8 \
      --size 8 --availability-zone nova my-new-volume
    
    +------------------------------+--------------------------------------+
    | Property                     | Value                                |
    +------------------------------+--------------------------------------+
    | attachments                  | []                                   |
    | availability_zone            | nova                                 |
    | bootable                     | false                                |
    | consistencygroup_id          | None                                 |
    | created_at                   | 2016-09-23T07:52:42.000000           |
    | description                  | None                                 |
    | encrypted                    | False                                |
    | id                           | bab4b0e0-ce3d-4d57-bf57-3c51319f5202 |
    | metadata                     | {}                                   |
    | multiattach                  | False                                |
    | name                         | my-new-volume                        |
    | os-vol-tenant-attr:tenant_id | 3f670abbe9b34ca5b81db6e7b540b8d8     |
    | replication_status           | disabled                             |
    | size                         | 8                                    |
    | snapshot_id                  | None                                 |
    | source_volid                 | None                                 |
    | status                       | creating                             |
    | updated_at                   | None                                 |
    | user_id                      | fe19e3a9f63f4a14bd4697789247bbc5     |
    | volume_type                  | lvmdriver-1                          |
    +------------------------------+--------------------------------------+
    
  4. ボリュームが正常に作成されたことを確認するには、利用可能なボリュームを一覧表示します。

    $ openstack volume list
    +--------------------------------------+---------------+-----------+------+-------------+
    | ID                                   | DisplayName   |  Status   | Size | Attached to |
    +--------------------------------------+---------------+-----------+------+-------------+
    | bab4b0e0-ce3d-4d57-bf57-3c51319f5202 | my-new-volume | available | 8    |             |
    +--------------------------------------+---------------+-----------+------+-------------+
    

    ボリュームが正常に作成された場合、状態は available にとなります。状態が error の場合、クォータを超過している可能性があります。

指定したボリューム種別からのボリューム作成

cinder には、ボリューム作成時に volume_type を指定する方法が 3 つあります。

  1. volume_type
  2. cinder_img_volume_type (Image サービスのメタデータ経由)
  3. default_volume_type (cinder.conf 経由)

volume_type

ユーザーは、ボリューム作成時に volume type を指定できます。

$ openstack volume create -h -f {json,shell,table,value,yaml}
                         -c COLUMN --max-width <integer>
                         --noindent --prefix PREFIX --size <size>
                         --type <volume-type> --image <image>
                         --snapshot <snapshot> --source <volume>
                         --description <description> --user <user>
                         --project <project>
                         --availability-zone <availability-zone>
                         --property <key=value>
                         <name>

cinder_img_volume_type

glance イメージに cinder_img_volume_type プロパティーがある場合、 cinder はボリューム作成時にこのパラメーターを使って volume_type を指定します。

cinder_img_volume_type プロパティーを持つ glance イメージを選択して、そのイメージからボリュームを作成します。

$ openstack image list
+----------------------------------+---------------------------------+--------+
| ID                               | Name                            | Status |
+----------------------------------+---------------------------------+--------+
| 376bd633-c9c9-4c5d-a588-342f4f66 | cirros-0.3.5-x86_64-uec         | active |
| d086                             |                                 |        |
| 2c20fce7-2e68-45ee-ba8d-         | cirros-0.3.5-x86_64-uec-ramdisk | active |
| beba27a91ab5                     |                                 |        |
| a5752de4-9faf-4c47-acbc-         | cirros-0.3.5-x86_64-uec-kernel  | active |
| 78a5efa7cc6e                     |                                 |        |
+----------------------------------+---------------------------------+--------+


$ openstack image show 376bd633-c9c9-4c5d-a588-342f4f66d086
+------------------+-----------------------------------------------------------+
| Field            | Value                                                     |
+------------------+-----------------------------------------------------------+
| checksum         | eb9139e4942121f22bbc2afc0400b2a4                          |
| container_format | ami                                                       |
| created_at       | 2016-10-13T03:28:55Z                                      |
| disk_format      | ami                                                       |
| file             | /v2/images/376bd633-c9c9-4c5d-a588-342f4f66d086/file      |
| id               | 376bd633-c9c9-4c5d-a588-342f4f66d086                      |
| min_disk         | 0                                                         |
| min_ram          | 0                                                         |
| name             | cirros-0.3.5-x86_64-uec                                   |
| owner            | 88ba456e3a884c318394737765e0ef4d                          |
| properties       | kernel_id='a5752de4-9faf-4c47-acbc-78a5efa7cc6e',         |
|                  | ramdisk_id='2c20fce7-2e68-45ee-ba8d-beba27a91ab5'         |
| protected        | False                                                     |
| schema           | /v2/schemas/image                                         |
| size             | 25165824                                                  |
| status           | active                                                    |
| tags             |                                                           |
| updated_at       | 2016-10-13T03:28:55Z                                      |
| virtual_size     | None                                                      |
| visibility       | public                                                    |
+------------------+-----------------------------------------------------------+

$ openstack volume create --image 376bd633-c9c9-4c5d-a588-342f4f66d086 \
  --size 1 --availability-zone nova test
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| attachments         | []                                   |
| availability_zone   | nova                                 |
| bootable            | false                                |
| consistencygroup_id | None                                 |
| created_at          | 2016-10-13T06:29:53.688599           |
| description         | None                                 |
| encrypted           | False                                |
| id                  | e6e6a72d-cda7-442c-830f-f306ea6a03d5 |
| multiattach         | False                                |
| name                | test                                 |
| properties          |                                      |
| replication_status  | disabled                             |
| size                | 1                                    |
| snapshot_id         | None                                 |
| source_volid        | None                                 |
| status              | creating                             |
| type                | lvmdriver-1                          |
| updated_at          | None                                 |
| user_id             | 33fdc37314914796883706b33e587d51     |
+---------------------+--------------------------------------+

default_volume_type

上記のパラメーターが設定されなかった場合、 cinder はボリューム作成時に cinder.conf に定義された default_volume_type を使用します。

cinder.conf 設定ファイルの例。

[default]
default_volume_type = lvmdriver-1

ボリュームのインスタンスへの接続

  1. Attach your volume to a server, specifying the server ID and the volume ID:

    $ openstack server add volume 84c6e57d-a6b1-44b6-81eb-fcb36afd31b5 \
      573e024d-5235-49ce-8332-be1576d323f8 --device /dev/vdb
    
  2. お使いのボリュームの情報を表示します。

    $ openstack volume show 573e024d-5235-49ce-8332-be1576d323f8
    

    この出力から、このボリュームは ID が 84c6e57d-a6b1-44b6-81eb-fcb36afd31b5 のサーバーに接続されていること、nova のアベイラビリティゾーン内にあること、ブータブルであることが分かります。

    +------------------------------+-----------------------------------------------+
    | Field                        | Value                                         |
    +------------------------------+-----------------------------------------------+
    | attachments                  | [{u'device': u'/dev/vdb',                     |
    |                              |        u'server_id': u'84c6e57d-a             |
    |                              |           u'id': u'573e024d-...               |
    |                              |        u'volume_id': u'573e024d...            |
    | availability_zone            | nova                                          |
    | bootable                     | true                                          |
    | consistencygroup_id          | None                                          |
    | created_at                   | 2016-10-13T06:08:07.000000                    |
    | description                  | None                                          |
    | encrypted                    | False                                         |
    | id                           | 573e024d-5235-49ce-8332-be1576d323f8          |
    | multiattach                  | False                                         |
    | name                         | my-new-volume                                 |
    | os-vol-tenant-attr:tenant_id | 7ef070d3fee24bdfae054c17ad742e28              |
    | properties                   |                                               |
    | replication_status           | disabled                                      |
    | size                         | 8                                             |
    | snapshot_id                  | None                                          |
    | source_volid                 | None                                          |
    | status                       | in-use                                        |
    | type                         | lvmdriver-1                                   |
    | updated_at                   | 2016-10-13T06:08:11.000000                    |
    | user_id                      | 33fdc37314914796883706b33e587d51              |
    | volume_image_metadata        |{u'kernel_id': u'df430cc2...,                  |
    |                              |        u'image_id': u'397e713c...,            |
    |                              |        u'ramdisk_id': u'3cf852bd...,          |
    |                              |u'image_name': u'cirros-0.3.5-x86_64-uec'}     |
    +------------------------------+-----------------------------------------------+
    

ボリュームのリサイズ

  1. ボリュームをリサイズするには、まずボリュームをサーバーから切り離します。以下のコマンドでサーバー ID とボリューム ID を指定して、サーバーからボリュームを切り離します。

    $ openstack server remove volume 84c6e57d-a6b1-44b6-81eb-fcb36afd31b5 573e024d-5235-49ce-8332-be1576d323f8
    

    このコマンドは何も出力しません。

  2. ボリュームを一覧表示します。

    $ openstack volume list
    +----------------+-----------------+-----------+------+-------------+
    |       ID       |   Display Name  |  Status   | Size | Attached to |
    +----------------+-----------------+-----------+------+-------------+
    | 573e024d-52... |  my-new-volume  | available |  8   |             |
    | bd7cf584-45... | my-bootable-vol | available |  8   |             |
    +----------------+-----------------+-----------+------+-------------+
    

    ボリュームが利用可能になっていることに注意してください。

  3. パラメーターとしてボリューム ID と新しいサイズ (以前のボリュームよりも大きいサイズ) を指定して、ボリュームをリサイズします。

    $ openstack volume set 573e024d-5235-49ce-8332-be1576d323f8 --size 10
    

    このコマンドは何も出力しません。

    注釈

    スナップショットを持つ LVM ボリュームを拡張する場合、ボリュームは停止されます。 lvm.confauto_activation_volume_list が定義されていない場合は、自動的にボリュームの動作が再開されます。詳しい情報は lvm.conf を参照のこと。

ボリュームの削除

  1. To delete your volume, you must first detach it from the server. To detach the volume from your server and check for the list of existing volumes, see steps 1 and 2 in Resize_a_volume.

    ボリューム名または ID を使用してボリュームを削除します。

    $ openstack volume delete my-new-volume
    

    このコマンドは何も出力しません。

  2. List the volumes again, and note that the status of your volume is deleting:

    $ openstack volume list
    +----------------+-----------------+-----------+------+-------------+
    |       ID       |   Display Name  |  Status   | Size | Attached to |
    +----------------+-----------------+-----------+------+-------------+
    | 573e024d-52... |  my-new-volume  |  deleting |  8   |             |
    | bd7cf584-45... | my-bootable-vol | available |  8   |             |
    +----------------+-----------------+-----------+------+-------------+
    

    ボリュームが完全に削除されると、ボリュームの一覧には表示されなくなります。

    $ openstack volume list
    +----------------+-----------------+-----------+------+-------------+
    |       ID       |   Display Name  |  Status   | Size | Attached to |
    +----------------+-----------------+-----------+------+-------------+
    | bd7cf584-45... | my-bootable-vol | available |  8   |             |
    +----------------+-----------------+-----------+------+-------------+
    

ボリュームの譲渡

openstack volume transfer request create コマンドを使用して、別の所有者に転送することができます。ボリュームドナーまたは元の所有者が転送要求を作成し、作成した転送 ID と認証キーをボリュームの転送先に送信します。ボリュームの転送先または新規所有者が ID とキーを使用して転送を確定します。

注釈

ボリューム譲渡の手続きは、プロジェクト (ボリュームの譲渡元と譲渡先) が同じクラウド内にあることを前提にしています。

以下のユースケースがあります。

  • 大容量のデータセットが含まれるボリュームやカスタムのブータブルボリュームを作成して顧客に譲渡する。
  • データのクラウドへの一括インポートのために、データ取り込みシステムは新規のブロックストレージボリュームを作成し、物理デバイスからデータをコピーしてから、デバイスの所有権をエンドユーザーに譲渡する。

ボリューム譲渡要求の作成

  1. ボリュームの譲渡元としてログインし、利用可能なボリュームを一覧表示します。

    $ openstack volume list
    +-----------------+-----------------+-----------+------+-------------+
    |       ID        |   Display Name  |  Status   | Size | Attached to |
    +-----------------+-----------------+-----------+------+-------------+
    | 72bfce9f-cac... |       None      |   error   |  1   |             |
    | a1cdace0-08e... |       None      | available |  1   |             |
    +-----------------+-----------------+-----------+------+-------------+
    
  2. ボリュームの譲渡元として、特定のボリュームのボリューム譲渡認証コードを要求します。

      $ openstack volume transfer request create <volume>
    
    <volume>
       Name or ID of volume to transfer.
    

    ボリュームが available (利用可能) の状態でない場合、要求は却下されます。譲渡要求がデータベース内で有効な場合 (失効していない、または削除されていない場合)、ボリュームは awaiting- transfer (譲渡待ち) の状態になります。たとえば、

    $ openstack volume transfer request create a1cdace0-08e4-4dc7-b9dc-457e9bcfe25f
    

    この出力では、認証キーと、id の行にボリュームの譲渡 ID が表示されます。

    +------------+--------------------------------------+
    | Field      | Value                                |
    +------------+--------------------------------------+
    | auth_key   | 0a59e53630f051e2                     |
    | created_at | 2016-11-03T11:49:40.346181           |
    | id         | 34e29364-142b-4c7b-8d98-88f765bf176f |
    | name       | None                                 |
    | volume_id  | a1cdace0-08e4-4dc7-b9dc-457e9bcfe25f |
    +------------+--------------------------------------+
    

    注釈

    オプションとして、--name transferName パラメーターを使用して譲渡の名前を指定することができます。

    注釈

    auth_key プロパティーが openstack volume transfer request create VOLUME_ID の出力に含まれますが、後続の openstack volume transfer request show TRANSFER_ID コマンドではこれを利用できません。

  3. ボリューム譲渡 ID と認証キーを新しい所有者に送信します (例: 電子メール)。

  4. 処理待ちの譲渡を確認します。

    $ openstack volume transfer request list
    +--------------------------------------+--------------------------------------+------+
    |               ID                     |             Volume                   | Name |
    +--------------------------------------+--------------------------------------+------+
    | 6e4e9aa4-bed5-4f94-8f76-df43232f44dc | a1cdace0-08e4-4dc7-b9dc-457e9bcfe25f | None |
    +--------------------------------------+--------------------------------------+------+
    
  5. ボリュームの譲渡先 (新しい所有者) が譲渡を受理した後は、その譲渡がすでに利用できない状態になっていることが分かります。

    $ openstack volume transfer request list
    +----+-----------+------+
    | ID | Volume ID | Name |
    +----+-----------+------+
    +----+-----------+------+
    

ボリュームの譲渡要求の受理

  1. ボリュームの受取側として、まず、元の所有者から譲渡 ID と認証キーを取得する必要があります。

  2. 要求を確定します。

    $ openstack volume transfer request accept transferID authKey
    

    例:

    $ openstack volume transfer request accept 6e4e9aa4-bed5-4f94-8f76-df43232f44dc b2c8e585cbc68a80
    +-----------+--------------------------------------+
    |  Property |                Value                 |
    +-----------+--------------------------------------+
    |     id    | 6e4e9aa4-bed5-4f94-8f76-df43232f44dc |
    |    name   |                 None                 |
    | volume_id | a1cdace0-08e4-4dc7-b9dc-457e9bcfe25f |
    +-----------+--------------------------------------+
    

    注釈

    転送用のクォータが不足している場合、転送は拒否されます。

ボリューム譲渡の削除

  1. 利用可能なボリュームとその状態を表示します。

    $ openstack volume list
    +-----------------+-----------------+-----------------+------+-------------+
    |       ID        |   Display Name  |      Status     | Size | Attached to |
    +-----------------+-----------------+-----------------+------+-------------+
    | 72bfce9f-cac... |       None      |      error      |  1   |             |
    | a1cdace0-08e... |       None      |awaiting-transfer|  1   |             |
    +-----------------+-----------------+-----------------+------+-------------+
    
  2. 合致する転送 ID を探します。

    $ openstack volume transfer request list
    +--------------------------------------+--------------------------------------+------+
    |               ID                     |             VolumeID                 | Name |
    +--------------------------------------+--------------------------------------+------+
    | a6da6888-7cdf-4291-9c08-8c1f22426b8a | a1cdace0-08e4-4dc7-b9dc-457e9bcfe25f | None |
    +--------------------------------------+--------------------------------------+------+
    
  3. ボリュームを削除します。

    $ openstack volume transfer request delete <transfer>
    
    <transfer>

    削除する移転物の名前または ID。

    例:

    $ openstack volume transfer request delete a6da6888-7cdf-4291-9c08-8c1f22426b8a
    
  4. 転送一覧が空になり、ボリュームが転送に使用できることを確認します。

    $ openstack volume transfer request list
    +----+-----------+------+
    | ID | Volume ID | Name |
    +----+-----------+------+
    +----+-----------+------+
    
    $ openstack volume list
    +-----------------+-----------+--------------+------+-------------+----------+-------------+
    |       ID        |   Status  | Display Name | Size | Volume Type | Bootable | Attached to |
    +-----------------+-----------+--------------+------+-------------+----------+-------------+
    | 72bfce9f-ca...  |   error   |     None     |  1   |     None    |  false   |             |
    | a1cdace0-08...  | available |     None     |  1   |     None    |  false   |             |
    +-----------------+-----------+--------------+------+-------------+----------+-------------+
    

スナップショットの管理対象の切り替え

スナップショットは、ボリュームのある時点での版です。管理者は、スナップショットを管理対象にしたり管理対象から外したりできます。

スナップショットを管理対象にする

openstack volume snapshot set コマンドでスナップショットを管理対象にします。

$ openstack volume snapshot set [-h]
                                [--name <name>]
                                [--description <description>]
                                [--no-property]
                                [--property <key=value>]
                                [--state <state>]
                                <snapshot>

指定する引数は以下のとおりです。

--name <name>
新しいスナップショットの名前
--description <description>
新しいスナップショットの説明
--no-property
Remove all properties from <snapshot> (specify both –no-property and –property to remove the current properties before setting new properties.)
--property <key=value>
このスナップショット向けに追加または変更するプロパティー (オプションを繰り返して、複数のプロパティーを設定します)
--state <state>
新しいスナップショットの状態。「利用可能」「エラー」「作成中」「削除中」「削除エラー」(管理者のみ)。このオプションは、実際の状態に関わらず、単にデータベースにおけるスナップショットの状態を変更します。使用時に警告が表示されます。
<snapshot>
変更するスナップショット (名前または ID)
$ openstack volume snapshot set my-snapshot-id

スナップショットを管理対象外にする

openstack volume snapshot unset コマンドでスナップショットを管理対象外にします。

$ openstack volume snapshot unset [-h]
                                  [--property <key>]
                                  <snapshot>

指定する引数は以下のとおりです。

--property <key>
スナップショットから削除するプロパティー (オプションを繰り返して、複数のプロパティーを削除します)
<snapshot>
変更するスナップショット (名前または ID)。

以下の例は my-snapshot-id イメージを管理対象外にします。

$ openstack volume snapshot unset my-snapshot-id
Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.