Créer une LUN iSCSI sur une SQUEEZE pour ajouter un disque sur une Lenny 4


Dans cet article, je vais détailler comment créer une cible iSCSI (une LUN iSCSI) sur une Debian SQUEEZE puis, monter cette LUN en tant que disque dur sur une Débian Lenny. La première partie de cet article peut servir de base pour les sujets suivants :

Utiliser une cible iSCSI pour ajouter un disque sur Ubuntu
Utiliser une cible iSCSI pour ajouter un disque dans Windows Server 2008R2

Pré requis :
– Un ordinateur avec un client SSH pour configurer les distributions
– 2 Machines (physiques ou virtuelles) sous Linux : Le serveur iSCSI (= Distribution SQUEEZE appelé target iSCSI / cible iSCSI)  et le Client iSCSI (= Distribution Lenny, le client peut être appelé aussi : initiateur / ou initiator)
– On part du principe que les deux linux ont déjà le réseau & l’accès internet de configurés, et que ces deux machines peuvent se voir et dialoguer ensemble (attention si vous avez des FWs).

– Mon sources.list se compose de : nano /etc/apt/sources.list

deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main
deb http://ftp.debian.org/debian/ squeeze-updates main
deb-src http://ftp.debian.org/debian/ squeeze-updates main
deb http://ftp.easynet.be/ftp/debian/ squeeze-updates main non-free contrib
deb ftp://ftp.skynet.be/debian/ squeeze main contrib
deb http://backports.debian.org/debian-backports squeeze-backports main

 

1 – Préparation du Serveur iSCSI, c’est lui qui a de l’espace disque disponible, que nous allons monter sur le client iSCSI.

aptitude update && upgrade

Un petit reboot (optionnel). Et on installe le paquet iscsitarget-dkms qui va nous permettre de créer des LUN iSCSI.

aptitude install iscsitarget-dkms iscsitarget lvm2
nano /etc/default/iscsitarget

Remplacez false par true
ISCSITARGET_ENABLE=true

Dans mon cas j’ai un RAID0 coupé en :

/dev/sda1 pour /
/dev/sda3 pour /home
/dev/sda5 pour le swap

Je veux créer mes LUN (targets) iSCSI sur ma partition sda3.

Pour se faire, il faut pour commencer :

umount /dev/sda3

On prépare le volume physique :

pvcreate /dev/sda3

On lie le groupe de volume vg0 au volume physique

vgcreate vg0 /dev/sda3

On ajoute un volume logique 1700 Go nommé mails et faisant partie du groupe Volume vg0)

lvcreate -L 1700G -n mails vg0

Donc le paramètre -L pour la taille du volume et -n pour le nom donné à ce volume.

Maintenant on édite le fichier :

nano /etc/iet/ietd.conf

Décommentez la ligne suivante :

#Target iqn.2001-04.com.example:storage.disk2.sys1.xyz

Puis éditez cette ligne, exemple :

Target iqn.2001-04.com.macintom:mails.sda3.1700

  • .com.macintom : remplacez par ce que vous voulez
  • mails : remplacez par le nom de votre volume
  • .sda3.1700 : je l’ai ajouté pour savoir sur quelle partition la lun se trouve et aussi l’espace dispo

On va ajouter une authentification CHAP :
Remplacez « joe » et « secret » par vos logins CHAP (pour mon test, je laisse joe et secret, je changerais une fois le tout fonctionnel)

IncomingUser joe secret

Puis editez la Lun 0 selon vos configurations précédentes :

Lun 0 Path=/dev/vg0/mails,Type=fileio

Alias LUN0

Pour terminer la création, il suffit de redémarrer le tout :

/etc/init.d/iscsitarget restart

Si vous voulez limiter la connection à cette cible iSCSI il vous suffit de modifier le fichier suivant :

nano /etc/iet/initiators.allow

de commenter la ligne (car cette ligne autorise tous périphériques à découvrir les LUNs):

#ALL ALL

Et de choisir votre paramètre de sécurité. Exemple si je veux limiter la découverte de cette LUN à qu’une seule IP :

iqn.2001-04.com.macintom:mails.sda3.1700 IP-AUTORISEE-A-VOIR-LA-LUN

Où iqn.2001-04.com.macintom:mails.sda3.1700 est le nom que vous avez choisi dans le fichier /etc/iet/ietd.conf à la ligne Target ….

Si vous voulez autoriser un initiateur iSCSI peu importe son IP voici la ligne :

iqn.2001-04.com.macintom:mails.sda3.1700 iqn-de-votre-initiateur

La modification de ce fichier (initiators.allow) ne nécessite pas le redémarrage de iscsitarget.

Arrivé ici, vous pouvez monter votre LUN sur un Windows, un VMWARE et sur un Linux etc….

 

2 – La Préparation du client (= Debian Lenny et peut aussi s’appeler l’initiateur / initiator) :

Le client est le serveur dans lequel nous allons ajouter cet espace disque disponible via iSCSI.

aptitude install open-iscsi
nano /etc/iscsi/iscsid.conf

Si plus haut, vous avez choisi de sécuriser l’accès à votre LUN en autorisant que l’iqn à s’y connecter, vous devez récupérer  l’IQN de notre serveur :

nano /etc/iscsi/initiatorname.iscsi

Copiez le résultat (ID du client iSCSI) (iqn.****.org.debian-iscsi:4b******)

InitiatorName=iqn.****.org.debian-iscsi:4b******

Et coller cette IQN sur notre serveur iSCSI dans le fichier /etc/iet/initiators.allow (voir précédement)

Revenons sur notre client iSCSI, puis décommentez & editez les lignes suivantes :

Cette étape ne concerne que les personnes ayant mis en place une authentification CHAP pour se connecter à leur cible iSCSI.
– nano /etc/iscsi/iscsid.conf (ou autre utilitaire d’édition de textes)
– décommentez les lignes suivantes et remplacez username/password par vos propres identifiants :

# To request that the iscsi initd scripts startup a session set to « automatic ».
node.startup = automatic

# To enable CHAP authentication set node.session.auth.authmethod
node.session.auth.authmethod = CHAP

# To set a CHAP username and password for initiator
node.session.auth.username = username
node.session.auth.password = password

# To set a discovery session CHAP username and password for the initiator
# authentication by the target(s), uncomment the following lines:
discovery.sendtargets.auth.username = username
discovery.sendtargets.auth.password = password

Pour que la LUN soit montée automatiquement au redémmarrage chercher cette ligne :

node.conn[0].timeo.login_timeout = 15

et ajoutez au-dessus :

node.conn[0].startup = automatic

Sauvegardez et quittez. On redémarre le démon avec la commande :

sudo /etc/init.d/open-iscsi restart.

Afin de découvrir la cible iSCSI qui nous est dédiée lancez cette commande :

iscsiadm -m discovery -t sendtargets -p IP-DE-VOTRE-SERVEUR-ISCSI:3260

Repérez l’iqn et copiez le. Exécutez cette commande (en une seule ligne) :

iscsiadm –mode node –targetname iqn.****.org.debian-iscsi:4b****** –portal IP-DE-VOTRE-SERVEUR-ISCSI

(Attention il y a deux hyphen « – » devant chaque objet : mode, targetname, portal)

Là vous obtenez toute la configuration de votre cible, … . Faites un restart :

/etc/init.d/open-iscsi restart

Si tout se passe bien vous devriez obtenir :

srv-trimail:/etc/iscsi# /etc/init.d/open-iscsi restart
Unmounting iscsi-backed filesystems: Unmounting all devices marked _netdev.
Disconnecting iSCSI targets:.
Stopping iSCSI initiator service:.
Starting iSCSI initiator service: iscsid.
Setting up iSCSI targets:
Logging in to [iface: default, target: iqn.****.org.debian-iscsi:4b******, portal: IP-DE-VOTRE-SERVEUR-ISCSI,3260]
Login to [iface: default, target: iqn.****.org.debian-iscsi:4b******, portal: IP-DE-VOTRE-SERVEUR-ISCSI,3260]: successful
.
Mounting network filesystems:.

Faites un :

fdisk -l

Et en dessous de vos points de montage (/dev/sda1 /dev/sda2 …) vous devriez voir :

Disk /dev/sdb: 1825.4 GB, 1825361100800 bytes

Petit Rappel, ma LUN0 de 1700 GB a été créer sur un volume de 1825.4 To, cette donnée change selon votre configuration.
Il nous reste plus qu’a créer notre partition la formater & monter cette cible iSCSI afin de la rendre utilisable.

Formatage du disque iscsi via cette commande

mkfs.ext3 /dev/sdb

Patientez le temps qu’il termine l’écriture des tables d’i-noeuds (ex : pour un disque de 500 Go = 4000 et pour un disque de 1825 Go = 13600).

Montage de la partition :

mkdir /mnt/mails (renomez « mails » comme vous le souhaitez)
mount -t ext3 /dev/sdb /mnt/mails

On vérifie :

df -h

Résultat :

Sys. de fichiers    Taille  Uti. Disp. Uti% Monté sur
/dev/sda1              31G  4,2G   25G  15% /
tmpfs                 252M     0  252M   0% /lib/init/rw
udev                  248M  100K  247M   1% /dev
tmpfs                 252M     0  252M   0% /dev/shm
/dev/sdb             1,7T  197M  1,6T   1% /mnt/mails

Afin de monter automatiquement le disque après chaque démarrage, je préfère opter pour un petit script pour être sure que le disque soit bien monté après la connexion à la cible iSCSI. Car si pour une raison x ou y la connexion à la Target (cible) n’a pas pu s’établir avant le FSTAB votre machine va resté bloquée au démarrage.

vim /etc/init.d/mount_mails_iscsi.sh

#!/bin/bash
### BEGIN INIT INFO
# Provides: Votre Nom ou service …
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5# Default-Stop: 0 1 6
# Short-Description: Monte le disque iSCSI au démarrage apres connexion Target
# Description: Monte le disque iSCSI au démarrage apres connexion Target
### END INIT INFO

#On monte la cible iSCSI sur vers le point de montage /mnt/mails
mount -t ext3 /dev/sdb /mnt/mails

#On rends executable le script
chmod a+x /etc/init.d/mount_mails_iscsi.sh

Enregistrez et quittez. Puis exécutez :

update-rc.d mount_mails_iscsi.sh defaults

Où si vous voulez modifier le fstab, merci de suivre la procédure de DOM. :

vim /etc/fstab
#on dit merci à DOM
/dev/sdb /mnt/iscsi ext3 _netdev 0 0

Il ne reste plus qu’à faire le test. On redémarre et apres on vérifie si le point de montage est opérationnel.

Problèmes rencontrés :

– Le paquet iscsitarget pour la distribution squeeze n’est disponible que sur le dépot de skynet.
– Une fois la LUN créée, je ne pouvais pas la monter sur un windows. C’était les logins CHAP qui ne correspondait pas aux restrictions Microsoft (le login chap était trop long et mot de passe doit avoir au maximum 16 caractères)
– Au Redémarrage de la machine, j’avais un message d’erreur dans /etc/fstab disant que la partition sda3 était introuvable. J’ai donc tout simplement commenté la ligne la concernant. Sinon vous devez à chaque fois appuyer sur CTRL+D pour continuer ou entrer le mot de passe Root pour faire un check.
– Problème de connexion de la target iSCSI sur le client iSCSI, regarder les logs, sur le serveur iSCSI faites :

tail -f /var/log/syslog

et sur le client :

tail -f /var/log/message.

– Vérifiez surtout que vos serveurs ont la même heure !!

aptitude install ntpdate

– Si comme moi vous aimez bien faire du copier-coller des commandes, vous avez sans doute copier et coller dans votre fenêtre SSH l’une des commandes de : « iscsiadm –mode node –targetname » avec mon exemple, et la fenêtre ssh à lancé cette commande, sans succès (évidement), je vous conseille donc de faire un :

rm -r /etc/iscsi/nodes/ /etc/iscsi/send_targets/

et de relancer les commandes :

iscsiadm -m discovery -t sendtargets -p IP-DE-VOTRE-SERVEUR-ISCSI:3260

iscsiadm –mode node –targetname iqn.****.org.debian-iscsi:4b******
–portal IP-DE-VOTRE-SERVEUR-ISCSI

(Attention il y a deux hyphen « – » devant chaque objet : mode, targetname, portal)

Pour mes tests j’avais laissé les identifants « joe » et « secret » le temps de m’assurer du bon fonctionnement, mais apres avoir changer mes identifiants rien à faire, impossible de se connecter. Pour celà vous devez allez dans :

nano /etc/iscsi/send_targets/ ………………………………,\default
chercher vos anciens logins (moi en l’occurence joe) et remplacez par vos nouveaux identifiants.


Laissez un commentaire

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

4 commentaires sur “Créer une LUN iSCSI sur une SQUEEZE pour ajouter un disque sur une Lenny

  • dom

    pour eviter ton script au demarrage et laisser tout dans fstab
    il suffit de lui indiquer que c’est une net device, car effectivement fstab est demarrée avant le reseau ce qui est problématique pour iSCSI donc il faut ajouté dans les options de montage de fstab _netdev
    ex : /dev/sdb /mnt/iscsi ext3 _netdev 0 0

  • dead-red Auteur de l’article

    Bonjour,

    Effectivement dans un premier temps j’ai essayer comme celà, mais j’ai eut une erreur dès le démarrage. D’où ma préférence pour mon script. Et avantage c’est ce que si le serveur iSCSI n’est pas dispo, le client démarre quand même sans aucune erreur de fstab manquante :).

    Mais c’est peut être juste moi qui ait se problème, en tout cas merci pour ton commentaire je vais voir pour l’ajouter au Tuto.

  • dom

    pas de soucis c’est pour faire avancer le schmilblik

    mais un bon script dans l’init.d ça marche très bien aussi 😀

    moi aussi je m’interesse beaucoup a l’iSCSI en ce moment