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