Proxmox ISCSI Anbindung: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 2: Zeile 2:
  
 
== Einleitung ==
 
== Einleitung ==
Diese Anleitung beschreibt die vollständige Einrichtung eines iSCSI-Servers mit ZFS-Backend unter Debian 12 mithilfe von LIO (Linux-IO Target) sowie die Integration in Proxmox VE als "ZFS over iSCSI"-Speicher.
+
Diese Anleitung beschreibt die Einrichtung eines iSCSI-Servers mit ZFS unter Debian 12 sowie die Anbindung in Proxmox VE per "ZFS over iSCSI" mit dem LIO-Target-System.
  
 
== Repository vorbereiten (contrib aktivieren) ==
 
== Repository vorbereiten (contrib aktivieren) ==
Zeile 10: Zeile 10:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Füge contrib zu den Hauptzeilen hinzu:
+
Füge contrib zu den relevanten Zeilen hinzu:
 
<syntaxhighlight>
 
<syntaxhighlight>
 
deb http://deb.debian.org/debian bookworm main contrib
 
deb http://deb.debian.org/debian bookworm main contrib
Zeile 26: Zeile 26:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== ZFS-Pool und zvol erstellen ==
+
== ZFS-Pool erstellen ==
Erstelle einen ZFS-Pool auf einer freien Partition oder Disk:
+
Erstelle einen ZFS-Pool auf einer freien Disk oder Partition:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
zpool create pool1 /dev/vdb
 
zpool create pool1 /dev/vdb
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Erzeuge ein zvol (blockbasiertes Volume):
+
== iSCSI-Target in LIO anlegen ==
<syntaxhighlight lang="bash">
+
Starte die LIO-Konfiguration:
zfs create -V 10G pool1/vol1
 
</syntaxhighlight>
 
 
 
== iSCSI-Target mit LIO einrichten ==
 
Starte die Konfiguration:
 
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
targetcli
 
targetcli
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Backstore aus dem zvol erstellen:
+
Lege das iSCSI-Target an:
<syntaxhighlight>
 
cd /backstores/block
 
create zfsvol /dev/zvol/pool1/vol1
 
</syntaxhighlight>
 
 
 
iSCSI-Target erstellen:
 
 
<syntaxhighlight>
 
<syntaxhighlight>
 
cd /iscsi
 
cd /iscsi
 
create iqn.2025-07.net.example:storage
 
create iqn.2025-07.net.example:storage
 +
exit
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Backstore als LUN zuweisen:
+
== ACL für Proxmox-Initiatoren anlegen ==
<syntaxhighlight>
+
Proxmox verwendet iSCSI-Initiatornamen, die freigegeben werden müssen. Ermittle den Initiatornamen auf jedem Node:
cd /iscsi/iqn.2025-07.net.example:storage/tpg1/luns
+
 
create /backstores/block/zfsvol
+
<syntaxhighlight lang="bash">
 +
cat /etc/iscsi/initiatorname.iscsi
 
</syntaxhighlight>
 
</syntaxhighlight>
  
ACL für Proxmox-Initiator erstellen:
+
Erstelle für jeden Node einen passenden ACL-Eintrag:
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang="bash">
 +
targetcli
 
cd /iscsi/iqn.2025-07.net.example:storage/tpg1/acls
 
cd /iscsi/iqn.2025-07.net.example:storage/tpg1/acls
create iqn.2025-07.net.proxmox:initiator
+
create iqn.1993-08.org.debian:01:pmx1
</syntaxhighlight>
+
create iqn.1993-08.org.debian:01:pmx2
 
+
create iqn.1993-08.org.debian:01:pmx3
TargetCLI verlassen:
 
<syntaxhighlight>
 
 
exit
 
exit
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
== SSH-Schlüssel pro Proxmox-Node für ZFS-Zugriff ==
 
== SSH-Schlüssel pro Proxmox-Node für ZFS-Zugriff ==
 +
Jeder Proxmox-Knoten benötigt einen eigenen SSH-Schlüssel, um mit dem ZFS-Server (10.0.10.235) kommunizieren zu können.
  
Jeder Proxmox-Knoten benötigt einen eigenen SSH-Schlüssel, um unabhängig mit dem ZFS-Server (10.0.10.235) kommunizieren zu können. Diese Methode ist sicher, Proxmox-kompatibel und erlaubt eine saubere Trennung der Zugriffe.
+
Auf jedem Node:
 
 
=== Auf einer Proxmox-Node einen eigenen Schlüssel erzeugen ===
 
 
 
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
mkdir -p /etc/pve/priv/zfs
 
mkdir -p /etc/pve/priv/zfs
Zeile 83: Zeile 72:
 
ssh-copy-id -i /etc/pve/priv/zfs/10.0.10.235_id_rsa.pub root@10.0.10.235
 
ssh-copy-id -i /etc/pve/priv/zfs/10.0.10.235_id_rsa.pub root@10.0.10.235
 
</syntaxhighlight>
 
</syntaxhighlight>
 
=== Hinweise ===
 
* Die Datei muss exakt auf jedem Node liegen unter:
 
  /etc/pve/priv/zfs/10.0.10.235_id_rsa
 
  
 
== Proxmox: Speicher hinzufügen ==
 
== Proxmox: Speicher hinzufügen ==
 
 
In der Proxmox-Oberfläche:   
 
In der Proxmox-Oberfläche:   
 
Datacenter → Storage → Add → ZFS over iSCSI
 
Datacenter → Storage → Add → ZFS over iSCSI
Zeile 105: Zeile 89:
  
 
Hinweise:
 
Hinweise:
* Der Eintrag bei "Target Portal Group" muss dem tatsächlichen LIO-Namen entsprechen, z. B. tpg1 – nicht nur eine Zahl
+
* Target Portal Group muss exakt tpgX heißen – z. B. tpg1
* Eine Blocksize von mindestens 8k wird empfohlen, um Fragmentierung und Speicherverlust zu vermeiden
+
* Proxmox erstellt zvols und LUNs automatisch keine manuelle Konfiguration nötig
* Thin Provisioning spart Platz, sollte aber nur aktiviert werden, wenn der Pool dafür ausgelegt ist
+
* Blocksize 8k wird empfohlen zur Vermeidung von Overhead
  
 
== Testen ==
 
== Testen ==
Erstelle eine neue VM oder Container auf dem ZFS-iSCSI-Speicher.   
+
Erstelle eine neue VM in Proxmox und wähle den ZFS-iSCSI-Speicher aus.   
Verifiziere Snapshots, Clones und Performance.
+
Proxmox legt dabei automatisch ein zvol an und bindet es per LIO ein.
  
 
== Fehlerbehebung ==
 
== Fehlerbehebung ==
 
* systemctl status rtslib-fb-targetctl
 
* systemctl status rtslib-fb-targetctl
 
* targetcli ls
 
* targetcli ls
* Port 3260 erreichbar? (Firewall)
+
* Firewall prüfen: Port 3260 TCP muss erreichbar sein
 +
* Bei „Authorization failure(514)“ sicherstellen, dass der Initiator als ACL in LIO eingetragen ist

Version vom 8. Juli 2025, 16:46 Uhr

Einrichtung von ZFS over iSCSI in Proxmox mit LIO auf Debian

Einleitung

Diese Anleitung beschreibt die Einrichtung eines iSCSI-Servers mit ZFS unter Debian 12 sowie die Anbindung in Proxmox VE per "ZFS over iSCSI" mit dem LIO-Target-System.

Repository vorbereiten (contrib aktivieren)

Bearbeite die Paketquellen:

nano /etc/apt/sources.list

Füge contrib zu den relevanten Zeilen hinzu:

deb http://deb.debian.org/debian bookworm main contrib

Aktualisiere die Paketliste:

apt update

ZFS und LIO installieren

apt install zfsutils-linux targetcli-fb
reboot

ZFS-Pool erstellen

Erstelle einen ZFS-Pool auf einer freien Disk oder Partition:

zpool create pool1 /dev/vdb

iSCSI-Target in LIO anlegen

Starte die LIO-Konfiguration:

targetcli

Lege das iSCSI-Target an:

cd /iscsi
create iqn.2025-07.net.example:storage
exit

ACL für Proxmox-Initiatoren anlegen

Proxmox verwendet iSCSI-Initiatornamen, die freigegeben werden müssen. Ermittle den Initiatornamen auf jedem Node:

cat /etc/iscsi/initiatorname.iscsi

Erstelle für jeden Node einen passenden ACL-Eintrag:

targetcli
cd /iscsi/iqn.2025-07.net.example:storage/tpg1/acls
create iqn.1993-08.org.debian:01:pmx1
create iqn.1993-08.org.debian:01:pmx2
create iqn.1993-08.org.debian:01:pmx3
exit

SSH-Schlüssel pro Proxmox-Node für ZFS-Zugriff

Jeder Proxmox-Knoten benötigt einen eigenen SSH-Schlüssel, um mit dem ZFS-Server (10.0.10.235) kommunizieren zu können.

Auf jedem Node:

mkdir -p /etc/pve/priv/zfs
ssh-keygen -f /etc/pve/priv/zfs/10.0.10.235_id_rsa
ssh-copy-id -i /etc/pve/priv/zfs/10.0.10.235_id_rsa.pub root@10.0.10.235

Proxmox: Speicher hinzufügen

In der Proxmox-Oberfläche: Datacenter → Storage → Add → ZFS over iSCSI

Einstellungen:

  • ID: zfs-iscsi
  • Portal: 10.0.10.235
  • Pool: pool1
  • Target: iqn.2025-07.net.example:storage
  • Target Portal Group: tpg1
  • iSCSI Provider: LIO
  • Blocksize: 8k
  • Write Cache: aktiviert
  • Thin Provisioning: optional

Hinweise:

  • Target Portal Group muss exakt tpgX heißen – z. B. tpg1
  • Proxmox erstellt zvols und LUNs automatisch – keine manuelle Konfiguration nötig
  • Blocksize 8k wird empfohlen zur Vermeidung von Overhead

Testen

Erstelle eine neue VM in Proxmox und wähle den ZFS-iSCSI-Speicher aus. Proxmox legt dabei automatisch ein zvol an und bindet es per LIO ein.

Fehlerbehebung

  • systemctl status rtslib-fb-targetctl
  • targetcli ls
  • Firewall prüfen: Port 3260 TCP muss erreichbar sein
  • Bei „Authorization failure(514)“ sicherstellen, dass der Initiator als ACL in LIO eingetragen ist