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.