Atom feed of this document
  
 

 Manage volumes

A volume is a detachable block storage device, similar to a USB hard drive. You can attach a volume to only one instance. To create and manage volumes, you use a combination of nova and cinder client commands.

This example creates a my-new-volume volume based on an image.

 Create a volume

  1. List images, and note the ID of the image to use for your volume:

    $ nova image-list
    +--------------------------------------+---------------------------------+--------+--------------------------------------+
    | ID                                   | Name                            | Status | Server                               |
    +--------------------------------------+---------------------------------+--------+--------------------------------------+
    | 397e713c-b95b-4186-ad46-6126863ea0a9 | cirros-0.3.2-x86_64-uec         | ACTIVE |                                      |
    | df430cc2-3406-4061-b635-a51c16e488ac | cirros-0.3.2-x86_64-uec-kernel  | ACTIVE |                                      |
    | 3cf852bd-2332-48f4-9ae4-7d926d50945e | cirros-0.3.2-x86_64-uec-ramdisk | ACTIVE |                                      |
    | 7e5142af-1253-4634-bcc6-89482c5f2e8a | myCirrosImage                   | ACTIVE | 84c6e57d-a6b1-44b6-81eb-fcb36afd31b5 |
    | 89bcd424-9d15-4723-95ec-61540e8a1979 | mysnapshot                      | ACTIVE | f51ebd07-c33d-4951-8722-1df6aa8afaa4 |
    +--------------------------------------+---------------------------------+--------+--------------------------------------+
  2. List the availability zones, and note the ID of the availability zone in which to create your volume:

    $ nova availability-zone-list
    +-----------------------+----------------------------------------+
    | Name                  | Status                                 |
    +-----------------------+----------------------------------------+
    | internal              | available                              |
    | |- devstack           |                                        |
    | | |- nova-conductor   | enabled :-) 2013-07-25T16:50:44.000000 |
    | | |- nova-consoleauth | enabled :-) 2013-07-25T16:50:44.000000 |
    | | |- nova-scheduler   | enabled :-) 2013-07-25T16:50:44.000000 |
    | | |- nova-cert        | enabled :-) 2013-07-25T16:50:44.000000 |
    | | |- nova-network     | enabled :-) 2013-07-25T16:50:44.000000 |
    | nova                  | available                              |
    | |- devstack           |                                        |
    | | |- nova-compute     | enabled :-) 2013-07-25T16:50:39.000000 |
    +-----------------------+----------------------------------------+
  3. Create a volume with 8 GB of space. Specify the availability zone and image:

    $ cinder create 8 --display-name my-new-volume --image-id 397e713c-b95b-4186-ad46-6126863ea0a9 --availability-zone nova
    +---------------------+--------------------------------------+
    |       Property      |                Value                 |
    +---------------------+--------------------------------------+
    |     attachments     |                  []                  |
    |  availability_zone  |                 nova                 |
    |       bootable      |                false                 |
    |      created_at     |      2013-07-25T17:02:12.472269      |
    | display_description |                 None                 |
    |     display_name    |            my-new-volume             |
    |          id         | 573e024d-5235-49ce-8332-be1576d323f8 |
    |       image_id      | 397e713c-b95b-4186-ad46-6126863ea0a9 |
    |       metadata      |                  {}                  |
    |         size        |                  8                   |
    |     snapshot_id     |                 None                 |
    |     source_volid    |                 None                 |
    |        status       |               creating               |
    |     volume_type     |                 None                 |
    +---------------------+--------------------------------------+
  4. To verify that your volume was created successfully, list the available volumes:

    $ cinder list
    +--------------------------------------+-----------+-----------------+------+-------------+----------+-------------+
    |                  ID                  |   Status  |   Display Name  | Size | Volume Type | Bootable | Attached to |
    +--------------------------------------+-----------+-----------------+------+-------------+----------+-------------+
    | 573e024d-5235-49ce-8332-be1576d323f8 | available |  my-new-volume  |  8   |     None    |   true   |             |
    | bd7cf584-45de-44e3-bf7f-f7b50bf235e3 | available | my-bootable-vol |  8   |     None    |   true   |             |
    +--------------------------------------+-----------+-----------------+------+-------------+----------+-------------+

    If your volume was created successfully, its status is available. If its status is error, you might have exceeded your quota.

 Attach a volume to an instance

  1. Attach your volume to a server:

    $ nova volume-attach 84c6e57d-a6b1-44b6-81eb-fcb36afd31b5  573e024d-5235-49ce-8332-be1576d323f8 /dev/vdb
    +----------+--------------------------------------+
    | Property | Value                                |
    +----------+--------------------------------------+
    | device   | /dev/vdb                             |
    | serverId | 84c6e57d-a6b1-44b6-81eb-fcb36afd31b5 |
    | id       | 573e024d-5235-49ce-8332-be1576d323f8 |
    | volumeId | 573e024d-5235-49ce-8332-be1576d323f8 |
    +----------+--------------------------------------+

    Note the ID of your volume.

  2. Show information for your volume:

    $ cinder show 573e024d-5235-49ce-8332-be1576d323f8
    +------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    |           Property           |                                                                                                      Value                                                                                                       |
    +------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    |         attachments          |             [{u'device': u'/dev/vdb', u'server_id': u'84c6e57d-a6b1-44b6-81eb-fcb36afd31b5', u'id': u'573e024d-5235-49ce-8332-be1576d323f8', u'volume_id': u'573e024d-5235-49ce-8332-be1576d323f8'}]             |
    |      availability_zone       |                                                                                                       nova                                                                                                       |
    |           bootable           |                                                                                                       true                                                                                                       |
    |          created_at          |                                                                                            2013-07-25T17:02:12.000000                                                                                            |
    |     display_description      |                                                                                                       None                                                                                                       |
    |         display_name         |                                                                                                  my-new-volume                                                                                                   |
    |              id              |                                                                                       573e024d-5235-49ce-8332-be1576d323f8                                                                                       |
    |           metadata           |                                                                                                        {}                                                                                                        |
    |    os-vol-host-attr:host     |                                                                                                 devstack                                                                                                         |
    | os-vol-tenant-attr:tenant_id |                                                                                         66265572db174a7aa66eba661f58eb9e                                                                                         |
    |             size             |                                                                                                        8                                                                                                         |
    |         snapshot_id          |                                                                                                       None                                                                                                       |
    |         source_volid         |                                                                                                       None                                                                                                       |
    |            status            |                                                                                                      in-use                                                                                                      |
    |    volume_image_metadata     | {u'kernel_id': u'df430cc2-3406-4061-b635-a51c16e488ac', u'image_id': u'397e713c-b95b-4186-ad46-6126863ea0a9', u'ramdisk_id': u'3cf852bd-2332-48f4-9ae4-7d926d50945e', u'image_name': u'cirros-0.3.2-x86_64-uec'} |
    |         volume_type          |                                                                                                       None                                                                                                       |
    +------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

    The output shows that the volume is attached to the server with ID 84c6e57d-a6b1-44b6-81eb-fcb36afd31b5, is in the nova availability zone, and is bootable.

 Resize a volume

  1. To resize your volume, you must first detach it from the server.

    To detach the volume from your server, pass the server ID and volume ID to the command:

    $ nova volume-detach 84c6e57d-a6b1-44b6-81eb-fcb36afd31b5 573e024d-5235-49ce-8332-be1576d323f8

    The volume-detach command does not return any output.

  2. List volumes:

    $ cinder list
    +--------------------------------------+-----------+-----------------+------+-------------+----------+-------------+
    |                  ID                  |   Status  |   Display Name  | Size | Volume Type | Bootable | Attached to |
    +--------------------------------------+-----------+-----------------+------+-------------+----------+-------------+
    | 573e024d-5235-49ce-8332-be1576d323f8 | available |  my-new-volume  |  8   |     None    |   true   |             |
    | bd7cf584-45de-44e3-bf7f-f7b50bf235e3 | available | my-bootable-vol |  8   |     None    |   true   |             |
    +--------------------------------------+-----------+-----------------+------+-------------+----------+-------------+

    Note that the volume is now available.

  3. Resize the volume by passing the volume ID and the new size (a value greater than the old one) as parameters:

    $ cinder extend 573e024d-5235-49ce-8332-be1576d323f8 10

    The extend command does not return any output.

 Delete a volume

  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 mentioned in the section called “Resize a volume”.

  2. Delete the volume:

    $ cinder delete my-new-volume

    The delete command does not return any output.

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

    $ cinder list
    +--------------------------------------+-----------+-----------------+------+-------------+----------+-------------+
    |                  ID                  |   Status  |   Display Name  | Size | Volume Type | Bootable | Attached to |
    +--------------------------------------+-----------+-----------------+------+-------------+----------+-------------+
    | 573e024d-5235-49ce-8332-be1576d323f8 |  deleting |  my-new-volume  |  8   |     None    |   true   |             |
    | bd7cf584-45de-44e3-bf7f-f7b50bf235e3 | available | my-bootable-vol |  8   |     None    |   true   |             |
    +--------------------------------------+-----------+-----------------+------+-------------+----------+-------------+

    When the volume is fully deleted, it disappears from the list of volumes:

    $ cinder list
    +--------------------------------------+-----------+-----------------+------+-------------+----------+-------------+
    |                  ID                  |   Status  |   Display Name  | Size | Volume Type | Bootable | Attached to |
    +--------------------------------------+-----------+-----------------+------+-------------+----------+-------------+
    | bd7cf584-45de-44e3-bf7f-f7b50bf235e3 | available | my-bootable-vol |  8   |     None    |   true   |             |
    +--------------------------------------+-----------+-----------------+------+-------------+----------+-------------+

 Transfer a volume

You can transfer a volume from one owner to another by using the cinder transfer* commands. The volume donor, or original owner, creates a transfer request and sends the created transfer ID and authorization key to the volume recipient. The volume recipient, or new owner, accepts the transfer by using the ID and key.

[Note]Note

The procedure for volume transfer is intended for tenants (both the volume donor and recipient) within the same cloud.

Use cases include:

  • Create a custom bootable volume or a volume with a large data set and transfer it to the end customer.

  • For bulk import of data to the cloud, the data ingress system creates a new Block Storage volume, copies data from the physical device, and transfers device ownership to the end user.

 Create a volume transfer request

  1. While logged in as the volume donor, list available volumes:

    $ cinder list
    +--------------------------------------+-----------+--------------+------+-------------+----------+-------------+
    |                  ID                  |   Status  | Display Name | Size | Volume Type | Bootable | Attached to |
    +--------------------------------------+-----------+--------------+------+-------------+----------+-------------+
    | 72bfce9f-cacf-477a-a092-bf57a7712165 |   error   |     None     |  1   |     None    |  false   |             |
    | a1cdace0-08e4-4dc7-b9dc-457e9bcfe25f | available |     None     |  1   |     None    |  false   |             |
    +--------------------------------------+-----------+--------------+------+-------------+----------+-------------+
  2. As the volume donor, request a volume transfer authorization code for a specific volume:

    $ cinder transfer-create volumeID

    The volume must be in an ‘available’ state or the request will be denied. If the transfer request is valid in the database (that is, it has not expired or been deleted), the volume is placed in an awaiting transfer state. For example:

    $ cinder transfer-create a1cdace0-08e4-4dc7-b9dc-457e9bcfe25f
    +------------+--------------------------------------+
    |  Property  |                Value                 |
    +------------+--------------------------------------+
    |  auth_key  |           b2c8e585cbc68a80           |
    | created_at |      2013-10-14T15:20:10.121458      |
    |     id     | 6e4e9aa4-bed5-4f94-8f76-df43232f44dc |
    |    name    |                 None                 |
    | volume_id  | a1cdace0-08e4-4dc7-b9dc-457e9bcfe25f |
    +------------+--------------------------------------+
    [Note]Note

    Optionally, you can specify a name for the transfer by using the --display-name displayName parameter.

  3. Send the volume transfer ID and authorization key to the new owner (for example, by email).

  4. View pending transfers:

    $ cinder transfer-list
    +--------------------------------------+--------------------------------------+------+
    |               ID                     |             VolumeID                 | Name |
    +--------------------------------------+--------------------------------------+------+
    | 6e4e9aa4-bed5-4f94-8f76-df43232f44dc | a1cdace0-08e4-4dc7-b9dc-457e9bcfe25f | None |
    +--------------------------------------+--------------------------------------+------+
  5. After the volume recipient, or new owner, accepts the transfer, you can see that the transfer is no longer available:

    $ cinder transfer-list
    +----+-----------+------+
    | ID | Volume ID | Name |
    +----+-----------+------+
    +----+-----------+------+

 Accept a volume transfer request

  1. As the volume recipient, you must first obtain the transfer ID and authorization key from the original owner.

  2. Display the transfer request details using the ID:

    $ cinder transfer-show transferID

    For example:

    $ cinder transfer-show 6e4e9aa4-bed5-4f94-8f76-df43232f44dc
    +------------+--------------------------------------+
    |  Property  |                Value                 |
    +------------+--------------------------------------+
    | created_at |      2013-10-14T15:20:10.000000      |
    |     id     | 6e4e9aa4-bed5-4f94-8f76-df43232f44dc |
    |    name    |                 None                 |
    | volume_id  | a1cdace0-08e4-4dc7-b9dc-457e9bcfe25f |
    +------------+--------------------------------------+
  3. Accept the request:

    $ cinder transfer-accept transferID authKey

    For example:

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

    If you do not have a sufficient quota for the transfer, the transfer is refused.

 Delete a volume transfer

  1. List available volumes and their statuses:

    $ cinder list
    +--------------------------------------+-------------------+--------------+------+-------------+----------+-------------+
    |                  ID                  |       Status      | Display Name | Size | Volume Type | Bootable | Attached to |
    +--------------------------------------+-------------------+--------------+------+-------------+----------+-------------+
    | 72bfce9f-cacf-477a-a092-bf57a7712165 |       error       |     None     |  1   |     None    |  false   |             |
    | a1cdace0-08e4-4dc7-b9dc-457e9bcfe25f | awaiting-transfer |     None     |  1   |     None    |  false   |             |
    +--------------------------------------+-------------------+--------------+------+-------------+----------+-------------+
  2. Find the matching transfer ID:

    $ cinder transfer-list
    +--------------------------------------+--------------------------------------+------+
    |               ID                     |             VolumeID                 | Name |
    +--------------------------------------+--------------------------------------+------+
    | a6da6888-7cdf-4291-9c08-8c1f22426b8a | a1cdace0-08e4-4dc7-b9dc-457e9bcfe25f | None |
    +--------------------------------------+--------------------------------------+------+
  3. Delete the volume:

    $ cinder transfer-delete transferID

    For example:

    $ cinder transfer-delete a6da6888-7cdf-4291-9c08-8c1f22426b8a
  4. The transfer list is now empty and the volume is again available for transfer:

    $ cinder transfer-list
    +----+-----------+------+
    | ID | Volume ID | Name |
    +----+-----------+------+
    +----+-----------+------+
    $ cinder list
    +--------------------------------------+-----------+--------------+------+-------------+----------+-------------+
    |                  ID                  |   Status  | Display Name | Size | Volume Type | Bootable | Attached to |
    +--------------------------------------+-----------+--------------+------+-------------+----------+-------------+
    | 72bfce9f-cacf-477a-a092-bf57a7712165 |   error   |     None     |  1   |     None    |  false   |             |
    | a1cdace0-08e4-4dc7-b9dc-457e9bcfe25f | available |     None     |  1   |     None    |  false   |             |
    +--------------------------------------+-----------+--------------+------+-------------+----------+-------------+

 Set a volume to read-only access

To give multiple users shared, secure access to the same data, you can set a volume to read-only access.

Run this command to set a volume to read-only access:

$ cinder readonly-mode-update VOLUME BOOLEAN

Where VOLUME is the ID of the target volume and BOOLEAN is a flag that enables read-only or read/write access to the volume.

Valid values for BOOLEAN are:

  • true. Sets the read-only flag in the volume. When you attach the volume to an instance, the instance checks for this flag to determine whether to restrict volume access to read-only.

  • false. Sets the volume to read/write access.

Questions? Discuss on ask.openstack.org
Found an error? Report a bug against this page

loading table of contents...