Table des matières

Debian: Bases iSCSI

iSCSI” est un protocole qui permet d'utiliser des disks en passant par le réseau TCP/IP.

On va voir rapidement comment mettre ça en place.

~~READMORE~~

Les serveurs, appelés “Target” maintiennent les disks “physiques”, via “LVM” par exemple, et les mettent a disposition des clients.

Les clients sont appelés “Initiator”.

iSCSI Target

Sur le serveur…

Packages

# aptitude install iscsitarget iscsitarget-dkms
:!: le pilote est “iscsi” est compilé à la volée: changement de noyau ⇒ recompilation

Dans “/etc/default/iscsitarget” , faire en sorte d'avoir:

ISCSITARGET_ENABLE=true
# /etc/init.d/iscsitarget restart
:!:iscsitarget reload” n'existe pas, et c'est bien enmerdant… A moins que cette solution fonctionne…

Configuration rapide

La conf du “Target” est là: /etc/iet/ietd.conf

Pour l'exemple, on peut utiliser “LVM” pour créer un disk :

# lvcreate -L 5G -n partage1 vg0

Et après ça, on a un disk prêt (et dans un état indéfinie) en /dev/vg0/partage1 .

On va ajouter un client , simplement protégé par un mot de passe.

Dans /etc/iet/ietd.conf ajouter:

Target iqn.2012-09.fr.thierry-jaouen:partage-sn-7M5cMEnk
      IncomingUser zorro secret
      Lun 0 Path=/dev/vg0/partage1,Type=fileio
      MaxSessions 1

En clair:

iqn.2012-09.fr.thierry-jaouen:partage-sn-7M5cMEnk” , c'est le nom plus ou moins formaté selon une convention

ign.<DATE>.<REVERSED-DOMAIN>:<DISK_NAME>” :

ign Annonce le respect de la convention dans le nommage
<DATE> Année et mois de création
<REVERSED-DOMAIN> le domaine (FQDN?), mais écrit à l'envers !
<DISK_NAME> le nom du disk, mais unique sur l'ensemble du domaine !

Le compte utilisé se nomme “zorro” et a pour mot de passe “secret”.

Le “MaxSessions 1” n'autorise qu'une session simultanée sur ce disk.
Le seul cas de figure où l'on peut avoir plusieurs sessions simultanées, c'est lorsqu'elles sont toutes en lecture seule, sans exception.

On doit redémarrer le service:

# /etc/init.d/iscsitarget restart

La liste des disks disponibles est visible par là:

# cat /proc/net/iet/volume

La liste des sessions en cours est là:

# cat /proc/net/iet/session

Sécurité etc...

iSCSI Initiator

Sur le client…

Package

# aptitude install open-iscsi

Pour info: Le client a un petit nom vis a vis du “iscsi” et il est dans /etc/iscsi/initiatorname.iscsi .

:!: Il est obligatoire de redémarrer le service, car la première fois, ça va créer le nom du “initiator”

Configuration rapide

On ne va pas configurer en “automatique” : On va charger “à la main”.

On ajoute l'authentification dans le fichier /etc/iscsi/iscsid.conf :

# Automatic ou non ?
node.startup = manual
#node.startup = automatic

# Authentification
node.session.auth.authmethod = CHAP
node.session.auth.username = zorro
node.session.auth.password = secret
# /etc/init.d/open-iscsi restart

Simple montage

discovery

Découvrir les disks mis a disposition sur la “target” :

# iscsiadm --mode discovery --type sendtargets --portal target.local.thierry-jaouen.fr
192.168.6.22:3260,1 iqn.2012-09.fr.thierry-jaouen:partage-sn-7M5cMEnk
:!: La phase de “discovery” est obligatoire.

En découvrant les “target”, elles sont aussi mémorisé sur le client…

Ensuite, il suffit de taper “iscsiadm --mode node” pour voir les disks.

show

On peut voir quelques infos comme cela:

# iscsiadm --mode node --targetname iqn.2012-09.fr.thierry-jaouen:partage-sn-7M5cMEnk --op show

delete

On peut faire “oublier” les précédentes “découverte” avec:

# iscsiadm --mode node --targetname iqn.2014-06.fr.iliad.vlq8.local.filer2:partage-sn-7M5cMEnk --op delete

N'espérez pas importer un disk après ça…

login

Importer ce disk:

# iscsiadm --mode node --targetname iqn.2012-09.fr.thierry-jaouen:partage-sn-7M5cMEnk --portal target.local.thierry-jaouen.fr --login

On jette un oeil dans “dmesg” et on voit ce disk apparaître comme un disk physique par là: /dev/sd…

Par exemple, en /dev/sdb .

A partir de maintenant, on peut jouer avec, comme sur un disk local…

session

# iscsiadm -m session

logout

Pour en finir avec ce disk, il faut retaper la même chose que ci-dessus, mais en remplacant “--login” par “--logout” :

# iscsiadm --mode node --targetname iqn.2012-09.fr.thierry-jaouen:partage-sn-7M5cMEnk --portal target.local.thierry-jaouen.fr --logout

Le “device” /dev/sdX disparaît…

Tips

resize

On peut changer la taille d'un disk LVM, mais faire remonter ce changement à l'“Initiator” n'est pas sans risque.

Après avoir changer la taille sur le “target” , a coup de “resize2fs” et “lvresize”, il faut redémarrer le service !!

# /etc/init.d/iscsitarget restart
[ ok ] Removing iSCSI enterprise target devices: :.
[ ok ] Stopping iSCSI enterprise target service: :.
[....] Removing iSCSI enterprise target modules: :FATAL: Module iscsi_trgt is in use.
 failed!

Et là, c'est le drame ! Y a pas de raison que ça “failed” !!!!
Donc, on recommence tout de suite:

# /etc/init.d/iscsitarget restart
[ ok ] Removing iSCSI enterprise target devices: :.
[ ok ] Removing iSCSI enterprise target modules: :.
[ ok ] Starting iSCSI enterprise target service:.
. ok

Ouf !

Sur le client/Initiator, il faut que le changement de taille soit détecté.

Seul moyen sans briser la session (quoiqu'elle l'est déjà un peu…) :

# iscsiadm -m node -p target.local.thierry-jaouen.fr --rescan

Voila.

Nouveaux Lun

# iscsiadm -m session --rescan

Sources