<?xml version="1.0" encoding="iso-8859-1"?> <!-- The FreeBSD Documentation Project The FreeBSD French Documentation Project $FreeBSD$ Original revision: 1.30 --> <chapter id="GEOM"> <chapterinfo> <authorgroup> <author> <firstname>Tom</firstname> <surname>Rhodes</surname> <contrib>Ecrit par </contrib> </author> </authorgroup> </chapterinfo> <title>GEOM: architecture modulaire de gestion des disques</title> &trans.a.fonvieille; <sect1 id="GEOM-synopsis"> <title>Synopsis</title> <indexterm> <primary>GEOM</primary> </indexterm> <indexterm> <primary>Système de gestion des disques GEOM</primary> <see>GEOM</see> </indexterm> <para>Ce chapitre couvre l'utilisation des disques via le système GEOM sous &os;. Cela comprend les utilitaires principaux de contrôle des niveaux <acronym role="Redundant Array of Inexpensive Disks">RAID</acronym> qui utilisent GEOM pour la configuration. Ce chapitre n'abordera pas en profondeur la manière dont GEOM gère et contrôle les E/S, les systèmes sous-jacents, ou le code utilisé. Ces informations sont fournies par la page de manuel &man.geom.4; et ses nombreuses références. Ce chapitre n'est pas non plus un guide de référence sur les configurations <acronym>RAID</acronym>. Seuls les niveaux de <acronym>RAID</acronym> supportés par GEOM seront abordés.</para> <para>Après la lecture de ce chapitre, vous saurez:</para> <itemizedlist> <listitem> <para>Quel type de support <acronym>RAID</acronym> est disponible avec GEOM.</para> </listitem> <listitem> <para>Comment utiliser les utilitaires de base pour configurer, gérer et manipuler les différents niveaux de <acronym>RAID</acronym>.</para> </listitem> <listitem> <para>Comment dupliquer, entrelacer, et connecter à distance des disques via le système GEOM.</para> </listitem> <listitem> <para>Comment dépanner les disques attachés au système GEOM.</para> </listitem> </itemizedlist> <para>Avant de lire ce chapitre, vous devrez:</para> <itemizedlist> <listitem> <para>Comprendre comment &os; gère les disques (<xref linkend="disks"/>).</para> </listitem> <listitem> <para>Savoir comment configurer et installer un nouveau noyau &os; (<xref linkend="kernelconfig"/>).</para> </listitem> </itemizedlist> </sect1> <sect1 id="GEOM-intro"> <title>Introduction à GEOM</title> <para>GEOM autorise l'accès et le contrôle de classes — secteur principaux de démarrage (<quote>Master Boot Records</quote>), labels <acronym>BSD</acronym>, etc. — par l'intermédiaire d'interfaces, ou de fichiers spéciaux du répertoire <filename class="directory">/dev</filename>. En supportant plusieurs configurations <acronym>RAID</acronym> logicielles, GEOM offrira un accès transparent au système d'exploitation et à ses utilitaires.</para> </sect1> <sect1 id="GEOM-striping"> <sect1info> <authorgroup> <author> <firstname>Tom</firstname> <surname>Rhodes</surname> <contrib>Ecrit par </contrib> </author> <author> <firstname>Murray</firstname> <surname>Stokely</surname> </author> </authorgroup> </sect1info> <title>RAID0 - <quote>Striping</quote></title> <indexterm> <primary>GEOM</primary> </indexterm> <indexterm> <primary>Striping</primary> </indexterm> <para>Le <quote>striping</quote> (ou entrelacement) est utilisé pour combiner plusieurs disques en un seul volume de stockage. Dans de nombreux cas, cette configuration est réalisée à l'aide de contrôleurs matériels. Le sous-système GEOM offre le support pour le niveau <acronym>RAID</acronym>0, également connu sous le nom de <quote>striping</quote>.</para> <para>Dans un système <acronym>RAID</acronym>0, les données sont divisées en blocs répartis sur l'ensemble des disques de la <quote>grappe</quote>. Au lieu de devoir attendre l'écriture de 256k sur un disque, un système <acronym>RAID</acronym>0 peut écrire en simultané 64k sur quatre disques différents, offrant alors des performances d'accès supérieures. Ces performances peuvent être encore améliorées en utilisant plusieurs contrôleurs de disques.</para> <para>Chaque disque d'une bande (<quote>stripe</quote>) <acronym>RAID</acronym>0 doit avoir la même taille, puisque les requêtes d'E/S sont entrelacées de manière à lire ou écrire sur plusieurs disques en parallèle.</para> <mediaobject> <imageobject> <imagedata fileref="geom/striping" align="center"/> </imageobject> <textobject> <phrase>Illustration de l'entrelacement de disques</phrase> </textobject> </mediaobject> <procedure> <title>Création d'un système entrelacé à partir de disques ATA non formatés</title> <step> <para>Chargez le module <filename>geom_stripe</filename>:</para> <screen>&prompt.root; <userinput>kldload geom_stripe</userinput></screen> </step> <step> <para>Assurez-vous de l'existence d'un point de montage. Si ce volume doit devenir une partition racine, utilisez alors un autre point de montage comme <filename class="directory">/mnt</filename>.</para> <screen>&prompt.root; <userinput>mkdir /mnt</userinput></screen> </step> <step> <para>Déterminez les noms de périphériques pour les disques qui seront entrelacé, et créez le nouveau périphérique entrelacé. Par exemple, pour entrelacer deux disques <acronym>ATA</acronym> non utilisés et non partitionnés, par exemple <filename>/dev/ad2</filename> et <filename>/dev/ad3</filename>:</para> <screen>&prompt.root; <userinput>gstripe label -v st0 /dev/ad2 /dev/ad3</userinput></screen> <!-- <para>A message should be returned explaining that meta data has been stored on the devices. XXX: What message? Put it inside the screen output above. --> </step> <step> <para>Créez un label standard, également connu sous le nom de table des partitions, sur le nouveau volume et installez le code d'amoraçage par défaut:</para> <screen>&prompt.root; <userinput>bsdlabel -wB /dev/stripe/st0</userinput></screen> </step> <step> <para>Cette opération doit avoir créé deux autres périphériques dans le répertoire <filename class="directory">/dev/stripe</filename> en plus du périphérique <devicename>st0</devicename>: <devicename>st0a</devicename> et <devicename>st0c</devicename>. A ce stade, un système de fichiers peut être créé sur <devicename>st0a</devicename> en utilisant la commande <command>newfs</command>:</para> <screen>&prompt.root; <userinput>newfs -U /dev/stripe/st0a</userinput></screen> <para>Des nombres défileront à l'écran, l'opération sera s'achèvera après quelques secondes. Le volume a été créé et est prêt à être monté.</para> </step> </procedure> <para>Pour monter manuellement une grappe de disques entrelacés fraîchement créée:</para> <screen>&prompt.root; <userinput>mount /dev/stripe/st0a /mnt</userinput></screen> <para>Pour monter automatiquement au démarrage ce système de fichiers entrelacé, ajoutez les informations concernant ce volume dans le fichier <filename>/etc/fstab</filename>:</para> <screen>&prompt.root; <userinput>echo "/dev/stripe/st0a /mnt ufs rw 2 2" \</userinput> <userinput>>> /etc/fstab</userinput></screen> <para>Le module <filename>geom_stripe</filename> doit également être automatiquement chargé lors de l'initialisation du système en ajoutant une ligne au fichier <filename>/boot/loader.conf</filename>:</para> <screen>&prompt.root; <userinput>echo 'geom_stripe_load="YES"' >> /boot/loader.conf</userinput></screen> </sect1> <sect1 id="GEOM-mirror"> <title>RAID1 - <quote>mirroring</quote></title> <indexterm> <primary>GEOM</primary> </indexterm> <indexterm> <primary>mirroring</primary> </indexterm> <para>Le <quote>mirroring</quote> est une technologie utilisée par de nombreuses entreprises et beaucoup de particuliers pour sauvegarder les données sans interruption des activités. Quand un miroir existe, cela signifie que le disque B est une copie du disque A. Ou, autre cas, que les disques C+D sont une copie des disques A+B. Indépendamment de la configuration des disques, l'aspect important est que les données d'un disque ou d'une partition sont dupliquées. Ultérieurement, ces données pourront être plus facilement restaurées, sauvegardées sans interrompre le système ou les accès, et pourront même être stockées physiquement de manière sure.</para> <para>Pour commencer, vérifiez que le système dispose de deux disques de taille identique, cet exemple suppose que ce sont des disques <acronym>SCSI</acronym> (&man.da.4;).</para> <para>Installez &os; sur le premier disque avec uniquement deux partitions. Une partition sera la partition de pagination d'une taille double à celle de la <acronym>RAM</acronym> et l'espace restant sera alloué au système de fichiers racine (<filename class="directory">/</filename>). Il est possible d'avoir des partitions séparées pour les autres points de montage, cependant cela augmentera énormément le niveau de difficulté en raison des modifications manuelles nécessaires des paramètres de &man.bsdlabel.8; et &man.fdisk.8;.</para> <para>Redémarrez et attendez l'initialisation complète du système. Ensuite, ouvrez une session sous l'utilisateur <username>root</username>.</para> <para>Créez le périphérique <filename>/dev/mirror/gm</filename> et liez-le avec <filename>/dev/da1</filename>:</para> <screen>&prompt.root; <userinput>gmirror label -vnb round-robin gm0 /dev/da1</userinput></screen> <para>Le système devrait répondre par:</para> <screen> Metadata value stored on /dev/da1. Done.</screen> <para>Initialisez GEOM, cela devrait charger le module du noyau <filename>/boot/kernel/geom_mirror.ko</filename>:</para> <screen>&prompt.root; <userinput>gmirror load</userinput></screen> <note> <para>Cette commande devrait créer le fichier spécial de périphérique <devicename>gm0</devicename> sous le répertoire <filename class="directory">/dev/mirror</filename>.</para> </note> <para>Installez un label <command>fdisk</command> et un code de d'amorce génériques sur le nouveau périphérique <devicename>gm0</devicename>:</para> <screen>&prompt.root; <userinput>fdisk -vBI /dev/mirror/gm0</userinput></screen> <para>Installez maintenant un label générique <command>bsdlabel</command>:</para> <screen>&prompt.root; <userinput>bsdlabel -wB /dev/mirror/gm0s1</userinput></screen> <note> <para>S'il existe plusieurs <quote>slices</quote> et plusieurs partitions, il faudra modifier les paramètres des deux commandes précédentes. Elles doivent correspondre aux tailles des partitions et <quote>slices</quote> sur l'autre disque.</para> </note> <para>Utilisez l'utilitaire &man.newfs.8; pour créer un système de fichiers <acronym>UFS</acronym> sur le périphérique <devicename>gm0s1a</devicename>:</para> <screen>&prompt.root; <userinput>newfs -U /dev/mirror/gm0s1a</userinput></screen> <para>Le système devrait alors afficher un certain nombre d'informations et de nombres. C'est bon signe. Contrôlez l'affichage à la recherche de messages d'erreur et montez le périphérique sur le point de montage <filename class="directory">/mnt</filename>:</para> <screen>&prompt.root; <userinput>mount /dev/mirror/gm0s1a /mnt</userinput></screen> <para>Transférez maintenant toutes les données du disque de démarrage vers ce nouveau système de fichiers. Dans notre exemple nous utilisons à cet effet les commandes &man.dump.8; et &man.restore.8;, cependant la commande &man.dd.1; conviendrait également.</para> <screen>&prompt.root; <userinput>dump -L -0 -f- / |(cd /mnt && restore -r -v -f-)</userinput></screen> <para>Cela doit être effectué pour chaque système de fichiers. Placez simplement le système de fichiers approprié au bon endroit quand vous exécutez la commande précédente.</para> <para>Editez ensuite le fichier <filename>/mnt/etc/fstab</filename> et supprimez ou mettez en commentaires le fichier de pagination <footnote> <para>Il est à noter que commenter l'entrée de l'espace de pagination dans <filename>fstab</filename> vous demandera très probablement de mettre en place une méthode différente pour activer l'espace de pagination. Veuillez vous référer à la <xref linkend="adding-swap-space"/> pour plus d'informations.</para> </footnote>. Modifiez les autres paramètres du système de fichiers pour utiliser le nouveau disque comme présenté l'exemple suivant:</para> <programlisting># Device Mountpoint FStype Options Dump Pass# #/dev/da0s2b none swap sw 0 0 /dev/mirror/gm0s1a / ufs rw 1 1</programlisting> <para>Créez maintenant un fichier <filename>boot.config</filename> sur la partition racine actuelle et celle nouvellement créée. Ce fichier <quote>aidera</quote> le <acronym>BIOS</acronym> à déterminer correctement sur quel disque démarrer:</para> <screen>&prompt.root; <userinput>echo "1:da(1,a)/boot/loader" > /boot.config</userinput></screen> <screen>&prompt.root; <userinput>echo "1:da(1,a)/boot/loader" > /mnt/boot.config</userinput></screen> <note> <para>Nous l'avons ajouter sur les deux partitions racines afin d'assurer un démarrage correct. Si pour une raison quelconque le système ne pourrait le lire à partir de la nouvelle partition racine, une version de secours est disponible.</para> </note> <para>Assurez-vous que le module <filename>geom_mirror.ko</filename> sera chargé au démarrage du système en lançant la commande suivante:</para> <screen>&prompt.root; <userinput>echo 'geom_mirror_load="YES"' >> /mnt/boot/loader.conf</userinput></screen> <para>Redémarrez le système:</para> <screen>&prompt.root; <userinput>shutdown -r now</userinput></screen> <para>Si tout s'est bien passé, le système a dû démarrer à partir du périphérique <devicename>gm0s1a</devicename> et une invite d'ouverture de session doit être affichée. En cas de problème, consultez la section suivante consacrée au dépannage. Ajoutez maintenant le disque <devicename>da0</devicename> au périphérique <devicename>gm0</devicename>:</para> <screen>&prompt.root; <userinput>gmirror configure -a gm0</userinput> &prompt.root; <userinput>gmirror insert gm0 /dev/da0</userinput></screen> <para>L'option <option>-a</option> demande à &man.gmirror.8; d'utiliser une synchronisation automatique, c'est à dire dupliquer automatiquement toute écriture disque. La page de manuel explique comment reconstruire et remplacer les disques, avec la différence qu'elle utilise <devicename>data</devicename> à la place de <devicename>gm0</devicename>.</para> <sect2> <title>Dépannage</title> <sect3> <title>Le système refuse de démarrer</title> <para>Si le démarrage du système s'interrompt à une invite semblable à:</para> <programlisting>ffs_mountroot: can't find rootvp Root mount failed: 6 mountroot></programlisting> <para>Redémarrez la machine à l'aide du bouton de mise en marche ou de <quote>reset</quote>. Au menu de démarrage, sélectionnez la sixième option (6). Le système basculera alors vers une invite du chargeur (&man.loader.8;). Chargez manuellement le module du noyau:</para> <screen>OK? <userinput>load geom_mirror</userinput> OK? <userinput>boot</userinput></screen> <para>Si cela fonctionne, cela signifie que pour une raison quelconque le module n'a pas été correctement chargé. Ajoutez la ligne:</para> <programlisting>options GEOM_MIRROR</programlisting> <para>dans le fichier de configuration du noyau, recompilez-le puis réinstallez-le. Cela devrait corriger le problème.</para> </sect3> </sect2> </sect1> <sect1 id="geom-ggate"> <title>Périphériques réseau <quote>GEOM Gate</quote></title> <para>GEOM supporte l'utilisation de périphériques distants, comme les disques durs, les CD-ROMs, les fichiers, etc. via l'utilisation des outils <quote>gate</quote>. Ce mécanisme est semblable à <acronym>NFS</acronym>.</para> <para>Pour commencer, un fichier d'export doit être créé. Ce fichier précise qui est autorisé à accéder aux ressources partagées et quel niveau d'accès est offert. Par exemple, pour partager la quatrième tranche du premier disque <acronym>SCSI</acronym>, le fichier <filename>/etc/gg.exports</filename> suivant est adapté:</para> <programlisting>192.168.1.0/24 RW /dev/da0s4d</programlisting> <para>Cette ligne autorisera l'accès au système de fichiers présent sur la partition <devicename>da0s4d</devicename> à toutes les machines du réseau local.</para> <para>Pour exporter ce périphérique, assurez-vous tout d'abord qu'il n'est pas déjà monté et lancez le <quote>démon</quote> &man.ggated.8;:</para> <screen>&prompt.root; <userinput>ggated</userinput></screen> <para>Maintenant pour monter le périphérique sur la machine cliente, tapez les commandes suivantes:</para> <screen>&prompt.root; <userinput>ggatec create -o rw 192.168.1.1 /dev/da0s4d</userinput> ggate0 &prompt.root; <userinput>mount /dev/ggate0 /mnt</userinput></screen> <para>A partir d'ici, on peut accéder au périphérique par l'intermédiaire du point de montage <filename class="directory">/mnt</filename>.</para> <note> <para>Il est à noter que toutes ces opérations échoueront si le disque est déjà monté soit sur la machine serveur soit sur tout autre machine du réseau.</para> </note> <para>Quand le périphérique n'est plus utilisé, il peut être démonté sans risque avec la commande &man.umount.8; de la même manière que pour tout autre disque.</para> </sect1> <sect1 id="geom-glabel"> <title>Ajouter un label à un disque</title> <indexterm> <primary>GEOM</primary> </indexterm> <indexterm> <primary>Labels de disque</primary> </indexterm> <para>Lors de l'initialisation du système, le noyau &os; créé les fichiers spéciaux de périphériques à mesure que les périphériques sont détectés. Cette méthode de détection des périphériques soulève quelques problèmes, par exemple que se passe-t-il si un nouveau disque est ajouté par l'intermédiaire de l'interface <acronym>USB</acronym>? Il est très probable qu'un disque flash se verra proposer le nom de périphérique <devicename>da0</devicename> et le périphérique original <devicename>da0</devicename> déplacé en <devicename>da1</devicename>. Cela sera à l'origine de problèmes de montage des systèmes de fichiers s'ils sont listés dans <filename>/etc/fstab</filename>, en fait cela pourra tout simplement empêcher le démarrage du système.</para> <para>Une solution à ce problème est d'<quote>enchaîner</quote> les périphériques <acronym>SCSI</acronym> afin que tout nouveau périphérique ajouté sur la carte <acronym>SCSI</acronym> se voit assigné un numéro de périphérique non-utilisé. Mais qu'en est-il des périphériques <acronym>USB</acronym> qui peuvent remplacer le premier disque <acronym>SCSI</acronym>? Cela se produit parce que les périphériques <acronym>USB</acronym> sont en général détectés avant la carte <acronym>SCSI</acronym>. Une solution est de brancher ces périphériques qu'après le démarrage du système. Une autre méthode serait de n'utiliser qu'un seul disque <acronym>ATA</acronym> et de ne jamais lister de périphériques <acronym>SCSI</acronym> dans le fichier <filename>/etc/fstab</filename>.</para> <para>Une meilleure solution existe. En employant l'utilitaire <command>glabel</command>, un administrateur ou un utilisateur peut attribuer un label à chacun de ses disques et utiliser ces labels dans <filename>/etc/fstab</filename>. Comme <command>glabel</command> conserve le label sur le dernier secteur du support concerné, le label persistera après redémarrage du système. En utilisant ce label comme un véritable périphérique, le système de fichiers pourra toujours être monté indépendamment du fichier spécial de périphérique utilisé pour y accéder.</para> <note> <para>Cela se fait sans préciser qu'un label sera permanent. L'utilitaire <command>glabel</command> peut être utilisé pour créer des labels persistants et des labels éphémères. Seul le label persistant sera conservé après redémarrage du système. Consultez la page de manuel de &man.glabel.8; pour plus d'information sur les différences entre labels.</para> </note> <sect2> <title>Types et exemples de labels</title> <para>Il existe deux types de label, un label générique et un label de système de fichiers. La différence entre les labels est le système d'auto-détection associé avec les labels permanents, et le fait que ce type de label sera persistant après redémarrage du système. A ces labels est attribué un sous-répertoire spécifique de <filename class="directory">/dev</filename> dont le nom sera basé sur le type de système de fichiers. Par exemple, les labels de systèmes de fichiers <acronym>UFS</acronym>2 seront créés dans le répertoire <filename class="directory">/dev/ufs2</filename>.</para> <para>Un label générique disparaîtra au redémarrage suivant. Ces labels seront créés dans le répertoire <filename class="directory">/dev/label</filename> et sont parfaits pour faire des expériences.</para> <!-- XXXTR: How do you create a file system label without running newfs or when there is no newfs (e.g.: cd9660)? --> <para>Les labels permanents peuvent être placés sur le système de fichiers en utilisant les utilitaires <command>tunefs</command> ou <command>newfs</command>. Pour créer un label permanent pour un système de fichier <acronym>UFS</acronym>2 sans endommager de données, utilisez la commande suivante:</para> <screen>&prompt.root; <userinput>tunefs -L home /dev/da3</userinput></screen> <warning> <para>Si le système de fichiers est plein, cette opération pourra entraîner une corruption des données; si le système de fichiers est plein, alors la première chose à faire sera de supprimer les fichiers inutiles et non pas l'ajout de labels.</para> </warning> <para>Un nouveau label devrait désormais apparaître dans <filename class="directory">/dev/ufs2</filename> et pourra être ajouté à <filename>/etc/fstab</filename>:</para> <programlisting>/dev/ufs2/home /home ufs rw 2 2</programlisting> <note> <para>Le système de fichiers ne doit pas être monté lors de l'utilisation de <command>tunefs</command>.</para> </note> <para>Le système de fichiers peut, maintenant, être normalement monté:</para> <screen>&prompt.root; <userinput>mount /home</userinput></screen> <para>La commande suivante peut être employée pour supprimer le label:</para> <screen>&prompt.root; <userinput>glabel destroy home</userinput></screen> <para>A partir de cet instant, aussi longtemps que le module du noyau <filename>geom_label.ko</filename> est chargé au démarrage avec <filename>/boot/loader.conf</filename> ou que l'option <literal>GEOM_LABEL</literal> est présente dans le noyau, le fichier spécial de périphérique peut changer sans effet négatif pour le système.</para> <para>Les systèmes de fichiers peuvent également être créés avec un label par défaut en utilisant l'option <option>-L</option> avec <command>newfs</command>. Consultez la page de manuel de &man.newfs.8; pour plus d'information.</para> </sect2> </sect1> </chapter>