LINUX:Glusterfs - Type Distribué-Répliqué
→ 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.
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.
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.
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