[GFS] Installation d’un serveur de données avec GNBD sur une debian Lenny

Je vais vous présenter la procédure d’installation d’un cluster de données avec GNBD sur une debian Lenny.
Cette procédure d’installation doit être semblable sur d’autre distribution, adaptez ou posez vos questions !

Définition

Qu’est ce que GNBD ?

La documentation nous informe que

The global network block device (GNBD) driver is similar to other network block device drivers. Devices exported by GNBD servers can be used by multiple clients making it suitable for use by a group of GFS nodes.

GNBD est donc un « network block device drivers » c’est à dire une application qui nous permet de déployer sur le réseau des périphériques de type block (eg: Des partitions !).

Nous allons donc nous servir GNBD pour déployer nos données.

Qu’est ce que GFS ?

GFS est un projet racheté et publié sous license GPL par Red Hat. L’acronyme signifie Global File System. GFS est utilisé par GNBD pour partager des données de type block.

Installation du serveur

L’installation du serveur est assez simple pour peut de comprendre se que l’ont fait !

Tout d’abord nous allons installer GNBD. Sous debian se paquet se nome gnbd-server.

aptitude install gnbd-server

Voyons les fichiers installés

$ dpkg -L gnbd-server
/.
/usr
/usr/share
/usr/share/man
/usr/share/man/man8
/usr/share/man/man8/gnbd.8.gz
/usr/share/man/man8/gnbd_serv.8.gz
/usr/share/man/man8/gnbd_export.8.gz
/usr/share/doc
/usr/share/doc/gnbd-server
/usr/share/doc/gnbd-server/changelog.Debian.gz
/usr/share/doc/gnbd-server/copyright
/usr/share/doc/gnbd-server/README.Debian
/usr/share/doc/gnbd-server/README.source
/usr/sbin
/usr/sbin/gnbd_export
/usr/sbin/gnbd_serv
/usr/sbin/gnbd_clusterd
/usr/sbin/gnbd_get_uid
/etc
/etc/init.d
/etc/init.d/gnbd-server
/etc/default
/etc/default/gnbd-server
/etc/cluster
/etc/cluster/gnbdexports.conf

On remarque que 4 commandes on été installées :

  • gnbd_export : Son utilité est semblable à la commande export de NFS. Elle permet de publier des partages
  • gnbd_serv : Permet de lancer le serveur
  • gnbd_clusterd :  Daemon utilisé pour se connecter à un cluster. Son utilisation n’est pas traité ici si j’ai quelques minutes je ferrai un article sur le sujet !
  • gnbd_get_uid : Script qui retourne un uid non utilisé pour créer des exports. Ce script est utilisé par la commande gnbd_export de manière transparente mais peut être modifier si besoin est (???).

Revenons à l’export de nos moutons !

Nous allons tout d’abord lancer notre serveur. Pour cela deux choix :

Le style debian

Éditer le fichier /etc/default/gnbd-server et modifier le comme suit (explication des options plus bas)

GNBD_OPTIONS= »-n »

Lancer ensuite le serveur comme ceci

/etc/init.d/gnbd-server start

Attention. Cette méthode ne fonctionnera que quand vous aurez configuré des exports de façon permanente (voir suite de l’article). En attendant utilisé l’autre méthode !

Le style gnbd

gnbd_serv -n

L’option -n permet de lancer le serveur sans cluster.

Vous pouvez rajouter l’option -p si vous voulez spécifier le port d’écoute du serveur.

Le lancement du serveur devrait vous retourner quelque chose comme ceci.

gnbd_serv: startup succeeded

Ceci nous informe que nous n’avons exporter aucune informations.

Exporter des partitions

Nous allons voir comment exporter des partitions de façon temporaire (c’est à dire que le redémarage du serveur impliquera la perte de tout nos exports).

Nous l’avons vu plus haut, c’est la commande gnbd_export qui va nous être utile ici. Voici un exemple d’utilisation :

# gnbd_export -c -d /dev/sda3 -e MyExportData
gnbd_export: created GNBD MyExportData serving file /dev/sda3

Ceci nous a exporter une partition. Nous pouvons le vérifier :

# gnbd_export -l
Server[1] : MyExportData
————————–
file : /dev/sda3
sectors : 6291456
readonly : no
cached : yes
timeout : no

Si vous avez fait attention au options et au résultat de la commande gnbd_export -l (ou tout simplement en administrateur responsable vous avez lu le man de gnbd_export) vous avez peut être compris que

  • -d : permet de spécifier la partition à exporter
  • -c : permet d’activer le cache (et donc d’éviter un massacre de ressource)
  • -e : permet de spécifier le nom du partage

Rendre nos exports permanent

Maintenant que nous avons vu comment exporter des données temporairement nous allons nous attaquer à rendre ces exports permanent.

Sous debian, le script présent dans /etc/init.d/gnbd-server nous permet de modifier le fichier /etc/cluster/gnbdexports.conf pour rendre nos changements permanents (je ne sais pas si sous les autres distributions ceci est identique mais je suis sure que vous trouverez un équivalent.). Éditons donc notre fichier.

# <device> <exportname> <options>
/dev/sda3       MyExportData    -c

Le contenu du fichier est très simple : Device a exporter, Nom de l’export, options. Mis en relation avec l’explication ci dessus,  vous ne devriez pas être trop perdu !!

Testons que tout ceci fonctionne. Eteigner votre instance actuelle de gnbd (un killall gnbd_serv peut faire l’affaire) et relancer votre serveur GNBD via le script init.d

/etc/init.d/gnbd-server start

Le serveur démarre et nous informe que nos points de montage sont bel et bien montés.

Vérifions :

# gnbd_export -l
Server[1] : MyExportData
————————–
file : /dev/sda3
sectors : 6291456
readonly : no
cached : yes
timeout : no

Tout va bien, dans le meilleur des mondes, configurons nos clients ;).

Configuration des clients

Pour pouvoir monter nos partages, nos clients vont nécessiter un module noyau. Celui ci n’est pas inclus dans l’installation par défaut du noyau Linux de Debian. Vous pouvez donc soit recompiler votre noyau, soit installer le paquet qui contient le module !

Pour installer le module (à modifier suivant votre architecture bien entendu)

aptitude install redhat-cluster-modules-2.6.26-2-686

Charger ensuite le module

modprobe gnbd

Installer les outils de montages

aptitude install gnbd-client

Vous pouvez maintenant voir les partages disponibles sur d’autre serveur comme ceci

# gnbd_import -e 192.168.152.141 -n
MyExportData

Ici l’option -n spécifie toujours que nous n’utilisons pas de cluster et l’option -e permet de récupérer la liste de tout les partages du serveur spécifié en argument (ici 192.168.152.141).

Vous pouvez importez tout les partage en remplassant l’option -e par -i

# gnbd_import -i 192.168.152.141 -n
gnbd_import: created gnbd device MyExportData
gnbd_recvd: gnbd_recvd started

Ceci vous ajoutera des partitions dans /dev/gnbd que vous pourrez monter comme des partitions normales.

# mount /dev/gnbd/MyExportData /mnt/gnbd/
# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
procbususb on /proc/bus/usb type usbfs (rw)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/gnbd/MyExportData on /mnt/gnbd type ext3 (rw)

Voilà qui met fin à cet article que j’espère continuer très bientôt en le complétant pour la prise en compte de la clusterisation.

Si vous avez apprécié cet article, pensé à laissé un commentaire ou vous abonner au flux RSS feed.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *