Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
2455 lines (2138 sloc) 98.6 KB
<?xml version='1.0'?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V5.0//EN"
"/usr/share/xml/docbook/schema/dtd/5.0/docbook.dtd" [
<!ENTITY author SYSTEM "author.xml">
<!ENTITY legal SYSTEM "legal.xml">
<!ENTITY % inetdoc_urls SYSTEM 'inetdoc.urls.xml'>
%inetdoc_urls;
<!ENTITY % rfc_urls SYSTEM 'rfc.urls.xml'>
%rfc_urls;
<!ENTITY url.bonding
'<link xmlns="http://docbook.org/ns/docbook" xlink:href="http://www.linuxfoundation.org/collaborate/workgroups/networking/bonding">
<citetitle>bonding</citetitle></link>'>
<!ENTITY url.etherchannel
'<link xmlns="http://docbook.org/ns/docbook" xlink:href="http://www.cisco.com/en/US/tech/tk389/tk213/technologies_white_paper09186a0080092944.shtml">
<citetitle>etherchannel</citetitle></link>'>
<!ENTITY url.multipath
'<link xmlns="http://docbook.org/ns/docbook" xlink:href="http://sources.redhat.com/lvm2/wiki/MultipathUsageGuide">
<citetitle>multipath</citetitle></link>'>
<!ENTITY url.open-iscsi
'<link xmlns="http://docbook.org/ns/docbook" xlink:href="http://www.open-iscsi.org/">
<citetitle>Open-iSCSI</citetitle></link>'>
<!ENTITY url.iscsitarget
'<link xmlns="http://docbook.org/ns/docbook" xlink:href="http://linux-iscsi.org/">
<citetitle>Linux-IO : the Linux SCSI Target wiki</citetitle></link>'>
<!ENTITY url.usingparted
'<link xmlns="http://docbook.org/ns/docbook" xlink:href="http://www.gnu.org/software/parted/manual/html_node/Using-Parted.html#Using-Parted">
<citetitle>Using Parted</citetitle></link>'>
<!ENTITY url.ext4howto
'<link xmlns="http://docbook.org/ns/docbook" xlink:href="https://ext4.wiki.kernel.org/index.php/Ext4_Howto">
<citetitle>Ext4 Howto</citetitle></link>'>
<!ENTITY url.iscsi.debian.wiki
'<link xmlns="http://docbook.org/ns/docbook" xlink:href="http://wiki.debian.org/SAN/iSCSI">
<citetitle>iSCSI and Debian</citetitle></link>'>
<!ENTITY url.iscsi.linux-mag.introduction
'<link xmlns="http://docbook.org/ns/docbook" xlink:href="http://www.linux-mag.com/id/7605/">
<citetitle>Introduction to iSCSI</citetitle></link>'>
<!ENTITY url.sparse_file
'<link xmlns="http://docbook.org/ns/docbook" xlink:href="http://en.wikipedia.org/wiki/Sparse_file">
<citetitle>Sparse file</citetitle></link>'>
]>
<article xml:id='sysadm-net.iscsi.qa' xml:lang='fr'>
<info>
<title>Introduction au réseau de stockage iSCSI</title>
&author;
<abstract>
<para>
<informaltable frame='none' pgwide='1'>
<tgroup cols='2' align='left' colsep='0' rowsep='0'>
<colspec colwidth='5*'/>
<colspec colwidth='220px'/>
<tbody>
<row>
<entry valign='top'>
<para>Ce support de travaux pratiques est consacré à l'étude d'une
infrastructure de stockage illustrant les technologies DAS
(<wordasword>Direct Attached Storage</wordasword>), SAN
(<wordasword>Storage Area Network</wordasword>) et la redondance de
niveau 1 (<acronym>RAID1</acronym>). Le protocole
<acronym>iSCSI</acronym> est utilisé pour la partie
<acronym>SAN</acronym> comme exemple d'accès «en mode bloc» aux unités
de stockage réseau. La redondance de niveau 1 utilise les fonctions
intégrées au noyau Linux. L'infrastructure proposée montre comment les
différentes technologies élémentaires peuvent être combinées pour
atteindre les objectifs de haute disponibilité et de sauvegarde.</para>
</entry>
<entry>
<inlinemediaobject>
<imageobject role='fo'>
<imagedata fileref='images/targetcli.png' format='PNG' width='5cm' scalefit='1'/>
</imageobject>
<imageobject role='html'>
<imagedata fileref='images/targetcli.png' format='PNG' width='18em' scalefit='1'/>
</imageobject>
</inlinemediaobject>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</abstract>
<keywordset>
<keyword>DAS</keyword>
<keyword>debian</keyword>
<keyword>iscsi</keyword>
<keyword>initiator</keyword>
<keyword>linux</keyword>
<keyword>LIO</keyword>
<keyword>mdadm</keyword>
<keyword>RAID</keyword>
<keyword>SAN</keyword>
<keyword>target</keyword>
<keyword>targetcli</keyword>
</keywordset>
</info>
<sect1 xml:id='sysadm-net.iscsi.qa.legal.meta'>
&legal;
<sect2 xml:id='sysadm-net.iscsi.qa.meta'>
<title>Méta-information</title>
<para>Ce document est écrit avec <link
xlink:href="http://www.docbook.org"><citetitle>DocBook</citetitle></link>
XML sur un système <link
xlink:href="http://www.debian.org"><citetitle>Debian
GNU/Linux</citetitle></link>. Il est disponible en version
imprimable au format PDF : <link
xlink:href="https://www.inetdoc.net/pdf/__printbasename__"><literal>__printbasename__</literal></link>.</para>
</sect2>
<sect2 xml:id='sysadm-net.iscsi.qa.convtypo'>
<title>Conventions typographiques</title>
<para>Tous les exemples d'exécution des commandes sont précédés d'une
invite utilisateur ou <wordasword>prompt</wordasword> spécifique au
niveau des droits utilisateurs nécessaires sur le système.</para>
<itemizedlist>
<listitem>
<para>Toute commande précédée de l'invite <prompt>$</prompt> ne nécessite
aucun privilège particulier et peut être utilisée au niveau utilisateur
simple.</para>
</listitem>
<listitem>
<para>Toute commande précédée de l'invite <prompt>#</prompt> nécessite les
privilèges du super-utilisateur.</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 xml:id='sysadm-net.iscsi.qa.affectation'>
<title>Adressage IP des postes de travail</title>
<para>À partir de l'infrastructure proposée dans la <link
linkend='sysadm-net.iscsi.qa.topology'>section suivante</link>, on
constitue des couples de postes de travail qui vont partager le même
domaine de diffusion durant la séance de travaux pratiques.</para>
<para>Ces opérations de réaffectation du plan d'adressage <acronym>IP</acronym>
sont répétées à chaque début de séance de travaux pratiques. Elles
s'appuient sur les indications données dans le document
&url.infra.tp;.</para>
<table frame='all' pgwide='1'>
<title>Affectation des adresses et des réseaux IP de la salle 211</title>
<tgroup cols='3' align='left' colsep='1' rowsep='1'>
<thead>
<row>
<entry>Poste 1</entry>
<entry>Poste 2</entry>
<entry>Passerelle par défaut</entry>
</row>
</thead>
<tbody>
<row>
<entry>christophsis</entry>
<entry>corellia</entry>
<entry><systemitem class='ipaddress'>192.168.143.129/25</systemitem></entry>
</row>
<row>
<entry>delaya</entry>
<entry>kasyyyk</entry>
<entry><systemitem class='ipaddress'>10.30.5.129/26</systemitem></entry>
</row>
<row>
<entry>korriban</entry>
<entry>kessel</entry>
<entry><systemitem class='ipaddress'>192.168.6.17/29</systemitem></entry>
</row>
<row>
<entry>mygeeto</entry>
<entry>nelvaan</entry>
<entry><systemitem class='ipaddress'>10.0.10.33/27</systemitem></entry>
</row>
<row>
<entry>rattatak</entry>
<entry>saleucami</entry>
<entry><systemitem class='ipaddress'>10.3.20.161/27</systemitem></entry>
</row>
<row>
<entry>taris</entry>
<entry>teth</entry>
<entry><systemitem class='ipaddress'>172.20.12.17/29</systemitem></entry>
</row>
<row>
<entry>utapau</entry>
<entry>yavin</entry>
<entry><systemitem class='ipaddress'>10.8.10.65/26</systemitem></entry>
</row>
</tbody>
</tgroup>
</table>
<table frame='all' pgwide='1'>
<title>Affectation des adresses et des réseaux IP de la salle 213</title>
<tgroup cols='3' align='left' colsep='1' rowsep='1'>
<thead>
<row>
<entry>Poste 1</entry>
<entry>Poste 2</entry>
<entry>Passerelle par défaut</entry>
</row>
</thead>
<tbody>
<row>
<entry>alderaan</entry>
<entry>bespin</entry>
<entry><systemitem class='ipaddress'>10.4.4.1/23</systemitem></entry>
</row>
<row>
<entry>centares</entry>
<entry>coruscant</entry>
<entry><systemitem class='ipaddress'>192.168.109.1/25</systemitem></entry>
</row>
<row>
<entry>dagobah</entry>
<entry>endor</entry>
<entry><systemitem class='ipaddress'>10.0.117.1/27</systemitem></entry>
</row>
<row>
<entry>felucia</entry>
<entry>geonosis</entry>
<entry><systemitem class='ipaddress'>10.7.10.1/23</systemitem></entry>
</row>
<row>
<entry>hoth</entry>
<entry>mustafar</entry>
<entry><systemitem class='ipaddress'>172.19.112.1/26</systemitem></entry>
</row>
<row>
<entry>naboo</entry>
<entry>tatooine</entry>
<entry><systemitem class='ipaddress'>192.168.111.1/25</systemitem></entry>
</row>
</tbody>
</tgroup>
</table>
<para>Une fois la passerelle du réseau <acronym>IP</acronym> affecté à chaque
paire de postes de travaux pratiques, il faut rechercher dans le document
&url.infra.tp; les éléments nécessaires à la connexion physique de ces
postes. Les étapes usuelles sont les suivantes :</para>
<orderedlist>
<listitem>
<para>Attribuer une adresse <acronym>IP</acronym> à chacun des postes en
fonction de l'espace d'adressage du réseau défini.</para>
</listitem>
<listitem>
<para>Rechercher le numéro de VLAN correspondant au réseau
<acronym>IP</acronym> attribué.</para>
</listitem>
<listitem>
<para>Repérer le commutateur sur lequel des ports ont été affectés au VLAN
recherché. Connecter les deux postes de travaux pratiques sur les ports
identifiés.</para>
</listitem>
<listitem>
<para>Configurer les interfaces réseau de chaque poste : adresse, masque et
passerelle par défaut. Valider la connectivité <acronym>IP</acronym>
entre les deux postes puis avec les autres réseaux de l'infrastructure
de travaux pratiques.</para>
</listitem>
</orderedlist>
</sect1>
<sect1 xml:id='sysadm-net.iscsi.qa.topology'>
<title>Technologie iSCSI et topologie de travaux pratiques</title>
<para>Cette section présente sommairement le protocole
<acronym>iSCSI</acronym> puis attribue les rôles et les tâches de
chacun des postes de travaux pratiques en fonction de la topologie mise
en œuvre. Ce support fait suite à la présentation sur le &url.storage;
utilisée en cours.</para>
<sect2 xml:id='sysadm-net.iscsi.qa.topology.techno'>
<title>Bases de la technologie iSCSI</title>
<mediaobject>
<imageobject>
<imagedata fileref='images/topologie-iscsi.png' format='PNG' contentwidth='15cm' width='15.5cm'/>
</imageobject>
<textobject>
<phrase>Topologie iSCSI basique</phrase>
</textobject>
<caption>
<para><link xmlns="http://docbook.org/ns/docbook"
xlink:href='https://www.inetdoc.net/travaux_pratiques/sysadm-net.iscsi.qa/images/topologie-iscsi.png'>Topologie
iSCSI basique - vue complète</link></para>
</caption>
</mediaobject>
<para>La technologie <acronym>iSCSI</acronym> dont l'acronyme reprend la
définition historique <wordasword>Internet Small Computer System
Interface</wordasword> est un protocole réseau de stockage basé sur
le modèle <acronym>TCP/IP</acronym>. Le principe de base consiste à
encapsuler des commandes <acronym>SCSI</acronym> dans des paquets
<acronym>IP</acronym> transmis entre un hôte et une unité de disque.
Comme les paquets <acronym>IP</acronym> peuvent être perdus, retransmis
ou ne pas arriver dans l'ordre d'émission. Le protocole
<acronym>iSCSI</acronym> doit donc conserver une trace de la séquence de
transmission de commandes <acronym>SCSI</acronym>. Les commandes sont
placées dans une file d'attente dans l'ordre d'émission.</para>
<para>Le protocole <acronym>iSCSI</acronym> a initialement été développé
par <citetitle>IBM</citetitle> et a ensuite été soumis à
l'<acronym>IETF</acronym> (<wordasword>Internet Engineering Task
Force</wordasword>). Le standard a été publié par le comité
<wordasword>IP Storage Working Group</wordasword> en août 2002.</para>
<para>On peut identifier deux fonctions principales dans la technologie
<acronym>iSCSI</acronym>. La première est la fonction
<wordasword>target</wordasword>. C'est un système simple qui possède le
volume de stockage à publier sur le réseau <acronym>IP</acronym>. Ce
système peut être matériel ou logiciel. Dans le cas de ces travaux
pratiques, il s'agit d'un poste de travail utilisant son second disque
dur ou bien un fichier comme unité de stockage <acronym>SAN</acronym>.
La seconde fonction est baptisée <wordasword>initiator</wordasword>.
Elle correspond au «client» qui utilise le volume de stockage réseau.
Dans le contexte de ce document, l'autre poste de travaux pratiques
joue ce rôle de client.</para>
<para>Fondamentalement, <acronym>iSCSI</acronym> est un protocole de la
famille <wordasword>Storage Area Network</wordasword>
(<acronym>SAN</acronym>). Le client ou
<wordasword>initiator</wordasword> accède à une unité de stockage en
<emphasis>mode bloc</emphasis>. Ce mode de fonctionnement est quasi
identique à la technologie <wordasword>Fibre Channel</wordasword>. Le
type de réseau constitue la principale différence entre ces deux
technologies. La technologie <acronym>iSCSI</acronym> s'appuie sur
<acronym>TCP/IP</acronym> alors que <wordasword>Fibre
Channel</wordasword> comprend une définition de réseau propre
(<acronym>FC</acronym>) qui nécessite des équipements
spécifiques.</para>
<para>Ces dernières années, la technologie <acronym>iSCSI</acronym> a gagné
en popularité relativement à son ainée pour plusieurs raisons.</para>
<itemizedlist>
<listitem>
<para>Le prix des configurations <acronym>iSCSI</acronym> peut être bien
meilleur marché qu'avec la technologie <wordasword>Fibre
Channel</wordasword>. Si l'architecture du réseau de de stockage
est adaptée, <acronym>iSCSI</acronym> devient très attractif.</para>
<para>Il est important de bien identifier les fonctionnalités réseau que
l'on associe à <acronym>iSCSI</acronym> pour accroître les performances
du stockage. Dans ces fonctions complémentaires on trouve l'agrégation
de canaux qui recouvre plusieurs dénominations et plusieurs standards
de l'<acronym>IEEE</acronym>. Par exemple, elle est baptisée
&url.bonding; sur les systèmes GNU/Linux et &url.etherchannel; sur les
équipements <citetitle>Cisco</citetitle>. Côté standard, le
<wordasword>Link Aggregation Control Protocol</wordasword>
(<acronym>LACP</acronym>) pour Ethernet est couvert par les versions
<citetitle>IEEE 802.3ad</citetitle>, <citetitle>IEEE
802.1aq</citetitle> et <citetitle>IEEE 802.1AX</citetitle>.
L'utilisation de ces techniques est totalement transparente entre
équipements hétérogènes. En appliquant ce principe d'agrégation de
canaux, on peut pratiquement assimiler les performances de quatre liens
Gigabit Ethernet à celles d'un lien <wordasword>Fibre
Channel</wordasword>. Une autre technique consiste à utiliser aussi
plusieurs liens dans une optique de redondance et de balance de charge.
Elle est appelé &url.multipath;.</para>
</listitem>
<listitem>
<para>L'utilisation d'une technologie réseau unique est nettement moins
complexe à administrer. En effet, on optimise les coûts, les temps de
formation et d'exploitation en utilisant une architecture de
commutation homogène. C'est un des avantages majeurs de la technologie
Ethernet sur ses concurrentes.</para>
</listitem>
<listitem>
<para>Au début de son exploitation, le coût d'un réseau 10 Gigabit Ethernet
est élevé relativement à toutes les autres solutions. Du point de vue
hôte, le point déterminant est l'uniformisation de l'interface réseau.
En effet, avec une interface 10GigE on ne devrait plus avoir de
distinction entre <acronym>NIC</acronym> et
<acronym>HBA</acronym>.</para>
</listitem>
</itemizedlist>
<para>Aujourd'hui la technologie <acronym>iSCSI</acronym> est supportée par
tous les systèmes d'exploitation communs. Côté GNU/Linux, plusieurs
projets ont vu le jour dans les années qui ont suivi la publication du
standard en 2002. Pour la partie <wordasword>initiator</wordasword> les
développements des deux projets phares ont fusionné pour ne plus
fournir qu'un seul code source ; celui disponible à l'adresse
&url.open-iscsi;. La partie <wordasword>target</wordasword> a suivi un
processus analogue et le code source est disponible à l'adresse
&url.iscsitarget;.La partie <wordasword>Kernelspace</wordasword> de ce
dernier code est maintenant directement intégrée dans le noyau Linux.
La mise en œuvre du rôle <wordasword>target</wordasword> ne nécessite
donc que l'installation de la partie utilisateur pour paramétrer le
sous-système de stockage du noyau.</para>
<para>À partir des informations fournies à l'adresse &url.iscsitarget;, on
recherche le paquet utile de la distribution pour la configuration du
rôle <wordasword>target</wordasword> :</para>
<screen><prompt>$</prompt> aptitude search targetcli
p targetcli-fb - Command shell for managing the Linux LIO kernel target</screen>
<para>Le choix du paquet pour le rôle <wordasword>initiator</wordasword> à
l'aide de la liste ci-dessous est plus facile en combinant les deux
critères de recherche. C'est le paquet
<application>open-iscsi</application> qui convient.</para>
<screen><prompt>$</prompt> aptitude search "?description(scsi)?description(initiator)"
p open-iscsi - iSCSI initiator tools
p open-isns-discoveryd - Internet Storage Name Service - iSNS discovery daemon
p resource-agents - Cluster Resource Agents</screen>
</sect2>
<sect2 xml:id='sysadm-net.iscsi.qa.topology.infrastructure'>
<title>Infrastructure de stockage étudiée</title>
<para>Le séquencement des opérations à réaliser lors de la séance de
travaux pratiques est décrit dans le tableau ci-dessous. Les deux
postes occupent chacun un rôle distinct. Comme le rôle
<wordasword>initiator</wordasword> demande moins de travail de
préparation, c'est à ce poste que l'on confie les essais des outils de
<wordasword>micro-benchmark</wordasword>.</para>
<table frame='all' pgwide='1'>
<title>Attribution des rôles</title>
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
<colspec colnum='1' colname='c1' colwidth='1*'/>
<colspec colnum='2' colname='c2' colwidth='1*'/>
<thead>
<row>
<entry>Rôle <wordasword>initiator</wordasword></entry>
<entry>Rôle <wordasword>target</wordasword></entry>
</row>
</thead>
<tbody>
<row>
<entry>Préparation d'une unité de stockage locale pour évaluer les
différences entre les accès <acronym>DAS</acronym> et
<acronym>SAN</acronym></entry>
<entry>Préparation d'une unité de stockage <acronym>iSCSI</acronym></entry>
</row>
<row>
<entry>Recherche et installation du ou des paquet(s) pour le rôle
<wordasword>initiator</wordasword></entry>
<entry>Recherche et installation du ou des paquet(s) pour le rôle
<wordasword>target</wordasword></entry>
</row>
<row>
<entry>Étude des outils de configuration du service</entry>
<entry>Étude des outils de configuration du service</entry>
</row>
<row>
<entry namest='c1' nameend='c2' align='center'>Validation manuelle de la
configuration <acronym>SAN</acronym> <acronym>iSCSI</acronym></entry>
</row>
<row>
<entry namest='c1' nameend='c2' align='center'>Validation de la
configuration système</entry>
</row>
<row>
<entry namest='c1' nameend='c2' align='center'>Validation de
l'authentification mutuelle entre les rôles
<wordasword>initiator</wordasword> et
<wordasword>target</wordasword></entry>
</row>
<row>
<entry>Mise en place de la réplication synchrone avec un tableau
<acronym>RAID1</acronym> entre unité de disque locale et le volume
<acronym>iSCSI</acronym></entry>
<entry>Mise en place de la réplication asynchrone avec un volume logique de
type <wordasword>snapshot</wordasword> de sauvegarde des fichiers
images de volume de stockage</entry>
</row>
<row>
<entry namest='c1' nameend='c2' align='center'>Étude comparative des
performances d'accès</entry>
</row>
</tbody>
</tgroup>
</table>
</sect2>
</sect1>
<sect1 xml:id='sysadm-net.iscsi.qa.storage'>
<title>Préparation d'une unité de stockage</title>
<para>Dans cette section on présente les manipulations à effectuer pour
préparer une unité de stockage à son utilisation dans une configuration
<acronym>DAS</acronym> (et|ou) <acronym>SAN</acronym>.</para>
<warning>
<para>Les copies d'écran utilisées dans les réponses correspondent à
l'utilisation de machines virtuelles. Les unités de disques
apparaissent donc sous le nom <option>/dev/vd[a-z]</option>. Les unités
de disques physiques d'un système réel apparaissent sous le nom
<option>/dev/sd[a-z]</option>.</para>
</warning>
<sect2 xml:id='sysadm-net.iscsi.qa.storage.blank'>
<title>Destruction de la table des partitions</title>
<para>Sachant que les disques des postes de travaux pratiques sont utilisés
régulièrement, il est préférable de se placer dans le contexte
d'utilisation d'une unité de disque vierge de tout système de
fichiers.</para>
<qandaset defaultlabel='number'>
<qandadiv>
<qandaentry>
<question>
<para><phrase>Quelle est la syntaxe d'appel de l'outil
<application>parted</application> qui permet de visualiser la table
de partition d'une unité de disque ?</phrase></para>
<para>Consulter la documentation de <application>parted</application> à
l'adresse &url.usingparted;.</para>
</question>
<answer>
<screen><prompt>#</prompt> parted /dev/vda print
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 34,4GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 256MB 255MB primary ext2 boot
2 257MB 34,4GB 34,1GB extended
5 257MB 34,4GB 34,1GB logical lvm</screen>
</answer>
</qandaentry>
<qandaentry>
<question>
<para><phrase>Quelle est la syntaxe de la commande <command>dd</command>
qui permet d'effacer complètement la table des partitions d'une
unité de disque ?</phrase></para>
<para>Utiliser l'aide en ligne de la commande : <userinput>dd
--help</userinput>.</para>
</question>
<answer>
<para>La commande suivante écrit des 0 dans les 4 premiers blocs de 512
octets de l'unité de disque.</para>
<screen><prompt>#</prompt> dd if=/dev/zero of=/dev/vdb bs=512 count=4
4+0 enregistrements lus
4+0 enregistrements écrits
2048 octets (2,0 kB) copiés, 0,00135867 s, 1,5 MB/s
<prompt>#</prompt> parted /dev/vdb print
Error: /dev/vdb: unrecognised disk label</screen>
</answer>
</qandaentry>
</qandadiv>
</qandaset>
</sect2>
<sect2 xml:id='sysadm-net.iscsi.qa.storage.setup'>
<title>Création de la table des partitions et formatage</title>
<para>Une fois que l'on dispose d'une unité de disque vierge, on peut
passer à l'étape de création de la table des partitions. Dans le
contexte de ces travaux pratiques, cette opération doit être effectuée
deux fois sur les postes de travail pour les deux types d'unité de
stockage utilisées.</para>
<orderedlist>
<listitem>
<para>Le second disque physique des postes de travail est destiné à
intégrer l'unité logique <acronym>RAID1</acronym>.</para>
</listitem>
<listitem>
<para>Le disque réseau iSCSI est disponible une fois que la configuration
du rôle <wordasword>initiator</wordasword> est active.</para>
</listitem>
</orderedlist>
<para>Cette manipulation est l'opération de plus bas niveau qui caractérise
un accès réseau au stockage en <emphasis>mode bloc</emphasis> et non en
mode fichier.</para>
<qandaset defaultlabel='number'>
<qandaentry>
<question>
<para><phrase>Comment créer une partition unique couvrant la totalité de
l'espace de stockage de l'unité de disque ?</phrase></para>
<para>Consulter la documentation de <application>parted</application> à
l'adresse &url.usingparted;.</para>
</question>
<answer>
<screen><prompt>#</prompt> parted /dev/vdb
GNU Parted 2.3
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) <emphasis>print</emphasis>
Error: /dev/vdb: unrecognised disk label
(parted) <emphasis>mklabel gpt</emphasis>
(parted) <emphasis>print</emphasis>
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 85,9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
(parted) <emphasis>mkpart ext4 0% 100%</emphasis>
(parted) <emphasis>print</emphasis>
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 85,9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 1049kB 85,9GB 85,9GB ext4 ext4
(parted) quit</screen>
</answer>
</qandaentry>
<qandaentry>
<question>
<para><phrase>Quelle est la commande à utiliser pour les opérations de
formatage ? Quel est le rôle de l'option <option>-T</option> de
cette commande ?</phrase></para>
<para>Les informations utiles sont disponibles à la page &url.ext4howto;.
Les pages de manuels détaillent les fonctions des options.</para>
</question>
<answer>
<para>La commande utilisée pour le formatage d'un système de fichiers
<option>ext4</option>.</para>
<screen><prompt>#</prompt> dpkg -S `which mkfs.ext4`
e2fsprogs: /sbin/mkfs.ext4</screen>
<para>L'option <option>-T</option> définit le type d'utilisation du système
de fichiers à formater suivant sa taille. Les paramètres par défaut
sont les suivants :</para>
<itemizedlist>
<listitem>
<para><option>floppy</option> : 0 &lt; taille &lt; 3Mo</para>
</listitem>
<listitem>
<para><option>small</option> : 3Mo &lt; taille &lt; 512Mo</para>
</listitem>
<listitem>
<para><option>default</option> : 512Mo &lt; taille &lt; 4To</para>
</listitem>
<listitem>
<para><option>big</option> : 4To &lt; taille &lt; 16To</para>
</listitem>
<listitem>
<para><option>huge</option> : 16To &lt; taille</para>
</listitem>
</itemizedlist>
</answer>
</qandaentry>
<qandaentry>
<question>
<para><phrase>Quelle est la syntaxe de la commande de formatage de la
partition créée lors de l'étape précédente ?</phrase></para>
<para>Des exemples de syntaxe sont disponibles à la page
&url.ext4howto;.</para>
</question>
<answer>
<screen><prompt>#</prompt> <emphasis>mkfs.ext4 /dev/vdb1</emphasis>
mke2fs 1.42.5 (29-Jul-2012)
Étiquette de système de fichiers=
Type de système d'exploitation : Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
« Stride » = 0 blocs, « Stripe width » = 0 blocs
5242880 i-noeuds, 20971008 blocs
1048550 blocs (5.00%) réservés pour le super utilisateur
Premier bloc de données=0
Nombre maximum de blocs du système de fichiers=4294967296
640 groupes de blocs
32768 blocs par groupe, 32768 fragments par groupe
8192 i-noeuds par groupe
Superblocs de secours stockés sur les blocs :
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000
Allocation des tables de groupe : complété
Écriture des tables d'i-noeuds : complété
Création du journal (32768 blocs) : complété
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété</screen>
</answer>
</qandaentry>
<qandaentry>
<question>
<para><phrase>Quelle est la syntaxe de la commande de visualisation des attributs
du système de fichiers créé lors du formatage ?</phrase></para>
<para>Les informations utiles sur les attributs sont fournies à la page
&url.ext4howto;.</para>
</question>
<answer>
<screen><prompt>#</prompt> <emphasis>tune2fs -l /dev/vdb1</emphasis>
tune2fs 1.42.13 (17-May-2015)
Filesystem volume name: &lt;none>
Last mounted on: /var/lib/iscsi-target
Filesystem UUID: 3ccc9115-f206-4a05-86f3-5902ac49b82d
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index \
filetype needs_recovery extent flex_bg sparse_super \
large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 4718592
Block count: 18873856
Reserved block count: 943692
Free blocks: 18531693
Free inodes: 4718581
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 1019
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
Flex block group size: 16
Filesystem created: Sun Aug 23 17:20:15 2015
Last mount time: Sun Aug 23 17:36:50 2015
Last write time: Sun Aug 23 17:36:50 2015
Mount count: 2
Maximum mount count: -1
Last checked: Sun Aug 23 17:20:15 2015
Check interval: 0 (&lt;none>)
Lifetime writes: 1284 MB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 28
Desired extra isize: 28
Journal inode: 8
Default directory hash: half_md4
Directory Hash Seed: 8edb7b6a-5586-4d32-a02a-de231242f353
Journal backup: inode blocks</screen>
</answer>
</qandaentry>
</qandaset>
</sect2>
<sect2 xml:id='sysadm-net.iscsi.qa.storage.mount'>
<title>Montage manuel d'un volume de stockage</title>
<para>Une fois qu'un volume de stockage a été partitionné et formaté, il faut
le <emphasis>monter</emphasis> dans l'arborescence du système de fichiers de
la machine de façon à lire et écrire des données dedans.</para>
<qandaset>
<qandaentry>
<question>
<para><phrase>Comment obtenir l'identifiant du volume de stockage à
ajouter au système de fichiers ?</phrase></para>
<para>Consulter la liste des utilitaires fournis avec le paquet
<application>util-linux</application>. Il faut se rappeler que la
représentation fichier d'un périphérique de stockage se distingue par son
mode d'accès : le mode bloc.</para>
</question>
<answer>
<para>La commande à utiliser est <command>blkid</command>. Dans l'exemple
de la partition <systemitem>/dev/vdb1</systemitem>, on obtient le
résultat suivant.</para>
<screen><prompt>#</prompt> blkid /dev/vdb1
/dev/vdb1: UUID="224f6aad-16c0-4923-8949-0628a8e10228" TYPE="ext4"</screen>
<para>C'est cet identifiant que l'on doit utiliser pour compléter la
configuration système et rendre le montage du périphérique de stockage
permanent.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para><phrase>Dans quel fichier de configuration trouve-t-on la liste des
périphériques montés lors de l'initialisation du système
?</phrase></para>
<para>Consulter la liste des fichiers du paquet
<application>util-linux</application>.</para>
</question>
<answer>
<para>Le fichier recherché est <filename>/etc/fstab</filename>. Il
contient bien la liste des points de montage. Dans l'exemple ci-dessous,
la racine et la partition d'échange utilisée en cas de saturation des
ressources <acronym>RAM</acronym> du système.</para>
<screen><prompt>#</prompt> grep -v '^#' /etc/fstab
UUID=78cc7982-fa2e-4498-af98-45272c7726c9 / ext4 errors=remount-ro 0 1
UUID=56c21189-6cb3-4a6e-a6f6-ccf3e28db8b0 none swap sw 0 0</screen>
</answer>
</qandaentry>
<qandaentry>
<question>
<para><phrase>Quelle est la commande qui donne la liste des montages en
cours d'utilisation sur le système ? Quelle est l'option qui permet de
scruter les entrées du fichier recherché dans la question précédente et
de monter tous les points non encore utilisés ?</phrase></para>
<para>La commande est fournie par le paquet du même nom.</para>
</question>
<answer>
<para>Le paquet <application>mount</application> fournit la commande du
même nom. Cette commande liste tous les montages actifs du système. La
liste comprend les systèmes de fichiers virtuels qui représentent l'état
courant des paramètres du noyau ainsi que les systèmes de fichiers
physiques qui correspondent aux volumes de stockage effectifs. En
reprenant l'exemple utilisé auparavant et en filtrant les systèmes de
fichiers virtuels, on obtient :</para>
<screen><prompt>#</prompt> mount | grep "/dev/vd"
/dev/vda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)</screen>
<para>L'option de montage des entrées inutilisées du fichier
<filename>/etc/fstab</filename> est <option>-a</option>. Elle doit être
utilisée dans la question suivante.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para><phrase>Comment compléter la configuration système pour assurer le
montage du nouveau périphérique ?</phrase></para>
<para>Il faut utiliser les réponses aux questions précédentes pour valider
le nouveau point de montage.</para>
</question>
<answer>
<itemizedlist>
<listitem>
<para>Création du point de montage dans l'arborescence du système</para>
<screen><prompt>#</prompt> mkdir /var/lib/iscsi-target</screen>
</listitem>
<listitem>
<para>Ajout d'une ligne dans le fichier <filename>/etc/fstab</filename>
avec l'identifiant du périphérique à ajouter</para>
<screen><prompt>#</prompt> echo UUID=3ccc9115-f206-4a05-86f3-5902ac49b82d \
/var/lib/iscsi-target/ \
ext4 \
defaults \
0 2 >>/etc/fstab</screen>
</listitem>
<listitem>
<para>Montage du nouveau périphérique</para>
<screen><prompt>#</prompt> mount -a</screen>
</listitem>
<listitem>
<para>Nouvelle liste des montages actifs</para>
<screen><prompt>#</prompt> mount | grep "/dev/vd"
/dev/vda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
<emphasis>/dev/vdb1 on /var/lib/iscsi-target type ext4 (rw,relatime,data=ordered)</emphasis></screen>
</listitem>
</itemizedlist>
</answer>
</qandaentry>
</qandaset>
</sect2>
</sect1>
<sect1 xml:id='sysadm-net.iscsi.qa.initiator'>
<title>Configuration du système initiator</title>
<para>Dans cette partie, on prépare le système auquel on a attribué le rôle
<wordasword>initiator</wordasword>. Ce système est celui qui utilise le
volume de stockage mis à disposition sur le réseau par le rôle
<wordasword>target</wordasword>.</para>
<sect2 xml:id='sysadm-net.iscsi.qa.package'>
<title>Sélection du paquet et lancement du service</title>
<qandaset>
<qandaentry>
<question>
<para><phrase>Comment identifier et installer le paquet correspondant au
rôle <wordasword>initiator</wordasword> ?</phrase></para>
<para>En effectuant une recherche simple dans le catalogue des paquets
disponibles, on obtient la liste des paquets dont le nom contient la
chaîne de caractères <option>iscsi</option>.</para>
</question>
<answer>
<screen><prompt>#</prompt> aptitude search iscsi
p iscsitarget - iSCSI Enterprise Target userland tools
p iscsitarget-dkms - iSCSI Enterprise Target kernel module source - dkms version
p iscsitarget-source - iSCSI Enterprise Target kernel module source
p open-iscsi - High performance, transport independent iSCSI implementation</screen>
<para>On remarque que le paquet <systemitem>open-iscsi</systemitem> est
le seul qui ne soit pas identifié comme appartenant à la catégorie
<wordasword>target</wordasword>.</para>
<screen><prompt>#</prompt> aptitude install open-iscsi</screen>
</answer>
</qandaentry>
<qandaentry>
<question>
<para><phrase>Comment lancer le service
<wordasword>initiator</wordasword> et valider son fonctionnement
?</phrase></para>
<para>À partir de la liste des fichiers du paquet on peut identifier les
éléments de démarrage et de configuration du service.</para>
</question>
<answer>
<screen><prompt>#</prompt> dpkg -L open-iscsi
/.
/etc
/etc/init.d
<emphasis>/etc/init.d/open-iscsi</emphasis>
/etc/init.d/umountiscsi.sh
/etc/network
/etc/network/if-up.d
/etc/default
/etc/default/open-iscsi
/etc/iscsi
<emphasis>/etc/iscsi/iscsid.conf</emphasis>
/etc/iscsi/initiatorname.iscsi
/usr
/usr/share
/usr/share/man
/usr/share/man/man8
/usr/share/man/man8/iscsiadm.8.gz
/usr/share/man/man8/iscsid.8.gz
/usr/share/man/man8/iscsi_discovery.8.gz
/usr/share/man/man8/iscsistart.8.gz
/usr/share/man/man8/iscsi-iname.8.gz
/usr/share/initramfs-tools
/usr/share/initramfs-tools/hooks
/usr/share/initramfs-tools/hooks/iscsi
/usr/share/initramfs-tools/scripts
/usr/share/initramfs-tools/scripts/local-top
/usr/share/initramfs-tools/scripts/local-top/iscsi
/usr/share/doc
/usr/share/doc/open-iscsi
/usr/share/doc/open-iscsi/copyright
/usr/share/doc/open-iscsi/README.Debian.gz
/usr/share/doc/open-iscsi/README.gz
/usr/share/doc/open-iscsi/changelog.Debian.gz
/usr/share/doc/open-iscsi/changelog.gz
/usr/sbin
/usr/sbin/iscsi-iname
/usr/sbin/iscsid
/usr/sbin/iscsi_discovery
/usr/sbin/iscsistart
/usr/bin
<emphasis>/usr/bin/iscsiadm</emphasis>
/var
/var/lib
/var/lib/open-iscsi</screen>
<para>Le lancement du service se fait de façon classique à partir de
l'arborescence des scripts des niveaux de démarrage
(<wordasword>runlevels</wordasword>).</para>
<screen><prompt>#</prompt> /etc/init.d/open-iscsi restart</screen>
<para>La même opération avec <application>systemd</application> utilise la
syntaxe suivante :</para>
<screen><prompt>#</prompt> systemctl restart open-iscsi</screen>
<para>On peut ensuite consulter les journaux système pour valider
l'initialisation du ou des démons.</para>
<screen><prompt>#</prompt> grep -i iscsi /var/log/syslog
Loading iSCSI transport class v2.0-870.
iscsi: registered transport (tcp)
iscsi: registered transport (iser)</screen>
<para>On retrouve les informations correspondantes aux messages ci-dessus
dans la liste des processus actifs.</para>
<screen><prompt>#</prompt> ps aux | grep -i iscsi
root 3479 0.0 0.0 0 0 ? S&lt; 16:28 0:00 [iscsi_eh]
root 3487 0.0 0.0 4980 472 ? Ss 16:28 0:00 /usr/sbin/iscsid
root 3488 0.0 0.6 5480 3280 ? S&lt;Ls 16:28 0:00 /usr/sbin/iscsid</screen>
</answer>
</qandaentry>
</qandaset>
</sect2>
<sect2 xml:id='sysadm-net.iscsi.qa.tests'>
<title>Tests de fonctionnement du service</title>
<qandaset>
<qandaentry>
<question>
<para><phrase>Quelle est la commande principale du rôle
<wordasword>initiator</wordasword> qui permet de tester la connectivité
<acronym>iSCSI</acronym> ?</phrase></para>
<para>Consulter la liste des fichiers du paquet
<systemitem>open-iscsi</systemitem>.</para>
</question>
<answer>
<para>En consultant la liste donnée ci-dessus, on ne relève qu'un
seul outil exécutable : la commande <command>iscsiadm</command>.</para>
</answer>
</qandaentry>
<qandaentry xml:id='sysadm-net.iscsi.qa.tests.discovery'>
<question>
<para><phrase>Quelles sont les options de découverte proposées avec cette
commande ? Donner un exemple fournissant l'identifiant de l'unité de
stockage réseau visible.</phrase></para>
<para>Consulter les pages de manuels de la commande identifiée dans la
question précédente.</para>
</question>
<answer>
<para>À partir du poste <wordasword>initator</wordasword> numéro 1, le seul
volume de stockage visible est :</para>
<screen><prompt>#</prompt> iscsiadm -m discovery --type sendtargets --portal=192.0.2.12:3260
192.0.2.12:3260,1 iqn.2003-01.org.linux-iscsi.vm0.i686:sn.1b49d1997f22
[2001:db8:feb2:2:b8ad:ff:feca:fe00]:3260,1 iqn.2003-01.org.linux-iscsi.vm0.i686:sn.1b49d1997f22
192.0.2.12:3260,1 iqn.2003-01.org.linux-iscsi.target.i686:sn.637018090566
[2001:db8:feb2:2:b8ad:ff:feca:fe00]:3260,1 iqn.2003-01.org.linux-iscsi.target.i686:sn.637018090566</screen>
</answer>
</qandaentry>
<qandaentry>
<question>
<para><phrase>Quel est l'identifiant à communiquer ou à paramétrer pour
le système <wordasword>initiator</wordasword> soit reconnu côté système
<wordasword>target</wordasword> ?</phrase></para>
<para>Rechercher les informations relatives au nommage
<acronym>iSCSI</acronym> dans les outils et les fichiers fournis avec le
paquet de gestion du rôle <wordasword>initiator</wordasword>.</para>
</question>
<answer>
<para>Le filtrage de la liste des fichiers fournis avec le paquet
<application>open-iscsi</application> donne le résultat suivant.</para>
<screen><prompt>#</prompt> dpkg -L open-iscsi | grep name
/etc/iscsi/initiatorname.iscsi
/usr/share/man/man8/iscsi-iname.8.gz
/usr/sbin/iscsi-iname</screen>
<itemizedlist>
<listitem>
<para>Le fichier <filename>/etc/iscsi/initiatorname.iscsi</filename>
contient l'identifiant du système à communiquer au système
<wordasword>target</wordasword> pour que celui-ci l'associe dans la
rubrique des listes de contrôle d'accès : <option>acls</option>.</para>
<para>Dans le contexte de ces travaux pratiques, on se contente de
relever l'identifiant généré automatiquement lors de l'installation du
paquet et de l'implanter dans la liste de contrôle d'accès créée avec
<application>targetcli</application> sur le système
<wordasword>target</wordasword>.</para>
<para>Côté <wordasword>initiator</wordasword>, on lit l'identifiant
<acronym>iqn</acronym></para>
<screen><prompt>#</prompt> grep -v ^# /etc/iscsi/initiatorname.iscsi
InitiatorName=<emphasis>iqn.1993-08.org.debian:01:9d11913c78ac</emphasis></screen>
<para>Côté <wordasword>target</wordasword>, on créé la liste de contrôle
d'accès qui associe l'unité logique <acronym>SCSI</acronym> au système
<wordasword>initiator</wordasword>.</para>
<screen>/iscsi/iqn.20...18090566/tpg1> ls
o- tpg1 ................................................................ [enabled]
o- acls ................................................................ [1 ACL]
| o- <emphasis>iqn.1993-08.org.debian:01:9d11913c78ac</emphasis> ..................... [1 Mapped LUN]
| o- mapped_lun0 ................................................. [lun0 (rw)]
o- luns ................................................................ [1 LUN]
| o- lun0 ....................................... [iblock/initiator1 (/dev/vdb)]
o- portals ......................................................... [2 Portals]
o- 192.0.2.12:3260 ....................................... [OK, iser disabled]
o- 2001:db8:feb2:2:b8ad:ff:feca:fe00:3260 ................ [OK, iser disabled]</screen>
</listitem>
<listitem>
<para>La commande <command>iscsi-iname</command> sert à générer un nouvel
identifiant conforme au forat <acronym>iqn</acronym>. Elle permet de
fournir un nouvel identifiant compatible avec la nomenclature de
l'infrastructure de stockage d'un opérateur.</para>
</listitem>
</itemizedlist>
</answer>
</qandaentry>
<qandaentry>
<question>
<para><phrase>Quelles sont les options de connexion proposées avec cette
même commande ?</phrase></para>
<para>Donner un exemple illustrant l'établissement d'une connexion.</para>
<para>Consulter les pages de manuels de la commande identifiée
précédemment.</para>
</question>
<answer>
<screen><prompt>#</prompt> iscsiadm -m node -T \
iqn.2003-01.org.linux-iscsi.target.i686:sn.1b49d1997f22 -p 192.0.2.12 -l
Logging in to [iface: default,
target: iqn.2003-01.org.linux-iscsi.target.i686:sn.1b49d1997f22,
portal: 192.0.2.12,3260] (multiple)
iscsiadm: Could not login to [iface: default,
target: iqn.2003-01.org.linux-iscsi.target.i686:sn.1b49d1997f22,
portal: 192.0.2.12,3260].
iscsiadm: <emphasis>initiator reported error
(24 - iSCSI login failed due to authorization failure)</emphasis>
iscsiadm: Could not log into all portals</screen>
<para>Dans l'exemple ci-dessus, la connexion sans authentification a échoué
faute d'autorisations côté rôle <wordasword>target</wordasword>. Comme
nous sommes dans un contexte de travaux pratiques, il faut paramétrer
deux attributs spécifiques : <option>authentication=0</option> et
<option>demo_mode_write_protect=0</option>.</para>
<screen># iscsiadm -m node -T \
iqn.2003-01.org.linux-iscsi.target.i686:sn.637018090566 -p 192.0.2.12 -l
Logging in to [iface: default, target:
iqn.2003-01.org.linux-iscsi.target.i686:sn.637018090566,
portal: 192.0.2.12,3260] (multiple)
Login to [iface: default, target:
iqn.2003-01.org.linux-iscsi.target.i686:sn.637018090566,
portal: 192.0.2.12,3260] <emphasis>successful</emphasis>.</screen>
<para>La connexion est maintenant établie et le volume de stockage réseau
est disponible sous forme d'unité logique
<acronym>SCSI</acronym>.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para><phrase>Comment obtenir les caractéristiques de l'unité de stockage
<acronym>iSCSI</acronym> utilisée ?</phrase></para>
<para>Consulter les journaux système.</para>
</question>
<answer>
<para>Voici un extrait du fichier
<filename>/var/log/syslog</filename>.</para>
<screen><prompt>#</prompt> egrep '(sd|scsi)' /var/log/syslog
scsi host8: iSCSI Initiator over TCP/IP
scsi 8:0:0:0: Direct-Access LIO-ORG IBLOCK 4.0 PQ: 0 ANSI: 5
scsi 8:0:0:0: Attached scsi generic sg1 type 0
sd 8:0:0:0: [sda] 150994944 512-byte logical blocks: (77.3 GB/72.0 GiB)
sd 8:0:0:0: [sda] Write Protect is off
sd 8:0:0:0: [sda] Mode Sense: 43 00 10 08
sd 8:0:0:0: [sda] Write cache: enabled, read cache: enabled, supports DPO and FUA
sda:
sd 8:0:0:0: [sda] Attached SCSI disk
target: iqn.2003-01.org.linux-iscsi.target.i686:sn.637018090566, \
portal: 192.0.2.12,3260] through [iface: default] is operational now</screen>
</answer>
</qandaentry>
<qandaentry>
<question>
<para><phrase>Donner la liste des entrées de périphériques de stockage
créées par le démon <systemitem>udev</systemitem> ?</phrase></para>
<para>Lister les entrées de périphériques mode bloc de l'arborescence
système.</para>
</question>
<answer>
<para>Les fichiers de description des périphériques mode bloc sont tous
situés dans le répertoire <filename
class='directory'>/dev/</filename>. En reprenant l'exemple ci-dessus, on
obtient :</para>
<screen><prompt>#</prompt> ls -lA /dev/[v,s]d*
brw-rw---- 1 root disk 8, 0 sept. 1 14:38 <emphasis>/dev/sda</emphasis>
brw-rw---- 1 root disk 254, 0 sept. 1 11:28 /dev/vda
brw-rw---- 1 root disk 254, 1 sept. 1 11:28 /dev/vda1
brw-rw---- 1 root disk 254, 2 sept. 1 11:28 /dev/vda2
brw-rw---- 1 root disk 254, 5 sept. 1 11:28 /dev/vda5
brw-rw---- 1 root disk 254, 16 sept. 1 11:28 /dev/vdb</screen>
<para>L'entrée <filename>/dev/sda</filename> correspond à l'unité de
disque <acronym>iSCSI</acronym>. Le volume de stockage est donc bien vu de
façon transparente comme un périphérique local au système accessible en
mode bloc. Il entre bien dans la catégorie <acronym>SAN</acronym> ou
<wordasword>Storage Area Network</wordasword>.</para>
</answer>
</qandaentry>
</qandaset>
</sect2>
<sect2 xml:id='sysadm-net.iscsi.qa.trouble'>
<title>Réinitialisation de session <acronym>iSCSI</acronym></title>
<para>Dans le cas d'une reconfiguration avec un autre hôte
<wordasword>target</wordasword> ou dans le cas d'un dépannage, il est utile
de pouvoir reprendre les paramètres du rôle
<wordasword>initiator</wordasword>.</para>
<qandaset>
<qandaentry>
<question>
<para><phrase>Comment obtenir la liste des sessions actives avec le système
<wordasword>target</wordasword> ?</phrase></para>
<para>Consulter les pages de manuels de la commande de configuration du
rôle <wordasword>initiator</wordasword> :
<command>iscsiadm</command>.</para>
</question>
<answer>
<para>C'est le mode <option>session</option>, documenté dans les pages de
manuels de la commande <command>iscsiadm</command>, qui permet de répondre
à la question.</para>
<screen><prompt>#</prompt> iscsiadm -m session
tcp: [3] 192.0.2.12:3260,1
iqn.2003-01.org.linux-iscsi.target.i686:sn.637018090566 (non-flash)
tcp: [4] [2001:db8:feb2:2:b8ad:ff:feca:fe00]:3260,1
iqn.2003-01.org.linux-iscsi.target.i686:sn.637018090566 (non-flash)</screen>
</answer>
</qandaentry>
<qandaentry>
<question>
<para><phrase>Comment libérer toutes les sessions actives depuis le système
<wordasword>initiator</wordasword> ?</phrase></para>
<para>Consulter les pages de manuels de la commande de configuration du
rôle <wordasword>initiator</wordasword> :
<command>iscsiadm</command>.</para>
</question>
<answer>
<para>Pour cette question, c'est le mode <option>node</option> qui nous
intéresse.</para>
<screen><prompt>#</prompt> iscsiadm -m node -U all
Logging out of session [sid: 3,
target: iqn.2003-01.org.linux-iscsi.target.i686:sn.637018090566,
portal: 2001:db8:feb2:2:b8ad:ff:feca:fe00,3260]
Logout of [sid: 3,
target: iqn.2003-01.org.linux-iscsi.target.i686:sn.637018090566,
portal: 2001:db8:feb2:2:b8ad:ff:feca:fe00,3260] successful.</screen>
</answer>
</qandaentry>
<qandaentry>
<question>
<para><phrase>Comment effacer les informations sur les systèmes
<wordasword>target</wordasword> déjà découverts en cas de problème de
configuration ?</phrase></para>
<para>Consulter les pages de manuels de la commande de configuration du
rôle <wordasword>initiator</wordasword> :
<command>iscsiadm</command>.</para>
</question>
<answer>
<para>Toutes les manipulations sur les systèmes
<wordasword>target</wordasword> découverts dépendent du mode
<option>discovery</option> et l'opération à utiliser est
<option>delete</option>.</para>
<screen><prompt>#</prompt> iscsiadm -m discovery -p 192.0.2.12 -o delete</screen>
<para>Il suffit ensuite de reprendre la découverte décrite à la question
<xref linkend='sysadm-net.iscsi.qa.tests.discovery' />.</para>
</answer>
</qandaentry>
</qandaset>
</sect2>
<sect2 xml:id='sysadm-net.iscsi.qa.automatic'>
<title>Configuration système permanente</title>
<para>Une fois la connexion à la ressource <acronym>iSCSI</acronym> testée,
on peut passer à la configuration système de façon à retrouver le volume de
stockage après une réinitialisation du système
<wordasword>initiator</wordasword>.</para>
<qandaset>
<qandaentry>
<question>
<para><phrase>Comment rendre la connexion à l'unité de stockage automatique
lors de l'initialisation du système <wordasword>initiator</wordasword>
?</phrase></para>
<para>Rechercher dans la liste des fichiers du paquet
<application>open-iscsi</application> les éléments relatifs à la
configuration système. Éditer le fichier de configuration principal de
façon à rendre automatique le lancement du service.</para>
</question>
<answer>
<para>Au niveau système, les fichiers de configuration sont nécessairement
dans le répertoire <filename class='directory'>/etc/</filename>.</para>
<screen><prompt>#</prompt> dpkg -L open-iscsi | grep '/etc/'
/etc/default
/etc/default/open-iscsi
/etc/init.d
/etc/init.d/open-iscsi
/etc/init.d/umountiscsi.sh
/etc/iscsi
<emphasis>/etc/iscsi/iscsid.conf</emphasis>
/etc/iscsi/initiatorname.iscsi
/etc/network
/etc/network/if-up.d</screen>
<para>Le fichier <filename>/etc/iscsi/iscsid.conf</filename> contient une
directive dans la section <wordasword>Startup settings</wordasword> qui
rend automatique l'accès à une ressource déjà enregistrée. Voici le contenu
de cette section extraite du fichier de configuration.</para>
<screen>#*****************
# Startup settings
#*****************
# To request that the iscsi initd scripts startup a session set to "automatic".
<emphasis>node.startup = automatic</emphasis></screen>
</answer>
</qandaentry>
<qandaentry>
<question>
<para><phrase>Comment connaître l'état et la liste d'une session
<acronym>iSCSI</acronym> active ?</phrase></para>
<para>Consulter les pages de manuels de la commande de configuration du
rôle <wordasword>initiator</wordasword> :
<command>iscsiadm</command>.</para>
</question>
<answer>
<para>Il existe un mode <option>session</option> dédié aux manipulations
sur les sessions. La commande de test la plus simple est la
suivante.</para>
<screen><prompt>#</prompt> iscsiadm -m session
tcp: [3] 192.0.2.12:3260,1
iqn.2003-01.org.linux-iscsi.target.i686:sn.637018090566 (non-flash)
tcp: [4] [2001:db8:feb2:2:b8ad:ff:feca:fe00]:3260,1
iqn.2003-01.org.linux-iscsi.target.i686:sn.637018090566 (non-flash)</screen>
<para>La copie d'écran ci-dessus indique deux sessions actives. Si la liste
est vide, il n'y a pas de session <acronym>iSCSI</acronym> en cours.</para>
<para>Il est possible d'obtenir davantage d'informations sur les paramètres
de session en cours à l'aide de l'option <option>-P</option> suivie d'un
numéro désignant le niveau de détail attendu. Par exemple, la commande
<literal>iscsiadm -m session -P 3</literal> affiche les paramètres sur les
interfaces réseau utilisées, etc.</para>
</answer>
</qandaentry>
<qandaentry xml:id='sysadm-net.iscsi.qa.mount'>
<question>
<para><phrase>Comment retrouver un point de montage unique du volume de
stockage <acronym>iSCSI</acronym> après réinitialisation du système
<wordasword>initiator</wordasword> ?</phrase></para>
<para>Créer un répertoire de montage et rechercher les options utiles dans
les pages de manuels des commandes <command>mount</command>,
<command>systemd.mount</command> et <command>blkid</command>. Éditer le
fichier <filename>/etc/fstab</filename> en utilisant les options
sélectionnées. Noter que le fichier <filename>fstab</filename> possède ses
propres pages de manuels.</para>
</question>
<answer>
<para>La création du répertoire destiné au montage du volume de stockage
<acronym>iSCSI</acronym> ne pose pas de problème.</para>
<screen><prompt>#</prompt> mkdir /var/cache/iscsi-storage</screen>
<para>La commande <command>blkid</command> permet d'obtenir l'identifiant
unique du volume de stockage. Dans la copie d'écran ci-dessous, la
partition <option>/dev/sda1</option> correspond au résultat de
l'établissement de la session <acronym>iSCSI</acronym> et l'identification
du système de fichiers utilisé (<option>btrfs</option>) correspond au
résultat du formatage de la partition. Ce ne sont que des exemples
particuliers au contexte de la maquette utilisée.</para>
<screen><prompt>#</prompt> blkid /dev/sda1
/dev/sda1: UUID="11924824-00f1-4735-bd30-4bacaa3cbde0"
UUID_SUB="09505fb1-d90c-4d05-b9e7-b4a0454a1150"
TYPE="btrfs" PARTLABEL="iSCSI-LUN0"
PARTUUID="0da2be8f-ff7b-40d1-a720-15f08c456351"</screen>
<para>Le choix des options à utiliser lors de l'édition du fichier
<filename>/etc/fstab</filename> constitue le point délicat de cette
question.</para>
<screen>UUID=11924824-00f1-4735-bd30-4bacaa3cbde0 \
/var/cache/iscsi-storage \
btrfs noauto,x-systemd.automount,_netdev 0 2</screen>
<itemizedlist>
<listitem>
<para>Le choix de la valeur <option>UUID</option> se fait à partir du
résultat de la commande <command>blkid</command> donné ci-dessus.</para>
</listitem>
<listitem>
<para>Le point de montage <filename
class='directory'>/var/cache/iscsi-storage</filename> a lui aussi été
défini ci-dessus.</para>
</listitem>
<listitem>
<para>Le système de fichiers utilisé est, là encore, connu :
<option>btrfs</option>.</para>
</listitem>
</itemizedlist>
<para>Les trois paramètres suivants sont spécifiques au contexte
<acronym>iSCSI</acronym>.</para>
<itemizedlist>
<listitem>
<para>L'option <option>noauto</option> empêche le déclenchement du montage
lors de la scrutation du fichier <filename>/etc/fstab</filename>. Les
entrées présentes dans ce fichier doivent être disponibles très tôt dans le
processus d'initialisation des services du système. Or, un volume de
stockage réseau <acronym>iSCSI</acronym> n'est pas nécessairement
disponible au moment du parcours des entrées en question.</para>
</listitem>
<listitem>
<para>L'option <option>x-systemd.automount</option> provoque la création
d'une unité d'automontage (au sens <application>systemd</application>). Le
principe de l'automontage veut que l'opération de montage soit effective au
moment du parcours de l'arborescence <filename
class='directory'>/var/cache/iscsi-storage</filename> par un utilisateur ou
une application. Autrement dit, tant que l'arborescence n'est pas utilisée,
le montage n'est pas réalisé et l'initialisation du système
<wordasword>initiator</wordasword> se poursuit normalement.</para>
</listitem>
<listitem>
<para>L'option <option>_netdev</option> spécifie que le système de fichiers
réside sur un périphérique nécessitant des accès réseau. Il est donc
inutile d'y accéder tant qu'aucune interface réseau n'est active.</para>
</listitem>
</itemizedlist>
</answer>
</qandaentry>
</qandaset>
</sect2>
</sect1>
<sect1 xml:id='sysadm-net.iscsi.qa.target'>
<title>Configuration du système target</title>
<para>Dans cette partie, on prépare le système auquel on a attribué le rôle
<wordasword>target</wordasword> à l'aide de l'outil
<application>targetcli-fb</application>.</para>
<sect2 xml:id='sysadm-net.iscsi.qa.target.install'>
<title>Installation de l'outil de paramétrage du rôle target</title>
<qandaset defaultlabel='number'>
<qandaentry>
<question>
<para><phrase>Quel est le paquet qui contient les éléments de configuration
du service dans l'espace utilisateur ?</phrase></para>
<para>On consulte le site de référence à l'adresse &url.iscsitarget; pour
identifier l'outil principal et on effectue ensuite une recherche dans
la liste des paquets.</para>
</question>
<answer>
<screen><prompt>#</prompt> aptitude search targetcli
p targetcli-fb - Command shell for managing the Linux LIO kernel target</screen>
</answer>
</qandaentry>
<qandaentry>
<question>
<para><phrase>Comment installer le paquet identifié à la question
précédente ?</phrase></para>
<para>Consulter les pages de manuels de la commande
<command>aptitude</command>.</para>
</question>
<answer>
<screen><prompt>#</prompt> aptitude install targetcli-fb
Les NOUVEAUX paquets suivants vont être installés :
gir1.2-glib-2.0{a} libdbus-glib-1-2{a} libgirepository-1.0-1{a}
python-rtslib-fb{a} python-six{a} python3-configshell-fb{a} python3-dbus{a}
python3-gi{a} python3-pyparsing{a} python3-rtslib-fb{a} python3-six{a}
python3-urwid{a} targetcli-fb
0 paquets mis à jour, 13 nouvellement installés, 0 à enlever et 0 non mis à
jour.
Il est nécessaire de télécharger 1 524 ko d'archives. Après dépaquetage, 5 615
ko seront utilisés.
Voulez-vous continuer ? [Y/n/?]</screen>
</answer>
</qandaentry>
</qandaset>
</sect2>
<sect2 xml:id='sysadm-net.iscsi.qa.target.config'>
<title>Configuration du rôle target</title>
<para>La technologie <acronym>iSCSI</acronym> dispose d'un schéma de
nommage propre défini dans le document standard &url.rfc3721;. Le
format retenu ici est baptisé <acronym>iqn</acronym> (<wordasword>iSCSI
Qualified Name</wordasword>). Il s'agit d’une chaîne qui débute par
"iqn." suivie d’une date au format AAAA-MM, du nom de l’autorité qui a
attribué le nom (le nom de domaine à l’envers), puis une autre chaîne
unique qui identifie le nœud de stockage.</para>
<para>On a choisi de n'utiliser aucun mécanisme d'authentification sachant
que la configuration initiale se fait dans un contexte de travaux
pratiques et non d'exploitation sur un réseau réel.</para>
<qandaset defaultlabel='number'>
<qandaentry>
<question>
<para><phrase>Quelles sont les étapes à suivre pour publier un volume de
stockage sur le réseau à partir de l'interface de l'outil
<application>targetcli</application> ?</phrase></para>
<para>Ici aussi, il faut consulter le site de référence à l'adresse
&url.iscsitarget; pour identifier les différentes étapes.</para>
</question>
<answer>
<para>La copie d'écran ci-dessous liste les familles de stockage
disponibles.</para>
<screen><prompt>#</prompt> <emphasis>targetcli</emphasis>
targetcli shell version 2.1.fb43
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
/> ls
o- / .................................................... [...]
o- backstores ......................................... [...]
| o- block ............................. [Storage Objects: 0]
| o- fileio ............................ [Storage Objects: 0]
| o- pscsi ............................. [Storage Objects: 0]
| o- ramdisk ........................... [Storage Objects: 0]
o- iscsi ....................................... [Targets: 0]
o- loopback .................................... [Targets: 0]
o- vhost ....................................... [Targets: 0]
/></screen>
<itemizedlist>
<listitem>
<para>La section <emphasis>backstores</emphasis> désigne les volumes de
stockage à publier sur le réseau. Ici, les deux items intéressants sont
<emphasis>fileio</emphasis> et <emphasis>iblock</emphasis>. Le premier
fait correspondre un fichier du système local au volume à publier. Le
second fait correspondre une unité de disque physique au volume à
publier.</para>
</listitem>
<listitem>
<para>La section <emphasis>iscsi</emphasis> sert à définir une «cible»
(<wordasword>target</wordasword>) qui comprend au moins une unité
logique (<acronym>LUN</acronym> en vocabulaire <acronym>SCSI</acronym>)
et un point de contact réseau.</para>
</listitem>
</itemizedlist>
</answer>
</qandaentry>
</qandaset>
<bridgehead xml:id='sysadm-net.iscsi.qa.target.config.backstores'
renderas='sect3'>Partie stockage local :
<wordasword>backstores</wordasword></bridgehead>
<qandaset defaultlabel='number'>
<qandaentry>
<question>
<para><phrase>Quelles sont les opérations à effectuer définir un disque
physique comme volume de stockage ?</phrase></para>
<para>Il faut consulter le site de référence et repérer les options du menu
<option>block</option>.</para>
</question>
<answer>
<para>La création du volume se fait à l'aide de la commande
ci-dessous.</para>
<screen>/> cd backstores/block
/backstores/block> ls
o- block ................................................. [Storage Objects: 0]
/backstores/block> create initiator1 /dev/vdb
Created block storage object initiator1 using /dev/vdb.
/backstores/block> ls
o- block ................................................. [Storage Objects: 1]
o- initiator1 ................... [/dev/vdb (72.0GiB) write-thru deactivated]</screen>
</answer>
</qandaentry>
<qandaentry>
<question>
<para><phrase>Quelles sont les opérations à effectuer pour définir un
fichier comme volume de stockage ?</phrase></para>
<para>Il faut consulter le site de référence et repérer les options du
menu <option>fileio</option>.</para>
</question>
<answer>
<para>La création du volume se fait à l'aide de la commande
ci-dessous.</para>
<screen>/backstores/fileio> create storage_file /var/lib/iscsi-target/storage-for-myinitiator 32G
Using buffered mode.
Created fileio storage_file.
/backstores/fileio> ls
o- fileio .............................................................. [2 Storage Objects]
o- initiator2 ................. [32.0G, /var/lib/iscsi-target/initiator2.disk, not in use]
o- storage_file ....... [32.0G, /var/lib/iscsi-target/storage-for-myinitiator, not in use]</screen>
<para>Dans l'exemple ci-dessus on a créé un nouvel objet dans le dépôt des
volumes de stockage appelé <option>storage_file</option>. Dans la même
commande on lui a attribué une capacité de 32Go. On a aussi précisé le
chemin d'accès à ce fichier.</para>
<para>Il faut noter que l'espace effectivement occupé par le fichier
<filename>/var/lib/iscsi-target/storage-for-myinitiator</filename>
correspond à celui utilisé côté <wordasword>initiator</wordasword>. La
commande de l'exemple ci-dessus a provoqué la création d'un fichier
vide.</para>
</answer>
</qandaentry>
</qandaset>
<bridgehead xml:id='sysadm-net.iscsi.qa.target.config.iscsi'
renderas='sect3'>Partie iSCSI</bridgehead>
<qandaset>
<qandaentry>
<question>
<para><phrase>Quelles sont les opérations à effectuer pour définir une
nouvelle cible <acronym>iSCSI</acronym> ?</phrase></para>
<para>Il faut consulter le site de référence et repérer les options du
menu <option>iscsi</option>. Attention ! Une cible
<acronym>iSCSI</acronym> comprend plusieurs attributs.</para>
</question>
<answer>
<orderedlist>
<listitem>
<formalpara>
<title>Nommage de la cible au format <acronym>iqn</acronym></title>
<para>Si le nom de la cible n'est pas fourni avec la commande
<command>create</command>, il est généré automatiquement.</para>
</formalpara>
<screen>/> cd iscsi/
/iscsi> create
<emphasis>Created target iqn.2003-01.org.linux-iscsi.target.i686:sn.bf156efd0f2e.</emphasis>
Selected TPG Tag 1.
Created TPG 1.</screen>
<para>C'est après cette première opération que les attributs apparaissent
pour la nouvelle cible.</para>
<screen>/iscsi> ls
o- iscsi .................................................... [1 Target]
o- iqn.2003-01.org.linux-iscsi.target.i686:sn.bf156efd0f2e ...... [1 TPG]
o- tpg1 .................................................. [enabled]
o- acls ................................................. [0 ACLs]
o- luns ................................................. [0 LUNs]
o- portals ........................................... [0 Portals]</screen>
</listitem>
<listitem>
<formalpara>
<title>Affectation de l'unité logique à la cible
<acronym>iSCSI</acronym>.</title>
<para>Les numéros d'unités logiques <acronym>SCSI</acronym> ou
<acronym>LUNs</acronym> sont affectés automatiquement. Ici, l'unité
<option>lun0</option> correspond à la première association faite depuis
le dépôt des volumes de stockage.</para>
</formalpara>
<screen>/iscsi> cd iqn.2003-01.org.linux-iscsi.target.i686:sn.bf156efd0f2e/tpg1/
/iscsi/iqn.20...6efd0f2e/tpg1> <emphasis>luns/ create /backstores/iblock/initiator1</emphasis>
Selected LUN 0.
Created LUN 0.
/iscsi/iqn.20...6efd0f2e/tpg1> ls
o- tpg1 ............................................ [enabled]
o- acls ........................................... [0 ACLs]
o- luns ............................................ [1 LUN]
| o- <emphasis>lun0 ................... [iblock/initiator1 (/dev/vdb)]</emphasis>
o- portals ..................................... [0 Portals]</screen>
</listitem>
<listitem>
<formalpara>
<title>Ouverture du point de contact réseau pour cette cible
<acronym>iSCSI</acronym></title>
<para>Un même point de contact peut être en écoute sur plusieurs adresses
<acronym>IP</acronym>. Dans l'exemple ci-dessous on ouvre une
configuration double pile <acronym>IPv4</acronym> et
<acronym>IPv6</acronym>.</para>
</formalpara>
<screen>/iscsi/iqn.20...6efd0f2e/tpg1> portals/ create 192.0.2.12 3260
<emphasis>Created network portal 192.0.2.12:3260.</emphasis>
/iscsi/iqn.20...6efd0f2e/tpg1> portals/ create 2001:db8:feb2:2:b8ad:ff:feca:fe00 3260
<emphasis>Created network portal 2001:db8:feb2:2:b8ad:ff:feca:fe00:3260.</emphasis>
/iscsi/iqn.20.../tpg1/portals> ls
o- portals ................................................. [2 Portals]
o- 192.0.2.12:3260 ............................... [OK, iser disabled]
o- 2001:db8:feb2:2:b8ad:ff:feca:fe00:3260 ........ [OK, iser disabled]</screen>
<para>On peut sortir de l'outil <application>targetcli</application> pour
vérifier que le service réseau est bien accessible.</para>
<screen><prompt>#</prompt> ss -tan
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 20 127.0.0.1:25 *:*
LISTEN 0 256 192.0.2.12:3260 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 20 ::1:25 :::*
LISTEN 0 256 2001:db8:feb2:2:b8ad:ff:feca:fe00:3260 :::*</screen>
<para>Enfin, on peut aussi vérifier que le service est ouvert
<emphasis>côté <wordasword>initiator</wordasword></emphasis> à l'aide de
la fonction de découverte.</para>
<screen><prompt>root@initiator1:~#</prompt> iscsiadm -m discovery --type sendtargets --portal=192.0.2.12:3260
192.0.2.12:3260,1 iqn.2003-01.org.linux-iscsi.target.i686:sn.bf156efd0f2e
[2001:db8:feb2:2:b8ad:ff:feca:fe00]:3260,1 iqn.2003-01.org.linux-iscsi.target.i686:sn.bf156efd0f2e</screen>
</listitem>
<listitem>
<formalpara>
<title>Création d'une liste de contrôle d'accès</title>
<para>Même si le service réseau et la fonction découverte sont ouverts,
le volume de stockage réseau n'est pas encore accessible. La connexion
depuis l'hôte <wordasword>initiator</wordasword> échoue et on obtient le
message suivant.</para>
</formalpara>
<screen><prompt>root@initiator1:~#</prompt> iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.target.i686:sn.bf156efd0f2e -p 192.0.2.12 -l
Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.target.i686:sn.bf156efd0f2e, portal: 192.0.2.12,3260] (multiple)
iscsiadm: Could not login to [iface: default, target: iqn.2003-01.org.linux-iscsi.target.i686:sn.bf156efd0f2e, portal: 192.0.2.12,3260].
iscsiadm: initiator reported error (24 - <emphasis>iSCSI login failed due to authorization failure</emphasis>)
iscsiadm: Could not log into all portals</screen>
<para>Côté hôte <wordasword>target</wordasword>, les journaux système
font apparaître un message du type suivant.</para>
<screen>iSCSI Initiator Node: iqn.1993-08.org.debian:01:9d11913c78ac is not authorized to access iSCSI target portal group: 1.
iSCSI Login negotiation failed.</screen>
<para>Il est donc necessaire d'autoriser l'accès depuis l'hôte
<wordasword>initiator</wordasword>. Dans l'outil
<application>targetcli</application>, on configure l'attribut
<option>acls</option> de la cible <acronym>iSCSI</acronym>.</para>
<screen>/iscsi/iqn.20...6efd0f2e/tpg1> acls/ create iqn.1993-08.org.debian:01:9d11913c78ac
<emphasis>Created Node ACL for iqn.1993-08.org.debian:01:9d11913c78ac
Created mapped LUN 0.</emphasis>
/iscsi/iqn.20...6efd0f2e/tpg1> ls
o- tpg1 ...................................................... [enabled]
o- acls ...................................................... [1 ACL]
| o- <emphasis>iqn.1993-08.org.debian:01:9d11913c78ac ........... [1 Mapped LUN]</emphasis>
| o- mapped_lun0 ....................................... [lun0 (rw)]
o- luns ...................................................... [1 LUN]
| o- lun0 ............................. [iblock/initiator1 (/dev/vdb)]
o- portals ............................................... [2 Portals]
o- 192.0.2.12:3260 ............................. [OK, iser disabled]
o- 2001:db8:feb2:2:b8ad:ff:feca:fe00:3260 ...... [OK, iser disabled]</screen>
<para>Ce n'est pas terminé ! Par défaut, une cible
<acronym>iSCSI</acronym> n'est accessible qu'après authentification. Il
est donc nécessaire de désactiver cette authentification pour tester
l'accès depuis l'hôte <wordasword>initiator</wordasword>.</para>
<screen>/iscsi/iqn.20...6efd0f2e/tpg1> set attribute authentication=0 demo_mode_write_protect=0
<emphasis>Parameter authentication is now '0'.</emphasis>
Parameter demo_mode_write_protect is now '0'.</screen>
<para>Finalement, le volume de stockage est mis à disposition de l'hôte
<wordasword>initiator</wordasword>.</para>
<screen><prompt>root@initiator1:~#</prompt> iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.target.i686:sn.bf156efd0f2e -p 192.0.2.12 -l
Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.target.i686:sn.bf156efd0f2e, portal: 192.0.2.12,3260] (multiple)
<emphasis>Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.target.i686:sn.bf156efd0f2e, portal: 192.0.2.12,3260] successful.</emphasis></screen>
</listitem>
</orderedlist>
</answer>
</qandaentry>
</qandaset>
</sect2>
</sect1>
<sect1 xml:id='sysadm-net.iscsi.qa.auth'>
<title>Configuration de l'authentification CHAP</title>
<para>Dans cette partie, on suppose que tous les tests précédents ont été
effectués avec succès et que les échanges entre les systèmes
<wordasword>target</wordasword> et <wordasword>initiator</wordasword> sont
validés.</para>
<para>On s'intéresse maintenant à l'authentification entre ces mêmes
systèmes. Pour traiter les questions suivantes, une nouvelle entrée a été
utilisée pour le rôle <wordasword>target</wordasword>.</para>
<para>Le mécanisme d'authentification le plus communément utilisé dans le
déploiement des connexions <acronym>iSCSI</acronym> s'appuie sur
<acronym>CHAP</acronym> (<wordasword>Challenge-Handshake Authentication
Protocol</wordasword>). Il s'agit d'une méthode d'authentification entre deux
hôtes pairs sans échange de mot de passe en clair sur le réseau. Cette
méthode suppose que les deux hôtes utilisent le même mot de passe.</para>
<qandaset>
<qandaentry>
<question>
<para><phrase>Comment régler les paramètres d'authentification
<acronym>CHAP</acronym> sur le système <wordasword>target</wordasword>
?</phrase></para>
<para>Comme pour les étapes précédentes, toutes les manipulations se font à
partir de l'outil <application>targetcli</application>. Il faut donc
consulter la documentation de cet outil à l'adresse &url.iscsitarget;. Il
existe une section <citetitle>Mutual CHAP
authentication</citetitle>.</para>
</question>
<answer>
<para>Partant d'une nouvelle configuration, on obtient la liste de
paramètres suivante dans laquelle aucun contrôle d'accès n'a été
défini.</para>
<screen>/iscsi/iqn.20...57c35b07/tpg1> ls
o- tpg1 .............................................................. [enabled]
o- acls ............................................................. [0 ACLs]
o- luns .............................................................. [1 LUN]
| o- lun0 ..................................... [iblock/initiator1 (/dev/vdb)]
o- portals ........................................................ [1 Portal]
o- 2001:db8:feb2:2:b8ad:ff:feca:fe00:3260 .............. [OK, iser disabled]</screen>
<para>On passe à la création d'une entrée de contrôle d'accès basée sur
l'identifiant <option>iqn</option> unique du système
<wordasword>initiator</wordasword>.</para>
<screen>/iscsi/iqn.20...57c35b07/tpg1> acls/ create iqn.2015-09.org.debian:01:9d11913c78ac
Created Node ACL for iqn.2015-09.org.debian:01:9d11913c78ac
Created mapped LUN 0.
/iscsi/iqn.20...57c35b07/tpg1> ls
o- tpg1 .............................................................. [enabled]
o- acls .............................................................. [1 ACL]
| o- iqn.2015-09.org.debian:01:9d11913c78ac ................... [1 Mapped LUN]
| o- mapped_lun0 ............................................... [lun0 (rw)]
o- luns .............................................................. [1 LUN]
| o- lun0 ..................................... [iblock/initiator1 (/dev/vdb)]
o- portals ........................................................ [1 Portal]
o- 2001:db8:feb2:2:b8ad:ff:feca:fe00:3260 .............. [OK, iser disabled]</screen>
<para>On définit ensuite les paramètres d'authentification pour cette
entrée. Comme la méthode <acronym>CHAP</acronym> est symétrique, on doit
déposer de part et d'autre le secret. On fixe ici les paramètres
<option>userid</option> et <option>password</option>.</para>
<screen>/iscsi/iqn.20...57c35b07/tpg1> acls/iqn.2015-09.org.debian:01:9d11913c78ac/ set auth userid=initiator-username
Parameter userid is now 'initiator-username'.
/iscsi/iqn.20...57c35b07/tpg1> acls/iqn.2015-09.org.debian:01:9d11913c78ac/ set auth password=initiator-53cr3t-p455w0rd
Parameter password is now 'initiator-53cr3t-p455w0rd'.</screen>
</answer>
</qandaentry>
<qandaentry>
<question>
<para><phrase>Comment régler les paramètres d'authentification
<acronym>CHAP</acronym> sur le système <wordasword>initiator</wordasword>
?</phrase></para>
<para>Rechercher dans le fichier de configuration principal du rôle
<wordasword>initiator</wordasword> les paramètres relatifs à
l'authentification.</para>
</question>
<answer>
<para>Le nom d'utilisateur et le mot de passe sont définis dans le fichier
<filename>/etc/iscsi/iscsid.conf</filename> du système
<wordasword>initiator</wordasword>.</para>
<screen># *************
# CHAP Settings
# *************
# To enable CHAP authentication set node.session.auth.authmethod
# to CHAP. The default is None.
node.session.auth.authmethod = CHAP
# To set a CHAP username and password for initiator
# authentication by the target(s), uncomment the following lines:
node.session.auth.username = SAN-lab-1stInitiator
node.session.auth.password = MyS4N-1stInitiator-53cr3t</screen>
<para>Le même principe peut être appliqué au mécanisme de découverte en
appliquant un couple <wordasword>login/password</wordasword> identique ou
non à la suite de ce fichier de configuration.</para>
</answer>
</qandaentry>
</qandaset>
<para>Une fois la configuration en place, on obtient les résultats suivants
lors de la validation.</para>
<itemizedlist>
<listitem>
<para>Découverte du nouveau volume réseau :</para>
<screen><prompt>#</prompt> iscsiadm -m discovery --type sendtargets --portal=[2001:db8:feb2:2:b8ad:ff:feca:fe00]:3260
[2001:db8:feb2:2:b8ad:ff:feca:fe00]:3260,1 iqn.2003-01.org.linux-iscsi.target.i686:sn.f58f71d5ba26
192.0.2.12:3260,1 iqn.2003-01.org.linux-iscsi.target.i686:sn.f58f71d5ba26
[2001:db8:feb2:2:b8ad:ff:feca:fe00]:3260,1 <emphasis>iqn.2003-01.org.linux-iscsi.target.i686:sn.8b7457c35b07</emphasis></screen>
</listitem>
<listitem>
<para>Connexion avec authentification <acronym>CHAP</acronym> :</para>
<screen><prompt>#</prompt> iscsiadm -m node -T <emphasis>iqn.2003-01.org.linux-iscsi.target.i686:sn.8b7457c35b07</emphasis> -p 2001:db8:feb2:2:b8ad:ff:feca:fe00 --login
Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.target.i686:sn.8b7457c35b07, portal: 2001:db8:feb2:2:b8ad:ff:feca:fe00,3260] (multiple)
Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.target.i686:sn.8b7457c35b07, portal: 2001:db8:feb2:2:b8ad:ff:feca:fe00,3260] successful.</screen>
</listitem>
<listitem>
<para>Affichage de la session active :</para>
<screen><prompt>#</prompt> iscsiadm -m session
tcp: [4] [2001:db8:feb2:2:b8ad:ff:feca:fe00]:3260,1 <emphasis>iqn.2003-01.org.linux-iscsi.target.i686:sn.8b7457c35b07</emphasis> (non-flash)</screen>
</listitem>
</itemizedlist>
</sect1>
<sect1 xml:id='sysadm-net.iscsi.qa.raid1'>
<title>Configuration d'une unité logique RAID1</title>
<para>Dans cette partie, on crée une unité logique <acronym>RAID1</acronym>
composée d'une unité de disque locale et d'une unité de disque
<acronym>iSCSI</acronym> dans le but d'illustrer une solution de réplication
synchrone. En effet, dans un volume <acronym>RAID1</acronym> chaque disque
contient à tout moment exactement les mêmes données. Ici, le contenu de
l'unité de disque locale est identique à celui de l'unité de disque réseau.
La réplication ainsi réalisée est dite synchrone puisque toute écriture
locale est dupliquée sur le réseau de stockage
<acronym>iSCSI</acronym>.</para>
<sect2 xml:id='sysadm-net.iscsi.qa.raid1.config'>
<title>Sélection du paquet et création de l'unité de stockage</title>
<qandaset defaultlabel='number'>
<qandaentry>
<question>
<para><phrase>Quel est le paquet qui contient les outils de configuration
et de gestion des différents types d'unités <acronym>RAID</acronym>
logicielles ? Installer ce paquet et identifier l'outil d'administration
de tableau <acronym>RAID</acronym> logiciel.</phrase></para>
<para>Effectuer une recherche dans les descriptions de paquets avec
l'acronyme clé <acronym>RAID</acronym>.</para>
</question>
<answer>
<screen><prompt>#</prompt> aptitude search ~draid | grep administration
p mdadm - outil d'administration d'ensembles RAID</screen>
<para>Une fois le paquet identifié et installé, on peut lister son
contenu et isoler les commandes utilisateur.</para>
<screen><prompt>#</prompt> dpkg -L mdadm | grep bin
/sbin
/sbin/mdmon
/sbin/mdadm-startall
/sbin/mdadm</screen>
</answer>
</qandaentry>
<qandaentry>
<question>
<para><phrase>Rechercher la syntaxe d'appel à l'outil identifié dans la
question précédente pour créer l'unité logique <acronym>RAID1</acronym> ?
Exécuter cette commande.</phrase></para>
</question>
<answer>
<para>Après s'être assuré qu'aucune table de partition n'existe sur les
deux unités constituant le tableau, on obtient le résultat suivant.</para>
<screen><prompt>#</prompt> mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sda /dev/vdb
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.</screen>
</answer>
</qandaentry>
</qandaset>
</sect2>
<sect2 xml:id='sysadm-net.iscsi.qa.raid1.manage'>
<title>Manipulations sur l'unité de stockage RAID1</title>
<qandaset defaultlabel='number'>
<qandaentry>
<question>
<para><phrase>Comment connaître l'état de l'unité logique
<acronym>RAID1</acronym> ?</phrase></para>
<para>Effectuer une recherche dans le système de fichiers virtuel
<filename class='directory'>/proc/</filename>.</para>
</question>
<answer>
<para>Exemple du tableau créé lors l'exécution de la commande de la
question précédente.</para>
<screen><prompt>#</prompt> cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 vdb[1] sda[0]
33537920 blocks super 1.2 [2/2] [UU]
unused devices: &lt;none></screen>
</answer>
</qandaentry>
<qandaentry>
<question>
<para><phrase>Comment afficher la liste des propriétés de l'unité logique
<acronym>RAID1</acronym> ?</phrase></para>
<para>Effectuer une recherche dans les options de la commande
d'administration.</para>
</question>
<answer>
<screen><prompt>#</prompt> mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun Sep 9 17:06:34 2012
Raid Level : raid1
Array Size : 33537920 (31.98 GiB 34.34 GB)
Used Dev Size : 33537920 (31.98 GiB 34.34 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Sun Sep 9 17:13:18 2012
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : iSCSI-1StInitiator:0 (local to host iSCSI-1StInitiator)
UUID : 01749969:3a764b9f:2749b4c4:5953b282
Events : 17
Number Major Minor RaidDevice State
0 8 0 0 active sync /dev/sda
1 254 16 1 active sync /dev/vdb</screen>
</answer>
</qandaentry>
<qandaentry>
<question>
<para><phrase>Comment rendre la configuration du tableau
<acronym>RAID1</acronym> permanente au niveau système ?</phrase></para>
<para>Effectuer une recherche dans les options de la commande
d'administration.</para>
</question>
<answer>
<para>C'est le fichier <filename>/etc/mdadm/mdadm.conf</filename> qui
contient les directives de configuration. On ajoute en fin de ce fichier
la définition du tableau créé plus haut.</para>
<screen><prompt>#</prompt> mdadm --detail --scan >> /etc/mdadm/mdadm.conf</screen>
</answer>
</qandaentry>
</qandaset>
</sect2>
</sect1>
<sect1 xml:id='sysadm-net.iscsi.qa.lvm-snapshot'>
<title>Configuration d'un volume logique de sauvegarde</title>
<para>L'objectif de cette partie est de créer un mécanisme de sauvegarde
réseau automatisé en s'appuyant sur la notion de «prise de vue» ou
<wordasword>snapshot</wordasword> proposée par le gestionnaire de volume
logique <acronym>LVM</acronym>. Dans une prise de vue, on ne stocke que les
différences relativement au volume logique original.</para>
<screen># pvcreate /dev/md0
Writing physical volume data to disk "/dev/md0"
Physical volume "/dev/md0" successfully created</screen>
<screen># pvdisplay
--- Physical volume ---
PV Name /dev/vda5
VG Name vm0
PV Size 31,76 GiB / not usable 2,00 MiB
Allocatable yes (but full)
PE Size 4,00 MiB
Total PE 8130
Free PE 0
Allocated PE 8130
PV UUID CpaZ5D-vbVS-32w3-QLnk-GVAd-06pB-y2Iw8Y
"/dev/md0" is a new physical volume of "31,98 GiB"
--- NEW Physical volume ---
PV Name /dev/md0
VG Name
PV Size 31,98 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID KAmRl0-ugMa-0eE3-ZJCc-Q2t0-lqeM-RB8Qxn</screen>
<screen># vgextend vm0 /dev/md0
Volume group "vm0" successfully extended</screen>
<screen># vgdisplay
--- Volume group ---
VG Name vm0
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size 63,74 GiB
PE Size 4,00 MiB
Total PE 16317
Alloc PE / Size 8130 / 31,76 GiB
Free PE / Size 8187 / 31,98 GiB
VG UUID dnw5zr-hPPU-L1FZ-P6Be-HL7E-FUNu-0OuosE</screen>
<screen># lvcreate --name backup -L12G vm0</screen>
<screen># lvcreate --snapshot --name LVM-snapshot-lab --extents +100%FREE /dev/vm0/root
Logical volume "LVM-snapshot-lab" created</screen>
<screen># lvdisplay /dev/vm0/LVM-snapshot-lab
--- Logical volume ---
LV Path /dev/vm0/LVM-snapshot-lab
LV Name LVM-snapshot-lab
VG Name vm0
LV UUID md1QF6-NI2p-tmxB-9IeO-mlBi-Xbi6-IUB3xE
LV Write Access read/write
LV Creation host, time iSCSI-1StInitiator, 2012-09-09 21:49:31 +0200
LV snapshot status active destination for root
LV Status available
# open 0
LV Size 30,41 GiB
Current LE 7784
COW-table size 19,98 GiB
COW-table LE 5115
Allocated to snapshot 0,00%
Snapshot chunk size 4,00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:3</screen>
<screen><prompt>#</prompt> mkdir /mnt/LVM-snapshot-lab
# mount /dev/vm0/LVM-snapshot-lab /mnt/LVM-snapshot-lab/</screen>
<screen><prompt>#</prompt> ll /mnt/LVM-snapshot-lab/
total 112K
drwxr-xr-x 2 root root 4,0K sept. 5 11:36 bin
drwxr-xr-x 2 root root 4,0K oct. 25 2010 boot
drwxr-xr-x 5 root root 4,0K oct. 25 2010 dev
drwxr-xr-x 79 root root 4,0K sept. 9 18:17 etc
drwxr-xr-x 3 root root 4,0K oct. 25 2010 home
lrwxrwxrwx 1 root root 30 sept. 5 11:36 initrd.img -> /boot/initrd.img-3.2.0-3-amd64
drwxr-xr-x 14 root root 12K sept. 5 11:36 lib
drwxr-xr-x 2 root root 4,0K sept. 5 11:33 lib64
drwx------ 2 root root 16K oct. 25 2010 lost+found
drwxr-xr-x 3 root root 4,0K oct. 25 2010 media
drwxr-xr-x 2 root root 4,0K août 6 2010 mnt
drwxr-xr-x 2 root root 4,0K oct. 25 2010 opt
drwxr-xr-x 2 root root 4,0K août 6 2010 proc
drwx------ 4 root root 4,0K sept. 7 17:18 root
drwxr-xr-x 2 root root 4,0K déc. 23 2011 run
drwxr-xr-x 2 root root 12K sept. 9 17:05 sbin
drwxr-xr-x 2 root root 4,0K juil. 21 2010 selinux
drwxr-xr-x 2 root root 4,0K oct. 25 2010 srv
drwxr-xr-x 2 root root 4,0K août 15 2010 sys
drwxrwxrwt 2 root root 4,0K sept. 9 18:17 tmp
drwxr-xr-x 10 root root 4,0K janv. 29 2012 usr
drwxr-xr-x 11 root root 4,0K janv. 29 2012 var</screen>
<screen><prompt>#</prompt> mkfs.ext4 /dev/vm0/backup
mke2fs 1.42.5 (29-Jul-2012)
Étiquette de système de fichiers=
Type de système d'exploitation : Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
« Stride » = 0 blocs, « Stripe width » = 0 blocs
786432 i-noeuds, 3145728 blocs
157286 blocs (5.00%) réservés pour le super utilisateur
Premier bloc de données=0
Nombre maximum de blocs du système de fichiers=3221225472
96 groupes de blocs
32768 blocs par groupe, 32768 fragments par groupe
8192 i-noeuds par groupe
Superblocs de secours stockés sur les blocs :
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
Allocation des tables de groupe : complété
Écriture des tables d'i-noeuds : complété
Création du journal (32768 blocs) : complété
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété
# mkdir /backup
# mount /dev/vm0/backup /backup/</screen>
<screen># tar --exclude-from backup-exclude.list -cvjf /backup/actually.tar.bz2 /
# /backup
/lib/init/rw
/proc
/sys
/dev
/run
/mnt
/selinux
/media
/var/lib/nfs
/etc/lvm</screen>
</sect1>
<sect1 xml:id='sysadm-net.iscsi.qa.vm'>
<title>Manipulations sur machines virtuelles</title>
<para>Il est possible de réaliser l'ensemble des manipulations de ce support à
l'aide de deux ou trois instances de machines virtuelles appartenant un
même réseau de diffusion (<acronym>LAN</acronym>).</para>
<para>L'infrastructure à implanter sur le système hôte est la suivante.</para>
<mediaobject>
<imageobject>
<imagedata fileref='images/topologie-iscsi-vm.png' format='PNG' contentwidth='15cm' width='15.5cm'/>
</imageobject>
<textobject>
<phrase>Topologie virtualisation iSCSI</phrase>
</textobject>
<caption>
<para><link xmlns="http://docbook.org/ns/docbook" xlink:href='https://www.inetdoc.net/travaux_pratiques/sysadm-net.iscsi.qa/images/topologie-iscsi-vm.png'>
Topologie virtualisation iSCSI - vue complète</link></para>
</caption>
</mediaobject>
<para>Le script <filename>install.sh</filename> donné en copie ci-dessous
effectue deux tâches distinctes.</para>
<para>Il commence par la copie des fichiers image des trois systèmes virtuels à
partir du fichier maître. Les fichiers au format <filename>.qed</filename>
sont des images compressées faciles à transférer.</para>
<para>Ensuite, il créé trois fichiers vides qui serviront de volume de stockage
à chaque machine virtuelle.</para>
<screen><?dbfo keep-together="auto" ?><xi:include href='files/install.sh'
parse='text' xmlns:xi='http://www.w3.org/2001/XInclude'/></screen>
<para>Le script <filename>startup.sh</filename> donné en copie ci-dessous sert
au lancement des trois systèmes virtuels avec chacun une unité de stockage
supplémentaire.</para>
<screen><?dbfo keep-together="auto" ?><xi:include href='files/startup.sh'
parse='text' xmlns:xi='http://www.w3.org/2001/XInclude'/></screen>
<para>Ce script fait lui-même appel au script commun
<filename>ovs-startup.sh</filename> qui sert à initialiser une instance de
machine virtuelle en utilisant comme paramètres le nom du fichier image, la
quantité de <acronym>RAM</acronym> et le cordon de brassage virtuel
<acronym>tap</acronym>. Le guide &url.vm; fournit le code source du
&url.vm.ovs-mode-startup.sh;.</para>
</sect1>
<sect1 xml:id='sysadm-net.iscsi.qa.bench'>
<title>Évaluation des performances</title>
<para>Voici quelques exemples de mesures de performances d'accès aux volumes
de stockage. L'objectif est de présenter quelques outils qui produisent des
résultats dans un laps de temps relativement court.</para>
<note>
<para>La pertinence ou la validité des résultats dépendent énormément du
facteur temps. Une mesure valide suppose un temps d'exécution de quelques
heures au moins pour chaque outil. Les résultats donnés ici ne peuvent donc
pas être considérés comme représentatif des performances de chaque
technologie de stockage.</para>
<para>Il convient de décrire de façon très détaillée les conditions dans
lesquelles ces tests sont réalisés. En effet, d'une plateforme matérielle à
l'autre la distorsion des performances est considérable.</para>
</note>
<para>Tous les résultats ci-dessous sont obtenus avec l'outil
<application>bonnie++</application> et une taille de fichier de 8Go.</para>
<variablelist>
<varlistentry xml:id='sysadm-net.iscsi.qa.bench.local'>
<term>Unité de disque locale</term>
<listitem>
<para>Système de fichiers <option>ext3</option> avec gestion de volume
logique <acronym>LVM</acronym>.</para>
<screen><prompt>#</prompt> time bonnie++ -u 1000 -s 8000 -d /var/tmp >result.txt
&lt;snipped>
<prompt>#</prompt> cat result.txt
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
iSCSI-1StInit 8000M 511 99 234868 55 180260 30 2985 99 615617 49 15925 260
Latency 26238us 535ms 545ms 4181us 8362us 63959us
Version 1.96 ------Sequential Create------ --------Random Create--------
iSCSI-1StInitiator -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
Latency 411us 779us 1413us 265us 28us 699us</screen>
</listitem>
</varlistentry>
<varlistentry>
<term>Unité de disque <acronym>iSCSI</acronym></term>
<listitem>
<para>Système de fichiers <option>ext4</option>.</para>
<screen><prompt>#</prompt> time bonnie++ -u 1000 -s 8000 -d /mnt/tmp >result.txt
&lt;snipped>
<prompt>#</prompt> cat result.txt
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
iSCSI-1StInit 8000M 534 99 96128 15 44584 11 2761 98 109216 16 3112 96
Latency 17770us 961ms 333ms 6060us 7910us 76502us
Version 1.96 ------Sequential Create------ --------Random Create--------
iSCSI-1StInitiator -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 27168 50 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
Latency 1228us 762us 820us 262us 34us 749us</screen>
</listitem>
</varlistentry>
<varlistentry>
<term>Tableau <acronym>RAID1</acronym> constitué d'une unité de disque
locale et d'une unité de disque <acronym>iSCSI</acronym></term>
<listitem>
<para>Système de fichiers <option>ext4</option>.</para>
<screen><prompt>#</prompt> time bonnie++ -u 1000 -s 8000 -d /mnt/tmp >result.txt
&lt;snipped>
<prompt>#</prompt> cat result.txt
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
iSCSI-1StInit 8000M 525 99 93851 15 60117 12 2795 95 177757 19 3707 99
Latency 25078us 729ms 194ms 45986us 343ms 1055ms
Version 1.96 ------Sequential Create------ --------Random Create--------
iSCSI-1StInitiator -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 26606 51 +++++ +++ +++++ +++ +++++ +++ +++++ +++ 30648 41
Latency 195us 791us 823us 351us 47us 745us</screen>
</listitem>
</varlistentry>
</variablelist>
</sect1>
<sect1 xml:id='sysadm-net.iscsi.qa.refdocs'>
<title>Documents de référence</title>
<variablelist>
<varlistentry xml:id='sysadm-net.iscsi.qa.infra.tp'>
<term><citetitle>Architecture réseau des travaux pratiques</citetitle></term>
<listitem>
<para>&url.infra.tp; : présentation de l'implantation des
équipements d'interconnexion réseau dans l'armoire de brassage et du plan
d'adressage <acronym>IP</acronym> prédéfini pour l'ensemble des séances
de travaux pratiques. Ce document est utilisé dans la <xref
linkend='sysadm-net.iscsi.qa.affectation'/>.</para>
</listitem>
</varlistentry>
<varlistentry xml:id='sysadm-net.iscsi.qa.config.interface.lan'>
<term><citetitle>Configuration d'une interface réseau</citetitle></term>
<listitem>
<para>&url.config.interface.lan; : tout sur la configuration des
interfaces réseau de réseau local. Comme dans le cas précédent, ce
document est utile pour effectuer les opérations demandées dans la
<xref linkend='sysadm-net.iscsi.qa.affectation'/>.</para>
</listitem>
</varlistentry>
<varlistentry xml:id='sysadm-net.iscsi.qa.introduction'>
<term><citetitle>Introduction to iSCSI</citetitle></term>
<listitem>
<para>L'article intitulé &url.iscsi.linux-mag.introduction; du site Linux
Magazine présente les points clés de la technologie
<acronym>iSCSI</acronym>. Il complète la <xref
linkend='sysadm-net.iscsi.qa.topology'/>.</para>
</listitem>
</varlistentry>
<varlistentry xml:id='sysadm-net.iscsi.qa.debian.wiki'>
<term><citetitle>iSCSI - Debian Wiki</citetitle></term>
<listitem>
<para>La page &url.iscsi.debian.wiki; contient deux sous-rubriques sur
les rôles <wordasword>initiator</wordasword> et
<wordasword>target</wordasword>. Pour le rôle
<wordasword>target</wordasword>, la section relative à l'utilisation du
sous système &url.iscsitarget; n'a pas encore été documentée.</para>
</listitem>
</varlistentry>
</variablelist>
</sect1>
</article>