首先,熟悉整個業務流程前先了解下glusterfs的幾個程序功能以及相互之間的關係!
gluster :cli的命令執行工具,負責將glusterfs的請求傳遞給glusterd進程來執行;大家安裝後glusterfs後,執行gluster就會進入到該命令執行工具了;
glusterd:管理daemon進程,同時負責接收gluster發送過來的請求並執行相應的操作,比如:調用glusterfsd來啓動brick服務;另外負責與其他主機上面的glusterd進程來同步信息;
gusterfsd:服務進程,由glusterd進程啓動,並且根據卷配置信息執行從glusterfs發送過來的請求,同時也負責glusterd的請求處理;
glusterfs:客戶端的進程,根據卷配置信息將fuse發過來的操作請求逐層傳遞到最底層的protocol/client的xlator上,該xlator通過rpc與glusterfs連接,將請求發送到glusterfsd服務器執行;
下面通過2個圖來說明上面幾個進程的具體關係;
1、進程:gluster、glusterd和glusterd之間的關係
圖1:
2、fuse、glusterfs和glusterfsd之間的關係(通過一個分佈式複雜卷的方式來說明,爲了突出重點,省略了部分xlator)
圖2:
然後,我們進一步熟悉下整個glusterfs的幾個主要的業務功能,來幫助我們後面更好的去理解整個業務邏輯(畢竟,業務邏輯也是爲了去實現對應的功能的);
1、host的管理,比如:增加和刪除主機的相關處理,來實現擴容和縮容;
2、brick的管理,比如:新增和刪除brick的相關處理,來實現擴容和縮容;
3、數據的平衡等提高磁盤空間利用率相關處理;
4、副本的自我修復等可靠性處理;
5、文件的讀寫等基本業務相關處理;
6、其他提升性能以及異常相關的處理;
其中,其中圖1主要是負責系統相關的一些處理流程;圖2主要是負責文件的讀寫處理流程;應該說glusterfs的主要業務邏輯應該都在這裏了(小夥伴們是不是覺得其實還挺簡單的?),下面來詳細分析下整個glusterfs的整個業務邏輯;
我們將業務邏輯從3個方面進行分析:
1、整個glusterfs的初始化過程;
2、整個glusterfs對於文件的讀寫操作流程,即圖2的說明(也是glusterfs的核心);
3、整個glusterfs的命令操作流程,即圖1的說明;