Wyszukiwanie w witrynie

Jak wykonać operacje samoleczenia i przywracania równowagi w systemie plików Gluster — część 2


W moim poprzednim artykule na temat „Wprowadzenie do GlusterFS (system plików) i instalacja – część 1” znajdowałem tylko krótki przegląd systemu plików i jego zalet, opisując kilka podstawowych poleceń. Warto wspomnieć o dwóch ważnych funkcjach, samoleczeniu i przywracaniu równowagi, w tym artykule, bez których wyjaśnienie GlusterFS będzie miało znaczenie nie używać. Zapoznajmy się z pojęciami Samoleczenie i Przywrócenie równowagi.

Co rozumiemy przez samonaprawę na zreplikowanych woluminach?

Ta funkcja jest dostępna dla zreplikowanych woluminów. Załóżmy, że mamy zreplikowany wolumin [minimalna liczba replik 2]. Załóżmy, że z powodu pewnych awarii jedna lub więcej cegieł wśród replik na jakiś czas przestaje działać, a użytkownik usunie plik z punktu podłączenia, co będzie miało wpływ tylko na cegłę online.

Kiedy klocek offline zostanie później udostępniony online, konieczne jest usunięcie tego pliku również z tego klocka, tj. należy przeprowadzić synchronizację między replikami klocków, zwaną leczeniem. To samo dotyczy tworzenia/modyfikacji plików na klockach offline. GlusterFS ma wbudowanego demona samonaprawy, który zajmuje się takimi sytuacjami, gdy tylko cegły staną się online.

Co rozumiemy przez przywrócenie równowagi?

Rozważ rozproszony wolumin składający się tylko z jednej cegły. Na przykład tworzymy 10 plików na woluminie poprzez punkt podłączenia. Teraz wszystkie pliki znajdują się w tej samej cegle, ponieważ w wolumenie znajduje się tylko cegła. Dodając jeszcze jedną cegłę do woluminu, być może będziemy musieli ponownie zrównoważyć całkowitą liczbę plików pomiędzy dwiema cegłami. Jeśli wolumen zostanie powiększony lub zmniejszony w GlusterFS, dane muszą zostać ponownie zbilansowane pomiędzy różnymi elementami zawartymi w wolumenie.

Wykonywanie samoleczenia w GlusterFS

1. Utwórz zreplikowany wolumin za pomocą następującego polecenia.

gluster volume create vol replica 2 192.168.1.16:/home/a 192.168.1.16:/home/b

Uwaga: utworzenie zreplikowanego woluminu z cegieł na tym samym serwerze może spowodować ostrzeżenie, w przypadku którego należy kontynuować, ignorując to samo.

2. Uruchom i zamontuj wolumen.

gluster volume start vol
mount -t glusterfs 192.168.1.16:/vol /mnt/

3. Utwórz plik z punktu podłączenia.

touch /mnt/foo

4. Sprawdź to samo na dwóch replikach klocków.

ls /home/a/
foo
ls /home/b/
foo

5. Teraz wyślij jedną z cegieł w tryb offline, zabijając odpowiedniego demona glusterfs za pomocą PID otrzymanego z informacji o stanie wolumenu.

gluster volume status vol
Przykładowe wyjście
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

Uwaga: sprawdź obecność demona samonaprawy na serwerze.

kill 3810
gluster volume status vol
Przykładowe wyjście
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

Teraz druga cegła jest offline.

6. Usuń plik foo z punktu montowania i sprawdź zawartość cegły.

rm -f /mnt/foo
ls /home/a
ls /home/b
foo

Widzisz, że foo nadal jest w drugiej cegle.

7. Teraz przywróć cegłę online.

gluster volume start vol force
gluster volume status vol
Przykładowe wyjście
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

Teraz cegła jest online.

8. Sprawdź zawartość cegieł.

ls /home/a/
ls /home/b/

Plik został usunięty z drugiego klocka przez demona samonaprawy.

Uwaga: w przypadku większych plików pomyślne wykonanie operacji samonaprawy może chwilę potrwać. Możesz sprawdzić stan leczenia za pomocą następującego polecenia.

gluster volume heal vol info

Wykonywanie ponownego równoważenia w GlusterFS

1. Utwórz wolumin rozproszony.

gluster create volume distribute 192.168.1.16:/home/c

2. Uruchom i zamontuj wolumen.

gluster volume start distribute
mount -t glusterfs 192.168.1.16:/distribute /mnt/

3. Utwórz 10 plików.

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. Dodaj kolejną cegiełkę do dystrybucji.

gluster volume add-brick distribute 192.168.1.16:/home/d
ls /home/d

5. Przywróć równowagę.

gluster volume rebalance distribute start

volume rebalance: distribute: success: Starting rebalance on volume distribute has been successful.

6. Sprawdź zawartość.

ls /home/c
file1  file2  file5  file6  file8 

ls /home/d
file10  file3  file4  file7  file9

Pliki zostały ponownie zbalansowane.

Uwaga: stan ponownego salda możesz sprawdzić wydając poniższe polecenie.

gluster volume rebalance distribute status
Przykładowe wyjście
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:

Na tym planuję zakończyć tę serię na GlusterFS. Zachęcamy do komentowania i wyrażania swoich wątpliwości dotyczących funkcji Samoleczenia i Przywrócenia równowagi.