een iSCSI opslagserver opzetten op Ubuntu 18.04 LTS

iSCSI staat voor (Internet Small Computer System Interface) is een Storage Area Network (SAN) protocol dat gebruikt kan worden voor online opslagbeheer. Het is een op IP gebaseerde standaard voor opslagnetwerken die toegang op blokniveau biedt tot opslagapparatuur door SCSI commando’s over een TCP/IP netwerk te transporteren.

iSCSI bestaat uit twee componenten iSCSI target en iSCSI initiator. iSCSI target is een dienst op een iSCSI server die toegang biedt tot de gedeelde opslag en iSCSI initiator is een iSCSI client die verbinding maakt met het target en toegang krijgt tot de gedeelde opslag.

In deze handleiding laten we je zien hoe je iSCSI target en iSCSI initiator op Ubuntu 18.04 server kunt instellen.

Vereisten

  • Een verse Ubuntu 18.04 server voor iSCSI target met 2 GB externe HDD.
  • Een verse Ubuntu 18.04 server voor iSCSI initiator.
  • Een statisch IP adres 192.168.0.103 is ingesteld op iSCSI target en 192.168.0.102 is ingesteld op iSCSI initiator.
  • Op beide servers is een root wachtwoord ingesteld.

Aan de slag

Alvorens te beginnen moet je beide servers bijwerken met de nieuwste versie. Je kunt ze bijwerken door op beide $ het volgende commando uit te voeren

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

Zodra beide servers bijgewerkt zijn, herstart je ze om de veranderingen toe te passen.

Installeer iSCSI Target

Eerst moet je het Target Framework (TGT) pakket op de iSCSI doelserver installeren. Je kunt het installeren met het volgende commando:

apt-get install tgt -y

Als TGT geïnstalleerd is, controleer dan de status van TGT door het volgende commando uit te voeren:

systemctl status tgt

Je zou de volgende uitvoer moeten zien:

? 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.

Als je dat gedaan hebt, kun je verder gaan met de volgende stap.

Configureer iSCSI Target

Vervolgens moet je een LUN (Logical Unit Number) apparaat op je iSCSI server aanmaken. LUN is een achterliggend opslagapparaat waarmee de initiator later verbinding zal maken en gebruiken.

Je kunt dit doen door het configuratiebestand aan te maken in de /etc/tgt/conf.d directory:

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

Voeg de volgende regels toe:

<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>

Sla het bestand op en sluit het als je klaar bent. Herstart dan de TGT dienst om de configuratiewijzigingen toe te passen:

systemctl restart tgt

Hier volgt een korte uitleg van elke parameter:

target: Dit is de naam van het specifieke target.

backing-store: Deze optie specificeert de opslagschijf die door de initiator gebruikt zal worden.

initiator-adres: Dit is het IP adres van de initiator.

inkomende-gebruiker: Dit is de inkomende gebruikersnaam/wachtwoord om de LUN te beveiligen.

uitgaande-gebruiker: Dit is de uitgaande gebruikersnaam/wachtwoord voor wederzijdse CHAP authenticatie.

Controleer na het herstarten van de TGT dienst de iSCSI doelserver met het volgende commando:

tgtadm --mode target --op show

Je zou moeten zien dat het iSCSI target beschikbaar gemaakt wordt:

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

Installeer en configureer iSCSI Initiator

Vervolgens moet je het iSCSI initiator pakket op de iSCSI initiator server installeren. Je kunt het installeren met het volgende commando:

apt-get install open-iscsi -y

Als de installatie voltooid is, voer dan target discovery uit tegen onze iSCSI targetserver om de gedeelde targets te achterhalen.

iscsiadm -m discovery -t st -p 192.168.0.103

Je zou de beschikbare targets moeten zien in de volgende uitvoer:

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

Het bovenstaande commando genereert ook twee bestanden met LUN informatie. Je kunt ze zien met het volgende commando:

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/

Je zou de volgende bestanden moeten zien:

/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

Vervolgens moet je het standaard bestand bewerken en de CHAP informatie definiëren die je op het iSCSI target hebt ingesteld om het iSCSI target vanaf de iSCSI initiator te benaderen.

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

Voeg de volgende regels toe / verander ze:

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

Sla het bestand op en sluit het als je klaar bent. Herstart dan de iSCSI initiator dienst om de configuratiewijzigingen toe te passen:

systemctl restart open-iscsi

Je zou de volgende uitvoer moeten zien:

 * 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 ] 

Je kunt nu de gedeelde opslagschijf van het iSCSI target controleren met het volgende commando:

lsblk

Je zou moeten zien dat de opslagschijf nu beschikbaar is voor de initiator als sdb:

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 

Je kunt ook de iSCSI verbindingen controleren met het volgende commando:

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

Je zou de volgende uitvoer moeten krijgen:

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

Vervolgens moet je een bestandssysteem maken op dit gedeelde apparaat (sdb) en het mounten om dit apparaat bruikbaar te maken.

Maak eerst een bestandssysteem aan op het gedeelde apparaat (sdb) met het volgende commando:

fdisk /dev/sdb

Je zou de volgende uitvoer moeten zien:

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.

Formatteer vervolgens deze partitie met het volgende commando:

mkfs.ext4 /dev/sdb1

Koppel vervolgens deze partitie aan de map /mnt met het volgende commando:

mount /dev/sdb1 /mnt

Nu kun je het aangekoppelde apparaat controleren met het volgende commando:

df -h

Je zou de volgende uitvoer moeten zien:

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

Gefeliciteerd! je hebt met succes de iSCSI doelserver geïnstalleerd en hem verbonden met de iSCSI initiator. Je kunt nu dit gedeelde iSCSI apparaat als gewone aangekoppelde schijf gebruiken.