GFS2 : Le Filesystem Cluster de Red Hat
Contents
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 :
yum |
yum -y install gfs2-utils |
4 Configuration
Pour formater une partition GFS2 :
- -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 :
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 :
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 :
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 :
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 :
mount |
mount -t gfs2 -o quota=on /dev/my_vg/my_gfs /mnt |
Pour faire de la limitation de quota de type hard :
gfs2_quota |
gfs2_quota limit -u user -l size /mountpoint |
- size : taille en Megaoctets
Pour faire de la limitation de quota de type soft :
gfs2_quota |
gfs2_quota warn -u user -l size /mountpoint |
Si l'on souhaites lister les quotas d'un user :
gfs2_quota |
gfs2_quota get -u user |
Et pour lister les quotas d'un point de montage :
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 :
pvcreate /dev/sdb vgextend my_vg /dev/sdb lvextend -L +10G /dev/my_vg/my_gfs |
gfs2_grow |
gfs2_grow -v /mountpoint |
4.3 Réparer une partition
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 :
gfs2_tool |
gfs2_tool sb <dev> proto [lock_dlm,lock_nolock] |
Pour locker le nom de la table :
gfs2_tool |
gfs2_tool sb <dev> table cluster:my_gfs |
Pour lister les informations sur le superblock :
gfs2_tool |
gfs2_tool sb <dev> all |