HOW TO : Installation et configuration de iSCSI sous Linux – client/serveur – Cli Mode

Installation et configuration de iSCSI sous Linux UNE

I. Présentation de ISCSI

Source Wikipédia :

iSCSI (internet SCSI) est un protocole de la couche application permettant le transport de commandes SCSI sur un réseau TCP/IP. Cette phrase est issue de Wikipedia, je cerne le concept, mais cela ne m’avance pas plus.

Installation et configuration de iSCSI sous Linux fonctionnement

1. Ma définition

Pour les historiens iSCSI a été inventé par IBM en 2002.

En faite la technologie iSCSI correspond plus ou moins à du SCSI sauf que plutôt d’utiliser un câble dédié (Fiber channel )on se sert de notre cher et tendre RJ45 en utilisant le modèle TCP/IP.

En faite on va « tout simplement » encapsuler nos commandes SCSI dans des paquets IP entre un hôte et une unité de disque (target).

C’est finalement pas si simple que cela, contrairement à un câble dédié, les paquets IP peuvent être perdu et/ou retransmis (sympa, vive la corruption de donnée) genre mes paquets sont perdus ou genre mes données arrivent dans le désordre …

Mais non, en faite les mecs qui ont inventé/implémenté iSCSI n’ont pas été si bête il avait tout prévu, le protocole iSCSI doit conserver une trace de la séquence de transmission de commandes SCSI.

Les commandes sont placées dans une file d’attente dans l’ordre d’émission, tant que le ACK n’est pas reçu la file d’attente ne se vide pas, cela nous permet d’avoir un envoi de donnée séquentiel et toute perte de paquet est évitée.

Dans ce modèle nous pouvons distinguer deux rôles distincts :

  1. Le premier est la target. C’est un système (soft ou hard) qui contient l’unité de disque. C’est un peu comme un SAN, wouah je vais avoir un SAN chez moi !!!
  2. Le second est l’initiator. Il correspond au «client» qui utilise l’unité de stockage réseau.

Comme nous l’avons vu plus haut iSCSI est un protocole de la famille Storage Area Network (SAN). L’ initiator accède à une unité de stockage en mode bloc donc pas de notions de système de fichier sur notre target.

Voilà pour la présentation, je pense avoir synthétisé assez bien l’ensemble pour le rendre digeste à n’importe quel geek averti.

Cette dernière phrase vient de me faire penser à une blague d’un commercial, attention roulement de tambour :

Un Geek azerty en vaut deux, elle marche pas si vous être anglophone, énormisime, non ?

2. Les contraintes liées à la technologie iSCSI

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 donc pas d’accès conçurent possible ce qui est normal en soit.Si vous souhaitez que l’espace de donnée soit accessible par plusieurs serveurs il faudra dans ce cas choisir un système de fichier supportant les accès concurrents genre ocfs (d’Oracle) ou GFS.

Si vous avez  » n  » initiators, alors il faudra dans ce cas scinder l’espace physique en x partitions/lvm/dossier pour faire en sorte que chaque initiator accède seul à son espace logique.

3. Le Formatage des adresses iSCSI

Comme vous le savez il s’agit d’un protocole, protocole = norme, pour le cas du iSCSI rien de bien compliqué la norme la plus importante à retenir est le nommage des targets / initiators qui doivent avoir un nommage spécifique afin d’être unique voici les deux nommages proposés par la norme :

  • Le format iqn (iSCSI Qualified Name) : cette chaîne doit contenir le préfixe  » 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.

Exemple : iqn.2007-07.fr.ec0:serveur1:identifiant.extention_de_votre_choix.

identifiant = A-Z_a-z_1-9

  • Le format eui (Enterprise Unique Identifier) : cette chaîne doit contenir le préfixe  » eui.  » et suivie de 16 chiffres hexadécimaux.

Exemple : eui.00AB99A14AA14FDD
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) cela permet d’avoir un nom humainement compréhensible et mémorisable.

Pour information LUN : Les numéros d’unité logique (LUN)

II. Installation et mise en œuvre

1. Côté target (PC de salon) :

a.  Installation de iSCSItarget

b.  Activation de iSCSITARGET au démarrage

c. Création de la/les partitions dédiée(s)

Pour la gestion des partitions je suis plutôt adepte de gparted plutôt que de fdisk, l’idée est de créer une partition de X Go peu importe le système de fichier choisi.
Tiens je me dis je vais me tenter un article sur fdisk ce sera l’occasion de me pencher plus précisément sur cet utilitaire en faite le seul truc que je sais pas faire c’est créer une partition d’une taille prédéfinie pour le reste ça va …

Dans mon cas je vais créer une partition de 250 Giga qui sera nommé /dev/sda6

d. Configuration du nœud

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

e. Aide

[IncomingUser ]

Le et utilisé pour l’authentification de l’initiator sur la target. Ils peuvent être différents de celui défini dans la section GLOBAL OPTIONS, quand il est utilisé pour la phase de découverte. Si le champ est vide, les connexions sont autorisées sans avoir besoin de quelconque authentification. La définition de plusieurs comptes est autorisée

[OutgoingUser ]

Le et utilisé pour l’authentification de la target sur l’initiator. Un seul login est supporté contrairement à l’ IncomingUser. Il peut être différent de celui défini dans la section GLOBAL OPTIONS, quand il est utilisé pour la phase de découverte.

Path=,Type=(fileio|blockio)[,ScsiId=][,ScsiSN=][,IOMode=(wb|ro)] | Sectors=,Type=nullio

Les paramètres après ne doivent pas contenir d’espace excepter le premier espace juste après qui lui est indispensable.

This line must occur at least once. The value of can be between 0 and 2^14-1.

Type (j’ai gardé les définitions en anglais volontairement pour éviter une mauvaise traduction):

– In fileio mode (default), it defines a mapping between a “Logical Unit Number” and a given device , which can be any block device (including regular block devices like hdX and sdX and virtual block devices like LVM and Software RAID devices) or regular files.

– In blockio mode, it defines a mapping between a “Logical Unit Number” and a given block device . This mode will perform direct block i/o with the device, bypassing page-cache for all operations. This allows for efficient handling of nonaligned sector transfers (virtualized environments) and large block transfers (media servers). This mode works ideally with high-end storage HBAs and for applications that either do not need caching between application and disk or need the large block throughput.

– Optionally a can be specified to assign a unique ID to the iSCSI volume. This is useful e.g. in conjunction with a multipath-aware initiator host accessing the same through several targets. The must not exceed 16 characters and controls the content of VPD 0x83. The must not exceed 16 characters and controls the content VPD 0x80.

By default, LUNs are writable, employing write-through caching. By setting IOMode to “ro” a LUN can only be accessed read only. Setting IOMode to “wb” will enable write-back caching. Please note that this could lead to data loss e.g. in case of power outages, so it is strongly recommended to use an UPS when enabling write-back caching. NOTE: IOMode “wb” is ignored when employing blockio.

– In nullio mode, it defines a mapping between a “Logical Unit Number” and an unnamed virtual device with sectors. This is ONLY useful for performance measurement purposes. All writes to this virtual device will be discarded and reads will return random data.

[Alias ]

Il s’agit d’un champ optionnel, évoqué plus haut cela permet de donner un nom friendly à au LUN.

f. Définition des accès

Dans mon cas je n’avais pas défini d’utilisateur, il y’a un second qui permet de gérer les accès au LUN :

Il faut ensuite redémarrer le service iscsitarget

2. Côté initiator (machine virtuelle)

a. Installation du paquet open-iscsi

b. Activation du démarrage automatique du service

c. Découverte des Lun mis à disposition par notre target

d. Montage du LUN

Se loguer sur le LUN du target choisi

Je ne commenterais pas cette commande est elle très compréhensible.

Suite à cette commande nous avons dorénavant un nouveau disque sur notre machine virtuelle sdb cool, non.

Et si je redémarre, il se passe quoi?
Et bien le disque remonte naturellement, si je ne dis pas de bêtise seule la commande avec le –logout fera disparaitre définitivement le disque sdb.

e. Partitionnement et formatage du disque

Nous allons maintenant partitionner notre nouveau disque, tout se passe comme s’il s’agissait d’un vrai disque …

Formatage en ext3 :

f. Montage automatique

Edition du fichier fstab :

IV. BONUS – Note sur la découverte automatique

Quand l’initiator est activé, il va pouvoir découvrir automatiquement des target à condition de lui fourni l’IP

Pour faire court :

1 – L’initiator à une visibilité sur les targets.

2 – Requêtes de découverte via la commande SendTargets.

3 – La target iSCSI renvoie le nom des LUN disponibles aux drivers.

4 – Le driver essaye de se connecter et reçoit les ID des cibles.

5 – Récupération des infos pour chaque périphérique disponibles.

6 – Création d’ une table des périphériques disponibles.

7 – Les périphériques sont alors montrables et utilisables.

Le LUN est monté à chaque redémarrage, car lors de la commande — login l’initiator va stocker les informations en dur dans le dossier /etc/iscsi/send_targets/IP_DU_SERVER,PORT)

Voici enfin la fin de cet article qui aura eu le mérite être super intéressant à mon niveau et qui vous servira peut être par la suite, je pense que j’ai encore beaucoup à apprendre de tout ça, mais au terme de 1 semaine de travail de test de recherches je suis assez satisfait de ce que j’ai pu apprendre.

Bon courage à bientôt.

Flori@n

Moi c'est Florian, j'ai 32 ans. J'ai découvert l'informatique à 17 ans et eu ma première connexion Internet à 23 ans. On ne va donc pas dire que j'ai été très précoce dans ce domaine... Quoiqu'il en soit, depuis je passe en moyenne 8 heures par jour sur un PC et ce qui est assez bizarre c'est que j'aime ça et j'en redemande le soir et le week-end. Je suis donc quelqu'un de bizarre, mais je n'ai aucun problème avec ça !!!

Vous aimerez aussi...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

%d blogueurs aiment cette page :