Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi.

StorageClass

SUSE Virtualization utilise les StorageClasses pour décrire comment SUSE Storage doit provisionner des volumes. SUSE StorageLes StorageClasses peuvent correspondre à des stratégies de réplication, des stratégies de planification de nœuds ou des stratégies de planification de disques créées par les administrateurs du cluster. Ce concept est appelé profils dans d’autres systèmes de stockage.

La StorageClass par défaut harvester-longhorn a une valeur de nombre de répliques de 3 pour une haute disponibilité. Si vous utilisez harvester-longhorn dans un cluster à nœud unique, SUSE Storage ne peut pas créer le nombre par défaut de répliques, et les volumes sont marqués comme Dégradé sur l’interface utilisateur SUSE Virtualization.

Pour éviter ce problème, vous pouvez effectuer l’une des actions suivantes :

  • Changer le nombre de répliques de harvester-longhorn à 1 en utilisant un fichier de configuration.

  • Créer une nouvelle StorageClass avec le paramètre Nombre de répliques défini sur 1. Une fois créée, localisez la nouvelle StorageClass dans la liste et sélectionnez ensuite ⋮ → Définir par défaut.

Pour des informations sur le support de la provision de volumes utilisant des pilotes d’interface de stockage de conteneurs externes (CSI), voir Support de stockage tiers.

Créer une StorageClass

  • UI

  • API

  • Terraform

Après qu’une StorageClass soit créée, les champs dans la section Paramètres et la plupart des autres options deviennent immuables.

  1. Allez à Avancé → StorageClasses.

    create storageclasses entry
  2. Dans la section d’informations générales, configurez ce qui suit :

    • Nom : Nom de la StorageClass.

    • Description (facultative) : Description de la StorageClass.

    • Provisionneur : Provisionneur qui détermine le plugin de volume à utiliser pour provisionner des volumes.

  3. Dans l’onglet Paramètres, configurez ce qui suit :

    • Nombre de répliques : Nombre de répliques créées pour chaque SUSE Storage volume. La valeur par défaut est 3.

    • Délai d’expiration des répliques obsolètes : Nombre de minutes que SUSE Storage attend avant de nettoyer une réplique avec le statut ERROR. La valeur par défaut est 30.

    • Sélecteur de nœud (facultatif) : Étiquettes de nœud à faire correspondre lors de la planification des volumes. Vous pouvez ajouter des étiquettes de nœud sur l’écran de configuration de l’hôte (Hôte → Modifier la configuration).

    • Sélecteur de disque (facultatif) : Étiquettes de disque à faire correspondre lors de la planification des volumes. Vous pouvez ajouter des étiquettes de disque sur l’écran de configuration de l’hôte (Hôte → Modifier la configuration).

    • Migratable : Paramètre qui active la migration en direct pour les volumes créés en utilisant le StorageClass. La valeur par défaut est Yes.

Si un StorageClass avec un nombre de répliques de 1 est utilisé pour créer un volume qui est attaché à une machine virtuelle, cette machine virtuelle est considérée comme non-migratable.

  1. Dans l’onglet Personnaliser, configurez ce qui suit :

    • Stratégie de récupération : Stratégie de récupération qui s’applique aux volumes créés en utilisant le StorageClass. La valeur par défaut est Delete.

      • Supprimer : Supprime les volumes et les dispositifs sous-jacents lorsque la demande de volume est supprimée.

      • Conserver : Conserve le volume pour un nettoyage manuel.

    • Autoriser l’expansion de volume : Paramètre qui permet l’expansion de volume, ce qui implique le redimensionnement du périphérique de bloc et l’expansion du système de fichiers. Lorsque le paramètre est activé, vous pouvez augmenter la taille du volume en modifiant l’objet PVC correspondant.

      Vous ne pouvez utiliser la fonction d’expansion de volume que pour augmenter la taille du volume.

    • Mode de liaison de volume : Paramètre qui contrôle quand la liaison de volume et la provision dynamique se produisent. La valeur par défaut est Immediate.

      • Immédiat : Lie et provisionne un volume une fois que le PVC est créé.

      • AttendreLePremierConsommateur : Lie et provisionne un volume une fois qu’une machine virtuelle utilisant le PVC est créée.

  2. Cliquez sur Create.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  annotations:
    storageclass.beta.kubernetes.io/is-default-class: 'true'
    storageclass.kubernetes.io/is-default-class: 'true'
  name: single-replica
parameters:
  migratable: 'false'
  numberOfReplicas: '1'
  staleReplicaTimeout: '30'
provisioner: driver.longhorn.io
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
resource "harvester_storageclass" "single-replica" {
  name = "single-replica"

  is_default = "true"
  allow_volume_expansion = "true"
  volume_binding_mode = "immediate"
  reclaim_policy = "delete"

  parameters = {
    "migratable"          = "false"
    "numberOfReplicas"    = "1"
    "staleReplicaTimeout" = "30"
  }
}

Paramètres de localité des données

Vous pouvez utiliser le paramètre dataLocality lorsque au moins une réplique d’un SUSE Storage volume doit être planifiée sur le même nœud que le pod qui utilise le volume (dans la mesure du possible).

SUSE Virtualization prend officiellement en charge la localité des données. Cela s’applique même aux volumes créés à partir de images. Pour configurer la localité des données, créez une nouvelle StorageClass sur l’interface SUSE Virtualization (StorageClasses → Créer → Paramètres) et ajoutez ensuite le paramètre suivant :

  • Clé : dataLocality

  • Valeur : désactivé ou meilleur-effort

data locality

Options de localité des données

SUSE Virtualization prend actuellement en charge les options suivantes :

  • désactivé : Lorsqu’il est appliqué, SUSE Storage peut ou non planifier une réplique sur le même nœud que le pod qui utilise le volume. Il s’agit de l’option par défaut.

  • meilleur-effort : Lorsqu’il est appliqué, SUSE Storage tente toujours de planifier une réplique sur le même nœud que le pod qui utilise le volume. SUSE Storage n’interrompt pas le volume même lorsqu’une réplique locale est indisponible en raison d’une limitation environnementale (par exemple, espace disque insuffisant ou étiquettes de disque incompatibles).

SUSE Storage fournit une troisième option appelée strict-local, qui force SUSE Storage à ne conserver qu’une seule réplique sur le même nœud que le pod qui utilise le volume. SUSE Virtualization ne prend pas en charge cette option car cela peut affecter certaines opérations telles que Migration en direct de VM.

Pour plus d’informations, voir Localité des données dans la documentation SUSE Storage.

Paramètres de l’importateur de données conteneurisé (CDI)

SUSE Virtualization s’intègre avec le Importateur de données conteneurisé (CDI) pour gérer la gestion des images de VM pour les StorageClasses suivantes :

  • Longhorn V2 Data Engine

  • LVM

  • Stockage tiers

Vous pouvez utiliser l’interface utilisateur SUSE Virtualization ou les annotations CDI pour remplacer les paramètres par défaut des attributs CDI de StorageClass.

L’interface utilisateur SUSE Virtualization ne prend actuellement pas en charge l’utilisation de CDI avec le stockage tiers. Vous devez appliquer les annotations CDI SUSE Virtualization directement à la StorageClass de stockage tiers.

Pour activer l’édition des paramètres CDI pour les opérations de jour 2, SUSE Virtualization fournit des attributs de StorageClass qui mettent automatiquement à jour les paramètres CDI sous-jacents.

Chaque champ de l’écran Paramètres CDI correspond à une annotation dans la StorageClass.

Champ de l’interface utilisateur Annotation Description Valeurs prises en charge Par exemple :

Mode de volume / Modes d’accès

cdi.harvesterhci.io/storageProfileVolumeModeAccessModes

Mode de volume PVC par défaut et modes d’accès

Objet JSON avec modes de volume et modes d’accès

'{"Block":["ReadWriteOnce"]}'

Classe d’instantané de volume

cdi.harvesterhci.io/storageProfileVolumeSnapshotClass

Nom de la classe d’instantané de volume à utiliser lors de la prise d’instantanés des images de machines virtuelles sous cette StorageClass. Ce paramètre s’applique uniquement lorsque vous utilisez la stratégie de clonage instantané. Si vous avez déjà configuré le volumeSnapshotClassName dans le paramètre csi-driver-config pour le provisionneur correspondant, cette valeur sera utilisée par défaut.

Nom de VolumeSnapshotClass valide

lvm-snapshot, longhorn-snapshot

Stratégie de Clonage

cdi.harvesterhci.io/storageProfileCloneStrategy

Stratégie de clonage à utiliser pour les volumes créés avec des images de VM qui utilisent cette StorageClass.

copie : Copie des blocs de données sur le réseau ; instantané : Clone le volume en créant un volume instantané temporaire et en le restaurant dans un nouveau PVC ; csi-clone : Clone le volume en utilisant une opération de clonage CSI

snapshot

Frais de Système de Fichiers

cdi.harvesterhci.io/filesystemOverhead

Pourcentage de frais de système de fichiers à prendre en compte lors du calcul de la taille du PVC.

Valeur décimale entre 0 et 1 avec un maximum de 3 chiffres

0.05

Exemple d’une configuration YAML de StorageClass :

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: lvm
  annotations:
    cdi.harvesterhci.io/storageProfileCloneStrategy: snapshot
    cdi.harvesterhci.io/storageProfileVolumeModeAccessModes: '{"Block":["ReadWriteOnce"]}'
    cdi.harvesterhci.io/storageProfileVolumeSnapshotClass: lvm-snapshot
    cdi.harvesterhci.io/filesystemOverhead: '0.05'

Évitez de modifier directement le profil de stockage ou le CDI. Au lieu de cela, permettez au contrôleur SUSE Virtualization de synchroniser et de persister la configuration du profil de stockage grâce à l’utilisation des annotations CDI.

Les valeurs par défaut pour les StorageClasses pris en charge sont les suivantes :

  • Longhorn V2 Data Engine

    • cdi.harvesterhci.io/storageProfileCloneStrategy: "copy"

    • cdi.harvesterhci.io/storageProfileVolumeSnapshotClass: "longhorn-snapshot"

  • LVM

    • cdi.harvesterhci.io/storageProfileVolumeModeAccessModes: '{"Block":["ReadWriteOnce"]}'

    • cdi.harvesterhci.io/storageProfileCloneStrategy: "snapshot"

    • cdi.harvesterhci.io/storageProfileVolumeSnapshotClass: "lvm-snapshot"

  • Stockage tiers : Voir storagecapabilities.go dans le dépôt CDI. Si le provisionneur n’est pas répertorié, vous devez spécifier l’annotation cdi.harvesterhci.io/storageProfileVolumeModeAccessModes.

Cas d’utilisation

Scénario HDD

Avec l’introduction de StorageClass, les utilisateurs peuvent désormais utiliser HDDs pour le stockage à froid, qu’il soit hiérarchisé ou destiné à l’archivage.

Les HDD ne sont pas recommandés pour les clusters RKE2 invités ou pour les machines virtuelles nécessitant des disques performants.

Pratique recommandée

Tout d’abord, ajoutez votre HDD sur la page Host et spécifiez les étiquettes de disque selon vos besoins, telles que HDD ou ColdStorage. Pour plus d’informations sur la façon d’ajouter des disques supplémentaires et des étiquettes de disque, consultez Gestion multi-disques pour plus de détails.

add hdd on host page
add tags

Ensuite, créez un nouveau StorageClass pour le HDD (utilisez les étiquettes de disque ci-dessus). Pour les disques durs avec une grande capacité mais une performance lente, le nombre de répliques peut être réduit pour améliorer les performances.

create hdd storageclass

Vous pouvez maintenant créer un volume en utilisant le StorageClass ci-dessus avec des HDD principalement pour le stockage à froid ou l’archivage.

create volume hdd