# 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

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

---

## 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

- iSCSI nur über das dedizierte Storage-Netz betreiben.
- Port `3260/tcp` nur für autorisierte Proxmox-Nodes erlauben.
- Pro Node einen eigenen Initiator-IQN verwenden.
- Auf dem tgt-Target sowohl `initiator-address` als auch `initiator-name` setzen.
- Mutual CHAP verwenden.
- `incominguser` und `outgoinguser` mit unterschiedlichen Secrets konfigurieren.
- Keine echten CHAP-Secrets in BookStack dokumentieren.
- Für mehrere Nodes klassisches `lvm` verwenden, nicht `lvmthin`.

---

## 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
```