Chapter 6. Address Volume Size Discrepancies with Dell EqualLogic Back Ends
When reporting volume sizes, Dell EqualLogic (EQL) back ends also account for additional storage to be used for internal volume metadata. This size will be slightly larger than the volume size reported by the Block Storage services. However, the volume size reported by an EQL back end is the same one used by the Image service.
As a result, when creating an image-backed volume on an EQL back end, check the size of the image first. If the image was originally volume-backed, then EQL (and, by extension, the Image service) will be reporting a volume size slightly larger than what is reported by the Block Storage service.
If the image size reported by EQL is slightly larger, then you need to take the size discrepancy into consideration when creating volumes backed by this image.
6.1. Example
To illustrate, when you create a 1GB volume:
# cinder create --display-name vol1 1
+---------------------+--------------------------------------+ | Property | Value | +---------------------+--------------------------------------+ | attachments | [] | | availability_zone | nova | | bootable | false | | created_at | 2014-12-19T03:57:47.730359 | | display_description | None | | display_name | vol1 | | encrypted | False | | id | 6bdace69-bd41-42fc-a63a-f834fb65a2e4 | | metadata | {} | | size | 1 | | snapshot_id | None | | source_volid | None | | status | creating | | volume_type | None | +---------------------+--------------------------------------+
+---------------------+--------------------------------------+
| Property | Value |
+---------------------+--------------------------------------+
| attachments | [] |
| availability_zone | nova |
| bootable | false |
| created_at | 2014-12-19T03:57:47.730359 |
| display_description | None |
| display_name | vol1 |
| encrypted | False |
| id | 6bdace69-bd41-42fc-a63a-f834fb65a2e4 |
| metadata | {} |
| size | 1 |
| snapshot_id | None |
| source_volid | None |
| status | creating |
| volume_type | None |
+---------------------+--------------------------------------+
The Block Storage service will report a volume size of 1GB, but on the EQL array the size (VolReserve) will be slightly bigger:
eql> volume select volume-6bdace69-bd41-42fc-a63a-f834fb65a2e4
eql (volume-6bdace69-bd41-42fc-a63a-f834fb65a2e4)> show
_______________________________ Volume Information ______... Name: volume-6bdace69-bd41-42fc-a63a-f834fb65a2e4 Size: 1GB VolReserve: 1.01GB ...
_______________________________ Volume Information ______...
Name: volume-6bdace69-bd41-42fc-a63a-f834fb65a2e4
Size: 1GB
VolReserve: 1.01GB
...
When you create a new image from this volume, cinder
will report a correct volume size of 1GB:
# cinder upload-to-image --disk-format raw --container-format bare vol1 image_vol1
+---------------------+--------------------------------------+ | Property | Value | +---------------------+--------------------------------------+ | container_format | bare | | disk_format | raw | | display_description | None | | id | 6bdace69-bd41-42fc-a63a-f834fb65a2e4 | | image_id | c65f7eae-e2c1-44ba-8af1-e33695897559 | | image_name | image_vol1 | | size | 1 | | status | uploading | | updated_at | 2014-12-19T03:57:48.000000 | | volume_type | None | +---------------------+--------------------------------------+
+---------------------+--------------------------------------+
| Property | Value |
+---------------------+--------------------------------------+
| container_format | bare |
| disk_format | raw |
| display_description | None |
| id | 6bdace69-bd41-42fc-a63a-f834fb65a2e4 |
| image_id | c65f7eae-e2c1-44ba-8af1-e33695897559 |
| image_name | image_vol1 |
| size | 1 |
| status | uploading |
| updated_at | 2014-12-19T03:57:48.000000 |
| volume_type | None |
+---------------------+--------------------------------------+
However, the Image service will report a slightly larger size:
# glance image-list
...+------------+-------------+------------------+------------+--------+ ...| Name | Disk Format | Container Format | Size | Status | ...+------------+-------------+------------------+------------+--------+ ...| image_vol1 | raw | bare | 1085276160 | active | ...+------------+-------------+------------------+------------+--------+
...+------------+-------------+------------------+------------+--------+
...| Name | Disk Format | Container Format | Size | Status |
...+------------+-------------+------------------+------------+--------+
...| image_vol1 | raw | bare | 1085276160 | active |
...+------------+-------------+------------------+------------+--------+
The glance
tool reports an image size of approximately 1.01GB. As a result, creating a new 1GB volume backed by this image will fail:
# cinder create --display-name vol2 --image-id c65f7eae-e2c1-44ba-8af1-e33695897559 1
ERROR: Invalid input received: Size of specified image 2 is larger than volume size 1
ERROR: Invalid input received: Size of specified image 2 is larger than volume size 1
6.2. Workaround
As mentioned earlier, you need to consider the discrepancy between the volume sizes reported by the Image and the Block Storage services when specifying the size of image-backed volumes. This means that when specifying the size of the image-backed volume, use the next whole number after the image size reported by glance.
Using the previous example, glance
reported an image size of 1.01GB. This means that when you create a volume, you need to specify a volume size of 2GB instead of 1GB:
# cinder create --display-name vol2 --image-id c65f7eae-e2c1-44ba-8af1-e33695897559 2
+---------------------+--------------------------------------+ | Property | Value | +---------------------+--------------------------------------+ | attachments | [] | | availability_zone | nova | | bootable | false | | created_at | 2014-12-19T04:54:07.036260 | | display_description | None | | display_name | vol2 | | encrypted | False | | id | fcf49715-094d-4bba-9f05-8b7fa6deffce | | image_id | c65f7eae-e2c1-44ba-8af1-e33695897559 | | metadata | {} | | size | 2 | | snapshot_id | None | | source_volid | None | | status | creating | | volume_type | None | +---------------------+--------------------------------------+
+---------------------+--------------------------------------+
| Property | Value |
+---------------------+--------------------------------------+
| attachments | [] |
| availability_zone | nova |
| bootable | false |
| created_at | 2014-12-19T04:54:07.036260 |
| display_description | None |
| display_name | vol2 |
| encrypted | False |
| id | fcf49715-094d-4bba-9f05-8b7fa6deffce |
| image_id | c65f7eae-e2c1-44ba-8af1-e33695897559 |
| metadata | {} |
| size | 2 |
| snapshot_id | None |
| source_volid | None |
| status | creating |
| volume_type | None |
+---------------------+--------------------------------------+