Iscsi

De Linuxmemo.

(Différences entre les versions)
(Configuration de la cible "serveur=target")
Ligne 68 : Ligne 68 :
* installer le logiciel open-iscsi
* installer le logiciel open-iscsi
 +
 +
==Configuration de l’initiator "client=initiator"==
 +
 +
éditer le fichier initiatorname.iscsi et y placer le nom unique de l’initiator, au format iqn.
 +
InitiatorName=iqn.2007-07.org.zereso:client.babbe4e54ab
 +
/etc/init.d/open-iscsi start
 +
log:
 +
...iscsid: Loading iSCSI transport class...: registered transport (tcp)
 +
...iscsid: iscsi: registered transport (iser)
 +
==Liens==
==Liens==

Version du 5 juillet 2012 à 20:20

http://www.open-iscsi.org/

Protocole réseau qui encapsule le protocole SCSI dans des paquets TCP.

On peut déployer une solution logicielle pure qui nécessite seulement un driver spécifique dont le rôle sera de traduire les ordres SCSI en paquets réseau. Mais pour ceux qui ne disposent pas de matériel iSCSI, nous verrons comment Linux émule une target.

L’espace de stockage étant accédé en mode bloc à travers le réseau, le noyau Linux considère cet espace disque comme s’il était local. Il n’est pas question de partager le même espace physique entre plusieurs initiators.

Sommaire

Vocabulaire

Le client est appelé " initiator "

Le serveur est appelé " target "

Le " Portals ": Lorsque l’initiator souhaite établir une session TCP avec la target, il a besoin de connaître le port TCP de la target. L’association (adresse IP, port TCP) est appelé un " portal ". Il y a donc un portal sur l’initiator et la target. Le port par défaut sur la target est le 3260. Notons qu’un initiator peut établir plusieurs connexions TCP avec la même cible. L’ensemble de ces connexions définit une " session iSCSI ".

Format des adresses iSCSI

Les adresses iSCSI peuvent avoir deux formats (voir [RFCB]) :

  • Le format iqn (iSCSI Qualified Name) : c’est une chaîne préfixée par " iqn. " et suivie d’une date (au format AAAA-MM), du nom de l’autorité qui a attribué le nom (c’est le nom de domaine à l’envers), puis une chaîne unique qui identifie le nœud. Par exemple : iqn.2007-07.org.zereso:serveur1:123456789ABCDEF.12345.
  • Le format eui (Enterprise Unique Identifier) : c’est une chaîne préfixée par " eui. " et suivie de 16 chiffres hexadécimaux. Par exemple : eui.00803A4B887A8D05.

Chaque nœud iSCSI peut aussi disposer d’Alias. Ce sont des noms logiques qui peuvent être utilisés uniquement après la connexion (qui utilise donc toujours le nom unique officiel) et permettent de proposer des comptes-rendus plus lisibles pour les administrateurs. Toujours suivant le bon vieux principe qu’une vision logique est préférable à une vision physique...

Découverte automatique

Le mode SendTargets qui est réalisé à la demande de l’initiator et qui utilise une commande native du protocole iSCSI pour cela.

  • L’initiator connaît (via un fichier de configuration) la liste des targets.
  • Il effectue alors des requêtes de découverte (SendTargets) ;
  • Chaque target iSCSI retourne les noms des cibles disponibles au driver ;
  • Le driver essaye de se connecter et reçoit les ID des cibles ;
  • Le driver iSCSI demande des infos pour chaque périphérique ;
  • Puis, il crée une table des périphériques disponibles ;
  • Les périphériques sont alors montables et utilisables.

Installation de la cible "serveur=target"

  • iscsi_trgt.ko : un module noyau qui émule une cible iSCSI et implémente le protocole
  • une commande de contrôle ietadm
  • quelques fichiers de configuration
  • un script de démarrage nommé iscsi-target sous /etc/init.d

Configuration de la cible "serveur=target"

La liste des cibles est définie dans le fichier /etc/ietd.conf.

Target iqn.2007-07.org.zereso:storage.disk1
...
Lun 0 Path=/dev/sdb2,Type=blockio

Vous pouvez vous aider de la commande iscsi-iname pour générer un nom arbitraire de cible est au format iqn.

L’accès à la cible est contrôlé par les fichiers /etc/initiators.{allow,deny}

iqn.2007-07.org.zereso:storage.disk1 a.b.c.d*

(où a.b.c.d est l’adresse IP de l’initiator). Nous pouvons charger le module iscsi_trgt et lancer le démon ietd.

/etc/init.d/iscsi-target start
Starting iSCSI enterprise target service: OK/succeeded
target # /etc/init.d/iscsi-target status
ietd (pid 4576) is running...
target # cat /proc/net/iet/volume
tid:1 name:iqn.2007-07.org.zereso:storage.disk1
lun:0 state:0 iotype:blockio iomode:wt path:/dev/sb2
lun:1 state:0 iotype:fileio iomode:wt path:/tmp/itarget

Installation de l'initiator "client=initiator"

  • installer le logiciel open-iscsi

Configuration de l’initiator "client=initiator"

éditer le fichier initiatorname.iscsi et y placer le nom unique de l’initiator, au format iqn.

InitiatorName=iqn.2007-07.org.zereso:client.babbe4e54ab
/etc/init.d/open-iscsi start
log:
...iscsid: Loading iSCSI transport class...: registered transport (tcp)
...iscsid: iscsi: registered transport (iser)

Liens

http://www.blogeek.ec0.fr/2011/01/20/admin/linux/mise-en-place-de-iscsi-open-iscsi-sur-ubuntu-11-04.html

http://www.unixgarden.com/index.php/gnu-linux-magazine/le-support-du-protocole-iscsi-dans-linux

Outils personnels