Continuing the journey of my private cloud project, I started integrating the OpenStack Cinder CSI plugin to improve storage capabilities. However, a space constraint led me to add an NVMe disk (Toshiba 256GB M.2 2242) to support Cinder.

Cinder

As described in the official documentation, Cinder is the OpenStack Block Storage service that provides volumes to Nova virtual machines, containers, and more.

Configuration of the new disk

Adding the new disk required a few steps. After powering down the host, I installed the disk and rebooted the system. Then I listed all the available disks.

sudo fdisk --list

In the output, I found my new disk ready to be used.

Disk /dev/nvme0n1: 238.47 GiB, 256060514304 bytes, 500118192 sectors
Disk model: TOSHIBA
...

With the disk identified, I initialized the physical volume with pvcreate and added the disk to the volume group cinder-volumes.

sudo pvcreate -f /dev/nvme0n1
sudo vgcreate -f cinder-volumes /dev/nvme0n1

Then I modified the /etc/kolla/globals.yml file with the following values.

enable_cinder: "yes"
enable_cinder_backend_lvm: "yes"
cinder_volume_group: "cinder-volumes"

Finally, I re-ran the Ansible playbook to add the new configuration.

kolla-ansible -i all-in-one deploy

This enabled Cinder, which the plugin could then use.

⚙️ Config: The volume group name must match cinder_volume_group in globals.yml.

Nova

As described in the official documentation, Nova is the OpenStack service that provides a way to provision compute instances.

Instances not turning up after restart

One of the first things I noticed was that after performing host restarts, instances didn’t turn back on. After a bit of research, I discovered that a value was missing in /etc/kolla/nova-compute/nova.conf.

[DEFAULT]
resume_guests_state_on_host_boot = True

Now, when I restart the main node, every machine starts.

Sadly, Kolla-Ansible currently doesn’t support adding extra values to its configuration files. So every time I run the playbooks, I have to add this line manually, or it gets replaced by the default values.

🔁 Reminder: Check this value after every Kolla-Ansible run.

Conclusion

Integrating Cinder had several benefits. It diversified storage options by moving virtual machine data to a separate storage unit, and it gave Kubernetes dynamic storage provisioning, which made my applications more flexible.