PowerFlex: OpenStack: Disparidade de tamanhos de volume quando a função image_volume_cache_enabled é True
Summary: Os dois sintomas a seguir são observados quando a opção "image_volume_cache_enabled" é usada em um ambiente OpenStack/RHOSP (Red Hat OpenStack Platform). Sintoma 1: Pela primeira vez em que um volume inicializável é criado a partir de uma imagem de relance, o tamanho do volume criado sempre passou a ser 8 GB no lado do OpenStack. Sintoma 2: Na segunda vez e posteriormente das criações de volume inicializável a partir do cache de volume de imagem, o tamanho dos volumes criados não foi arredondado para 8 GB no lado do OpenStack. ...
Symptoms
Os dois sintomas a seguir são observados quando a opção "image_volume_cache_enabled" é usada em um ambiente OpenStack/RHOSP (Red Hat OpenStack Platform).
Sintoma 1:
Na primeira vez em que um volume inicializável é criado de uma imagem de resumo, o tamanho do volume criado sempre se torna 8 GB no lado do OpenStack.
Sintoma 2:
Na segunda vez em que criações de volume inicializáveis a partir do cache de volume de imagem, o tamanho dos volumes criados não foi arredondado para 8 GB no lado do OpenStack.
No OpenStack/RHOSP com o armazenamento de back-end do PowerFlex Cinder
A opção "image_volume_cache_enabled = True" é especificada em cinder.conf, e volumes inicializáveis são criados.
Sintoma 1:
Por exemplo, quando uma criação de volume inicializável de 33 GB foi inicialmente solicitada, o OpenStack e o PowerFlex esperaram ter o mesmo tamanho de volume de 40 GB. No entanto, o volume de 8 GB foi criado no lado do OpenStack.
$ openstack volume list --long
$
$ openstack volume create --image cirros --type sio --size 33 33gb-1
$ openstack volume list --long
+--------------------------------------+--------------------------------------------+-------
| ID | Name | Status | Size | Type | Bootable | Attached to | Properties |
+--------------------------------------+--------------------------------------------+-------
| fed72292-fd84-4b33-bf63-063f1bfb9f75 | 33gb-1 | available | 8 | sio | true | | | <<< 40 was expected but is 8.
| 364b78a7-0714-4b70-be16-8ec139564cb0 | image-b7d6350e-f835-4310-a5f4-6b6535ce86c4 | available | 8 | sio | false | | readonly='True' | <<< This is the volume-image cache (snapshot).
+--------------------------------------+--------------------------------------------+-------
# scli --query_all_volumes
Volume ID: b582f85000000000 Name: mUnBlKjqSfur1KQillkMEw== Size: 40.0 GB (40960 MB) Not mapped Thin-provisioned <<< This is the corespoinding volume to "33gb-1".
Volume ID: b582f85100000001 Name: aWB3fINbQ7GV4BMlUXsOPQ== Size: 8.0 GB (8192 MB) Not mapped Snapshot of mUnBlKjqSfur1KQillkMEw==
Sintoma 2:
Por exemplo, quando uma criação de volume inicializável de 50 GB foi solicitada enquanto o cache de imagem de volume estava ativado, o OpenStack e o PowerFlex esperaram ter o mesmo tamanho de volume de 56 GB. No entanto, o volume de 50 GB foi criado no lado do OpenStack.
$ openstack volume create --image cirros --type sio --size 50 50gb-1
$ openstack volume list --long
+--------------------------------------+--------------------------------------------+-------
| ID | Name | Status | Size | Type | Bootable | Attached to | Properties |
+--------------------------------------+--------------------------------------------+-------
| 1f0a279f-9c3d-42a2-ba9c-f31fa160c92c | 50gb-1 | available | 50 | sio | true | | | <<< 56 was expected but is 50.
| fed72292-fd84-4b33-bf63-063f1bfb9f75 | 33gb-1 | available | 8 | sio | true | | |
| 364b78a7-0714-4b70-be16-8ec139564cb0 | image-b7d6350e-f835-4310-a5f4-6b6535ce86c4 | available | 8 | sio | false | | readonly='True' |
+--------------------------------------+--------------------------------------------+-------
# scli --query_all_volumes
Volume ID: b582f85000000000 Name: mUnBlKjqSfur1KQillkMEw== Size: 40.0 GB (40960 MB) Not mapped Thin-provisioned
Volume ID: b582f85100000001 Name: aWB3fINbQ7GV4BMlUXsOPQ== Size: 8.0 GB (8192 MB) Not mapped Snapshot of mUnBlKjqSfur1KQillkMEw==
Volume ID: b582f85200000002 Name: cYLfBQJFRHKUjNjEtQpyAw== Size: 56.0 GB (57344 MB) Not mapped Snapshot of aWB3fINbQ7GV4BMlUXsOPQ== <<< This is the corresponding volume to "50gb-1".
Impacto
Não é possível gerenciar corretamente a capacidade de armazenamento de back-end e o tamanho do volume no lado do OpenStack.
Cause
Sintoma 1:
Esse não é um problema de driver do Cinder, mas um mecanismo interno do OpenStack Cinder. O problema é que o Cinder não espera que o armazenamento retorne um tamanho de discos diferente do especificado por um usuário.
Para resolver esse problema, corrija o arquivo cinder/volume/flows/manager/create_volume.py do Cinder. Ele deve estar ciente de possíveis arredondamentos por driver de concreto ou armazenamento de back-end e corrigir conjuntos de teste correspondentes.
O controle de problemas #1915015 foi aberto para a comunidade do OpenStack Cinder resolver o problema. Cf. Bug #1915015 "O volume do PowerFlex tem tamanho inválido após a criação f...": Bugs: Cinzas
Sintoma 2:
Esse é um problema do driver do Cinder com a função create_volume_from_snapshot. O create_cloned_volume/extend_volume tem o mesmo problema.
Há uma opção para corrigi-lo no driver do Cinder retornando um tamanho de volume real, mas dessa forma não poderia passar nos ciclos de teste do Tempest devido a outro problema no lado do Tempest.
Por enquanto, o problema do Tempest deve ser corrigido primeiro para implementar uma correção no driver do Cinder.
O controle de problemas #1917299 foi aberto para a comunidade OpenStack Tempest resolver o problema. Cf. Bug #1917299 "Need chunk size configuration for volume creation": Bugs : tempest
Nota: Isso não está relacionado ao sintoma 1. Teoricamente, os usuários enfrentam esse problema mesmo sem a opção image_volume_cache_enabled, mas quando as funções acima são invocadas.
Resolution
Não se trata de um problema do PowerFlex. Entre em contato com o fornecedor do OpenStack, compartilhe este artigo da Dell e mencione os números de rastreamento de problemas.
Additional Information
Versões afetadas:
Todas
Correção feita na versão:
A ser determinado; sem estimativa de tempo de resolução.
Referências:
Cache de volume de imagem do Cinder:
Esse é um parâmetro opcional implementado no componente Cinder para melhorar substancialmente o desempenho da criação de um volume a partir de um cache de imagem usando o recurso de snapshot do armazenamento de back-end. Consulte o documento do OpenStack: https://docs.openstack.org/cinder/latest/admin/blockstorage-image-volume-cache.html
Tempest:
A suíte de testes de integração do OpenStack é usada para testes de regressão e também para testes de qualificação. Consulte o documento do OpenStack: https://docs.openstack.org/tempest/latest/overview.html
Quando este artigo foi escrito:
- Sintoma 1: Não há solução temporária com a opção image_volume_cache_enabled quando ativada
- Sintoma 2: A única solução temporária possível é sempre especificar um tamanho de volume múltiplo de 8 GB.