En este post, explicaremos cómo instalar y configurar el servicio de volúmenes de OpenStack (Cinder) en un nodo de almacenamiento utilizando LVM.

Nota: ejecuta los comandos en el nodo de almacenamiento (storage01) y utilízalos tal como aparecen.

Instalaremos los paquetes necesarios:

vagrant@storage01:~$ sudo apt install -y lvm2 thin-provisioning-tools

Verificación del disco /dev/vdb

vagrant@storage01:~$ fdisk -l

Asegúrate de que /dev/vdb esté presente y no tenga particiones antes de continuar.

Creación del volumen físico LVM:

vagrant@storage01:~$ sudo pvcreate /dev/vdb

Creación del grupo de volúmenes cinder-volumes:

vagrant@storage01:~$ sudo vgcreate cinder-volumes /dev/vdb

Editar /etc/lvm/lvm.conf

En la sección devices, añade o modifica la línea filter para evitar que LVM escanee discos no deseados:

filter = [ "a/sda/", "a/vdb/", "r/.*/"]

Esto evita que LVM escanee dispositivos que no forman parte del backend de volúmenes.

Instalaremos el servicio Cinder Volume:

vagrant@storage01:~$ sudo apt install -y cinder-volume

Configuraremos el acceso a la base de datos y RabbitMQ:

Configuraremos todo esto en el archivo /etc/cinder/cinder.conf. Añadiremos o modificaremos las siguientes secciones y parámetros:

[database]
connection = mysql+pymysql://cinder:CINDER_DB_PASS@controller01/cinder

[DEFAULT]
transport_url = rabbit://openstack:openstack@controller01

Configuraremos el acceso a Keystone:

En el archivo /etc/cinder/cinder.conf, añadiremos la sección keystone_authtoken completa:

[keystone_authtoken]
www_authenticate_uri = http://controller01:5000
auth_url = http://controller01:5000
memcached_servers = controller01:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = CINDER_SVC_PASS

Configuraremos la IP del nodo de almacenamiento:

En /etc/cinder/cinder.conf, bajo la sección [DEFAULT], añadiremos:

my_ip = 10.0.0.4

Configuraremos el backend LVM:

En el mismo archivo /etc/cinder/cinder.conf, añadiremos la sección [lvm]:

[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = tgtadm

Y en [DEFAULT], asegúrate de incluir:

enabled_backends = lvm

Configuraremos Glance y la ruta de bloqueo (lock_path):

En la sección [DEFAULT], añadiremos:

glance_api_servers = http://controller01:9292
oslo_concurrency.lock_path = /var/lib/cinder/tmp

Reiniciaremos los servicios:

Ejecuta los siguientes comandos para reiniciarlos y verifica que estén activos.

vagrant@storage01:~$ sudo service target restart
vagrant@storage01:~$ sudo service cinder-volume restart

Verificación de que el servicio está activo

Finalmente, comprobaremos que, utilizando el cliente de OpenStack, los servicios están activos:

vagrant@controller01:~$ openstack volume service list
+------------------+---------------+------+---------+-------+----------------------------+
| Binary           | Host          | Zone | Status  | State | Updated At                 |
+------------------+---------------+------+---------+-------+----------------------------+
| cinder-scheduler | controller01  | nova | enabled | up    | 2025-11-23T14:58:09.000000 |
| cinder-volume    | storage01@lvm | nova | enabled | up    | 2025-11-23T14:58:09.000000 |
+------------------+---------------+------+---------+-------+----------------------------+