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.

Il s'agit d'une documentation non publiée pour SUSE® Storage 1.12 (Dev).

Guide de démarrage rapide

Le moteur de données V2 de SUSE Storage utilise le Kit de développement de performances de stockage (SPDK) pour offrir des performances améliorées. Cette intégration réduit la latence d’E/S tout en augmentant à la fois les IOPS et le débit, fournissant une solution de stockage haute performance capable de gérer une large gamme de charges de travail.

Le moteur de données V2 est actuellement une fonctionnalité en aperçu technique. Ses fonctionnalités prises en charge sont documentées ici.

Ce tutoriel vous guide à travers le processus de configuration de l’environnement et de création de ressources de stockage persistant Kubernetes sous forme de volumes persistants (PVs) et de revendications de volumes persistants (PVCs) qui correspondent aux volumes Longhorn en utilisant le moteur de données V2.

Conditions préalables

Charger les modules de kernel

Sur Debian et Ubuntu, installez les modules supplémentaires du kernel Linux avant de charger les modules de kernel requis :

apt install -y linux-modules-extra-`uname -r`

Vous pouvez configurer les modules de kernel requis et les hugepages pour SPDK avec le Longhorn CLI.

Vous pouvez les installer manuellement :

Chargez les modules de kernel sur chaque nœud Longhorn :

modprobe vfio_pci
modprobe uio_pci_generic
modprobe nvme-tcp

Alternativement, plutôt que de charger manuellement les modules de kernel vfio_pci, uio_pci_generic et nvme-tcp à chaque fois après un redémarrage, vous pouvez simplifier le processus en configurant le chargement automatique des modules pendant la séquence de démarrage. Pour des instructions détaillées, veuillez consulter le manuel fourni par votre système d’exploitation.

Référence :

Activer les hugepages

Configurer les hugepages

SPDK utilise des hugepages pour améliorer les performances et minimiser la surcharge mémoire. Vous devez configurer des hugepages de 2 MiB sur chaque nœud Longhorn pour permettre l’utilisation des hugepages. Plus précisément, 1024 pages (équivalent à un total de 2 GiB) doivent être disponibles sur chaque nœud Longhorn.

Pour allouer des hugepages, exécutez les commandes suivantes sur chaque nœud.

echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

Les allocations effectuées sous /sys/kernel/mm/hugepages ne sont pas persistantes et se réinitialisent après un redémarrage. Pour rendre l’allocation persistante, utilisez l’une des méthodes suivantes :

Allocation persistante (recommandée)

Pour pré-allouer des hugepages de manière permanente, mettez à jour les paramètres de démarrage du kernel.

  1. Mettez à jour la configuration GRUB

    Modifiez /etc/default/grub et ajoutez les paramètres des hugepages. Cet exemple alloue des pages de 1024 × 2 MiB (2 GiB au total) :

    GRUB_CMDLINE_LINUX="hugepagesz=2M hugepages=1024"

    Si le nœud a déjà des paramètres de kernel, ajoutez ces valeurs plutôt que de les écraser.

  2. Appliquez la configuration de GRUB

    Systèmes BIOS :

    sudo update-grub

    RHEL ou SUSE (GRUB2) :

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg

    Systèmes UEFI :

    sudo grub2-mkconfig -o /boot/efi/EFI/<distro>/grub.cfg
  3. Redémarrez le nœud :

    sudo reboot
  4. Vérifiez les hugepages :

    grep Huge /proc/meminfo

    Sortie attendue :

    HugePages_Total:    1024
    Hugepagesize:       2048 kB
  5. Vérifiez les hugepages en tant que ressource Kubernetes :

    kubectl describe node <node-name>

    Attendu sous Capacité et Allocatable :

    hugepages-2Mi: 2Gi
Alternative : configuration sysctl (non recommandée)

Ajoutez la ligne suivante à /etc/sysctl.conf :

vm.nr_hugepages=1024

Cela ne persiste pas après un redémarrage sur de nombreuses distributions car les hugepages doivent être allouées tôt dans le processus de démarrage. Utilisez uniquement lorsque la modification de GRUB n’est pas autorisée.

Redémarrer kubelet

Après avoir terminé les étapes ci-dessus, redémarrez kubelet sur chaque nœud.

Vérifier l’environnement

Utilisation de l’outil en ligne de commande Longhorn

L’outil longhornctl est une interface en ligne de commande pour les opérations Longhorn. Pour plus d’informations, voir Outil en ligne de commande (longhornctl).

Pour vérifier les prérequis et les configurations, téléchargez l’outil et exécutez la sous-commande check :

# For AMD64 platform
curl -sSfL -o longhornctl https://github.com/longhorn/cli/releases/download/v1.12.0/longhornctl-linux-amd64
# For ARM platform
curl -sSfL -o longhornctl https://github.com/longhorn/cli/releases/download/v1.12.0/longhornctl-linux-arm64

chmod +x longhornctl
./longhornctl check preflight --enable-spdk

Exemple de résultat :

INFO[2024-01-10T00:00:01Z] Initializing preflight checker
INFO[2024-01-01T00:00:01Z] Cleaning up preflight checker
INFO[2024-01-01T00:00:01Z] Running preflight checker
INFO[2024-01-01T00:00:02Z] Retrieved preflight checker result:
worker1:
  error:
  - 'HugePages is insufficient. Required 2MiB HugePages: 1024 pages, Total 2MiB HugePages: 0 pages'
  - 'Module nvme_tcp is not loaded: failed to execute: nsenter [--mount=/host/proc/204896/ns/mnt --net=/host/proc/204896/ns/net grep nvme_tcp /proc/modules], output , stderr : exit status 1'
  - 'Module uio_pci_generic is not loaded: failed to execute: nsenter [--mount=/host/proc/204896/ns/mnt --net=/host/proc/204896/ns/net grep uio_pci_generic /proc/modules], output , stderr : exit status 1'
  info:
  - Service iscsid is running
  - NFS4 is supported
  - Package nfs-common is installed
  - Package open-iscsi is installed
  - CPU instruction set sse4_2 is supported
  warn:
  - multipathd.service is running. Please refer to https://longhorn.io/kb/troubleshooting-volume-with-multipath/ for more information.

Utilisez la sous-commande install pour installer et configurer les dépendances préalables avant d’installer Longhorn.

master:~# ./longhornctl install preflight --enable-spdk
INFO[2024-01-01T00:00:03Z] Initializing preflight installer
INFO[2024-01-01T00:00:03Z] Cleaning up preflight installer
INFO[2024-01-01T00:00:03Z] Running preflight installer
INFO[2024-01-01T00:00:03Z] Installing dependencies with package manager
INFO[2024-01-01T00:00:10Z] Installed dependencies with package manager
INFO[2024-01-01T00:00:10Z] Cleaning up preflight installer
INFO[2024-01-01T00:00:10Z] Completed preflight installer. Use 'longhornctl check preflight' to check the result.

Certaines distributions Linux immuables, telles que SUSE Linux Enterprise Micro (SLE Micro), nécessitent que vous redémarriez les nœuds de travail après avoir exécuté la sous-commande install. Après le redémarrage, vous devez exécuter à nouveau la sous-commande install pour compléter l’opération.

La documentation de votre distribution Linux devrait décrire de telles exigences. Par exemple, la documentation SLE Micro explique que tous les changements effectués par la commande transactional-update ne deviennent actifs qu’après le redémarrage du nœud.

Après avoir installé et configuré les dépendances préalables, vous pouvez exécuter à nouveau la sous-commande check pour vérifier que tous les paramètres d’environnement sont corrects.

master:~# ./longhornctl check preflight --enable-spdk
INFO[2024-01-01T00:00:13Z] Initializing preflight checker
INFO[2024-01-01T00:00:13Z] Cleaning up preflight checker
INFO[2024-01-01T00:00:13Z] Running preflight checker
INFO[2024-01-01T00:00:16Z] Retrieved preflight checker result:
worker1:
  info:
  - Service iscsid is running
  - NFS4 is supported
  - Package nfs-common is installed
  - Package open-iscsi is installed
  - CPU instruction set sse4_2 is supported
  - HugePages is enabled
  - Module nvme_tcp is loaded
  - Module uio_pci_generic is loaded

Utiliser l’outil en ligne de commande Longhorn

Assurez-vous que tout est correctement configuré et installé par

longhornctl --kubeconfig ~/.kube/config --image longhornio/longhorn-cli:v1.12.0 install preflight --enable-spdk

Référez-vous à Longhorn Command Line Tool pour plus d’informations.

Installation

Installez le système Longhorn

Suivez les étapes de l’installation rapide pour installer le système Longhorn.

Activez le moteur de données V2

Activez le moteur de données V2 en changeant le paramètre v2-data-engine en true après l’installation. Ensuite, les pods du gestionnaire d’instances seront automatiquement redémarrés.

Ou, vous pouvez l’activer dans Settings > V2 Data Engine.

Utilisation de l’UC et de la mémoire

Lorsque le moteur de données V2 est activé, chaque pod du gestionnaire d’instances pour le moteur de données V2 utilise 1 cœur d’UC. La forte utilisation de l’UC est causée par spdk_tgt, un processus s’exécutant dans chaque pod du gestionnaire d’instances qui gère les opérations d’entrée/sortie et nécessite un sondage intensif. spdk_tgt consomme 100 % d’un cœur d’UC dédié pour gérer et traiter efficacement les demandes d’entrée/sortie, garantissant des performances optimales et une réactivité pour les opérations de stockage.

NAME                                                CPU(cores)   MEMORY(bytes)
csi-attacher-57c5fd5bdf-jsfs4                       1m           7Mi
csi-attacher-57c5fd5bdf-kb6dv                       1m           9Mi
csi-attacher-57c5fd5bdf-s7fb6                       1m           7Mi
csi-provisioner-7b95bf4b87-8xr6f                    1m           11Mi
csi-provisioner-7b95bf4b87-v4gwb                    1m           9Mi
csi-provisioner-7b95bf4b87-vnt58                    1m           9Mi
csi-resizer-6df9886858-6v2ds                        1m           8Mi
csi-resizer-6df9886858-b6mns                        1m           9Mi
csi-resizer-6df9886858-l4vmj                        1m           8Mi
csi-snapshotter-5d84585dd4-4dwkz                    1m           7Mi
csi-snapshotter-5d84585dd4-km8bc                    1m           9Mi
csi-snapshotter-5d84585dd4-kzh6w                    1m           7Mi
engine-image-ei-b907910b-79k2s                      3m           19Mi
instance-manager-214803c4f23376af5a75418299b12ad6   1015m        133Mi (for V2 Data Engine)
instance-manager-4550bbc4938ff1266584f42943b511ad   4m           15Mi  (for V1 Data Engine)
longhorn-csi-plugin-nz94f                           1m           26Mi
longhorn-driver-deployer-556955d47f-h5672           1m           12Mi
longhorn-manager-2n9hd                              4m           42Mi
longhorn-ui-58db78b68-bzzz8                         0m           2Mi
longhorn-ui-58db78b68-ffbxr                         0m           2Mi

Vous pouvez observer l’utilisation des hugepages allouées sur chaque nœud en exécutant la commande kubectl get node <node name> -o yaml.

# kubectl get node sles-pool1-07437316-4jw8f -o yaml
...

status:
  ...
  allocatable:
    cpu: "8"
    ephemeral-storage: "203978054087"
    hugepages-1Gi: "0"
    hugepages-2Mi: 2Gi
    memory: 31813168Ki
    pods: "110"
  capacity:
    cpu: "8"
    ephemeral-storage: 209681388Ki
    hugepages-1Gi: "0"
    hugepages-2Mi: 2Gi
    memory: 32861744Ki
    pods: "110"
...

Ajoutez block-type disques dans les nœuds Longhorn

Contrairement aux disques filesystem-type qui sont conçus pour des volumes hérités, les volumes utilisant le moteur de données V2 sont persistants sur des disques block-type. Par conséquent, il est nécessaire d’équiper les nœuds Longhorn avec des disques block-type.

Préparez les disques

S’il n’y a pas de disques supplémentaires disponibles sur les nœuds Longhorn, vous pouvez créer des dispositifs de bloc en boucle pour tester la fonctionnalité. Pour ce faire, exécutez la commande suivante sur chaque nœud Longhorn pour créer un dispositif de bloc de 10 GiB.

dd if=/dev/zero of=blockfile bs=1M count=10240
losetup -f blockfile

Pour afficher le chemin du dispositif de bloc lors de l’exécution de la commande losetup -f blockfile, utilisez la commande suivante.

losetup -j blockfile

Ajoutez des disques à node.longhorn.io

À partir de la version 1.11.0, SUSE Storage empêche l’ajout de disques de bloc contenant un système de fichiers ou une table de partition existante pour éviter toute perte de données inattendue. Assurez-vous que le disque est propre avant de l’ajouter en exécutant :

wipefs -a /path/to/block/device

Si le disque contient un système de fichiers ou une table de partition existante, l’opération d’ajout du disque échouera. 1 Le code contient des commentaires. Appuyez sur Entrée pour afficher.

Vous pouvez ajouter le disque en naviguant vers la page de l’interface utilisateur du nœud et en spécifiant le Disk Type comme Block. Ensuite, fournissez le chemin du périphérique de bloc dans le champ Path.

Ou, modifiez la ressource node.longhorn.io.

kubectl -n longhorn-system edit node.longhorn.io <NODE NAME>

Ajoutez le disque à Spec.Disks

<DISK NAME>:
  allowScheduling: true
  evictionRequested: false
  path: /PATH/TO/BLOCK/DEVICE
  storageReserved: 0
  tags: []
  diskType: block

Attendez un moment, vous verrez que le disque est affiché dans le Status.DiskStatus.

Déploiement d’applications

Après l’installation et la configuration, nous pouvons provisionner dynamiquement un Volume Persistant en utilisant le V2 Data Engine selon les étapes suivantes.

Créez un StorageClass

Exécutez la commande suivante pour créer un StorageClass nommé longhorn-spdk. Définissez parameters.dataEngine sur v2 pour activer le V2 Data Engine.

kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.12.0/examples/v2/storageclass.yaml

Créez des volumes Longhorn

Créez un Pod qui utilise des volumes Longhorn en utilisant le V2 Data Engine en exécutant cette commande :

kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.12.0/examples/v2/pod_with_pvc.yaml