Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar.

UBLK Frontend-Support

Ab Version v1.9.0 unterstützt SUSE Storage das UBLK-Frontend für V2 Data Engine Volumes. Dieses Feature stellt V2 Data Engine Volumes als Blockgerät über das UBLK SPDK Framework zur Verfügung. In bestimmten Hochleistungsumgebungen (zum Beispiel Maschinen mit schnellen SSDs, die Millionen von IOPS erreichen können und mit 32 CPU-Kernen ausgestattet sind) könnte das UBLK-Frontend eine bessere Leistung bieten als das standardmäßige NVMe-oF-Frontend für V2 Data Engine Volumes. Für Leistungsvergleiche siehe die SUSE Storage Performance-Untersuchung Wiki-Seite. Das UBLK-Frontend ist jedoch weniger ausgereift als das standardmäßige NVMe-oF-Frontend (siehe Bekannte Einschränkungen). Das UBLK-Frontend hat auch zusätzliche Einschränkungen, die im Folgenden detailliert beschrieben werden.

Voraussetzungen

  1. Die Kernelversion auf den Knoten muss v6.0 oder höher sein. Der UBLK-Kerneltreiber ist nur ab Kernel v6.0 verfügbar.

  2. Das Kernel-Modul ublk_drv muss auf jedem Knoten geladen werden, an dem UBLK-Volumes angehängt werden sollen. Zum Testen können Sie es manuell auf jedem relevanten Knoten mit dem Befehl laden:

    modprobe ublk_drv

Anleitung

Beim Erstellen eines V2-Volumes über die Benutzeroberfläche

Wählen Sie UBLK als das Volume-Frontend während der Volumenerstellung aus.

Beim Erstellen eines V2-Volumes aus einem Manifest

  1. Erstellen Sie ein StorageClass, das das UBLK-Frontend spezifiziert. Beispiel:

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: my-ublk-frontend-storageclass
    provisioner: driver.longhorn.io
    allowVolumeExpansion: true
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
    parameters:
      numberOfReplicas: "1"
      staleReplicaTimeout: "2880"
      fsType: "ext4"
      dataEngine: "v2"
      frontend: "ublk"
  2. Erstellen Sie ein PersistentVolumeClaim (PVC), das auf das im vorherigen Schritt erstellte StorageClass verweist. Beispiel:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-ublk-frontend-pvc
      namespace: default
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: my-ublk-frontend-storageclass
      resources:
        requests:
          storage: 1Gi
  3. SUSE Storage provisioniert automatisch ein V2-Volume unter Verwendung des UBLK-Frontends basierend auf den PVC- und StorageClass-Definitionen.

Bekannte Einschränkungen

Wenn ein Instanz-Manager-Pod abstürzt, kann es sein, dass verwaiste UBLK-Geräte auf dem Knoten zurückbleiben. Derzeit kann das manuelle Entfernen dieser verwaisten Geräte schwierig sein und manchmal einen Neustart des Knotens erfordern. Wir untersuchen dieses Problem weiter in GitHub Issue #10738.

Kurz nachgeschlagen

Ursprüngliches GitHub-Problem für die UBLK-Frontend-Unterstützung: GitHub Issue #9456.