Glusterfs下讀寫請求的處理流程

2021-07-27 06:14:17 字數 955 閱讀 8295

glusterfs基於核心的fuse模組,fuse模組除了建立fuse檔案系統外,還提供了乙個字元裝置(/dev/fuse),通過這個字元裝置,glusterfs可以讀取請求,並傳送響應,並且可以傳送notify訊息。

下面是在glusterfs下的乙個讀/寫請求的完整流程:

藍實線表示乙個請求通過系統呼叫到vfs,然後經由fuse封裝為乙個req併發送到等待佇列,然後喚醒在該等待佇列上阻塞的glusterfs讀程序,讀取請求

綠虛線表示glusterfsd程序讀取請求後,處理請求的過程

紅虛線表示glusterfs處理完請求後,封裝響應訊息並將訊息傳送到/dev/fuse下,並喚醒相應的請求程序(請求程序在將請求傳送後,一直阻塞,直到該請求收到響應並處理完成)。

請求程序被喚醒後,將glusterfs封裝的響應資訊返回給使用者。

為方便說明問題,下圖是乙個讀請求走到fuse的完整流程:

下面是上面這些步驟的說明:

①read系統呼叫,陷入到核心

②vfs通過fd及當前程序維護的開啟的檔案表找到fd對應的file,然後呼叫該file被賦值的read函式進行讀操作

③因為該file是基於fuse檔案系統建立的,因此呼叫fuse的read函式do_sync_read

④-1.最終呼叫do_generic_file_read基於讀操作的偏移量及該檔案的快取樹查詢該對應的快取頁,該快取頁存在且是最新的,直接從該快取中讀資料給使用者

④-2.如果該快取頁不存在,則申請乙個頁作為快取。並呼叫readpage去讀資料。fuse的readpage會封裝乙個請求到字元裝置的等待佇列中。收到glusterfs的響應後會將響應寫到快取中並返回

對比Swift和GlusterFS的讀寫效能

1,測試目標 測試swift集群磁碟io讀 寫。2,測試工具 cloudfuse iozone s3curl 3,測試環境 機器型別 ip作業系統 記憶體伺服器1 10.10.68.71 rhel 6.3 x86 64 128gb 伺服器2 10.10.68.72 rhel 6.3 x86 64 1...

ubuntu系統下安裝glusterfs

準備在ubuntu環境中試驗glusterfs的一些功能,雖然安裝的步驟很簡單,不過因為本人剛開始接觸ubuntu系統還有glusterfs,所以在安裝過程中就走了很多的彎路,選擇需要的版本和系統 如3.5 ubuntu,以下都以該版本為例 然後開啟說明文件 如果伺服器可以連線外網,那麼執行以下命令...

centos7下的glusterfs的安裝與使用

環境說明 兩台虛擬主機,ip分別為192.168.1.222和192.168.1.233,分別裝上glusterfs。如 glusterfs 3.6.9.tar.gz 二 編譯安裝 安裝必要的依賴 yum install flex bison openssl openssl devel acl li...