Ci-dessous, les différences entre deux révisions de la page.
developpement:productions:iscsiboot4wheezy [2013/06/13 08:18] equemene créée |
developpement:productions:iscsiboot4wheezy [2015/01/07 10:04] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== 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 Squeeze (version 6.0.4) 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é ! | ||
- | |||
- | Sur un noyau rétro-porté (3.2.0), il est nécessaire de rétroporté le paquet iSCSItarget de la Sid, de le compiler et l'installer. Là, le module doit impérativement installé avec DKMS. | ||
- | |||
- | |||
- | ===== 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<code> | ||
- | lvcreate -L 20G -n MyLViSCSI MyVG | ||
- | </code> | ||
- | * Formatage en Ext3<code> | ||
- | mkfs.ext3 -m 0 /dev/MyVG/MyLViSCSI | ||
- | </code> | ||
- | * Montage du volume sur le système hôte<code> | ||
- | mkdir /media/MyLViSCSI | ||
- | mount -o noatime /dev/MyVG/MyLViSCSI /media/MyLViSCSI | ||
- | </code> | ||
- | * Etablissement d'un label sur la partition<code> | ||
- | e2label /dev/MyVG/MyLViSCSI MyLViSCSI | ||
- | </code> | ||
- | * Installation du système de base Squeeze, architecture x86_64 ou i386<code> | ||
- | # 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 | ||
- | </code> | ||
- | * Passage dans l'environnement<code>chroot /media/MyLViSCSI</code> | ||
- | * Création d'une nouvelle liste de paquets<code> | ||
- | tee /etc/apt/sources.list <<EOF | ||
- | deb http://ftp2.fr.debian.org/debian/ wheezy main contrib non-free | ||
- | deb-src http://ftp2.fr.debian.org/debian/ sid main contrib non-free | ||
- | deb-src http://ftp2.fr.debian.org/debian/ experimental main contrib non-free | ||
- | deb http://security.debian.org/ wheezy/updates main contrib non-free | ||
- | deb-src http://security.debian.org/ wheezy/updates main contrib non-free | ||
- | |||
- | EOF | ||
- | </code> | ||
- | * Montage du /proc pendant l'installation<code> | ||
- | mount -t proc none /proc | ||
- | </code> | ||
- | * Initialisation du mot de passe superutilisateur<code>passwd | ||
- | </code> | ||
- | * Installation de paquets nécessaires<code> | ||
- | 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 -t squeeze-backports -y install linux-image-3.2.0-4-686-pae | ||
- | # Pour les architectures x86_64 | ||
- | apt-get -t squeeze-backports -y install linux-image-3.2.0-4-amd64 | ||
- | </code> | ||
- | * Suppression du démarrage du démon iSCSI (en noyau 3.2, le script plante et empêche le démarrage)<code>insserv -r open-iscsi</code> | ||
- | * Paramétrage d'un boot iSCSI<code> | ||
- | touch /etc/iscsi/iscsi.initramfs | ||
- | update-initramfs -k all -u | ||
- | </code> | ||
- | * Vérification de la présence du support iSCSI ''lsinitramfs /boot/initrd.img-* | grep "local-top/iscsi"'' retourne : <code> | ||
- | scripts/local-top/iscsi | ||
- | scripts/local-top/iscsi | ||
- | </code> | ||
- | * Paramétrage de l'interface de démarrage iSCSI<note important>En cas d'interfaces multiples, il est INDISPENSABLE de préciser l'interface de démarrage, sinon...</note><code> | ||
- | sed -i "s/DEVICE\=/DEVICE\=eth0/g" /etc/initramfs-tools/initramfs.conf | ||
- | </code> | ||
- | * Suppression du hostname pour le paramétrage automatique du HOST<code> | ||
- | rm /etc/hostname | ||
- | </code> | ||
- | * Définition de l'interface de loopback<code> | ||
- | tee /etc/network/interfaces <<EOF | ||
- | auto lo | ||
- | iface lo inet loopback | ||
- | EOF | ||
- | </code> | ||
- | * Installation ssmtp en lieu et place de exim !<code> | ||
- | apt-get install ssmtp | ||
- | </code> | ||
- | * Arrêt des services démarrés à l'installation<code> | ||
- | /etc/init.d/dbus stop | ||
- | </code> | ||
- | * Démontage du ''/proc''<code> | ||
- | umount /proc | ||
- | </code> | ||
- | * Sortie de l'environnement chrooté<code> | ||
- | exit | ||
- | </code> | ||
- | |||
- | ===== Configuration du démarrage PXE ===== | ||
- | |||
- | ==== Sur le porteur de cibles iSCSI ==== | ||
- | |||
- | * Copie des composants pour le PXE<code> | ||
- | 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 | ||
- | </code> | ||
- | * Copie des clés autorisées<code>mkdir /media/MyLViSCSI/root/.ssh | ||
- | cp -a /root/.ssh/authorized_keys /media/MyLViSCSI/root/.ssh/ | ||
- | </code> | ||
- | * Démontage de la partition<code> | ||
- | umount /media/MyLViSCSI | ||
- | </code> | ||
- | * Copie des composants de démarrage sur le serveur PXE<code> | ||
- | # Le serveur TFTP/PXE est MyPXE : | ||
- | scp /root/*iSCSI PyPXE:/srv/tftp | ||
- | </code> | ||
- | |||
- | * 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<code> | ||
- | # 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 <<EOF | ||
- | Target iqn.2013-06.MySite.MyHost:MyLViSCSI | ||
- | IncomingUser inputname MyInputPwd | ||
- | Lun 0 Path=/dev/MyVG/MyLViSCSI,BlockSize=4096,Type=fileio | ||
- | EOF | ||
- | </code> | ||
- | * Activation des partages<code> | ||
- | ietadm --op new --tid=86 --params Name=iqn.2013-06.MySite.MyHost:MyLViSCSI | ||
- | ietadm --op new --tid=86 --lun=0 --params Path=/dev/MyVG/MyLViSCSI,BlockSize=4096,Type=fileio | ||
- | ietadm --op new --tid=86 --lun=0 --user --params IncomingUser=inputname,Password=MyInputPwd | ||
- | </code> | ||
- | * Vérification des partages par la commande ''cat /proc/net/iet/volume | grep MyLViSCSI''<code> | ||
- | 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 | ||
- | </code> | ||
- | |||
- | ==== Sur le serveur TFTP de boot PXE ==== | ||
- | |||
- | * Déplacement dans le dossier de configuration TFTP, anciennement ''/srv/tftp'', maintenant <code> | ||
- | cd /srv/tftp/pxelinux.cfg | ||
- | </code> | ||
- | * 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<code> | ||
- | tee iscsi <<EOF | ||
- | DEFAULT linux64 | ||
- | |||
- | LABEL linux64 | ||
- | KERNEL vmlinuz-3.2.0-4-amd64-iSCSI | ||
- | APPEND console=tty1 initrd=initrd.img-3.2.0-4-amd64-iSCSI ip=dhcp rw ISCSI_TARGET_NAME=iqn.2013-06.MySite.MyHost:MyLViSCSI ISCSI_TARGET_IP=MyHost ISCSI_INITIATOR=iqn.2013-06.MySite.MyHost:default ISCSI_USERNAME=inputname ISCSI_TARGET_GROUP=1 ISCSI_PASSWORD=MyInputPwd root=LABEL=MyLViSCSI rootflags=data=journal | ||
- | |||
- | LABEL linux64 | ||
- | KERNEL vmlinuz-3.2.0-4-686-pae-iSCSI | ||
- | APPEND console=tty1 initrd=initrd.img-3.2.0-4-686-pae-iSCSI ip=dhcp rw ISCSI_TARGET_NAME=iqn.2013-06.MySite.MyHost:MyLViSCSI ISCSI_TARGET_IP=MyHost ISCSI_INITIATOR=iqn.2013-06.MySite.MyHost:default ISCSI_USERNAME=inputname ISCSI_TARGET_GROUP=1 ISCSI_PASSWORD=MyInputPwd root=LABEL=MyLViSCSI rootflags=data=journal | ||
- | EOF | ||
- | </code> | ||
- | * Création des liens pour chaque machine spécifique<note important>L'adresse MAC de la forme : ''00:AA:BB:CC:DD:EE'' doit être écrite sous la forme 01-00-AA-BB-CC-DD-EE</note><code> | ||
- | ln -sf iscsi 01-00-AA-BB-CC-DD-EE | ||
- | </code> | ||
- | |||
- | --- //[[emmanuel.quemener@ens-lyon.fr|Emmanuel Quemener]] 2013/06/13 06:05// |