Red Hat OpenShift Data Foundation (ODF) per i carichi di lavoro delle macchine virtuali
Implementare Data Foundation (ODF) di Red Hat® OpenShift® per i carichi di lavoro di VM: configurare i pool di archiviazione Ceph, impostare le classi di archiviazione, abilitare la migrazione in tempo reale e implementare soluzioni di backup.
Red Hat® OpenShift® Data Foundation (ODF) è la soluzione di storage convalidata e supportata per la virtualizzazione Red Hat OpenShift su IBM Cloud® Red Hat OpenShift Kubernetes Service. Si consiglia di utilizzare ODF come backend di archiviazione per la virtualizzazion Red Hat OpenShift.
Vantaggi principali
- Prestazioni elevate per le macchine virtuali: lo storage a blocchi ottimizzato è progettato per i dischi di avvio e di dati dei carichi di lavoro delle macchine virtuali, riducendo la latenza e garantendo un elevato numero di IOPS.
- Progettato per la virtualizzazione di Red Hat OpenShift: integrazione nativa con Red Hat OpenShift e KubeVirt, che supporta snapshot, clonazione, migrazione live, backup/ripristino e funziona perfettamente con il Containerized Data Importer (CDI).
- Elevata resilienza e disponibilità: archiviazione distribuita con replica dei dati tra i nodi di lavoro, ripristino automatico in caso di guasti ai dischi o ai nodi e assenza di un singolo punto di guasto per l'archiviazione.
- Ottimizzato per Red Hat OpenShift Kubernetes Service infrastruttura bare metal: Aggrega i dischi NVMe e SSD locali in un pool di storage condiviso, eliminando la dipendenza dallo storage di rete esterno.
- Assistenza completa e gestione dell'intero ciclo di vita: installazione e aggiornamenti tramite gli operatori dell' Red Hat OpenShift, con monitoraggio e avvisi integrati. Convalidato e supportato congiuntamente da IBM® e Red Hat®.
- Storage unificato per server virtuali e container: ODF fornisce uno storage coerente per questi carichi di lavoro su un'unica piattaforma.
Che cos'è ODF?
ODF è una soluzione di storage software-defined costruita per Red Hat OpenShift. ODF si basa su Ceph® ed è completamente integrato e gestito per tutto il suo ciclo di vita tramite gli Operatori di Red Hat OpenShift. Ceph è un sistema di archiviazione distribuito open source che trasforma i server standard in un cluster di archiviazione altamente scalabile e tollerante ai guasti.
ODF offre quattro tipi di archiviazione dalla stessa piattaforma:
- Archiviazione a blocchi (RBD) – per i dischi dei carichi di lavoro delle macchine virtuali
- Archiviazione dei file ( CephFS ) – per i file system condivisi
- Object storage (RGW e S3-compatible ) – per carichi di lavoro di tipo object
- NFS ( CephFS-backed ) – NFS esportazioni per clienti tradizionali o esteri
In ODF, NFS è supportato da CephFS ed esposto attraverso un gateway Ceph NFS Ganesha. Il gateway è gestito attraverso una risorsa personalizzata CephNFS in Rook. Non si tratta di un backend di archiviazione a sé stante. Consente l'accesso a CephFS tramite il protocollo NFS. Lo scenario d'uso principale consiste nel fornire un access NFS e ai client esterni al cluster Red Hat OpenShift o ai carichi di lavoro che richiedono NFS. NFS non viene utilizzato per i dischi dei carichi di lavoro delle macchine virtuali, poiché i server virtuali utilizzano lo storage a blocchi (RBD).
Su IBM Red Hat OpenShift Kubernetes Service, ODF utilizza in genere i dischi locali sui nodi di lavoro per creare un cluster di archiviazione ad alte prestazioni e resiliente all'interno di Red Hat OpenShift.
Comprendere la protezione dei dati
Prima di pianificare e implementare il cluster ODF, è importante comprendere in che modo ODF protegge i dati. La strategia di protezione dei dati scelta influisce sulla capacità di archiviazione, sulle caratteristiche delle prestazioni, sulla tolleranza agli errori e sul numero minimo di nodi necessari.
Un singolo cluster ODF può eseguire più pool Ceph contemporaneamente, ciascuno con un diverso criterio di protezione dei dati. Ogni pool è esposto ai carichi di lavoro attraverso il proprio StorageClass. Quando si crea un carico di lavoro di una macchina virtuale, selezionare StorageClass per ogni disco. Ad esempio, un carico di lavoro di una macchina virtuale potrebbe utilizzare un’unità rep3 StorageClass come disco di root e un’altra unità StorageClass, supportata da un pool rep2, come disco per i dati meno critici. Questo modello non è una scelta di cluster, tutto o niente.
Per i team di VMware, questo modello è simile alle politiche di archiviazione di vSAN. In vSAN, si assegna un criterio di archiviazione (ad esempio, RAID-1 FTT=1, RAID-5 ) per carico di lavoro della macchina virtuale o per VMDK. In ODF, si assegna un StorageClass che mappa un pool Ceph per ogni PVC. Il concetto è lo stesso, ma carichi di lavoro diversi sullo stesso cluster possono avere livelli di protezione diversi.
ODF supporta le seguenti strategie di protezione dei dati per i pool di blocchi Ceph:
Pool replicati (predefinito)
La configurazione ODF predefinita utilizza la replica a tre vie. Ogni dato viene archiviato in 3 copie su nodi diversi e garantisce protezione contro un massimo di 2 guasti simultanei di dischi o nodi.
- Vantaggi: architettura semplice, letture veloci, ripristino rapido e latenza prevedibile.
- Aumento dell'utilizzo: 3x di spazio di archiviazione grezzo per ogni byte di dati utilizzabili.
Cosa succede in caso di smarrimento delle copie ( rep3 ):
| Copie rimaste | Stato di Ceph | Comportamento I/O | Rischio |
|---|---|---|---|
| 3 di 3 | active+clean |
Funzionamento normale. Le letture vengono fornite da qualsiasi copia. | Nessuno. |
| 2 di 3 | active+degraded |
L'I/O continua normalmente. Ceph inizia immediatamente a replicare nuovamente la copia mancante su un altro OSD per ripristinare le 3 copie. | Minimo. I dati sono ancora durevoli su 2 OSD indipendenti. Il recupero avviene automaticamente. |
| 1 di 3 | active+degraded o peered (a seconda di min_size) |
Con l' min_size=2 e predefinita ODF, Ceph blocca tutte le operazioni di I/O verso i gruppi di collocazione interessati quando rimane una sola copia. Impedisce operazioni di scrittura superflue che potrebbero causare incongruenze.
I server virtuali che contengono dati su tali PG subiscono un blocco I/O. |
Alto. Su un unico OSD rimasto è presente una sola copia dei dati. Se anche questa operazione fallisce prima che il recupero sia completato, i dati andranno persi definitivamente. |
| 0 di 3 | incomplete |
L'I/O è bloccato. Non esistono copie. | Perdita di dati. I dati sono definitivamente irrecuperabili. |
Il parametro min_size controlla il numero minimo di copie che devono essere disponibili prima che Ceph permetta l'I/O. ODF imposta per impostazione predefinita il parametro " min_size=2 " per i pool "
rep3 " e tale impostazione viene applicata tramite " requireSafeReplicaSize: true"; ciò significa che, quando sono disponibili 2 o 3 copie, le operazioni di lettura e scrittura procedono normalmente. Quando è
disponibile una sola copia, Ceph blocca le operazioni di I/O per evitare ulteriori incongruenze nei dati.
Questo comportamento è un meccanismo di sicurezza intenzionale che privilegia l'integrità dei dati rispetto alla disponibilità.
Il periodo che intercorre tra la perdita della seconda copia e il completamento della re-replicazione è quello più pericoloso. Durante questo periodo, un terzo guasto causa la perdita permanente dei dati. Ecco perché la pianificazione della capacità è importante: la velocità di replica di Ceph dipende dalla larghezza di banda disponibile del cluster e dallo spazio libero. Un cluster sovraccarico o quasi pieno impiega più tempo a eseguire la replicazione, il che prolunga il periodo di vulnerabilità.
Per le pool “ rep2 ”, la progressione è più aggressiva. Se 1 copia viene persa, ne rimane solo 1. Con l'opzione " min_size=2 " (impostazione predefinita), l'I/O viene immediatamente bloccato sui PG interessati fino al
ritorno dell'OSD mancante o alla replica di una nuova copia. Con l'opzione " min_size=1", le operazioni di I/O proseguono sull'unica copia rimasta, ma un secondo guasto comporta la perdita definitiva dei dati.
Il componente aggiuntivo ODF di Red Hat OpenShift Kubernetes Service crea automaticamente solo pool rep3 con ocs-storagecluster-cephblockpool. Rep2 I pool non vengono creati dall'add-on. È necessario creare manualmente un file
personalizzato “ CephBlockPool ” contenente “ replicated.size: 2 ” e un file corrispondente “ StorageClass ”. Per ulteriori informazioni, consultare la sezione " Creazione di un file " StorageClass " personalizzato per la virtualizzazione".
Poiché rep2 offre una tolleranza ai guasti inferiore rispetto a rep3, valutate se il risparmio in termini di spazio di archiviazione giustifichi il maggiore rischio per il vostro carico di lavoro.
IBM raccomanda la replica a tre vie per tutti i carichi di lavoro di virtualizzazione in produzione, al fine di garantire la disponibilità e la durabilità dei dati.
Piscine con codifica a cancellazione
Per gli ambienti in cui l'efficienza della capacità di archiviazione è una priorità, ODF supporta anche i pool con codice di cancellazione (EC). EC suddivide i dati in blocchi di dati ( k ) e blocchi di parità ( m ), riducendo così l'utilizzo di spazio di archiviazione grezzo rispetto alla replica, pur garantendo comunque la tolleranza ai guasti.
Stato del supporto: la codifica a cancellazione per RBD e CephFS in ODF è una funzionalità in anteprima per sviluppatori, introdotta per la prima volta in ODF 4.20. Le funzionalità della versione Developer Preview non sono supportate per l'uso in produzione. Inoltre, non rientrano nella gestione dei casi del Portale clienti Red Hat. Prima dell'ODF 4.20, era disponibile solo l'EC RGW (object storage) come anteprima per sviluppatori (da ODF 4.16 ). Sebbene il motore di storage Ceph sottostante supporti le sovrascritture EC per RBD dalla release Luminous (2017), l'operatore ODF e il suo modello di distribuzione gestita non certificano ancora i pool EC per i carichi di lavoro di storage a blocchi di produzione. Si consiglia di utilizzare pool replicati ( rep2 o rep3 ) per tutti gli ambienti di produzione VM e di archiviazione e di valutare i pool EC solo per gli ambienti non di produzione in cui le limitazioni della versione Developer Preview sono accettabili.
La tabella seguente mette a confronto tutti i tipi di pool disponibili, a titolo di riferimento.
| Tipo di pool | Configurazione | Aumento dell'utilizzo di Raw | Tolleranza agli errori | Host minimi richiesti |
|---|---|---|---|---|
| rep3 (impostazione predefinita) | 3 copie | 3.0x | Sopravvive a 2 guasti | 3 |
| rep2 | 2 copie | 2.0x | Sopravvive a 1 guasto | 2 |
| rep1 (non resiliente) | 1 copia | 1.0x | Nessuno. Perdita di dati in caso di guasto | 3 |
| ec-2-1 | k=2, m=1 | 1.5x | Sopravvive a 1 guasto | 3 |
| ec-3-1 | k=3, m=1 | 1.33x | Sopravvive a 1 guasto | 4 |
| ec-2-2 | k=2, m=2 | 2.0x | Sopravvive a 2 guasti | 4 |
| ec-4-2 | k=4, m=2 | 1.5x | Sopravvive a 2 guasti | 6 |
I seguenti elenchi illustrano gli aspetti fondamentali da considerare nella codifica a cancellazione.
- I pool EC presentano una latenza di scrittura maggiore rispetto ai pool replicati a causa del calcolo della parità e della necessità di scrivere un numero maggiore di blocchi per ogni operazione.
- I pool EC offrono un throughput di lettura sequenziale competitivo, ma potrebbero mostrare IOPS di scrittura casuali ridotti.
- Il numero di domini di errore deve essere almeno pari a k+m. Su un cluster a 3 nodi, sono possibili solo rep2, rep3 e ec-2-1.
- Per un cluster a 6 nodi, sono disponibili tutti i tipi di pool elencati in precedenza.
Pool con replica singola (non resiliente, solo per sviluppo e test)
A partire dalla versione del componente aggiuntivo ODF 4.14, Red Hat OpenShift Kubernetes Service supporta un pool di singole repliche ( rep1 ) attraverso il parametro addSingleReplicaPool. Questo parametro crea un pool di blocchi
Ceph non resiliente, senza replica dei dati, in cui ogni blocco di dati viene memorizzato una sola volta.
Per abilitare il pool a replica singola durante l'implementazione di ODF, utilizzare il seguente comando
ibmcloud oc cluster addon enable openshift-data-foundation -c <cluster_name> \
--version <version> \
--param "addSingleReplicaPool=true"
Questo comando crea un ulteriore StorageClass:
ocs-storagecluster-ceph-non-resilient-rbd: Archiviazione a blocchi a replica singola con legatura dei volumiWaitForFirstConsumer.
Con questo strumento viene ancora creato il pool standard " replica-3 " (ocs-storagecluster-cephblockpool). Il pool non resiliente è un'opzione separata e opt-in.
Un singolo pool di repliche presenta i seguenti casi d'uso.
- Ambienti di sviluppo e di test, in cui la durata dei dati non è fondamentale e la priorità è data al risparmio sui costi di archiviazione.
- Applicazioni con replica integrata: queste applicazioni gestiscono autonomamente la ridondanza dei dati a livello di applicazione. Queste applicazioni mantengono più copie distribuite tra i nodi, il che significa che la replica a livello di archiviazione è ridondante.
Il singolo pool di repliche offre una tolleranza di errore pari a zero. Il guasto di un singolo OSD o nodo comporta la perdita permanente e irrecuperabile di tutti i dati presenti su quell'OSD. Non è disponibile una seconda copia per il ripristino. La documentazione di IBM Cloud avverte esplicitamente che questa opzione aumenta il rischio di perdita di dati, corruzione dei dati e potenziale instabilità del sistema. Per ulteriori informazioni, consultare la documentazione di Ceph.
Limitazioni:
- Solo archiviazione a blocchi: l'archiviazione dei file non è supportata con una singola replica.
- Richiede dischi aggiuntivi: almeno un disco NVMe utilizzabile in più per ogni nodo, oltre a quelli utilizzati dal pool “ replica-3 ”. Senza questo disco aggiuntivo, gli OSD di replica-1 non si avviano e il cluster di archiviazione rimane in uno stato di avanzamento.
- Un pool per dominio di guasto: ODF crea un CephBlockPool non resiliente per dominio di guasto, con volumi vincolati utilizzando
WaitForFirstConsumerper convalidare la localizzazione dei dati. - Non è raccomandato per i dischi root dei carichi di lavoro delle macchine virtuali: Se l'OSD che ospita un disco root si guasta, il carico di lavoro della macchina virtuale viene definitivamente perso. Utilizzate il pool non resiliente solo per i dischi di dati usa e getta nei carichi di lavoro delle macchine virtuali dev o di prova.
Per i carichi di lavoro di virtualizzazione in ambiente di produzione, utilizzare sempre pool " replica-3 " (o, come minimo, " replica-2 ").
VMware vSAN confronto tra le migrazioni
Per i team che stanno effettuando la migrazione da VMware vSAN™, questi tipi di pool Ceph corrispondono alle politiche di archiviazione vSAN già note:
| Pool Ceph | L'equivalente più vicino a vSAN | Aumentare l'utilizzo | Tolleranza agli errori | Note |
|---|---|---|---|---|
| rep2 | RAID-1, FTT=1 | 2x | 1 fallimento | Equivalente diretto per entrambi: salvare 2 copie. |
| rep3 | RAID-1, FTT=2 | 3x | 2 fallimenti | Equivalente diretto per entrambi: salvare 3 copie. |
| ec-2-1 | Nessun equivalente diretto | 1.5x | 1 fallimento | A parità di condizioni, come RAID-5, ma con un layout 2+1. Utilizzo più elevato rispetto a vSAN RAID-5. |
| ec-3-1 | RAID-5, FTT=1 (3+1) | 1.33x | 1 fallimento | Equivalente diretto per entrambi: utilizzare 3 blocchi di dati + 1 blocco di parità. |
| ec-2-2 | Nessun equivalente diretto | 2x | 2 fallimenti | Dual-parity come RAID-6, ma utilizza un layout 2+2. Più utilizzo di vSAN RAID-6. |
| ec-4-2 | RAID-6, FTT=2 (4+2) | 1.5x | 2 fallimenti | Equivalente diretto per entrambi: utilizzare 4 blocchi di dati + 2 blocchi di parità. |
Le principali differenze rispetto a vSAN:
- Minimo di host: Ceph separa il quorum del cluster dal posizionamento dei dati. Un pool “ rep3 ” richiede solo 3 host perché ogni host memorizza una copia completa. vSAN RAID-1 FTT=2 richiede 5 host.
- rep2 corrisponde allo standard vSAN RAID-1: La maggior parte delle implementazioni di vSAN utilizza FTT=1, che memorizza 2 copie. L' rep2 " di Ceph è l'equivalente diretto.
- ec-3-1 corrisponde a vSAN e RAID-5:. Entrambe utilizzano una configurazione 3+1 e raggiungono un utilizzo pari a 1.33x, l'opzione più efficiente in termini di spazio per la tolleranza a un singolo guasto.
- ec-4-2 corrisponde a vSAN e RAID-6:. Entrambe utilizzano una configurazione 4+2 e garantiscono un utilizzo del tipo " 1.5x " con tolleranza a doppio guasto.
- ec-2-1 e " ec-2-2 " non hanno un equivalente diretto in " vSAN ": configurazioni Ceph EC più piccole con un numero inferiore di blocchi di dati, che comportano un maggiore utilizzo per byte ma richiedono un numero inferiore di host. Sacrificano l'efficienza di archiviazione a favore di requisiti di numero di host inferiori.
Pianificazione del cluster ODF
Una volta comprese le opzioni relative alla protezione dei dati, è ora possibile pianificare il dimensionamento del cluster e la topologia per l’implementazione di ODF.
Capacità di pianificazione
Quando si progetta il proprio cluster ODF, occorre tenere conto dello spazio di archiviazione lordo richiesto dalla politica di protezione dei dati scelta. La capacità utilizzabile è inferiore alla capacità NVMe grezza totale.
La formula della capacità utile è Usable capacity = Total raw NVMe capacity / Replication or EC overhead factor.
Si veda il seguente esempio di calcoli per un cluster a 3 nodi con 8 x 3.2 TB di unità NVMe per nodo ( 76.8 TB in totale):
| Protezione dei dati | Fattore di utilizzo | Capacità utilizzabile | Efficienza dell'archiviazione |
|---|---|---|---|
| *ep3 (impostazione predefinita) | 3.0x | 25.6 TBC | 33% |
| rep2 | 2.0x | 38.4 TB | Il 50% |
| ec-2-1 | 1.5x | 51.2 TBC | Il 67% |
| rep1 (non resiliente) | 1.0x | 76.8 TB | 100% |
Stima della capacità del carico di lavoro della macchina virtuale: Un tipico carico di lavoro di una macchina virtuale con un disco root da 30 GB e un disco dati da 100 GB utilizza 130 GB di spazio di archiviazione utilizzabile. Con rep3, quel carico di lavoro della macchina virtuale richiede 390 GB di spazio di archiviazione grezzo. Sul cluster a 3 nodi descritto in precedenza, è possibile allocare circa 196 carichi di lavoro di macchine virtuali di queste dimensioni. In pratica, l'utilizzo di Ceph deve essere inferiore al 75% per mantenere le prestazioni e supportare le operazioni di ripristino.
Le prestazioni di Ceph si riducono con l'aumento dell'utilizzo del cluster. ODF genera l'avviso " CephOSDNearFull " ( Prometheus ) quando l'utilizzo di un qualsiasi OSD supera il 75%. All'85%, Ceph imposta il flag OSD
nativo " nearfull " (mon_osd_nearfull_ratio) e ODF genera l'avviso " CephOSDCriticallyFull ". Al 90%, Ceph interrompe le operazioni di backfill e di recupero sull’OSD interessato
(mon_osd_backfillfull_ratio). Al 95%, Ceph contrassegna l’OSD come “ full ” (mon_osd_full_ratio), blocca tutte le operazioni di scrittura ed emette un’ HEALTH_ERR. Pianificate la capacità
in modo che il utilizzo rimanga al di sotto del 70% durante il normale funzionamento, lasciando un margine per il recupero dei dati e il ribilanciamento in caso di manutenzione o guasti dei nodi.
Per verificare l'utilizzo attuale del cluster, eseguire il seguente comando:
oc exec -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) -- ceph df
Numero di nodi di lavoro e topologia
La topologia dei domini di errore utilizzata dal componente aggiuntivo ODF di IBM Cloud dipende dalla configurazione del cluster:
- Cluster multizona (3 zone di disponibilità): il dominio di errore è impostato su
zone. I nodi di lavoro sono distribuiti tra le zone e l'ODF deve crescere in multipli di 3 per mantenere l'equilibrio tra le zone. Per garantire disponibilità, prestazioni e sicurezza dei dati ottimali, utilizzare 3, 6 o 9 nodi nel cluster di storage ODF: ogni zona riceve lo stesso numero di nodi. - Cluster a zona singola o cluster con meno di 3 zone di disponibilità: il ridimensionamento flessibile viene abilitato automaticamente e il dominio di errore è impostato su
host. Puoi iniziare con 3 nodi e aggiungerne uno alla volta.
Tutti i nodi che partecipano al cluster di storage ODF devono essere bare metal. Non è supportata la combinazione di nodi virtualizzati e nodi bare-metal all'interno dello stesso cluster ODF.
Per i cluster multizona: l'aggiunta di un numero di nodi che non sia un multiplo di 3 crea uno squilibrio tra le zone. Con 4 nodi, una zona ne riceve 2 mentre le altre ne ricevono 1 ciascuna, il che comporta una distribuzione non uniforme del carico sugli OSD, un posizionamento dei dati non ottimale, un utilizzo disomogeneo e OSD parzialmente inattivi.
Per i cluster multizona, scalare sempre in multipli di 3 per mantenere una topologia delle zone equilibrata.
Perché 6 nodi sono il minimo pratico per la produzione
Sebbene ODF richieda un minimo di 3 nodi, un cluster a 3 nodi non offre alcun margine per la manutenzione programmata. Si consideri cosa accade con un sistema “ rep3 ” su 3 nodi quando un nodo viene isolato per un aggiornamento del firmware o per l’upgrade di “ Red Hat OpenShift ”:
- 1 nodo è in manutenzione. Poiché i suoi OSD sono inattivi, Ceph contrassegna quelle copie come non disponibili. Il cluster entra in modalità "
active+degraded" e avvia una nuova replica per ripristinare 3 copie sui 2 nodi rimanenti. - Se un secondo nodo si guasta durante quella finestra di manutenzione (guasto del disco, kernel panic, interruzione di corrente), alcuni gruppi di collocazione rimangono con una sola copia. Con l'impostazione predefinita
min_size=2, Ceph blocca l'I/O su questi PG. I server virtuali con dati presenti nei gruppi di collocazione interessati si bloccano. - Se sia il nodo di manutenzione che il nodo guasto rimangono inattivi, qualsiasi gruppo di collocazione con copie su quei due nodi e un terzo OSD sullo stesso nodo avrà 0 copie, causando una perdita permanente dei dati.
Per evitare questa perdita di dati, dimensionare il cluster ODF in modo tale da poter sopportare la perdita simultanea di 2 nodi, mantenendo comunque un numero sufficiente di OSD affinché tutti i dati rimangano disponibili.
| Nodi | Manutenzione + guasto | Risultato |
|---|---|---|
| 3 (minimo) | 1 in manutenzione + 1 guasto = 1 rimanente | I/O bloccato (min_size=2). Rischio di perdita di dati. |
| 6 (consigliato) | 1 in manutenzione + 1 guasto = 4 rimanenti | Ceph esegue una nuova replica sui 4 nodi. L'I/O continua. Nessun rischio di perdita di dati. |
| 9 | 1 in manutenzione + 1 guasto = 7 rimanenti | Ampia capacità di replicazione secondaria. Impatto minimo sulle prestazioni. |
Per i cluster di produzione che eseguono rep3, iniziare con 6 nodi. Questa configurazione fornisce all'indirizzo N+2 una capacità sufficiente per un nodo in manutenzione programmata e un guasto imprevisto, senza rischiare la disponibilità o la perdita dei dati. Utilizzate un cluster a 3 nodi solo per lo sviluppo, i test o le prove di concetto, dove i tempi di inattività e la perdita di dati sono accettabili.
È possibile verificare le assegnazioni della topologia dei nodi nel proprio cluster eseguendo il seguente comando:
oc get nodes -l node-role.kubernetes.io/worker= \
-o custom-columns='NAME:.metadata.name,RACK:.metadata.labels.topology\.kubernetes\.io/rack'
Hai due opzioni di implementazione.
-
Opzione A – Utilizzare l'intero bacino di manodopera
- Specificare solo il nome del pool di lavoratori durante la configurazione di ODF.
- Per i cluster multizona, verificare che il pool contenga 3, 6 o 9 nodi bare metal (multipli di 3). Per i cluster a zona singola, è richiesto un minimo di 3 nodi.
-
Opzione B – Selezionare nodi specifici
- Se il pool contiene più nodi, oppure se si desidera riservare alcuni nodi per carichi di lavoro esclusivamente di calcolo, selezionare i nodi che devono partecipare all'ODF. Per i cluster multizona, selezionare un numero di nodi multiplo di 3; per i cluster a zona singola, è valido qualsiasi numero pari o superiore a 3.
Piani di abbonamento ODF
Scegli il piano più adatto alle tue esigenze:
-
Essentials
- Costo ridotto
- Solo implementazione in modalità interna
- Non supporta il ripristino di emergenza, i cluster estesi né le implementazioni in modalità esterna
- Ideale per ambienti di test e sviluppo, prove di fattibilità o implementazioni su piccola scala
-
Avanzate
- Set completo di funzionalità che include il ripristino di emergenza, i cluster estesi, l'implementazione in modalità esterna, la crittografia granulare avanzata e il supporto multi-cluster
- Consigliato per carichi di lavoro di virtualizzazione di produzione con macchine virtuali
Entrambi i piani includono la compressione “ BlueStore ” sui pool di blocchi, il thin provisioning, le istantanee e la clonazione. Le differenze tra i piani riguardano il ripristino di emergenza, il livello di granularità della crittografia e la flessibilità di implementazione, piuttosto che le funzionalità relative all'efficienza dello storage.
ODF supporta la deduplicazione solo per lo storage degli oggetti attraverso il Multicloud Object Gateway (MCG). Lo storage a blocchi non supporta la deduplicazione. Questo servizio di assistenza è valido sia per il piano Essentials che per quello Advanced. La deduplicazione Ceph upstream per RBD rimane sperimentale e non è certificata per l'uso in ODF.
Per ulteriori informazioni, consultare la sezione “ODF: nozioni di base e nozioni avanzate ”.
Impostare ODF su Red Hat OpenShift Kubernetes Service
Red Hat OpenShift La virtualizzazione sui cluster VPC di Red Hat OpenShift Kubernetes Service attualmente supporta solo nodi di lavoro bare metal. I nodi worker virtualizzati non sono supportati per i cluster di archiviazione ODF.
Assicurati che il tuo cluster Red Hat OpenShift Kubernetes Service includa almeno un pool di worker che utilizzi server bare metal in esecuzione su Red Hat CoreOS. Red Hat OpenShift. Per la virtualizzazione di Red Hat OpenShift è richiesta la
versione 4.17 o successiva. Le opzioni bare metal supportate sono bx2d.metal.96x384, cx2d.metal.96x192 e mx2d.metal.96x768.
Distribuite il cluster di storage ODF su questi nodi bare metal per utilizzare i dischi NVMe locali e fornire uno storage a blocchi ad alte prestazioni alle macchine virtuali.
Per istruzioni sulla distribuzione di ODF su un cluster Red Hat OpenShift Kubernetes Service basato su VPC, vedere Distribuzione di Red Hat OpenShift Data Foundation su cluster VPC.
Tipo di archiviazione
- Selezionare Archiviazione locale.
- Lo storage locale utilizza lo storage di istanza NVMe locale disponibile sui nodi worker bare metal.
- Le unità NVMe offrono una latenza ridotta e elevate prestazioni in termini di IOPS, caratteristiche indispensabili per i dischi destinati ai carichi di lavoro delle macchine virtuali.
Profilo della risorsa ODF
ODF fornisce tre profili di allocazione delle risorse che controllano la CPU e la memoria riservata ai demoni Ceph.
- Lean: allocazione minima delle risorse. Il profilo Lean è adatto ad ambienti con risorse limitate, a test, sviluppo e prove di concetto. L'approccio Lean non è consigliato per i carichi di lavoro relativi alla virtualizzazione della produzione.
- Bilanciato: Il profilo predefinito su Red Hat OpenShift Kubernetes Service. Il profilo Balanced offre un equilibrio tra consumo di risorse e prestazioni per carichi di lavoro generici.
- Prestazioni: assegna una maggiore quantità di CPU e memoria ai daemon di Ceph, riducendo così il rischio di colli di bottiglia a livello dei daemon. Ideale per carichi di lavoro con elevato numero di IOPS, grandi quantità di server virtuali e applicazioni esigenti.
Per le implementazioni bare-metal con unità NVMe locali, utilizzare il profilo di risorse “Performance ”. I nodi bare-metal con 8 o più unità NVMe per nodo generano un numero elevato di OSD per host. Con il profilo “Balanced”, i limiti di CPU e memoria del daemon Ceph vengono spesso raggiunti prima che l’hardware NVMe sottostante raggiunga la saturazione, il che limita gli IOPS e aumenta la latenza. Il profilo "Performance" è il profilo minimo consigliato per i carichi di lavoro di virtualizzazione di Red Hat OpenShift in ambiente di produzione su bare-metal.
I requisiti di risorse mostrati nella console web Red Hat OpenShift durante l'installazione di ODF sono calcolati dinamicamente in base al conteggio degli OSD del cluster. Pertanto, i cluster con un numero maggiore di unità NVMe richiedono proporzionalmente più risorse. I valori non sono fissi. Verificare sempre i requisiti visualizzati nella console per la configurazione specifica del cluster.
Il profilo viene selezionato durante la creazione di StorageSystem attraverso la schermata Configure Performance della console web Red Hat OpenShift. I daemon Ceph con risorse insufficienti possono diventare un collo di bottiglia nascosto, causando una riduzione degli IOPS o una latenza superiore a quella che l'hardware di archiviazione sottostante è in grado di garantire.
Abbinate i profili dei server bare metal ai requisiti di risorse indicati per il profilo scelto: IBM Cloud Profili di server bare metal VPC.
Un leggero eccesso di risorse è spesso accettabile su un server bare metal. Tuttavia, non assegnare mai risorse significativamente inferiori ai requisiti minimi indicati, poiché ciò compromette le prestazioni e la stabilità di ODF.
Numero di dischi OSD per nodo
- Determinare il numero di unità NVMe locali disponibili su ciascun server bare metal.
- Assicurarsi che il numero di OSD configurati per nodo non superi il numero di unità NVMe utilizzabili.
- La configurazione consigliata prevede 1 OSD per ogni unità NVMe, al fine di garantire prestazioni ottimali e l'isolamento dei guasti.
- Assicurarsi che il numero di dischi OSD corrisponda, in linea di massima, al numero di unità NVMe per ogni nodo bare metal. Il calcolo della capacità di archiviazione visualizzato nell'interfaccia utente non riflette la capacità effettiva utilizzabile per le configurazioni di archiviazione locale e può essere ignorato.
Quando si selezionano i nodi durante la creazione di un cluster di tipo " StorageSystem ", evitare di selezionare tutti i nodi del cluster. Selezionando tutti i nodi si crea un sistema di bilanciamento del carico
( LocalVolumeSet, LVS) senza nodeSelector. Qualsiasi nodo di lavoro che verrà aggiunto al cluster in futuro verrà rilevato automaticamente da ODF, anche se non è destinato allo storage. I nodi rilevati in modo imprevisto devono
essere rimossi manualmente dall'LVS. Per evitare che ciò accada, seleziona solo i nodi presenti nel tuo pool di worker di archiviazione dedicato oppure assicurati che tali nodi abbiano l'etichetta " cluster.ocs.openshift.io/openshift-storage " prima di creare un StorageSystem.
StorageClass predefinito per il cluster
Una volta completata l'implementazione di ODF, vengono solitamente creati i file di configurazione del sistema di gestione delle risorse ( followingStorageClasses ):
ocs-storagecluster-ceph-rbd: Archiviazione a blocchiocs-storagecluster-cephfs: Archiviazione dei fileocs-storagecluster-ceph-rgw: Memorizzazione degli oggetti
Per consentire ai carichi di lavoro di utilizzare automaticamente uno storage a blocchi persistente ad alte prestazioni basato su ODF senza necessità di ulteriori configurazioni, selezionare "Usa dispositivo a blocchi Ceph RADOS (RBD) " come classe di storage predefinita oppure impostare manualmente RBD (ocs-storagecluster-ceph-rbd) come classe di storage predefinita ( StorageClass ) per il cluster dopo l'installazione del componente
aggiuntivo ODF.
-
Contrassegnare RBD come predefinito:
oc patch storageclass ocs-storagecluster-ceph-rbd -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' -
Se necessario, rimuovere l'impostazione predefinita precedentemente configurata:
oc patch storageclass <previous-default-name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
Lista di controllo della configurazione di ODF
- Il cluster contiene almeno un pool di server bare metal
- Red Hat OpenShift versione 4.17 o successive
- Il componente aggiuntivo e l'operatore ODF sono installati e funzionanti
- I server bare metal dispongono di un numero sufficiente di unità NVMe locali utilizzabili
- Il profilo di risorsa selezionato corrisponde alla capacità del nodo
- Il cluster di archiviazione ODF richiede un minimo di 3 nodi; i cluster multizona devono avere un numero di nodi multiplo di 3 (3, 6, 9, …) per mantenere l'equilibrio della zona
- Tutti i nodi partecipanti a ODF sono bare metal
- L'RBD StorageClass viene creato e preferibilmente impostato come predefinito
- Lo stato del cluster ODF è "Pronto" (
oc get storagecluster -n openshift-storage) - Lo stato di integrità di Ceph è HEALTH_OK (
oc -n openshift-storage rsh $(oc get pod -l app=rook-ceph-tools -o name) ceph status)
Esecuzione di server virtuali su ODF
Utilizza le seguenti informazioni per eseguire server virtuali su ODF.
Prerequisiti: installare l'operatore di virtualizzazione " Red Hat OpenShift "
Prima di utilizzare la virtualizzazion Red Hat OpenShift su IBM Cloud, verificare che l'operatore di virtualizzazione Red Hat OpenShift sia installato nel proprio cluster Red Hat OpenShift Kubernetes Service.
L’operatore di virtualizzazione “ Red Hat OpenShift ” consente la gestione dei carichi di lavoro delle macchine virtuali native dell’ Kubernetes. Fornisce inoltre i controller, i CRD e le integrazioni con i componenti di storage e di rete necessari.
Per ulteriori informazioni, vedere Red Hat OpenShift Virtualization su IBM Cloud.
Utilizzo dello storage ODF per i carichi di lavoro delle macchine virtuali
Red Hat OpenShift Data Foundation (ODF) fornisce uno storage persistente e definito dal software per i carichi di lavoro di virtualizzazione che girano su Red Hat OpenShift. Quando si utilizza ODF come backend di archiviazione per le macchine virtuali, la scelta del StorageClass corretto è fondamentale per garantire prestazioni, stabilità e piena compatibilità delle funzionalità.
È necessario specificare l' StorageClass e appropriato nelle seguenti situazioni:
- Vengono creati i server virtuali
- I server virtuali vengono importati o clonati
- I server virtuali vengono migrati su un cluster Red Hat OpenShift Kubernetes Service
Virtualizzazione predefinita StorageClass
Una volta installato l’ Red Hat OpenShift Virtualization Operator e quando è disponibile un cluster ODF, viene creato automaticamente un StorageClass ottimizzato per i carichi di lavoro di virtualizzazione:
ocs-storagecluster-ceph-rbd-virtualization
Questo StorageClass è:
- Ottimizzato per i modelli di I/O del disco, come letture e scritture casuali e throughput sostenuto
- Convalidato per le operazioni del ciclo di vita della virtualizzazione, come avvio, arresto, migrazione live e snapshot
- Completamente supportato e raccomandato per gli ambienti di virtualizzazione Red Hat OpenShift in produzione
Per la maggior parte dei casi d'uso, utilizzare questo StorageClass senza modifiche.
Requisiti di archiviazione per la migrazione live
La migrazione live sposta il carico di lavoro di una macchina virtuale in esecuzione da un nodo worker a un altro senza tempi di inattività. Per una migrazione live riuscita, lo storage deve essere accessibile contemporaneamente sia dal nodo di origine che da quello di destinazione. La migrazione live richiede le seguenti configurazioni.
ReadWriteManymodalità di accesso sui PVC dei carichi di lavoro delle macchine virtuali. Ceph RBD supporta RWX in modalità blocco, che è la configurazione predefinita per la virtualizzazione ODF StorageClass.ocs-storagecluster-ceph-rbd-virtualizationStorageClass è preconfigurato con il supporto per l'ReadWriteMany, tramite la modalità a blocchi RBD. I server virtuali che utilizzano questo StorageClass possono migrare senza ulteriori configurazioni.- Il generico
ocs-storagecluster-ceph-rbdStorageClass utilizza la modalità di accessoReadWriteOnceper impostazione predefinita. I server virtuali che utilizzano PVC RWO non possono eseguire la migrazione live. La migrazione non riesce perché il PVC non può essere montato sul nodo di destinazione mentre è collegato all'origine.
Se si creano dei " customStorageClasses " (PVC) per server virtuali che richiedono la migrazione in tempo reale, verificare che i PVC siano creati con le opzioni " accessModes: [ReadWriteMany] " e " volumeMode: Block".
La migrazione live richiede anche:
- Configurazione dell'Operatore di virtualizzazione Red Hat OpenShift con una politica di migrazione adeguata
- Verifica della disponibilità di CPU e memoria sufficienti sul nodo di destinazione
Specifico per la virtualizzazione rispetto all'RBD generico StorageClass
Sebbene le macchine virtuali possano utilizzare un RBD Ceph generico StorageClass,, il disco specifico per la virtualizzazione StorageClass è ottimizzato per le caratteristiche uniche di I/O e del ciclo di vita dei dischi dei carichi di lavoro delle macchine virtuali.
| Aspetto | Specifico per la virtualizzazione StorageClass | RBD generico StorageClass |
|---|---|---|
| Ottimizzazione dei workload | Ottimizzato per i modelli di accesso al disco del carico di lavoro della macchina virtuale | Ottimizzato per i carichi di lavoro containerizzati |
| Mappatura RBD del kernel | Utilizza le opzioni di mappatura RBD di VM (ad esempio, krbd:rxbounce) |
Potrebbe utilizzare le opzioni di mappatura predefinite |
| Coerenza delle prestazioni | Latenza più prevedibile per l'I/O del sistema operativo guest | Potenzialmente più latenza |
| Operazioni del ciclo di vita del carico di lavoro della macchina virtuale | Convalidato per i flussi di lavoro di avvio, arresto, migrazione live e snapshot del carico di lavoro della macchina virtuale | Non esplicitamente convalidato per le operazioni di carico di lavoro delle macchine virtuali |
| Supportabilità | Completamente supportato e consigliato per la virtualizzazione di Red Hat OpenShift | Supportato, ma non consigliato per i dischi VM |
| Day-2 operazioni | Riduzione dei rischi durante gli aggiornamenti e le migrazioni | Maggiore rischio di prestazioni inattese |
L'RBD generico StorageClasses rimane adatto ai carichi di lavoro dei container, ma per gli ambienti di virtualizzazione di produzione si consiglia l' StorageClass, specifico per la virtualizzazione.
Pool di lavoratori separati per l'elaborazione e lo storage
Per implementare pool di worker separati per l'elaborazione e l'archiviazione su Red Hat OpenShift Kubernetes Service, pianifica innanzitutto l'architettura del cluster con pool di worker dedicati. Creare un pool di storage worker che utilizzi profili ottimizzati per lo storage per ODF. Quindi, creare uno o più pool di compute worker che utilizzano profili bilanciati o ottimizzati per i carichi di lavoro delle applicazioni.
Quando si installa il componente aggiuntivo ODF, specificare il pool di worker di archiviazione, che applica automaticamente dei "taint" per impedire che pod o macchine virtuali non destinati all'archiviazione vengano pianificati su quei nodi del pool di worker di archiviazione.
-
Creare un pool di storage worker dedicato:
- Crea un nuovo pool di worker destinato ai nodi di archiviazione in IBM Cloud.
- Selezionare un profilo bare-metal ottimizzato per lo storage (dischi locali o profili ad alto I/O).
- Aggiungere il numero necessario di nodi worker in base alle esigenze di capacità e resilienza.
-
Applicare i taint ai nodi di archiviazione:
- Una volta installato il componente aggiuntivo ODF sul cluster Red Hat OpenShift Kubernetes Service da IBM Cloud, passare alla sezione “Capacity and worker Nodes ”.
- Specificare il nome del pool di worker di archiviazione designato nel campo “Pool di worker ”.
- Abilitare l'opzione Taint Nodes.
Una volta completata l’installazione del componente aggiuntivo ODF, l’
node.ocs.openshift.io/storage=true:NoSchedulee “taint” viene applicato automaticamente a tutti i nodi del pool di worker selezionato.Se l'opzione Taint Nodes non è stata selezionata durante l'installazione di ODF, è possibile applicare manualmente i taint ai nodi di archiviazione utilizzando il comando
oc adm taintin Red Hat OpenShift.oc get node -l ibm-cloud.kubernetes.io/worker-pool-name=<your storage workerpool name> -o=name | \ xargs -I {} oc adm taint nodes {} node.ocs.openshift.io/storage=true:NoSchedule -
Verificare che il nodo sia stato sottoposto a tainted con successo:
- Vai su " Compute > Nodes " su Red Hat OpenShift.
- Selezionare l'opzione Node per verificare lo stato, quindi fare clic sulla scheda YAML.
- Nella sezione Specs, verificare i valori dei seguenti parametri:
Taints: Key: node.ocs.openshift.io/storage Value: 'true' Effect: Noschedule
Configurazione avanzata
La sezione seguente è dedicata ai team che necessitano di andare oltre le impostazioni predefinite di ODF StorageClasses,, creando pool Ceph personalizzati, StorageClasses con ottimizzazioni specifiche delle prestazioni e abilitando la crittografia.
Creare un StorageClass personalizzato per la virtualizzazione
In alcuni scenari, potrebbe essere necessario un StorageClass personalizzato per soddisfare requisiti specifici di prestazioni, resilienza o capacità.
Per creare un requisito personalizzato StorageClass, è necessario prima creare un requisito personalizzato CephBlockPool. Quando si crea un pool personalizzato, è necessario impostare targetSizeRatio sul pool. Senza questa impostazione,
lo scalatore automatico dei gruppi di collocazione di Ceph assegna al pool un solo gruppo di collocazione. Questa configurazione provoca un collo di bottiglia di tutte le operazioni di I/O su un singolo OSD, con conseguente peggioramento
delle prestazioni rispetto al pool predefinito.
Quando si crea un sito StorageClass personalizzato per i carichi di lavoro di virtualizzazione, verificare che i seguenti parametri siano configurati correttamente.
-
Provveditore
L' StorageClass e deve utilizzare il provisioner CSI Ceph RBD fornito da ODF:
openshift-storage.rbd.csi.ceph.comQuesto provisioner consente il provisioning dinamico dei volumi Ceph RBD che sono supportati dal cluster ODF.
-
Pool di archiviazione
Specificare il sito CephBlockPool che esegue il backup dei dischi del carico di lavoro della macchina virtuale. È possibile selezionare una delle seguenti opzioni:
- Pool di blocchi predefinito. Il pool di blocchi Ceph replicato a 3 vie predefinito creato da ODF:
ocs-storagecluster-cephblockpool ``` - Piscina in blocco personalizzata. Un sito definito dall'utente CephBlockPool. Il pool deve includere le seguenti impostazioni per evitare problemi di prestazioni: ```yaml apiVersion: ceph.rook.io/v1 kind: CephBlockPool metadata: name: my-custom-pool namespace: openshift-storage spec: failureDomain: zone # Default for multi-zone clusters — data copies spread across zones; use host for single-zone flexible-scaling clusters deviceClass: ssd # Match OSD device class enableCrushUpdates: true # Keep CRUSH rules current on topology changes enableRBDStats: true # Enable per-volume I/O monitoring replicated: size: 3 requireSafeReplicaSize: true targetSizeRatio: 0.1 # CRITICAL — prevents 1-PG bottleneck ``` The `targetSizeRatio` instructs the placement group autoscaler to proportionally preallocate placement groups based on the expected capacity share. Without it, the pool receives 1 PG and all I/O is funneled through a single OSD. -
Caratteristiche dell'immagine
Il sito StorageClass deve includere le caratteristiche dell'immagine RBD che sono fondamentali per le prestazioni del carico di lavoro:
imageFeatures: layering,deep-flatten,exclusive-lock,object-map,fast-diffCaratteristiche dell'immagine RBD e loro scopo Funzione Scopo exclusive-lockAbilita la cache di writeback e le ottimizzazioni per un singolo writer. Senza questa funzione, gli IOPS in scrittura possono peggiorare fino a 7x. object-mapAbilita il tracciamento bitmap degli oggetti allocati per le immagini rade. fast-diffAccelera le operazioni di snapshot diff e DataVolume clone per velocizzare i tempi di avvio. deep-flattenRende i cloni completamente indipendenti dopo l'appiattimento. layeringAbilita la clonazione copy-on-write, necessaria per la clonazione DataVolume. -
Opzioni della mappa
mapOptions: krbd:rxbounceQuesta opzione risolve i problemi di danneggiamento dei dati che si verificano quando si utilizza il driver RBD del kernel con i server virtuali Windows. Costringe il kernel a utilizzare un buffer di rimbalzo per i dati ricevuti, al fine di garantire la compatibilità. Questa opzione deve essere configurata su tutti i carichi di lavoro StorageClasses.
-
Esempio completo di StorageClass personalizzato
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: my-custom-virt-sc provisioner: openshift-storage.rbd.csi.ceph.com parameters: clusterID: <your-cluster-id> pool: my-custom-pool imageFormat: "2" imageFeatures: layering,deep-flatten,exclusive-lock,object-map,fast-diff mapOptions: krbd:rxbounce csi.storage.k8s.io/provisioner-secret-name: rook-csi-rbd-provisioner csi.storage.k8s.io/provisioner-secret-namespace: openshift-storage csi.storage.k8s.io/controller-expand-secret-name: rook-csi-rbd-provisioner csi.storage.k8s.io/controller-expand-secret-namespace: openshift-storage csi.storage.k8s.io/node-stage-secret-name: rook-csi-rbd-node csi.storage.k8s.io/node-stage-secret-namespace: openshift-storage csi.storage.k8s.io/fstype: ext4 reclaimPolicy: Delete allowVolumeExpansion: true volumeBindingMode: ImmediatePer trovare
clusterIDper il proprio cluster, eseguire il seguente comando:oc get sc ocs-storagecluster-ceph-rbd -o jsonpath='{.parameters.clusterID}'Per i pool con codifica di cancellazione (solo in anteprima per sviluppatori), consultare la sezione "Informazioni sulla protezione dei dati", aggiungere
dataPoolin modo che punti al pool EC e mantenerepoolin modo che punti al pool replicato predefinito:parameters: pool: ocs-storagecluster-cephblockpool # Replicated pool for metadata dataPool: my-ec-pool # EC pool for data blocks
Compressione
ODF supporta la compressione in linea BlueStore sui pool di blocchi Ceph, che può ridurre lo storage grezzo utilizzato dai dischi. La compressione viene applicata in modo trasparente a livello di OSD, pertanto il carico di lavoro della macchina virtuale e il suo sistema operativo guest non si accorgono che i dati vengono compressi.
Modalità di funzionamento
- Se un blocco non viene compresso fino a raggiungere almeno l' 87.5 % della sua dimensione originale
- Ceph memorizza i dati che ha decompresso per evitare di sprecare risorse della CPU per risparmi irrisori.
- I dati scritti prima dell'attivazione della compressione non vengono compressi retroattivamente; la compressione riguarda solo le nuove operazioni di scrittura.
Algoritmi di compressione
| Algoritmo | Risparmio di spazio tipico | Impatto sulle prestazioni | Suggerimento |
|---|---|---|---|
| Snappy | 16-23% | 12-38% di riduzione IOPS | Predefinito. Il miglior equilibrio tra velocità e risparmio. |
| lz4 | Minimo-moderato | Costo della CPU minimo | Utilizzare per ridurre al minimo l'utilizzo della CPU. |
| ZLib | Moderato | Moderato | Una via di mezzo tra snappy e zstd. |
| zstd | 36-50% | riduzione del 21-66% di IOPS | Il miglior rapporto di compressione, ma il più alto costo della CPU. Non è consigliato per carichi di lavoro sensibili alla latenza. |
Casi d'uso della compressione
La compressione è più efficace sui dati comprimibili, sul testo, sui log, sui dati delle applicazioni già decompressi e sui file system del sistema operativo che dispongono di spazio libero. Offre benefici minimi o nulli nelle seguenti situazioni relative ai dati:
- I dati sono già compressi
- I dati vengono crittografati a livello di applicazione
- Dati generati da carichi di lavoro che producono dati ad alta entropia
Nei cluster iperconvergenti in cui le macchine virtuali e gli OSD di Ceph condividono i nodi, la compressione comporta un aumento dell’utilizzo della CPU che entra in competizione con i carichi di lavo VM i. Monitorare l’utilizzo della CPU tramite l’OSD dopo aver abilitato la compressione e valutare il profilo delle risorse di prestazione per garantire ai daemon di Ceph un margine di CPU aggiuntivo.
Abilitazione della compressione su un file personalizzato CephBlockPool
Per abilitare la compressione, impostare Compression_mode nella sezione Parameters relativa al pool:
apiVersion: ceph.rook.io/v1
kind: CephBlockPool
metadata:
name: compressed-block-pool
namespace: openshift-storage
spec:
failureDomain: zone # Default for multi-zone clusters; use host for single-zone flexible-scaling clusters
deviceClass: ssd
enableCrushUpdates: true
enableRBDStats: true
replicated:
size: 3
requireSafeReplicaSize: true
targetSizeRatio: 0.1
parameters:
compression_mode: "aggressive"
Di seguito sono riportati i valori validi per Compression_mode:
none: Non comprimere mai (impostazione predefinita).passive: Comprimere quando il client indica che i dati sono comprimibili.aggressive: Comprimere, a meno che il client non indichi che i dati non sono comprimibili. Consigliato quando si attiva la compressione.force: Tentare sempre la compressione, indipendentemente dai suggerimenti.
Per abilitare la compressione sul pool predefinito tramite la console web Red Hat OpenShift, procedere come segue.
- Vai su Archiviazione > Data Foundation > StorageSystems
- Seleziona il tuo StorageSystem e clicca sulla BlockPools scheda
- Fare clic sul menu Azione del pool, fare clic su Modifica pool di blocchi e attivare la casella di controllo Compressione.
- Dopo aver abilitato la compressione, creare un StorageClass che faccia riferimento al pool compresso.
Per ulteriori informazioni, consultare la pagina precedente Esempio personalizzato di StorageClass. I PVC esistenti sul pool non sono interessati. Solo le nuove scritture nel pool vengono compresse.
Crittografia
ODF supporta la crittografia dei dati a riposo a più livelli, che possono essere attivati in modo indipendente.
- IBM Cloud Crittografia dell'infrastruttura: crittografia completa del disco su unità NVMe fisiche - gestita da IBM Cloud.
- Crittografia a livello di cluster ODF: tutti i dischi OSD di Ceph sono crittografati con dm-crypt a livello di dispositivo. Abilitato tramite
encryption.clusterWide: truesul cluster di archiviazione CR. Protegge dal furto di dischi fisici. - Crittografia ODF per volume: i singoli volumi RBD vengono crittografati con LUKS2, ciascuno con la propria chiave di crittografia dei dati. Garantisce l'isolamento dei tenant e una gestione granulare delle chiavi.
Su Red Hat OpenShift Kubernetes Service, ODF si integra con IBM Key Protect come servizio di gestione delle chiavi esterne per la crittografia a livello di cluster e per volume. Quando la codifica per volume è abilitata, ODF crea automaticamente
le varianti -encrypted StorageClass (ad esempio, ocs-storagecluster-ceph-rbd-encrypted).
Limitazione
Si consideri la seguente limitazione.
Il driver Ceph CSI non può creare un volume crittografato da un'istantanea di un volume non crittografato. Questa limitazione influisce direttamente sulla creazione dei carichi di lavoro delle macchine virtuali. Red Hat OpenShift La virtualizzazione
avvia i carichi di lavoro delle macchine virtuali clonando i dischi di root da immagini di riferimento precaricate nella cache, che sono memorizzate come volumi non crittografati. Se si seleziona StorageClass criptato per un disco root,
la clonazione fallisce silenziosamente e il carico di lavoro della macchina virtuale rimane bloccato in Provisioning.
Per superare questa limitazione, utilizzare il sito StorageClass non crittografato per i dischi root (la crittografia a livello di cluster protegge comunque i dati a livello fisico). Per i dischi di dati che richiedono la crittografia per
volume, aggiungere un secondo disco che utilizza la crittografia StorageClass. In alternativa, è possibile importare l'immagine del sistema operativo direttamente in un PVC criptato utilizzando source: registry, che bypassa
il percorso del clone, e creare un'origine dati criptata riutilizzabile da un'istantanea di tale PVC.
Per ulteriori informazioni sulla configurazione della crittografia con IBM Key Protect, vedere Comprensione di Red Hat OpenShift Data Foundation.
Ottimizzazione delle prestazioni di Ceph per sistemi bare-metal NVMe
La configurazione predefinita di Ceph è ottimizzata per carichi di lavoro generici. I seguenti valori dei parametri sono stati verificati sul profilo bare-metal " mx2d.metal.96x768 " e aumentano in modo significativo
gli IOPS, riducendo al contempo la latenza per i carichi di lavoro su disco " VM " su tale profilo. Se stai utilizzando un profilo bare-metal diverso, considera questi valori come punto di riferimento iniziale e modificali in base
al numero di unità NVMe e alla CPU disponibile nel tuo profilo specifico.
| Parametro | Valore consigliato | Motivazione |
|---|---|---|
osd_memory_target |
8589934592 (8 GB) a 12884901888 (12 GB) |
Aumenta la cache “ BlueStore ” disponibile per ciascun OSD. Una cache più capiente riduce l'amplificazione di lettura e migliora le IOPS di lettura casuale. Il valore predefinito è 4 GB, che risulta insufficiente per i nodi NVMe ad alta densità. |
osd_op_num_shards_ssd |
16 |
Ogni shard gestisce una coda di operazioni di I/O. Aumentando il numero di shard da 8 a 16 sui nodi bare-metal con un elevato numero di core, è possibile elaborare un maggior numero di richieste in parallelo e ridurre la profondità della coda per ogni shard. |
osd_op_num_threads_per_shard_ssd |
2 |
Controlla il numero di thread di lavoro per ogni shard. Aumentando questo valore insieme al numero di shard, si migliora la velocità di trasmissione I/O simultanea sulle unità NVMe. |
bluestore_prefer_deferred_size_ssd |
0 |
Disattiva le scritture differite per NVMe. Le scritture differite comportano una doppia scrittura nel WAL (write-ahead log), il che aumenta il sovraccarico. Le unità NVMe offrono prestazioni di scrittura casuale sufficientemente elevate da rendere controproducenti le scritture differite. |
RocksDB rocksdb_write_buffer_size |
268435456 (256 MB) |
Aumenta la dimensione della tabella di memoria di RocksDB. Un buffer di scrittura più capiente assorbe i picchi di scrittura dei metadati (frequenti durante le operazioni di provisioning e di creazione di snapshot dell' VM ) prima di trasferirli su disco, riducendo così i ritardi nella scrittura. |
RocksDB rocksdb_max_write_buffer_number |
Da 16 a 32 |
Controlla il numero massimo di buffer di scrittura in memoria. Ridurre il valore predefinito da 64 a 16–32 su NVMe è sufficiente e alleggerisce il carico sulla memoria. |
RocksDB rocksdb_max_background_jobs |
Da 12 a 16 |
Controlla il numero di thread simultanei di compattazione e svuotamento. Aumentando questo valore sui nodi NVMe si evita che la compattazione di “ RocksDB ” diventi un collo di bottiglia in presenza di un carico di scrittura prolungato. |
Applicare ciascun parametro utilizzando il comando ceph config set dal pod “Ceph toolbox”:
TOOLS_POD=$(oc get pod -n openshift-storage -l app=rook-ceph-tools -o name)
# OSD memory and shard tuning
oc exec -n openshift-storage ${TOOLS_POD} -- ceph config set osd osd_memory_target 8589934592
oc exec -n openshift-storage ${TOOLS_POD} -- ceph config set osd osd_op_num_shards_ssd 16
oc exec -n openshift-storage ${TOOLS_POD} -- ceph config set osd osd_op_num_threads_per_shard_ssd 2
oc exec -n openshift-storage ${TOOLS_POD} -- ceph config set osd bluestore_prefer_deferred_size_ssd 0
# RocksDB tuning
oc exec -n openshift-storage ${TOOLS_POD} -- ceph config set osd rocksdb_write_buffer_size 268435456
oc exec -n openshift-storage ${TOOLS_POD} -- ceph config set osd rocksdb_max_write_buffer_number 16
oc exec -n openshift-storage ${TOOLS_POD} -- ceph config set osd rocksdb_max_background_jobs 12
Dopo aver effettuato la richiesta, verifica che la configurazione sia stata accettata:
oc exec -n openshift-storage ${TOOLS_POD} -- ceph config dump | grep -E "osd_memory_target|osd_op_num_shards|bluestore_prefer_deferred|rocksdb"
Non è necessario riavviare i pod OSD per apportare modific ceph config set i. Ceph applica la configurazione in modo dinamico. Tuttavia, le modifiche alla cache di “ BlueStore ” (osd_memory_target) hanno pieno effetto
solo dopo che ogni pod OSD è stato riciclato. È possibile riciclare le capsule OSD una alla volta durante una finestra di manutenzione senza interrompere le operazioni di I/O.
Riferimento benchmark: i test interni condotti su un cluster mx2d.metal.96x768 a 3 nodi con 200 macchine virtuali e IOPS illimitate hanno dimostrato che la combinazione di 16 shard, 8 GB di memoria OSD e un buffer
di scrittura " RocksDB " da 256 MB ha raggiunto circa 194.000 IOPS e un throughput di 758 MB/s. L'aumento del numero di shard da 8 a 16 ha prodotto costantemente il miglioramento più significativo
in termini di IOPS in tutte le configurazioni di test.
Backup e protezione dei dati
Il backup e il disaster recovery sono fondamentali per gli ambienti di virtualizzazione di produzione. Su Red Hat OpenShift Virtualizzazione con ODF, i backup attualmente si basano su Ceph RBD VolumeSnapshots. Ogni backup crea un'istantanea completa point-in-time dei volumi persistenti.
Backup basato su istantanee
ODF supporta Kubernetes VolumeSnapshots per i volumi Ceph RBD. Per creare un'istantanea di un disco, utilizzare il seguente comando:
oc apply -f - <<EOF
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: my-vm-snapshot
spec:
volumeSnapshotClassName: ocs-storagecluster-rbdplugin-snapclass
source:
persistentVolumeClaimName: my-vm-data-disk
EOF
VolumeSnapshots sono copia su scrittura e la loro creazione è quasi istantanea. È possibile utilizzarli per ripristinare lo stato precedente di un carico di lavoro di una macchina virtuale o per clonare un disco. La virtualizzazione di Red Hat OpenShift offre inoltre una funzione integrata denominata “ VM API per l'acquisizione di snapshot e il ripristino ” che acquisisce, in un’unica operazione, lo stato completo del carico di lavoro della macchina virtuale, compresa la configurazione e tutti i dischi.
Quiescing dei carichi di lavoro delle macchine virtuali per snapshot coerenti con le applicazioni
Quando si acquisisce un’istantanea di un carico di lavoro su una macchina virtuale in esecuzione, i dati presenti sul disco devono trovarsi in uno stato coerente. Senza quiescenza, lo snapshot cattura tutto ciò che si trova sul disco in quell'istante, comprese le transazioni parzialmente scritte, i buffer sporchi e l'I/O in volo. Questo processo genera un’istantanea coerente in caso di arresto anomalo, che potrebbe richiedere un ripristino a livello di applicazione al momento del ripristino.
Per ottenere snapshot coerenti con le applicazioni, è necessario bloccare il file system del sistema ospite prima di creare lo snapshot e sbloccarlo in seguito. Red Hat OpenShift La virtualizzazione automatizza questo processo utilizzando l’agente ospite QEMU.
Il controller snapshot rileva l'agente guest QEMU. Prima di acquisire lo snapshot, esegue il comando “ guest-fsfreeze-freeze ”, che blocca tutte le operazioni di I/O dei file system. L’ VolumeSnapshot e viene acquisito mentre
il file system è bloccato. Dopo il completamento dell'istantanea, un comando guest-fsfreeze-thaw ripristina l'I/O. Lo stato dello snapshot indica il livello di coerenza raggiunto. Per conoscere il significato di ciascuno stato,
consultare la tabella seguente.
| Indicazione | Significato |
|---|---|
| GuestAgent | L'agente guest ha bloccato il file system. L'istantanea è coerente con l'applicazione. |
| NoGuestAgent | L'agente guest non è stato installato o non è pronto. L'istantanea è coerente solo con gli arresti anomali. |
| QuiesceFailed | È stato tentato il congelamento del file system, ma non è riuscito. L'istantanea potrebbe non essere coerente con l'applicazione. |
Si consiglia di installare l'agent guest di QEMU su tutte le macchine virtuali di produzione. Per gli ospiti di Linux, utilizzare il seguente comando.
# RHEL / CentOS / Fedora
sudo dnf install -y qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent
# Ubuntu / Debian
sudo apt-get install -y qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent
Per gli ospiti Windows, installare il pacchetto di driver VirtIO, che include il servizio QEMU guest agent.
Hook personalizzati di congelamento/scongelamento per le applicazioni: per i database e altre applicazioni con stato che richiedono un’ulteriore sospensione oltre al congelamento del file system, inserire script di hook personalizzati all’interno
del carico di lavoro della macchina virtuale ospite all’indirizzo /etc/qemu-ga/fsfreeze-hook.d/. Questi script vengono eseguiti automaticamente dall’agente guest con l’argomento “ freeze ” prima del congelamento
del file system e con l’argomento “ thaw ” dopo lo sblocco del file system. I registri di esecuzione degli hook vengono scritti su /var/log/qga-fsfreeze-hook.log.
Ad esempio, il seguente gancio di congelamento PostgreSQL può essere collocato in /etc/qemu-ga/fsfreeze-hook.d/postgresql.sh:
#!/bin/bash
case "$1" in
freeze)
sudo -u postgres psql -c "SELECT pg_backup_start('snapshot');" 2>/dev/null || true
;;
thaw)
sudo -u postgres psql -c "SELECT pg_backup_stop();" 2>/dev/null || true
;;
esac
VMware Confronto: questo esempio è analogo allo script “ VMware ” (prima del congelamento e dopo lo scongelamento) utilizzato con VMware Tools per creare snapshot coerenti con l’applicazione. L'agente guest di QEMU svolge la stessa funzione degli Strumenti d VMware i per la sospensione degli snapshot.
Modificate le limitazioni del tracciamento dei blocchi
Il monitoraggio dei blocchi modificati (Changed Block Tracking) consente di eseguire backup incrementali, individuando solo i blocchi che sono stati modificati dall'ultimo backup. VMware Il VADP ( vStorage: API per la protezione dei dati) utilizza questo meccanismo per garantire backup incrementali efficienti.
Il CBT non è disponibile per ODF e Ceph RBD su Red Hat OpenShift Virtualization. Attualmente i backup si basano su snapshot completi, il che potrebbe comportare tempi di backup più lunghi e un maggiore utilizzo dello spazio di archiviazione.
Lo sviluppo della CBT è in corso a più livelli:
| Livello | Condizione | Dettagli |
|---|---|---|
| Kubernetes API CSI CBT | Alpha ( Kubernetes 1.31 ) | Introduce un servizio SnapshotMetadata CSI per identificare i blocchi modificati tra le istantanee. Solo volumi a blocchi. |
| KubeVirt backup incrementale | In fase di sviluppo | VEP 25 si rivolge a CBT a livello di QEMU per i backup incrementali di VM. Alpha previsto per KubeVirt 1.7. |
| Ceph RBD | Esiste una capacità di base | Ceph supporta nativamente gli snapshot differenziali (rbd diff), ma l'integrazione con l'API CSI CBT non è stata implementata. |
Sebbene Ceph RBD supporti la funzionalità sottostante “ rbd diff ” per identificare i blocchi modificati tra uno snapshot e l’altro, tale funzionalità non è ancora disponibile tramite l’API CSI “Changed Block Tracking” di Kubernetes.
Finché lo stack completo non sarà pronto (API CSI CBT + supporto driver Ceph CSI + integrazione KubeVirt ), i backup incrementali a livello di blocco non saranno disponibili.
Soluzioni di backup
Diversi fornitori di soluzioni di backup offrono soluzioni per la virtualizzazione “ Red Hat OpenShift ” che funzionano nell’ambito dell’attuale modello basato sugli snapshot:
- Veeam® Kasten: Kubernetes-protezione nativa dei dati con supporto alla virtualizzazione Red Hat OpenShift e funzionalità di snapshot incrementale per ODF. Per ulteriori informazioni, consultare l'architettura di riferimento di Veeam Kasten.
- Trilio per Kubernetes: Backup e ripristino per i carichi di lavoro di Red Hat OpenShift Virtualization con integrazione ODF. Per ulteriori informazioni, vedere il supporto di Trilio Red Hat OpenShift Virtualization.
- Veritas NetBackup: Enterprise backup con supporto per la virtualizzazione Red Hat OpenShift. Per ulteriori informazioni, consultare il sito NetBackup- Protezione completa dei dati aziendali.
Raccomandazioni per le migrazioni su VMware
Se il vostro attuale ambiente VMware si basa su backup incrementali basati su CBT, considerate le seguenti raccomandazioni:
- Pianificare backup full-snapshot. Valuta le finestre di backup e i requisiti di archiviazione basandoti su backup completi ( VolumeSnapshots ) anziché su backup incrementali.
- Valutare gli strumenti di backup nativi di Kubernetes. Veeam Kasten e Trilio sono progettati per la virtualizzazione “ Kubernetes ” e “ Red Hat OpenShift ” e operano nell’ambito dell’attuale modello di snapshot.
- Utilizzare l'efficienza delle istantanee Ceph. Gli snapshot RBD di Ceph funzionano secondo il principio "copy-on-write" e utilizzano spazio di archiviazione solo per i blocchi modificati dopo la creazione dello snapshot, il che rende l'archiviazione degli snapshot in corso più efficiente rispetto alle copie complete.
Day-2 operazioni
Dopo aver implementato ODF su IBM Cloud Red Hat OpenShift Kubernetes Service, concentrati sulle operazioni relative a Day-2. Queste operazioni comprendono attività di gestione, monitoraggio e manutenzione continuative volte a garantire che l'infrastruttura di storage rimanga in buono stato, performante, aggiornata e in grado di adattarsi alle mutevoli esigenze dei carichi di lavoro. La guida si concentra sui seguenti tre aspetti fondamentali delle operazioni di “ Day-2 ”:
- Monitoraggio
- Aggiornamento
- Espansione
Monitorare lo stato di salute di ODF e Ceph
Il monitoraggio regolare del cluster di storage ODF è essenziale per mantenere la disponibilità e le prestazioni. La sezione seguente descrive i comandi principali e i relativi risultati.
Controllare lo stato generale di Ceph
Il comando più importante per il corretto funzionamento di ODF:
TOOLS_POD=$(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name)
oc exec -n openshift-storage ${TOOLS_POD} -- ceph status
Interpretazione dei risultati:
cluster:
id: a1b2c3d4-...
health: HEALTH_OK ← What you want to see
services:
mon: 3 daemons ← Should be 3 (quorum)
mgr: 1 active ← Manager daemon running
osd: 24 osds: 24 up, 24 in ← All OSDs healthy (should match your NVMe count)
data:
pools: 4 pools, 353 pgs
objects: 12.5k objects, 48 GiB
usage: 152 GiB used, 69 TiB / 70 TiB avail ← Cluster usage
Stati di salute:
| Condizione | Significato | Azione |
|---|---|---|
HEALTH_OK |
Tutti i componenti funzionano correttamente, tutti i dati sono completamente replicati. | Nessuna, funzionamento normale. |
HEALTH_WARN |
Problema non critico. Il cluster è operativo, ma c'è qualcosa che richiede attenzione. | Indagare con ceph health detail. Cause comuni: OSD quasi pieni, recupero di PG degradati, skew di clock tra i MON. |
HEALTH_ERR |
Problema critico. La disponibilità o la durata dei dati potrebbero essere a rischio. | Indagare immediatamente. Cause comuni: OSD non funzionanti, PG che non si riprendono, cluster pieno. |
Per visualizzare gli avvisi dettagliati, utilizzare il seguente comando:
oc exec -n openshift-storage ${TOOLS_POD} -- ceph health detail
Controllare lo stato dell'OSD
Gli OSD sono i daemon di archiviazione, con un daemon per ogni unità NVMe. Tutti gli OSD devono essere nello stato up e in. Utilizza il seguente comando per verificare lo stato.
oc exec -n openshift-storage ${TOOLS_POD} -- ceph osd tree
Verificare le seguenti informazioni.
- Tutti gli OSD
up: se un OSD mostra il messaggio "down", significa che l'unità NVMe o il suo daemon presenta un problema. - Tutti gli OSD
in: un OSD con lo stato "out" indica che Ceph lo ha escluso dal posizionamento dei dati perché potrebbe essere guasto. - Pesi coerenti: tutti gli OSD presenti sullo stesso nodo devono avere pesi identici.
Controllare l'utilizzo del cluster
Eseguire il seguente comando per verificare l'utilizzo del cluster.
oc exec -n openshift-storage ${TOOLS_POD} -- ceph df
Colonne importanti:
- %RAW USATO: Utilizzo complessivo del cluster. Per un funzionamento ottimale, mantenetelo al di sotto del 70%.
- MAX AVAIL* per pool: la quantità di dati aggiuntivi che è possibile scrivere nel pool, tenendo conto della replica.
Controllare le statistiche della piscina
Eseguire il seguente comando per controllare le statistiche del pool.
oc exec -n openshift-storage ${TOOLS_POD} -- ceph osd pool stats
Questo comando fornisce statistiche in tempo reale sulle operazioni di I/O per ciascun pool, che aiutano a identificare quali pool sono sotto carico.
Monitoraggio tramite la console web Red Hat OpenShift
ODF si integra con la console web Red Hat OpenShift per fornire le seguenti informazioni.
- Archiviazione > La dashboard "Data Foundation" mostra lo stato di integrità, la capacità e le metriche relative alle prestazioni.
- La sezione "Osservazione > Avvisi" mostra gli avvisi automatici relativi agli avvisi di integrità di Ceph (ad esempio,
CephClusterNearFull,CephOSDDown,CephPGNotScrubbed). - Osserva > Metriche per le query basate su Prometheus relative alle metriche di Ceph (ad esempio,
ceph_osd_op_r_latency,ceph_osd_op_w_latency).
Aggiornamento di ODF su Red Hat OpenShift Kubernetes Service
Il componente aggiuntivo Data Foundation (ODF) di IBM Cloud Red Hat OpenShift applica automaticamente gli aggiornamenti z-stream all’interno della stessa versione minore. Questi aggiornamenti sono gestiti da IBM Cloud.
Tuttavia, gli aggiornamenti di versione principali e secondari (ad esempio, da 4.18 a 4.19 ) non avvengono automaticamente. Seguire la procedura di aggiornamento manuale per garantire la sicurezza dei dati e la stabilità del cluster.
L'aggiornamento di ODF in un cluster Red Hat OpenShift Kubernetes Service consiste in due fasi principali, entrambe necessarie per la buona riuscita dell'aggiornamento.
-
Aggiornare o sostituire i nodi worker ODF.
- ODF si basa su nodi worker dedicati o etichettati per ospitare i componenti di archiviazione.
- Durante un aggiornamento maggiore o minore, questi nodi worker devono essere aggiornati o sostituiti per allinearsi alle versioni Red Hat OpenShift e ODF di destinazione.
- Questo processo aiuta a garantire che i pod ODF (come gli OSD, i MON e i manager Ceph) vengano riprogrammati correttamente e continuino a funzionare senza perdita di dati.
- Prima di procedere con questa fase, assicurarsi che la capacità sia adeguata e che i nodi funzionino correttamente, al fine di garantire la disponibilità dello storage.
-
Aggiornare il componente aggiuntivo ODF.
- Dopo l'aggiornamento o la sostituzione dei nodi worker, aggiornare il componente aggiuntivo ODF.
- Questo passaggio consente di aggiornare gli operatori ODF, i driver CSI e i relativi componenti alla versione di destinazione.
- Al termine dell'aggiornamento del componente aggiuntivo, il cluster riconcilia automaticamente le risorse ODF e applica le modifiche richieste.
Eseguire la verifica post-aggiornamento per confermare:
- Salute del cluster ODF e Ceph
- StorageClasses disponibilità
- Operazioni di lettura e scrittura di PVC eseguite con successo dalle applicazioni
Per ulteriori informazioni, vedere Aggiornamento di ODF sui cluster VPC.
Ampliare lo spazio di archiviazione ODF su Red Hat OpenShift Kubernetes Service
Di conseguenza, con l'aumentare dei carichi di lavoro e delle esigenze di archiviazione, diventa fondamentale ampliare l'infrastruttura di archiviazione. L'espansione in ODF è un'operazione chiave del Giorno 2 che consente di aumentare la capacità di storage, migliorare le prestazioni e mantenere la resilienza senza interrompere le applicazioni in esecuzione.
Negli ambienti IBM Cloud Red Hat OpenShift Kubernetes Service, l'espansione comporta tipicamente l'ampliamento del pool di storage worker. Questa operazione viene eseguita con tempi di inattività minimi, consentendo una crescita continua del cluster di storage.
-
Aggiungi nodi di lavoro al tuo cluster VPC. Per i cluster multizona in cui il cluster di storage si estende su 3 zone di disponibilità, aggiungere nodi di lavoro in multipli di 3 per mantenere l'equilibrio tra le zone (ad esempio, 3, 6 o 9). Per i cluster a zona singola con il ridimensionamento flessibile abilitato, è possibile aggiungere i nodi uno alla volta.
-
Una volta aggiunti i nodi, registrarli su ODF. Se ODF è in esecuzione su tutti i nodi di lavoro del cluster, i nuovi nodi vengono aggiunti automaticamente alla topologia di archiviazione. Se ODF è in esecuzione solo su un sottoinsieme di nodi di lavoro, passare al passaggio successivo.
-
Se ODF viene eseguito su tutti i nodi worker del cluster, i nuovi nodi worker vengono aggiunti automaticamente alla topologia del cluster di storage ODF. Se ODF viene eseguito solo su un sottoinsieme di nodi di lavoro, specificare i parametri
nella risorsa personalizzataOcsCluster. Aggiungere i nomi dei nuovi nodi worker alla distribuzione ODF modificando la definizione di risorsa personalizzata. Modificare la risorsa personalizzata " OcsCluster " come segue:-
Trova ocscluster
oc get ocscluster -
Modifica il file delle risorse personalizzate di ocscluster e aggiungi nuovi nodi di lavoro
oc edit ocscluster <ocs cluster name> -o yaml -
Salva il file delle risorse personalizzate " OcsCluster " per riapplicarlo al tuo cluster.
-
-
Aumenta il valore di
'numOfOsd'nella risorsa personalizzataOcsClusterper consentire a OCS di distribuire i componenti ODF sui nodi di lavoro appena aggiunti e di provisionare ulteriori OSD nel cluster di archiviazione.La regolazione dell' 'numOfOsd' e dipende sia dal numero di dischi OSD per nodo sia dal numero di nodi aggiunti. Ad esempio, se ogni nodo dispone di 8 dischi NVMe dedicati agli OSD, l'aggiunta di 3 nodi aumenta il numero di " 'numOfOsd' " di 8, mentre l'aggiunta di 6 nodi lo aumenta di 16.
-
Verifica il risultato eseguendo il seguente comando:
oc exec -n openshift-storage ${TOOLS_POD} -- ceph osd tree -
Verificare che i nuovi nodi di lavoro siano stati aggiunti e distribuiti in modo uniforme tra le varie zone (nel caso di cluster multizona) oppure che appaiano come singoli bucket di host (nel caso di cluster a scalabilità flessibile con una sola zona), insieme al numero corrispondente di OSD assegnati a ciascun nodo.
Per ulteriori informazioni, consulta la sezione " Espansione di ODF tramite l'aggiunta di nodi di lavoro al cluster VPC ".
Ridimensionamento flessibile
Il componente aggiuntivo ODF di IBM Cloud utilizza diverse topologie dei domini di errore a seconda della configurazione del cluster:
- Cluster multizona (3 zone di disponibilità): il dominio di errore è impostato su
zone. Gli OSD vengono configurati in multipli di 3, un set per zona, per garantire la replica dei dati e l'alta disponibilità tra le zone. Il cluster di archiviazione deve espandersi in multipli di 3 per mantenere l'equilibrio tra le zone. - Cluster a zona singola o cluster con meno di 3 zone di disponibilità: il ridimensionamento flessibile viene abilitato automaticamente. Il dominio di guasto è impostato su
host, il che significa che ogni singolo nodo costituisce un dominio di guasto distinto. È possibile aggiungere un nodo alla volta e scalare lo spazio di archiviazione in modo granulare.
A partire da ODF 4.21, il comportamento di scalabilità flessibile viene determinato automaticamente al momento dell'implementazione iniziale in base alla topologia del cluster e non può essere modificato in seguito.
In un'implementazione a zona singola o con scalabilità flessibile, un pool di replica-3 resiste alla perdita di qualsiasi singolo host. In un'implementazione multizona, un pool di replica-3 resiste alla perdita di un'intera zona. Prima di implementare ODF in ambiente di produzione, verificare che la topologia del cluster e la relativa tolleranza ai guasti soddisfino i requisiti di resilienza.
Per l'elenco completo dei parametri aggiuntivi e le istruzioni di installazione tramite console, consultare la guida " Distribuzione di OpenShift Data Foundation su cluster VPC".
Prestazioni durante l'espansione dei nodi: l'aggiunta di un nodo a un cluster ODF a scalabilità flessibile innesca il ribilanciamento dei dati di Ceph. Nel test interno descritto di seguito, gli IOPS e il throughput sono rimasti stabili, mentre la latenza in scrittura ha registrato un aumento temporaneo. Durante i test interni condotti su un cluster a 3 nodi con 100 macchine virtuali a 50.000 IOPS, sono stati osservati i seguenti risultati:
| Preparazione | IOPS | Velocità effettiva | Latenza di lettura | Latenza di scrittura |
|---|---|---|---|---|
| Prima di aggiungere un nodo | 50.000 | 195 MB/s | 0.69 ms | 1.37 ms |
| Durante l'aggiunta di un nodo | 50.000 | 195 MB/s | 1.24 ms | 2.22 ms |
| Dopo aver aggiunto il nodo | 50.000 | 195 MB/s | 0.67 ms | 1.22 ms |
La latenza di scrittura torna ai valori di riferimento al termine del ribilanciamento. Se i tuoi carichi di lavoro sono sensibili ai picchi di latenza in scrittura, pianifica l’aggiunta di nodi durante i periodi di minore attività dell’ VM.
Sintesi e buone pratiche
- Utilizzate
ocs-storagecluster-ceph-rbd-virtualizationper la maggior parte delle implementazioni di virtualizzazione di Red Hat OpenShift. - Creare un StorageClass personalizzato solo in presenza di requisiti specifici.
- Quando si crea un CephBlockPools, personalizzato, impostare sempre
targetSizeRatio(ad esempio,0.1) e includere tutti iimageFeaturesrichiesti (in particolareexclusive-lock) nel StorageClass. - I pool con codifica di cancellazione per RBD sono una funzionalità in anteprima per sviluppatori (ODF 4.20 +) e non sono supportati per l'uso in produzione. Utilizzare pool replicati ( rep2 o rep3 ) per tutti gli storage di produzione VM.
- Convalidare sempre il sito StorageClasses personalizzato in un ambiente non di produzione prima di utilizzarlo.
- Evitate di usare RBD generico StorageClasses per i dischi VM negli ambienti di produzione.
- Per l'archiviazione criptata VM, utilizzare la variante non criptata StorageClass per i dischi root e la variante criptata per i dischi dati.
- Pianificare la capacità in modo da mantenere l'utilizzo dei cluster al di sotto del 70%. Per i cluster multizona, scalare i nodi ODF in multipli di 3; i cluster a zona singola e quelli con scalabilità flessibile possono essere scalati in modo granulare.
- Installate l'agente guest QEMU in tutte le macchine virtuali di produzione per ottenere snapshot coerenti con le applicazioni.
- Monitorare regolarmente lo stato di salute di Ceph e indagare tempestivamente su
HEALTH_WARNprima che i problemi si aggravino. - Utilizzare il profilo di risorse "Performance " per tutte le implementazioni di produzione NVMe su hardware fisico. Il profilo "Balanced" non fornisce risorse sufficienti al daemon Ceph per i nodi NVMe ad alta densità e limita il numero di IOPS prima che l'hardware raggiunga la saturazione.
- Dopo aver implementato ODF su bare-metal, applicare i parametri di ottimizzazione Ceph NVMe raccomandati (
osd_memory_target,osd_op_num_shards_ssd, RocksDB impostazioni del buffer di scrittura) per massimizzare gli IOPS per i carichi di lavoro su disco di tipo “ VM ”. Vedi la guida all’ottimizzazione delle prestazioni di Ceph su bare-metal NVMe. - Quando si selezionano i nodi durante la creazione di un cluster di tipo “ StorageSystem ”, selezionare solo i nodi presenti nel pool dedicato dei worker di storage, non tutti i nodi del cluster. La selezione di tutti i nodi crea un gruppo
di worker ( LocalVolumeSet ) senza una configurazione di supporto per i nodi di lavoro (
nodeSelector), il che comporta che i futuri nodi di lavoro non ODF vengano rilevati automaticamente e richiedano una pulizia manuale. - Il ridimensionamento flessibile è abilitato automaticamente per i cluster a zona singola e di tipo " fewer-than-3-AZ "; tali distribuzioni utilizzano un dominio di errore di tipo "
host" e consentono un ridimensionamento granulare. I cluster multizona utilizzano un dominio di guasto di tipo "zone" e devono crescere in multipli di 3. Il comportamento di ridimensionamento flessibile viene impostato al momento della distribuzione iniziale e non può essere modificato in seguito.