Optimisation des performances ODF pour les charges de travail de virtualisation

Cloud privé virtuel 4.20 et plus tard Uniquement les nœuds de travail « bare metal »

Vous pouvez améliorer les performances de stockage d' OpenShift Data Foundation (ODF) pour les charges de travail de virtualisation en sélectionnant le profil de performances approprié, en ajustant les limites de ressources des pods OSD et en configurant les opérations sur les données en masse. Ces options s'appliquent aux clusters « Red Hat OpenShift on IBM Cloud » dont les clusters « OpenShift Virtualization » et « Red Hat OpenShift Virtualization Service » ont été déployés manuellement.

Avant de commencer

  • Vous devez disposer d'un accès de type « cluster-admin » au cluster.
  • Installez ou mettez à jour les interfaces de ligne de commande (CLI) « IBM Cloud » et « oc ».
  • ODF doit être installé et fonctionner correctement avant de modifier les limites de ressources ou de configurer des pools de stockage. Pour vérifier l'état de santé d'ODF, consultez la section « Vérification de l'état de santé du cluster Ceph ».

Sélection d'un profil de performances ODF

ODF propose deux profils de performances qui régulent l'utilisation du processeur et l'allocation de mémoire pour les composants de stockage. Choisissez le profil qui correspond le mieux à votre charge de travail.

Performances
Alloue davantage de ressources CPU et de mémoire que le profil « Équilibré ». Utilisez ce profil pour les charges de travail « VM » qui nécessitent un débit élevé et une faible latence, telles que les bases de données ou les applications à fort trafic.
Réparti
Utilise des ressources CPU et mémoire modérées. Utilisez ce profil pour les charges de travail générales, les environnements mixtes ou les déploiements optimisés en termes de coûts.

Lorsque vous déployez ODF, sélectionnez « Performance » dans le champ « Profil de ressource » sous « Stockage de base ». Sur les clusters de services de virtualisation, l'option « Performances » est sélectionnée par défaut.

Vous pouvez configurer le profil depuis la console ou l'interface de ligne de commande (CLI).

  • Console - Clusters d' Red Hat OpenShift on IBM Cloud s standard: lors de l'installation du module complémentaire ODF, sélectionnez « Performance » dans la section « Stockage sous-jacent ».
  • Console - Clusters du service de virtualisation: l'option « Performances » est sélectionnée par défaut. Pour le modifier, sélectionnez « Modifier » sur la fiche « Base de données d' OpenShift » dans la section « Intégrations de virtualisation » lors de la création du cluster.

Cette option s'applique uniquement aux clusters standard d' Red Hat OpenShift on IBM Cloud. Pour les clusters de services de virtualisation, vous définissez le profil lors de la création du cluster.

Depuis l'interface de ligne de commande (CLI), ajoutez « --param "resourceProfile=performance" » lorsque vous activez le module complémentaire :

ibmcloud oc cluster addon enable openshift-data-foundation \
  -c <cluster-name> \
  --version <addon-version> \
  --param "odfDeploy=true" \
  --param "osdStorageClassName=localblock" \
  --param "autoDiscoverDevices=true" \
  --param "resourceProfile=performance" \
  --param "setDefaultStorageClassForVirtualization=true"

Pour tous les paramètres des modules complémentaires ODF, consultez le guide de référence des paramètres de Data Foundation sur OpenShift.

Configuration des limites de ressources des pods OSD

Object Storage Les pods Daemon (OSD) stockent des données et participent au placement et à la réplication des données. Pour les charges de travail de virtualisation générant un volume élevé d'E/S, vous pouvez augmenter les limites de CPU et de mémoire sur les pods OSD afin de réduire les goulots d'étranglement.

Vérifier les limites actuelles des ressources OSD

Avant de modifier les limites des ressources, vérifiez les paramètres actuels relatifs au processeur et à la mémoire de vos pods OSD. Notez bien les demandes et les limites actuelles afin de pouvoir les comparer ultérieurement à l'utilisation réelle et aux valeurs mises à jour.

oc get pods -n openshift-storage -l app=rook-ceph-osd \
  -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{range .spec.containers[*]}  Container: {.name}{"\n"}    Requests - CPU: {.resources.requests.cpu}, Memory: {.resources.requests.memory}{"\n"}    Limits   - CPU: {.resources.limits.cpu}, Memory: {.resources.limits.memory}{"\n"}{end}{"\n"}{end}'

Examinez les résultats pour identifier les demandes et les limites actuelles en matière de CPU et de mémoire pour chaque conteneur OSD. Comparez ces valeurs avec l'utilisation réelle à l'aide de la commande suivante. Si l'utilisation du processeur ou de la mémoire avoisine régulièrement les limites configurées, augmenter ces limites pourrait contribuer à réduire les goulots d'étranglement.

Pour vérifier la consommation réelle des ressources, exécutez la commande suivante et comparez l'utilisation du processeur et de la mémoire aux limites que vous avez notées :

oc adm top pods -n openshift-storage -l app=rook-ceph-osd

Augmenter les limites des ressources OSD

Si les limites de courant sont insuffisantes pour votre charge de travail « VM », modifiez-les en éditant la ressource « ocs-storagecluster ».

Vous pouvez également modifier les limites pour d'autres pods « Rook-Ceph », tels que mon, mgr et rgw, dans la configuration « ocs-storagecluster ». Pour plus d'informations, consultez la solution 6959127 sur Red Hat.

  1. Ouvrez la ressource du cluster de stockage pour la modifier.

    oc edit storagecluster ocs-storagecluster -n openshift-storage
    
  2. Dans l'entrée correspondante de l' storageDeviceSets, ajoutez ou mettez à jour le champ « resources ». L'exemple partiel suivant définit une limite de 4 cœurs de processeur et 24 Gi de mémoire, ainsi qu'une demande de 2 cœurs de processeur et 24 Gi de mémoire :

    storageDeviceSets:
      - name: ocs-deviceset
        resources:
          limits:
            cpu: "4"
            memory: "24Gi"
          requests:
            cpu: "2"
            memory: "24Gi"
    

    Les demandes de ressources CPU et de mémoire doivent être inférieures ou égales aux limites fixées.

  3. Enregistrez et quittez l'éditeur.

    Une fois les modifications enregistrées, les pods OSD redémarrent automatiquement. Attendez que le redémarrage progressif soit terminé avant d'effectuer d'autres opérations de stockage.

Vérifier les limites de ressources mises à jour

Une fois le redémarrage progressif terminé, vérifiez que les limites mises à jour sont bien appliquées à tous les pods OSD.

  1. Surveillez le redémarrage progressif afin de vérifier que tous les pods OSD reviennent à l'état « Running ». Le redémarrage est terminé lorsque tous les pods OSD affichent le message « Running » et qu'aucun n'affiche « Pending » ou « Terminating ».

    oc get pods -n openshift-storage | grep osd | grep -v prepare | grep -v rotation
    
  2. Vérifiez que les nouvelles valeurs des ressources sont bien prises en compte.

    oc get pods -n openshift-storage -l app=rook-ceph-osd \
      -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{range .spec.containers[*]}  Container: {.name}{"\n"}    Requests - CPU: {.resources.requests.cpu}, Memory: {.resources.requests.memory}{"\n"}    Limits   - CPU: {.resources.limits.cpu}, Memory: {.resources.limits.memory}{"\n"}{end}{"\n"}{end}'
    

    Vérifiez que les valeurs relatives au processeur et à la mémoire correspondent à celles que vous avez configurées.

Configuration de l'indicateur « bulk » pour les opérations sur des volumes importants de données

Pour les opérations portant sur de grands volumes de données, telles que les migrations de type « VM », les importations en masse ou l'archivage de données, l'activation de l'indicateur « bulk » sur un pool de blocs Ceph peut améliorer la répartition initiale des données entre les OSD et réduire la charge liée au rééquilibrage.

L'indicateur « bulk » est couramment utilisé pour :

  • VM migrations de disques et importations portant sur plusieurs To de données.
  • Opérations de sauvegarde et de restauration.
  • Chargement initial des données pour les nouvelles applications.
  • Pools d'archivage des données.

Pour configurer une ressource « CephBlockPool » avec l'indicateur « bulk » activé, procédez comme suit.

  1. Créez ou mettez à jour la définition de la ressource CephBlockPool de manière à ce que la section parameters inclue bulk: "true".

    apiVersion: ceph.rook.io/v1
    kind: CephBlockPool
    metadata:
      name: <pool-name>
      namespace: openshift-storage
    spec:
      replicated:
        size: 3
      parameters:
        bulk: "true"
    
  2. Appliquez le fichier de configuration.

    oc apply -f <pool-config-file>.yaml
    

    Une fois la configuration appliquée, Ceph peut répartir les nouvelles données de manière plus homogène dans le pool dès le début. Ce comportement peut réduire la fréquence des rééquilibrages à mesure que le pool se remplit.

Vérification de l'état de santé d'un cluster Ceph

Surveillez régulièrement votre cluster Ceph afin d'identifier les problèmes de performances et de garantir l'intégrité des données. Effectuez des contrôles d'intégrité avant et après toute modification de configuration.

Effectuer un bilan de santé de base

Exécutez la commande suivante pour obtenir un résumé général de l'état de santé de Ceph. Un cluster en bon état renvoie « HEALTH_OK ».

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

Pour afficher les avertissements ou les erreurs en cours, exécutez la commande suivante :

oc rsh -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) ceph health detail

Comprendre les états des clusters

La sortie de la commande « ceph status » inclut les états des groupes de placement (PG) qui indiquent l'intégrité des données.

Actif/propre
L'état idéal. Tous les groupes de placement sont actifs, toutes les données sont répliquées et aucune donnée n'est en cours de transfert. Aucune action n'est nécessaire.
Actif + remappé, actif + en cours de remplissage, actif + en cours de récupération
Les données sont en cours de redistribution. Ces états sont normaux après une modification des ressources OSD, le remplacement d'un nœud ou une opération de mise à l'échelle. Attendez que le cluster revienne à l'état « active/clean » avant d'effectuer d'autres modifications.

Exemple de résultat correct :

HEALTH_OK

Exemple de résultat lors du rééquilibrage :

HEALTH_WARN
  Degraded data redundancy: 123/456 objects degraded (26.974%)
  Recovery 50/456 objects degraded (10.965%)

Vérifier le groupe de placement et l'état de l'OSD

Pour obtenir une vue plus détaillée de la répartition des données et de l'état de santé de l'OSD, effectuez les vérifications suivantes.

  1. Vérifiez le statut des groupes de placement afin d'identifier ceux qui ne sont pas dans l'état « active+clean ».

    oc rsh -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) ceph pg stat
    
  2. Vérifiez l'état de chaque OSD pour vous assurer que les OSD sont up et in.

    oc rsh -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) ceph osd status
    

Etapes suivantes