Glusterfs

GlusterFS腦裂無路,是什麼意思?

  • January 16, 2017

我只是在檢查我的 glusterfs 卷的狀態,我有一個沒有路徑的裂腦條目:

# gluster volume heal private_uploads info
Brick server01:/var/lib/glusterfs/brick01/uploads/
<gfid:4c0edafb-0c28-427c-a162-e530280b3396> - Is in split-brain
<gfid:42d62418-1be9-4f96-96c4-268230316869> - Is in split-brain
Number of entries: 2

Brick server02:/var/lib/glusterfs/brick01/uploads/
<gfid:42d62418-1be9-4f96-96c4-268230316869> - Is in split-brain
<gfid:4c0edafb-0c28-427c-a162-e530280b3396> - Is in split-brain
Number of entries: 2

這是什麼意思?我如何解決它?

我正在執行 GlusterFS 3.5.9:

# gluster --version
glusterfs 3.5.9 built on Mar 28 2016 07:10:17
Repository revision: git://git.gluster.com/glusterfs.git

什麼是腦裂?

正如RedHat 提供的關於管理裂腦的官方文件中所提到的,裂腦是一種狀態,當數據或可用性不一致時,源於維護兩個範圍重疊的獨立數據集,或者是因為網路設計中的伺服器,或基於伺服器未相互通信和同步其數據的故障情況。它是適用於復製配置的術語。

請注意,它被稱為*“基於伺服器不相互通信和同步數據的故障條件”* - 由於任何可能性 - 但這並不意味著您的節點可能會失去連接。對等體可能還處於集群中並已連接。

腦裂類型:

我們有三種不同類型的腦裂,據我所知,你的腦裂是入門級的。解釋三種類型的腦裂:

  • 數據裂腦:裂腦下的文件內容在不同的副本對中是不同的,無法自動修復。
  • 元數據裂腦:,文件的元數據(例如,使用者定義的擴展屬性)不同,無法自動修復。
  • **入口裂腦:**當文件在每個副本對上具有不同的 gfid 時,就會發生這種情況。

什麼是 GFID?

**GlusterFS 內部文件標識符 (GFID)**是一個 uuid,對於整個集群中的每個文件都是唯一的。這類似於普通文件系統中的 inode 編號。文件的 GFID 儲存在其名為trusted.gfid. 要從 GFID 中找到路徑,我強烈建議您閱讀GlusterFS 提供的這篇官方文章。


如何解決入口腦裂?

有多種方法可以防止發生腦裂,但要解決它,必須刪除相應的 gfid-link 文件。gfid-link 文件存在於程序塊頂層目錄的 .glusterfs 目錄中。順便說一句,請注意,在刪除 gfid 連結之前,您必須確保沒有指向該磚塊上文件的硬連結。如果存在硬連結,您也必須刪除它們。然後,您可以通過執行以下命令來使用自愈過程。

同時,要查看卷上處於裂腦狀態的文件列表,您可以使用:

# gluster volume heal VOLNAME info split-brain

您還應該注意,對於複製的捲,當塊離線並重新線上時,需要自我修復來重新同步所有副本。

要檢查捲和文件的修復狀態,您可以使用:

# gluster volume heal VOLNAME info

由於您使用的是 3.5 版,因此您沒有自動修復功能。所以在做了前面提到的步驟之後,你需要觸發自愈。為此:

  • 僅在需要修復的文件上:

# gluster volume heal VOLNAME

  • 在所有文件上:

# gluster volume heal VOLNAME full

我希望這將幫助您解決問題。請閱讀官方文件以獲取更多資訊。乾杯。

引用自:https://serverfault.com/questions/823523