Website-Suche

So richten Sie einen iSCSI-Server (Ziel) und einen Client (Initiator) unter Debian 9 ein


In der Welt der Rechenzentren sind Storage Area Networks (SAN) mit hoher Kapazität zum Mindeststandard geworden. Da Cloud-Anbieter und Virtualisierung auch weiterhin massive Auswirkungen auf die Technologiewelt haben, ist der Bedarf an noch mehr SAN-Speicherplatz offensichtlich geworden.

Die meiste SAN-Hardware besteht aus einem minimalistischen Controller (oder einer Reihe von Controllern) und einer großen Sammlung von Laufwerken mit hoher Kapazität, die alle für die Unterstützung hoher Datenverfügbarkeit und -integrität konfiguriert sind.

Viele dieser Spezialprodukte werden von namhaften Anbietern wie Netapp, Dell Equalogic, HP Storageworks oder EMC hergestellt und sind mit Preisen versehen, die sich nur die größten Unternehmen leisten können.

Realistisch betrachtet handelt es sich bei diesen Geräten lediglich um große Festplatten-Arrays mit einem Controller, der den Speicherplatz dieser Festplatten an vernetzte Clients weitergibt. Im Laufe der Jahre gab es viele Technologien, die diese Funktionalität oder eine ähnliche Funktionalität zu einem wesentlich günstigeren Preis bieten.

Die Debian GNU/Linux-Distribution bietet Pakete, die es einem Debian-System ermöglichen, den Zweck eines SAN-Speichergeräts auf Unternehmensebene zu einem Bruchteil der Kosten zu erfüllen! Dadurch kann jeder, vom einfachen Heimanwender bis zum großen Rechenzentrum, die Vorteile von SAN-Speicher nutzen, ohne ein Vermögen für eine proprietäre Lösung eines Anbieters ausgeben zu müssen.

In diesem Artikel wird untersucht, wie ein Debian 9 (Stretch)-System eingerichtet werden kann, um Speicherplatz mithilfe eines Systems bereitzustellen, das als Internet Small Computer Systems Interface oder kurz iSCSI bekannt ist. iSCSI ist ein auf Internet Protocol (IP) basierender Standard zur Bereitstellung von Blockspeicher (Festplattenspeicher) für andere Systeme. iSCSI funktioniert in einem Client-Server-Modell, verwendet jedoch unterschiedliche Namen, um den Client vom Server zu unterscheiden.

In der iSCSI-Terminologie wird der Server, der den „Festplattenspeicher bereitstellt, als iSCSI-„Ziel“ bezeichnet, und das System, das die Anforderung stellt Die Nutzung des Festplattenspeichers wird als iSCSI-„Initiator“ bezeichnet. Mit anderen Worten: Ein „Initiator“ fordert Blockspeicher von einem „Ziel“ an.

Umgebungseinrichtung

In dieser Anleitung wird eine grundlegende Einrichtung mit einem einfachen iSCSI-Server (Ziel) und einem Client (Initiator) erläutert unter Debian 9 (Stretch).


Debian iSCSI Target: 192.168.56.101/24
Storage: Contains two extra hard drives to be used as the storage in the iSCSI setup
Debian iSCSI Initiator: 192.168.56.102/24

Das Netzwerk kann wie folgt eingesehen werden:

Debian-iSCSI-Zielkonfiguration

In der iSCSI-Welt gilt das Ziel als der Host, der die vom Initiator zu verwendenden Speichergeräte enthält.

In diesem Artikel wird der Server mit der IP 192.168.56.101 als Ziel verwendet. Für diesen Abschnitt werden alle Konfigurationen auf diesem Host durchgeführt.

Der erste Schritt ist die Installation der notwendigen Pakete, damit das Debian-System iSCSI-Ziele bereitstellen kann. Dieses Softwarepaket ist als Target Framework (TGT) bekannt.

Das andere Element, das in diesem Handbuch verwendet wird, sind die Logical Volume Management (LVM)-Tools als Logical Volumes (LVs).) wird als Speicherunterstützung für das iSCSI-Ziel verwendet.

Beide Pakete können mit den folgenden Befehlen installiert werden.


apt-get update
apt-get install tgt lvm2

Sobald die Pakete installiert sind, wird LVM verwendet, um die Festplatten auf dem Ziel für die Verwendung als iSCSI LUN vorzubereiten. Der erste Befehl wird verwendet, um die Festplatten für die Aufnahme in ein LVM-Setup vorzubereiten. Stellen Sie sicher, dass Sie den Befehl je nach Bedarf für verschiedene Szenarien ändern!


lsblk (Only used to confirm disks to be used in the LVM setup)
pvcreate /dev/sd{b,c}

Sobald die Festplatten mit dem oben genannten „pvcreate“-Befehl vorbereitet wurden, ist es an der Zeit, aus diesen bestimmten Festplatten eine Volume-Gruppe zu erstellen. Die Volume-Gruppe wird benötigt, um die Logical Volumes zu erstellen, die später als iSCSI-Speicher fungieren.

Um eine Volume-Gruppe zu erstellen, ist der Befehl „vgcreate“ erforderlich.


vgcreate tecmint_iscsi /dev/sd{b,c}
vgs  (Only needed to confirm the creation of the volume group)

Beachten Sie in der Ausgabe oben, dass das System antwortet, dass die Volume-Gruppe erstellt wurde, aber es ist immer eine gute Idee, dies wie oben gezeigt mit dem Befehl „vgs“ noch einmal zu überprüfen. Die Kapazität dieser Volumengruppe beträgt nur 9,99 GB. Obwohl es sich hierbei um eine besonders kleine Volume-Gruppe handelt, wäre der Vorgang für Festplatten mit größerer Kapazität derselbe!

Der nächste Schritt ist die Erstellung des logischen Volumes, das als Festplatte für den iSCSI-Client (Initiator) fungiert. In diesem Beispiel wird die gesamte Volume-Gruppe verwendet, ist aber nicht notwendig.

Das logische Volume wird mit dem Befehl „lvcreate“ erstellt.


lvcreate -l 100%FREE tecmint_lun1 tecmint_iscsi
lvs  (Simply used to confirm the creation of the logical volume)

Der obige „lvcreate“-Befehl mag auf den ersten Blick etwas verwirrend sein, aber die Aufschlüsselung ist wie folgt:

  • lvcreate – Befehl zum Erstellen des logischen Volumes.
  • -l 100 % KOSTENLOS – Erstellen Sie das logische Volume unter Verwendung des gesamten freien Speicherplatzes der Volume-Gruppe.
  • -n tecmint_lun1 – Der Name des zu erstellenden logischen Volumes.
  • tecmint_iscsi – Der Name der Volume-Gruppe, in der das logische Volume erstellt werden soll.

Sobald das logische Volume erstellt wurde, ist es an der Zeit, die eigentliche LUN (Logical Unit Number) zu erstellen. Die LUN ist das Speichergerät, mit dem der Initiator eine Verbindung herstellt und später verwendet.

Das Erstellen einer LUN ist sehr einfach und erfordert nur wenige Schritte. Der erste Schritt ist die Erstellung der Konfigurationsdatei. Diese Datei befindet sich im Verzeichnis „/etc/tgt/conf.d“ und wird für diesen Artikel „TecMint_iscsi.conf“ genannt.

Um diese Datei zu erstellen, verwenden Sie einen Texteditor.


nano /etc/tgt/conf.d/TecMint_iscsi.conf

In dieser Datei werden alle notwendigen Konfigurationsinformationen für diese LUN konfiguriert. Es gibt viele Optionen, die in dieser Datei platziert werden können, aber im Moment reicht eine einfache LUN mit gegenseitigem Challenge Handshake Authentication Protocol (CHAP) aus konfiguriert werden.

Die LUN-Definition wird zwischen zwei „target“-Anweisungen stehen. Weitere Parameter, die in die Zielanweisung aufgenommen werden können, finden Sie in der Handbuchseite zur Datei „targets.conf“, indem Sie „man 5 targets.conf“ eingeben.


<target iqn.2018-02.linux-console.net:lun1>
     # Provided device as an iSCSI target
     backing-store /dev/mapper/tecmint_iscsi-tecmint_lun1
     initiator-address 192.168.56.102
    incominguser tecmint-iscsi-user password
     outgoinguser debian-iscsi-target secretpass
</target>

Oben ist einiges los. Eine kurze Erklärung dürfte für die meisten hilfreich sein.

  • Die erste Zeile beginnt mit der jeweiligen iSCSI LUN-Konfiguration. In diesem Fall die LUN mit der Bezeichnung „iqn.2018-02.linux-console.net:lun1“. Der Teil „iqn“ gibt an, dass es sich um einen iSCSI-qualifizierten Namen handelt. „2018-02“ ist eine willkürlich gewählte Datumskombination. „linux-console.net“ ist die Domäne, zu der diese bestimmte LUN gehört. Schließlich wird „lun1“ als Name für dieses bestimmte Ziel verwendet.
  • Die zweite Zeile oben veranschaulicht einen Kommentar. Kommentare können in den Zielkonfigurationsdateien vorhanden sein und müssen mit dem Symbol „#“ vorangestellt werden.
  • In der dritten Zeile befindet sich der tatsächliche Speicherplatz, der vom Initiator verwendet wird. In diesem Fall handelt es sich bei der Speichersicherung um das logische Volume, das zuvor im Handbuch erstellt wurde.
  • Die vierte Zeile ist die IP-Adresse, die vom Initiator erwartet wird. Dies ist zwar kein erforderliches Konfigurationselement, kann jedoch zur Erhöhung der Sicherheit beitragen.
  • Die fünfte Zeile ist der eingehende Benutzername/Passwort. Ähnlich wie die Initiatoradresse oben ist auch dieser Parameter nicht erforderlich, kann aber zur Sicherung der LUN beitragen. Da sich dieses Handbuch auch auf gegenseitiges iSCSI-CHAP bezieht, ist dieser Parameter erforderlich. Diese Zeile gibt den Benutzernamen und das Passwort an, die das Ziel vom Initiator erwartet, um eine Verbindung zu dieser LUN herzustellen.
  • Die sechste Zeile ist der Benutzername/das Passwort, das das Ziel dem Initiator zur Verfügung stellt, um die gegenseitige CHAP-Authentifizierung zu ermöglichen. Normalerweise ist dieser Parameter nicht erforderlich, aber dieser Artikel behandelt die gegenseitige CHAP-Authentifizierung, daher ist dieser Parameter erforderlich.
  • Die letzte Zeile ist die Schlussanweisung für die Zieldefinition. Achten Sie auf den schließenden Schrägstrich vor dem Keyword-Ziel!

Nachdem Sie die entsprechenden Konfigurationen für die LUN eingegeben haben, speichern Sie die Änderungen und verlassen Sie den Texteditor. Wenn Sie nano verwenden, drücken Sie zum Speichern Strg+O und dann zum Beenden von Nano Strg+x.

Sobald die Konfigurationsdatei erstellt wurde, sollte der tgt-Dienst neu gestartet werden, damit tgt die neuen Ziele und die zugehörige Konfiguration kennt.

Dies kann mit einem der folgenden Befehle erfolgen und ist abhängig vom verwendeten Init-System.


service tgt restart  (For sysv init systems)
systemctl restart tgt  (For systemd init systems)

Nach dem Neustart von tgt muss unbedingt überprüft werden, ob das iSCSI-Ziel gemäß der erstellten Konfigurationsdatei verfügbar gemacht wird.

Dies kann mit dem Befehl „tgtadm“ erfolgen.


tgtadm --mode target --op show   (This will show all targets)

Damit ist die Konfiguration des Ziels abgeschlossen. Im nächsten Abschnitt wird die Konfiguration des Initiators erläutert.

Debian-iSCSI-Initiator-Konfiguration

Der nächste Schritt bei der Verwendung des zuvor konfigurierten iSCSI-Ziels ist die Konfiguration des iSCSI-Initiators.

In diesem Artikel wird ein anderes Debian 9-System als Initiator verwendet, aber jedes System, das das iSCSI-Protokoll nutzen kann, kann sich mit dem zuvor konfigurierten Ziel verbinden; Dazu können Hypervisoren wie XenServer/ESXi oder andere Distributionen wie Red Hat, Debian oder Ubuntu gehören.

Der erste Schritt in diesem Prozess für diesen Debian-Initiator ist die Installation der richtigen Pakete für iSCSI.


apt-get update
apt-get install open-iscsi

Sobald apt die Konfiguration der open-iscsi-Pakete abgeschlossen hat, kann mit der Konfiguration des iSCSI-Initiators begonnen werden. Der erste Schritt besteht darin, mit dem Ziel zu kommunizieren, um die anfänglichen Konfigurationsinformationen für das Ziel vorzubereiten.


iscsiadm -m discovery -t st -p 192.168.56.101

Wenn dieser Befehl ausgeführt wird, antwortet er mit dem Namen der zuvor für diesen bestimmten Host konfigurierten lun. Der obige Befehl generiert außerdem zwei Dateien für die neu erkannten LUN-Informationen.

Jetzt müssen in der für diesen Knoten erstellten Datei die CHAP-Informationen konfiguriert werden, damit der Initiator tatsächlich auf dieses iSCSI-Ziel zugreifen kann.

Technisch gesehen könnten diese Informationen für das gesamte System als Ganzes eingerichtet werden, aber für den Fall, dass ein Host eine Verbindung zu verschiedenen LUNs mit unterschiedlichen Anmeldeinformationen herstellt, kann das Platzieren dieser Anmeldeinformationen in der spezifischen Knotenkonfigurationsdatei etwaige Probleme mildern.

Die Knotenkonfigurationsdatei befindet sich im Verzeichnis „/etc/iscsi/nodes/“ und verfügt über ein Verzeichnis pro LUN. Im Fall dieses Artikels (beachten Sie, dass sich die Pfade ändern, wenn Namen/IP-Adressen geändert werden).


/etc/iscsi/nodes/iqn.2018-02.linux-console.net\:lun1/192.168.56.101\,3260\,1/default

Um mit dieser Datei zu arbeiten, kann jeder Texteditor verwendet werden.


nano /etc/iscsi/nodes/iqn.2018-02.linux-console.net\:lun1/192.168.56.101\,3260\,1/default

In dieser Datei befinden sich mehrere bereits konfigurierte Optionen für das jeweilige Ziel, die während der vorherigen Ausführung des Befehls „iscsiadm“ ermittelt wurden.

Da dieses spezielle Debian-Ziel/Initiator-Setup gegenseitiges CHAP verwendet, müssen einige weitere Optionen geändert und zu dieser Datei hinzugefügt werden und dann eine Anmeldung beim iSCSI-Ziel erfolgen durchgeführt.

Die Änderungen an dieser Datei sind:


node.session.auth.authmethod = CHAP                    #Enable CHAP Authentication
node.session.auth.username = tecmint-iscsi-user        #Target to Initiator authentication
node.session.auth.password = password                  #Target to Initiator authentication
node.session.auth.username_in = debian-iscsi-target    #Initiator to Target authentication
node.session.auth.password_in = secretpass             #Initiator to Target authentication

Die oben genannten Optionen ermöglichen es diesem Ziel, sich beim Initiator zu authentifizieren, und ermöglichen dem Initiator, sich beim Ziel zu authentifizieren >.

In dieser speziellen Datei gibt es eine weitere Option, die je nach den Präferenzen des Administrators möglicherweise geändert werden muss: den Parameter „node.startup“.

Wenn Sie dieser Anleitung folgen, wird die Option „node.startup“ an dieser Stelle auf „manuell“ gesetzt. Dies ist möglicherweise nicht erwünscht. Wenn der Administrator möchte, dass das iSCSI-Ziel beim Systemstart verbunden wird, ändern Sie „manuell“ in „automatisch“ wie folgt:


node.startup = automatic

Sobald die oben genannten Änderungen vorgenommen wurden, speichern Sie die Datei und beenden Sie den Vorgang. Zu diesem Zeitpunkt muss der open-iscsi-initiator-Dienst neu gestartet werden, um diese neuen Änderungen zu lesen und eine Verbindung zum iSCSI-Ziel herzustellen.

Dies kann je nach verwendetem Init-System mit einem der folgenden Befehle erreicht werden.


service open-iscsi restart   (For sysv init systems)
systemctl restart open-iscsi (For systemd init systems)

Beachten Sie im grünen Feld oben, dass sich der iSCSI-Initiator beim Ziel anmelden konnte. Um weiter zu bestätigen, dass das iSCSI-Ziel tatsächlich für den Initiator verfügbar ist, können wir das System mithilfe von „lsblk auf zusätzliche verfügbare Festplattenlaufwerke überprüfen >'-Befehl und überprüfen Sie die Ausgabe auf zusätzliche Laufwerke.


lsblk

Der andere Befehl, der auf dem Initiator verwendet werden kann, um eine Verbindung zum Ziel zu bestätigen, ist „iscsiadm“ als solcher:


iscsiadm -m session

Der letzte Ort zum Bestätigen einer Verbindung wäre auf dem Ziel selbst, indem der Befehl „tgtadm“ verwendet wird, um alle iSCSI-Verbindungen aufzulisten.


tgtadm --mode conn --op show --tid 1

Ab diesem Zeitpunkt kann das neu angeschlossene iSCSI-Gerät wie jede normal angeschlossene Festplatte verwendet werden! Partitionierung, Dateisystemerstellung, Mounten und/oder dauerhaftes Mounten können alle normal gehandhabt werden.

Eine große Vorsichtsmaßnahme, die Sie bei iSCSI-Geräten beachten sollten, ist, dass Sie sicherstellen, dass das iSCSI-Ziel wichtige Dateisysteme enthält, die beim Booten des Initiators benötigt werden Verwenden Sie den Eintrag „_netdev“ in der Datei „/etc/fstab“, um sicherzustellen, dass das iSCSI-Gerät angeschlossen ist, bevor das System weiter bootet!