Como realizar operações de autocura e reequilíbrio no sistema de arquivos Gluster - Parte 2
Em meu artigo anterior sobre ‘Introdução ao GlusterFS (sistema de arquivos) e instalação – Parte 1’ foi apenas uma breve visão geral do sistema de arquivos e suas vantagens, descrevendo alguns comandos básicos. Vale a pena mencionar os dois recursos importantes, Auto-cura e Reequilíbrio, neste artigo sem os quais a explicação sobre o GlusterFS será de utilidade. não adianta. Vamos nos familiarizar com os termos Autocura e Reequilíbrio.
O que queremos dizer com autocorreção em volumes replicados?
Este recurso está disponível para volumes replicados. Suponha que temos um volume replicado [contagem mínima de réplicas 2]. Suponha que, devido a algumas falhas, um ou mais tijolos entre os tijolos de réplica fiquem inativos por um tempo e o usuário exclua um arquivo do ponto de montagem que será afetado apenas no tijolo online.
Quando o tijolo offline fica online posteriormente, é necessário que esse arquivo seja removido deste tijolo também, ou seja, uma sincronização entre os tijolos de réplica chamada de cura deve ser feita. O mesmo acontece com a criação/modificação de arquivos em blocos offline. GlusterFS possui um daemon de autocura integrado para cuidar dessas situações sempre que os tijolos ficam online.
O que queremos dizer com Reequilíbrio?
Considere um volume distribuído com apenas um tijolo. Por exemplo, criamos 10 arquivos no volume através do ponto de montagem. Agora todos os arquivos residem no mesmo tijolo, pois só há tijolo no volume. Ao adicionar mais um tijolo ao volume, poderemos ter que reequilibrar o número total de arquivos entre os dois tijolos. Se um volume for expandido ou reduzido no GlusterFS, os dados precisarão ser reequilibrados entre os vários blocos incluídos no volume.
Executando autocura no GlusterFS
1. Crie um volume replicado usando o comando a seguir.
gluster volume create vol replica 2 192.168.1.16:/home/a 192.168.1.16:/home/b
Nota: A criação de um volume replicado com tijolos no mesmo servidor pode gerar um aviso pelo qual você deve continuar ignorando o mesmo.
2. Inicie e monte o volume.
gluster volume start vol
mount -t glusterfs 192.168.1.16:/vol /mnt/
3. Crie um arquivo a partir do ponto de montagem.
touch /mnt/foo
4. Verifique o mesmo em duas réplicas de tijolos.
ls /home/a/
foo
ls /home/b/
foo
5. Agora envie um dos tijolos off-line eliminando o daemon glusterfs correspondente usando o PID obtido das informações de status do volume.
gluster volume status vol
Saída de amostra
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: Veja a presença do daemon de autocura no servidor.
kill 3810
gluster volume status vol
Saída de amostra
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
Agora o segundo tijolo está offline.
6. Exclua o arquivo foo do ponto de montagem e verifique o conteúdo do tijolo.
rm -f /mnt/foo
ls /home/a
ls /home/b
foo
Você vê que foo ainda está lá no segundo tijolo.
7. Agora coloque o bloco online novamente.
gluster volume start vol force
gluster volume status vol
Saída de amostra
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
Agora o tijolo está online.
8. Verifique o conteúdo dos tijolos.
ls /home/a/
ls /home/b/
O arquivo foi removido do segundo bloco pelo daemon de autocura.
Nota: No caso de arquivos maiores, pode demorar um pouco para que a operação de autocura seja concluída com sucesso. Você pode verificar o status de recuperação usando o seguinte comando.
gluster volume heal vol info
Executando o reequilíbrio no GlusterFS
1. Crie um volume distribuído.
gluster create volume distribute 192.168.1.16:/home/c
2. Inicie e monte o volume.
gluster volume start distribute
mount -t glusterfs 192.168.1.16:/distribute /mnt/
3. Crie 10 arquivos.
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. Adicione outro bloco ao volume distribuir.
gluster volume add-brick distribute 192.168.1.16:/home/d
ls /home/d
5. Faça o reequilíbrio.
gluster volume rebalance distribute start
volume rebalance: distribute: success: Starting rebalance on volume distribute has been successful.
6. Verifique o conteúdo.
ls /home/c
file1 file2 file5 file6 file8
ls /home/d
file10 file3 file4 file7 file9
Os arquivos foram rebalanceados.
Nota: Você pode verificar o status de reequilíbrio emitindo o seguinte comando.
gluster volume rebalance distribute status
Saída de amostra
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:
Com isso pretendo concluir esta série sobre GlusterFS. Fique à vontade para comentar aqui com suas dúvidas em relação aos recursos Autocura e Reequilíbrio.