Debian / Ubuntu - Installer et configurer un serveur et un client iSCSI

Page 1 / 1

Le SCSI est une connectique utilisée pour brancher des disques durs SCSI dans un serveur.
Pour ce qui est du iSCSI, il s'agit d'émuler le SCSI via le réseau TCP/IP. Le iSCSI permet donc d'utiliser un disque dur via le réseau comme s'il s'agissait d'un vrai disque dur.

  1. Installation du serveur iSCSI (Target)
  2. Configuration des partages iSCSI
  3. Installation et configuration du client iSCSI (Initiator)

1. Installation du serveur iSCSI (Target)

Avant de commencer, vous devez définir une adresse IP sur la machine où vous installerez le serveur iSCSI pour ne pas que l'IP change automatiquement.
Pour cela, référez-vous à un de ces tutoriels : Debian - Définir une adresse IP privée statique ou Ubuntu - Définir une adresse IP privée statique

Pour installer un serveur iSCSI, vous devrez installer les paquets :
- iscsitarget : les outils pour gérer le serveur iSCSI
- iscsitarget-dkms : son noyau (kernel)

Bash

apt-get install iscsitarget iscsitarget-dkms

Pendant l'installation, vous verrez cette ligne s'afficher :

Plain Text

[....] iscsitarget not enabled in "/etc/default/iscsitarget", not starting... ..[ (warning).

Une fois l'installation terminée, activez le serveur iSCSI en passant la variable "ISCSITARGET_ENABLE" à true.

Bash

vim /etc/default/iscsitarget

Plain Text

ISCSITARGET_ENABLE=true

2. Configuration des partages iSCSI

Grâce à iscsitarget, vous pourrez partager :
- des disques durs : /dev/sd*
- des partitions : /dev/sd**
- des volumes LVM : /dev/vg*/my_lv
- des volumes RAID : /dev/md*

Dans notre cas, nous allons partager un volume LVM.
Si vous ne savez pas comment créer un volume logique en LVM, consultez notre tutoriel "Installer et utiliser le LVM sous Linux" et arrêtez-vous à la fin du point 2.4 du tuto.

La configuration des partages iSCSI doit être indiquée dans le fichier : /etc/iet/ietd.conf

Bash

vim /etc/iet/ietd.conf

Dans ce fichier, vous trouverez de nombreux commentaires, ainsi que des exemples qui sont commentés par défaut.

Dans ce tutoriel, nous allons créer un simple partage iSCSI à partir d'un volume logique créé en LVM.
Notez que le volume logique à partager via iSCSI ne doit pas être monté.

Si il est déjà monté, utilisez la commande "umount" pour le démonter.

Pour créer un simple partage iSCSI, vous devrez indiquer :
- un Target : il s'agit de l'identifiant iSCSI du partage.
La norme RFC 3720 du iSCSI indique qu'il est préférable d'utiliser la syntaxe : Target iqn.yyyy-mm.<reversed domain name>[:identifier]
yyyy-mm : correspond à la date de création du partage iSCSI.
<reversed domain name> : correspond à votre nom de domaine, mais inversé. (Vous pouvez l'inventer si vous le souhaitez)
[:identifier] : correspond au nom du partage iSCSI.
- IncomingUser : les identifiants de connexion au partage iSCSI. Il s'agit de l'authentification CHAP.
- Lun : il s'agit des informations concernant le volume à partager. Chemin + type de partage.

Dans notre cas, nous allons ajouter ce partage iSCSI :

Plain Text

Target iqn.2016-09.lan.informatiweb:mon_partage
   IncomingUser informatiweb my_password
   Lun 0 Path=/dev/iwvg/iw_vol1,Type=fileio

Ensuite, redémarrez le serveur iSCSI en tapant cette commande :

Bash

/etc/init.d/iscsitarget restart

Pour vérifiez que vos partages sont configurés correctement, vous pouvez utiliser la commande :

Bash

cat /proc/net/iet/volume

Si vous obtenez un résultat similaire à ceci, c'est que votre configuration est bonne.

Plain Text

tid:1 name:iqn.2016-09.lan.informatiweb:mon_partage
	lun:0 state:0 iotype:fileio iomode:wt blocks:104652800 blocksize:512 path:/dev/iwvg/iw_vol1

3. Installation et configuration du client iSCSI (Initiator)

Avant de commencer, nous vous recommandons de définir une adresse IP statique pour la machine sur laquelle vous installerez le client iSCSI.
En effet, dans le cas contraire, la connexion au serveur iSCSI risque de ne pas s'effectuer correctement. Ce qui provoquera aussi une erreur pour le montage des partages iSCSI au démarrage via fstab.

Pour installer un client iSCSI, vous devez installer le paquet open-iscsi.

Bash

apt-get install open-iscsi

Par défaut, le client iSCSI ne démarrera pas automatiquement.
Pour que celui-ci démarre automatiquement, vous devez modifier la ligne "node.startup" du fichier "/etc/iscsi/iscsid.conf".

Bash

vim /etc/iscsi/iscsid.conf

Changez la ligne "node.startup" comme ceci :

Plain Text

node.startup = automatic

Puis, redémarrez le service.

Bash

/etc/init.d/open-iscsi restart

Si le serveur iSCSI nécessite une authentification "CHAP", vous devrez modifier le fichier "/etc/iscsi/iscsid.conf" pour que votre client iSCSI puisse se connecter aux partages ISCSI de votre serveur.
Notez que vous trouverez de nombreux commentaires intéressants dans ce fichier.

Bash

vim /etc/iscsi/iscsid.conf

Dans ce fichier, ajoutez ceci :

Plain Text

node.session.auth.authmethod = CHAP
node.session.auth.username = informatiweb
node.session.auth.password = my_password
discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = informatiweb
discovery.sendtargets.auth.password = my_password

Ensuite, pour détecter les partages disponibles sur votre serveur iSCSI, utilisez la commande : iscsiadm.
Note : 10.0.0.10 correspond à l'adresse IP de notre serveur iSCSI.

Bash

iscsiadm -m discovery -t st -p 10.0.0.10

Cette commande vous affichera un résultat similaire à ceci :

Plain Text

10.0.0.10:3260,1 iqn.2016-09.lan.informatiweb:mon_partage

Notez que l'exécution de la commande "iscsiadm -m discovery ..." aura généré un fichier "iqn.../default" dans le dossier "/etc/iscsi/nodes/".
Dans ce fichier, vous trouverez toute la configuration pour cet iqn.
La configuration présente dans ce fichier a été copiée depuis le fichier "iscsid.conf" lors de l'exécution de la commande discovery.
Il est donc important de configurer le fichier "iscsid.conf" AVANT de lancer le discovery.

Ensuite, redémarrez votre client iSCSI.

Bash

/etc/init.d/open-iscsi restart

Si vous trouvez une ligne similaire à celle-ci, c'est que votre configuration est bonne :

Plain Text

Login to [iface: default, target: iqn.2016-09.lan.informatiweb:mon_partage, portal: 10.0.0.10,3260] successful.

Une fois connecté au serveur iSCSI, un nouveau disque dur sera disponible.
Pour le retrouver, vous pouvez utiliser la commande :

Bash

iscsiadm -m session -P 3

Cette commande vous affichera des informations concernant les sessions iSCSI établies et notamment ceci :

Plain Text

Target: iqn.2016-09.lan.informatiweb:mon_partage
...
*****
CHAP:
*****
username: informatiweb
password: ********
username_in: <empty>
password_in: ********
...
************************
Attached SCSI devices:
************************
Host Number: 12	State: running
scsi12 Channel 00 Id 0 Lun: 0
Attached scsi disk sdb		State: running

A la fin de ces informations, vous verrez que ce partage iSCSI sera utilisable comme un disque dur SCSI (/dev/sdb).

Plain Text

Attached scsi disk sdb		State: running

Pour ce tutoriel, nous allons créer une seule partition primaire sur tout le disque grâce à fdisk.
Pour plus d'infos concernant le partitionnement d'un disque dur avec fdisk, référez-vous à notre tutoriel : Partitionner son disque dur avec fdisk.

Ensuite, pour stocker des données sur ce partage iSCSI, vous avez 2 possibilités :
- monter une partition du "disque dur" (le disque obtenu via la connexion iSCSI) dans un dossier avec la commande "mount".
- ou effectuer le montage au démarrage du système grâce à fstab.

Pour monter la 1ère partition du "disque dur" dans un dossier, utilisez ces commandes :

Bash

mkdir /mnt/my_iscsi_disk
mount /dev/sdb1 /mnt/my_iscsi_disk

Pour monter automatiquement le disque dur à chaque démarrage, créez le dossier dans lequel le montage devra être effectué, puis modifiez le fichier "/etc/fstab".

Bash

mkdir /mnt/my_iscsi_disk
vim /etc/fstab

Et ajouter ceci :

Plain Text

/dev/sdb1     /mnt/my_iscsi_disk      ext4    _netdev 0       0

Remarquez que l'on utilise l'option "_netdev" pour que le montage s'effectue une fois que le réseau est disponible.

Maintenant, la partition "/dev/sdb1" sera montée à chaque démarrage de la machine.
Néanmoins, pour éviter de redémarrer maintenant, vous pouvez utiliser cette commande :

Plain Text

mount -a

Lorsque vous redémarrerez votre machine cliente, le montage se fera automatiquement à chaque démarrage sans problème.