Troubleshoot Volumes Size Reporting Discrepancies for Dell EqualLogic Storage

Problem

There is a discrepancy between both the actual volume size in EQL and the image size in Glance, with what is reported by the OpenStack databases. This could lead to confusion if a user is creating volumes from a Glance image that was uploaded from an EQL volume. The image size is larger than the target volume size, because EQL size reporting accounts for additional storage used by EQL for internal volume metadata.

To Reproduce the issue:

  1. Create a 1GB volume in OpenStack using Horizon or the Cinder CLI, backed with the Cinder EQL driver.

  2. The volume is created and stored in the EQL array. The actual size is 1.01GB, but OpenStack reports it as 1GB.

  3. Using the Cinder CLI, upload the 1.01GB volume to Glance. Once uploaded, Glance will report the image size as 1GB.

  4. Using the Cinder CLI, create a new 1GB image with the Glance image as the source. The volume creation will fail as the target volume size is too small.

  5. Change the target volume size to 2GB, and then repeat step 4. The volume will be created.

Solution

Assumes that the EQL array is provisioned, and appropriate configuration settings have been included in /etc/cinder/cinder.conf to connect to the EQL array.

Note: See http://docs.openstack.org/developer/python-cinderclient/#command-line-tool for details on export settings required to use Cinder and the Glance CLI.

To Fix the Issue:

  1. Create a new volume using the Cinder CLI (cinder create) or Horizon. Note the ID and size of the volume (74cf9c04-4543-47ae-a937-a9b7c6c921e7, 1GB in this example).

     [root@localhost ~]# cinder create --display—name volume1 1
    
     +--------------------------+--------------------------------------------------+
     |     Property             |                 Value                            |
     +--------------------------+--------------------------------------------------+
     |     attachments          |                   []                             |            
     |     availability zone    |                  nova                            |
     |     bootable             |                 false                            |
     |     created_at           |     2014—03—21T18:31:54.248775                   |
     |     display_description  |                None                              |
     |     display_name         |             volume1                              |
     |     id                   |     74cf9c04—4543—47ae—a937—a9b7c6c921e7         |
     |     metadata             |                     []                           |
     |     size                 |                     1                            |
     |     snapshot_id          |                   None                           |
     |     source volid         |                   None                           |
     |     status               |                 creating                         |
     |     volume type          |                   None                           |
     +--------------------------+--------------------------------------------------+
    
     [root@localhost ~#
  2. View volume details using the EQL CLI. The actual size (VolReserve) is 1.01GB, size is 1GB.

    Note: When viewed using the EQL Group Manager the reported size is displayed as 1.01GB.

     a2beqll2> volume select volume—74ct9c04—4S43—4?ae-a931—a9b7c6c92le
     a2beqll2 (volume_volume—74cf9c04—4543—47ae—a937—a9b7c6c921e7)> show
     _______________________________ Volume Information ________________________________
     Name: volume-74cf9c04—4543—47ae-a937—a9b7c6c921e7
     Size: 1GB
     VolReserve: 1.01GB
     VolReservelnUse: 0MB
     ReplReservelnUse: 0MB
     iSCSI Alias: volume-74cf9c04-4S43-47ae-a937—a9b7c6c921e7
     iSCSI Name: iqn.2001—05.com.equallogic:0-8a0906—19f91850c-067000000b4532cl—volume-74cf9c04—4543—l7ae—a937—a9b7c6c921e7
     ActualMembers: 1
     Snap-Warn: 10%
     Snap-Depletion: delete—oldest
     Description:
     Snap—Reserve: 100%
     Snap-Reserve—Avail: 100% (1.01GB)
     Permission: read—write
     DesiredStatus: online
     Status: online
     Connections: O
     Snapshots: O
     Bind:
     Type: not-replicated
     ReplicationReserveSpace: 0MB
  3. Upload this volume to Glance using the Cinder CLI (cinder upload-to-image).

     [root@localhost ~]# cinder upload-to-image --disk-format raw --container-format bare volume1 image_from_volumel
     +---------------------+---------------------------------------+
     |       Property      |                 Value                 |
     +---------------------+---------------------------------------+
     |   container_format  |                  bare                 |
     |     disk_format     |                  raw                  |
     | display_description |                  None                 |
     |           id        | 74cf9c04-4ae-a937—a9b7c6c921e7        |
     |       image_id      | 3020a21d—ba37—4495-8899—07fc201161b9  |
     |      image_name     |          image_from_volume1           |
     |         size        |                  1                    |
     |        status       |              uploading                |
     |      updated_at     |      2014—03—21T18:31:55.000000       |
     |     volume_type     |                 None                  |
     +---------------------+---------------------------------------+
  4. The size is being reported as 1GB, but when listing the image using the Glance CLI (glance image-list) size the actual size is 1085276160 bytes, or roughly 1.01GB.

     [root@localhost ~]# glance imaqe—list
     +--------------------------------------+--------------------+-------------+------------------+------------+--------+
     | ID                                   | Name               | Disk Format | Container Format | Size       | Status |
     +--------------------------------------+--------------------+-------------+------------------+------------+--------+
     | 3020.21d-b.37—4195—ee99—07fc20fl61b9 | image_from_volume1 | raw         | bare             | 1085276160 | active |
     +--------------------------------------+--------------------+-------------+------------------+------------+--------+
  5. Create a new volume using the image from Glance (id 3020a21d-ba37-4495-8899-07fc201161b9 in this example) as the source. Set the target volume size to 1GB because based upon the information presented that is the expected volume size.

     [root@localhost ~]# cinder create -—display-name volume2 --image-id 3020a21d-ba37—4495—8899—07fc201161b9 1
     ERROR: Invalid input received: Size of specified image 2 is larger than volume size 1. (HTTP 400) (Request-ID: req-4b9369c0—dec5-4e16-a114-c0cdl6bSd210)
  6. The workaround is to increase the target volume size to the next whole number, in this case 2GB.

     [root@localhost ~]# cinder create ——display-name volume2 —-image—id 3020a21d—ba37-4495—8899-07fc2Oll6lb9 2
     +---------------------+--------------------------------------+
     |       Property      |                Value                 |
     +---------------------+--------------------------------------+
     |    attachments      |                  []                  |
     | availability_zone   |                 nova                 |
     |      bootable       |                false                 |
     |     created_at      |      2014-03-21T19:25:31.564482      |
     | display_description |               None                   |
     |     display_name    |             volume2                  |
     |          id         | 64e8eb18—d23f—437b—bcac—b3S2afa6843a |
     |   image_id          | 3020a21d—ba37—4495—8899-07fc20116lb9 |
     |   metadata          |                  []                  |
     |     size            |                  2                   |
     | snapshot_id         |                 None                 |
     | source_volid        |                 None                 |
     |    status           |               creating               |
     | volume_type         |                 None                 |
     +---------------------+--------------------------------------+

    Note: If using the Horizon user interface, it will suggest a suitable size for the new volume if the Glance image is selected as the source.

  7. Finally, check the new volume in the EQL array.

     a2beqll2> volume select volume-64e8eb18-d23f-437b-bcac-b352afa6843a
     a2beqll2 (volume_volume-61e8eb18-d23f-437b-bcac-b352afa6843a)> show
     ______________________________ Volume Information _______________________________
     Name: volume-64e8eb18-d23f-437b-bcac-b352afa6843a
     Size: 2GB
     VolReserve: 2.01GB
     VolReserveInUse: 1.01GB
     ReplReserveInUse: 0MB
     iSCSI Alias: volume-64e8eb18-d23f-437b-bcac-b352afa6843a
     iSCSI Name: iqn.2001-05.com.equallogic:0-8a0906-e3091850e-eae000000b7S32cl-volume—64e8eb18—d23f—437b—bcac—b3S2afa6Bl3a
     ActualMembers: 1
     Snap-Warn: 10%
     Snap—Depletion: delete-oldest
     Description:
     Snap-Reserve: 100%
     Snap-Reserve-Avail: 100% (2GB)
     Permission: read—write
     DesiredStatus: online
     Status: online
     Connections: 1
     Snapshots: O
     Bind:
     Type: not-replicated
     ReplicationReserveSpace: 0MB