Opzioni di memorizzazione nella cache
L'implementazione dello spazio utente di Ceph Block Device, librbd, non può sfruttare la cache della pagina Linux , quindi include la propria cache in memoria, denominata RBD
caching. La memorizzazione nella cache Ceph Block Device si comporta come la memorizzazione nella cache del disco fisso.
Quando il sistema operativo invia una barriera o una richiesta di svuotamento, tutti i dati sporchi vengono scritti negli OSD Ceph. Ciò significa che l'utilizzo della cache di write-back è sicuro quanto l'utilizzo di un disco fisso fisico ben funzionante con una macchina virtuale che invia correttamente le cancellazioni, ossia Linux versione kernel 2.6.32 o superiore. La cache utilizza un algoritmo LRU (Least Recently Used) e, in modalità write-back, può unire le richieste contigue per una migliore velocità di trasmissione.
Ceph Block Devices supporta la memorizzazione nella cache di write-back. Per abilitare la memorizzazione nella cache write-back, impostare rbd_cache = true sulla sezione [client] del file di configurazione Ceph. Per impostazione predefinita, librbd non esegue alcuna memorizzazione nella cache. Le scritture e le letture vanno direttamente al cluster di memorizzazione e le scritture vengono restituite solo quando i dati sono su disco su tutte le repliche. Con la memorizzazione nella cache abilitata, le scritture ritornano immediatamente, a meno che non vi siano più di rbd_cache_max_dirty byte non scaricati. In questo caso, la scrittura attiva un write-back e blocca fino a quando non viene scaricato un numero sufficiente di byte.
Ceph Block Devices supporta la memorizzazione nella cache write - through. È possibile impostare la dimensione della cache ed è possibile impostare destinazioni e limiti per passare dalla memorizzazione nella cache write - back alla memorizzazione nella cache write - through. Per abilitare la modalità write - through, impostare rbd_cache_max_dirty su 0. Ciò significa che la scrittura viene restituita solo quando i dati sono su disco su tutte le repliche, ma le letture possono provenire dalla cache. La cache è in memoria sul client e ogni immagine Ceph Block Device ha la sua. Poiché la cache è locale per il client, non c'è coerenza se ci sono altri che accedono all'immagine. L'esecuzione di altri file system, come GFS o OCFS, in aggiunta a Ceph Block Devices non funzionerà con la memorizzazione nella cache abilitata.
Le impostazioni di configurazione Ceph per Ceph Block Devices devono essere impostate nella sezione [client] del file di configurazione Ceph, per default /etc/ceph/ceph.conf.
| Opzione | Descrizione | Tipo | Obbligatorio | Vincolo | Predefinito |
|---|---|---|---|---|---|
rbd_cache |
Abilitare la memorizzazione nella cache per RBD (RADOS Block Device). | Booleano | N | N/D | true |
rbd_cache_size |
La dimensione della cache RBD (RADOS Block Devices) in byte. | Numero intero a 64 bit | N | N/D | 32 MiB |
rbd_cache_max_dirty |
Il limite dirty in byte a cui la cache attiva un write - back. Se 0, utilizza la memorizzazione nella cache write - through. |
Numero intero a 64 bit | N | Deve essere minore di rbd cache size. |
24 MiB |
rbd_cache_target_dirty |
Il dirty target prima che la cache inizi la scrittura dei dati nell'archiviazione dati. Non blocca le scritture nella cache. |
Numero intero a 64 bit | N | Deve essere minore di rbd cache max dirty. |
16 MiB |
rbd_cache_max_dirty_age |
Il numero di secondi in cui i dati non corretti si trovano nella cache prima dell'avvio del writeback. | A virgola mobile | N | N/D | 1.0 |
rbd_cache_max_dirty_object |
Il limite dirty per gli oggetti. Impostare su 0 per calcolare automaticamente da rbd_cache_size. |
Numero intero | N/D | N/D | 0 |
rbd_cache_block_writes_upfront |
Se true, bloccherà le scritture nella cache prima del completamento della chiamata aio_write . Se false, si blocca prima che venga richiamato aio_completion . |
Booleano | N/D | N/D | false |
rbd_cache_writethrough_until_flush |
Avviare in modalità write - through e passare a write-back dopo aver ricevuto la prima richiesta di flush. L'abilitazione di questa impostazione è conservativa ma sicura nel caso in cui le VM in esecuzione su rbd siano troppo vecchie per inviare scaricamenti, come il driver virtio in Linux precedente a 2.6.32. | Booleano | N | N/D | true |