Proxmox

Neue Seite

Proxmox iSCSI SAN mit tgt und LVM

Diese Dokumentation beschreibt die bisher eingerichtete iSCSI-SAN-Konfiguration mit tgt auf der SAN-Seite und dem ersten Proxmox-Node pve_1.


1. Ziel der Konfiguration

Es wurde ein iSCSI-Target auf der SAN-Seite bereitgestellt und auf dem ersten Proxmox-Node als Shared-LVM-Storage eingebunden.

Der Aufbau ist:

tgt SAN
  └─ iSCSI Target: iqn.2026-02-25.linux.proxmox.pve:cleopatra
       └─ LUN: /dev/mapper/cleopatra
            └─ pve_1 sieht LUN als /dev/sda
                 └─ /dev/sda1 als LVM Physical Volume
                      └─ VG: vg_vmstore
                           └─ Proxmox Storage: lvm-cleopatra

2. Namensschema

Objekt Name Beschreibung
SAN-Host big-bunda Server mit tgt als iSCSI-Target-Dienst
Erster Proxmox-Node pve_1 / byte-me Erster Proxmox-VE-Node, der das iSCSI-LUN nutzt
iSCSI Portal 10.99.255.1:3260 IP-Adresse und Port des iSCSI-Targets
iSCSI Target IQN iqn.2026-02-25.linux.proxmox.pve:cleopatra Eindeutiger iSCSI-Targetname für den Storage Cleopatra
tgt Backing Store /dev/mapper/cleopatra Blockdevice, das vom tgt-Target als LUN exportiert wird
Proxmox iSCSI Storage-ID iscsi-cleopatra Proxmox-Eintrag für die reine iSCSI-Verbindung
LVM Volume Group vg_vmstore LVM-VG auf der iSCSI-LUN
Proxmox LVM Storage-ID lvm-cleopatra Nutzbarer VM-Storage in Proxmox

3. Wichtige Entscheidung: Warum zwei Proxmox-Storage-Einträge?

In Proxmox gibt es zwei Einträge, weil iSCSI und LVM zwei verschiedene Schichten sind.

iscsi-cleopatra = Verbindung zum iSCSI-Target
lvm-cleopatra   = eigentlicher VM-Storage auf der LVM Volume Group

Der iSCSI-Eintrag selbst hat content none, weil Proxmox dort keine VM-Disks direkt ablegt. Die eigentlichen VM-Disks werden später auf lvm-cleopatra erstellt.


4. tgt SAN-Konfiguration

Auf dem SAN-Host big-bunda wird tgt als iSCSI-Target-Daemon genutzt. Das exportierte Blockdevice ist:

/dev/mapper/cleopatra

Beispiel für die tgt-Konfiguration:

<target iqn.2026-02-25.linux.proxmox.pve:cleopatra>
    driver iscsi

    <backing-store /dev/mapper/cleopatra>
        lun 1
        device-type disk
        vendor_id "linux"
        product_id "iscsi disk"
        product_rev "0001"
        scsi_sn "cleopatra-lun1"
        write-cache off
    </backing-store>

    # zugriff nur für erlaubte proxmox-nodes
    initiator-address 10.99.255.X

    # initiator-iqn von pve_1 / byte-me
    # prüfen auf dem pve-node mit:
    # cat /etc/iscsi/initiatorname.iscsi
    initiator-name iqn.1993-08.org.debian:01:1ebae4d041e

    # mutual chap
    # incominguser = initiator authentifiziert sich beim target
    # outgoinguser = target authentifiziert sich beim initiator
    incominguser pve-byteme "SECRET_NICHT_IN_DOKU_EINTRAGEN"
    outgoinguser tgt-cleopatra "ANDERES_SECRET_NICHT_IN_DOKU_EINTRAGEN"
</target>

Wichtig: Die CHAP-Secrets dürfen nicht identisch sein. Für incominguser und outgoinguser müssen unterschiedliche Passwörter verwendet werden.

Für dieses Setup wurden kurze, kompatible CHAP-Secrets verwendet, da längere Secrets im konkreten tgt/Open-iSCSI-Stack Probleme verursachen können. Empfohlen sind zufällige Secrets mit 12 bis 16 Zeichen.

openssl rand -hex 8

5. Proxmox pve_1 / byte-me: iSCSI-Verbindung

Auf dem ersten Proxmox-Node wurde das Target über das Portal 10.99.255.1 eingebunden.

Proxmox-Storage-Eintrag:

iscsi: iscsi-cleopatra
        portal 10.99.255.1
        target iqn.2026-02-25.linux.proxmox.pve:cleopatra
        content none

Das iSCSI-LUN ist auf pve_1 sichtbar als:

/dev/sda

Der stabile Gerätepfad lautet:

/dev/disk/by-path/ip-10.99.255.1:3260-iscsi-iqn.2026-02-25.linux.proxmox.pve:cleopatra-lun-1

6. Entfernen des alten VMFS-Datastores

Auf dem iSCSI-LUN befand sich vorher ein VMware VMFS6-Dateisystem. Dieses wurde entfernt, da die Daten nicht mehr benötigt wurden.

Vorheriger Zustand:

sda
└─sda1 VMFS_volume_member 6

Verwendete Befehle:

lun="/dev/disk/by-path/ip-10.99.255.1:3260-iscsi-iqn.2026-02-25.linux.proxmox.pve:cleopatra-lun-1"

findmnt "$lun"
findmnt "${lun}-part1"

wipefs -a "${lun}-part1"
wipefs -a "$lun"
partprobe "$lun"
udevadm settle

Achtung: Diese Befehle löschen Dateisystem- und Partitionssignaturen. Sie dürfen nur verwendet werden, wenn die Daten auf der LUN wirklich gelöscht werden dürfen.


7. Neue GPT-Partition für LVM

Nach dem Entfernen der VMFS-Signaturen wurde eine neue GPT-Partitionstabelle mit einer LVM-Partition erstellt.

parted -s "$lun" mklabel gpt
parted -s "$lun" mkpart primary 1MiB 100%
parted -s "$lun" set 1 lvm on
partprobe "$lun"
udevadm settle

Danach war die LUN sauber vorbereitet:

NAME   FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sda
└─sda1

8. LVM auf iSCSI erstellen

Auf der neuen Partition wurde ein LVM Physical Volume und danach eine Volume Group erstellt.

pvcreate "${lun}-part1"
vgcreate vg_vmstore "${lun}-part1"

Ergebnis:

PV                 VG          Fmt  Attr PSize    PFree
/dev/sda1          vg_vmstore  lvm2 a--  <6,99t   <6,99t

VG          #PV #LV #SN Attr   VSize    VFree
vg_vmstore   1   0   0 wz--n-  <6,99t   <6,99t

Wichtig für weitere Nodes: pvcreate und vgcreate wurden nur einmal auf pve_1 ausgeführt. Auf weiteren Proxmox-Nodes darf das nicht erneut ausgeführt werden. Weitere Nodes sollen die bestehende VG nur erkennen.


9. Proxmox LVM Storage

Der Proxmox-LVM-Storage wurde als shared Storage angelegt.

pvesm add lvm lvm-cleopatra \
  --vgname vg_vmstore \
  --content images,rootdir \
  --shared 1

Finaler Proxmox-Storage-Eintrag:

lvm: lvm-cleopatra
        vgname vg_vmstore
        content images,rootdir
        shared 1

Damit ist lvm-cleopatra der nutzbare Storage für VM-Disks und Container-Rootdisks.


10. Aktueller Proxmox-Status

Aktueller Status auf pve_1:

Name                   Type     Status     Total (KiB)      Used (KiB) Available (KiB)        %
iscsi-cleopatra       iscsi     active               0               0               0    0.00%
lvm-cleopatra           lvm     active      7503060992               0      7503060992    0.00%

Dass iscsi-cleopatra eine Größe von 0 zeigt, ist normal. Dieser Eintrag ist nur die Verbindung zum iSCSI-Target. Die nutzbare Kapazität wird bei lvm-cleopatra angezeigt.


11. Finaler Aufbau in Proxmox

iscsi: iscsi-cleopatra
        portal 10.99.255.1
        target iqn.2026-02-25.linux.proxmox.pve:cleopatra
        content none

lvm: lvm-cleopatra
        vgname vg_vmstore
        content images,rootdir
        shared 1

12. Hinweise für spätere Proxmox-Nodes

Bei weiteren Proxmox-Nodes muss nur die iSCSI-Verbindung eingerichtet werden. Die LVM-Struktur existiert bereits.

Auf jedem weiteren Node prüfen:

cat /etc/iscsi/initiatorname.iscsi
pvesm status
pvs
vgs

Jeder Node braucht einen eigenen eindeutigen Initiator-IQN. Dieser muss auf der SAN-Seite in der tgt-Konfiguration als initiator-name erlaubt werden.

Nicht erneut ausführen:

pvcreate
vgcreate
wipefs
parted mklabel

Diese Befehle würden die bestehende LVM-Struktur beziehungsweise die Daten auf dem Shared Storage beschädigen. Storage verzeiht so etwas nicht, es merkt sich das nur in Form von Datenverlust.


13. Sicherheitsregeln


14. Optionales späteres Cleanup

Aktuell heißt die LVM Volume Group noch:

vg_vmstore

Für ein konsequentes Namensschema könnte sie später optional umbenannt werden:

vgrename vg_vmstore vg_cleopatra
pvesm set lvm-cleopatra --vgname vg_cleopatra

Danach wäre das Schema vollständig konsistent:

iscsi-cleopatra
lvm-cleopatra
vg_cleopatra

Dieser Schritt ist optional. Der Storage funktioniert bereits mit vg_vmstore.


15. Kurzfassung

SAN big-bunda:
  Target: iqn.2026-02-25.linux.proxmox.pve:cleopatra
  Backing Store: /dev/mapper/cleopatra
  Portal: 10.99.255.1:3260
  Auth: Mutual CHAP
  ACL: initiator-address + initiator-name

Proxmox pve_1 / byte-me:
  iSCSI Storage: iscsi-cleopatra
  LVM VG: vg_vmstore
  Proxmox VM Storage: lvm-cleopatra
  Shared: ja
  Content: images,rootdir