«

»

Mar 28 2013

[Tuto] HA: iSCSI sur Debian 6

Bonjour à tous, dans ce nouveau tutoriel consacré à la HA nous allons voir le protocole iSCSI.

Qu’est-ce que iSCSI?

iSCSI pour Internet Small Computer System Interface, est un protocole de partage de disque sur le réseau. Contrairement à NFS ou SAMBA, iSCSI permet de partager un disque dur entier et de le monter sur une machine cliente comme un disque dur local.
Ce protocole est surtout utilisé pour le stockage déporté vers un SAN.

iSCSI-schema

iSCSI-schema

Mise en place

Dans ce tuto nous allons voir la mise en place d’un serveur iSCSI (Target) et d’une machine cliente (Initiator).

Pour ce faire, nous allons mettre en place deux machines virtuelles sous Debian 6.

Machine 1:

  • Hostname: target
  • Adresse IP: 192.168.11.128
  • Un second disque dur virtuel de 5Go

Machine 2:

  • Hostname: initiator
  • Adresse IP: 192.168.11.129

Configuration du Target

Tout d’abord, nous allons commencer par installer les paquets nécessaires:

apt-get update
apt-get install iscsitarget iscsitarget-dkms

Une fois les paquets installés nous allons configurer le disque dur que vous avons rajouté:

root@target:~# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x23f391a8.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extendedaui
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-652, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-652, default 652):
Using default value 652

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Une fois la partition créée on formate le disque en ext4.

mkfs.ext4 /dev/sdb1

Maintenant que notre disque dur est prêt nous allons pouvoir configurer iSCSI.

Editez le fichier /etc/iet/ietd.conf er rajoutez celle ligne a la fin:

Target iqn.2013.03.com.denisrosenkranz:iscsi.test
Lun 0 Path=/dev/sdb1,Type=fileio

La configuration du partage iSCSI se fait selon un standard précis:
Tout d’abord le nom du target doit commencer par iqn (iSCSI Qualified Name) de la façon suivante:

iqn.yyyy-mm.[:identifier]

Et on pointe ce target créé sur le bon disque dur:

Lun 0 Path=/dev/sdb1,Type=fileio

Il y a deux types de configuration pour iSCSI fileio et blockio, la différence entre les deux est le type de fichier que nous allons écrire via iSCSI, si nous utilisons iSCSI pour des petits fichiers nous allons préférer fileio, par contre si nous travaillons avec des gros fichiers nous allons lui préférer blockio.

Je vous conseil de lire les commentaires du fichier ietd.conf vous trouverez beaucoup d’informations utiles.

Maintenant que la configuration terminée nous allons activer iSCSI et redémarrer le service.

Editez le fichier /etc/default/iscsitarget et remplacez false par true et redémarrez le service.

echo "ISCSITARGET_ENABLE=true" > /etc/default/iscsitarget
service iscsitarget restart

Vous pouvez taper la commande cat /proc/net/iet/volume pour vérifier que votre disque iSCSI fonctionne.

root@target:~# cat /proc/net/iet/volume
tid:1 name:iqn.2013.03.com.denisrosenkranz:iscsi.test
	lun:0 state:0 iotype:fileio iomode:wt blocks:10474317 blocksize:512 path:/dev/sdb1

Connection de l’initator

Sur la seconde machine (initiator) nous allons nous connecter à notre target.

Avant tout il faut installer le paquet open-iscsi

apt-get install open-iscsi
service restart open-iscsi

Puis nous allons rechercher les partages iSCSI disponibles et s’y connecter.

iscsiadm -m discovery -t st -p 192.168.11.128

Ou 192.168.11.128 est l’adresse IP du target.

Ce qui nous donne:

root@initiator:~# iscsiadm -m discovery -t st -p 192.168.11.128
192.168.11.128:3260,1 iqn.2013.03.com.denisrosenkranz:iscsi.test

Nous allons maintenant connecter notre initiator à notre target avec la commande suivante:

root@initiator:~# iscsiadm -m node --targetname "iqn.2013.03.com.denisrosenkranz:iscsi.test" --portal "192.168.11.128:3260" --login
aui
Logging in to [iface: default, target: iqn.2013.03.com.denisrosenkranz:iscsi.test, portal: 192.168.11.128,3260]
Login to [iface: default, target: iqn.2013.03.com.denisrosenkranz:iscsi.test, portal: 192.168.11.128,3260]: successful

Si vous avez un successful c’est que votre initiator s’est bien connecté à votre target.

Vous pouvez faire sur votre initiator un ls /dev/disk/by-path/
Et vous verrez la ligne suivante:

root@initiator:/# ls /dev/disk/by-path/
ip-192.168.11.128:3260-iscsi-iqn.2013.03.com.denisrosenkranz:iscsi.test-lun-0

Cela veut dire vous pouvez monter votre disque de la façon suivante:

mkdir /mnt/iscsi
mount /dev/disk/by-path/ip-192.168.11.128:3260-iscsi-iqn.2013.03.com.denisrosenkranz:iscsi.test-lun-0 /mnt/iscsi

Maintenant nous allons écrire sur le disque iscsi à partir de l’initiator et vérifier si tout fonctionne bien.

Nous allons donc télécharger l’ISO de Debian 6 dans le dossier /mnt/iscsi

cd /mnt/iscsi
wget http://cdimage.debian.org/debian-cd/6.0.7/i386/iso-cd/debian-6.0.7-i386-CD-1.iso

Une fois le téléchargement terminé tapez les commances suivantes sur l’initiator:

root@initiator:/mnt/iscsi# cd /root/
root@initiator:~# umount /mnt/iscsi

Puis nous allons monter le disque sur le target pour vérifier si l’écriture à eu lieu:

root@target:/# mkdir /mnt/iscsi
root@target:/# mount /dev/sdb1 /mnt/iscsi/

Et on vérifie:

root@target:/# ls /mnt/iscsi/
debian-6.0.7-i386-CD-1.iso  lost+found

Les fichiers sont bien présent sur le disque :).

Maintenant nous allons remonter le disque sur l’initiator et voir ce qui se passe si on redémarre le service open-iscsi.

Sur le target on demonte le disque iSCSI

root@target:/# cd /root/
root@target:/# umount /mnt/iscsi

Sur l’initiator on remonte le disque iSCSI.

root@initiator:~# mount /dev/disk/by-path/ip-192.168.11.128:3260-iscsi-iqn.2013.03.com.denisrosenkranz:iscsi.test-lun-0 /mnt/iscsi

Tapez df -h et voyez que votre disque iSCSI est monté.

root@initiator:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
*
*
*
*
/dev/sdb             1004M  665M  289M  70% /mnt/iscsi

Maintenant redémarrons le service open-iscsi et refaisons un df -h

root@initiator:~# service open-iscsi restart
Unmounting iscsi-backed filesystems: Unmounting all devices marked _netdev.
Disconnecting iSCSI targets:Logging out of session [sid: 1, target: iqn.2013.03.com.denisrosenkranz:iscsi.test, portal: 192.168.11.128,3260]
Logout of [sid: 1, target: iqn.2013.03.com.denisrosenkranz:iscsi.test, portal: 192.168.11.128,3260]: successful
.
Stopping iSCSI initiator service:.
Starting iSCSI initiator service: iscsid.
Setting up iSCSI targets:
iscsiadm: No records found!
.
Mounting network filesystems:.

Et si vous faites un df -h vous verrez que le disque iSCSI n’est plus la.

Et si vous faites ls /dev/disk/by-path/ vous verrez qu’il n’y a plus le disque iSCSI :(

Comment faire en sorte que vos disques iSCSI se lancent automatiquement?

Sur votre initiator tapez la commande suivante:

iscsiadm -m node --targetname "iqn.2013.03.com.denisrosenkranz:iscsi.test" --portal "192.168.11.128:3260" --op=update -n node.startup -v automatic

Et editez le fichier /etc/iscsi/iscsid.conf
Decommentez la ligne

node.startup = automatic

Et commentez la ligne

node.startup = manual

Enfin redémarrez open-iscsi

root@initiator:~# service open-iscsi restart
Unmounting iscsi-backed filesystems: Unmounting all devices marked _netdev.
Disconnecting iSCSI targets:Logging out of session [sid: 1, target: iqn.2013.03.com.denisrosenkranz:iscsi.test, portal: 192.168.11.128,3260]
Logout of [sid: 1, target: iqn.2013.03.com.denisrosenkranz:iscsi.test, portal: 192.168.11.128,3260]: successful
.
Stopping iSCSI initiator service:.
Starting iSCSI initiator service: iscsid.
Setting up iSCSI targets:
Logging in to [iface: default, target: iqn.2013.03.com.denisrosenkranz:iscsi.test, portal: 192.168.11.128,3260]
Login to [iface: default, target: iqn.2013.03.com.denisrosenkranz:iscsi.test, portal: 192.168.11.128,3260]: successful
.
Mounting network filesystems:.

Faites un ls /dev/disk/by-path/ et voyez que votre disque iSCSi est bien de nouveau présent !

root@initiator:~# ls /dev/disk/by-path/
ip-192.168.11.128:3260-iscsi-iqn.2013.03.com.denisrosenkranz:iscsi.test-lun-0

Mais il n’est pas remonté dans dans /mnt/iscsi. Alors comment faire?

Nous allons editer le fichier /etc/fstab pour gérer le montage disque de redémarrage de la machine.

Nous allons donc éditer le fichier /etc/fstab et rajouter la ligne suivante à la fin du fichier pour monter automatiquement le disque en cas de redémarrage de l’initiator.

/dev/disk/by-path/ip-192.168.11.128:3260-iscsi-iqn.2013.03.com.denisrosenkranz:iscsi.test-lun-0 /mnt/iscsi ext4	_netdev 	0 	0

Testez le fichier en tapant la commande:

mount -a

Et enfin tapez df -h. Vous aurez votre disque iSCSI monté dans /mnt/iscsi.

Vous pouvez faire un test final en redémarrant votre initiator et vérifier si le disque est bien monté dans /mnt/iscsi au redémarrage.

Et voici ce qui met fin à ce tuto sur iSCSI.

Vous pouvez aussi utiliser iSCSI avec du DRBD par exemple ;-)

(5 commentaires)

Passer au formulaire de commentaire

  1. Mounir

    Suuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuper tutooooooooooooooooooooooooooo Merci erci rci ci i

  2. Lord-titiz

    Bon tuto!

    Utilisé et approuvé pour un SAN lite et tous et ok

  3. bernard

    Bonjour,
    J’ai utilisé plusieurs de vos tutos, chapeau tout fonctionne sans problème. Merci de partager vos connaissances qui nous permettent de nous enrichir intellectuellement.
    Pour info, j’ai 60 ans et j’ai dû arrêter mon activité pour raison de santé et maintenant je fais de l’informatique par plaisir et continuer à apprendre.
    Je souhaiterais entrer en contact avec vous si cela ne vous importune pas.
    Cordialement,
    B. Kalafate

  4. KRYSTOF

    Super TUTO !!!!!!!
    Félicitations (je mets un « s » par ce que ça en vaux biens plusieurs).
    Le BAC en 2008 et six ans plus tard une telle maitrise…moi je dis bravo ! j’ai au moins 10ans de plus que toi et je rame, ya pas on a pas tous la même culture et les mêmes facilités…
    Continues à moi faire des Tuto’s au top, donnes le bonjour aux cousins du nouveau monde,
    Et,
    MERCI,
    A+
    ps:je bookmark le site…

  5. dordouf

    Excellent Tutoriel !!!

Laisser un commentaire

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

Lire les articles précédents :
drbd_logo_small
[Tuto] HA: DRBD sur Debian 6

Bonjour à tous, dans ce premier tutoriel consacré à la Haute disponibilité (HA) nous allons voir DRBD.

Fermer