Cómo realizar operaciones de autocuración y reequilibrio en el sistema de archivos Gluster - Parte 2
En mi artículo anterior sobre "Introducción a GlusterFS (Sistema de archivos) e instalación - Parte 1", fue solo una breve descripción general del sistema de archivos y sus ventajas, describiendo algunos comandos básicos. Vale la pena mencionar las dos características importantes, Self-Heal y Re-Balance, en este artículo sin las cuales la explicación sobre GlusterFS no será de utilidad. Familiaricémonos con los términos Autocuración y Reequilibrio.
Esta función está disponible para volúmenes replicados. Supongamos que tenemos un volumen replicado [recuento mínimo de réplicas 2]. Suponga que debido a algunas fallas, uno o más ladrillos entre los ladrillos de réplica caen por un tiempo y el usuario elimina un archivo del punto de montaje que se verá afectado solo en el ladrillo en línea.
Cuando el bloque fuera de línea se conecte en un momento posterior, es necesario eliminar ese archivo de este bloque, es decir, se debe realizar una sincronización entre los ladrillos de réplica denominada recuperación. Lo mismo ocurre con la creación/modificación de archivos en bloques sin conexión. GlusterFS tiene un demonio de autocuración incorporado para solucionar estas situaciones cada vez que los ladrillos se conectan.

Considere un volumen distribuido con solo un ladrillo. Por ejemplo, creamos 10 archivos en el volumen a través del punto de montaje. Ahora todos los archivos residen en el mismo bloque, ya que solo hay un bloque en el volumen. Al agregar un bloque más al volumen, es posible que tengamos que reequilibrar el número total de archivos entre los dos bloques. Si un volumen se expande o se reduce en GlusterFS, los datos deben reequilibrarse entre los distintos ladrillos incluidos en el volumen.

Realización de autocuración en GlusterFS
1. Cree un volumen replicado con el siguiente comando.
$ gluster volume create vol replica 2 192.168.1.16:/home/a 192.168.1.16:/home/b
Nota: La creación de un volumen replicado con ladrillos en el mismo servidor puede generar una advertencia por la que debe continuar ignorando la misma.
2. Inicie y monte el volumen.
$ gluster volume start vol $ mount -t glusterfs 192.168.1.16:/vol /mnt/
3. Cree un archivo desde el punto de montaje.
$ touch /mnt/foo
4. Verifique lo mismo en dos réplicas de ladrillos.
$ ls /home/a/ foo $ ls /home/b/ foo
5. Ahora envíe uno de los ladrillos fuera de línea matando el demonio glusterfs correspondiente utilizando el PID obtenido de la información de estado del volumen.
$ gluster volume status vol
Status of volume: vol Gluster process Port Online Pid ------------------------------------------------------------------------------ Brick 192.168.1.16:/home/a 49152 Y 3799 Brick 192.168.1.16:/home/b 49153 Y 3810 NFS Server on localhost 2049 Y 3824 Self-heal Daemon on localhost N/A Y 3829
Nota: Vea la presencia de un demonio de recuperación automática en el servidor.
$ kill 3810
$ gluster volume status vol
Status of volume: vol Gluster process Port Online Pid ------------------------------------------------------------------------------ Brick 192.168.1.16:/home/a 49152 Y 3799 Brick 192.168.1.16:/home/b N/A N N/A NFS Server on localhost 2049 Y 3824 Self-heal Daemon on localhost N/A Y 3829
Ahora el segundo ladrillo está desconectado.
6. Elimine el archivo foo del punto de montaje y verifique el contenido del ladrillo.
$ rm -f /mnt/foo $ ls /home/a $ ls /home/b foo
Verá que foo todavía está allí en el segundo ladrillo.
7. Ahora vuelva a poner el ladrillo en línea.
$ gluster volume start vol force $ gluster volume status vol
Status of volume: vol Gluster process Port Online Pid ------------------------------------------------------------------------------ Brick 192.168.1.16:/home/a 49152 Y 3799 Brick 192.168.1.16:/home/b 49153 Y 4110 NFS Server on localhost 2049 Y 4122 Self-heal Daemon on localhost N/A Y 4129
Ahora el ladrillo está en línea.
8. Verifique el contenido de los ladrillos.
$ ls /home/a/ $ ls /home/b/
El daemon de autocuración ha eliminado el archivo del segundo bloque.
Nota: En el caso de archivos más grandes, la operación de autocuración puede tardar un poco en realizarse correctamente. Puede verificar el estado de curación usando el siguiente comando.
$ gluster volume heal vol info
Realización de reequilibrio en GlusterFS
1. Cree un volumen distribuido.
$ gluster create volume distribute 192.168.1.16:/home/c
2. Inicie y monte el volumen.
$ gluster volume start distribute $ mount -t glusterfs 192.168.1.16:/distribute /mnt/
3. Cree 10 archivos.
$ touch /mnt/file{1..10} $ ls /mnt/ file1 file10 file2 file3 file4 file5 file6 file7 file8 file9 $ ls /home/c file1 file10 file2 file3 file4 file5 file6 file7 file8 file9
4. Agregue otro ladrillo al volumen distribuir .
$ gluster volume add-brick distribute 192.168.1.16:/home/d $ ls /home/d
5. Vuelva a equilibrar.
$ gluster volume rebalance distribute start volume rebalance: distribute: success: Starting rebalance on volume distribute has been successful.
6. Verifique el contenido.
$ ls /home/c file1 file2 file5 file6 file8 $ ls /home/d file10 file3 file4 file7 file9
Los archivos se han vuelto a equilibrar.
Nota: Puede verificar el estado de reequilibrio emitiendo el siguiente comando.
$ gluster volume rebalance distribute status
Node Rebalanced-files size scanned failures skipped status run time in secs --------- ----------- --------- -------- --------- ------- -------- ----------------- localhost 5 0Bytes 15 0 0 completed 1.00 volume rebalance: distribute: success:
Con esto planeo concluir esta serie sobre GlusterFS. No dude en comentar aquí sus dudas con respecto a las funciones Self-Heal y Re-Balance.