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