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/iscsitargetRemplacez 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.shEnregistrez 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.
4 commentaires sur “Créer une LUN iSCSI sur une SQUEEZE pour ajouter un disque sur une Lenny”
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
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.
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
Super tuto, tu mériterais d’etre augmenté !!