Wie man einen iSCSI-Storage Server auf Ubuntu 18.04 LTS einrichtet

iSCSI steht für (Internet Small Computer System Interface) und ist ein SAN-Protokoll (Storage Area Network), das für die Online-Speicherverwaltung verwendet werden kann. Es handelt sich um einen IP-basierten Speichernetzwerkstandard, der durch die Übertragung von SCSI-Befehlen über ein TCP/IP-Netzwerk den Zugriff auf Speichergeräte auf Blockebene ermöglicht.

iSCSI besteht aus zwei Komponenten: iSCSI-Target und iSCSI-Initiator. iSCSI-Target ist ein Dienst auf dem iSCSI-Server, der Zugriff auf den gemeinsamen Speicher bietet, und iSCSI-Initiator ist ein iSCSI-Client, der eine Verbindung zum Target herstellt und auf den gemeinsamen Speicher zugreift.

In diesem Tutorial zeigen wir Ihnen, wie Sie das iSCSI-Ziel und den iSCSI-Initiator auf dem Ubuntu 18.04-Server einrichten.

Anforderungen

  • Ein neuer Ubuntu 18.04-Server für iSCSI-Ziel mit 2 GB externer HDD.
  • Ein neuer Ubuntu 18.04-Server für den iSCSI-Initiator.
  • Eine statische IP-Adresse 192.168.0.103 ist auf dem iSCSI-Ziel und 192.168.0.102 auf dem iSCSI-Initiator konfiguriert.
  • Ein Root-Passwort ist auf beiden Servern konfiguriert.

Erste Schritte

Bevor Sie beginnen, müssen Sie beide Server mit der neuesten Version aktualisieren. Sie können sie aktualisieren, indem Sie den folgenden Befehl auf beiden $

apt-get update -y
 apt-get upgrade -y

Sobald beide Server aktualisiert sind, starten Sie sie neu, um die Änderungen zu übernehmen.

iSCSI-Ziel installieren

Zunächst müssen Sie das Target Framework (TGT)-Paket auf dem iSCSI-Zielserver installieren. Sie können es mit dem folgenden Befehl installieren:

apt-get install tgt -y

Nachdem TGT installiert wurde, überprüfen Sie den Status von TGT, indem Sie den folgenden Befehl ausführen:

systemctl status tgt

Sie sollten die folgende Ausgabe sehen:

? tgt.service - (i)SCSI target daemon
   Loaded: loaded (/lib/systemd/system/tgt.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-11-08 07:40:28 UTC; 27s ago
     Docs: man:tgtd(8)
 Main PID: 2343 (tgtd)
   Status: "Starting event loop..."
    Tasks: 1
   CGroup: /system.slice/tgt.service
           ??2343 /usr/sbin/tgtd -f

Nov 08 07:40:28 ubuntu systemd[1]: Starting (i)SCSI target daemon...
Nov 08 07:40:28 ubuntu tgtd[2343]: tgtd: iser_ib_init(3431) Failed to initialize RDMA; load kernel modules?
Nov 08 07:40:28 ubuntu tgtd[2343]: tgtd: work_timer_start(146) use timer_fd based scheduler
Nov 08 07:40:28 ubuntu tgtd[2343]: tgtd: bs_init(387) use signalfd notification
Nov 08 07:40:28 ubuntu systemd[1]: Started (i)SCSI target daemon.

Danach können Sie mit dem nächsten Schritt fortfahren.

iSCSI-Ziel konfigurieren

Als nächstes müssen Sie ein LUN-Gerät (Logical Unit Number) auf Ihrem iSCSI-Server erstellen. LUN ist ein Backend-Speichergerät, mit dem der Initiator eine Verbindung herstellt und das er später verwenden wird.

Sie können es tun, indem Sie die Konfigurationsdatei im Verzeichnis /etc/tgt/conf.d erstellen:

nano /etc/tgt/conf.d/iscsi.conf

Fügen Sie die folgenden Zeilen hinzu:

<target iqn.2019-11.example.com:lun1>
     # Provided device as an iSCSI target
     backing-store /dev/sdb1                             
     initiator-address 192.168.0.102 
    incominguser iscsi-user password
     outgoinguser iscsi-target secretpass
</target>

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Starten Sie dann den TGT-Dienst neu, um die Konfigurationsänderungen zu übernehmen:

systemctl restart tgt

Hier ist eine kurze Erklärung jedes Parameters:

target : Dies ist der Name des jeweiligen Ziels.

backing-store : Diese Option gibt die Speicherplatte an, die vom Initiator verwendet wird.

Initiator-Adresse : Dies ist die IP-Adresse des Initiators.

incominguser : Dies ist der eingehende Benutzername/Passwort zur Sicherung der LUN.

outgoinguser : Dies ist der ausgehende Benutzername/Passwort für die gegenseitige CHAP-Authentifizierung.

Nach dem Neustart des TGT-Dienstes überprüfen Sie den iSCSI-Zielserver mit dem folgenden Befehl:

tgtadm --mode target --op show

Sie sollten sehen, dass das iSCSI-Ziel zur Verfügung gestellt wird:

Target 1: iqn.2019-11.example.com:lun1
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            SWP: No
            Thin-provisioning: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 2146 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            SWP: No
            Thin-provisioning: No
            Backing store type: rdwr
            Backing store path: /dev/sdb1
            Backing store flags: 
    Account information:
        iscsi-user
        iscsi-target (outgoing)
    ACL information:
        192.168.0.102

Installieren und Konfigurieren des iSCSI-Initiators

Als nächstes müssen Sie das iSCSI-Initiatorpaket auf dem iSCSI-Initiator-Server installieren. Sie können es mit dem folgenden Befehl installieren:

apt-get install open-iscsi -y

Sobald die Installation abgeschlossen ist, führen Sie die Zielerkennung gegen unseren iSCSI-Zielserver aus, um die gemeinsam genutzten Ziele herauszufinden.

iscsiadm -m discovery -t st -p 192.168.0.103

Sie sollten das verfügbare Ziel in der folgenden Ausgabe sehen:

192.168.0.103:3260,1 iqn.2019-11.example.com:lun1

Der obige Befehl erzeugt auch zwei Dateien mit LUN-Informationen. Sie können sie mit dem folgenden Befehl sehen:

ls -l /etc/iscsi/nodes/iqn.2019-11.example.com\:lun1/192.168.0.103\,3260\,1/ /etc/iscsi/send_targets/192.168.0.103,3260/

Sie sollten die folgenden Dateien sehen:

/etc/iscsi/nodes/iqn.2019-11.example.com:lun1/192.168.0.103,3260,1/:
total 4
-rw------- 1 root root 1840 Nov  8 13:17 default

/etc/iscsi/send_targets/192.168.0.103,3260/:
total 8
lrwxrwxrwx 1 root root  66 Nov  8 13:17 iqn.2019-11.example.com:lun1,192.168.0.103,3260,1,default -> /etc/iscsi/nodes/iqn.2019-11.example.com:lun1/192.168.0.103,3260,1
-rw------- 1 root root 547 Nov  8 13:17 st_config

Als nächstes müssen Sie die Standarddatei bearbeiten und die CHAP-Informationen definieren, die Sie auf dem iSCSI-Ziel konfiguriert haben, um vom iSCSI-Initiator aus auf das iSCSI-Ziel zuzugreifen.

nano /etc/iscsi/nodes/iqn.2019-11.example.com\:lun1/192.168.0.103\,3260\,1/default

Fügen Sie die folgenden Zeilen hinzu / ändern Sie sie:

node.session.auth.authmethod = CHAP  
node.session.auth.username = iscsi-user
node.session.auth.password = password          
node.session.auth.username_in = iscsi-target
node.session.auth.password_in = secretpass         
node.startup = automatic

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Starten Sie dann den iSCSI-Initiatordienst neu, um die Konfigurationsänderungen anzuwenden:

systemctl restart open-iscsi

Sie sollten die folgende Ausgabe sehen:

 * Unmounting iscsi-backed filesystems                                                                                                  [ OK ] 
 * Disconnecting iSCSI targets                                                                                                                 iscsiadm: No matching sessions found
                                                                                                                                        [ OK ]
 * Stopping iSCSI initiator service                                                                                                     [ OK ] 
 * Starting iSCSI initiator service iscsid                                                                                              [ OK ] 
 * Setting up iSCSI targets                                                                                                                    
Logging in to [iface: default, target: iqn.2019-11.example.com:lun1, portal: 192.168.0.103,3260] (multiple)
Login to [iface: default, target: iqn.2019-11.example.com:lun1, portal: 192.168.0.103,3260] successful.
                                                                                                                                        [ OK ]
 * Mounting network filesystems                                                                                                         [ OK ] 

Sie können jetzt die vom iSCSI-Ziel freigegebene Speicherplatte mit dem folgenden Befehl überprüfen:

lsblk

Sie sollten sehen, dass die Speicherplatte nun dem Initiator als sdb zur Verfügung steht:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 465.8G  0 disk 
??sda1   8:1    0  93.1G  0 part /
??sda2   8:2    0     1K  0 part 
??sda5   8:5    0 186.3G  0 part /home
??sda6   8:6    0 181.6G  0 part /Data
??sda7   8:7    0   4.8G  0 part [SWAP]
sdb      8:16   0     2G  0 disk 

Sie können die iSCSI-Verbindungen auch mit dem folgenden Befehl überprüfen:

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

Sie sollten die folgende Ausgabe erhalten:

Session: 1
    Connection: 0
        Initiator: iqn.1993-08.org.debian:01:2e1e2383de41
        IP Address: 192.168.0.102

Als Nächstes müssen Sie ein Dateisystem auf diesem gemeinsam genutzten Gerät (sdb) erstellen und es einhängen, um dieses Gerät benutzbar zu machen.

Erstellen Sie zunächst ein Dateisystem auf dem gemeinsam genutzten Gerät (sdb) mit dem folgenden Befehl:

fdisk /dev/sdb

Sie sollten die folgende Ausgabe sehen:

Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x06091fe8.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-4194303, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-4194303, default 4194303):

Created a new partition 1 of type 'Linux' and of size 2 GiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Als nächstes formatieren Sie diese Partition mit dem folgenden Befehl:

mkfs.ext4 /dev/sdb1

Als nächstes mounten Sie diese Partition im Verzeichnis /mnt mit dem folgenden Befehl:

mount /dev/sdb1 /mnt

Jetzt können Sie das angeschlossene Gerät mit dem folgenden Befehl überprüfen:

df -h

Sie sollten die folgende Ausgabe sehen:

Filesystem      Size  Used Avail Use% Mounted on
udev            1.9G  4.0K  1.9G   1% /dev
tmpfs           384M  1.2M  383M   1% /run
/dev/sda1        92G   36G   51G  42% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
none            5.0M     0  5.0M   0% /run/lock
none            1.9G   54M  1.9G   3% /run/shm
none            100M   48K  100M   1% /run/user
/dev/sda5       184G   96G   79G  55% /home
/dev/sda6       179G   32G  138G  19% /Data
/dev/sdb1       2.0G  3.0M  1.9G   1% /mnt

Herzlichen Glückwunsch! Sie haben den iSCSI-Zielserver erfolgreich installiert und über den iSCSI-Initiator verbunden. Sie können dieses gemeinsam genutzte iSCSI-Gerät jetzt als normal angeschlossene Festplatte verwenden.

Das könnte Dich auch interessieren …