Marco Burmeister

  private Homepage



internet Small Computer System Interface ( iSCSI ) - openSUSE 16

Das ist eine aktualisierte Version zu der Seite https://www.marco-burmeister.de/helferlein/de_linux_opensuse_iscsi.html , da ich damals viel mit YaST gearbeitet hatte und nun bei openSUSE 16 ich dann mehr von Hand Einstellungen vornehmen musste.

Das internet Small Computer System Interface (iSCSI) ermöglicht die Verwendung des SCSI-Protokolls über TCP.
Es ist damit möglich Festplatten, die auf einem Computer bzw. einer VM bereitgestellt wurden, einem anderen Computer bzw. VM im Netz via Netzwerk (TCP) bereitzustellen.
Diese Funktionalität kann im Rahmen von NAS Systemen verwendet werden, um Festplattenplatz im Netz bereitzustellen.
Im konkreten Fall hatte ich es genutzt, um von einer VM in einer virtualisierten Umgebung Platten für zwei andere VMs bereitzustellen, um dann von diesen beiden VMs auf den Festplattenplatz zugreifen zu können. Dieser Zugriff sollte gleichzeitig erfolgen. Dieses Szenario wird u.a. benötigt im Umfeld von Oracle RAC.

Bei VMware ESXi können virtuelle Festplatten auch mehreren VMs zugeteilt werden, die dann auch gleichzeitig darauf schreiben können. Aber die Virtualisierungslösung Proxmox beherrscht das Stand Februar 2024 noch nicht.
Wer unabhängig von einer VM-Lösung eine solche Technik benötigt, kann sie bei jeder VM-Virtualisierungslösung einsetzen.

In diesem Dokument geht es nur darum, wie eine Festplatte von einer VM für eine andere VM im Netz bereitgestellt werden kann.
Das ist die Beschreibung einer Implementationslösung, die nicht den Anspruch erhebt vollständig zu sein.

Diese Anleitung beschreibt, wie ich eine solche Lösung für einen eigenen Anwendungsfall im Homelab eingerichtet hatte.

Hinweis:
Für die Richtigkeit der Daten übernehme ich keine Gewähr!

Die Seite ist in die folgenden Bereiche eingeteilt:




top Allgemeine Hinweise

In diesem Abschnitt werde ich ein paar allgemeine Beschreibungen / Hinweise erfassen.

Target

Als Target wird in dem Umfeld der Quell-Server /-Rechner bezeichnet, welcher die Festplatten bereitstellt.

Initiator

Der Initiator ist dann der Client, der eine Festplatte vom Quell-Rechner auf dem lokalen System einbindet.

iSCSI-Benennungskonventionen

Ich habe in diesem Beispiel die folgende Namenskonvention für das iSCSI Target und den iSCSI Initiator gewählt. (Die Netzwerk-Domain muss in umgekehrter Reihenfolge aufgeschrieben werden - hier für die Anleitung dann die Domain "example.com".)
iSCSI Target = iqn.2024-02.com.example:mysrv1.iscsi1
iSCSI Initiator = iqn.2024-02.com.example:client1.myvm1.iscsi1
iSCSI Target =
iqn.2024-02.com.example:mysrv1.iscsi1
iSCSI Initiator =
iqn.2024-02.com.example:client1.myvm1.iscsi1

Die Namenskonvention kann auch unten im Link-Bereich nachgelesen werden.

top Vorarbeiten

Wir brauchen 2 VM mit installiertem openSUSE (bei mir Version 15.5). Die VM, die als iSCSI Target dienen soll, benötigt neben der Festplatte für das OS noch eine weitere Festplatte, welche dann via iSCSI an die verbliebene VM bereitgestellt werden wird.

Bezeichnung für diese Anleitung:

  1. VM1 ist die VMServer
  2. VM2 ist die VMClient

top iSCSI Target auf VMServer einrichten

Vorarbeiten

Zunächst muss für die Funktionalität iSCSI Target auf dem VMServer die notwendige Software installiert werden.
Ferner muss eine leere Festplatte vorhanden sein, die wir in den folgenden Schritten für die VMClient bereitstellen.
Auf dieser Festplatte muss bereits eine Partition erstellt worden sein. In diesem Beispiel gehen wir davon aus, dass wir eine Festplatte /dev/sdb mit einer Partition /dev/sdb1 haben.

Folgende Pakete müssen installiert werden:

Bevor wir mit der Einrichtung der Platten starten, müssen wir uns noch einen sprechenden Namen überlegen. Da ich die Arbeiten hier wegen einer Einrichtung von Oracle Clusterware für Oracle RAC durchführe, habe ich die erste Platte dann oraclu (=Oracle Cluster) genannt (Ziel von OCR und Co).

Einrichtung

Nun richten wir das iSCSI Target ein:
  1. Anmeldung als User root an das OS
  2. In dem Beispiel gehe ich davon aus, dass wir das Device /dev/sdb via iSCSI verwalten möchten
  3. Wir prüfen zunächst, ob wir unsere Platte, die wir mit iSCSI verwalten möchten, im OS sehen können:
    fdisk -l
  4. Client / Initiator:
    ACHTUNG: Auf den VMs, die später als Client / Initiator dienen sollen, muss die Software installiert werden. Wir brauchen dort open-iscsi. Dnach führen wir den folgenden Befehl aus, damit die die Kennung erhalten. Diese vergeben wir später hier auf dem Server in den ACLs für den Zufriff.
    Befehl als OS Benutzer root auf dem Client / Initiator ausführen:
    cat /etc/iscsi/initiatorname.iscsi
  5. Server / Target:
    Nun starten wir unser Hilfsprogramm zur Einrichtung der Platte, sodass sie der Client / Initiator später mounten kann. Die folgenden Schritte verbleiben auf diesem Server.
  6. Wir starten als OS Benutzer root:
    targetcli
  7. Wir sind nun im Tool targetcli und müssen ein paar Befehle ausführen, um unsere Platte /dev/sdb bekannt zu machen.
    Hier benötigen wir auch die IDs der iSCSI-Welt, die wir oben ermittelt hatten. Für dieses Beispiel:
    iSCSI Target = iqn.2024-02.com.example:mysrv1.iscsi1
    iSCSI Initiator = iqn.2024-02.com.example:client1.myvm1.iscsi1


    cd backstores/block
    create name=oraclu dev=/dev/sdb
    cd /iscsi
    create iqn.2024-02.com.example:mysrv1.iscsi1:oraclu
    cd iqn.2024-02.com.example:mysrv1.iscsi1:oraclu/tpg1/portals
    --optional der Create bei alten Versionen der Software
    create 0.0.0.0 3260
    cd ../luns
    create /backstores/block/oraclu
    cd ../acls
    create iqn.2024-02.com.example:client1.myvm1.iscsi1
    cd /
    saveconfig
    exit
  8. Als letzter Schritt der Einrichtung müssen wir noch alles so vorbereiten, dass jetzt und beim nächsten Systemstart die Festplatte im Netz sichtbar wird. Außerdem öffnen wir den Port in der Firewall.
    sudo systemctl enable --now targetcli
    sudo systemctl enable --now target

    sudo firewall-cmd --permanent --add-port=3260/tcp
    sudo firewall-cmd --reload
  9. Nun ist die erste Disk eingerichtet und für den angegeben Host freigegeben. Es können nun weiter Platte eingerichtet, falls sie vorbereitet sind und sie benötigt werden.
  10. Der iSCSI Server ist damit eingerichtet.

top iSCSI Initiator auf VMClient einrichten

Vorarbeiten

Das iSCSI Target muss auf der VM VMServer eingerichtet sein und die VM VMClient muss die VMServer via Netzwerk erreichen können.

Zunächst muss für die Funktionalität iSCSI Initiator auf der VM VMClient die notwendige Software installiert werden.

Folgende Pakete müssen installiert werden:

Einrichtung

Nun richten wir den iSCSI Initiator ein:
  1. Anmeldung als User root an das OS
  2. Wir starten den System-Dienst:
    systemctl enable --now iscsid
  3. Wir prüfen, ob die Initiator-ID noch der entspricht, die wir vorher auf dem Target definiert hatte:
    cat /etc/iscsi/initiatorname.iscsi
  4. Jetzt prüfen wir, was uns der Server freigegeben hat (IP-Adresse vom Target / Server muss hier angegeben werden):
    iscsiadm -m discovery -t sendtargets -p <IP-Adresse>

    Als Ergebnis erhalten wir dann für jede Festplatte, die via iSCSI Target freigegeben wurde eine Zeile.
  5. Nun werden wir uns anmelden:
    iscsiadm -m node -T iqn.2024-02.com.example:mysrv1.iscsi1:oraclu --login
  6. Befehle, wie lsblk und/oder fdisk -l zeigen nun die Disk
  7. Wir möchten beim nächsten Boot auch wieder Zugriff erhalten, weshalb wir ausführen:
    iscsiadm -m node -T iqn.2024-02.com.example:mysrv1.iscsi1:oraclu --op update -n node.startup -v automatic
  8. Der letzte Schritt der Einrichtung. Wir starten die System-Dienste:
    sudo systemctl enable iscsid
    sudo systemctl enable iscsi
  9. Der iSCSI Initiator ist eingerichtet. Via OS Befehl fdisk -l ist nun die Disk auf der VM VMClient zu sehen.

Nacharbeiten

Es ist nun auf der VM VMClient eine Festplatte /dev/sdb zu sehen, die kein Filesystem / Dateisystem hat.
Dieses Dateisystem muss nun im nächsten Schritt festgelegt werden. Ferner ist der Mount-Point festzulegen.
Das hängt allerdings davon ab, für welchen Zweck die Festplatte verwendet werden soll. Im Fall von Oracle RAC und ASM Disk erfolgt hier keine Erstellung eines Dateisystems. Stattdessen sollte hier an UDEV-Regeln gedacht werden, bevor es an die Partitionierung geht (siehe auch in den Links).


top Links zum Thema


Hinweis:
Für die Richtigkeit der Daten übernehme ich keine Gewähr!
Für den Inhalt von Internet-Seiten, auf die von dieser Seite verwiesen wird, übernehme ich keine Verantwortung!