iSCSI Configuration · 12 min read · Feb 07, 2026

Configuration d'un environnement iSCSI sur Linux

Configuration d’un environnement iSCSI sur Linux

De nos jours, la technologie iSCSI est assez populaire dans le monde du stockage. Cet article montre un environnement de démonstration iSCSI qui se compose d’un hôte Debian Linux et d’un Netapp Filer. Nous essayons de montrer les fonctionnalités les plus importantes de ce protocole.

1. Qu’est-ce que l’iSCSI ?

C’est un protocole de stockage en réseau au-dessus de TCP/IP. Ce protocole encapsule les données SCSI dans des paquets TCP. L’iSCSI nous permet de connecter un hôte à un ensemble de stockage via une simple connexion Ethernet (lecteur de bande). Cette solution est moins chère que le SAN Fibre Channel (les HBA et les commutateurs Fibre Channel sont coûteux). Du point de vue de l’hôte, l’utilisateur voit les LUNs de l’ensemble de stockage comme des disques locaux. Les dispositifs iSCSI ne doivent pas être confondus avec les dispositifs NAS (par exemple NFS). La différence la plus importante est que les volumes NFS peuvent être accessibles par plusieurs hôtes, mais un volume iSCSI ne peut être accessible que par un hôte. C’est similaire au protocole SCSI : généralement, un seul hôte a accès à un disque SCSI (la différence est l’environnement de cluster). Le protocole iSCSI est défini dans le document RFC3720 par l’IETF (Internet Engineering Task Force).

Certaines critiques ont dit que l’iSCSI a une performance inférieure par rapport au Fibre Channel et cause une forte charge CPU sur les machines hôtes. Je pense que si nous utilisons l’Ethernet Gigabit, la vitesse peut être suffisante. Pour surmonter la forte charge CPU, certains fournisseurs ont développé des TOE iSCSI (TCP Offload Engine). Cela signifie que la carte a une puce réseau intégrée, qui crée et calcule les trames TCP. Le noyau Linux ne prend pas directement en charge cela et les fournisseurs de cartes écrivent leurs propres pilotes pour le système d’exploitation.

Les termes iSCSI les plus importants :

Initiateur :

L’initiateur est le nom du client iSCSI. Le client iSCSI a un accès au niveau bloc aux dispositifs iSCSI, qui peuvent être un disque, un lecteur de bande, un graveur DVD/CD. Un client peut utiliser plusieurs dispositifs iSCSI.

Cible :

La cible est le nom du serveur iSCSI. Le serveur iSCSI offre ses dispositifs (disques, bande, dvd/cd … etc.) aux clients. Un dispositif peut être accessible par un client.

Découverte :

La découverte est le processus qui montre les cibles pour l’initiateur.

Méthode de découverte :

Décrit la manière dont les cibles iSCSI peuvent être trouvées. Les méthodes actuellement disponibles :

  • Internet Storage Name Service (iSNS) - Les cibles potentielles sont découvertes en interagissant avec un ou plusieurs serveurs iSNS.
  • SendTargets – Les cibles potentielles sont découvertes en utilisant une adresse de découverte.
  • SLP - Découvrir des cibles via le protocole de localisation de service (RFC 4018)
  • Statique – Une adresse de cible statique est spécifiée.

Nommage iSCSI :

Le document RFC couvre également les noms iSCSI. Le nom iSCSI se compose de deux parties : la chaîne de type et la chaîne de nom unique.

La chaîne de type peut être la suivante :

  • iqn. : nom qualifié iSCSI
  • eui. : identifiant eui-64 bits

La plupart des implémentations utilisent le format iqn. Voyons notre nom d’initiateur : iqn.1993-08.org.debian:01.35ef13adb6d

iqn : nous utilisons l’adresse de nom qualifié iSCSI.
1993-08 : l’année du mois où l’autorité de nommage a acquis le nom de domaine utilisé dans le nom iSCSI.
org.debian : nom DNS inversé qui définit l’autorité de nommage organisationnelle.
01.35ef13adb6d : cette chaîne est définie par l’autorité de nommage.

Notre nom de cible est similaire (iqn.1992-08.com.netapp:sn.84211978). La différence est qu’il contient le numéro de série du filer Netapp. Les deux noms sont modifiables par l’utilisateur (initiateur, cible). Nous avons également besoin de deux adresses IP pour la cible et pour l’initiateur.

La figure suivante montre notre environnement de démonstration. Il se compose d’un hôte Debian qui est l’initiateur iSCSI, et accède au disque iSCSI via le dispositif /dev/sdb. Le filer Netapp est notre dispositif cible iSCSI, qui offre le disque /vol/iscsivol/tesztlun0 ou lun pour l’hôte Debian Linux. La session iSCSI se compose d’une phase de connexion, puis d’une phase d’échange de données.

Nommage et couches iSCSI

2. Support iSCSI sur d’autres plateformes Unix

Le pilote iSCSI de Cisco est l’une des premières implémentations logicielles d’initiateur iSCSI. Ce pilote prend en charge tous les principaux systèmes Unix commerciaux et leurs versions (HPUX:10.20,11,11i, AIX:4.3.3,5.1,5.2, Solaris: 2.6,7,8,9). La première version peut être datée de 2001. Actuellement, chaque fournisseur Unix implémente son propre pilote, et nous examinons ces pilotes.

Solaris :

Solaris 10 (à partir de la version 1/06) prend en charge l’iSCSI. Le pilote d’initiateur peut faire ce qui suit :

  • Prise en charge de plusieurs sessions à une cible : cette fonctionnalité permet à un client de créer plusieurs sessions iSCSI à une cible selon les besoins, et augmente la performance.
  • Multipathing : avec l’aide de la fonctionnalité Solaris Mpxio ou IPMP, nous pouvons créer des chemins redondants vers les cibles.
  • Les disques de 2 To et l’authentification CHAP sont également pris en charge. Le pilote Solaris peut utiliser les trois méthodes de découverte (SLP ne peut pas). Les disques iSCSI peuvent être accessibles par le programme de format.

HPUX :

HP a pris en charge l’iSCSI à partir du système d’exploitation HP11i v1. Ce pilote peut découvrir les cibles via SLP (Service Location Protocol) qui est également défini par l’IETF (RFC 4018). Cela signifie que l’initiateur iSCSI et les cibles s’enregistrent auprès de l’agent de répertoire SLP. Après l’enregistrement, l’initiateur iSCSI interroge uniquement l’agent de répertoire. Le pilote HPUX implémente toutes les méthodes de découverte. L’authentification CHAP est également implémentée et les outils multipath du système d’exploitation (PVLinks) sont également pris en charge. Le pilote HPUX fournit également des statistiques de transport.

AIX :

À partir de 5.2, AIX prend en charge l’iSCSI. Le pilote implémente uniquement la découverte de cibles statiques. Nous pouvons utiliser les disques iSCSI avec le multipathing AIX appelé MPIO. L’authentification CHAP est également prise en charge.

Aucun des pilotes ne nous permet de démarrer à partir de l’iSCSI. Cela peut être une prochaine étape dans le développement du pilote.

3. Implémentations iscsi sur Linux

Implémentations d’initiateurs :

Cisco a également publié un pilote Linux mais il est assez ancien.

L’implémentation iSCSI d’Intel contient à la fois des pilotes de cible et d’initiateur et un outil pratique pour générer des charges de travail.

UNH-iSCSI est une implémentation d’initiateur et de cible de l’Université du New Hampshire.

Le projet Open-iSCSI est la plus récente implémentation. Il peut être utilisé avec les noyaux 2.6.11 et supérieurs. Nous allons tester ce pilote avec l’hôte Debian. Il contient des modules de noyau et un démon iscsid.

Le démon iscsid peut être démarré avec la commande suivante :

/etc/init.d/open-scsi start

Les opérations iSCSI peuvent être contrôlées avec la commande iscsiadm. La commande peut découvrir les cibles, se connecter/se déconnecter à la cible, et afficher les informations de session.

Les fichiers de configuration se trouvent sous le répertoire /etc/iscsi :

  • iscsid.conf :         Fichier de configuration pour le démon iscsi. Il est lu au démarrage.
  • initiatorname.iscsi :    Le nom de l’initiateur, que le démon lit au démarrage.
  • répertoire nodes :         Le répertoire contient les nœuds et leurs cibles.
  • répertoire send_targets : Le répertoire contient les cibles découvertes.

Le processus d’installation est assez simple. Émettez :

apt-get install open-iscsi

Ce pilote implémente actuellement la méthode de découverte Sendtargets.

Implémentations de cibles :

iSCSI enterprise target est l’implémentation de cible open source pour Linux. Elle est basée sur l’implémentation iSCSI Linux d’Ardis et nécessite le noyau 2.6.14.

Openfiler est une implémentation NAS Linux assez populaire, et offre un logiciel NAS basé sur Linux avec une interface graphique basée sur le web.

De nombreuses autres entreprises proposent des pilotes de cibles iSCSI commerciaux basés sur des logiciels (Amgeon, Mayastor, Chelsio).

Les fabricants d’ensembles de stockage offrent également un support natif pour l’iSCSI (EMC, Netapp, etc.).

Nous avons choisi le filer Netapp FAS pour les tests, mais vous pouvez le tester avec un logiciel gratuit. Il y a un lien au bas de l’article qui montre comment nous pouvons le faire avec Openfiler.

4. Configuration de l’environnement de démonstration iSCSI Linux

Notre environnement de démonstration contient un hôte Debian Linux et un filer Netapp. L’hôte Debian est l’initiateur, et le filer Netapp est la cible.

Le processus de configuration est le suivant brièvement :

  1. Nous devrions établir la connexion tcp/ip entre Debian et le filer Netapp. L’initiateur et la cible doivent se pinguer mutuellement. Nous supposons que le paquet open-iscsi est déjà installé sur Debian.
  2. L’hôte Debian doit découvrir les cibles Netapp. Cela s’appelle un processus de “découverte”. Ensuite, la cible envoie les listes de cibles.
  3. La cible doit permettre à l’initiateur d’accéder au LUN. Du côté de Netapp, cela signifie que nous devrions créer un groupe d’initiateurs, qui est un lien logique entre les hôtes et les LUNs. Le groupe d’initiateurs contient le LUN et un hôte Debian qui peut accéder à ce LUN.
  4. Lorsque l’initiateur obtient les listes de cibles, il doit “se connecter” à la cible.
  5. Lorsque le processus de “connexion” se termine avec succès et que le filer Netapp permet l’accès, l’initiateur peut utiliser le disque iSCSI comme un disque normal. Il apparaît sous les dispositifs /dev/sdx et vous pouvez le formater, le monter comme un disque normal.

Voici les étapes détaillées :

  1. Nous pingons le filer Netapp depuis l’hôte Linux :
debian:~# ping nasa

PING nasa (192.168.2.222) 56(84) octets de données.

64 octets de nasa (192.168.2.222) : icmp_seq=1 ttl=255 time=0.716 ms
64 octets de nasa (192.168.2.222) : icmp_seq=2 ttl=255 time=0.620 ms

C’est réussi.

  1. Nous découvrons les LUNs iSCSI du filer netapp avec la commande iscsiadm. Nous avons choisi la méthode de découverte st (sendtargets). Actuellement, elle est implémentée avec ce pilote :
debian:~# iscsiadm -m discovery -t st -p 192.168.2.222

192.168.2.222:3260 via sendtargets

Voyons les cibles découvertes :

debian:~# iscsiadm -m node

192.168.2.222:3260,1000 iqn.1992-08.com.netapp:sn.84211978

  1. Nous devons préparer le côté Netapp : Dans cet exemple, nous allons créer un LUN de 4 Go (partie du groupe RAID), et l’assigner à l’hôte Debian. Nous devrions vérifier l’espace libre :
nasa> df -k

Système de fichiers
total
utilisé dispo capacité Monté sur
/vol/vol0/
8388608Ko 476784Ko 7911824Ko 6% /vol/vol0/
/vol/vol0/.snapshot
2097152Ko 10952Ko 2086200Ko 1% /vol/vol0/.snapshot
/vol/iscsiLunVol/ 31457280Ko 20181396Ko 11275884Ko 64% /vol/iscsiLunVol/
/vol/iscsiLunVol/.snapshot
0Ko 232Ko 0Ko —% /vol/iscsiLunVol/.snapshotunVol/testlun1

La commande suivante crée un LUN de 4 Go sur le volume iscsiLunVol :

nasa> lun create -s 4g -t linux /vol/iscsiLunVol/testlun1

Vérifiez-le :

nasa> lun show

/vol/iscsiLunVol/iscsitestlun 7.0g
(7526131200) (r/w, en ligne, mappé)
/vol/iscsiLunVol/iscsitestlun2 7.0g
(7526131200) (r/w, en ligne, mappé)
/vol/iscsiLunVol/testlun1 4g
(4294967296) (r/w, en ligne)

Nous devrions vérifier si l’hôte Debian est visible depuis l’hôte netapp :

nasa> iscsi initiator show

Initiateurs connectés :
TSIH TPGroup Initiateur
19 1000 debian (iqn.1993-08.org.debian:01.35ef13adb6d / 00:02:3d:00:00:00)

Ok, nous voyons l’hôte Debian. Créons le groupe d’initiateurs, appelé Debian2.

nasa> igroup create -i -t linux Debian2 iqn.1993-08.org.debian:01.35ef13adb6d
nasa> igroup show
    Debian2 (iSCSI) (ostype: linux):  
        iqn.1993-08.org.debian:01.35ef13adb6d (connecté sur : e0a)

Nous devrions assigner le nouveau LUN créé aux hôtes Debian2.

nasa> lun map /vol/iscsiLunVol/testlun1 Debian2

lun map : auto-assigné Debian2=2

La commande de vérification :

nasa> lun show -v

/vol/iscsiLunVol/testlun1 4g
(4294967296) (r/w, en ligne, mappé)
Numéro de série : hpGBe4AZsnLV
Partage : aucun
Réservation d’espace : activée
Type de multiprotocoles : linux
Mappages : Debian2=2

  1. Revenons à notre hôte d’initiateur. Maintenant, tout est préparé pour accéder au LUN de 4 Go. La commande suivante rend le disque accessible depuis l’hôte Linux.
debian:~#  iscsiadm -m node -T iqn.1992-08.com.netapp:sn.84211978 -p  

192.168.2.222:3260 –login

Nous devrions voir les entrées suivantes dans le fichier des messages :

debian:~# tail /var/log/messages

Apr 13 00:31:34 debian kernel: scsi: type de dispositif inconnu 31
Apr 13 00:31:34 debian kernel: Fournisseur : NETAPP
Modèle : LUN Rev : 0.2
Apr 13 00:31:34 debian kernel : Type : Inconnu ANSI SCSI révision : 04
Apr 13 00:31:34 debian kernel : Fournisseur : NETAPP Modèle : LUN Rev : 0.2
Apr 13 00:31:34 debian kernel : Type : Accès direct ANSI SCSI révision : 04
Apr 13 00:31:34 debian kernel : Dispositif SCSI sdb : 8388608 512-octets secteurs matériels (4295 Mo)
Apr 13 00:31:34 debian kernel : sdb : Protection en écriture désactivée
Apr 13 00:31:34 debian kernel : Dispositif SCSI sdb : cache de disque : écriture à travers
Apr 13 00:31:34 debian kernel : sd 1:0:0:2 : Disque SCSI attaché sdb

Le disque apparaît comme le dispositif sdb ( /dev/sdb).

  1. Nous pouvons l’utiliser comme un disque normal. Vous pouvez créer une partition, et vous pouvez facilement le monter.
debian:~# fdisk /dev/sdb 
debian:~# mkfs /dev/sdb1 ; mount /dev/sdb1 /mnt 

Si vous souhaitez utiliser sdb après le prochain redémarrage, vous devez changer l’entrée suivante :

node.conn[0].startup = manual à automatique

dans le fichier /etc/iscsi/nodes//. Après avoir changé cela, le démon iSCSI se connectera à cette cible. Ajouter une entrée de montage automatique ( /dev/sdb1 /mnt) dans le fichier /etc/fstab ne fonctionne pas, car le démon open-iscsi démarrera plus tard que le montage des systèmes de fichiers. Un simple script peut résoudre ce problème, qui effectue le montage automatique après le démarrage du démon iSCSI.

L’implémentation de l’initiateur open-iscsi tolère bien les erreurs réseau. Si vous déconnectez le câble Ethernet et le reconnectez, vous devez redémarrer le processus io, mais la reconnexion se produit automatiquement.

Une autre bonne solution pour les pannes réseau, si vous créez plusieurs chemins pour un LUN (par exemple : /dev/sdb, /dev/sdc), l’initiateur se connecte à deux emplacements (deux contrôleurs RAID) et vous faites des deux disques un seul disque logique à l’aide du logiciel multipath Linux ( dmsetup).

Je recommande une autre alternative pour l’implémentation de cible iSCSI : Openfiler (si vous ne pouvez pas tester sur la boîte Netapp). C’est un logiciel NAS basé sur Linux gratuit, qui peut être géré avec une interface graphique basée sur le web.

Le processus de configuration iSCSI est assez similaire dans le cas d’autres implémentations Unix.

5. Résumé et résultats

iSCSI est une bonne solution pour un site de récupération après sinistre peu coûteux. Vous ne devriez pas acheter une carte Fibre Channel coûteuse sur le site de récupération après sinistre, vous pouvez utiliser l’Ethernet et l’iSCSI. Vous pouvez également l’utiliser pour connecter des hôtes à des ensembles de disques sans adaptateurs hôtes Fibre Channel (si les ensembles sont capables d’iSCSI).

Lors du test, j’ai exécuté l’hôte Debian dans le programme Vmware player, et ma connexion réseau était de 100 Mbit/s. Je ne peux pas atteindre plus de 15 Mo/s de performance en lecture/écriture mais ce n’est pas pertinent. Avec l’Ethernet Gigabit, vous pouvez atteindre des performances bien meilleures, le seul inconvénient est que cela augmente la charge CPU (le CPU doit construire et calculer les trames TCP).

Voici ma simple page d’accueil.

Share: X/Twitter LinkedIn

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

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