LINUX:Glusterfs - Type Distribué-Répliqué

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

retour au menu de Glusterfs - Gestion des serveurs


But

Ce troisième type distribué-répliqué correspond au RAID10. Les fichiers sont distribués sur les divers espaces disques individuels des machines du cluster. C'est une combinaison des deux types précédents: Type Distribué et Type Répliqué.


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


Distribution-Réplication sur quatre espaces disques

Ce premier 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é "diskgfs5" sur les machines "sv1.home.dom", "sv2.home.dom", "sv3.home.dom" et "sv4.home.dom":

gluster volume create diskgfs5 replica 2 transport tcp sv1.home.dom:/disk1/glusterfs/brique5 sv2.home.dom:/disk1/glusterfs/brique5 \
                                                       sv3.home.dom:/disk1/glusterfs/brique5 sv4.home.dom:/disk1/glusterfs/brique5

Ici nous avons un message:


Replica 2 volumes are prone to split-brain. Use Arbiter or Replica 3 to avoid this. See: http://docs.gluster.org/en/latest/Administrator-Guide/Split-brain-and-ways-to-deal-with-it/.
Do you still want to continue?
 (y/n)

En effet pour une question de "split-brain" car nous sommes en réseau, il est conseillé d'avoir au moins trois "replicas". Nous confirmons.

Sur chacune de ces machines, un sous-répertoire "brique5" est créé automatiquement sous le répertoire "/disk1/glusterfs". Je conseille fortement de ne pas créer ce répertoire "brique5" 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. Les deux suivantes suivent le même schéma.

LINUX:Glusterfs6.pdf

On remarque tout de suite que comme le système RAID10, si un disque entre en erreur, on ne perd pas 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 diskgfs5


Processus

Cet aspect est analogue à celui rencontré précédemment lors du type Répliqué. Nous n'y reviendrons pas.


Connexions réseaux

Cet aspect est analogue à celui rencontré précédemment lors du type Répliqué. Nous n'y reviendrons pas.


Statut

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

gluster volume status diskgfs5

qui donne:


Status of volume: diskgfs5
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick sv1.home.dom:/disk1/glusterfs/brique5 55566     0          Y       4040
Brick sv2.home.dom:/disk1/glusterfs/brique5 52333     0          Y       12058
Brick sv3.home.dom:/disk1/glusterfs/brique5 60822     0          Y       13114
Brick sv4.home.dom:/disk1/glusterfs/brique5 50864     0          Y       11656
Self-heal Daemon on localhost               N/A       N/A        Y       4072
Self-heal Daemon on sv4.home.dom            N/A       N/A        Y       11688
Self-heal Daemon on sv2.home.dom            N/A       N/A        Y       12090
Self-heal Daemon on sv5.home.dom            N/A       N/A        Y       12454
Self-heal Daemon on sv3.home.dom            N/A       N/A        Y       13146
Self-heal Daemon on sv6.home.dom            N/A       N/A        Y       1637
  
Task Status of Volume diskgfs5

There are no active volume tasks



D'autres informations peuvent être obtenues:

gluster volume info diskgfs5

qui donne:


Volume Name: diskgfs5
Type: Distributed-Replicate
Volume ID: 3a5635bc-9d8d-4836-b1c9-0167a8964c6a
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: sv1.home.dom:/disk1/glusterfs/brique5
Brick2: sv2.home.dom:/disk1/glusterfs/brique5
Brick3: sv3.home.dom:/disk1/glusterfs/brique5
Brick4: sv4.home.dom:/disk1/glusterfs/brique5
Options Reconfigured:
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

On y remarque le type et le nombre de briques. Le type est combiné Distribué et Répliqué.


Distribution-Réplication sur six espaces disques et six machines

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


Mise en place

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

gluster volume create diskgfs6 replica 3 transport tcp sv1.home.dom:/disk1/glusterfs/brique6 sv2.home.dom:/disk1/glusterfs/brique6 \
                                                       sv3.home.dom:/disk1/glusterfs/brique6 sv4.home.dom:/disk1/glusterfs/brique6 \
                                                       sv5.home.dom:/disk1/glusterfs/brique6 sv6.home.dom:/disk1/glusterfs/brique6

Sur chacune de ces machines, un sous-répertoire "brique6" est créé automatiquement sous le répertoire "/disk1/glusterfs". Je conseille fortement de ne pas créer ce répertoire "brique6" 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. Les quatre suivantes suivent le même schéma.

LINUX:Glusterfs7.pdf

On remarque tout de suite que comme le système RAID10, si un disque entre en erreur, on ne perd pas 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 diskgfs6


Processus

Cet aspect est analogue à celui rencontré précédemment lors du type Répliqué. Nous n'y reviendrons pas.


Connexions réseaux

Cet aspect est analogue à celui rencontré précédemment lors du type Répliqué. Nous n'y reviendrons pas.


Statut

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

gluster volume status diskgfs6

qui donne:


Status of volume: diskgfs6
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick sv1.home.dom:/disk1/glusterfs/brique6 60642     0          Y       4718
Brick sv2.home.dom:/disk1/glusterfs/brique6 53643     0          Y       12444
Brick sv3.home.dom:/disk1/glusterfs/brique6 58098     0          Y       13497
Brick sv4.home.dom:/disk1/glusterfs/brique6 55073     0          Y       12039
Brick sv5.home.dom:/disk1/glusterfs/brique6 53043     0          Y       12746
Brick sv6.home.dom:/disk1/glusterfs/brique6 58289     0          Y       3864
Self-heal Daemon on localhost               N/A       N/A        Y       4750
Self-heal Daemon on sv4.home.dom            N/A       N/A        Y       12071
Self-heal Daemon on sv3.home.dom            N/A       N/A        Y       13529
Self-heal Daemon on sv2.home.dom            N/A       N/A        Y       12476
Self-heal Daemon on sv5.home.dom            N/A       N/A        Y       12778
Self-heal Daemon on sv6.home.dom            N/A       N/A        Y       3896
  
Task Status of Volume diskgfs6
------------------------------------------------------------------------------
There are no active volume tasks


D'autres informations peuvent être obtenues:

gluster volume info diskgfs6

qui donne:


Volume Name: diskgfs6
Type: Distributed-Replicate
Volume ID: 30cc2d3f-5436-447c-a90b-bcaa6441adeb
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 3 = 6
Transport-type: tcp
Bricks:
Brick1: sv1.home.dom:/disk1/glusterfs/brique6
Brick2: sv2.home.dom:/disk1/glusterfs/brique6
Brick3: sv3.home.dom:/disk1/glusterfs/brique6
Brick4: sv4.home.dom:/disk1/glusterfs/brique6
Brick5: sv5.home.dom:/disk1/glusterfs/brique6
Brick6: sv6.home.dom:/disk1/glusterfs/brique6
Options Reconfigured:
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

On y remarque le type et le nombre de briques. Le type est combiné Distribué et Répliqué.


Distribution-Réplication sur six espaces disques et trois machines

Ce troisième exemple va créer un volume utilisant six espaces disques individuels se trouvant sur trois machines. Il y aura donc deux espaces disques distribués ("/disk1" et "/disk2") par machine.


Mise en place

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

gluster volume create diskgfs7 replica 3 transport tcp sv1.home.dom:/disk1/glusterfs/brique7 sv2.home.dom:/disk1/glusterfs/brique7 \
                                                       sv3.home.dom:/disk1/glusterfs/brique7 sv1.home.dom:/disk2/glusterfs/brique7 \
                                                       sv2.home.dom:/disk2/glusterfs/brique7 sv3.home.dom:/disk2/glusterfs/brique7

Sur chacune de ces machines, un sous-répertoire "brique7" est créé automatiquement sous les répertoires "/disk1/glusterfs" et "/disk2/glusterfs". Je conseille fortement de ne pas créer ces répertoires "brique7" au préalable. Glusterfs va leur 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. Huit sont placés sur la première machine. Les deux suivantes suivent le même schéma.

LINUX:Glusterfs8.pdf

On remarque tout de suite que comme le système RAID10, si un disque entre en erreur, on ne perd pas 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 diskgfs7


Processus

Cet aspect est analogue à celui rencontré précédemment lors du type Répliqué. Nous n'y reviendrons pas.


Connexions réseaux

Cet aspect est analogue à celui rencontré précédemment lors du type Répliqué. Nous n'y reviendrons pas.


Statut

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

gluster volume status diskgfs7

qui donne:


Status of volume: diskgfs7
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick sv1.home.dom:/disk1/glusterfs/brique7 52250     0          Y       2173
Brick sv2.home.dom:/disk1/glusterfs/brique7 49523     0          Y       1391
Brick sv3.home.dom:/disk1/glusterfs/brique7 50384     0          Y       1426
Brick sv1.home.dom:/disk2/glusterfs/brique7 58403     0          Y       2204
Brick sv2.home.dom:/disk2/glusterfs/brique7 59069     0          Y       1422
Brick sv3.home.dom:/disk2/glusterfs/brique7 56671     0          Y       1457
Self-heal Daemon on localhost               N/A       N/A        Y       2236
Self-heal Daemon on sv4.home.dom            N/A       N/A        Y       1203
Self-heal Daemon on sv5.home.dom            N/A       N/A        Y       1208
Self-heal Daemon on sv2.home.dom            N/A       N/A        Y       1454
Self-heal Daemon on sv3.home.dom            N/A       N/A        Y       1489
Self-heal Daemon on sv6.home.dom            N/A       N/A        Y       3307
  
Task Status of Volume diskgfs7
------------------------------------------------------------------------------
There are no active volume tasks


D'autres informations peuvent être obtenues:

gluster volume info diskgfs7

qui donne:


Volume Name: diskgfs7
Type: Distributed-Replicate
Volume ID: f4b6c614-cced-4748-aeb3-b9859fa47892
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 3 = 6
Transport-type: tcp
Bricks:
Brick1: sv1.home.dom:/disk1/glusterfs/brique7
Brick2: sv2.home.dom:/disk1/glusterfs/brique7
Brick3: sv3.home.dom:/disk1/glusterfs/brique7
Brick4: sv1.home.dom:/disk2/glusterfs/brique7
Brick5: sv2.home.dom:/disk2/glusterfs/brique7
Brick6: sv3.home.dom:/disk2/glusterfs/brique7
Options Reconfigured:
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off


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

Pour étendre un volume, il existe deux approches; soit on ajoute une réplication soit on ajoute une distribution. Nous allons appliquer ces approches sur le volume "diskgfs5" que nous allons étendre vers deux machines: "sv5.home.dom" et "sv6.home.dom".

Attention: Pour passer de 2 x 2 = 4 à 3 x 2 = 6 ou à 2 x 3 = 6, il ajouter deux espaces disques individuels, un ne suffira pas.


Cas de la distribution

Exécutons la commande suivante:

gluster volume add-brick diskgfs5 sv5.home.dom:/disk1/glusterfs/brique5 sv6.home.dom:/disk1/glusterfs/brique5

Maintenant voyons le statut:

gluster volume status diskgfs5

qui donne:


Status of volume: diskgfs5
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick sv1.home.dom:/disk1/glusterfs/brique5 59422     0          Y       5192
Brick sv2.home.dom:/disk1/glusterfs/brique5 50960     0          Y       12836
Brick sv3.home.dom:/disk1/glusterfs/brique5 50928     0          Y       13891
Brick sv4.home.dom:/disk1/glusterfs/brique5 51908     0          Y       12432
Brick sv5.home.dom:/disk1/glusterfs/brique5 60109     0          Y       13189
Brick sv6.home.dom:/disk1/glusterfs/brique5 54134     0          Y       1526
Self-heal Daemon on localhost               N/A       N/A        Y       5224
Self-heal Daemon on sv4.home.dom            N/A       N/A        Y       12464
Self-heal Daemon on sv2.home.dom            N/A       N/A        Y       12868
Self-heal Daemon on sv3.home.dom            N/A       N/A        Y       13923
Self-heal Daemon on sv5.home.dom            N/A       N/A        Y       13135
Self-heal Daemon on sv6.home.dom            N/A       N/A        Y       1338
  
Task Status of Volume diskgfs5
------------------------------------------------------------------------------
There are no active volume tasks


Et:

gluster volume info diskgfs5

qui donne:


Volume Name: diskgfs5
Type: Distributed-Replicate
Volume ID: 3a5635bc-9d8d-4836-b1c9-0167a8964c6a
Status: Started
Snapshot Count: 0
Number of Bricks: 3 x 2 = 6
Transport-type: tcp
Bricks:
Brick1: sv1.home.dom:/disk1/glusterfs/brique5
Brick2: sv2.home.dom:/disk1/glusterfs/brique5
Brick3: sv3.home.dom:/disk1/glusterfs/brique5
Brick4: sv4.home.dom:/disk1/glusterfs/brique5
Brick5: sv5.home.dom:/disk1/glusterfs/brique5
Brick6: sv6.home.dom:/disk1/glusterfs/brique5
Options Reconfigured:
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

Comme on étend la partie distribution, il faut effectuer un re-balancement comme vu en fin d'article sur Type Distribué.


Cas de la réplication

Exécutons la commande suivante:

gluster volume add-brick diskgfs5 replica 3 sv5.home.dom:/disk1/glusterfs/brique5 sv6.home.dom:/disk1/glusterfs/brique5

Maintenant voyons le statut:

gluster volume status diskgfs5

qui donne:


Status of volume: diskgfs5
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick sv1.home.dom:/disk1/glusterfs/brique5 49757     0          Y       5573
Brick sv2.home.dom:/disk1/glusterfs/brique5 49757     0          Y       13104
Brick sv5.home.dom:/disk1/glusterfs/brique5 50550     0          Y       13465
Brick sv3.home.dom:/disk1/glusterfs/brique5 57863     0          Y       14159
Brick sv4.home.dom:/disk1/glusterfs/brique5 57675     0          Y       12699
Brick sv6.home.dom:/disk1/glusterfs/brique5 51907     0          Y       2765
Self-heal Daemon on localhost               N/A       N/A        Y       5672
Self-heal Daemon on sv4.home.dom            N/A       N/A        Y       12783
Self-heal Daemon on sv2.home.dom            N/A       N/A        Y       13188
Self-heal Daemon on sv3.home.dom            N/A       N/A        Y       14243
Self-heal Daemon on sv5.home.dom            N/A       N/A        Y       13497
Self-heal Daemon on sv6.home.dom            N/A       N/A        Y       2797
  
Task Status of Volume diskgfs5
------------------------------------------------------------------------------
There are no active volume tasks


Et:

gluster volume info diskgfs5

qui donne:


Volume Name: diskgfs5
Type: Distributed-Replicate
Volume ID: 8348ee69-2cd7-41fc-9bae-670f0499026d
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 3 = 6
Transport-type: tcp
Bricks:
Brick1: sv1.home.dom:/disk1/glusterfs/brique5
Brick2: sv2.home.dom:/disk1/glusterfs/brique5
Brick3: sv5.home.dom:/disk1/glusterfs/brique5
Brick4: sv3.home.dom:/disk1/glusterfs/brique5
Brick5: sv4.home.dom:/disk1/glusterfs/brique5
Brick6: sv6.home.dom:/disk1/glusterfs/brique5
Options Reconfigured:
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off




retour au menu de Glusterfs - Gestion des serveurs