Red Hat OpenShift Data Foundation (ODF) pour les charges de travail des machines virtuelles

Déployez l' Red Hat® OpenShift® Data Foundation (ODF) pour les charges de travail d' VM: configurez des pools de stockage Ceph, définissez des classes de stockage, activez la migration à chaud et mettez en œuvre des solutions de sauvegarde.

Red Hat® OpenShift® Data Foundation (ODF) est la solution de stockage validée et prise en charge pour la virtualisation Red Hat OpenShift sur IBM Cloud® Red Hat OpenShift Kubernetes Service. Il est recommandé d'utiliser le format ODF comme backend de stockage pour la virtualisation Red Hat OpenShift.

Avantages principaux

  • Haute performance pour les machines virtuelles : le stockage en blocs optimisé est conçu pour les disques de démarrage et de données des machines virtuelles; il réduit la latence et offre un nombre élevé d'IOPS.
  • Conçu pour la virtualisation d’ Red Hat OpenShift: intégration native avec Red Hat OpenShift et KubeVirt, prenant en charge les instantanés, le clonage, la migration à chaud, la sauvegarde/restauration, et fonctionnant de manière transparente avec le Containerized Data Importer (CDI).
  • Résilience et disponibilité élevées : stockage distribué avec réplication des données sur les nœuds de travail, reprise automatique après une panne de disque ou de nœud, et absence de point de défaillance unique pour le stockage.
  • Optimisé pour Red Hat OpenShift Kubernetes Service infrastructure bare metal : Agrégation des disques NVMe et SSD locaux dans un pool de stockage partagé, ce qui élimine la dépendance à l'égard du stockage réseau externe.
  • Prise en charge complète et gestion du cycle de vie : installation et mise à niveau via les opérateurs d’ Red Hat OpenShift, avec surveillance et alertes intégrées. Validée et soutenue conjointement par IBM® et Red Hat®.
  • Stockage unifié pour les serveurs virtuels et les conteneurs : ODF fournit un stockage cohérent pour ces charges de travail sur une plateforme unique.

Qu'est-ce que l'ODF?

ODF est une solution de stockage définie par logiciel, conçue pour Red Hat OpenShift. ODF repose sur Ceph® et est entièrement intégré et géré tout au long de son cycle de vie via les opérateurs d' Red Hat OpenShift. Ceph est un système de stockage distribué open source qui transforme des serveurs standard en un cluster de stockage hautement évolutif et tolérant aux pannes.

ODF offre quatre types de stockage à partir de la même plateforme :

  • Stockage en blocs (RBD) – pour les disques de charge de travail des machines virtuelles
  • Stockage de fichiers ( CephFS ) – pour les systèmes de fichiers partagés
  • Stockage d'objets (RGW et S3-compatible ) – pour les charges de travail de type objet
  • NFS ( CephFS-backed ) – Exportations NFS pour les clients traditionnels ou externes

Dans ODF, NFS est soutenu par CephFS et exposé à travers une passerelle Ceph NFS Ganesha. La passerelle est gérée par une ressource personnalisée CephNFS dans Rook. Il ne s'agit pas d'un backend de stockage distinct. Il permet d'accéder à CephFS via le protocole NFS. Le principal cas d'utilisation consiste à fournir un accès NFS aux clients situés en dehors du cluster d' Red Hat OpenShift, ou aux charges de travail nécessitant une gestion des ressources par le fournisseur ( NFS ). NFS n'est pas utilisé pour les disques de charge de travail des machines virtuelles, car les serveurs virtuels utilisent un stockage en blocs (RBD).

Sur IBM Red Hat OpenShift Kubernetes Service, ODF utilise généralement des disques locaux sur les nœuds de travail pour créer un cluster de stockage hautement performant et résilient au sein d’ Red Hat OpenShift.

Comprendre la protection des données

Avant de planifier et de déployer votre cluster ODF, il est important de comprendre comment ODF protège vos données. La stratégie de protection des données que vous choisissez a une incidence sur la capacité de stockage, les caractéristiques de performance, la tolérance aux pannes et le nombre minimum de nœuds requis.

Un seul cluster ODF peut exécuter simultanément plusieurs pools Ceph, chacun avec une politique de protection des données différente. Chaque pool est exposé aux charges de travail par l'intermédiaire de son propre site StorageClass. Lorsque vous créez une charge de travail de machine virtuelle, sélectionnez le site StorageClass pour chaque disque. Par exemple, une charge de travail de machine virtuelle peut utiliser un rep3 StorageClass pour son disque racine et un autre StorageClass, adossé à un pool de rep2, pour un disque de données moins critiques. Ce modèle n'est pas un choix tout ou rien à l'échelle d'un groupe.

Pour les équipes d’ VMware, ce modèle est similaire aux politiques de stockage d’ vSAN. Dans vSAN,, vous attribuez une stratégie de stockage (par exemple, RAID-1 FTT=1, RAID-5 ) par charge de travail de machine virtuelle ou par VMDK. Dans ODF, vous attribuez un StorageClass qui correspond à un pool Ceph par PVC. Le concept est le même, mais différentes charges de travail sur le même cluster peuvent avoir différents niveaux de protection.

ODF prend en charge les stratégies de protection des données suivantes pour les pools de blocs Ceph :

Pools répliqués (par défaut)

La configuration ODF par défaut utilise la réplication à trois voies. Chaque donnée est stockée en trois exemplaires répartis sur différents nœuds, ce qui permet de se prémunir contre jusqu'à deux pannes simultanées de disque ou de nœud.

  • Avantages : architecture simple, lectures rapides, récupération rapide et latence prévisible.
  • Augmentation de l'utilisation : 3x de stockage brut pour chaque octet de données utilisables.

Que se passe-t-il en cas de perte de copies ( rep3 ):

rep3 Évolution des défaillances et comportement des E/S
Copies restantes État du Ceph Comportement des E/S Risque
3 de 3 active+clean Fonctionnement normal. Les lectures sont effectuées à partir de n'importe quel exemplaire. Aucun
2 de 3 active+degraded Les E/S se poursuivent normalement. Ceph commence immédiatement à répliquer à nouveau la copie manquante vers un autre OSD afin de rétablir les trois copies. Minimaliste. Les données sont encore durables sur 2 OSD indépendants. La récupération se fait automatiquement.
1 de 3 active+degraded ou peered (en fonction de min_size) Avec l' min_size=2 par défaut de l'ODF, Ceph bloque toutes les opérations d'E/S vers les groupes de placement concernés lorsqu'il ne reste plus qu'une seule copie. Évite les écritures supplémentaires susceptibles d’entraîner des incohérences. Les serveurs virtuels dont les données sont stockées sur ces groupes de pages (PG) subissent des blocages d'E/S. Elevée. Il ne reste qu'une seule copie des données sur le seul OSD restant. Si cette opération échoue également avant la fin de la récupération, les données seront définitivement perdues.
0 de 3 incomplete L'E/S est bloquée. Aucune copie n'existe. Perte de données. Les données sont définitivement irrécupérables.

Le paramètre min_size contrôle le nombre minimum de copies qui doivent être disponibles avant que Ceph n'autorise les entrées/sorties. ODF définit par défaut des ensembles de min_size=2 pools rep3 s et cette configuration est appliquée via requireSafeReplicaSize: true, ce qui signifie que lorsque 2 ou 3 copies sont disponibles, les opérations de lecture et d'écriture se déroulent normalement. Lorsqu'une seule copie est disponible, Ceph bloque les opérations d'E/S afin d'éviter toute nouvelle incohérence des données.

Ce comportement est un mécanisme de sécurité délibéré qui privilégie l'intégrité des données au détriment de la disponibilité.

Le délai entre la perte de la deuxième copie et la fin de la réplication est le plus dangereux. Pendant ce temps, une troisième défaillance entraîne une perte de données permanente. C'est la raison pour laquelle la planification des capacités est importante, car la vitesse de réplication de Ceph dépend de la bande passante disponible du cluster et de l'espace libre. Un cluster surchargé ou presque plein met plus de temps à se répliquer, ce qui prolonge la durée d'exposition à la vulnérabilité.

Pour les pools d' rep2, la progression est plus rapide. Si une copie est perdue, il n'en reste plus qu'une. Avec ( min_size=2 par défaut), les E/S sont immédiatement bloquées sur les PG concernées jusqu'à ce que l'OSD manquant revienne ou qu'une nouvelle copie soit répliquée. Dans ce cas min_size=1, les opérations d’E/S se poursuivent sur la seule copie restante, mais une deuxième défaillance entraîne une perte définitive des données.

Le module complémentaire ODF d' Red Hat OpenShift Kubernetes Service crée automatiquement uniquement des pools rep3 avec ocs-storagecluster-cephblockpool. Rep2 Les pools ne sont pas créés par le module complémentaire. Vous devez créer manuellement une instance personnalisée de CephBlockPool avec replicated.size: 2 et une StorageClass correspondante. Pour plus d’informations, consultez la section Création d’une configuration personnalisée d’ StorageClass s pour la virtualisation.

rep2 offrant une tolérance aux pannes inférieure à celle d' rep3, évaluez si les économies réalisées en matière de stockage justifient le risque accru pour votre charge de travail.

IBM Il est recommandé d’utiliser la réplication à trois voies pour toutes les charges de travail de virtualisation en production afin de garantir la disponibilité et la pérennité des données.

Pools codés par effacement

Pour les environnements où l'efficacité de la capacité de stockage est une priorité, ODF prend également en charge les pools à codage par effacement (EC). L'EC divise les données en blocs de données k et en blocs de parité m, ce qui réduit l'espace de stockage brut par rapport à la réplication tout en garantissant une tolérance aux pannes.

Statut de prise en charge : le codage d'effacement pour les RBD et les CephFS dans ODF est une fonctionnalité en préversion pour les développeurs, introduite pour la première fois dans la version ODF 4.20. Les fonctionnalités en avant-première pour les développeurs ne sont pas prises en charge en environnement de production. Ils ne sont pas non plus pris en charge par le système de gestion des dossiers du portail client d' Red Hat. Avant l' 4.20 d'ODF, seule la version EC de RGW (stockage d'objets) était disponible en avant-première pour les développeurs (à partir de l' 4.16 d'ODF). Bien que le moteur de stockage Ceph sous-jacent prenne en charge les écrasements EC pour RBD depuis la version Luminous (2017), l'opérateur ODF et son modèle de déploiement géré ne certifient pas encore les pools EC pour les charges de travail de stockage de blocs de production. Prévoyez d'utiliser des pools répliqués ( rep2 ou rep3 ) pour tous les environnements de production VM, et n'envisagez les pools EC que pour les environnements hors production où les limitations de la préversion pour développeurs sont acceptables.

Le tableau suivant compare tous les types de pools disponibles à titre de référence.

Types de pools et leurs caractéristiques
Type de pool Configuration Augmentation brute de l'utilisation Tolérance aux pannes Nombre minimum d'hôtes requis
rep3 (par défaut) 3 exemplaires 3.0x Survit à 2 échecs 3
rep2 2 exemplaires 2.0x Survit à une défaillance 2
rep1 (non résilient) 1 copie 1.0x Aucun Perte de données en cas de défaillance 3
ec-2-1 k=2, m=1 1.5x Survit à une défaillance 3
ec-3-1 k=3, m=1 1.33x Survit à une défaillance 4
ec-2-2 k=2, m=2 2.0x Survit à 2 échecs 4
ec-4-2 k=4, m=2 1.5x Survit à 2 échecs 6

Les listes suivantes présentent les principaux éléments à prendre en compte concernant le codage d'effacement.

  • Les pools EC présentent une latence d'écriture plus élevée que les pools répliqués en raison du calcul de parité et de la nécessité d'écrire davantage de blocs par opération.
  • Les pools EC offrent un débit de lecture séquentielle compétitif, mais peuvent présenter des IOPS d'écriture aléatoire réduits.
  • Le nombre de domaines de défaillance doit être au moins égal à k+m. Sur un cluster à 3 nœuds, seules les configurations suivantes sont possibles : rep2, rep3 et ec-2-1.
  • Pour un cluster à 6 nœuds, tous les types de pools mentionnés précédemment sont disponibles.

Pool à réplique unique (non résilient, réservé au développement et aux tests)

À partir de la version du module complémentaire ODF 4.14, Red Hat OpenShift Kubernetes Service prend en charge un pool de répliques unique ( rep1 ) par l'intermédiaire du paramètre addSingleReplicaPool. Ce paramètre crée un pool de blocs Ceph non résilient, sans réplication des données, dans lequel chaque bloc de données est stocké une seule fois.

Pour activer le pool à réplique unique lors du déploiement d’ODF, utilisez la commande suivante

ibmcloud oc cluster addon enable openshift-data-foundation -c <cluster_name> \
  --version <version> \
  --param "addSingleReplicaPool=true"

Cette commande crée une extra- StorageClass:

  • ocs-storagecluster-ceph-non-resilient-rbd: Stockage de blocs à réplique unique avec WaitForFirstConsumer volume binding.

Le pool d' replica-3 s standard (ocs-storagecluster-cephblockpool) est toujours créé avec cette commande. La réserve non résiliente est une option distincte et facultative.

Un pool de répliques unique présente les cas d'utilisation suivants.

  • Environnements de développement et de test : lorsque la pérennité des données n'est pas essentielle et que la priorité est donnée à la réduction des coûts de stockage.
  • Applications avec réplication intégrée : ces applications gèrent elles-mêmes la redondance de leurs données au niveau de la couche applicative. Ces applications conservent plusieurs copies sur différents nœuds, ce qui signifie que la réplication au niveau du stockage est redondante.

Le pool de répliques unique offre une tolérance de panne nulle. La défaillance d'un seul OSD ou d'un seul nœud entraîne une perte de données permanente et irrécupérable pour toutes les données de cet OSD. Aucune deuxième copie n'est disponible pour la récupération. La documentation de IBM Cloud avertit explicitement que cette option augmente le risque de perte et de corruption des données, ainsi que l'instabilité potentielle du système. Pour plus d'informations, voir la documentation Ceph.

Limites :

  • Stockage en blocs uniquement : le stockage de fichiers n'est pas pris en charge avec une seule réplique.
  • Disques supplémentaires requis : au moins un disque NVMe utilisable supplémentaire par nœud, en plus de ceux utilisés par le pool replica-3. Sans ce disque supplémentaire, les OSD replica-1 ne démarrent pas et la grappe de stockage reste dans un état de progression.
  • Un pool par domaine de défaillance : ODF crée un site CephBlockPool non résilient par domaine de défaillance, avec des volumes liés en utilisant WaitForFirstConsumer pour valider la localité des données.
  • Non recommandé pour les disques racine de la charge de travail des machines virtuelles : Si l'OSD qui héberge un disque racine tombe en panne, la charge de travail de la machine virtuelle est définitivement perdue. Utilisez le pool non résilient uniquement pour les disques de données jetables dans les charges de travail des machines virtuelles de développement ou de test.

Pour les charges de travail de virtualisation en production, utilisez toujours des pools replica-3 (ou au minimum replica-2 ).

VMware vSAN Comparaison des options de migration

Pour les équipes qui migrent depuis VMware vSAN™, ces types de pools Ceph correspondent aux politiques de stockage habituelles d’ vSAN:

Les types de pools Ceph correspondent aux équivalents VMware vSAN
Pool Ceph Équivalent le plus proche de vSAN Augmenter l'utilisation Tolérance aux pannes Remarques
rep2 RAID-1, FTT=1 2x 1 échec Équivalent direct pour les deux : conserver deux exemplaires.
rep3 RAID-1, FTT=2 3x 2 échecs Équivalent direct pour les deux mentions conserver 3 copies.
ec-2-1 Pas d'équivalent direct 1.5x 1 échec Monoparitaire comme RAID-5, mais avec un agencement 2+1. Utilisation supérieure à celle de vSAN RAID-5.
ec-3-1 RAID-5, FTT=1 (3+1) 1.33x 1 échec Équivalent direct pour les deux : utiliser 3 blocs de données + 1 bloc de parité.
ec-2-2 Pas d'équivalent direct 2x 2 échecs Double-parité comme RAID-6, mais utilise une disposition 2+2. Plus d'utilisation que vSAN RAID-6.
ec-4-2 RAID-6, FTT=2 (4+2) 1.5x 2 échecs Équivalent direct pour les deux : utiliser 4 blocs de données + 2 blocs de parité.

Principales différences par rapport à vSAN:

  • Des minimums d'hôtes plus petits : Ceph sépare le quorum du cluster du placement des données. Un pool rep3 ne nécessite que 3 hôtes, car chaque hôte stocke une copie complète. vSAN RAID-1 FTT=2 nécessite 5 hôtes.
  • rep2 Conforme à la norme vSAN RAID-1: La plupart des déploiements d' vSAN utilisent FTT=1, qui stocke 2 copies. L' rep2 de Ceph en est l'équivalent direct.
  • ec-3-1 correspond à vSAN RAID-5: Les deux utilisent une configuration 3+1 et permettent une utilisation de type 1.33x, l’option la plus économe en espace pour une tolérance à une seule défaillance.
  • ec-4-2 correspond à vSAN RAID-6: Les deux utilisent une configuration 4+2 et permettent une utilisation de type 1.5x avec une tolérance à deux pannes.
  • ec-2-1 et ec-2-2 n'ont pas d'équivalent direct dans l' vSAN: des configurations Ceph EC plus petites avec moins de blocs de données, ce qui se traduit par une utilisation plus importante par octet mais nécessite moins d'hôtes. Ils privilégient l'efficacité du stockage au détriment d'un nombre réduit d'hôtes requis.

Planification de votre cluster ODF

Maintenant que vous connaissez les options de protection des données, vous pouvez planifier le dimensionnement du cluster et la topologie de votre déploiement ODF.

Capacité de planification

Lorsque vous planifiez votre cluster ODF, tenez compte de l'utilisation brute du stockage liée à la politique de protection des données que vous avez choisie. La capacité utilisable est inférieure à la capacité NVMe brute totale.

La formule de la capacité utilisable est la suivante : Usable capacity = Total raw NVMe capacity / Replication or EC overhead factor.

Voir l'exemple suivant de calculs pour un cluster à 3 nœuds avec 8 disques NVMe de 3.2 To par nœud ( 76.8 To de données brutes au total):

Capacité utilisable par type de protection des données pour un cluster à 3 nœuds
Protection des données Facteur d'utilisation Capacité utilisable Efficacité du stockage
*ep3 (par défaut) 3.0x 25.6 TB 33 %
rep2 2.0x 38.4 TB Réduction de 50 %
ec-2-1 1.5x 51.2 TB 67 %
rep1 (non résilient) 1.0x 76.8 TB 100 %

Estimation de la capacité de la charge de travail de la machine virtuelle : Une machine virtuelle typique avec un disque racine de 30 Go et un disque de données de 100 Go utilise 130 Go de stockage utilisable. Avec l' rep3, cette charge de travail de machine virtuelle nécessite 390 Go de stockage brut. Sur le cluster à 3 nœuds précédent, vous pourriez provisionner environ 196 charges de travail de machines virtuelles de cette taille. En pratique, l'utilisation de Ceph doit être inférieure à 75 % pour maintenir les performances et soutenir les opérations de récupération.

Les performances de Ceph se dégradent au fur et à mesure que l'utilisation du cluster augmente. ODF déclenche l'alerte PrometheusCephOSDNearFull (Utilisation de l'OSD en baisse) dès qu'un OSD dépasse 75 % de son utilisation. À 85 %, Ceph active l'indicateur OSD nearfull natif (mon_osd_nearfull_ratio) et ODF déclenche l'alerte CephOSDCriticallyFull. À 90 %, Ceph interrompt les opérations de remplissage et de récupération sur l’OSD concerné (mon_osd_backfillfull_ratio). À 95 %, Ceph marque l’OSD full (mon_osd_full_ratio), bloque toutes les écritures et émet HEALTH_ERR. Planifiez votre capacité de manière à ce que l'utilisation reste inférieure à 70 % en conditions normales d'exploitation, afin de disposer d'une marge suffisante pour la récupération des données et le rééquilibrage en cas de maintenance ou de défaillance des nœuds.

Pour vérifier l'utilisation actuelle du cluster, exécutez la commande suivante :

oc exec -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) -- ceph df

Nombre de nœuds de travail et topologie

La topologie du domaine de défaillance utilisée par le module complémentaire ODF d' IBM Cloud dépend de la configuration de votre cluster :

  • Clusters multizones (3 zones de disponibilité): le domaine de défaillance est défini sur zone. Les nœuds de travail sont répartis entre les zones, et l'ODF doit évoluer par multiples de 3 pour maintenir l'équilibre entre les zones. Pour une disponibilité, des performances et une sécurité des données optimales, utilisez 3, 6 ou 9 nœuds dans le cluster de stockage ODF — chaque zone reçoit le même nombre de nœuds.
  • Clusters à zone unique ou clusters comportant moins de 3 zones de disponibilité : la mise à l'échelle flexible est automatiquement activée et le domaine de défaillance est défini sur host. Vous pouvez commencer avec 3 nœuds et en ajouter un par un.

Tous les nœuds qui participent au cluster de stockage ODF doivent être en métal nu. Il n'est pas possible de mélanger des nœuds virtualisés et des nœuds bare-metal au sein d'un même cluster ODF.

Pour les clusters multi-zones : l'ajout de nœuds dont le nombre n'est pas un multiple de 3 entraîne un déséquilibre entre les zones. Avec 4 nœuds, une zone en reçoit 2 tandis que les autres en reçoivent 1 chacune, ce qui entraîne une répartition inégale de la charge sur les OSD, un placement des données sous-optimal, une utilisation inégale et des OSD partiellement inactifs.

Pour les clusters multi-zones, effectuez toujours la mise à l'échelle par multiples de 3 afin de maintenir une topologie de zones équilibrée.

Pourquoi 6 nœuds sont-ils le minimum pratique pour la production?

Bien qu’ODF nécessite au moins 3 nœuds, un cluster à 3 nœuds ne dispose d’aucune marge de manœuvre pour la maintenance planifiée. Considérons ce qui se passe avec un service rep3 réparti sur 3 nœuds lorsqu'un nœud est mis hors service pour une mise à jour du micrologiciel ou une mise à niveau d' Red Hat OpenShift:

  • 1 nœud est en maintenance. Ses OSD étant hors service, Ceph marque ces copies comme indisponibles. Le cluster entre en mode de réplication et active+degraded commence à répliquer à nouveau afin de rétablir 3 copies sur les 2 nœuds restants.
  • Si un deuxième nœud tombe en panne pendant cette fenêtre de maintenance (panne de disque, panique du noyau, coup de courant), certains groupes de placement se retrouvent avec une seule copie. Avec la valeur par défaut min_size=2, Ceph bloque les E/S sur ces PG. Les serveurs virtuels contenant des données sur les groupes de placement concernés se bloquent.
  • Si les nœuds de maintenance et les nœuds défaillants restent tous deux hors service, tout groupe de placement comportant des copies sur ces deux nœuds et un troisième OSD sur le même nœud se retrouve avec 0 copie, ce qui entraîne une perte définitive des données.

Pour éviter cette perte de données, dimensionnez votre cluster ODF de manière à pouvoir supporter la perte simultanée de 2 nœuds tout en conservant suffisamment d'OSD pour que toutes les données restent disponibles.

Impact de la maintenance planifiée et d'une défaillance non planifiée par taille de grappe
Noeuds Maintenance + défaillance Résultat
3 (au minimum) 1 en maintenance + 1 échec = 1 restant E/S bloquées (min_size=2). Risque de perte de données.
6 (recommandé) 1 en maintenance + 1 échec = 4 restants Ceph effectue une nouvelle réplication vers les 4 nœuds. L'E/S continue. Aucun risque de perte de données.
9 1 en maintenance + 1 échec = 7 restants Capacité suffisante pour la réplication. Impact minimal sur les performances.

Pour les clusters de production exécutant l' rep3, commencez par 6 nœuds. Cette configuration offre une marge de manœuvre à N+2 avec une capacité suffisante pour un nœud en maintenance planifiée et une panne inattendue sans risquer de compromettre la disponibilité ou la perte de données. N'utilisez un cluster à 3 nœuds que pour le développement, les tests ou les preuves de concept, lorsque les temps d'arrêt et les pertes de données sont acceptables.

Vous pouvez vérifier les affectations de topologie des nœuds sur votre cluster en exécutant la commande suivante :

oc get nodes -l node-role.kubernetes.io/worker= \
  -o custom-columns='NAME:.metadata.name,RACK:.metadata.labels.topology\.kubernetes\.io/rack'

Vous disposez de deux options de déploiement.

  • Option A – Utiliser l'ensemble du pool de travailleurs

    • Spécifiez uniquement le nom du pool de travailleurs lors de la configuration d'ODF.
    • Pour les clusters multi-zones, vérifiez que le pool contient 3, 6 ou 9 nœuds bare metal (multiples de 3). Pour les clusters à zone unique, un minimum de 3 nœuds est requis.
  • Option B – Sélectionner des nœuds spécifiques

    • Si le pool comporte davantage de nœuds, ou si vous souhaitez réserver certains nœuds à des charges de travail exclusivement de calcul, sélectionnez les nœuds qui participeront à l'ODF. Pour les clusters multi-zones, sélectionnez un nombre de nœuds multiple de 3; pour les clusters mono-zone, tout nombre égal ou supérieur à 3 est valable.

Plans d'abonnement ODF

Choisissez la formule qui correspond le mieux à vos besoins :

  • Essentials

    • Coût réduit
    • Déploiement en mode interne uniquement
    • Ne prend pas en charge la reprise après sinistre, les clusters étendus ni les déploiements en mode externe
    • Convient particulièrement aux environnements de test et de développement, aux démonstrations de faisabilité ou aux déploiements à petite échelle
  • A l'avance

    • Ensemble complet de fonctionnalités comprenant la reprise après sinistre, les clusters étendus, le déploiement en mode externe, le chiffrement granulaire avancé et la prise en charge multi-clusters
    • Recommandé pour les charges de travail de virtualisation en production avec des machines virtuelles

Les deux formules incluent la compression BlueStore sur les pools de blocs, l'allocation dynamique, les instantanés et le clonage. Les différences entre les formules concernent la reprise après sinistre, la granularité du chiffrement et la flexibilité de déploiement, plutôt que les fonctionnalités liées à l'efficacité du stockage.

ODF prend en charge la déduplication uniquement pour le stockage d'objets via la passerelle Multicloud Object Gateway (MCG). Le stockage en bloc ne prend pas en charge la déduplication. Cette assistance s'applique aussi bien aux formules Essentials qu'aux formules Advanced. La déduplication Ceph en amont pour RBD reste expérimentale et n'est pas certifiée pour une utilisation dans ODF.

Pour plus d'informations, consultez la rubrique ODF : notions de base et avancées.

Mise en place d'ODF sur Red Hat OpenShift Kubernetes Service

Red Hat OpenShift Virtualisation sur Red Hat OpenShift Kubernetes Service Les clusters VPC ne prennent actuellement en charge que les nœuds de travail bare metal. Les nœuds de travail virtualisés ne sont pas pris en charge pour les clusters de stockage ODF.

Assurez-vous que votre cluster Red Hat OpenShift Kubernetes Service comprend au moins un pool de travailleurs utilisant des serveurs bare metal fonctionnant sur Red Hat CoreOS. Red Hat OpenShift. La version 4.17 ou supérieure est requise pour la virtualisation d' Red Hat OpenShift. Les options de métal nu prises en charge sont les suivantes : bx2d.metal.96x384, cx2d.metal.96x192, et mx2d.metal.96x768.

Déployez le cluster de stockage ODF sur ces nœuds bare metal pour utiliser les disques NVMe locaux et fournir un stockage par blocs haute performance aux machines virtuelles.

Pour obtenir des instructions sur le déploiement d'ODF sur un cluster Red Hat OpenShift Kubernetes Service basé sur un VPC, voir Déploiement de Red Hat OpenShift Data Foundation sur des clusters VPC.

Type de stockage

  • Sélectionnez Stockage local.
  • Le stockage local utilise le stockage d'instance NVMe local disponible sur les nœuds de travail bare metal.
  • Les disques NVMe offrent une latence réduite et des performances IOPS élevées, indispensables pour les disques destinés aux charges de travail des machines virtuelles.

Profil de ressources ODF

ODF fournit trois profils d'allocation de ressources qui contrôlent l'unité centrale et la mémoire réservées aux démons Ceph.

  • Lean : allocation minimale des ressources. Le profil Lean est adapté aux environnements à ressources limitées, aux tests, au développement et aux preuves de concept. L'approche Lean n'est pas recommandée pour les charges de travail de virtualisation en production.
  • Équilibré : Le profil par défaut sur Red Hat OpenShift Kubernetes Service. Le profil équilibré offre un équilibre entre la consommation de ressources et les performances pour les charges de travail générales.
  • Performances : alloue davantage de ressources CPU et de mémoire aux démons Ceph, ce qui réduit le risque de goulots d'étranglement au niveau des démons. Idéal pour les charges de travail à haut débit IOPS, les déploiements comportant un grand nombre de serveurs virtuels et les applications exigeantes.

Pour les déploiements bare metal avec des disques NVMe locaux, utilisez le profil de ressources Performance. Les nœuds bare-metal comportant au moins 8 disques NVMe par nœud génèrent un nombre élevé d’OSD par hôte. Avec le profil Balanced, les limites de CPU et de mémoire du démon Ceph sont souvent atteintes avant que le matériel NVMe sous-jacent ne soit saturé, ce qui limite les IOPS et augmente la latence. Le profil Performance est le profil minimum recommandé pour les charges de travail de virtualisation d’ Red Hat OpenShift s de production sur serveurs physiques.

Les besoins en ressources affichés dans la console web Red Hat OpenShift lors de l'installation d'ODF sont calculés dynamiquement en fonction du nombre d'OSD du cluster. Par conséquent, les clusters comportant davantage de disques NVMe nécessitent proportionnellement plus de ressources. Ces valeurs ne sont pas fixes. Vérifiez toujours les exigences affichées dans la console pour votre configuration de cluster spécifique.

Le profil est sélectionné lors de la création de StorageSystem via l'écran Configure Performance de la console web Red Hat OpenShift. Des démons Ceph sous-dimensionnés peuvent devenir un goulot d'étranglement caché, entraînant une baisse des IOPS ou une latence plus élevée que ce que le matériel de stockage sous-jacent est capable de fournir.

Faites correspondre vos profils de serveurs métalliques nus aux besoins en ressources indiqués pour le profil choisi : IBM Cloud Profils de serveurs métalliques nus VPC.

Une légère sursouscription des ressources est souvent acceptable sur un serveur bare metal. Cependant, ne prévoyez jamais des ressources nettement inférieures aux exigences minimales affichées, car cela nuit aux performances et à la stabilité d’ODF.

Nombre de disques OSD par nœud

  • Déterminez le nombre de disques NVMe locaux disponibles sur chaque serveur bare metal.
  • Veillez à ce que le nombre d'OSD configurés par nœud ne dépasse pas le nombre de disques NVMe utilisables.
  • La configuration recommandée est d'un OSD par disque NVMe pour des performances optimales et une isolation des pannes.
  • Veillez à ce que le nombre de disques OSD corresponde généralement au nombre de disques NVMe par nœud bare metal. Le calcul de la capacité de stockage affiché dans l’interface utilisateur ne reflète pas la capacité utilisable réelle pour les configurations de stockage local et peut être ignoré.

Lorsque vous sélectionnez des nœuds lors de la création d' StorageSystem, évitez de sélectionner tous les nœuds du cluster. La sélection de tous les nœuds crée un système de répartition de charge ( LocalVolumeSet, LVS) sans nodeSelector. Tout nœud de travail ajouté ultérieurement au cluster sera automatiquement détecté par ODF, même s’il n’est pas destiné au stockage. Les nœuds détectés de manière inattendue doivent être supprimés manuellement du LVS. Pour éviter cela, sélectionnez uniquement les nœuds de votre pool de travailleurs de stockage dédié, ou assurez-vous que ces nœuds portent le label cluster.ocs.openshift.io/openshift-storage avant la création de l' StorageSystem.

StorageClass par défaut pour le cluster

Une fois l’ODF déployé, les fichiers followingStorageClasses sont généralement créés :

  • ocs-storagecluster-ceph-rbd: Stockage en bloc
  • ocs-storagecluster-cephfs: Stockage de fichiers
  • ocs-storagecluster-ceph-rgw: Stockage d'objets

Pour permettre aux charges de travail d'utiliser automatiquement un stockage en blocs persistant haute performance basé sur ODF sans configuration supplémentaire, sélectionnez Utiliser le périphérique de blocs Ceph RADOS (RBD) comme classe de stockage par défaut ou définissez manuellement RBD (ocs-storagecluster-ceph-rbd) comme StorageClass par défaut pour le cluster une fois le module complémentaire ODF installé.

  1. Marquer RBD comme valeur par défaut :

    oc patch storageclass ocs-storagecluster-ceph-rbd -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
    
  2. Si nécessaire, supprimez la valeur par défaut de la configuration par défaut précédemment définie :

    oc patch storageclass <previous-default-name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
    

Liste de contrôle pour la configuration d'ODF

  • Le cluster contient au moins un pool de serveurs bare metal
  • Red Hat OpenShift version 4.17 ou supérieure
  • Le module complémentaire ODF et l'opérateur sont installés et fonctionnent
  • Les serveurs bare metal disposent de suffisamment de disques NVMe locaux utilisables
  • Le profil de ressources sélectionné correspond à la capacité du nœud
  • Un cluster de stockage ODF utilise au moins 3 nœuds; les clusters multizones doivent utiliser des multiples de 3 (3, 6, 9, …) pour maintenir l'équilibre entre les zones
  • Tous les nœuds participant à ODF sont en métal nu
  • Le RBD StorageClass est créé et, de préférence, défini comme valeur par défaut
  • L'état du cluster ODF est Prêt (oc get storagecluster -n openshift-storage)
  • L'état de Ceph est HEALTH_OK (oc -n openshift-storage rsh $(oc get pod -l app=rook-ceph-tools -o name) ceph status)

Exécution de serveurs virtuels sur ODF

Utilisez les informations suivantes pour exécuter des serveurs virtuels sur ODF.

Prérequis : installer l'opérateur de virtualisation Red Hat OpenShift

Avant d'utiliser la virtualisation d' Red Hat OpenShift sur IBM Cloud, vérifiez que l'opérateur de virtualisation Red Hat OpenShift est installé dans votre cluster Red Hat OpenShift Kubernetes Service.

L'opérateur de virtualisation Red Hat OpenShift permet la gestion des charges de travail des machines virtuelles natives d' Kubernetes. Il fournit également les contrôleurs nécessaires, les CRD et les intégrations avec les composants de stockage et de réseau.

Pour plus d'informations, voir Red Hat OpenShift Virtualization sur IBM Cloud.

Utilisation du stockage ODF pour les charges de travail des machines virtuelles

Red Hat OpenShift Data Foundation (ODF) fournit un stockage permanent défini par logiciel pour les charges de travail de virtualisation qui s'exécutent sur Red Hat OpenShift. Lorsque vous utilisez ODF comme backend de stockage pour les machines virtuelles, il est essentiel de choisir la bonne configuration StorageClass afin de garantir les performances, la stabilité et la compatibilité totale des fonctionnalités.

Vous devez indiquer l’ StorageClass appropriée dans les situations suivantes :

  • Les serveurs virtuels sont créés
  • Les serveurs virtuels sont importés ou clonés
  • Les serveurs virtuels sont migrés vers un cluster Red Hat OpenShift Kubernetes Service

Virtualisation par défaut StorageClass

Une fois l’ Red Hat OpenShift Virtualization Operator installé et un cluster ODF disponible, une instance StorageClass optimisée pour les charges de travail de virtualisation est automatiquement créée :

  • ocs-storagecluster-ceph-rbd-virtualization

Ce site StorageClass est :

  • Adapté aux schémas d'E/S sur disque tels que les lectures aléatoires, les écritures et les débits soutenus
  • Validé pour les opérations du cycle de vie de la virtualisation telles que le démarrage, l'arrêt, la migration en direct et les instantanés
  • Entièrement pris en charge et recommandé pour les environnements de virtualisation Red Hat OpenShift

Dans la plupart des cas, utilisez cette page StorageClass sans la modifier.

Exigences en matière de stockage pour la migration en direct

La migration en direct permet de déplacer une charge de travail de machine virtuelle en cours d'exécution d'un nœud de travail à un autre sans interruption de service. Pour une migration en direct réussie, le stockage doit être accessible simultanément depuis les nœuds d'origine et de destination. La migration à chaud nécessite les configurations suivantes.

  • ReadWriteMany mode d'accès sur les PVC de charge de travail des machines virtuelles. Ceph RBD prend en charge RWX en mode bloc, qui est la configuration par défaut de la virtualisation ODF StorageClass.
  • Le service StorageClassocs-storagecluster-ceph-rbd-virtualization est préconfiguré avec une prise ReadWriteMany en charge via le mode bloc RBD. Les serveurs virtuels qui utilisent ce site StorageClass peuvent migrer en direct sans configuration supplémentaire.
  • Le site générique ocs-storagecluster-ceph-rbd StorageClass utilise par défaut le mode d'accès ReadWriteOnce. Les serveurs virtuels qui utilisent des PVC RWO ne peuvent pas effectuer de migration en direct. La migration échoue car le PVC ne peut pas être monté sur le nœud de destination alors qu'il est attaché à la source.

Si vous créez des customStorageClasses (PVC) pour des serveurs virtuels nécessitant une migration à chaud, vérifiez que les PVC sont créés avec accessModes: [ReadWriteMany] et volumeMode: Block.

La migration en direct est également nécessaire :

  • Configurer l'opérateur de virtualisation Red Hat OpenShift avec une politique de migration appropriée
  • Vérification de la disponibilité de l'unité centrale et de la mémoire sur le nœud de destination

RBD spécifique à la virtualisation par rapport au RBD générique StorageClass

Bien que les machines virtuelles puissent utiliser une configuration Ceph RBD générique ( StorageClass, ), la configuration spécifique à la virtualisation ( StorageClass ) est optimisée pour les caractéristiques propres aux disques de charge de travail des machines virtuelles en termes d’E/S et de cycle de vie.

Comparaison entre l' StorageClass RBD spécifique à la virtualisation et l' RBD générique
Aspect Spécifique à la virtualisation StorageClass Générique RBD StorageClass
Optimisation de charge de travail Adapté aux schémas d'accès au disque de la charge de travail de la machine virtuelle Optimisé pour les charges de travail conteneurisées
Cartographie RBD du noyau Utilise les options de cartographie RBD conviviales de VM (par exemple, krbd:rxbounce) Possibilité d'utiliser les options de mise en correspondance par défaut
Cohérence des performances Temps de latence plus prévisible pour les E/S du système d'exploitation invité Potentiellement plus de latence
Opérations du cycle de vie de la charge de travail de la machine virtuelle Validé pour le démarrage et l'arrêt de la charge de travail de la machine virtuelle, la migration en direct et les flux de travail des instantanés Non validé explicitement pour les opérations de charge de travail des machines virtuelles
Capacité de soutien Entièrement pris en charge et recommandé pour la virtualisation Red Hat OpenShift Pris en charge, mais non recommandé pour les disques VM
Day-2 opérations Réduction des risques lors des mises à jour et des migrations Risque accru de performances inattendues

Les StorageClasses s RBD génériques restent adaptées aux charges de travail en conteneurs, mais il est recommandé de se reporter aux StorageClass s spécifiques à la virtualisation pour les environnements de virtualisation en production.

Des pools de travailleurs distincts pour le calcul et le stockage

Pour mettre en place des pools de workers distincts pour le calcul et le stockage sur Red Hat OpenShift Kubernetes Service, commencez par planifier l'architecture de votre cluster avec des pools de workers dédiés. Créez un pool de stockage qui utilise des profils de stockage optimisés pour ODF. Créez ensuite un ou plusieurs pools de calcul qui utilisent des profils équilibrés ou optimisés pour les charges de travail des applications.

Lorsque vous installez le module complémentaire ODF, spécifiez le pool de nœuds de stockage; cela applique automatiquement des contraintes afin d'empêcher les pods ou machines virtuelles non liés au stockage d'être planifiés sur les nœuds de ce pool.

  1. Créer un pool de travailleurs dédié au stockage :

    • Créer un nouveau pool de travailleurs destiné aux nœuds de stockage dans l' IBM Cloud.
    • Sélectionnez un profil bare-metal optimisé pour le stockage (disques locaux ou profils à haut débit d'E/S).
    • Ajoutez le nombre requis de nœuds de travail en fonction des besoins de capacité et de résilience.
  2. Appliquer des taches aux nœuds de stockage :

    • Lorsque vous installez le module complémentaire ODF sur votre cluster Red Hat OpenShift Kubernetes Service à partir de IBM Cloud, accédez à la section Capacité et nœuds de travail.
    • Indiquez le nom du pool de travailleurs de stockage désigné dans le champ Pools de travailleurs.
    • Activez l'option Taint Nodes.

    Une fois l'installation du module complémentaire ODF terminée, le taint node.ocs.openshift.io/storage=true:NoSchedule est automatiquement appliqué à tous les nœuds du pool de travailleurs sélectionné.

    Si l'option Taint Nodes n 'a pas été sélectionnée lors de l'installation d'ODF, vous pouvez par la suite appliquer manuellement des taints aux nœuds de stockage en utilisant la commande oc adm taint dans 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
    
  3. Vérifier que le nœud a bien été altéré :

    • Accédez à Compute > Nodes sur Red Hat OpenShift.
    • Sélectionnez l'onglet Node pour vérifier l'état, puis cliquez sur l'onglet YAML.
    • Dans la section Specs, vérifiez les valeurs des paramètres suivants :
       Taints:
         Key: node.ocs.openshift.io/storage
         Value: 'true'
         Effect: Noschedule
    

Configuration avancée

La section suivante s'adresse aux équipes qui ont besoin d'aller au-delà de l' StorageClasses, ODF par défaut pour créer des pools Ceph personnalisés, mettre en place des StorageClasses s sur mesure avec des réglages de performances spécifiques et activer le chiffrement.

Création d'un site personnalisé StorageClass pour la virtualisation

Dans certains cas, vous pouvez avoir besoin d'un site StorageClass personnalisé pour répondre à des exigences spécifiques en matière de performances, de résilience ou de capacité.

Pour créer une configuration personnalisée d' StorageClass, vous devez d'abord créer une configuration personnalisée d' CephBlockPool. Lorsque vous créez un pool personnalisé, vous devez définir targetSizeRatio sur le pool. Sans ce paramètre, l'autoscaler des groupes de placement Ceph n'attribue qu'un seul groupe de placement au pool. Cette configuration provoque un goulot d'étranglement au niveau d'un seul OSD pour toutes les opérations d'E/S, ce qui se traduit par des performances inférieures à celles du pool par défaut.

Lorsque vous créez un site StorageClass personnalisé pour les charges de travail de virtualisation, vérifiez que les paramètres suivants sont correctement configurés.

  • Fournisseur

    L' StorageClass e doit utiliser le provisionneur Ceph RBD CSI fourni par ODF :

    openshift-storage.rbd.csi.ceph.com
    

    Ce provisionneur permet le provisionnement dynamique des volumes Ceph RBD qui sont sauvegardés par le cluster ODF.

  • Pool de stockage

    Indiquez le site CephBlockPool qui sauvegarde les disques de charge de travail de la machine virtuelle. Vous pouvez choisir l'une des options suivantes :

    • Bloc par défaut. Le pool de blocs Ceph répliqué à trois voies par défaut créé par ODF :
        ocs-storagecluster-cephblockpool
        ```
    
    - Piscine en blocs sur mesure. Une adresse définie par l'utilisateur CephBlockPool. Le pool doit comprendre les paramètres suivants pour éviter les problèmes de performance :
    
    ```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.
        
    
  • Caractéristiques de l'image

    Le site StorageClass doit inclure les caractéristiques de l'image RBD qui sont essentielles pour la performance de la charge de travail :

    imageFeatures: layering,deep-flatten,exclusive-lock,object-map,fast-diff
    
    Caractéristiques de l'image RBD et leur utilité
    Fonction Objectif
    exclusive-lock Active la mise en cache de l'écriture et l'optimisation de l'écriture unique. Sans cette fonction, les IOPS d'écriture peuvent être jusqu'à 7x inférieurs.
    object-map Permet le suivi bitmap des objets alloués pour les images peu denses.
    fast-diff Accélère les opérations de diff de snapshot et de clonage DataVolume pour un démarrage plus rapide.
    deep-flatten Rend les clones totalement indépendants après leur aplatissement.
    layering Active le clonage par copie sur écriture qui est nécessaire pour le clonage DataVolume.
  • Options de carte

    mapOptions: krbd:rxbounce
    

    Cette option corrige les problèmes de corruption des données lorsque vous utilisez le pilote RBD du noyau avec des serveurs virtuels Windows. Cela oblige le noyau à utiliser un tampon de rebond pour les données reçues afin d'assurer la compatibilité. Cette option doit être définie sur toutes les instances d' StorageClasses de charge de travail.

  • Exemple complet et personnalisé de StorageClass

    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: Immediate
    

    Pour trouver le site clusterID de votre cluster, exécutez la commande suivante :

    oc get sc ocs-storagecluster-ceph-rbd -o jsonpath='{.parameters.clusterID}'
    

    Pour les pools avec codage d’effacement (aperçu développeur uniquement), consultez la section Comprendre la protection des données, ajoutez dataPool qui pointe vers le pool EC, et conservez pointant pool vers le pool répliqué par défaut :

    parameters:
      pool: ocs-storagecluster-cephblockpool   # Replicated pool for metadata
      dataPool: my-ec-pool                      # EC pool for data blocks
    

Compression

ODF prend en charge la compression en ligne BlueStore sur les pools de blocs Ceph, ce qui permet de réduire le stockage brut utilisé par les disques. La compression est appliquée de manière transparente au niveau de la couche OSD; ainsi, la charge de travail de la machine virtuelle et son système d'exploitation invité ne se rendent pas compte que les données sont compressées.

Fonctionnement

  • Si un bloc ne se compresse pas à au moins 87.5 % de sa taille d'origine
  • Ceph stocke les données qu'il a décompressées afin d'éviter de gaspiller de la puissance CPU pour des gains négligeables.
  • Les données enregistrées avant l'activation de la compression ne sont pas compressées rétroactivement; seules les nouvelles écritures sont concernées.

Algorithmes de compression

BlueStore comparaison des algorithmes de compression
Algorithme Économies d'espace typiques Impact sur les performances Recommandation
Snappy 16-23% 12-38% de réduction d'IOPS Valeur par défaut. Meilleur équilibre entre rapidité et économies.
lz4 Minimal-modéré Coût de l'unité centrale le plus faible A utiliser pour minimiser l'utilisation de l'unité centrale.
ZLib Bien Bien Il se situe à mi-chemin entre snappy et zstd.
zstd 36-50% 21-66% de réduction d'IOPS Meilleur taux de compression, mais coût de l'unité centrale le plus élevé. Non recommandé pour les charges de travail sensibles à la latence.

Cas d'utilisation de la compression

La compression est particulièrement efficace sur les données compressibles, le texte, les journaux, les données d'application décompressées et les systèmes de fichiers du système d'exploitation disposant d'espace libre. Cela n'apporte que peu, voire aucun avantage dans les situations suivantes :

  • Les données sont déjà compressées
  • Les données sont chiffrées au niveau de la couche applicative
  • Données générées par des charges de travail produisant des données à forte entropie

Sur les clusters hyperconvergés où les machines virtuelles et les OSD Ceph partagent les mêmes nœuds, la compression augmente l'utilisation du processeur, ce qui entre en concurrence avec les charges de travail d' VM. Surveillez l'utilisation du processeur par l'OSD une fois la compression activée et tenez compte du profil de ressources de performance afin de fournir aux démons Ceph une marge supplémentaire en termes de capacité du processeur.

Activation de la compression sur un fichier personnalisé CephBlockPool

Pour activer la compression, définissez Compression_mode dans la section Paramètres du 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"

Consultez les valeurs valides suivantes pour Compression_mode :

  • none: Ne jamais compresser (par défaut).
  • passive: Compresser lorsque le client indique que les données sont compressibles.
  • aggressive: Compresser sauf si le client indique que les données sont non compressibles. Recommandé lorsque vous activez la compression.
  • force: Il faut toujours tenter la compression, quels que soient les indices.

Pour activer la compression sur le pool par défaut via la console Web Red Hat OpenShift, procédez comme suit.

  1. Accéder à Stockage > Data Foundation > StorageSystems
  2. Sélectionnez votre StorageSystem et cliquez sur l'onglet BlockPools
  3. Cliquez sur le menu Action pour le pool, cliquez sur Modifier le pool de blocs et activez la case à cocher Compression.
  4. Après avoir activé la compression, créez un site StorageClass qui fait référence au pool compressé.

Pour plus d’informations, consultez l’ exemple précédent d’ StorageClass s personnalisées. Les PVC existants sur le pool ne sont pas affectés. Seules les nouvelles écritures dans le pool sont compressées.

Chiffrement

ODF prend en charge le cryptage des données au repos à plusieurs niveaux que vous pouvez activer indépendamment.

  • IBM Cloud Chiffrement de l'infrastructure : chiffrement complet du disque sur des disques physiques NVMe - géré par IBM Cloud.
  • Chiffrement ODF à l'échelle du cluster : tous les disques OSD Ceph sont chiffrés avec dm-crypt au niveau du périphérique. Activé via encryption.clusterWide: true sur le CR du cluster de stockage. Protège contre le vol physique de disques.
  • Chiffrement ODF par volume : les volumes RBD individuels sont chiffrés à l'aide de la technologie LUKS2, chacun disposant de sa propre clé de chiffrement des données. Assure l'isolation des locataires et une gestion granulaire des clés.

Sur Red Hat OpenShift Kubernetes Service, ODF s'intègre à IBM Key Protect en tant que service de gestion des clés externes pour le chiffrement à l'échelle du cluster et par volume. Lorsque le cryptage par volume est activé, ODF crée automatiquement des variantes de -encrypted StorageClass (par exemple, ocs-storagecluster-ceph-rbd-encrypted).

Limitation

Considérons la limitation suivante.

Le pilote Ceph CSI ne peut pas créer un volume crypté à partir d'un instantané d'un volume non crypté. Cette limitation affecte directement la création de charges de travail de machines virtuelles. Red Hat OpenShift Virtualization démarre les charges de travail des machines virtuelles en clonant les disques racine à partir d’images de référence pré-mises en cache, qui sont stockées sous forme de volumes non chiffrés. Si vous sélectionnez l'adresse cryptée StorageClass pour un disque racine, le clone échoue silencieusement et la charge de travail de la machine virtuelle reste bloquée à l'adresse Provisioning.

Pour pallier cette limitation, utilisez le site StorageClass non chiffré pour vos disques racine (le chiffrement à l'échelle du cluster protège toujours les données au niveau de la couche physique). Pour les disques de données qui nécessitent un cryptage par volume, ajoutez un second disque qui utilise le disque crypté StorageClass. Vous pouvez également importer l'image du système d'exploitation directement dans un PVC chiffré en utilisant source: registry, qui contourne le chemin de clonage, et créer une source de données chiffrée réutilisable à partir d'un instantané de ce PVC.

Pour plus d'informations sur la configuration du cryptage avec IBM Key Protect, voir Red Hat OpenShift Data Foundation.

Optimisation des performances de Ceph pour les serveurs bare metal NVMe

La configuration par défaut de Ceph est optimisée pour les charges de travail générales. Les valeurs de paramètres suivantes sont validées sur le profil bare-metal mx2d.metal.96x768 et augmentent considérablement les IOPS tout en réduisant la latence pour les charges de travail sur disque VM sur ce profil. Si vous utilisez un profil bare-metal différent, considérez ces informations comme une référence de départ et adaptez les valeurs en fonction du nombre de disques NVMe et de la capacité CPU disponibles pour votre profil spécifique.

Paramètres de réglage Ceph recommandés pour les serveurs bare-metal NVMe
Paramètre Valeur recommandée Raison
osd_memory_target 8589934592 (8 Go) à 12884901888 (12 Go) Augmente la taille du cache BlueStore disponible pour chaque OSD. Un cache plus important réduit l'amplification en lecture et améliore les IOPS en lecture aléatoire. La valeur par défaut est de 4 Go, ce qui est insuffisant pour les nœuds NVMe à haute densité.
osd_op_num_shards_ssd 16 Chaque shard gère une file d’attente d’opérations d’E/S. Passer de 8 à 16 shards sur des nœuds bare-metal à nombre élevé de cœurs permet un traitement plus parallèle des requêtes et réduit la profondeur de la file d'attente par shard.
osd_op_num_threads_per_shard_ssd 2 Contrôle le nombre de threads de travail par shard. L'augmentation de cette valeur parallèlement au nombre de shards améliore le débit d'E/S simultané sur les disques NVMe.
bluestore_prefer_deferred_size_ssd 0 Désactive les écritures différées pour NVMe. Les écritures différées entraînent une double écriture via le WAL (journal d'écriture anticipée), ce qui génère une surcharge. Les disques NVMe offrent des performances d'écriture aléatoire suffisamment élevées pour que les écritures différées s'avèrent contre-productives.
RocksDB rocksdb_write_buffer_size 268435456 (256 Mo) Augmente la taille de la table de mémoire d' RocksDB. Un tampon d’écriture plus grand absorbe les pics d’écriture de métadonnées (fréquents lors des opérations de provisionnement d’ VM s et de création de snapshots) avant de les transférer sur le disque, ce qui réduit les blocages d’écriture.
RocksDB rocksdb_max_write_buffer_number 16 à 32 Contrôle le nombre maximal de tampons d'écriture en mémoire. Une réduction de la valeur par défaut de 64 à 16–32 sur NVMe est suffisante et permet de réduire la pression sur la mémoire.
RocksDB rocksdb_max_background_jobs 12 à 16 Contrôle le nombre de threads simultanés de compactage et de vidage. Augmenter cette valeur sur les nœuds NVMe empêche la compaction d' RocksDB s de devenir un goulot d'étranglement en cas de charge d'écriture soutenue.

Appliquez chaque paramètre à l'aide de la commande ceph config set du 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

Une fois la configuration appliquée, vérifiez qu'elle a bien été acceptée :

oc exec -n openshift-storage ${TOOLS_POD} -- ceph config dump | grep -E "osd_memory_target|osd_op_num_shards|bluestore_prefer_deferred|rocksdb"

Il n'est pas nécessaire de redémarrer les pods OSD pour appliquer les modifications ceph config set. Ceph applique la configuration de manière dynamique. Cependant, les modifications apportées au cache d' BlueStore (osd_memory_target) ne prennent pleinement effet qu'après le recyclage de chaque pod OSD. Vous pouvez recycler les pods OSD un par un pendant une fenêtre de maintenance sans interrompre les opérations d'E/S.

Référence de benchmark : des tests internes réalisés sur un cluster mx2d.metal.96x768 à 3 nœuds comprenant 200 machines virtuelles et un nombre illimité d’IOPS ont montré que la combinaison de 16 shards, de 8 Go de mémoire OSD et d’un tampon d’écriture RocksDB de 256 Mo permettait d’atteindre environ 194 000 IOPS et un débit de 758 Mo/s. L'augmentation du nombre de shards de 8 à 16 a systématiquement généré la plus forte amélioration en termes d'IOPS parmi toutes les configurations testées.

Sauvegarde et protection des données

La sauvegarde et la reprise après sinistre sont essentielles pour les environnements de virtualisation de production. Sur Red Hat OpenShift Virtualisation avec ODF, les sauvegardes s'appuient actuellement sur Ceph RBD VolumeSnapshots. Chaque sauvegarde crée un instantané complet des volumes persistants.

Sauvegarde basée sur des instantanés

ODF prend en charge Kubernetes VolumeSnapshots pour les volumes Ceph RBD. Pour prendre un instantané d'un disque, utilisez la commande suivante :

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 sont copiés à l'écriture et leur création est quasi instantanée. Vous pouvez les utiliser pour restaurer une charge de travail de machine virtuelle à un état antérieur ou pour cloner un disque. La virtualisation Red Hat OpenShift fournit également une API intégrée d'instantanés et de restaurations VM qui permet de capturer l'état complet de la charge de travail de la machine virtuelle, y compris la configuration et tous les disques, en une seule opération.

Réduction de la charge de travail des machines virtuelles pour des instantanés cohérents avec l'application

Lorsque vous effectuez un instantané d'une charge de travail sur une machine virtuelle en cours d'exécution, les données présentes sur le disque doivent être cohérentes. En l'absence de quiescing, l'instantané capture tout ce qui se trouve sur le disque à ce moment-là, y compris les transactions partiellement écrites, les tampons sales et les E/S en vol. Ce processus génère un instantané cohérent en cas de panne, ce qui peut nécessiter une restauration au niveau de l'application lors de la remise en service.

Pour obtenir des instantanés cohérents avec l’application, gelez le système de fichiers invité avant la création de l’instantané, puis dégelez-le après. Red Hat OpenShift Virtualization automatise ce processus à l’aide de l’agent invité QEMU.

Le contrôleur d'instantanés détecte l'agent invité QEMU. Avant de réaliser l' VolumeSnapshot, il exécute une commande guest-fsfreeze-freeze qui interrompt toutes les opérations d'E/S des systèmes de fichiers. L' est réalisée pendant que le système de fichiers est gelé. Une fois l'instantané terminé, une commande guest-fsfreeze-thaw reprend les entrées/sorties. Le statut de l'instantané indique le niveau de cohérence atteint. Reportez-vous au tableau ci-dessous pour connaître la signification de chaque statut.

Indicateurs de cohérence des instantanés
Indication Signification
GuestAgent L'agent invité a réussi à geler le système de fichiers. L'instantané est compatible avec l'application.
NoGuestAgent L'agent invité n'était pas installé ou n'était pas prêt. L'instantané n'est cohérent qu'en cas d'accident.
QuiesceFailed Le gel du système de fichiers a été tenté, mais a échoué. L'instantané peut ne pas être cohérent avec l'application.

Il est recommandé d'installer l'agent invité QEMU sur toutes les machines virtuelles de production. Sur les machines Linux, utilisez la commande suivante.

# 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

Pour les invités Windows, installez le paquet de pilotes VirtIO, qui comprend le service d'agent invité QEMU.

Hooks personnalisés de gel/dégel pour les applications : pour les bases de données et autres applications avec état qui nécessitent une mise en veille supplémentaire au-delà du gel du système de fichiers, placez des scripts de hook personnalisés au sein de la charge de travail de la machine virtuelle invitée à l'emplacement /etc/qemu-ga/fsfreeze-hook.d/. Ces scripts sont exécutés automatiquement par l’agent invité avec un argument freeze avant le gel du système de fichiers et un thaw argument après le dégel du système de fichiers. Les journaux d'exécution des crochets sont écrits sur /var/log/qga-fsfreeze-hook.log.

Par exemple, le crochet de gel PostgreSQL suivant peut être placé à l'adresse /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 Comparaison : cet exemple est analogue au script de pré-gel et de post-dégel de l' VMware, utilisé avec les outils d' VMware pour créer des instantanés cohérents avec les applications. L'agent invité QEMU remplit le même rôle que les outils d' VMware s pour la mise en veille des instantanés.

Modification des limitations du suivi des blocs

La fonctionnalité Changed Block Tracking permet d'effectuer des sauvegardes incrémentielles en identifiant uniquement les blocs qui ont été modifiés depuis la dernière sauvegarde. Le VADP (API vStorage s pour la protection des données) de VMware utilise ce mécanisme pour fournir des sauvegardes incrémentielles efficaces.

CBT n'est pas disponible pour ODF et Ceph RBD sur Red Hat OpenShift Virtualization. Les sauvegardes s'appuient actuellement sur des instantanés complets, ce qui peut entraîner des fenêtres de sauvegarde plus longues et une utilisation plus importante de l'espace de stockage.

Le développement des TCC est en cours à plusieurs niveaux :

Suivi des modifications (Changed Block Tracking): état d'avancement dans l'ensemble de la pile
Couche Statut Détails
Kubernetes API CSI CBT Alpha ( Kubernetes 1.31 ) Introduit un service SnapshotMetadata CSI pour identifier les blocs modifiés entre les instantanés. Uniquement les volumes en bloc.
KubeVirt sauvegarde incrémentale En cours de développement VEP 25 cible le CBT au niveau QEMU pour les sauvegardes incrémentielles sur VM. Alpha prévu pour KubeVirt 1.7.
Ceph RBD La capacité sous-jacente existe Ceph prend en charge nativement les instantanés différentiels (rbd diff), mais l'intégration de l'API CSI CBT n'est pas implémentée.

Bien que Ceph RBD prenne en charge la fonctionnalité rbd diff sous-jacente permettant d'identifier les blocs modifiés entre deux instantanés, cette fonctionnalité n'est pas encore accessible via l'API CSI Changed Block Tracking d' Kubernetes. Tant que la pile complète n'est pas en place (CSI CBT API + Ceph CSI driver support + KubeVirt integration), les sauvegardes incrémentales au niveau des blocs ne sont pas disponibles.

Solutions de sauvegarde

Plusieurs fournisseurs de solutions de sauvegarde proposent des solutions pour la virtualisation d' Red Hat OpenShift, qui s'inscrivent dans le modèle actuel basé sur les instantanés :

Recommandations pour VMware migrations

Si votre environnement VMware actuel repose sur des sauvegardes incrémentielles basées sur CBT, tenez compte des recommandations suivantes :

  • Prévoyez des sauvegardes complètes. Évaluez vos fenêtres de sauvegarde et vos besoins en stockage en vous basant sur des sauvegardes complètes VolumeSnapshots plutôt que sur des sauvegardes incrémentielles.
  • Évaluer les outils de sauvegarde natifs sur Kubernetes. Veeam Kasten et Trilio sont conçus pour la virtualisation Kubernetes et Red Hat OpenShift, et fonctionnent dans le cadre du modèle de snapshot actuel.
  • Utiliser l'efficacité des instantanés Ceph. Les instantanés Ceph RBD fonctionnent selon le principe copy-on-write et n'utilisent de l'espace de stockage que pour les blocs modifiés après la création de l'instantané, ce qui rend le stockage continu des instantanés plus efficace que celui de copies complètes.

Day-2 opérations

Une fois ODF déployé sur IBM Cloud Red Hat OpenShift Kubernetes Service, concentrez-vous sur les opérations Day-2. Ces opérations comprennent des tâches continues de gestion, de surveillance et de maintenance qui permettent de garantir le bon fonctionnement, les performances, la mise à jour et l'adaptabilité de votre infrastructure de stockage face à l'évolution des exigences en matière de charge de travail. Ce guide se concentre sur les trois aspects essentiels suivants des opérations d' Day-2:

  • Monitoring
  • Mise à niveau
  • Développement

Contrôler l'état de santé d'ODF et de Ceph

Une surveillance régulière du cluster de stockage ODF est essentielle pour maintenir la disponibilité et les performances. La section suivante décrit les commandes principales et leurs résultats.

Vérifier l'état de santé général des céphales

La commande la plus importante pour l'intégrité de l'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

Interprétation du résultat :

  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

États de santé :

État de santé des céphales et actions recommandées
Statut Signification Action
HEALTH_OK Tous les composants fonctionnent correctement, toutes les données sont entièrement répliquées. Aucun, fonctionnement normal.
HEALTH_WARN Question non critique. Le cluster est opérationnel, mais quelque chose nécessite une attention particulière. Enquêtez à l'aide de ceph health detail. Causes courantes : OSD presque pleins, récupération dégradée des PG, décalage d'horloge entre les MON.
HEALTH_ERR Question cruciale. La disponibilité ou la durabilité des données peut être menacée. Vous devez dans ce cas examiner le problème immédiatement. Causes courantes : OSD en panne, PG qui ne se rétablit pas, cluster plein.

Pour voir les avertissements détaillés, utilisez la commande suivante :

oc exec -n openshift-storage ${TOOLS_POD} -- ceph health detail

Vérifier l'état de l'OSD

Les OSD sont des démons de stockage, à raison d’un démon par disque NVMe. Tous les OSD doivent être dans l'état up et in. Utilisez la commande suivante pour vérifier l'état.

oc exec -n openshift-storage ${TOOLS_POD} -- ceph osd tree

Vérifiez les informations suivantes.

  • Tous les OSD up: si un OSD affiche down, cela signifie que le disque NVMe ou son démon présente un problème.
  • Tous les OSD in: un OSD out signifie que Ceph l'a exclu du placement des données car il pourrait être défaillant.
  • Poids cohérents : tous les OSD d'un même nœud doivent avoir des poids identiques.

Vérifier l'utilisation du cluster

Exécutez la commande suivante pour vérifier l'utilisation du cluster.

oc exec -n openshift-storage ${TOOLS_POD} -- ceph df

Rubriques importantes :

  • %RAW USED : Utilisation globale du cluster. Pour un fonctionnement optimal, elle doit être inférieure à 70 %.
  • MAX AVAIL* par pool : quantité de données supplémentaires pouvant être écrites dans le pool, en tenant compte de la réplication.

Vérifier les statistiques de la piscine

Exécutez la commande suivante pour vérifier les statistiques du pool.

oc exec -n openshift-storage ${TOOLS_POD} -- ceph osd pool stats

Cette commande affiche en temps réel les statistiques d'E/S par pool, ce qui permet d'identifier les pools soumis à une charge importante.

Surveillance via la console web Red Hat OpenShift

ODF s'intègre à la console web Red Hat OpenShift pour fournir les informations suivantes.

  • Stockage > Le tableau de bord Data Foundation affiche l'état de santé, la capacité et les indicateurs de performance.
  • La section Observe > Alerting affiche des alertes automatisées concernant les avertissements d'intégrité de Ceph (par exemple, CephClusterNearFull, CephOSDDown, CephPGNotScrubbed).
  • Observer > Indicateurs pour les requêtes basées sur Prometheus concernant les indicateurs Ceph (par exemple, ceph_osd_op_r_latency, ceph_osd_op_w_latency).

Mise à jour d'ODF sur Red Hat OpenShift Kubernetes Service

Le module complémentaire ODF ( IBM CloudRed Hat OpenShift Data Foundation) applique automatiquement les mises à jour z-stream au sein d'une même version mineure. Ces mises à jour sont gérées par IBM Cloud.

Toutefois, les mises à jour de version majeures et mineures (par exemple, 4.18 → 4.19 ) ne sont pas automatiques. Suivez la procédure de mise à niveau manuelle pour garantir la sécurité des données et la stabilité du cluster.

La mise à jour d'ODF sur un cluster Red Hat OpenShift Kubernetes Service se compose de deux phases principales, toutes deux nécessaires à la réussite de la mise à jour.

  1. Mettre à jour ou remplacer les nœuds de travail ODF.

    • ODF s'appuie sur des nœuds de travail dédiés ou étiquetés pour héberger les composants de stockage.
    • Lors d'une mise à niveau majeure ou mineure, ces nœuds de travail doivent être mis à niveau ou remplacés pour s'aligner sur les versions cibles de Red Hat OpenShift et d'ODF.
    • Ce processus permet de s'assurer que les pods ODF (tels que les OSD Ceph, les MON et les managers) sont reprogrammés correctement et continuent de fonctionner sans perte de données.
    • Assurez-vous que la capacité est suffisante et que les nœuds sont en bon état de fonctionnement avant de commencer cette étape afin de garantir la disponibilité du stockage.
  2. Mettre à jour le module complémentaire ODF.

    • Après la mise à niveau ou le remplacement des nœuds de travail, mettez à jour le module complémentaire ODF.
    • Cette étape met à niveau les opérateurs ODF, les pilotes CSI et les composants connexes vers la version cible.
    • Une fois la mise à jour du module complémentaire terminée, le cluster réconcilie automatiquement les ressources ODF et applique les modifications requises.

    Effectuez une validation après la mise à niveau pour vérifier :

    • Santé des clusters ODF et Ceph
    • StorageClasses disponibilité
    • Succès des opérations de lecture et d'écriture du PVC par les applications

Pour plus d'informations, voir Mise à jour d'ODF sur les clusters VPC.

Extension de l'espace de stockage ODF sur l' Red Hat OpenShift Kubernetes Service

Par conséquent, à mesure que vos charges de travail s'accroissent et que vos besoins en stockage augmentent, il devient essentiel de faire évoluer votre infrastructure de stockage. L'extension d'ODF est une opération clé du deuxième jour qui vous permet d'augmenter la capacité de stockage, d'améliorer les performances et de maintenir la résilience sans perturber les applications en cours d'exécution.

Dans les environnements IBM Cloud Red Hat OpenShift Kubernetes Service, l'expansion implique généralement l'extension du pool de travailleurs du stockage. Cette opération s'effectue avec un minimum de temps d'arrêt, ce qui permet une croissance transparente de votre cluster de stockage.

  1. Ajoutez des nœuds de travail à votre cluster VPC. Pour les clusters multi-zones dont le cluster de stockage s'étend sur 3 zones de disponibilité, ajoutez des nœuds de travail par multiples de 3 afin de maintenir l'équilibre entre les zones (par exemple, 3, 6 ou 9). Pour les clusters à zone unique sur lesquels la mise à l'échelle flexible est activée, vous pouvez ajouter des nœuds un par un.

  2. Une fois les nœuds ajoutés, enregistrez-les auprès d'ODF. Si ODF s'exécute sur tous les nœuds de travail de votre cluster, les nouveaux nœuds sont automatiquement ajoutés à la topologie de stockage. Si ODF ne fonctionne que sur un sous-ensemble de nœuds de travail, passez à l'étape suivante.

  3. Si ODF fonctionne sur tous les nœuds de travail de votre cluster, les nouveaux nœuds de travail sont ajoutés automatiquement à la topologie du cluster de stockage ODF. Si ODF ne s'exécute que sur un sous-ensemble de nœuds de travail, spécifiez les paramètres <workerNodes> privés dans votre ressource personnalisée OcsCluster. Ajoutez les noms des nouveaux nœuds de travail à votre déploiement ODF en modifiant la définition des ressources personnalisées. Modifiez la ressource personnalisée OcsCluster comme suit :

    • Rechercher ocscluster

      oc get ocscluster
      
    • Modifier le fichier de ressources personnalisées ocscluster et ajouter de nouveaux nœuds de travail

      oc edit ocscluster <ocs cluster name> -o yaml
      
    • Enregistrez le fichier de ressource personnalisée OcsCluster pour le réappliquer à votre cluster.

  4. Augmentez la valeur de l' 'numOfOsd' e dans votre ressource personnalisée OcsCluster afin de permettre à OCS de déployer des composants ODF sur les nœuds de travail nouvellement ajoutés et de provisionner des OSD supplémentaires dans le cluster de stockage.

    L'ajustement de la valeur 'numOfOsd' dépend à la fois du nombre de disques OSD par nœud et du nombre de nœuds ajoutés. Par exemple, si chaque nœud dispose de 8 disques NVMe dédiés aux OSD, l'ajout de 3 nœuds augmente l' 'numOfOsd' e de 8, tandis que l'ajout de 6 nœuds l'augmente de 16.

  5. Vérifiez le résultat en exécutant la commande suivante :

    oc exec -n openshift-storage ${TOOLS_POD} -- ceph osd tree
    
  6. Vérifiez que les nouveaux nœuds de travail ont bien été ajoutés et qu’ils sont répartis de manière homogène dans chaque zone (pour les clusters multizones) ou qu’ils apparaissent sous forme de buckets d’hôtes individuels (pour les clusters à mise à l’échelle flexible à zone unique), ainsi que le nombre correspondant d’OSD attribués à chaque nœud.

Pour plus d'informations, consultez la section « Étendre ODF en ajoutant des nœuds de travail à votre cluster VPC ».

Mise à l'échelle flexible

Le module complémentaire ODF d' IBM Cloud utilise différentes topologies de domaines de défaillance en fonction de la configuration de votre cluster :

  • Clusters multizones (3 zones de disponibilité): le domaine de défaillance est défini sur zone. Les OSD sont provisionnés par multiples de 3, à raison d'un ensemble par zone, afin d'assurer la réplication des données et la haute disponibilité entre les zones. Le cluster de stockage doit s'étendre par multiples de 3 afin de maintenir l'équilibre entre les zones.
  • Clusters à zone unique ou clusters comportant moins de 3 zones de disponibilité : la mise à l'échelle flexible est automatiquement activée. Le domaine de défaillance est défini sur host, ce qui signifie que chaque nœud individuel constitue un domaine de défaillance distinct. Vous pouvez ajouter un nœud à la fois et faire évoluer le stockage de manière granulaire.

À partir de la version ODF 4.21, le comportement de mise à l’échelle flexible est déterminé automatiquement lors du déploiement initial en fonction de la topologie du cluster et ne peut plus être modifié par la suite.

Dans un déploiement à zone unique ou à évolutivité flexible, un pool de services replica-3 résiste à la perte d'un hôte quelconque. Dans un déploiement multi-zones, un pool de replica-3 s résiste à la perte d'une zone entière. Vérifiez que la topologie de votre cluster et la tolérance aux pannes associée répondent à vos exigences en matière de résilience avant de déployer ODF en production.

Pour connaître l’ensemble des paramètres des modules complémentaires et les étapes d’installation via la console, consultez la section Déploiement d’ OpenShift Data Foundation sur des clusters VPC.

Performances lors de l'extension d'un nœud : l'ajout d'un nœud à un cluster ODF à évolutivité flexible déclenche un rééquilibrage des données Ceph. Lors du test interne décrit ci-dessous, les IOPS et le débit sont restés stables tandis que la latence en écriture a temporairement augmenté. Lors de tests internes réalisés sur un cluster à 3 nœuds comprenant 100 machines virtuelles à 50 000 IOPS, les résultats suivants ont été observés :

Impact sur les performances de l’ajout d’un nœud avec la mise à l’échelle flexible activée
Etape IOPS Débit Temps d'attente de lecture Temps d'attente d'écriture
Avant d'ajouter un nœud 50 000 195 Mo/s 0.69 ms 1.37 ms
Lors de l'ajout d'un nœud 50 000 195 Mo/s 1.24 ms 2.22 ms
Après avoir ajouté un nœud 50 000 195 Mo/s 0.67 ms 1.22 ms

La latence d'écriture revient à son niveau de référence une fois le rééquilibrage terminé. Prévoyez l'ajout de nœuds pendant les périodes de faible activité d' VM, si vos charges de travail sont sensibles aux pics de latence en écriture.

Résumé et bonnes pratiques

  • Utilisez ocs-storagecluster-ceph-rbd-virtualization pour la plupart des déploiements de virtualisation Red Hat OpenShift.
  • Ne créez un site StorageClass personnalisé qu'en cas d'exigences spécifiques.
  • Lorsque vous créez des CephBlockPools, personnalisés, définissez toujours targetSizeRatio (par exemple, 0.1) et incluez tous les imageFeatures requis (en particulier exclusive-lock) dans le StorageClass.
  • Les pools à codage d'effacement pour RBD constituent une fonctionnalité en avant-première pour les développeurs ( 4.20 ODF+) et ne sont pas pris en charge en production. Utilisez des pools répliqués ( rep2 ou rep3 ) pour tous les stockages de production VM.
  • Validez toujours la version personnalisée de StorageClasses dans un environnement de non-production avant de l'utiliser.
  • Évitez d'utiliser le RBD générique StorageClasses pour les disques VM dans les environnements de production.
  • Pour le stockage chiffré sur VM, utilisez la version non chiffrée de StorageClass pour les disques racine et la version chiffrée pour les disques de données.
  • Prévoyez une capacité suffisante pour que l'utilisation du cluster reste inférieure à 70 %. Pour les clusters multi-zones, faites évoluer les nœuds ODF par multiples de 3; les clusters à zone unique et à évolutivité flexible peuvent être dimensionnés de manière granulaire.
  • Installer l'agent invité QEMU dans toutes les machines virtuelles de production pour obtenir des instantanés cohérents avec les applications.
  • Surveillez régulièrement l'état de santé de Ceph et examinez HEALTH_WARN rapidement avant que les problèmes ne s'aggravent.
  • Utilisez le profil de ressources Performance pour tous les déploiements de production NVMe sur serveurs bare metal. Le profil Balanced ne fournit pas suffisamment de ressources de démon Ceph pour les nœuds NVMe à haute densité et limite les IOPS avant que le matériel ne soit saturé.
  • Une fois ODF déployé sur un serveur bare-metal, appliquez les paramètres de réglage Ceph NVMe recommandés (osd_memory_target, osd_op_num_shards_ssd, RocksDB paramètres du tampon d'écriture) afin d'optimiser les IOPS pour les charges de travail sur disque d' VM. Voir Optimisation des performances de Ceph pour les serveurs bare metal NVMe.
  • Lors de la sélection des nœuds lors de la création d' StorageSystem, sélectionnez uniquement les nœuds du pool de travailleurs de stockage dédié, et non l'ensemble des nœuds du cluster. La sélection de tous les nœuds crée une configuration LocalVolumeSet sans nodeSelector, ce qui entraîne la détection automatique des futurs nœuds de travail non-ODF et nécessite un nettoyage manuel.
  • La mise à l'échelle flexible est automatiquement activée pour les clusters à zone unique et les clusters fewer-than-3-AZ; ces déploiements utilisent un domaine de défaillance host et peuvent évoluer de manière granulaire. Les clusters multizones utilisent un domaine de défaillance zone et doivent s'étendre par multiples de 3. Le comportement de mise à l'échelle flexible est défini lors du déploiement initial et ne peut plus être modifié par la suite.