Stockage iSCSI · 10 min read · Nov 26, 2025

Comment installer un serveur de stockage iSCSI sur Ubuntu 22.04

L’Internet Small Computer System Interface (iSCSI) est un protocole utilisé dans les réseaux de stockage (SAN) pour partager des ressources de stockage au niveau des blocs, telles que des partitions de disques durs (HDD) ou de disques à état solide (SSD), des partitions de gestion de volumes logiques (LVM) ou des fichiers de blocs à travers un réseau. En utilisant une architecture client-serveur, l’iSCSI facilite la transmission des commandes SCSI sur des réseaux TCP/IP entre deux composants principaux : l’initiateur et la cible. La cible iSCSI est un service hébergé sur un serveur iSCSI, responsable de l’octroi d’accès au stockage partagé. À l’inverse, l’initiateur iSCSI fonctionne comme le client, établissant une connexion à la cible afin d’utiliser les ressources de stockage partagées.

Ce tutoriel est un guide complet sur la configuration des cibles et des initiateurs iSCSI sur un serveur exécutant Ubuntu 22.04. Il couvrira les étapes pour configurer un partage de stockage sécurisé au sein de votre réseau.

Exigences

  • Un système exécutant Ubuntu 22.04 pour la cible iSCSI avec un disque dur externe de 1 Go.
  • Un système exécutant une nouvelle installation d’Ubuntu 22.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, il est conseillé de mettre à jour votre système avec les derniers paquets. Vous pouvez les mettre à jour avec la commande suivante :

apt update -y  
apt upgrade -y

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

Installer la cible iSCSI

Le paquet cible iSCSI est dans le dépôt par défaut d’Ubuntu 22.04. Vous pouvez l’installer en exécutant la commande suivante sur le serveur cible iSCSI :

apt install tgt -y

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

systemctl status tgt

Vous devriez obtenir la sortie suivante :

? tgt.service - (i)SCSI target daemon
     Loaded: loaded (/lib/systemd/system/tgt.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2024-01-03 11: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

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

À ce stade, la cible iSCSI est installée sur votre serveur. Vous pouvez maintenant passer à l’étape suivante.

Configurer la cible iSCSI

Tout d’abord, créez un périphérique LUN (Logical Unit Number) sur votre serveur iSCSI. Le LUN est un périphérique de stockage backend qui fait partie d’un périphérique SCSI physique. Tous les LUN mappés à la cible iSCSI sont virtuellement attachés au système d’exploitation du client. Par conséquent, les initiateurs peuvent établir et gérer des systèmes de fichiers sur les 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 :


     backing-store /dev/sdb
     initiator-address 192.168.1.20
    incominguser iscsi-user password
     outgoinguser iscsi-target secretpass

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 une authentification CHAP mutuelle.

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 la sortie suivante :

Target 1: iqn.2024-01.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, allez sur la machine de l’initiateur iSCSI et installez le paquet d’initiateur iSCSI avec la commande suivante :

apt install open-iscsi -y

Une fois l’installation terminée, découvrez le serveur cible iSCSI pour trouver les cibles partagées en utilisant la commande suivante :

iscsiadm -m discovery -t st -p 192.168.1.10

Vous devriez voir la sortie suivante :

192.168.1.10:3260,1 iqn.2024-01.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 le nom de votre LUN cible iSCSI comme indiqué ci-dessous :

InitiatorName=iqn.2024-01.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 depuis 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 modifiant le fichier suivant :

nano /etc/iscsi/nodes/iqn.2024-01.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 d’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 la sortie suivante :

? 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 2024-01-03 11:33:13 UTC; 10s ago
       Docs: man:iscsiadm(8)
             man:iscsid(8)
    Process: 2861 ExecStart=/sbin/iscsiadm -m node --loginall=automatic (code=exited, status=0/SUCCESS)
    Process: 2867 ExecStart=/lib/open-iscsi/activate-storage.sh (code=exited, status=0/SUCCESS)
   Main PID: 2867 (code=exited, status=0/SUCCESS)

Jan 03 11:33:14 initiator systemd[1]: Starting Login to default iSCSI targets...
Jan 03 11:33:14 initiator iscsiadm[2861]: Logging in to [iface: default, target: iqn.2024-01.example.com:lun1, portal: 104.245.33.142,3260] (m>
Jan 03 11:33:14 initiator iscsiadm[2861]: Login to [iface: default, target: iqn.2024-01.example.com:lun1, portal: 104.245.33.142,3260] success>
Jan 03 11:33:14 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 la sortie suivante :

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

Vous pouvez également vérifier le périphérique de stockage partagé depuis 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 le périphérique partagé

Pour 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 la sortie suivante :

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 la sortie suivante :

Filesystem      Size  Used Avail Use% Mounted on
udev            972M     0  981M   0% /dev
tmpfs           199M  528K  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

Questions Fréquemment Posées

Voici les réponses à quelques questions fréquemment posées sur l’initiateur et la cible iSCSI.

Qu’est-ce que l’iSCSI ?

L’iSCSI, ou Internet Small Computer System Interface, est un protocole réseau qui permet le transfert de données sur des intranets et gère le stockage sur de longues distances. Il facilite le transport de données au niveau des blocs entre un initiateur iSCSI sur un serveur et une cible iSCSI sur du matériel de stockage.

Qu’est-ce que la cible et l’initiateur iSCSI ?

La cible iSCSI agit comme une unité de stockage, telle qu’un disque dur, qui est accessible via un réseau. L’initiateur iSCSI est le client qui se connecte et interagit avec le stockage sur la cible.

Puis-je utiliser l’iSCSI sur un WAN ?

Oui, l’iSCSI peut être utilisé sur un réseau étendu (WAN), mais cela nécessite une connexion réseau stable et rapide pour garantir des performances et une fiabilité. Les considérations de sécurité telles que les VPN ou les lignes dédiées sont également importantes lors de l’utilisation de l’iSCSI sur WAN.

En quoi l’iSCSI est-il différent de NFS ou SMB ?

Contrairement à NFS (Network File System) ou SMB (Server Message Block), qui sont des protocoles de stockage au niveau des fichiers, l’iSCSI fonctionne au niveau des blocs. Cela signifie qu’il permet à un système d’interagir avec le stockage distant comme s’il s’agissait d’un disque dur local, offrant plus de flexibilité dans la gestion du stockage.

L’iSCSI est-il sécurisé ?

L’iSCSI lui-même n’inclut pas de fonctionnalités de sécurité de haut niveau. Cependant, vous pouvez sécuriser vos connexions iSCSI en utilisant des méthodes telles que IPsec pour la sécurité au niveau du réseau ou en configurant CHAP (Challenge-Handshake Authentication Protocol) pour l’authentification.

Quelles sont les considérations de performance pour l’iSCSI ?

La performance de l’iSCSI est influencée par la vitesse du réseau, la latence, la performance des dispositifs de stockage et la configuration du réseau. Assurer une connexion réseau à haute vitesse et une latence minimale est crucial pour des performances optimales.

Ai-je besoin de matériel spécial pour l’iSCSI ?

Aucun matériel spécial n’est requis pour l’iSCSI. Il peut fonctionner sur un équipement réseau standard. Cependant, des HBA (Host Bus Adapters) iSCSI dédiés peuvent être utilisés pour améliorer les performances.

Comment résoudre les problèmes de connexion iSCSI sur Ubuntu ?

Le dépannage peut impliquer la vérification de la connectivité réseau, la vérification des fichiers de configuration pour l’initiateur et la cible, la révision des journaux système et l’assurance que la cible exporte correctement les dispositifs de stockage. De plus, l’utilisation d’outils comme iscsiadm peut aider à diagnostiquer et gérer les connexions iSCSI.

Conclusion

Le guide ci-dessus vous a appris à configurer une cible et un initiateur iSCSI sur un serveur Ubuntu 22.04. Vous avez également appris à partager un dispositif sur le serveur cible et à y accéder depuis l’initiateur.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.