GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment configurer un serveur de stockage iSCSI sur Ubuntu 20.04 LTS

iSCSI signifie Internet Small Computer System Interface. Il s'agit d'un protocole de réseau de stockage qui peut être utilisé pour partager des périphériques de bloc tels que des partitions HDD/SSD ou des partitions LVM, ou bloquer des fichiers sur le réseau. iSCSI fonctionne dans un modèle client-serveur et s'appuie sur les réseaux TCP/IP pour envoyer des commandes SCSI entre le client initiateur et la cible. iSCSI Target est un service sur le serveur iSCSI qui fournit un accès au stockage partagé et iSCSI Initiator est un client iSCSI qui se connecte à la cible et accède au stockage partagé.

Dans ce didacticiel, nous expliquerons comment configurer les cibles iSCSI et l'initiateur iSCSI sur le serveur Ubuntu 20.04.

Exigences

  • Un système exécutant Ubuntu 20.04 pour cible iSCSI avec un disque dur externe de 1 Go.
  • Un système exécutant la nouvelle version d'Ubuntu 20.04 pour l'initiateur iSCSI.
  • Une adresse IP statique 192.168.1.10 est configurée sur la cible iSCSI et 192.168.1.20 est configurée sur l'initiateur iSCSI.
  • Un mot de passe root est configuré sur les deux serveurs.

Mettre à jour le système

Avant de commencer, c'est une bonne idée de mettre à jour votre système avec les derniers packages. Vous pouvez les mettre à jour avec la commande suivante :

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

Une fois tous les packages mis à jour, redémarrez votre système pour appliquer les modifications.

Installer la cible iSCSI

Par défaut, le package iSCSI Target est disponible dans le référentiel par défaut d'Ubuntu 20.04. Vous pouvez l'installer en exécutant la commande suivante sur le serveur cible iSCSI :

apt-get install tgt -y

Après avoir installé iSCSI Target, vérifiez l'état du serveur avec la commande suivante :

systemctl status tgt

Vous devriez obtenir le résultat suivant :

? tgt.service - (i)SCSI target daemon
     Loaded: loaded (/lib/systemd/system/tgt.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-07-11 07:13:04 UTC; 23s ago
       Docs: man:tgtd(8)
   Main PID: 7770 (tgtd)
     Status: "Starting event loop..."
      Tasks: 1
     Memory: 1.1M
     CGroup: /system.slice/tgt.service
             ??7770 /usr/sbin/tgtd -f

Jul 11 07:13:04 ubuntu2004 systemd[1]: Starting (i)SCSI target daemon...
Jul 11 07:13:04 ubuntu2004 tgtd[7770]: tgtd: iser_ib_init(3431) Failed to initialize RDMA; load kernel modules?
Jul 11 07:13:04 ubuntu2004 tgtd[7770]: tgtd: work_timer_start(146) use timer_fd based scheduler
Jul 11 07:13:04 ubuntu2004 tgtd[7770]: tgtd: bs_init(387) use signalfd notification
Jul 11 07:13:04 ubuntu2004 systemd[1]: Started (i)SCSI target daemon.

À ce stade, iSCSI Target est installé sur votre serveur, vous pouvez maintenant passer à l'étape suivante.

Configurer la cible iSCSI

Tout d'abord, vous devrez créer un périphérique LUN (Logical Unit Number) sur votre serveur iSCSI. LUN est un périphérique de stockage principal qui fait partie d'un périphérique SCSI physique. Tous les LUN mappés à la cible iSCSI sont virtuellement connectés au système d'exploitation du client. Par conséquent, les initiateurs peuvent établir et gérer des systèmes de fichiers sur des LUN iSCSI.

Vous pouvez le configurer en créant un nouveau fichier de configuration :

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

Ajoutez les lignes suivantes :

<target iqn.2020-07.example.com:lun1>
     backing-store /dev/sdb
     initiator-address 192.168.1.20
    incominguser iscsi-user password
     outgoinguser iscsi-target secretpass
</target>

Enregistrez et fermez le fichier lorsque vous avez terminé.

Où :

  • La première ligne définit le nom du LUN.
  • La deuxième ligne définit l'emplacement et le nom du périphérique de stockage sur le serveur cible iSCSI.
  • La troisième ligne définit l'adresse IP de l'initiateur iSCSI.
  • La quatrième ligne définit le nom d'utilisateur/mot de passe entrant.
  • La cinquième ligne définit le nom d'utilisateur/mot de passe que la cible fournira à l'initiateur pour permettre l'authentification mutuelle CHAP.

Ensuite, redémarrez le service iSCSI pour appliquer les modifications :

systemctl restart tgt

Ensuite, vérifiez le serveur cible iSCSI avec la commande suivante :

tgtadm --mode target --op show

Vous devriez obtenir le résultat suivant :

Target 1: iqn.2020-07.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: 
    Account information:
        iscsi-user
        iscsi-target (outgoing)
    ACL information:
        192.168.1.10

À ce stade, le serveur cible iSCSI est installé et configuré. Vous pouvez maintenant passer à l'étape suivante.

Installer et configurer l'initiateur iSCSI

Ensuite, accédez à la machine de l'initiateur iSCSI et installez le package de l'initiateur iSCSI avec la commande suivante :

apt-get install open-iscsi -y

Une fois l'installation terminée, découvrez le serveur cible iSCSI pour connaître les cibles partagées à l'aide de la commande suivante :

iscsiadm -m discovery -t st -p 192.168.1.10

Vous devriez voir le résultat suivant :

192.168.1.10:3260,1 iqn.2020-07.example.com:lun1

Ensuite, vous devrez définir le nom du périphérique LUN dans le fichier initiatorname.iscsi :

nano /etc/iscsi/initiatorname.iscsi

Ajoutez votre nom de LUN cible iSCSI comme indiqué ci-dessous :

InitiatorName=iqn.2020-07.example.com:lun1

Enregistrez et fermez le fichier lorsque vous avez terminé.

Ensuite, vous devrez définir les informations CHAP que vous avez configurées sur la cible iSCSI pour accéder à la cible iSCSI à partir de l'initiateur iSCSI. Le fichier de configuration du nœud existera dans le répertoire ‘/etc/iscsi/nodes/‘ et aura un répertoire par LUN disponible.

Vous pouvez le définir en éditant le fichier suivant :

nano /etc/iscsi/nodes/iqn.2020-07.example.com\:lun1/192.168.1.10\,3260\,1/default

Ajoutez/Modifiez 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

Enregistrez et fermez le fichier puis redémarrez le service initiateur iSCSI avec la commande suivante :

systemctl restart open-iscsi iscsid

Vous pouvez également vérifier l'état du service avec la commande suivante :

systemctl status open-iscsi

Vous devriez obtenir le résultat suivant :

? open-iscsi.service - Login to default iSCSI targets
     Loaded: loaded (/lib/systemd/system/open-iscsi.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sat 2020-07-11 07:24:19 UTC; 10s ago
       Docs: man:iscsiadm(8)
             man:iscsid(8)
    Process: 3861 ExecStart=/sbin/iscsiadm -m node --loginall=automatic (code=exited, status=0/SUCCESS)
    Process: 3867 ExecStart=/lib/open-iscsi/activate-storage.sh (code=exited, status=0/SUCCESS)
   Main PID: 3867 (code=exited, status=0/SUCCESS)

Jul 11 07:24:19 initiator systemd[1]: Starting Login to default iSCSI targets...
Jul 11 07:24:19 initiator iscsiadm[3861]: Logging in to [iface: default, target: iqn.2020-07.example.com:lun1, portal: 104.245.33.142,3260] (m>
Jul 11 07:24:19 initiator iscsiadm[3861]: Login to [iface: default, target: iqn.2020-07.example.com:lun1, portal: 104.245.33.142,3260] success>
Jul 11 07:24:19 initiator systemd[1]: Finished Login to default iSCSI targets.

Vous pouvez également vérifier la connexion iSCSI avec la commande suivante :

iscsiadm -m session -o show

Vous devriez obtenir le résultat suivant :

tcp: [2] 192.168.1.10:3260,1 iqn.2020-07.example.com:lun1 (non-flash)

Vous pouvez également vérifier le périphérique de stockage partagé à partir de la cible iSCSI avec la commande suivante :

lsblk

Vous devriez voir le périphérique partagé sdb dans la sortie suivante :

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   80G  0 disk 
??sda1   8:1    0   80G  0 part /
sdb      8:16   0 1000M  0 disk

Créer un système de fichiers sur un appareil partagé

Afin d'utiliser le périphérique partagé sur l'initiateur iSCSI, vous devrez créer un système de fichiers sur le périphérique partagé (sdb) et le monter pour rendre ce périphérique utile.

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

fdisk /dev/sdb

Répondez à toutes les questions comme indiqué ci-dessous pour créer un système de fichiers :

Welcome to fdisk (util-linux 2.34).
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 0x9743ddcf.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (1-4, default 1): 
First sector (2048-2047999, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-2047999, default 2047999): 

Created a new partition 1 of type 'Linux' and of size 999 MiB.

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

Ensuite, formatez la partition avec la commande suivante :

mkfs.ext4 /dev/sdb1

Vous devriez obtenir le résultat suivant :

mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 255744 4k blocks and 64000 inodes
Filesystem UUID: e7f06605-a0f5-41e1-b1b2-e85bd7a2d6a3
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

Ensuite, montez la partition dans le répertoire /mnt avec la commande suivante :

mount /dev/sdb1 /mnt

Vous pouvez maintenant vérifier la partition montée avec la commande suivante :

df -h

Vous devriez obtenir le résultat suivant :

Filesystem      Size  Used Avail Use% Mounted on
udev            981M     0  981M   0% /dev
tmpfs           199M  588K  199M   1% /run
/dev/sda1        79G  1.8G   74G   3% /
tmpfs           994M     0  994M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           994M     0  994M   0% /sys/fs/cgroup
tmpfs           199M     0  199M   0% /run/user/0
/dev/sdb1       968M  2.5M  899M   1% /mnt

Conclusion

Dans le guide ci-dessus, vous avez appris à configurer la cible et l'initiateur iSCSI sur le serveur Ubuntu 20.04. Vous avez également appris à partager un appareil sur le serveur cible et à y accéder à partir de l'initiateur. N'hésitez pas à me demander si vous avez des questions.


Ubuntu
  1. Comment configurer le serveur et le client Kerberos sur Ubuntu 18.04 LTS

  2. Comment configurer le serveur de stockage iSCSI sur Ubuntu 18.04 LTS

  3. Comment configurer le serveur Rsyslog sur Ubuntu 18.04 LTS

  4. Comment configurer Elasticsearch sur Ubuntu 18.04 et 16.04 LTS

  5. Configurer Rsyslog Server sur Ubuntu 20.04 - Comment faire ?

Comment configurer le serveur Git sur Ubuntu 20.04

Comment configurer le serveur Rsyslog sur Ubuntu

Comment configurer le serveur DHCP sur Ubuntu

Comment mettre à niveau vers Ubuntu Server 22.04 LTS

Comment installer Jellyfin Media Server sur le serveur/bureau Ubuntu 20.04 LTS

Comment configurer le serveur et le client NTP sur Ubuntu 20.04 LTS