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.