Jak provádět operace samoléčení a obnovení rovnováhy v systému souborů Gluster – část 2
V mém předchozím článku „Úvod do GlusterFS (souborový systém) a instalace – část 1“ byl jen stručný přehled souborového systému a jeho výhod popisující některé základní příkazy. V tomto článku stojí za zmínku o dvou důležitých funkcích, Self-heal a Re-balance, bez nichž bude vysvětlení o GlusterFS k ničemu. Pojďme se seznámit s pojmy Self-heal a Re-balance.
Co rozumíme pod pojmem Self-heal na replikovaných svazcích?
Tato funkce je dostupná pro replikované svazky. Předpokládejme, že máme replikovaný svazek [minimální počet replik 2]. Předpokládejme, že kvůli některým selháním jedna nebo více cihel mezi replikami na chvíli spadne a uživatel smaže soubor z bodu připojení, který bude ovlivněn pouze online cihelnou.
Když se offline kostka připojí později, je nutné nechat tento soubor odstranit také z této kostky, tj. musí být provedena synchronizace mezi replikovými kostkami nazývaná jako léčení. Totéž platí pro vytváření/úpravu souborů na offline cihlách. GlusterFS má vestavěného démona self-heal, který se o tyto situace postará, kdykoli se kostky stanou online.
Co rozumíme pod pojmem Re-balance?
Zvažte distribuovaný objem pouze s jednou cihlou. Například vytvoříme 10 souborů na svazku prostřednictvím přípojného bodu. Nyní jsou všechny soubory umístěny na stejné cihle, protože ve svazku je pouze cihla. Po přidání jedné další cihly do svazku možná budeme muset znovu vyvážit celkový počet souborů mezi dvěma cihlami. Pokud je svazek rozšířen nebo zmenšen v GlusterFS, je třeba data znovu vyvážit mezi různými bloky obsaženými ve svazku.
Provádění Self-heal v GlusterFS
1. Vytvořte replikovaný svazek pomocí následujícího příkazu.
gluster volume create vol replica 2 192.168.1.16:/home/a 192.168.1.16:/home/b
Poznámka: Vytvoření replikovaného svazku s kostkami na stejném serveru může vyvolat varování, pro které budete muset totéž ignorovat.
2. Spusťte a připojte svazek.
gluster volume start vol
mount -t glusterfs 192.168.1.16:/vol /mnt/
3. Vytvořte soubor z bodu připojení.
touch /mnt/foo
4. Ověřte totéž na dvou replikách cihel.
ls /home/a/
foo
ls /home/b/
foo
5. Nyní odešlete jednu z kostek offline tím, že zabijete odpovídajícího démona glusterfs pomocí PID získaného z informací o stavu svazku.
gluster volume status vol
Ukázkový výstup
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
Poznámka: Podívejte se na přítomnost démona self-heal na serveru.
kill 3810
gluster volume status vol
Ukázkový výstup
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
Nyní je druhá cihla offline.
6. Smažte soubor foo z bodu připojení a zkontrolujte obsah kostky.
rm -f /mnt/foo
ls /home/a
ls /home/b
foo
Vidíte, že foo je stále tam ve druhé cihle.
7. Nyní přiveďte kostku zpět online.
gluster volume start vol force
gluster volume status vol
Ukázkový výstup
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
Nyní je cihla online.
8. Zkontrolujte obsah kostek.
ls /home/a/
ls /home/b/
Soubor byl odstraněn z druhé cihly samoléčivým démonem.
Poznámka: V případě větších souborů může chvíli trvat, než bude operace samoopravy úspěšně provedena. Stav léčení můžete zkontrolovat pomocí následujícího příkazu.
gluster volume heal vol info
Provádění Re-balance v GlusterFS
1. Vytvořte distribuovaný svazek.
gluster create volume distribute 192.168.1.16:/home/c
2. Spusťte a připojte svazek.
gluster volume start distribute
mount -t glusterfs 192.168.1.16:/distribute /mnt/
3. Vytvořte 10 souborů.
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. Přidejte další kostku do distribuce objemu.
gluster volume add-brick distribute 192.168.1.16:/home/d
ls /home/d
5. Znovu vyvažte.
gluster volume rebalance distribute start
volume rebalance: distribute: success: Starting rebalance on volume distribute has been successful.
6. Zkontrolujte obsah.
ls /home/c
file1 file2 file5 file6 file8
ls /home/d
file10 file3 file4 file7 file9
Soubory byly znovu vyváženy.
Poznámka: Stav opětovného vyrovnání můžete zkontrolovat zadáním následujícího příkazu.
gluster volume rebalance distribute status
Ukázkový výstup
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:
Tímto plánuji uzavřít tuto sérii na GlusterFS. Neváhejte se zde vyjádřit se svými pochybnostmi ohledně funkcí Self-heal a Re-balance.