Table des matières

, , , ,

Installation d'un client iSCSI

Tout d'abord un peu de vocabulaire : en iSCSI on parle d'initiator ( le client qui “initie” un acces ) et de target (le serveur qui propose la cible a l'initiateur)

Comme d'habitude pour l'installation on se basera sur une Debian Lenny fraichement installée en netinstall via boot PXE.

Pour l'installation de la partie serveur voir la doc ici mais si vous êtes sur cette page, c'est que vous avez déja du configurer votre target.

Installation des prérequis

Le module iscsi_tcp est inclus en standard dans les noyaux debian. Il suffit donc d'installer open-isci :

aptitude install open-iscsi

Configuration du client

La configuration s'effectue dans le fichier /etc/iscsi/iscsid.conf . Nous allons accéder au target défini lors de l'installation du serveur, en utilisant l'utilisateur “monUtilisateur” associé au mot de passe “monMotDePasse” :

discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = monUtilisateur
discovery.sendtargets.auth.password = monMotDePasse
node.session.auth.authmethod = CHAP
node.session.auth.username = monUtilisateur
node.session.auth.password = monMotDePasse

Si vous voulez que le noeud démarre automatiquement, changer “node.startup = manual” par “node.startup = automatic” dans ce fichier par exemple grace a la commande suivante :

sed -i -e "s/node.startup = manual/node.startup = automatic/" /etc/iscsi/iscsid.conf

Connexion au serveur

Il faut bien entendu adapter le nom du target et l'IP du serveur pour qu'ils correspondent a votre installation

Si tout ce passe bien vous devriez voir s'afficher quelque chose comme :

Logging in to [iface: default, target: iqn.2010-05.com.example.mamachine:cache-debian, portal: 10.31.192.36,3260]
Login to [iface: default, target: .com.example.mamachine:cache-debian, portal: 10.31.192.36,3260]: successful

Il suffit ensuite de vérifier que vous voyez bien un “nouveau disque dur” a l'aide de la commande dmesg qui devrait afficher dans les dernieres lignes

[ 8702.186708] scsi2 : iSCSI Initiator over TCP/IP
[ 8703.443905] scsi 2:0:0:0: Direct-Access     IET      VIRTUAL-DISK     0    PQ: 0 ANSI: 4
[ 8703.492924] Driver 'sd' needs updating - please use bus_type methods
[ 8703.497677] sd 2:0:0:0: [sda] 140633010 512-byte hardware sectors (72004 MB)
[ 8703.492924] sd 2:0:0:0: [sda] Write Protect is off
[ 8703.492924] sd 2:0:0:0: [sda] Mode Sense: 77 00 00 08
[ 8703.492924] sd 2:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[ 8703.498352] sd 2:0:0:0: [sda] 140633010 512-byte hardware sectors (72004 MB)
[ 8703.500518] sd 2:0:0:0: [sda] Write Protect is off
[ 8703.500524] sd 2:0:0:0: [sda] Mode Sense: 77 00 00 08
[ 8703.501422] sd 2:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[ 8703.501422]  sda: sda1
[ 8703.509260] sd 2:0:0:0: [sda] Attached SCSI disk

Aller plus loin

Les nouveaux “disques durs” étants maintenants vus sur la machine, on peut les utiliser.

Astuce du chef : lors de la configuration du serveur, nous avons utilisé des volumes LVM. Pour garder l'avantage du LVM, a savoir le redimensionnement aisé de partition, je vous conseille de ne pas créer une partition sur ce disque, puis la formater, mais de directement formater ce disque “dev/sda” en ext3 par exemple. Lorsque vous voudrez agrandir ce volume, un simple resize2fs suffira. Dans le cas contraire, la procédure serait plus compliquée, car l'agrandissement de la target sera vue coté client comme de l'espace libre ajouté “derriere” la partition sda1 utilisée, donc il faudrait jouer avec fdisk pour supprimer/recréer la partition en une seule opération sous fdisk en déclarant absolument le meme secteur comme premier secteur de cette nouvelle partition

Pour formater ce volume, on peut utiliser par exemple :

mkfs.ext3 /dev/sda
Attention, l'ordre des disques peut varier, pour le montage il est préférable d'utiliser les labels des partitions ( voir cette page pour définir les labels ) ou les UUID

Monter la partition automatiquement

Pour monter la partition automatiquement, il existe 2 méthodes :

Utilisation des labels

Il faut tout d'abord définir le label de votre partition en suivant par exemple cette doc.

On utilise ensuite l'option _netdev dans le fichier /etc/fstab qui précise de ne tenter un montage qu'apres que le reseau de l'initiator soir up ) ainsi qu'un zero dans la derniere colone (“pass”) pour ne pas vérifier automatiquement le systeme de fichier au démarrage

voici par exemple une ligne concernant le montage d'un LUN extraite du fichier /etc/fstab :

LABEL=backports     /export/mirror/debian-backports      ext3    _netdev 0       0
Utilisation des UUID

Si vous préférez utiliser l'UUID a la place du label :

Pour obtenir l'UUID de votre partition, utilisez la commande blkid qui renvoie par exemple :

...
/dev/sda: LABEL="backports" UUID="3bacbc00-6c54-4060-a0a4-b328ee5ffda9" SEC_TYPE="ext2" TYPE="ext3" 
...

Voici la ligne correspondante a ajouter dans le fichier /etc/fstab :

UUID=3bacbc00-6c54-4060-a0a4-b328ee5ffda9    /export/mirror/debian-backports    ext3    _netdev    0    0

Scanner les LUNs

Nous avons vu coté serveur que l'on peut ajouter des LUNs dynamiquement, c'est tres bien mais encore faut il pouvoir rafraichir coté client.

C'est possible entre autres avec ce superbe script de Kurt Garloff / Hannes Reinecke disponible ici : http://www.garloff.de/kurt/linux/ . Lien vers le script direct : http://www.garloff.de/kurt/linux/rescan-scsi-bus.sh-1.38 .

Utilisation du script, si par exemple vous venez d'ajouter le LUN 5 coté serveur :

# ./rescan-scsi-bus.sh-1.38  --luns=5
Host adapter 0 (iscsi_tcp) found.
Scanning SCSI subsystem for new devices
Scanning host 0 channels 0 for  SCSI target IDs  0 1 2 3 4 5 6 7, LUNs  5
Scanning for device 0 0 0 5 ...
NEW: Host: scsi0 Channel: 00 Id: 00 Lun: 05
      Vendor: IET      Model: VIRTUAL-DISK     Rev: 0   
      Type:   Direct-Access                    ANSI SCSI revision: 04
1 new device(s) found.               
0 device(s) removed.                 

Le nouveau LUN est bien visible, et prêt a etre utilisé :-)