Pesquisa de site

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.