Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
virtualisierung:proxmox_kvm_und_lxc:proxmox_debian_als_iscsi_server_verwenden [2017/09/03 17:01] boospyvirtualisierung:proxmox_kvm_und_lxc:proxmox_debian_als_iscsi_server_verwenden [2019/03/09 23:28] (aktuell) boospy
Zeile 1: Zeile 1:
 ====== Proxmox Debian als ISCSI Server verwenden ====== ====== Proxmox Debian als ISCSI Server verwenden ======
  
-__**Systemannahme:**__ Debian 9+__**Systemannahme:**__ Debian9 mit ZFS / Proxmox5 mit ZFS
  
 OpenSCSI macht immer wieder Probleme, die Konfiguration ist meinesachtens kompliziert und oft verwirrend. Die Lösung bietet  OpenSCSI macht immer wieder Probleme, die Konfiguration ist meinesachtens kompliziert und oft verwirrend. Die Lösung bietet 
Zeile 10: Zeile 10:
 </code> </code>
  
 +===== Erstellen des Targets =====
 +Um nun eine ISCSI-Freigabe auf unserem Server zu bekommen erstellen wir zunächst ein Zvol. 
 +<code>
 +zfs create -V 50gb v-machines/testvm.deepdoc.at
 +</code>
 +Damit wir uns später auch noch auskennen, nehmen wir als zvolname gleich den FQDN unserer VM wo wir den Speicher verwenden wollen.
 +Dieses Zvol ist dann auch wie wenn man es direkt verwenden würde unsere virtuelle Festplatte. Oder was auch immer. Hat man das Zvol geht es an unsere Cli. Um nun mit der Konfuration zu starten, geben wir den Befehl ''targetcli'' im Terminal ein. Mittels ''ls'' sieht man die Baumstruktur. Diese ist auch als solche zu behandeln. Man kann mit den default Linuxbefehlen darin navigieren. ''help'' zeigt die Hilfe, mittels ''cd'' kann man mit Pfeiltasten navigieren, und mit ''saveconfig'' wird gespeichert. 
 +
 +Das ganze sieht nun so aus:
 +<code python>
 +/> ls
 +o- / ..................................................................................................... [...]
 +  o- backstores .......................................................................................... [...]
 +  | o- block .............................................................................. [Storage Objects: 0]
 +  | o- fileio ............................................................................. [Storage Objects: 0]
 +  | o- pscsi .............................................................................. [Storage Objects: 0]
 +  | o- ramdisk ............................................................................ [Storage Objects: 0]
 +  o- iscsi ........................................................................................ [Targets: 0]
 +  o- loopback ..................................................................................... [Targets: 0]
 +  o- sbp .......................................................................................... [Targets: 0]
 +  o- vhost ........................................................................................ [Targets: 0]
 +</code>
 +
 +==== In der Targetcli angekommen ====
 +<code>
 +cd /backstores/block/
 +/backstores/block> create name=testvm.deepdoc.at dev=/dev/zvol/v-machines/testvm.deepdoc.at
 +</code>
 +Mit ''ls'' können wir zwischendurch immer unsere Angaben ansehen:
 +<code>
 +/backstores/block> ls
 +o- block .................................................................................. [Storage Objects: 1]
 +  o- testvm.deepdoc.at ............... [/dev/zvol/v-machines/testvm.deepdoc.at (50.0GiB) write-thru deactivated]
 +</code>
 +Nun weiter mit der Config: 
 +<code>
 +cd /iscsi/
 +# wir können hier zuerst nur "create" ausführe, das legt automatisch einen Namen mit serial an. Danache löschen wir den wieder und legen unseren eigenen an, mit dem Hinweis auf die VM.
 +/iscsi/> create wwn=iqn.2003-01.org.linux-iscsi.testvm.deepdoc.at:sn.8217a0cccfbd
 +</code>
 +Das ganze leght auch das Portal mit an. 
 +<code>
 +/iscsi> ls
 +o- iscsi .......................................................................................... [Targets: 1]
 +  o- iqn.2003-01.org.linux-iscsi.testvm.deepdoc.at:sn.8217a0cccfbd ................................... [TPGs: 1]
 +    o- tpg1 ............................................................................. [no-gen-acls, no-auth]
 +      o- acls ........................................................................................ [ACLs: 0]
 +      o- luns ........................................................................................ [LUNs: 0]
 +      o- portals .................................................................................. [Portals: 1]
 +        o- 0.0.0.0:3260 ................................................................................... [OK]
 +</code>
 +Hier wird angegeben auf welcher IP-Adresse des Servers das Target freigegeben wird. Bei nur einer IP-Adresse wird diese standardmäßig ausgewählt, ansonsten kann sie explizit angegeben werden. Der Port kann ebenso angepasst werden.
 +<code>
 +/iscsi> cd iqn.2003-01.org.linux-iscsi.testvm.deepdoc.at:sn.8217a0cccfbd/tpg1/portals/
 +/iscsi/iqn.20.../tpg1/portals> delete ip_address=0.0.0.0 ip_port=3260
 +/iscsi/iqn.20.../tpg1/portals> create ip_address=2001:470:1e2e:537:ec4:7afe:fefa:c839
 +</code>
 +==== Konfigurieren der LUN's ====
 +  * Eine LUN bezeichnet eine Logical Unit (LU).
 +  * Oft wird aber auch der Begriff Logical Unit Number verwendet.
 +  * Sie wird zur Zuordnung für die Ansteuerung von Geräten im SCSI-Bus verwendet.
 +  * Es können je Target ein oder mehrere LUNs bereitgestellt werden.
 +
 +<code>
 +cd  /iscsi/iqn.2003-01.org.linux-iscsi.testvm.deepdoc.at:sn.8217a0cccfbd/tpg1/luns
 +/iscsi/iqn.20...fbd/tpg1/luns> create /backstores/block/testvm.deepdoc.at
 +</code>
 +==== ACL's setzen ====
 +Hiermit wird gesteuert auf welche Interfaces ein Initiator zugreifen darf. Um hier auch den richtigen Namen zu verwenden, sieht man sich auf dem Client (einer Proxmoxnode) die Konfig an. ''cat /etc/iscsi/initiatorname.iscsi'' Den Namen dort kann man verwenden oder abändern. Nach dem Ändern muss der Client neu gestartet werden.
 +<code>
 +systemctl restart iscsid.service
 +</code>
 +Dies gilt auch für die Änderung via Webmin. 
 +
 +Man kann an dieser Stelle natürlich auch mehr als eine ACL hinzufügen. 
 +<code>
 +cd ../acls/
 +/iscsi/iqn.20...fbd/tpg1/acls> create iqn.1993-08.org.debian:node01.deepdoc.at
 +/iscsi/iqn.20...fbd/tpg1/acls> create iqn.1993-08.org.debian:node02.deepdoc.at
 +</code>
 +Usere Fertig Config sieht nun so aus:
 +<code python>
 +o- / ..................................................................................................... [...]
 +  o- backstores .......................................................................................... [...]
 +  | o- block .............................................................................. [Storage Objects: 1]
 +  | | o- testvm.deepdoc.at ............. [/dev/zvol/v-machines/testvm.deepdoc.at (50.0GiB) write-thru activated]
 +  | o- fileio ............................................................................. [Storage Objects: 0]
 +  | o- pscsi .............................................................................. [Storage Objects: 0]
 +  | o- ramdisk ............................................................................ [Storage Objects: 0]
 +  o- iscsi ........................................................................................ [Targets: 1]
 +  | o- iqn.2003-01.org.linux-iscsi.testvm.deepdoc.at:sn.8217a0cccfbd ................................. [TPGs: 1]
 +  |   o- tpg1 ........................................................................... [no-gen-acls, no-auth]
 +  |     o- acls ...................................................................................... [ACLs: 2]
 +  |     | o- iqn.1993-08.org.debian:node01.deepdoc.at ............................................ [Mapped LUNs: 1]
 +  |     | | o- mapped_lun0 ................................................. [lun0 block/testvm.deepdoc.at (rw)]
 +  |     | o- iqn.1993-08.org.debian:node02.deepdoc.at ........................................... [Mapped LUNs: 1]
 +  |       o- mapped_lun0 ................................................. [lun0 block/testvm.deepdoc.at (rw)]
 +  |     o- luns ...................................................................................... [LUNs: 1]
 +  |     | o- lun0 ........................... [block/testvm.deepdoc.at (/dev/zvol/v-machines/testvm.deepdoc.at)]
 +  |     o- portals ................................................................................ [Portals: 1]
 +  |       o- [2001:470:1e2e:537:ec4:7afe:fefa:c839]:3260 .................................................. [OK]
 +  o- loopback ..................................................................................... [Targets: 0]
 +  o- sbp .......................................................................................... [Targets: 0]
 +  o- vhost......................................................................................... [Targets: 0]
 +</code>
 +===== Einhängen des Targets in Proxmox =====
 +Das Einhängen des Targets erfolgt über das Webinterface und wird hier nicht weiter behandelt. 
 +
 +Sehrwohl aber das Aushängen. Deaktivert man ein ISCSI-Target oder löscht es von PVE, dann ist es zwar dort nicht mehr verfügbar, aber am Host definitv noch eingehängt. Man muss also die Verbindung trennen, und wenn es nach dem nächsten Neustart des Dienstes oder des Hosts keine neuen Verbindungsversuche geben soll, auch das Target am PVE-Client löschen. 
 +Hierfür gibt es einen [[https://bugzilla.proxmox.com/show_bug.cgi?id=288|Bugbericht]], der von PVE aber nicht also solcher angerkannt wird. Laut PVE ist das Aushängen von Freigaben immer Aufgabe des Admins, man kann nicht abschätzen ob das Target nun auch wirklich gelöscht werden soll... Meines Achtens sollte das aber schon der Fall sein. 
 +
 +**Wie geht man also vor? (Zitat vom Bugbericht)** \\
 +
 +> What sould be down when a user removes an iscsi target:
 +> 1) iscsiadm -m node -T <target> -u
 +> 2) iscsiadm -m node -T <target> -o delete
 +> 3) if /etc/iscsi/send_targets/initiator/ which target belongs to is empty
 +>         rm -rf /etc/iscsi/send_targets/initiator/
 +> 4) remove from pve