Freebsd Disk management GEOM : Howto

1. Pré-requis : présentation de GEOM

GEOM [1] [2] est un framework d’abstraction d’accès à des raw-devices via des classes (CONCAT, ELI, LABEL, MIRROR, NOP, RAID3, SHSEC, STRIPE, VINUM) ; chaque classe représente un typ1. Pré-requis : présentation de GEOM

GEOM [1] [2] est un framework d’abstraction d’accès à des raw-devices via des classes (CONCAT, ELI, LABEL, MIRROR, NOP, RAID3, SHSEC, STRIPE, VINUM) ; chaque classe représente un type d’action sur ces raw-devices. Il est possible de combiner plusieurs classes sur un même device, et ce, dans différents ordres, ce qui éloigne fortement GEOM des autres ” volume managers ” qui ont une typologie beaucoup plus stricte.
Un peu de vocabulaire :

  • Une classe implémente un type particulier d’action sur ces raw-devices (disques durs IDE, SATA, SCSI ; clés USB ; fichiers ” filesystem ” montés sur une loopback mdconfig(3)) ;
  • Un provider est le device résultant de l’action de GEOM sur ces raw-devices ;
  • Un consumer est le device sur lequel s’applique la classe, au départ, le device physique.

Le handbook comporte un chapitre très complet sur GEOM [3] : ” Chapter 18 GEOM : Modular Disk Transformation “.

2. Introduction

Je vais vous conter l’histoire des aventures de Sprouty, l’ami fidèle du GEOM Vert, qui a décidé de ranger son placard à nourriture.
Sprouty est un brin désordonné, il se retrouve assez vite avec des boîtes de maïs doux plein les mains sans en reconnaître les différentes préparations, ni les dates limites de consommation. Heureusement, GEOM Vert va l’aider à s’y retrouver et va même en profiter pour lui montrer des petites astuces.

3. ” GEOM Vert ! GEOM Vert ! Viens voir ! ” (les bienfaits de glabel)

Sprouty est bien embêté, il a plein de boîtes de maïs étalées partout et plus aucune n’a d’étiquette. Il avait bien constitué des petits tas de boîtes selon les dates limites de consommation et les différentes recettes, mais le chat est passé par-là et les boîtes sont toutes mélangées.
Sprouty est allé chercher son scanner à code-barres portable et commence à scanner les étiquettes de code-barres restant sur les boîtes de maïs, mais c’est quelque chose de bien laborieux, car, à chaque passage, il est obligé de regarder ce qu’affiche le /var/log/messages de son scanner à code-barres pour savoir si c’est une boîte de maïs qui est vue en da0 ou en da3, et pouvoir ensuite utiliser le bon ouvre-boîte de la marque mount.
GEOM Vert, passant par-là par hasard, voit son ami complètement noyé sous ses boîtes de maïs en train de perdre beaucoup de temps à trier son garde-manger.
GEOM Vert : ” Sprouty, mais que fais-tu ? “
Sprouty : ” GEOM Vert ! Je suis heureux de te voir ; regarde ce tas de boîtes de maïs, je n’arrive pas à m’y retrouver. “
GEOM Vert : ” Ok, je peux t’aider ? “
GEOM Vert prend alors deux boîtes de maïs identiques, les manipule et les insère dans le scanner de Sprouty :

GEOM VERT : ” Regarde Sprouty, tu vois la première boîte est vue comme da0 et la seconde comme da1.
Sprouty lui répond alors : ” Oui j’ai vu, mais cela ne m’aide pas, car si je change l’ordre d’insertion, les daX changent aussi ! “
GEOM Vert fait tranquillement observer à Sprouty la dernière ligne de la première boîte : ” Regarde bien la ligne avec GEOM_LABEL, elle comporte le label bsdkey “.
GEOM Vert retire alors les 2 boîtes de maïs du scanner et les insère dans un ordre différent.

Sprouty s’étonne alors : ” Oh ! L’ordre des daX a bien changé, mais on retrouve le GEOM_LABEL sur la bonne boîte ! “
Sprouty (se tournant vers GEOM Vert) : ” GEOM Vert, est-il possible d’utiliser le label bsdkey pour m’y retrouver dans mes boîtes de maïs ? “
GEOM Vert explique à son ami que quel que soit l’ordre d’introduction de la boîte de maïs avec le GEOM_LABEL, la première fois en umass1/da1, la seconde fois en umass0/da0, le label label/bsdkey est reconnu par le scanner à code-barres dans /dev/label/.
GEOM Vert prend alors le scanner portable des mains de Sprouty et commence à taper sur l’interface. ” Regarde, le label se retrouve ici, ce qui te permet d’effectuer toutes les opérations courantes (newfs, fsck, mount) sur la boîte /dev/label/bsdkey sans avoir à te préoccuper du nom réel da0 ou daX“.

Sprouty reste sans voix face à cette démonstration pourtant simple et un sourire commence à se dessiner lentement sur son visage. ” Tu veux dire que j’ai juste à trouver des noms distincts pour mes boîtes de maïs et je pourrais les utiliser par leur nom indépendamment de l’ordre d’insertion dans mon scanner ? “
” C’est tout à fait ça “, lui répond GEOM Vert, ” de plus, GEOM_LABEL écrivant ses données dans le dernier secteur du consumer, il est tout à fait possible de glabelliser des boîtes qui ne sont pas en UFS (en VFAT, au hasard, comme les Memory Card d’APN par exemple, ou en utilisant les labels ext2/3 des partitions Linux). Le montage GEOM ne se fera alors pas dans l’arborescence /dev/label/, mais dans /dev/msdosfs/ ou /dev/ext2fs/ “.

Sprouty, habituellement si volubile, est éberlué et réfléchit intensément à ce que vient de lui montrer son ami GEOM Vert.

4. Les différents modèles de scanner (vnconfig/mdconfig/ggatel)

NOTE
Le traducteur a tenu à laisser dans la langue d’origine les expressions de cette magnifique histoire, toutefois pour la bonne compréhension de ce qui va suivre, le lecteur devra avoir à l’esprit que la boîte de cœurs de palmiers dont il est question est en fait un fichier monté sur une loopback et utilisé comme filesystem.

GEOM Vert profite d’avoir l’attention de Sprouty pour lui faire lire les pages de manuel citées au début et insiste sur quelques points liés aux différentes versions de son scanner à code-barres.
” Avant la version 5.X de ton scanner, tu utilisais vnconfig [4] pour monter des boîtes de cœurs de palmiers. Depuis la version 5.X, tu utilises mdconfig [5] pour le même usage “.

Le fichier disk0.img est devenu une véritable boîte de cœurs de palmiers…
GEOM Vert défait le résultat des commandes qu’il vient d’exécuter sur le scanner de Sprouty et lui explique qu’il va utiliser la commande GEOM ggatel [6] pour le même résultat.

5. Les boîtes de maïs et les boîtes d’asperges

GEOM Vert a envie d’aller plus loin dans la démonstration des possibilités du scanner à code-barres et il crée plusieurs fichiers sur le scanner à code-barres de son ami pour simuler des boîtes d’asperges et de maïs.
Les différentes boîtes d’asperges auront pour petit nom diskX.img avec X allant de 0 à 4 et les boîtes de maïs se prénommeront usbX.img avec X allant de 0 à 2.

Les disques et les clés USB seront glabelisées de diskA à diskE et de usbA à usbC ce qui donne le tableau suivant :

/img-articles/lmhs/29/cc-art-geom/fig-1.jpg

GEOM Vert explique que la liste des devices est entre parenthèses, car c’est justement une dépendance dont il veut s’affranchir et qu’il n’utilisera que les devices via leur nom de label. Une fois tous ces fichiers images créés, cela donne ceci :

5.1 Faire des miroirs avec des boîtes de maïs (gmirror)

…ou comment faire du raid1 soft en 2 minutes. GEOM Vert a envie d’épater son ami Sprouty : il l’interpelle et commence à taper une série de commandes sur l’interface du scanner à code-barres.

GEOM Vert explique : ” Bien évidemment, pendant ce temps-là, rien ne nous empêche de monter /dev/mirror/gm0 dans un répertoire de travail sur le scanner et d’effectuer des opérations dessus. De la même manière, rien ne nous empêche de créer un nom de label pour ce volume gm0 “.

GEOM Vert informe Sprouty que les labels diskA et diskB auront disparu.

5.2 Faire des miroirs avec des boîtes de maïs à distance (ggated et ggatec)

Non content d’avoir montré à Sprouty comment faire des miroirs avec ses boîtes de maïs, GEOM Vert va maintenant lui montrer comment faire la même chose à distance (à travers le réseau, simulé ici par 127.0.0.1).
Sprouty reste très attentif, même s’il ne comprend pas encore toutes les commandes que tape son ami. Les deux parties du miroir vont être configurées sur des serveurs ” client ” et ” remote “.
Dans un premier temps, GEOM Vert configure le daemon qui va recevoir l’autre moitié du miroir sur le serveur ” remote “.

Ensuite, sur le serveur ” client “, on s’attache à la boîte de maïs du serveur ” remote ” :

” Vu du serveur client “, explique GEOM Vert, ” c’est comme si le miroir de boîtes de maïs était parfaitement local. On peut donc associer nos boîtes de maïs en miroir comme tout à l’heure. “

Pour parfaire la démonstration, GEOM Vert place un fichier dans le volume raid1 (gm1), stoppe ce volume, démonte les images disques locale et réseau (disk4.img et 127.0.0.1:3080 /home/diskNetwork.img) et tue le daemon ggated.
Maintenant, GEOM Vert demande à Sprouty d’imaginer que le serveur ” client ” a rencontré un problème (des lapins sont venus manger ses boîtes de maïs). Il va utiliser la copie du serveur ” remote ” remontée dans un volume gmirror dégradé.
Sur le serveur ” remote “, GEOM Vert attache la boîte de maïs qui était celle distante.

Il regarde sur quel nom de miroir gmX elle était attachée :

Et il recrée un miroir partiel, le vérifie et le monte :

Sprouty est épaté, subjugué par la démonstration de GEOM Vert qui paraît tellement simple lorsqu’elle est orchestrée par ses soins.

6. Protégeons notre miroir de boîtes de maïs

Continuant sur sa lancée, GEOM Vert a envie de montrer à Sprouty comment protéger ses boîtes de maïs des museaux un peu trop curieux. GEOM Vert lui demande alors un mot de passe secret : ” raide one “, lui répond-il.

Pour prouver à Sprouty qu’il retrouvera bien ses boîtes de maïs originales dans le container protégé, GEOM Vert crée une étiquette témoin.

7. Mettre le tout à la banque (gshsec)

Comme Sprouty ne comprend pas très bien ce que veut lui expliquer GEOM ?Vert, ce dernier va tenter d’utiliser une métaphore issue d’un monde irréel qu’ils ont vu tous les deux lors de la projection d’un film de science-fiction.
” Rappelle-toi ce film : il y avait un coffre à la banque. L’acteur principal et son conseiller avaient chacun une clé les deux, une fois réunies, leur permettaient d’ouvrir le coffre. Sans la clé de son conseiller, il ne pouvait pas avoir accès à son coffre tout seul ; de même, son conseiller ne pouvait avoir accès au contenu du coffre de l’acteur sans sa clé. “
GEOM Vert : ” Dans ce que je veux te montrer, c’est un peu la même chose, nous allons remplacer ces deux clés mécaniques par des ouvre-boîtes qui contiendront chacun une partie d’un fichier servant à accéder à un container encrypté. Je te demande un peu d’attention, car cela n’est pas forcément simple. “

GEOM Vert explique : “Chaque ouvre-boîte (usbA et usbB) comporte la moitié des informations de la clé accessible via /dev/shsec/secret. Par contre, les précédents labels usbA et usbB auront disparu après l’exécution de cette commande. Seul le label secret subsistera. Celui-ci sera automatiquement monté dès l’insertion des deux clés. Si on retire une des deux clés USB, le device secret est supprimé. “

“On réinsère la seconde clé USB (peu importe sous quel device). Le device secret est de nouveau accessible. “

GEOM Vert : ” Regarde bien Sprouty. On change l’accès au volume encrypté créé précédemment en passant de l’utilisation d’une passphrase à l’utilisation d’une clé. “

On vérifie que l’accès avec la clé fonctionne (sans passphrase) :

Sprouty vient d’en prendre plein la vue. Il ne s’attendait pas à posséder un scanner à code-barres si puissant.
Il va lui falloir procéder à plusieurs expérimentations avec des boîtes de maïs, des ouvre-boîtes et des boîtes d’asperges pour réellement comprendre ce qu’a fait son ami GEOM Vert sous ses yeux.
GEOM Vert, absorbé par l’écran du scanner avec lequel il s’amuse maintenant depuis plusieurs minutes, continue de taper sur l’interface, et propose à Sprouty de vérifier par lui-même ce qu’il vient de faire.

Pour aider Sprouty à assimiler ces dernières manipulations, GEOM Vert lui conseille de lire la page de manuel sur gshsec [7].

8. C’est l’heure de plex-school (gvinum)

Pour sa démonstration finale, GEOM Vert décide de réutiliser les boîtes d’asperges pour démontrer la facilité d’utilisation du jeu plex-school. Ce jeu consiste à disposer plusieurs boîtes de maïs dans une ” grappe ” logique, de capacité plus grande que chaque boîte de maïs, avec une ou plusieurs boîtes de maïs en spare. Si une boîte de maïs vient à être défectueuse, c’est une des boîtes en spare qui prend le relais, assurant la continuité de la grappe logique.

GEOM Vert prend le temps d’expliquer à Sprouty que pour l’instant toutes les commandes de vinum n’ont pas encore été implémentées dans gvinum (voir la section BUGS [8]) et qu’il ne serait pas judicieux de l’utiliser pour garder des informations importantes dans ses boîtes de maïs.

9. Il est l’heure de lire le journal (gjournal)

Afin de terminer tranquillement tout ce qu’il a montré à Sprouty, GEOM Vert termine sur une fonctionnalité disponible dans la toute fraîche version 6.2-STABLE de son scanner à code-barres. Il s’agit de la possibilité de tenir un journal des déplacements des boîtes de maïs sur les différentes étagères du garde-manger de Sprouty.
Sprouty demande alors à GEOM Vert s’il ne pourrait pas utiliser ce journal pour remplacer les étiquettes perdues de ses boîtes de maïs. GEOM Vert lui répond : ” Tu te rendras compte quand tu auras pratiqué un peu ton scanner de code-barres que cela ne sert à rien “. Sprouty reste alors des heures à essayer de refaire calmement tout ce que lui a montré GEOM Vert sur son scanner à code-barres dont il ignorait la plupart des possibilités.

GEOM Vert s’éloigne sans bruit. Il a envie de jouer avec d’autres fonctionnalités de son propre scanner à
code-barres.

Conclusion (gconclu)

À travers cette simple ” mise en jambes “, nous avons voulu vous présenter les différentes possibilités de GEOM. Mais il ne s’agit bien que d’une présentation ! Il est possible d’en faire un peu plus et pour aller plus loin avec GEOM en particulier (et avec FreeBSD en général), il existe une quantité d’excellentes documentations : les pages de manuel et le handbook [9].
N’hésitez surtout pas à en user et en abuser !

Références
[1, 2, 4, 5, 6, 7, 8] pages de manuel http://www.freebsd.org/cgi/man.cgi
[3] http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/geom.htm
[9] http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/

Author: stratus

Laisser un commentaire