Comment configurer un serveur de stockage iSCSI sur Ubuntu 18.04 LTS

iSCSI signifie (Internet Small Computer System Interface) est un protocole de réseau de stockage (SAN) qui peut être utilisé pour la gestion du stockage en ligne. Il s’agit d’une norme de réseau de stockage basée sur IP qui fournit un accès de niveau bloc aux périphériques de stockage en transportant des commandes SCSI sur un réseau TCP/IP.

iSCSI se compose de deux éléments : la cible iSCSI et l’initiateur iSCSI. La cible iSCSI est un service du serveur iSCSI qui offre un accès au stockage partagé et l’initiateur iSCSI est un client iSCSI qui se connecte à la cible et accède au stockage partagé.

Dans ce tutoriel, nous allons te montrer comment configurer la cible iSCSI et l’initiateur iSCSI sur le serveur Ubuntu 18.04.

Configuration requise

  • Un serveur Ubuntu 18.04 frais pour la cible iSCSI avec un disque dur externe de 2 Go.
  • Un serveur Ubuntu 18.04 frais pour l’initiateur iSCSI.
  • Une adresse IP statique 192.168.0.103 est configurée sur la cible iSCSI et 192.168.0.102 est configurée sur l’initiateur iSCSI.
  • Un mot de passe root est configuré sur les deux serveurs.

Démarrage

Avant de commencer, tu dois mettre à jour les deux serveurs avec la dernière version. Tu peux les mettre à jour en exécutant la commande suivante sur les deux $.

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

Une fois les deux serveurs mis à jour, redémarre-les pour appliquer les modifications.

Installer iSCSI Target

Tu dois d’abord installer le paquet Target Framework (TGT) sur le serveur cible iSCSI. Tu peux l’installer avec la commande suivante :

apt-get install tgt -y

Une fois que TGT a été installé, vérifie l’état de TGT en exécutant la commande suivante :

systemctl status tgt

Tu devrais voir la sortie suivante :

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

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Configurer la cible iSCSI

Ensuite, tu devras créer un périphérique LUN (Logical Unit Number) sur ton serveur iSCSI. Le LUN est un périphérique de stockage dorsal auquel l’initiateur se connectera et qu’il utilisera plus tard.

Tu peux le faire en créant le fichier de configuration dans le répertoire /etc/tgt/conf.d :

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

Ajoute les lignes suivantes :

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

Enregistre et ferme le fichier lorsque tu as terminé. Ensuite, redémarre le service TGT pour appliquer les changements de configuration :

systemctl restart tgt

Voici une brève explication de chaque paramètre :

target: C’est le nom de la cible particulière.

backing-store: Cette option indique le disque de stockage qui sera utilisé par l’initiateur.

initiator-address: C’est l’adresse IP de l’initiateur.

incominguser: Il s’agit du nom d’utilisateur/mot de passe entrant pour sécuriser le LUN.

outgoinguser: Il s’agit du nom d’utilisateur/mot de passe sortant pour l’authentification CHAP mutuelle.

Après avoir redémarré le service TGT, vérifie le serveur cible iSCSI avec la commande suivante :

tgtadm --mode target --op show

Tu devrais voir que la cible iSCSI est mise à disposition :

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

Installer et configurer l’initiateur iSCSI

Ensuite, tu dois installer le pack iSCSI initiator sur le serveur iSCSI initiator. Tu peux l’installer avec la commande suivante :

apt-get install open-iscsi -y

Une fois l’installation terminée, exécute la découverte des cibles contre notre serveur de cibles iSCSI pour découvrir les cibles partagées.

iscsiadm -m discovery -t st -p 192.168.0.103

Tu devrais voir la cible disponible dans la sortie suivante :

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

La commande ci-dessus génère également deux fichiers avec les informations LUN. Tu peux les voir avec la commande suivante :

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/

Tu devrais voir les fichiers suivants :

/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

Ensuite, tu devras modifier le fichier par défaut et définir les informations CHAP que tu as configurées sur la cible iSCSI pour accéder à la cible iSCSI depuis l’initiateur iSCSI.

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

Ajoute / modifie les lignes suivantes :

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

Enregistre et ferme le fichier lorsque tu as terminé. Ensuite, redémarre le service de l’initiateur iSCSI pour appliquer les changements de configuration :

systemctl restart open-iscsi

Tu devrais voir la sortie suivante :

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

Tu peux maintenant vérifier le disque de stockage partagé à partir de la cible iSCSI avec la commande suivante :

lsblk

Tu devrais voir que le disque de stockage est maintenant disponible pour l’initiateur en tant que 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 

Tu peux aussi vérifier les connexions iSCSI avec la commande suivante :

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

Tu devrais obtenir la sortie suivante :

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

Ensuite, tu devras créer un système de fichiers sur ce périphérique partagé (sdb) et le monter pour rendre ce périphérique utilisable.

Tout d’abord, crée un système de fichiers sur le périphérique partagé (sdb) avec la commande suivante :

fdisk /dev/sdb

Tu devrais voir la sortie suivante :

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.

Ensuite, formate cette partition avec la commande suivante :

mkfs.ext4 /dev/sdb1

Ensuite, monte cette partition sur le répertoire /mnt avec la commande suivante :

mount /dev/sdb1 /mnt

Maintenant, tu peux vérifier le périphérique monté avec la commande suivante :

df -h

Tu devrais voir le résultat suivant :

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

Félicitations ! Tu as réussi à installer le serveur cible iSCSI et à le connecter à partir de l’initiateur iSCSI. Tu peux maintenant utiliser ce périphérique iSCSI partagé comme un disque attaché normal.

Vous aimerez aussi...