Il est possible de réaliser l'ensemble des manipulations de ce support à l'aide de trois instances de machines virtuelles et du commutateur virtuel Virtual Distributed Ethernet présenté dans l'article Virtualisation système et enseignements pratiques
L'infrastructure à implanter sur le système hôte est la suivante.
On débute avec la création des fichiers image des trois systèmes
virtuels. Les fichiers de type .qcow2 sont des images
compressées et sont plus faciles à transférer que les fichiers de type
.raw.
mkdir -p ~/vm/iscsi cd ~/vm/iscsi cp ../vm0-debian-testing-amd64-base.qcow2 targetSrv.qcow2 cp ../vm0-debian-testing-amd64-base.qcow2 1stInitiator.qcow2 cp ../vm0-debian-testing-amd64-base.qcow2 2ndInitiator.qcow2 for file in *.qcow2; do qemu-img convert -f qcow2 -O raw $file `basename $file .qcow2`.raw; done rm *.qcow2
On crée ensuite les fichiers correspondant aux unités de stockage supplémentaires.
qemu-img create -f raw targetSrv-disk.raw 80G qemu-img create -f raw 1stInitiator-disk.raw 32G qemu-img create -f raw 2ndInitiator-disk.raw 32G
Enfin, il ne reste qu'à mettre en place le script de lancement de ces trois systèmes avec leurs unités de stockages respectives.
#!/bin/bash
../scripts/startup.sh targetSrv.raw 512 2 \
-drive file=targetSrv-disk.raw,if=virtio,boot=off
../scripts/startup.sh 1stInitiator.raw 512 3 \
-drive file=1stInitiator-disk.raw,if=virtio,boot=off
../scripts/startup.sh 2ndInitiator.raw 512 4 \
-drive file=2ndInitiator-disk.raw,if=virtio,boot=off
Ce script fait lui-même appel au script commun
startup.sh qui sert à initialiser une instance de
machine virtuelle en utilisant comme paramètres le nom du fichier image, la
quantité de RAM et le port du commutateur
VDE. Le
code du script startup.sh de lancement d'une machine virtuelle est donné en annexe de
l'article
Virtualisation système et enseignements pratiques.
Cette instance de système virtuel joue le rôle du système target iSCSI. On reprend donc ici les manipulations présentées dans la Section 6, « Configuration du système target » après avoir préparé le volume de stockage et les fichiers ressource cible iSCSI.
Lors de l'initialisation des trois systèmes virtuels, on a ajouté un
fichier disque de 80Go à l'instance baptisée
targetSrv. C'est ce volume de stockage qui est
utilisé pour ouvrir l'accès aux deux unités ressources cible
iSCSI.
On reprend les manipulations de la Section 4, « Préparation d'une unité de stockage » pour le partitionnement et le
formatage du volume physique virtuel repéré
/dev/vdb.
dd if=/dev/zero of=/dev/vdb bs=512 count=4 parted /dev/vdb mklabel gpt parted /dev/vdb mkpart primary ext4 1 -1 mkfs.ext4 /dev/vdb1 mkdir /var/lib/target mount /dev/vdb1 /var/lib/target
Pour rendre ce montage «permanent», on édite le fichier
/etc/fstab après avoir identifié le volume de
stockage.
blkid | grep vdb /dev/vdb1: UUID="10f56553-ca7c-4827-b43f-8ef664fcef6f" TYPE="ext4" echo UUID="10f56553-ca7c-4827-b43f-8ef664fcef6f" \ /var/lib/target/ \ ext4 \ defaults \ 0 2 >>/etc/fstab
Une fois le montage du volume effectué à partir du répertoire /var/lib/target, on peut créer les fichiers
ressources cible iSCSI à l'aide de la commande
dd. On crée des fichier de type
Sparse file pour
optimiser l'occupation disque réelle sur le système hôte.
Pour respecter le scénario des travaux pratiques, on utilise des
fichiers de 32Go composés de blocs de 4Ko qui correspondent au volumes de
stockage des deux autres instances de machines virtuelles. La «formule de
calcul» devient : (32 x 1024 x 1024 x 1024) / (4 x 1024) =
8388608.
cd /var/lib/target/ dd if=/dev/null of=1stInitiator.disk bs=4k seek=8388608 dd if=/dev/null of=2ndInitiator.disk bs=4k seek=8388608 ll *.disk -rw-r--r-- 1 root root 32G 7 avril 01:28 1stInitiator.disk -rw-r--r-- 1 root root 32G 7 avril 01:28 2ndInitiator.disk du -hs *.disk 0 1stInitiator.disk 0 2ndInitiator.disk
Comme indiqué dans la Section 6, « Configuration du système target », on
installe les paquets iscsitarget et
iscsitarget-dkms. Le fichier de configuration du
démon ietd contient les références
aux deux fichiers ci-dessus.
egrep -v '(^*#|^$)' /etc/iet/ietd.conf
Target iqn.2011-04.lab.stri:1stInitiator.disk
Lun 0 Path=/var/lib/target/1stInitiator.disk,Type=fileio
Alias 1stInitiator.disk
Target iqn.2011-04.lab.stri:2ndInitiator.disk
Lun 1 Path=/var/lib/target/2ndInitiator.disk,Type=fileio
Alias 2ndInitiator.disk
Une fois le service démarré, ces deux ressources cibles iSCSI sont utilisables.
cat /proc/net/iet/session tid:2 name:iqn.2011-04.lab.stri:2ndInitiator.disk tid:1 name:iqn.2011-04.lab.stri:1stInitiator.disk
Ces deux instances de système virtuel jouent le rôle du système initiator iSCSI. On reprend donc ici les manipulations présentées dans la Section 5, « Configuration du système initiator » avant de passer à la configuration de l'unité logique RAID1.
Vous êtes ici :