iSCSI — serveur et clients pour tests de cluster
Ce guide explique comment installer et configurer un serveur iSCSI (iscsitarget) et des clients Linux pour tester un cluster à deux nœuds. Vous trouverez les commandes de compilation, les extraits de configuration (ietd.conf, initiatorname), la vérification des périphériques SCSI côté client et des checklists pour le déploiement et la validation.
Important : cette configuration est destinée aux environnements de test ou d’apprentissage. Ne l’utilisez pas telle quelle en production sans durcissement, sauvegardes et redondance matérielle.
Contexte
iSCSI (Internet Small Computer Systems Interface) est un protocole de Storage Area Network (SAN) qui permet de partager du stockage via une infrastructure réseau existante. Dans cet exemple, le serveur est basé sur iscsitarget (site source : http://iscsitarget.sourceforge.net) et les clients utilisent les utilitaires iscsi-initiator.
Définitions rapides :
- iSCSI : protocole qui transporte des commandes SCSI sur TCP/IP.
- LUN : Logical Unit Number, unité de stockage exposée au client.
- Initiator : logiciel client qui se connecte au target iSCSI.
1. Installation et configuration du serveur iSCSI
1.a Compilation de l’archive iscsitarget
Cette étape se réalise sur l’hôte physique (serveur).
- Téléchargez le tarball depuis SourceForge et placez-le dans /usr/local/src.
- Rendez-vous dans /usr/local/src :
cd /usr/local/src
- Décompressez les fichiers :
tar xvf iscsitarget-0.4.16.tar.gz
cd iscsitarget-0.4.16
- Compilez et installez :
make
make install
Note : adaptez ces étapes si votre distribution fournit un paquet binaire (RPM/DEB) compatible.
1.b Configuration (extrait de ietd.conf)
Voici une configuration d’exemple (fichier /etc/ietd.conf) qui définit deux LUNs exposés aux initiators. Les chemins peuvent pointer vers des volumes logiques (LVM), des partitions ou des fichiers image.
#/etc/ietd.conf
# NOTE: the config files has more entries than what i'm showing here.
# but i've commented out the original entries and made the following
Target iqn.2008-07.NODE00:LUN01.NODE00
MaxConnections 2
Lun 1 Path=/dev/Virtual00VG/lvLUN01,Type=fileio
Alias LUN01
Target iqn.2008-07.NODE00:LUN02.NODE00
MaxConnections 2
Lun 2 Path=/dev/Virtual00VG/lvLUN02,Type=fileio
Alias LUN02
# end of ietd.conf
Dans mon système physique, j’ai créé deux volumes logiques de 50 Go chacun (50 Go ≡ 50 GiB selon votre configuration). Vous pouvez également utiliser des fichiers ou des partitions disque : modifiez simplement les entrées Path dans ietd.conf.
1.c Contrôle d’accès (ACL)
iscsitarget utilise /etc/initiators.allow et /etc/initiators.deny, de façon similaire à hosts.allow/hosts.deny. Permettez explicitement l’accès pour les initiators (nœuds clients) sur les LUNs concernés.
#/etc/initiators.allow
#this should correspond to the definition in your /etc/ietd.conf
iqn.2008-07.NODE00:LUN01.NODE00 192.168.100.10, 192.168.100.20
iqn.2008-07.NODE00:LUN02.NODE00 192.168.100.10, 192.168.100.20
# endof initiators.allow
Démarrez ensuite le service iscsi-target et activez son démarrage automatique :
service iscsi-target start
Puis pour le rendre persistent au démarrage :
chkconfig --add iscsi-target
chkconfig iscsi-target on
chkconfig --list iscsi-target
Exemple de sortie :
iscsi-target 0:off 1:off 2:on 3:on 4:on 5:on 6:off
2. Côté client
Le paquet iscsi-initiator-utils (ex. iscsi-initiator-utils-6.2.0.865-0.8.el5) doit être installé sur chaque nœud client.
2.a Configuration de l’initiator
- Éditez le fichier /etc/iscsi/initiatorname.iscsi pour définir le nom d’initiator (InitiatorName). Exemple :
#/etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2008-07.NODE00:LUN01.NODE00
InitiatorName=iqn.2008-07.NODE00:LUN02.NODE00
# end of #/etc/iscsi/initiatorname.iscsi
Remarque : certaines distributions n’autorisent qu’une seule déclaration InitiatorName par fichier ; vérifiez la documentation de votre version.
Démarrez le démon iscsid et effectuez la découverte :
service iscsid start
Exemple de sortie lors du démarrage :
Turning off network shutdown. Starting iSCSI daemon: [ OK ]
Découverte des cibles sur le serveur (à adapter avec l’adresse du serveur) :
iscsiadm -m discovery -t st -p node00
Exemple de découverte retournée :
192.168.222.1:3260,1 iqn.2008-07.NODE00:LUN01.NODE00
192.168.222.1:3260,1 iqn.2008-07.NODE00:LUN02.NODE00
Ensuite, démarrez le service iscsi pour établir les sessions :
service iscsi start
Sortie indicative :
iscsid (pid 964 963) is running...
Setting up iSCSI targets: Login session [iface: default, target: \
iqn.2008-07.NODE00:LUN02.NODE00, portal: 192.168.222.1,3260]
Login session [iface: default, target: iqn.2008-07.NODE00:LUN01.\
NODE00, portal: 192.168.222.1,3260] [ OK ]
2.b Vérification des disques côté client
Consultez les logs du noyau pour vérifier la détection des périphériques SCSI :
dmesg
Extrait de sortie montrant les disques iSCSI (ici sda et sdb, ~53,6 Go) :
scsi0 : iSCSI Initiator over TCP/IP
Vendor: IET Model: VIRTUAL-DISK Rev: 0
Type: Direct-Access ANSI SCSI revision: 04
scsi 0:0:0:2: Attached scsi generic sg0 type 0
SCSI device sda: 104857600 512-byte hdwr sectors (53687 MB)
sda: Write Protect is off
sda: Mode Sense: 77 00 00 08
SCSI device sda: drive cache: write through
SCSI device sda: 104857600 512-byte hdwr sectors (53687 MB)
...
sd 1:0:0:1: Attached scsi disk sdb
sd 1:0:0:1: Attached scsi generic sg1 type 0
Vous pouvez aussi lister les disques et partitions :
fdisk -l
Extrait :
Disk /dev/sda: 53.6 GB, 53687091200 bytes
Disk /dev/sdb: 53.6 GB, 53687091200 bytes
Disk /dev/sda doesn't contain a valid partition table
Disk /dev/sdb doesn't contain a valid partition table
Répétez la même procédure pour node02. Une fois que les disques sont accessibles depuis les deux clients, vous pouvez configurer un cluster à deux nœuds, par exemple pour tester Oracle RAC 10gR2 avec ASM partagé et OCFS2.
Conseils de débogage et vérification
- Vérifiez la connectivité réseau (port TCP 3260 par défaut).
- Assurez-vous que les noms IQN (Initiator/Target) correspondent entre serveur et clients.
- Si le client n’aperçoit pas le target, contrôlez /var/log/messages ou syslog et les règles iptables/Firewalld.
- Pour voir les sessions iSCSI établies :
iscsiadm -m session
- Pour forcer la reconnexion :
iscsiadm -m node -T -p --login
Quand ce montage échoue (contre-exemples)
- Réseau non fiable ou latence élevée provoque des timeouts et corruption potentielle si vous n’utilisez pas des mécanismes de reprise.
- Utiliser un stockage iSCSI simple sans redondance ni multipath en production peut entraîner un point de défaillance unique.
- Utiliser un seul initiatorname partagé sur plusieurs machines sans coordination peut troubler la gestion des sessions.
Alternatives et extensions
- Utiliser LIO (Linux I/O target) moderne plutôt que iscsitarget selon la distribution (meilleur support et fonctionnalités).
- Pour haute disponibilité : activer multipath (DM-Multipath) et configurer plusieurs chemins réseau/stockage.
- Pour des tests plus simples, exposez des fichiers images loopback (fallocate/truncate + losetup) au lieu de LVM.
Mini-playbook de déploiement (étapes rapides)
- Préparer le serveur : créer volumes LVM (50 Go) ou fichiers images.
- Installer iscsitarget (ou LIO) et configurer /etc/ietd.conf.
- Définir /etc/initiators.allow avec IQN et adresses IP clients.
- Démarrer iscsi-target, vérifier écoute sur 3260.
- Sur chaque client : installer iscsi-initiator-utils, définir InitiatorName, démarrer iscsid.
- Découvrir les targets, démarrer iscsi, vérifier dmesg et fdisk.
- Configurer système de fichiers distribué ou ASM/OCFS2 si nécessaire.
Checklist par rôle
- Administrateur stockage
- Créer PV/VG/LV ou images de taille appropriée
- Vérifier permissions et ownership des fichiers/images
- Administrateur réseau
- Ouvrir le port 3260 entre initiators et target
- Assurer isolation réseau pour tests (VLAN ou réseau dédié)
- Administrateur système
- Installer iscsitarget/iscsid
- Scripter le démarrage automatique des services
Critères d’acceptation
- Les sessions iSCSI sont visibles avec iscsiadm -m session.
- Les disques apparaissent dans dmesg et fdisk -l sur chaque client.
- Les deux nœuds peuvent monter un système de fichiers partagé (test en lecture seule d’abord) ou initier ASM/OCFS2 sans collisions.
Faits et points à retenir
- Port par défaut : TCP 3260.
- MaxConnections dans l’exemple : 2.
- Taille des LUNs dans l’exemple : ~50 Go chacun.
- iscsitarget est un projet plus ancien ; pour des nouvelles installations préférez LIO si disponible.
Sécurité et conformité rapides
- Ne pas exposer un target iSCSI sur un réseau public.
- Restreindre l’accès par IQN et par adresse IP (initiators.allow).
- En production, utiliser chiffrement réseau (IPsec) et authentification CHAP si nécessaire.
Résumé
Ce guide montre comment configurer un serveur iSCSI simple avec iscsitarget, comment configurer les clients initiators, vérifier que les LUNs sont visibles, et quelles précautions prendre pour l’usage en test. Il fournit également des checklists et alternatives pour un passage ultérieur en environnement plus robuste.
Lectures complémentaires
- RHEL5 Virtualization Manual
- http://iscsitarget.sourceforge.net
- Oracle RAC HowTO
Matériaux similaires

X2Go + WiKID : 2FA sur Ubuntu 12.04

WikiLeaks: Grasshopper — outils CIA pour Windows

Emplacement par défaut sous Windows 10

Ouvrir un fichier PowerPoint en ligne

Ouvrir l’Invite de commandes en administrateur
