Debian logo [inetdoc.LiNUX]

6. Configuration du système target

Dans cette partie, on prépare le système auquel on a attribué le rôle target. Cette préparation comprend deux étapes : la construction et l'installation d'un paquet contenant le module de la partie KernelSpace du service et la configuration des outils de la partie UserSpace pour lancer le démon ietd.

6.1. Sélection des paquets et compilation du module

1.

Quels sont les paquets de la distribution Debian GNU/Linux qui permettent de configurer un système avec le rôle target ?

En effectuant une recherche simple dans le catalogue des paquets disponibles, on obtient la liste des paquets dont le nom contient la chaîne de caractères iscsi.

$ aptitude search iscsi
p   iscsitarget         - iSCSI Enterprise Target userland tools
p   iscsitarget-dkms    - iSCSI Enterprise Target kernel module source - dkms version
p   iscsitarget-source  - iSCSI Enterprise Target kernel module source
p   open-iscsi          - High performance, transport independent iSCSI implementation

Dans la liste ci-dessus, on distingue deux éléments. Le premier paquet : iscsitarget-dkms contient le code source du module qui doit être chargé en mémoire pour faire fonctionner le service. Ce module doit être compilé en fonction de la version du noyau actif sur le système. La version DKMS associée à la gestion des dépendances permet de construire automatiquement un paquet correspodant à la version du noyau Linux utilisée. Le second paquet : iscsitarget contient le logiciel de gestion du service.

2.

Quelle est la commande d'installation des paquets nécessaires à la compilation des modules et à la configuration du rôle target ?

# aptitude install iscsitarget iscsitarget-dkms
Les NOUVEAUX paquets suivants vont être installés : 
  binutils{a} cpp{a} cpp-4.3{a} cpp-4.5{a} dkms{a} fakeroot{a} gcc{a}
  gcc-4.3{a} gcc-4.3-base{a} gcc-4.5{a} iscsitarget iscsitarget-dkms
  libc-dev-bin{a} libc6-dev{a} libcloog-ppl0{a} libelfg0{a} libgmp10{a}
  libgmp3c2{a} libgmpxx4ldbl{a} libgomp1{a} libmpc2{a} libmpfr4{a} libppl-c2{a}
  libppl7{a} linux-headers-2.6-amd64{a} linux-headers-2.6.32-5-amd64{a}
  linux-headers-2.6.32-5-common{a} linux-kbuild-2.6.32{a} linux-libc-dev{a}
  make{a} manpages-dev{a} menu{a} 
0 paquets mis à jour, 32 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 35,7 Mo d'archives. Après dépaquetage, 106 Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?]
<snipped/>

On retrouve le module compilé à l'aide du service DKMS dans l'arborescence usuelle des modules du noyau Linux.

# ll /lib/modules/`uname -r`/updates/dkms
total 136K
-rw-r--r-- 1 root root 131K  5 avril 16:21 iscsi_trgt.ko

6.2. Configuration du service

1.

Quel est le paquet qui contient les éléments de configuration du service dans l'espace utilisateur ?

On repart de la même liste des paquets iSCSI installés pour identifier celui qui contient le démon du service.

# aptitude search ~iiscsi
i   iscsitarget        - iSCSI Enterprise Target userland tools
i   iscsitarget-dkms   - iSCSI Enterprise Target kernel module source - dkms version

Une fois le paquet identifié, on peut lister son contenu.

# dpkg -L iscsitarget
/.
/etc
/etc/init.d
/etc/init.d/iscsitarget
/etc/default
/etc/default/iscsitarget
/etc/sysctl.d
/etc/sysctl.d/30-iscsitarget.conf
/etc/iet
/etc/iet/ietd.conf
/etc/iet/targets.allow
/etc/iet/initiators.allow
/usr
/usr/share
/usr/share/man
/usr/share/man/man5
/usr/share/man/man5/ietd.conf.5.gz
/usr/share/man/man8
/usr/share/man/man8/ietd.8.gz
/usr/share/man/man8/ietadm.8.gz
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/iscsitarget
/usr/share/doc
/usr/share/doc/iscsitarget
/usr/share/doc/iscsitarget/ChangeLog.gz
/usr/share/doc/iscsitarget/copyright
/usr/share/doc/iscsitarget/README.Debian
/usr/share/doc/iscsitarget/README.vmware
/usr/share/doc/iscsitarget/README.gz
/usr/share/doc/iscsitarget/changelog.Debian.gz
/usr/share/doc/iscsitarget/changelog.gz
/usr/share/doc/iscsitarget/NEWS.Debian.gz
/usr/sbin
/usr/sbin/ietadm
/usr/sbin/ietd

2.

Quelle est l'opération à effectuer pour lancer automatiquement le service lors de l'initialisation du système ?

Le répertoire /etc/default contient une liste de fichiers de contrôle qui servent à paramétrer les services lors de leur démarrage. Dans la liste ci-dessus, on relève le fichier /etc/default/iscsitarget dont le contenu est à éditer pour activer le service.

# cat /etc/default/iscsitarget
ISCSITARGET_ENABLE=true

3.

Quel est le fichier de configuration principal du service ? Quelles sont les entrées utiles au fonctionnement du rôle target ?

Toujours à partir de la liste des fichiers du paquets, on recherche les fichiers appartenant au répertoire /etc/ pour identifier celui qui sert à configurer le démon.

Ici, on repère facilement le fichier /etc/iet/ietd.conf que l'on doit éditer pour donner accès à l'unité de stockage réseau.

Parmi les multiples choix disponibles pour la désignation des unités de stockage que l'on souhaite rendre accessible via le réseau, on peut retenir deux solutions classiques. Pour ces deux solutions on donne un exemple de fichier de configuration.

  • On peut désigner une unité physique locale en mode bloc (DAS) comme ressource cible iSCSI.

    # egrep -v '(^*#|^$)' /etc/iet/ietd.conf
    Target iqn.2011-04.lab.stri:san.disk
            Lun 0 Path=/dev/vdb,Type=blockio
    	Alias san.disk
  • On peut désigner un fichier local comme ressource cible iSCSI. Cette seconde option est intéressante pour fournir plusieurs unités logiques (LUN) à partir d'un même volume local (DAS).

    # egrep -v '(^*#|^$)' /etc/iet/ietd.conf 
    Target iqn.2011-04.lab.stri:1stInitiator.disk
            Lun 0 Path=/var/lib/target/1stInitiator.disk,Type=fileio
            Alias 1stInitiator.disk
    Target iqn.2011-04.lab.stri:2ndInitiator.disk
            Lun 1 Path=/var/lib/target/2ndInitiator.disk,Type=fileio
            Alias 2ndInitiator.disk

Deux remarques sur les choix de configuration :

  • La technologie iSCSI dispose d'un schéma de nommage propre défini dans le document standard RFC3721. Le format retenu ici est baptisé iqn (iSCSI Qualified Name). Il s'agit d’une chaîne qui débute par "iqn." suivie d’une date au format AAAA-MM, du nom de l’autorité qui a attribué le nom (le nom de domaine à l’envers), puis une autre chaîne unique qui identifie le nœud de stockage.

  • On a choisi de n'utiliser aucun mécanisme d'authentification sachant que la configuration se fait dans un contexte de travaux pratiques et non d'exploitation sur un réseau réel.

4.

Comment lancer le service et s'assurer de son bon fonctionnement ?

Pour ce qui est du lancement du service, on retrouve l'appel classique au script appartenant aux niveaux de démarrage (runlevels).

# /etc/init.d/iscsitarget restart

Ensuite, pour le contrôle de l'état du service, on passe par les étapes classiques.

  • Consultation des journaux système.

    # grep -i iscsi /var/log/syslog
    Apr  6 11:46:32 targetSrv kernel: [   40.416451] iSCSI Enterprise Target Software - version 1.4.20.2
    Apr  6 11:46:32 targetSrv kernel: [   40.416691] iscsi_trgt: Registered io type fileio
    Apr  6 11:46:32 targetSrv kernel: [   40.416693] iscsi_trgt: Registered io type blockio
    Apr  6 11:46:32 targetSrv kernel: [   40.416695] iscsi_trgt: Registered io type nullio
  • Recherche dans la liste des processus actifs.

    # ps aux | grep ietd
    root      1022  0.0  0.1   3916   544 ?        Ss   Apr06   0:00 /usr/sbin/ietd
    root      6325  0.0  0.1   9616   884 pts/0    S+   00:43   0:00 grep ietd
  • Comme il s'agit d'un service réseau, on peut identifier les ports ouverts correspondant au démon.

    # lsof -i | grep ietd
    ietd    1022        root    7u  IPv4   3875      0t0  TCP *:3260 (LISTEN)
    ietd    1022        root    8u  IPv6   3876      0t0  TCP *:3260 (LISTEN)

5.

Comment autoriser l'accès à la ressource de stockage pour tout le réseau local ?

On utilise le fichier /etc/initiators.allow pour configurer les accès réseau. Une fois de plus, on va au plus simple en retenant l'adresse du réseau local sachant que ce réseau ne contient que deux hôtes.

# egrep -v ^# /etc/iet/initiators.allow
ALL 192.200.0.0/27

6.

Comment visualiser l'état de la session d'accès à la ressource de stockage iSCSI ?

On consulte le fichier /proc/net/iet/session qui donne l'état courant de la session avec l'adresse IP du système initiator.

# cat /proc/net/iet/session
tid:2 name:iqn.2011-04.lab.stri:2ndInitiator.disk
tid:1 name:iqn.2011-04.lab.stri:1stInitiator.disk