Knoten-Festplattensupport

Longhorn unterstützt jetzt die Hinzufügung und Verwaltung verschiedener Festplattentypen (AIO, NVMe und VirtIO) auf Knoten, was die Dateisystemoperationen, die Speicherleistung und die Kompatibilität verbessert.

  • Verbesserte Speicherleistung

    Die Nutzung von NVMe- und VirtIO-Festplatten ermöglicht schnellere Festplattenoperationen und verbessert die Gesamtleistung erheblich.

  • Dateisystemkompatibilität

    Festplatten, die mit NVMe- oder VirtIO-Treibern verwaltet werden, bieten eine bessere Unterstützung für Dateisysteme, einschließlich fortschrittlicher Operationen wie Trimming.

  • flexibel

    Benutzer können den Festplattentyp auswählen, der am besten zu ihrer Umgebung passt: AIO für traditionelle Setups, NVMe für Hochleistungsanforderungen oder VirtIO für virtualisierte Umgebungen.

  • Verwaltungsfreundlichkeit

    Die automatische Erkennung von Festplattentreibern vereinfacht die Hinzufügung und Verwaltung von Festplatten und reduziert den administrativen Aufwand.

Eine Festplatte auf Longhorn-Knoten konfigurieren

Longhorn erkennt automatisch den Festplattentyp, wenn node.spec.disks[i].diskDriver auf auto gesetzt ist, und optimiert die Speicherleistung. Die Erkennung und Verwaltung erfolgt wie folgt:

  • NVMe-Festplatte: verwaltet von spdk_tgt unter Verwendung des nvme bdev-Treibers, und node.status.diskStatus[i].diskDriver ist auf nvme gesetzt.

  • VirtIO-Festplatte: verwaltet von spdk_tgt unter Verwendung des virtio bdev-Treibers, und node.status.diskStatus[i].diskDriver ist auf virtio-blk gesetzt.

  • Andere Festplatten: verwaltet von spdk_tgt unter Verwendung des aio bdev-Treibers, und node.status.diskStatus[i].diskDriver ist auf aio gesetzt.

Alternativ können Benutzer node.spec.disks[i].diskDriver manuell auf aio setzen, um die Verwendung des aio bdev-Treibers zu erzwingen.

Um NVMe- und VirtIO-Festplatten zu unterstützen, müssen Sie den BDF (Bus, Gerät, Funktion) der Festplatte als Pfad finden, der zum Longhorn-Knoten hinzugefügt werden soll. Die folgenden Beispiele bieten eine Einführung in die Konfiguration von NVMe-Festplatten, VirtIO-Festplatten und anderen Festplatten.

Hinweis

Sobald diese Festplatten vom NVMe bdev-Treiber oder VirtIO bdev-Treiber verwaltet werden, anstelle des Linux-Kernel-Treibers, werden sie nicht unter /dev/nvmeXnY oder /dev/vdbX aufgeführt.

Verwendung von NVMe-Laufwerken

  1. Listen Sie die Laufwerke auf

    Zuerst identifizieren Sie die verfügbaren NVMe-Laufwerke auf Ihrem System, indem Sie den folgenden Befehl ausführen:

    # ls -al /sys/block/

    Beispielausgabe:

    lrwxrwxrwx  1 root root 0  Jul  30 12:20 loop0 -> ../devices/virtual/block/loop0
    lrwxrwxrwx  1 root root 0  Jul  30 12:20 nvme0n1 -> ../devices/pci0000:00/0000:00:01.2/0000:02:00.0/nvme/nvme0/nvme0n1
    lrwxrwxrwx  1 root root 0  Jul  30 12:20 nvme0n1 -> ../devices/pci0000:00/0000:00:01.2/0000:05:00.0/nvme/nvme1/nvme1n1
  2. Holen Sie sich die BDF des NVMe-Laufwerks

    Identifizieren Sie die BDF des NVMe-Laufwerks /dev/nvme1n1. Aus dem obigen Beispiel ist die BDF 0000:05:00.0.

  3. Fügen Sie das NVMe-Laufwerk zu spec.disks von node.longhorn.io hinzu

    nvme-disk:
      allowScheduling: true
      diskType: block
      diskDriver: auto
      evictionRequested: false
      path: 0000:05:00.0
      storageReserved: 0
      tags: []
  4. Überprüfen Sie das status.diskStatus. Das Laufwerk sollte ohne Fehler erkannt werden, und der diskDriver sollte auf nvme gesetzt sein.

Hinweis: Alternative Laufwerkskonfiguration

Wenn Sie das Laufwerk über einen anderen Pfad hinzufügen, wie zum Beispiel:

 nvme-disk:
   allowScheduling: true
   diskType: block
   diskDriver: auto
   evictionRequested: false
   path: /dev/nvme1n1
   storageReserved: 0
   tags: []

In diesem Fall wird das Laufwerk vom aio bdev-Treiber verwaltet, und das node.status.diskStatus[i].diskDriver ist auf aio gesetzt.

Verwendung von VirtIO-Laufwerken

Die Schritte sind ähnlich wie bei NVMe-Laufwerken.

  1. Listen Sie die Laufwerke auf

    Zuerst identifizieren Sie die verfügbaren VirtIO-Laufwerke auf Ihrem System, indem Sie den folgenden Befehl ausführen:

    # ls -al /sys/block/

    Beispielausgabe:

    lrwxrwxrwx  1 root root 0  Jul  30 12:20 loop0 -> ../devices/virtual/block/loop0
    lrwxrwxrwx  1 root root 0 Feb 22 14:04 vda -> ../devices/pci0000:00/0000:00:02.3/0000:04:00.0/virtio2/block/vda
    lrwxrwxrwx  1 root root 0 Feb 22 14:24 vdb -> ../devices/pci0000:00/0000:00:02.6/0000:07:00.0/virtio5/block/vdb
  2. Holen Sie sich die BDF des VirtIO-Laufwerks

    Identifizieren Sie die BDF des VirtIO-Laufwerks /dev/vdb. Aus dem obigen Beispiel ist die BDF 0000:07:00.0.

  3. Fügen Sie das VirtIO-Laufwerk zu spec.disks von node.longhorn.io hinzu

    nvme-disk:
      allowScheduling: true
      diskType: block
      diskDriver: auto
      evictionRequested: false
      path: 0000:07:00.0
      storageReserved: 0
      tags: []
  4. Überprüfen Sie das status.diskStatus. Das Laufwerk sollte ohne Fehler erkannt werden, und das diskDriver sollte auf virtio-blk gesetzt sein.

Hinweis: Alternative Laufwerkskonfiguration

Wenn Sie das Laufwerk über einen anderen Pfad hinzufügen, wie zum Beispiel:

 nvme-disk:
   allowScheduling: true
   diskType: block
   diskDriver: auto
   evictionRequested: false
   path: /dev/vdb
   storageReserved: 0
   tags: []

In diesem Fall wird das Laufwerk vom aio bdev-Treiber verwaltet, und das node.status.diskStatus[i].diskDriver ist auf aio gesetzt.

Verwendung von AIO-Laufwerken

Wenn weder NVMe- noch VirtIO-Treiber ein Laufwerk verwalten können, wird Longhorn standardmäßig den aio bdev-Treiber verwenden. Benutzer können dies auch manuell konfigurieren.

  1. Fügen Sie das Laufwerk zu spec.disks von node.longhorn.io hinzu.

     default-disk-loop:
       allowScheduling: true
       diskDriver: aio
       diskType: block
       evictionRequested: false
       path: /dev/loop12
       storageReserved: 0
       tags: []
  2. Überprüfen Sie node.status.diskStatus. Das Laufwerk sollte ohne Fehler erkannt werden, und das node.status.diskStatus[i].diskDriver sollte auf aio gesetzt sein.