Configurazione per ceph

Configurare Ceph come backend per Glance, Cinder e Nova in OpenStack 2025.1.

glance

glance-api.conf

[DEFAULT]
enabled_backends = rbd:rbd,http:http,cinder:cinder
[glance_store]
default_backend = rbd
[rbd]
rbd_store_pool = images
rbd_store_user = glance
rbd_store_ceph_conf = /etc/ceph/ceph.conf
rbd_store_chunk_size = 8

La sintassi per i backend è nome_backend:driver, ad esempio rbd:rbd (il backend si chiama “rbd” e usa il driver “rbd”)

enabledbackends = rbd:rbd,http:http,cinder:cinder - abilitati tre backend (RBD come primario, HTTP e Cinder come alternativi) * defaultbackend = rbd - Ceph/RBD è il backend predefinito

Cinder

cinder.conf

[DEFAULT]
enabled_backends = rbd
[rbd]
image_upload_use_cinder_backend = True
image_upload_use_internal_tenant = True
rados_connect_timeout = -1
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = False
rbd_max_clone_depth = 5
rbd_pool = volumes
rbd_secret_uuid = ad44c82d-e905-4d13-bfad-8fe47567a8e0
rbd_store_chunk_size = 4
rbd_user = cinder
report_discard_supported = True
volume_backend_name = rbd
volume_driver = cinder.volume.drivers.rbd.RBDDriver

rbdpool = volumes e rbduser = cinder - pool e utente configurati devono esistere in ceph

rbdsecretuuid = ad44c82d-e905-4d13-bfad-8fe47567a8e0 - secret per libvirt, deve corrispondere a quello per nova

rbdflattenvolumefromsnapshot = False e rbdmaxclonedepth = 5 - ottimizzazione COW (copy-on-write) * imageuploadusecinderbackend = True - consente di caricare immagini direttamente nel backend Cinder (utile per glance-cinder integration) * imageuploaduseinternaltenant = True - usa un tenant interno per l'upload delle immagini * reportdiscardsupported = True - abilita il supporto TRIM/discard per recuperare spazio su Ceph * radosconnect_timeout = -1 - timeout infinito (attenzione: potrebbe voler usare un valore positivo tipo 5 per evitare hang)

Per verificare che le secret corrispondano, si legge la secret per libvirt, che deve corrispondere a quella del keyring definito in ceph per cinder:

root@os-worker-2:~# virsh secret-list
UUID Usage
-------------------------------------------------------------------
ad44c82d-e905-4d13-bfad-8fe47567a8e0 ceph client.cinder secret
root@os-worker-2:~# virsh secret-get-value ad44c82d-e905-4d13-bfad-8fe47567a8e0
AQCg0eRoZJzYJxAAvXBnsXlzg7L5zPMk6U4sUg==

nova

nova.conf

[libvirt]
inject_partition = -2
inject_password = False
inject_key = False
virt_type = kvm
# ceph rbd support
rbd_user = cinder
rbd_secret_uuid = ad44c82d-e905-4d13-bfad-8fe47567a8e0
images_type = rbd
images_rbd_pool = vms
images_rbd_ceph_conf = /etc/ceph/ceph.conf
live_migration_with_native_tls = true
live_migration_scheme = tls
live_migration_inbound_addr = 10.224.10.34
hw_disk_discard = unmap
disk_cachemodes = network=writeback

Configurazione Ceph corretta

imagestype = rbd - usa Ceph RBD per le immagini delle VM * imagesrbdpool = vms - pool dedicato per le VM * imagesrbdcephconf = /etc/ceph/ceph.conf - configurazione Ceph

rbduser = cinder e rbdsecret_uuid = ad44c82d-e905-4d13-bfad-8fe47567a8e0 - autenticazione (stesso UUID di Cinder)

Ottimizzazioni performance

hwdiskdiscard = unmap - abilita TRIM per recuperare spazio su Ceph

disk_cachemodes = network=writeback - cache writeback per migliori performance su storage di rete

Live migration configurata

livemigrationwithnativetls = true - migrazione sicura con TLS

livemigrationscheme = tls - schema TLS

livemigrationinbound_addr = 10.224.10.34 - indirizzo per connessioni in entrata

Sicurezza:

injection disabilitato (best practice con cloud-init)

injectpartition = -2 * injectpassword = False

inject_key = False -