GNU/Linux >> Znalost Linux >  >> Linux

Odstraňte problémy s GlusterFS

Předchozí sekce - Kroky sestavení GlusterFS

Tento článek popisuje dva problémy GlusterFS, se kterými se můžete setkat, a poskytuje kroky k jejich vyřešení:

  • Léčení replikovaných objemů
  • Oprava problému s rozděleným mozkem

Vyléčit replikované objemy

Když se jakákoli kostka v replikovaném svazku přepne do režimu offline, glusterd démoni na zbývajících uzlech sledují všechny soubory, které nejsou replikovány do offline cihly. Když bude offline blok opět dostupný, cluster zahájí proces uzdravování a replikuje aktualizované soubory do tohoto bloku. Spuštění tohoto procesu může na základě pozorování trvat až 10 minut.

Informace o tom, které soubory se mají replikovat, můžete zobrazit spuštěním následujícího příkazu:

 gluster volume heal volumeName info

Během procesu hojení můžete zobrazit informace o replikovaných souborech. Můžete také zobrazit informace o nezávisle změněných souborech v offline uzlu (split-brain) nebo souborech, u kterých se z jakéhokoli důvodu nezdařila replikace. Připojte následující možnosti k předchozímu příkazu:

gluster volume heal volumeName info healed

gluster volume heal volumeName info heal-failed

gluster volume heal volumeName info split-brain

Léčení můžete vynutit také ručně vyvoláním následujícího příkazu. Pokud použijete volitelný argument full , synchronizují se také všechny soubory, které nejsou označeny jako vyžadující léčení.

gluster volume heal volumeName

Volitelné:

gluster volume heal volumeName full

Oprava problému s rozděleným mozkem

Rozdělený mozek problém nastane, když jeden z replikovaných uzlů přejde do režimu offline (nebo je odpojen od clusteru) a soubor na jednom z jeho bloků je aktualizován. Poté, co se uzel znovu připojí ke clusteru GlusterFS, proces hojení selže kvůli konfliktu způsobenému dvěma různými verzemi souboru.

V následujícím příkladu je tento problém spuštěn ručně a poté opraven. Uzel s názvem gluster4 je odpojen a jeden ze souborů uložených na jeho kostce je upraven:

[root@gluster1 ~]# cat /mnt/gluster/gvol0/testfile.txt
This is version 1 of the file

[root@gluster4 ~]# ifdown eth2

##Wait just a little bit for the other nodes to see it disconnected

[root@gluster1 ~]# gluster peer status | grep -A2 glus4
Hostname: glus4
Uuid: 734aea4c-fc4f-4971-ba3d-37bd5d9c35b8
State: Peer in Cluster (Disconnected)

[root@gluster4 ~]# echo "This is new content" >> /var/lib/gvol0/brick4/testfile.txt

[root@gluster4 ~]# cat /var/lib/gvol0/brick4/testfile.txt
This is version 1 of the file
This is new content

[root@gluster1 ~]# cat /mnt/gluster/gvol0/testfile.txt
This is version 1 of the file

[root@gluster4 ~]# ifup eth2

##Wait just a little bit for the other nodes to see it reconnected

[root@gluster1 ~]# gluster peer status | grep -A2 glus4
Hostname: glus4
Uuid: 734aea4c-fc4f-4971-ba3d-37bd5d9c35b8
State: Peer in Cluster (Connected)

Nyní je proces hojení spuštěn:

gluster volume heal gvol0 full

gluster volume heal gvol0 info split-brain
Gathering list of split brain entries on volume gvol0 has been successful

Brick glus1:/var/lib/gvol0/brick1
Number of entries: 1
at                    path on brick
-----------------------------------
2014-05-16 19:55:19 /testfile.txt

Brick glus2:/var/lib/gvol0/brick2
Number of entries: 0

Brick glus3:/var/lib/gvol0/brick3
Number of entries: 0

Brick glus4:/var/lib/gvol0/brick4
Number of entries: 0

[root@gluster1 ~]# cat /mnt/gluster/gvol0/testfile.txt
cat: /mnt/gluster/gvol0/testfile.txt: Input/output error

[root@gluster4 ~]# cat /mnt/gluster/gvol0/testfile.txt
cat: /mnt/gluster/gvol0/testfile.txt: Input/output error

Všimněte si, že testfile.txt je uveden, což znamená, že GlusterFS neví, která verze souboru je správná. Je důležité tento problém vyřešit, protože může klienty zmást a způsobit jejich selhání.

Každá kostka GlusterFS má skrytou složku glusterfs , který obsahuje hexadecimální GlusterFS ID (GFID) každého souboru jako pevně zakódovaný odkaz. V našem příkladu je gluster4 replikou uzlu gluster1. Následující příklad ukazuje GFID souboru testfile.txt na gluster1 a gluster4:

[root@gluster1 ~]# getfattr -m . -d -e hex /var/lib/gvol0/brick1/testfile.txt
# file: var/lib/gvol0/brick1/testfile.txt
trusted.afr.gvol0-client-0=0x000000000000000000000000
trusted.afr.gvol0-client-1=0x000000000000000000000000
trusted.afr.gvol0-client-2=0x000000000000000000000000
trusted.afr.gvol0-client-3=0x000000000000000000000000
trusted.gfid=0xa702251de4c547e2ba2f96b896a43718

[root@gluster4 ~]# getfattr -m . -d -e hex /var/lib/gvol0/brick4/testfile.txt
# file: var/lib/gvol0/brick4/testfile.txt
trusted.afr.gvol0-client-0=0x000000000000000000000000
trusted.afr.gvol0-client-1=0x000000000000000000000000
trusted.afr.gvol0-client-2=0x000000000000000000000000
trusted.afr.gvol0-client-3=0x000000000000000000000000
trusted.gfid=0xa702251de4c547e2ba2f96b896a43718

Na jednom z uzlů musí být ze základního připojení odstraněn samotný soubor, stejně jako přidružený soubor GFID (v tomto případě a702251d-e4c5-47e2-ba2f-96b896a43718). Teprve pak může být znovu spuštěn proces hojení. Je důležité vědět, kterou kopii souboru chcete uložit. Pokud je to možné, uložte úplnou kopii souboru do umístění mimo GlusterFS, odstraňte soubor ze všech uzlů, spusťte proces léčení a zkopírujte soubor zpět přes bod připojení. Tato metoda je hrubší silou, ale funguje, pokud proces hojení stále nemůže správně opravit soubor prostřednictvím replikace.

[root@gluster4 ~]# rm -vf /var/lib/gvol0/brick1/.glusterfs/a7/02/a702251d-e4c5-47e2-ba2f-96b896a43718
[root@gluster4 ~]# rm -vf /var/lib/gvol0/brick1/testfile.txt
[root@gluster4 ~]# gluster volume heal gvol0 full

[root@gluster1 ~]# cat /var/lib/gvol0/brick1/testfile.txt
This is version 1 of the file

[root@gluster4 ~]# cat /var/lib/gvol0/brick4/testfile.txt
This is version 1 of the file

Další sekce - GlusterFS HA ​​a vyvažování zátěže


Linux
  1. Odstraňte problémy se sítí pomocí tcpdump

  2. Najít duplicitní soubory?

  3. Cat soubory s adresářem?

  1. Proč není Nullglob výchozí?

  2. Výměna řetězce pomocí slovníku?

  3. Zapsat do souboru .txt?

  1. Vyloučit adresář v hledání?

  2. Odstraňování problémů s SSH

  3. V shellu převeďte .txt na .csv