本發明涉及軟件工程,具體涉及基于分布式文件系統的高可用寫回緩存方法。
背景技術:
1、基于分布式文件系統的元數據緩存是一種分布式文件系統中用于提升客戶端訪問數據速度的技術,該技術在客戶端本地維護一個頻繁訪問的元數據副本,提供無需網絡io的讀取方法,并設計為寫請求的入口和緩沖區,即寫請求在緩存中處理,寫請求的結果也通過緩存與后端同步。在元數據緩存中,文件系統命名空間中的元數據以區別于文件系統目錄樹的方式組織、管理,通常是以哈希表的形式來構建緩存。在分布式文件系統的場景下,元數據緩存中僅管理文件系統目錄樹中的一部分。
2、元數據緩存的一致性策略分為兩種,一種是直寫法,它的基本原則是當數據被寫入緩存時,寫入的數據必須同時被寫入后端持久化存儲(如元數據服務器或磁盤)后,寫操作才算完成,也就是說數據同時寫入緩存和后端存儲,寫操作需等待后端完成;另一種是回寫法,區別于直寫法,回寫法允許數據基于某種確定的規則停留在緩存當中,在規則允許的范圍內,數據可以在本地內存中多次被讀寫而不需要與后端進行交互,也就是說數據只寫入緩存即返回,標記為“臟”,后續異步寫回后端。
3、然而,寫回緩存策略在提升性能的同時,也引入了數據可靠性和一致性的嚴峻挑戰。最核心的問題在于,在異步寫回完成之前,最新的元數據僅存在于客戶端的內存中。一旦該客戶端節點發生宕機、網絡分區等故障,其內存中所有未持久化的“臟”元數據將會丟失,導致元數據服務器上的持久化狀態與客戶端最新狀態不一致,可能引發文件系統損壞等嚴重問題。
技術實現思路
1、為了解決上述問題,本發明提出了基于分布式文件系統的高可用寫回緩存方法,通過結合租約機制、基于rdma的冪等操作日志持久化與預分配持久內存塊技術,實現了分布式文件系統元數據寫回緩存的高吞吐、低延遲、強一致性和故障可恢復的高可用性。
2、一方面,基于分布式文件系統的高可用寫回緩存方法,包括:
3、s1,服務端基于租約機制為每個元數據資源給客戶端分配操作權限,所述操作權限包括共享讀取權限和獨占寫入權限;其中,服務端通過向客戶端授予共享讀取權限允許多個客戶端在租約有效期內緩存元數據資源的副本并保證讀取一致性,并通過獨占寫入權限確保任一時刻僅有一個客戶端能夠修改該元數據資源;
4、s2,基于分配的獨占寫入權限,客戶端在本地執行元數據修改操作,并生成具有全局唯一序列號的冪等操作日志;客戶端通過單邊rdma方式將冪等操作日志持久化寫入至遠端日志服務器;當發生客戶端故障時,服務端通過重放遠端日志服務器中的冪等操作日志,跳過已經基于數據回寫機制寫入后端存儲的日志,重建故障客戶端的最終元數據狀態;
5、s3,基于最終元數據狀態,服務端將持久內存劃分為多個固定大小的預分配塊;當客戶端獲取元數據的獨占寫入權限時,服務端為其預分配一個持久內存塊;客戶端后續的日志寫入操作直接在預分配的持久內存塊中進行,實現寫入和故障恢復;當預分配塊寫滿或客戶端租約釋放時,服務端將該預分配塊同步至穩定存儲后回收。
6、進一步的,s1中,所述租約機制具體包括:
7、在租約有效期內,當前客戶端對該資源持有對應的權限,對應的權限包括共享讀取權限或者獨占寫入權限;
8、在租約有效期即將到期時,若無其他客戶端競爭同一元數據資源,當前持有租約的客戶端可向服務端申請續約以延長操作權限的有效期;
9、若租約已經失效,則客戶端需要重新申請租約。
10、進一步的,s1中,還包括:服務端為每個租約維護定時器,定時器周期性掃描租約狀態表,對過期的租約進行回收,并觸發該租約對應持久內存塊中數據的回寫操作和元數據資源的副本的失效通知。
11、進一步的,s2中,所述全局唯一序列號包括客戶端分配得到的內存區塊號和該客戶端內部維護的單調遞增計數器;操作日志包括日志頭部和日志主體,頭部包括全局唯一序列號、操作類型標識符和所屬元數據資源標識符,主體包含執行該元數據操作所需的全部參數,用于確保單條日志即可獨立完成重放。
12、進一步的,s2中,通過單邊rdma方式將冪等操作日志持久化寫入至遠端日志服務器,具體包括:
13、客戶端在發起rdma寫入前,首先向遠端日志服務器發送原子操作請求,申請并獲取一個全局遞增的日志存儲地址偏移量;客戶端網卡隨后不經過服務器cpu,直接基于日志存儲地址偏移量將日志數據寫入對應地址,完成一次完整的內存至內存的遠程直接寫入。
14、進一步的,s2中,服務端通過重放遠端日志服務器中的冪等操作日志,具體包括:
15、服務端維護全局日志處理狀態的最新索引,該索引用于記錄已成功重放的日志序列號;當觸發針對某一故障客戶端的恢復流程時,服務端從上次的最新索引開始,按日志序列號遍歷全部日志,查詢全部日志中的狀態位,僅重放狀態位未被標記為已重放的日志條目,以確保冪等性。
16、進一步的,還包括日志空間的回收機制:
17、當服務端確認某條日志及其所代表的元數據修改已成功同步至穩定存儲后,可將該日志條目所占用的持久內存空間標記為可回收,并由后臺進程異步清理,實現存儲資源的循環利用;
18、日志設計為循環日志,當數據寫入日志尾部時,下一個可分配的區塊從日志頭部開始分配。
19、本發明采用如上技術方案,并具有有益效果:
20、(1)本發明通過單邊rdma技術將客戶端生成的冪等操作日志直接寫入遠端日志服務器的預分配持久內存塊中,實現了內存到內存的高速、低開銷數據傳輸,此過程無需服務端cpu介入,顯著減少了網絡通信和系統調用的開銷,從而大幅提升了元數據寫入的吞吐量和響應速度;
21、(2)本發明通過引入基于全局唯一序列號的冪等操作日志和重放機制,當客戶端發生故障時,服務端能夠從遠端日志服務器可靠地重建其最終的元數據狀態,有效避免了因節點失效導致的數據丟失,結合租約機制對讀寫權限的精確控制,確保了在并發環境下的數據一致性;
22、(3)本發明采用為客戶端預分配固定大小持久內存塊的方式,并設計了循環日志結構和異步回收機制。這不僅簡化了內存管理,保證了日志寫入的穩定性和非易失性,還能在數據成功同步至后端存儲后,及時回收已使用空間,實現了日志存儲資源的高效循環利用。
1.一種基于分布式文件系統的高可用寫回緩存方法,其特征在于,包括以下步驟:
2.根據權利要求1所述的基于分布式文件系統的高可用寫回緩存方法,其特征在于,s1中,所述租約機制具體包括:
3.根據權利要求1所述的基于分布式文件系統的高可用寫回緩存方法,其特征在于,s1中,還包括:服務端為每個租約維護定時器,定時器周期性掃描租約狀態表,對過期的租約進行回收,并觸發該租約對應持久內存塊中數據的回寫操作和元數據資源的副本的失效通知。
4.根據權利要求1所述的基于分布式文件系統的高可用寫回緩存方法,其特征在于,s2中,所述全局唯一序列號包括客戶端分配得到的內存區塊號和該客戶端內部維護的單調遞增計數器;操作日志包括日志頭部和日志主體,頭部包括全局唯一序列號、操作類型標識符和所屬元數據資源標識符,主體包含執行該元數據操作所需的全部參數,用于確保單條日志即可獨立完成重放。
5.根據權利要求4所述的基于分布式文件系統的高可用寫回緩存方法,其特征在于,s2中,通過單邊rdma方式將冪等操作日志持久化寫入至遠端日志服務器,具體包括:
6.根據權利要求1所述的基于分布式文件系統的高可用寫回緩存方法,其特征在于,s2中,服務端通過重放遠端日志服務器中的冪等操作日志,具體包括:
7.根據權利要求1所述的基于分布式文件系統的高可用寫回緩存方法,其特征在于,還包括日志空間的回收機制: