Proxmox LVM on Top of iSCSI / FC / SAS mit Multipathing

Multipath ermöglicht auch dann noch redundanten Zugriff, wenn eine oder mehrere Komponenten in einem Pfad ausfallen. Zudem profitiert man vom erhöhten Durchsatz durch den Lastenausgleich. So geht's unter Proxmox.

Vorwort

Fibre Channel und iSCSI sind beides Block-basierende Protokolle und können mit Proxmox verwendet werden. Sofern diese in einem Cluster verwendet werden sollen, als Shared Storage, muss LVM-Thick (LVM) gewählt werden. LVM-Thin ist hier nicht möglich, da dies nicht Clusterfähig ist => Nur für eine einzelne Node verwenden. Sofern zu dem LUN / den Targets mehrere Pfade existieren, muss Multipathing über die Shell konfiguriert werden.

SAS/FC

Einbindung der Targets

Die Einbindung unter Proxmox von SAS/FC-LUNs gestalten sich denkbar einfach. Da Proxmox auf  Debian baisert, werden jegliche SAS/FC-HBAs unterstützt, welche auch Debian unterstützt.

SAS/FC-LUNs werden unter Proxmox automatisch erkannt und können mit dem Befehl „lsblk“ in der Shell abgerufen werden.

Um sicherzustellen, dass dies dieselbe LUN ist, kann folgendes helfen:
# ls -l /dev/disk/by-path
total 0
lrwxrwxrwx 1 root root 9 Aug 7 09:57 pci-0000:27:00.0-fc-0x5000001231231234-lun-0 -> ../../sdb
lrwxrwxrwx 1 root root 9 Aug 7 09:57 pci-0000:27:00.1-fc-0x5000001231231234-lun-0 -> ../../sdc
[...]

Hier sehen wir die identische ID zwei mal auf zwei unterschiedliche sdX Zuweisungen. => Demnach zwei Pfade. Dies können je nach Umgebung mehr sein.

Sollten die LUNs nicht automatisch erkannt werden, prüfen Sie die Zoning Konfiguration Ihrer FC-Switche oder der Freigaben Ihres SANs. Ggf. auch ob Ihr SAS/FC-HBA erkannt wurde und einen Link aufbaut. In diesem Fall führen Sie bitte den Absatz Mutlipath konfigurieren durch.

Sofern Sie nur einen Pfad insgesamt haben, können Sie direkt zu LVM konfigurieren springen.

iSCSI

Umbenennung des iSCSI-Initiator Name

Wir empfehlen den iSCSI-Initiator Namen von jeder PVE Node zu ändern. Dies macht das zukünftige Troubleshooting einfacher. Zu finden ist dieser unter /etc/iscsi/initiatorname.iscsi

Original: InitiatorName=iqn.1993-08.org.debian:01:bb88f6a25285

Geändert: InitiatorName=iqn.1993-08.org.debian:01:<Hostname>

Hier würden wir am Ende den Hostnamen des Knotens empfehlen. Beispielsweise pve01 oder pve02 etc. Vergeben Sie jedoch niemals einen identischen Namen.

Konfiguration des iSCSI Dienstes

Ändern Sie in der Datei /etc/iscsi/iscsid.conf folgende Optionen:

node.startup = automatic

node.leading_login = No

node.session.timeo.replacement_timeout = 15

node.session.initial_login_retry_max = 64

Starten Sie die Node neu.

Einbindung der Targets

Bevor Sie das iSCSI-Targets anschließen, ermitteln Sie alle iqn-Portnamen mit dem folgenden Befehl:

iscsiadm -m discovery -t sendtargets -p <IP-address>:3260

Anschließend können Sie die Targets einzeln verbinden. Nach dem ersten verbinden ist das Target gespeichert und sollte automatisch wieder verbunden werden:

iscsiadm --mode node --targetname <IQN> -p <IP-address> --login

Manchmal werden die Targets auch direkt nach dem Discovery eingebunden und ein weiteres hinzufügen ist nicht mehr nötig.

Beispielsweise für 4 Pfade:

  1. iscsiadm --mode node --targetname iqn.2000-08.com.datacore:pve-sds11-fe1 -p 172.16.41.21 --login
  2. iscsiadm --mode node --targetname iqn.2000-08.com.datacore:pve-sds11-fe2 -p 172.16.42.21 --login
  3. iscsiadm --mode node --targetname iqn.2000-08.com.datacore:pve-sds10-fe1 -p 172.16.41.20 --login
  4. iscsiadm --mode node --targetname iqn.2000-08.com.datacore:pve-sds10-fe2 -p 172.16.42.20 –login


Schlussendlich können Sie alle aktiven Sessions mit folgendem Befehl anzeigen lassen:
iscsiadm --mode session --print=1

Kontrollieren der Targets

Jedes Target wird hier einzeln angelegt. Kontrollieren Sie folgende Datei jedes Targets / Portals:

/etc/iscsi/nodes/<TARGET>/<PORTAL>/default

Folgender Wert muss so aussehen:

node.startup muss auf automatic stehen.

Dies sollte bereits der Fall sein, sofern Sie die iscsid.conf zuvor konfiguriert haben.

In diesem Beispiel haben wir ein LUN mit jeweils zwei Pfaden. Vom SAN zwei Pfade und vom Client zwei Pfade. Daher sehen wir das Laufwerk nun vier mal:

Proxmox - iSCSI_FC Multipath Setup mit LVM1

Multipath konfigurieren

Die Multipath Konfiguration ist für FC und iSCSI identisch. Dies muss für alle Knoten im Cluster konfiguriert werden.

Installation

Standardmäßig ist das mutlipath Paket unter Proxmox nicht installiert und muss nachinstalliert werden:

  1. apt update
  2. apt install multipath-tools

Nach der Installation kann die Disk bereits für multipath konfiguriert werden.

Identifikation der WWID

Wir empfehlen die Verwendung von WWIDs zur Identifizierung von LUNs. Sie können den Befehl scsi_id verwenden, um die WWID für ein bestimmtes Gerät /dev/sdX abzufragen.
/lib/udev/scsi_id -g -u -d /dev/sdX
Beispiel: sdb und sdc entsprechen zwei Pfaden zur gleichen LUN mit WWID 3600144f028f88a0000005037a95d0001:

# /lib/udev/scsi_id -g -u -d /dev/sdb 3600144f028f88a0000005037a95d0001
# /lib/udev/scsi_id -g -u -d /dev/sdc 3600144f028f88a0000005037a95d0001

Hinzufügen der WWIDs

Standardmäßig müssen Sie die WWIDs aller LUNs mit mehreren Pfaden zur Datei /etc/multipath/wwids hinzufügen. Führen Sie dazu die folgenden Befehle mit der entsprechenden WWID aus:
multipath -a WWID

Ein Beispiel für die WWID 3600144f028f88a0000005037a95d0001:

# multipath -a 3600144f028f88a0000005037a95d0001

Um diese Einstellungen zu aktivieren, müssen Sie Folgendes ausführen:

multipath -r

Dies muss für jede LUN nur einmal durchgeführt werden.

Kontrolle

Den aktuellen Status von multipath können Sie wie folgt sehen:

multipath -ll

Ebenfalls sollte bei lsblk nun ein mpath Typ hinzugekommen sein.

Proxmox - iSCSI_FC Multipath Setup mit LVM2

Zusätzlich bei FC notwendig

Wenn Sie LVM auf einer FC- oder SAS-LUN verwenden, empfehlen wir die Installation des Pakets multipath-tools-boot:

apt install multipath-tools-boot

Wenn dieses Paket installiert ist, werden /etc/multipath.conf und /etc/multipath/wwids in das initramfs kopiert. Nach einer Änderung dieser Dateien (z. B. durch multipath -a WWID) müssen Sie daher das initramfs neu erstellen:

update-initramfs -u -k all

Hintergrund

Optionale Alias Zuweisung

Nach erfolgreicher Konfiguration von Multipath, müssen wir nun zukünftig die /dev/mapper Zuweisung verwenden.

Beispielsweise für 3600144f028f88a0000005037a95d0001 wäre der Pfad

/dev/mapper/3600144f028f88a0000005037a95d0001

Es gibt auch eine Möglichkeit, dieser ID einen Alias zu geben. Hierfür muss die Datei /etc/multipath.conf erstellt werden.

nano /etc/multipath.conf

Um die WWID nun beispielsweise in mpath0 umzubenennen, wäre folgender Eintrag denkbar:

multipaths {

  multipath {

    wwid "3600144f028f88a0000005037a95d0001"

    alias mpath0

  }

}

Anschließend mit Strg +X -> Y -> Enter speichern und die Konfiguration mit

multipath -r

neu laden.

Nun sollte das Multipath-LUN unter /dev/mapper/mpath0 verfügbar sein.

LVM konfigurieren

Nach erfolgreicher Konfiguration von Multipath, müssen wir nun zukünftig die /dev/mapper Zuweisung verwenden.

Beispielsweise für 3600144f028f88a0000005037a95d0001 wäre die WWID /dev/mapper/3600144f028f88a0000005037a95d0001

Sofern Sie wie oben Optionale Alias Zuweisung durchgeführt haben, nehmen Sie diese Zuweisung.

Die folgenden Befehle erstellen ein PV und eine VG auf der LUN (ersetzen Sie DEVICE_NAME durch den Namen des Multipath-Geräts und VG_NAME durch den gewünschten Namen für die VG):

  1. pvcreate /dev/mapper/DEVICE_NAME
  2. vgcreate VG_NAME /dev/mapper/DEVICE_NAME

Sie können dann einen LVM-Speicher für dieses VG in der Proxmox-GUI erstellen.

VG in der Proxmox-GUI2

Zu 5: Vergeben Sie eine gewünschte ID, wie der Storage genannt werden soll.

Zu 6: Wählen Sie Ihre zuvor erstellte VG aus.

Zu 7: Wenn mehrere Proxmox VE Nodes auf die LUN zugreifen können, aktivieren Sie „Shared Storage“.

In einem Proxmox VE-Cluster sind die neuen PV und VG möglicherweise nicht sofort auf allen Knoten sichtbar. Um sie auf allen Knoten sichtbar zu machen, können Sie entweder alle Knoten neu starten oder den folgenden Befehl auf allen Knoten ausführen:

pvscan --cache

Hinweise:

Noch Fragen?

starline_logo_kontur_300
Enterprise Storage Solutions Team
Technik

Unsere Experten beherrschen natürlich auch Linux, Ceph und ZFS