Table of Contents
RBD
Inizializzazione pool
Per supportare la memorizzazione degli oggetti relativi a delle immagini block device è necessario creare un pool, e inizializzarlo come un pool rbd:
rbd pool init <nome_pool>
L’associazione pool-applicazione avviene automaticamente.
Creazione utente
Per operare su pool rbd (creazione, cancellazione, accesso immagini) è opportuno definire un utente meno privilegiato di admin
, con un livello minimo di capabilities necessarie all gestione del pool. Ad esempio:
ceph auth get-or-create client.<nome_utente> mon 'profile rbd' osd 'profile rbd pool=<nome_pool>' mgr 'profile rbd pool=<nome_pool>'
Abilita il nuovo utente ad accedere (rw) al pool rbd. Posso essere anche attribuiti permessi in sola lettura a specifici pool. Al momento della creazione viene restituito il contenuto di un keyring corrispondente.
Accesso al pool da macchina client
Per accedere al pool, la macchina client necessita di:
<HTML><ol style="list-style-type: decimal;"></HTML>
<HTML><li></HTML><HTML><p></HTML>informazioni di accesso al cluster (configurazione minimale del cluster) in cat /etc/ceph/ceph.conf
, ottenibile da una macchina con profilo _admin
con:<HTML></p></HTML>
ceph config generate-minimal-conf
<HTML></li></HTML>
<HTML><li></HTML><HTML><p></HTML>keyring dell’utente in /etc/ceph/ceph.client.<client_name>.keyring
, ottenibile da una macchina con profilo _admin
durante la creazione dell’utente o con:<HTML></p></HTML>
ceph auth get client.<client_name> -o ceph.client.<client_name>.keyring
<HTML><p></HTML>Il keyring ottenuto conterrà anche l’elenco delle capabilities, anche se non sono necessarie ai fini dell’operatività.<HTML></p></HTML><HTML></li></HTML><HTML></ol></HTML>
Tutte le operazioni sul pool dalla macchina client avverranno attraverso le informazioni in questi file, salvo diversa specifica durante l’esecuzione dei tool.
Creazione immagini
Per utilizzare un block device usufruendo dello spazio in un pool rbd, è necessario creare un’immagine. Dalla macchina client (o da un nodo generico accedendo con opportune capabilities ):
rbd --id <client_name> create --size <image_size> <pool_name>/<image_name>
Se omesso, <pool_name>
è assunto essere rbd
.
Image mapping
Per utilizzzare l’immagine creata come block device, è necessario effettuare il mapping su un device locale. Dalla macchina client:
rbd --id <client_name> map <pool_name>/<image_name>
Se omesso, <pool_name>
è assunto essere rbd
.
Il comando restituisce il path al device locale, ad esempio /dev/rdb0
. Prima del mount creare come di consueto un filesystem sul device, ad esempio con:
mkfs.xfs /dev/rbd0
Block device (auto)mount
Il mount avviene come per un generico device a blocchi, ma per avere il mapping dell’immagine e il mount automatico al boot, è necessario utilizzare rbdmap
:
<HTML><ol style="list-style-type: decimal;"></HTML>
<HTML><li></HTML><HTML><p></HTML>Inserire nel file /etc/ceph/rbdmap
:<HTML></p></HTML>
<pool_name>/<image_name> id=<client_name>
<HTML></li></HTML>
<HTML><li></HTML><HTML><p></HTML>Inserire in /etc/fstab
:<HTML></p></HTML>
/dev/rbd/<pool_name>/<image_name> <mountpoint> <fs_type> noauto 0 0
<HTML></li></HTML>
<HTML><li></HTML><HTML><p></HTML>Abilitare ed avviare il servizio rbdmap.service
:<HTML></p></HTML>
systemctl enable rbdmap.service systemctl start rbdmap.service
<HTML><p></HTML>Mapping e mount del device avverranno automaticamente.<HTML></p></HTML><HTML></li></HTML><HTML></ol></HTML>