GFS2 : Le Filesystem Cluster de Red Hat

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

1 Introduction

Global File System (GFS) (Système de fichiers global) est un système de fichiers partagé conçu pour une grappe d'ordinateurs Linux ou IRIX. GFS et GFS2 sont différents des systèmes de fichiers distribués comme AFS, Coda, ou InterMezzo parce qu'ils permettent à tous les nœuds un accès direct concurrent au même périphérique de stockage de type bloc. De plus, GFS et GFS2 peuvent également être utilisés comme un système de fichiers local.

GFS ne possède pas de mode déconnecté, il n'y a pas de client ou de serveur. Tous les nœuds d'une grappe GFS sont égaux. L'utilisation de GFS dans une grappe d'ordinateurs nécessite un matériel qui permet l'accès aux données partagées, et un gestionnaire de verrous (lock manager) pour contrôler l'accès aux données. Le gestionnaire de verrou est un module séparé, par conséquent GFS et GFS2 peuvent utiliser un gestionnaire de verrous distribués (Distributed Lock Manager, DLM) pour les configurations en grappe et le gestionnaire de verrous "nolock" pour les systèmes de fichiers locaux. Les versions plus anciennes de GFS supportent également GULM, un gestionnaire de verrous fondé sur un serveur et qui implémente la redondance par basculement.

GFS2 a tendance à avoir des dégradations de performances lorsqu'il y a trop de fichiers dans un dossier. Par contre, pas de soucis avec des gros fichiers ou pleins de dossiers avec quelques fichiers dedans.

GFS et GFS2 sont des logiciels libres, distribués sous licence GPL.

Cette documentation a été réalisée sous Red Hat Enterprise Linux 6.2.

2 Prérequis

  • Il faut savoir utiliser LVM.
  • Il faut obligatoirement du LVM Cluster pour pouvoir utiliser GFS2 (et donc la partie cluster également).
  • Si vous souhaitez utiliser les quotas, il est préférable d'avoir une bonne idée de comment fonctionnent ceux ci sur des filsystems standard en suivant cette documentation.

3 Installation

Pour installer gfs2 :

Command yum
yum -y install gfs2-utils

4 Configuration

Pour formater une partition GFS2 :

Command mkfs.gfs2
> mkfs.gfs2 -p lock_dlm -t cluter_name:gfs_name -j 3 /dev/my_vg/my_gfs
This will destroy any data on /dev/my_vg/my_gfs.
 
Are you sure you want to proceed? [y/n] y
 
Device:                    /dev/my_vg/my_gfs
Blocksize:                 4096
Device Size                0.50 GB (131072 blocks)
Filesystem Size:           0.50 GB (131070 blocks)
Journals:                  1
Resource Groups:           2
Locking Protocol:          "lock_dlm"
Lock Table:                "cluter:gfs_web"
UUID:                      27DBECB7-E200-E8D9-D484-179AB59B5595

  • -p lock_dlm : permet de locker la partition lors du formatage de la partition
  • -t cluter_name:gfs_name : le nom du cluster en question et un nom pour le gfs
  • -j 3 : indique le nombre de journaux à créer (1 par noeud, si il n'y en a pas assez, ça ne pourra pas être monté sur plus de noeuds)

Puis pour monter une partition GFS2 :

Command mount
mount -t gfs2 /dev/my_vg/my_gfs /mnt

En cas de force marjeur, vous devez y accéder pour récupérer des données :

Command mount
mount -t gfs2 -o lockproto=lock_nolock /dev/my_vg/my_gfs /mnt

Si la partition doit être montée sur un autre cluster :

Command mount
mount -t gfs2 -o locktable=cluster_name:gfs_name /dev/my_vg/my_gfs /mnt

Lorsque vous ajouter un noeud qui doit accèder à une partition gfs2, il faut ajoute un journal, sous peine de se faire refuser le montage :

Command gfs2_jadd
gfs2_jadd -j 1 /mnt

J'ai utilisé le point de montage ici, mais vous pouvez très bien utiliser le device dans /dev.

4.1 Quotas

On peut se servir des quotas, mais ils n'ont rien à voir avec les quotas standard :

Command mount
mount -t gfs2 -o quota=on /dev/my_vg/my_gfs /mnt

Pour faire de la limitation de quota de type hard :

Command gfs2_quota
gfs2_quota limit -u user -l size /mountpoint

  • size : taille en Megaoctets

Pour faire de la limitation de quota de type soft :

Command gfs2_quota
gfs2_quota warn -u user -l size /mountpoint

Si l'on souhaites lister les quotas d'un user :

Command gfs2_quota
gfs2_quota get -u user

Et pour lister les quotas d'un point de montage :

Command gfs2_quota
gfs2_quota list -f /mountpoint

4.2 Agrandir une partition

Pour faire un agrandissement, il va falloir créer un nouveau pv, étendre le vg et étendre le lv :

Command
pvcreate /dev/sdb
vgextend my_vg /dev/sdb
lvextend -L +10G /dev/my_vg/my_gfs

Command gfs2_grow
gfs2_grow -v /mountpoint

4.3 Réparer une partition

Command gfs2_fsck
gfs2_fsck /dev/my_vg/my_gfs

4.4 Modifier le superblock

Il est parfois nécessaire de changer le superblock, comme par exemple si vous avez une option "lock_nolock" qui a été créer au mkfs de votre partition et que vous souhaitez maintenant en changer.

Vous devez avoir démonter au préalable votre partition avant d'avancer plus loin. Pour changer le lock manager :

Command gfs2_tool
gfs2_tool sb <dev> proto [lock_dlm,lock_nolock]

Pour locker le nom de la table :

Command gfs2_tool
gfs2_tool sb <dev> table cluster:my_gfs

Pour lister les informations sur le superblock :

Command gfs2_tool
gfs2_tool sb <dev> all