一種基於CEPH集群CAP機制統計配額系統及方法與流程
2023-06-25 18:22:46 3

本發明涉及分布式存儲軟體領域,尤其涉及一種基於ceph集群cap機制統計配額系統及方法。
背景技術:
在如今的多媒體存儲中,數據量呈幾何級增長,存儲數據的磁碟空間逐漸加大,由以前的gb提升到現在的tb以至pb級別,如何避免用戶對磁碟空間的濫用,造成其他用戶無法使用磁碟空間是當前丞待解決的技術問題。
技術實現要素:
為了克服上述現有技術中的不足,本發明提供一種基於ceph集群cap機制統計配額系統,包括:多個客戶端和mds數據端;mds數據端分別與每個客戶端通信連接;
mds數據端用於設置客戶端配額,配額以字節為單位,客戶端和mds數據端均設有配額量,客戶端的配額量以mds數據端設置為準;當客戶端需要數據操作時,客戶端向mds數據端申請cap授權及配額量,當mds數據端設有配額用量時,將cap授權及配額量更新到所述客戶端。
優選地,cap授權包括:讀權限、寫權限、追加寫和更新權限。
一種基於ceph集群cap機制統計配額方法,配額方法包括:
當客戶端有新文件寫入或追加寫已存在的文件時,所述客戶端向mds數據端發送對所述文件的寫cap授權並申請配額量;
mds數據端接收到所述客戶端發送的寫cap授權請求後,查詢所述客戶端對所述文件是否寫cap授權,再查詢mds數據端是否有剩餘配額量;
若所述客戶端具有對所述文件的寫權限,且mds數據端設有所述客戶端申請的配額量;
mds數據端向所述客戶端發送寫cap授權並更新所述客戶端的配額量。
優選地,配額方法包括:
若所述客戶端具有對所述文件的寫權限,且mds數據端無所述客戶端申請的配額量;
mds數據端獲取所述客戶端已有的剩餘配額量是否滿足本次寫cap授權;
當所述客戶端已有的剩餘配額量滿足本次寫cap授權,則mds數據端向所述客戶端發送寫cap授權;
當所述客戶端已有的剩餘配額量不滿足本次寫cap授權,則mds數據端向所述客戶端發送配額量已超額,收回寫cap授權。
優選地,配額方法包括:
當客戶端減小文件大小時,記錄配額減小值;
客戶端向mds數據端發送cap配額減小申請,並發送配額減小值;
mds數據端接收到所述客戶端發送的cap更新文件大小申請,並更新mds數據端的配額剩餘值,配額剩餘值為當前配額剩餘值與所述客戶端的配額減小值之和;
mds數據端更新配額剩餘值,將所述客戶端的配額更新值返回;
所述客戶端更新本地配額值。
優選地,配額方法包括:
客戶端刪除本地文件或目錄時,記錄本次刪除文件或目錄的總大小;
客戶端向mds數據端發送刪除目錄或文件申請,並附帶刪除目錄或文件的大小;
mds數據端接收到所述客戶端發送的刪除目錄或文件申請,並更新mds數據端的配額剩餘值,配額剩餘值為當前配額剩餘值與所述客戶端刪除目錄或文件大小之和;
mds數據端更新配額剩餘值,將所述客戶端的配額更新值返回;
所述客戶端更新本地配額值。
優選地,配額方法包括:
當有新客戶端接入mds數據端時,mds數據端擴容總配額值;
mds數據端對新接入客戶端分配預設配額值;
mds數據端實時掃描每個客戶端,當客戶端不存在或客戶端不需要設置配額時,mds數據端回收所述客戶端的配額,刪除所述客戶端的配額量;
將所述客戶端增加至mds數據端的配額剩餘值上。
優選地,mds數據端通過比較每個客戶端與系統平均配額量的方差d來衡量當前系統中分配的配額量是否平衡,通過公式1.1計算來該平衡度;n為系統設有n個客戶端,pave表示系統平均配額量,pi表示第i個客戶端的配額量;
從以上技術方案可以看出,本發明具有以下優點:
利用ceph的cap權限控制機制統計基於客戶端的配額,減少客戶端與mds數據端通信消息類型,實現基於文件的配額統計,使配額統計更精準和高效。mds數據端對客戶端設置配額,為客戶端劃分磁配額量,提高客戶端和mds數據端的儲存空間利用率。
附圖說明
為了更清楚地說明本發明的技術方案,下面將對描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為基於ceph集群cap機制統計配額系統示意圖;
圖2為基於ceph集群cap機制統計配額方法實施例流程圖;
圖3為基於ceph集群cap機制統計配額方法另一實施例流程圖;
圖4為基於ceph集群cap機制統計配額方法另一實施例流程圖;
圖5為基於ceph集群cap機制統計配額方法另一實施例流程圖;
圖6為基於ceph集群cap機制統計配額方法另一實施例流程圖。
具體實施方式
為使得本發明的發明目的、特徵、優點能夠更加的明顯和易懂,下面將運用具體的實施例及附圖,對本發明保護的技術方案進行清楚、完整地描述,顯然,下面所描述的實施例僅僅是本發明一部分實施例,而非全部的實施例。基於本專利中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其它實施例,都屬於本專利保護的範圍。
本實施例提供一種基於ceph集群cap機制統計配額系統,如圖1所示,包括:多個客戶端2和mds數據端1;mds數據端1分別與每個客戶端1通信連接;
mds數據端1用於設置客戶端2配額,配額以字節為單位,客戶端2和mds數據端1均設有配額量,客戶端的配額量以mds數據端設置為準;當客戶端2需要數據操作時,客戶端2向mds數據端1申請cap授權及配額量,當mds數據端1設有配額用量時,將cap授權及配額量更新到所述客戶端1;這樣減少客戶端和mds數據端1交互,減輕mds數據端1數據處理壓力。
基於ceph集群cap機制統計配額系統劃分為clients:客戶端(數據用戶),mds:metadataservercluster,元數據伺服器(緩存和同步分布式元數據)osd:objectstoragecluster,對象存儲集群(將數據和元數據作為對象存儲,執行其他關鍵職能)。mon:clustermonitors,集群監視器(執行監視功能),客戶端通過posix接口存入數據到ceph系統中,通過其他三個部分之間的協作,實現數據的分布式存儲、查看、修改和刪除,這些操作原理對用戶是透明的。
ceph分布式存儲系統存儲的數據以對象為單位,對上層用戶(client)而言,是以文件為單位,進行數據的新建、更新和刪除,ceph對文件設置了權限,不同的用戶對相同的文件或目錄享有的操作權限不相同,ceph需要一種機制來管理文件權限,這種機制就是cap(capability)機制,cap是mds分配給用戶對文件/目錄的操作能力權限,不同的客戶端,或者同一客戶端不同時刻,對同一文件/目錄持有cap可能是不同的,cap權限總體上分三種:讀權限、寫權限和更新權限,mds通過cap對多個客戶端操作同一個文件/目錄進行權限管理,但ceph缺少對用戶讀寫存儲空間的限制,不能合理的利用存儲空間,不能滿足客戶需求,本發明就是基於ceph的cap機制,為用戶設置完配額,實現為各個用戶劃分各自的存儲空間,在用戶對文件或目錄申請寫權限或更新權限時進行配額檢查,超過設置的配額值,用戶不能寫入數據,直到用戶有剩餘空間後,方可寫入數據,達到定量管理,提高存儲空間的利用率和系統的安全性。
本發明還提供一種基於ceph集群cap機制統計配額方法,如圖2所示,配額方法包括:
s1、當客戶端有新文件寫入或追加寫已存在的文件時,所述客戶端向mds數據端發送對所述文件的寫cap授權並申請配額量;
s2、mds數據端接收到所述客戶端發送的寫cap授權請求後,查詢所述客戶端對所述文件是否寫cap授權,再查詢mds數據端是否有剩餘配額量;
s3、若所述客戶端具有對所述文件的寫權限,且mds數據端設有所述客戶端申請的配額量;
s4、mds數據端向所述客戶端發送寫cap授權並更新所述客戶端的配額量。
本實施例中,配額方法包括:如圖3所示,
s11、若所述客戶端具有對所述文件的寫權限,且mds數據端無所述客戶端申請的配額量;
s12、mds數據端獲取所述客戶端已有的剩餘配額量是否滿足本次寫cap授權;
s13、當所述客戶端已有的剩餘配額量滿足本次寫cap授權,則mds數據端向所述客戶端發送寫cap授權;
s14、當所述客戶端已有的剩餘配額量不滿足本次寫cap授權,則mds數據端向所述客戶端發送配額量已超額,收回寫cap授權。
本實施例中,配額方法包括:如圖4所示,
s21、當客戶端減小文件大小時,記錄配額減小值;
s22、客戶端向mds數據端發送cap配額減小申請,並發送配額減小值;
s23、mds數據端接收到所述客戶端發送的cap更新文件大小申請,並更新mds數據端的配額剩餘值,配額剩餘值為當前配額剩餘值與所述客戶端的配額減小值之和;
s24、mds數據端更新配額剩餘值,將所述客戶端的配額更新值返回;
s25、所述客戶端更新本地配額值。
本實施例中,配額方法包括:如圖5所示,
s31、客戶端刪除本地文件或目錄時,記錄本次刪除文件或目錄的總大小;
s32、客戶端向mds數據端發送刪除目錄或文件申請,並附帶刪除目錄或文件的大小;
s33、mds數據端接收到所述客戶端發送的刪除目錄或文件申請,並更新mds數據端的配額剩餘值,配額剩餘值為當前配額剩餘值與所述客戶端刪除目錄或文件大小之和;
s34、mds數據端更新配額剩餘值,將所述客戶端的配額更新值返回;
s35、所述客戶端更新本地配額值。
本實施例中,配額方法包括:如圖6所示,
s41、當有新客戶端接入mds數據端時,mds數據端擴容總配額值;
s42、mds數據端對新接入客戶端分配預設配額值;
s43、mds數據端實時掃描每個客戶端,當客戶端不存在或客戶端不需要設置配額時,mds數據端回收所述客戶端的配額,刪除所述客戶端的配額量;
s44、將所述客戶端增加至mds數據端的配額剩餘值上。
本實施例中,mds數據端通過比較每個客戶端與系統平均配額量的方差d來衡量當前系統中分配的配額量是否平衡,通過公式1.1計算來該平衡度;n為系統設有n個客戶端,pave表示系統平均配額量,pi表示第i個客戶端的配額量;
在初始工作或正常工作中,mds數據端通過計算平衡度,方差d來衡量當前系統中分配的配額量是否平衡,保證每個客戶端的配額量均衡。當有客戶端新申請配額量或減少配額量時依據上述方法執行。
在一些實施例中,所述設備中的一個或多個設備的部分或所有功能或處理由電腦程式實現或支持,電腦程式由計算機可讀程序代碼形成並且被包括在計算機可讀介質中。短語「計算機可讀程序代碼」包括任何類型的計算機代碼,包括原始碼、目標代碼和可執行代碼。短語「計算機可讀介質」包括能夠被計算機訪問的任何類型的介質,諸如只讀存儲器(rom)、隨機存取存儲器(ram)、硬碟驅動器、光碟(cd)、數字視頻盤(dvd)、或任何其他類型的存儲器。
對所公開的實施例的上述說明,使本領域專業技術人員能夠實現或使用本發明。對這些實施例的多種修改對本領域的專業技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發明的精神或範圍的情況下,在其它實施例中實現。因此,本發明將不會被限制於本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的範圍。