====== Booter iSCSI sous Debian Wheezy ======
===== Contexte =====
* Pourquoi ?
* Pour permettre le démarrage directement sur le réseau d'une machine
* Quoi ?
* Utiliser le protocole iSCSI pour offrir un OS complet sur un périphérique équivalent à un disque
* Quand ?
* N'importe quand. Seule une demi-heure est nécessaire dans environnement maîtrisé (sous Linux/Debian) pour réaliser cette opération.
* Qui ?
* N'importe quel administrateur de 2 machines (ayant un minimum de connaissances, notamment pour le copier/coller des commandes suivantes)
* Où ?
* Sur un réseau local ou distant (un réseau haut débit est préférable, un réseau local également mais iSCSI utilise TCP/IP)
* Combien ?
* Pour l'hôte de cibles iSCSI ou pour le client, n'importe quelle machine suffit, du moment que la machine cliente peut démarrer en PXE
* Comment ?
* C'est ce que nous allons voir
===== iSCSI ou le SCSI par le réseau dans l'environnement Debian =====
Le protocole [[http://fr.wikipedia.org/wiki/ISCSI|iSCSI]] permet à un hôte d'offrir un espace disque (du //mode bloc//) à un hôte distant.
Linux/Debian intègre dans la Wheezy (version 7) tout ce qui permet d'accéder à des volumes iSCSI ou de les créer.
* [[http://www.open-iscsi.org|Open-ISCSI]] pour accéder à des ressources offertes en iSCSI
* [[http://iscsitarget.sourceforge.net/|iSCSItarget]] pour offrir des //targets// iSCSI avec un module noyau
* [[http://stgt.sourceforge.net/|TGT]] pour offrir des //targets// iSCSI sans module noyau
De mon expérience (près de 5 ans sur iSCSItarget et un 1 et demi mois sur TGT), j'aurai tendance à préférer iSCSItarget. Le principal avantage de TGT réside dans son absence de module noyau et donc facile implantation sur un serveur, mais il a un problème de taille : impossible de retirer un volume déclaré !
===== Les prérequis =====
* une machine portant les "cibles" iSCSI, appelée MyHost
* elle dispose d'un espace disque disponible en mode bloc (fichiers, disques, volumes)
* elle a installé une implémentation de cibles iSCSI
* une machine portant un serveur TFTP avec les images PXE, appelée MyPXE
* une machine pouvant démarrer en PXE, d'adresse MAC simplement 00:AA:BB:CC:DD:EE, disposant d'une IP fournie par DHCP
===== Machine portant les partages iSCSI =====
Il est supposé que la machine MyHost dispose d'une infrastructure LVM :
* son VG est MyVG
* le nom du LV à créer est MyLViSCSI
* Création du volume LVM de 20G sur le VG Raid6
lvcreate -L 20G -n MyLViSCSI MyVG
* Formatage en Ext3
mkfs.ext3 -m 0 /dev/MyVG/MyLViSCSI
* Montage du volume sur le système hôte
mkdir /media/MyLViSCSI
mount -o noatime /dev/MyVG/MyLViSCSI /media/MyLViSCSI
* Etablissement d'un label sur la partition
e2label /dev/MyVG/MyLViSCSI MyLViSCSI
* Installation au besoin de ''debootstrap''apt-get install debootstrap
* Installation du système de base Wheezy, architecture x86_64 ou i386
# pour une architecture x86_64
debootstrap --arch amd64 wheezy /media/MyLViSCSI http://ftp.fr.debian.org/debian
# pour une architecture i386
debootstrap --arch i386 wheezy /media/MyLViSCSI http://ftp.fr.debian.org/debian
* Passage dans l'environnementchroot /media/MyLViSCSI
* Création d'une nouvelle liste de paquets
tee /etc/apt/sources.list <
* Mise à jour de la base des paquets : apt-get update
* Montage du /proc pendant l'installation
mount -t proc none /proc
* Initialisation du mot de passe superutilisateurecho "root:MyStrongPassword" | chpasswd
* Installation de paquets nécessaires
apt-get -y install dhcp3-common openssh-server locales initramfs-tools dhcp3-client aufs-tools firmware-linux-nonfree firmware-linux firmware-bnx2 open-iscsi iftop htop iotop emacs mtr lsof tshark mbw memtest86 cpuburn bonnie dbench iozone3 console-setup less && apt-get clean
# Pour les architectures i686
apt-get -y install linux-image-3.2.0-4-686-pae
# Pour les architectures x86_64
apt-get -y install linux-image-3.2.0-4-amd64
* Purge des archives de paquets :apt-get clean
* Suppression du démarrage du démon iSCSI (en noyau 3.2, le script plante et empêche le démarrage)insserv -r open-iscsi
* Paramétrage d'un boot iSCSI
touch /etc/iscsi/iscsi.initramfs
update-initramfs -k all -u
* Vérification de la présence du support iSCSI ''lsinitramfs /boot/initrd.img-* | grep "local-top/iscsi"'' retourne :
scripts/local-top/iscsi
scripts/local-top/iscsi
* Paramétrage de l'interface de démarrage iSCSIEn cas d'interfaces multiples, il est INDISPENSABLE de préciser l'interface de démarrage, sinon...
sed -i "s/DEVICE\=/DEVICE\=eth0/g" /etc/initramfs-tools/initramfs.conf
* Suppression du hostname pour le paramétrage automatique du HOST
rm /etc/hostname
* Définition de l'interface de loopback
tee /etc/network/interfaces <
* Démontage du ''/proc''
umount /proc
* Sortie de l'environnement chrooté
exit
* Arrêt des services démarrés à l'installation
lsof | grep /media/MyLViSCSI | awk '{ print $2 }' | sort -u | xargs -I '{}' kill '{}'
===== Configuration du démarrage PXE =====
==== Sur le porteur de cibles iSCSI ====
* Copie des composants pour le PXE
cp /media/MyLViSCSI/boot/initrd.img-3.2.0-4-686-pae /root/initrd.img-3.2.0-4-686-pae-iSCSI
cp /media/MyLViSCSI/boot/vmlinuz-3.2.0-4-686-pae /root/vmlinuz-3.2.0-4-686-pae-iSCSI
cp /media/MyLViSCSI/boot/initrd.img-3.2.0-4-amd64 /root/initrd.img-3.2.0-4-amd64-iSCSI
cp /media/MyLViSCSI/boot/vmlinuz-3.2.0-4-amd64 /root/vmlinuz-3.2.0-4-amd64-iSCSI
* Copie des clés autoriséesmkdir /media/MyLViSCSI/root/.ssh
cp -a /root/.ssh/authorized_keys /media/MyLViSCSI/root/.ssh/
* Démontage de la partition
umount /media/MyLViSCSI
* Copie des composants de démarrage sur le serveur PXE
# Le serveur TFTP/PXE est MyPXE :
scp /root/*iSCSI PyPXE:/srv/tftp
* Création d'un partage iSCSI nécessitant les paramètres
* IQN (pour iSCSI Qualified Name) : ''iqn.2012-04.MySite.MyHost:MyLViSCSI''
* identifiant : ''inputname''
* mot de passe : ''MyInputPwd''
* chemin : ''/dev/MyVG/MyLViSCSI''
* Paramétrage de la cible IET
# Renommage de l'ancien fichier de configuration
cp /etc/iet/ietd.conf /etc/iet/ietd.conf-$(date +%Y%m%d)
# Ajout de l'entree précedente
tee -a /etc/iet/ietd.conf <
* Activation des partages
ietadm --op new --tid=100 --params Name=iqn.2013-06.MySite.MyHost:MyLViSCSI
ietadm --op new --tid=100 --lun=0 --params Path=/dev/MyVG/MyLViSCSI,BlockSize=4096,Type=fileio
ietadm --op new --tid=100 --lun=0 --user --params IncomingUser=inputname,Password=MyInputPwd
* Vérification des partages par la commande ''cat /proc/net/iet/volume | grep MyLViSCSI''
cat /proc/net/iet/volume | grep MyLViSCSI
tid:86 name:iqn.2013-03.MySite.MyHost:MyLViSCSI
lun:0 state:0 iotype:fileio iomode:wt blocks:5242880 blocksize:4096 path:/dev/MyVG/MyLViSCSI
==== Sur le serveur TFTP de boot PXE ====
* Déplacement dans le dossier de configuration TFTP, anciennement ''/srv/tftp'', maintenant
cd /srv/tftp/pxelinux.cfg
* Déclaration de l'entrée TFTP pour notre entrée
* ''ISCSI_TARGET_NAME'' : IQN
* ''ISCSI_TARGET_IP'' : hôte de cibles iSCSI
* ''ISCSI_INITIATOR'' : IQN
* ''ISCSI_USERNAME'' : identifiant
* ''ISCSI_PASSWORD'' : mot de passe
* ''ISCSI_TARGET_GROUP'' : groupe, généralement 1
tee iscsi <
* Création des liens pour chaque machine spécifique. Ll'adresse MAC de la forme : ''00:AA:BB:CC:DD:EE'' doit être écrite sous la forme 01-00-aa-bb-cc-dd-ee en MINUSCULE !
ln -sf iscsi 01-00-aa-bb-cc-dd-ee
--- //[[emmanuel.quemener@ens-lyon.fr|Emmanuel Quemener]] 2013/06/13 06:05//