LINUX:Glusterfs - Type Distribué

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche

retour au menu de Glusterfs - Gestion des serveurs


But

Ce premier type distribué correspond au RAID0. Les fichiers sont distribués sur les divers espaces disques individuels des machines du cluster. Cette répartition tend à être équitable entre les disques. Il n'y a pas de doublons de fichier.

Notons que les commandes peuvent se faire à partir de n'importe quel serveur du cluster.


Distribution sur deux espaces disques

Ce premier exemple va créer un volume utilisant deux espaces disques individuels se trouvant sur deux machines.


Mise en place

La commande suivante crée un volume nommé "diskgfs1" sur les machines "sv1.home.dom" et "sv2.home.dom":

gluster volume create diskgfs1 transport tcp sv1.home.dom:/disk1/glusterfs/brique1 sv2.home.dom:/disk1/glusterfs/brique1

Sur chacune de ces machines, un sous-répertoire "brique1" est créé automatiquement sous le répertoire "/disk1/glusterfs". Je conseille fortement de ne pas créer ce répertoire "brique1" au préalable. Glusterfs va lui attribuer des droits spéciaux à ne pas modifier. Et en cas de réutilisation, vous aurez des problèmes. Pour une question de clarté, nous utilisons la même arborescence de répertoires.

Le schéma ci-dessous illustre la répartition de 8 fichiers. Quatre sont placés sur la première machine et quatre autres sur la seconde.

LINUX:Glusterfs2.pdf

On remarque tout de suite que comme le système RAID0, si un disque entre en erreur, on perd ces fichiers.


Maintenant que ce volume est créé, il faut le démarrer pour le rendre accessible grâce à la commande suivante:

gluster volume start diskgfs1


Processus

En listant la liste des processus, on remarque qu'un nouveau est lancé.

ps axf | grep glusterfs

qui donne sur la machine "sv1.home.dom":


  2444 ?        SLsl   0:00 /usr/sbin/glusterfsd -s sv1.home.dom --volfile-id diskgfs1.sv1.home.dom.disk1-glusterfs-brique1 -p /var/run/gluster/vols/diskgfs1/sv1.home.dom-disk1-glusterfs-brique1.pid -S /var/run/gluster/32cd1abb17e836b1.socket --brick-name /disk1/glusterfs/brique1 -l /var/log/glusterfs/bricks/disk1-glusterfs-brique1.log --xlator-option *-posix.glusterd-uuid=1ea22555-2c1b-40a9-8183-020b621c6d06 --process-name brick --brick-port 55255 --xlator-option diskgfs1-server.listen-port=55255

Idem sur les autre machines du cluster concernées.


Connexions réseaux

Au niveau réseau, un nouveau port est à l'écoute lancé par ce processus "glusterfsd" et une interconnexion est faite entre ce processus et le service "glusterd.service":

netstat -natp | grep gluster

qui donne par différence sur la machine "sv1.home.dom":


tcp        0      0 0.0.0.0:55255           0.0.0.0:*               LISTEN      2444/glusterfsd
tcp        0      0 192.168.1.71:49146      192.168.1.71:24007      ESTABLISHED 2444/glusterfsd
tcp        0      0 192.168.1.71:24007      192.168.1.71:49146      ESTABLISHED 1215/glusterd

Ceci se répète sur les autres machines du cluster concernées.

Il faudra en tenir compte dans le Firewall. Mais ces nouveaux ports TCP sont très aléatoires.


Statut

Les informations ci-dessus peuvent être obtenues grâce à la commande suivante pour le volume "diskgfs1":

gluster volume status diskgfs1

qui donne:


Status of volume: diskgfs1
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick sv1.home.dom:/disk1/glusterfs/brique1 55255     0          Y       2444
Brick sv2.home.dom:/disk1/glusterfs/brique1 57862     0          Y       1097
  
Task Status of Volume diskgfs1
------------------------------------------------------------------------------
There are no active volume tasks


D'autres informations peuvent être obtenues:

gluster volume info diskgfs1

qui donne:


Volume Name: diskgfs1
Type: Distribute
Volume ID: 9b49a51d-b77b-435f-a8b5-e951b898b9dd
Status: Started
Snapshot Count: 0
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: sv1.home.dom:/disk1/glusterfs/brique1
Brick2: sv2.home.dom:/disk1/glusterfs/brique1
Options Reconfigured:
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on

On y remarque le type et le nombre de briques.


Distribution sur quatre espaces disques

Ce second exemple va créer un volume utilisant quatre espaces disques individuels se trouvant sur quatre machines.


Mise en place

La commande suivante crée un volume nommé "diskgfs2" sur les machines "sv3.home.dom", "sv4.home.dom", "sv5.home.dom" et "sv6.home.dom":

gluster volume create diskgfs2 transport tcp sv3.home.dom:/disk1/glusterfs/brique2 sv4.home.dom:/disk1/glusterfs/brique2 \
                                             sv5.home.dom:/disk1/glusterfs/brique2 sv6.home.dom:/disk1/glusterfs/brique2  

Sur chacune de ces machines, un sous-répertoire "brique2" est créé automatiquement sous le répertoire "/disk1/glusterfs".

Le schéma ci-dessous illustre la répartition de 8 fichiers. Deux sont placés sur la première machine et deux autres sur la seconde et ainsi de suite.

LINUX:Glusterfs3.pdf

On remarque tout de suite que comme le système RAID0, si un disque entre en erreur, on perd ces fichiers.


Maintenant que ce volume est créé, il faut le démarrer pour le rendre accessible grâce à la commande suivante:

gluster volume start diskgfs2


Processus

En listant la liste des processus, on remarque qu'un nouveau est lancé.

ps axf | grep glusterfs

qui donne sur la machine "sv3.home.dom":


  1289 ?        SLsl   0:00 /usr/sbin/glusterfsd -s sv3.home.dom --volfile-id diskgfs2.sv3.home.dom.disk1-glusterfs-brique2 -p /var/run/gluster/vols/diskgfs2/sv3.home.dom-disk1-glusterfs-brique2.pid -S /var/run/gluster/8d4d193eaf02680c.socket --brick-name /disk1/glusterfs/brique2 -l /var/log/glusterfs/bricks/disk1-glusterfs-brique2.log --xlator-option *-posix.glusterd-uuid=27bd8184-14c8-4176-987d-db0a03fc6993 --process-name brick --brick-port 52394 --xlator-option diskgfs2-server.listen-port=52394

Idem sur les autre machines du cluster concernées.


Connexions réseaux

Au niveau réseau, un nouveau port est à l'écoute lancé par ce processus "glusterfsd" et une interconnexion est faite entre ce processus et le service "glusterd.service":

netstat -natp | grep gluster

qui donne par différence sur la machine "sv3.home.dom":


tcp        0      0 0.0.0.0:52394           0.0.0.0:*               LISTEN      1289/glusterfsd
tcp        0      0 192.168.1.73:49146      192.168.1.73:24007      ESTABLISHED 1289/glusterfsd
tcp        0      0 192.168.1.73:24007      192.168.1.73:49146      ESTABLISHED 801/glusterd

Ceci se répète sur les autres machines du cluster concernées.

Il faudra en tenir compte dans le Firewall. Mais ces nouveaux ports TCP sont très aléatoires.


Statut

Les informations ci-dessus peuvent être obtenues grâce à la commande suivante pour le volume "diskgfs2":

gluster volume status diskgfs2

qui donne:


Status of volume: diskgfs2
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick sv3.home.dom:/disk1/glusterfs/brique2 52394     0          Y       1289
Brick sv4.home.dom:/disk1/glusterfs/brique2 51012     0          Y       1193
Brick sv5.home.dom:/disk1/glusterfs/brique2 49566     0          Y       1270
Brick sv6.home.dom:/disk1/glusterfs/brique2 54429     0          Y       3688
  
Task Status of Volume diskgfs2
------------------------------------------------------------------------------
There are no active volume tasks


D'autres informations peuvent être obtenues:

gluster volume info diskgfs2

qui donne:


Volume Name: diskgfs2
Type: Distribute
Volume ID: 57329756-dff9-4220-b4fb-2b0ff3b35f18
Status: Started
Snapshot Count: 0
Number of Bricks: 4
Transport-type: tcp
Bricks:
Brick1: sv3.home.dom:/disk1/glusterfs/brique2
Brick2: sv4.home.dom:/disk1/glusterfs/brique2
Brick3: sv5.home.dom:/disk1/glusterfs/brique2
Brick4: sv6.home.dom:/disk1/glusterfs/brique2
Options Reconfigured:
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on

On y remarque le type et le nombre de briques.


Modifications

Ces configurations sont dynamiquement modifiables grâce à un ensemble d'autres commandes. Il est facilement possible d'agrandir un volume; on agrandit ainsi l'espace disque global. Dans le cas d'un rétrécissement ou d'une réparation, il faut prendre des précautions pour ne pas perdre des données. Nous n'allons pas aborder ce dernier point.


Extension

Supposons que l'on désire agrandir le volume "diskgfs1" en l'étendant sur les machines "sv3.home.dom" et "sv4.home.dom", nous exécutons la commande suivante:

gluster volume add-brick diskgfs1 sv3.home.dom:/disk1/glusterfs/brique1 sv4.home.dom:/disk1/glusterfs/brique1

Maintenant voyons le statut:

gluster volume status diskgfs1

qui donne:


Status of volume: diskgfs1
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick sv1.home.dom:/disk1/glusterfs/brique1 55255     0          Y       2444
Brick sv2.home.dom:/disk1/glusterfs/brique1 57862     0          Y       1097
Brick sv3.home.dom:/disk1/glusterfs/brique1 53427     0          Y       1720
Brick sv4.home.dom:/disk1/glusterfs/brique1 53433     0          Y       1598
  
Task Status of Volume diskgfs1
------------------------------------------------------------------------------
There are no active volume tasks


Et:

gluster volume info diskgfs1

qui donne:


Volume Name: diskgfs1
Type: Distribute
Volume ID: 9b49a51d-b77b-435f-a8b5-e951b898b9dd
Status: Started
Snapshot Count: 0
Number of Bricks: 4
Transport-type: tcp
Bricks:
Brick1: sv1.home.dom:/disk1/glusterfs/brique1
Brick2: sv2.home.dom:/disk1/glusterfs/brique1
Brick3: sv3.home.dom:/disk1/glusterfs/brique1
Brick4: sv4.home.dom:/disk1/glusterfs/brique1
Options Reconfigured:
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on


Comme nous avons ajouté deux espaces disques, ces derniers sont vides et il faut procéder à une revalidation des informations et des statistiques ("fix-layout") et à une redistribution équitable des fichiers.

On procède en deux étapes pour ces deux aspects:

gluster volume rebalance diskgfs1 fix-layout start

et ensuite:

gluster volume rebalance diskgfs1 start

Cette opération ne peut se faire que sur les volumes distribués.

La commande:

gluster volume rebalance diskgfs1 status

donne quelques informations sur ces opérations.





retour au menu de Glusterfs - Gestion des serveurs