本發明專利技術提供了一種對象存儲使用塊設備作為數據存儲的方法,當收到處理請求后,首先利用協議網關進行基礎處理,然后判斷是否具有寫請求;如果有寫請求則判斷是否有可用卷,如果沒有則先創建卷,然后轉換為卷地址后寫入,更新元數據記錄后返回客戶端;如果沒有寫請求則從元數據查詢位置,轉換為卷地址后讀取數據內容后,返回客戶端。本發明專利技術有益效果:一種對象存儲使用塊設備作為數據存儲的方法,移除硬盤上的文件系統層,對象協議網關直接對接裸設備,去除了文件系統層的性能衰減。去除了文件系統層的性能衰減。去除了文件系統層的性能衰減。
【技術實現步驟摘要】
一種對象存儲使用塊設備作為數據存儲的方法
[0001]本專利技術屬于分布式存儲領域,尤其是涉及一種對象存儲使用塊設備作為數據存儲的方法。
技術介紹
[0002]對象存儲大多由協議層和數據引擎層和元數據服務構成,其中協議層負責S3/SWIFT或者私有對象協議的實現,往往呈現為無狀態應用,數據引擎層則負責實際數據的持久化及冗余恢復等功能。目前多數的協議層和數據引擎層之間采用kv接口或文件系統接口對接,以當前流行的開源對象存儲為例,ceph的rgw通過kv接口訪問數據引擎rados,minio對象存儲則直接使用本地文件系統作為數據引擎。雖然使用kv或者文件協議對接會使得方案更加通用,但是在某些特定場景下,例如已有資源池中,塊存儲本身已經通過RAID或三副本機制實現了可靠性和高性能,在不增加額外存儲資源的前提下,通過部署一個簡單的對象協議網關,使用已有的塊設備和元數據服務,從而快速具備高性能對象存儲能力不失為一種更加容易讓人接受的解決辦法。
技術實現思路
[0003]有鑒于此,本專利技術旨在提出一種對象存儲使用塊設備作為數據存儲的方法,以至少解決
技術介紹
中的至少一個問題。
[0004]為達到上述目的,本專利技術的技術方案是這樣實現的:
[0005]一種對象存儲使用塊設備作為數據存儲的方法,當收到處理請求后,首先利用協議網關進行基礎處理,然后判斷是否具有寫請求;
[0006]如果有寫請求則判斷是否有可用卷,如果沒有則先創建卷,然后轉換為卷地址后寫入,更新元數據記錄后返回客戶端;
[0007]如果沒有寫請求則從元數據查詢位置,轉換為卷地址后讀取數據內容后,返回客戶端。
[0008]進一步的,對象存儲啟動時候,從配置文件讀取后端數據存儲類型,如果類型是塊設備,則ping塊管理接口是否正常,確保可以正常調用。
[0009]進一步的,當寫IO到達時,判斷是否有可用塊用于寫入,如果沒有,則調用塊設備管理接口創建塊,創建成功后調用open接口,將其置于打開狀態,如果有可用塊可用于寫入,則直接寫入。
[0010]進一步的,每一個block進行編號,寫入時候從0開始并以此向后寫入,寫入成功之后更新當前卷的寫入位置,當一個寫IO到來時,從請求中獲取到size信息,通過size計算出需要的4K個數,且對最后一個數據塊的余位置0對齊,對齊之后,讀取當前卷的寫入位置,并以此寫入位置為offset,將對齊后的buffer寫入到卷中,寫入成功之后,更新當前卷的寫入位置,同時將原來的寫入offset作為對象在這個塊的offset返回給協議層,協議層將其持久化到元數據數據庫中。
[0011]進一步的,當讀請求到達時,首先從元數據服務中獲取到offset和length,根據相同算法,在訪問塊設備之前,將其轉化為對齊之后的offset和block個數,將相關的block讀出,讀出之后根據length大小,在內存buffer中將用于補位的超過length的數據丟棄,然后將結果返回給客戶端,完成讀取操作。
[0012]進一步的,本方案公開了一種電子設備,包括處理器以及與處理器通信連接,且用于存儲所述處理器可執行指令的存儲器,所述處理器用于執行一種對象存儲使用塊設備作為數據存儲的方法。
[0013]進一步的,本方案公開了一種服務器,包括至少一個處理器,以及與所述處理器通信連接的存儲器,所述存儲器存儲有可被所述至少一個處理器執行的指令,所述指令被所述處理器執行,以使所述至少一個處理器執行如一種對象存儲使用塊設備作為數據存儲的方法。
[0014]進一步的,本方案公開了一種計算機可讀取存儲介質,存儲有計算機程序,所述計算機程序被處理器執行時實現一種對象存儲使用塊設備作為數據存儲的方法。
[0015]相對于現有技術,本專利技術所述的一種對象存儲使用塊設備作為數據存儲的方法具有以下有益效果:
[0016](1)本專利技術所述的一種對象存儲使用塊設備作為數據存儲的方法,移除硬盤上的文件系統層,對象協議網關直接對接裸設備,去除了文件系統層的性能衰減;
[0017](2)本專利技術所述的一種對象存儲使用塊設備作為數據存儲的方法,塊存儲是數據中心的基礎設施,直接使用塊存儲,不需要額外增加服務器部署數據節點,節省資源;
[0018](3)本專利技術所述的一種對象存儲使用塊設備作為數據存儲的方法,數據可靠性由塊設備保證,協議網關作為無狀態應用,維護簡單。
附圖說明
[0019]構成本專利技術的一部分的附圖用來提供對本專利技術的進一步理解,本專利技術的示意性實施例及其說明用于解釋本專利技術,并不構成對本專利技術的不當限定。在附圖中:
[0020]圖1為本專利技術實施例所述的一種對象存儲使用塊設備作為數據存儲的方法示意圖。
具體實施方式
[0021]需要說明的是,在不沖突的情況下,本專利技術中的實施例及實施例中的特征可以相互組合。
[0022]下面將參考附圖并結合實施例來詳細說明本專利技術。
[0023]在本方案中,使用kv存儲作為數據存儲的對象存儲系統中,一個putobject流程首先會創建一個kv對象,隨后將數據內容寫入到此KV對象當中,寫入成功后在元數據服務中更新位置信息。當getobject請求到來時候,先從元數據當中獲取到該對象對應的位置,然后從kv存儲中將該對象讀出并返回給客戶端。
[0024]在支持塊設備作為數據存儲時,增加一個后端存儲類型字段type,來區別處理KV存儲和塊存儲類型的后端存儲,根據配置文件來指定協議層選擇哪種存儲類型。對于KV存儲,數據讀寫流程保持不變,對于塊存儲類型,數據處理上主要有如下不同:
[0025]1.一塊盤上會有多個對象存儲數據,所以對于單個對象來說,它會存放在一個“共享卷”上,寫入返回時候,不僅要記錄存放在哪個卷上,還要記錄這個對象在卷的偏移位置,同樣,讀取該對象時候,根據卷ID和偏移位置將內容讀出。
[0026]2.原本對象被刪除時候,會把對象對應的數據kv對象也刪除掉,但是使用塊設備作為后端時,當對象被刪除時,不會直接刪掉數據,而是在元數據當中將其置為deleted,同時記錄其所在卷的實際使用量變化。后臺進程會定期分析卷的使用量,當達到閾值時候,對多個卷進行過合并操作,合并完成之后,將舊的卷整體刪除。
[0027]具體流程如下:
[0028]1.對象存儲啟動時候,從配置文件讀取后端數據存儲類型,如果類型是塊設備,則ping塊管理接口是否正常,確保可以正常調用。
[0029]2.當寫IO到達時,判斷是否有可用塊用于寫入,如果沒有,則調用塊設備管理接口創建塊,創建成功后調用open接口,將其置于打開狀態。如果有可用塊可用于寫入,則直接寫入。
[0030]3.我們把卷看成連續的地址空間組成的一個存儲空間,并且以4K為粒度,對每一個block進行編號,寫入時候從0開始并以此向后寫入,寫入成功之后更新當前卷的寫入位置(可以記錄在卷元數據中或者卷的特定塊里面)。因此當一個寫IO到來時,從請求中獲取到si本文檔來自技高網...
【技術保護點】
【技術特征摘要】
1.一種對象存儲使用塊設備作為數據存儲的方法,其特征在于:當收到處理請求后,首先利用協議網關進行基礎處理,然后判斷是否具有寫請求;如果有寫請求則判斷是否有可用卷,如果沒有則先創建卷,然后轉換為卷地址后寫入,更新元數據記錄后返回客戶端;如果沒有寫請求則從元數據查詢位置,轉換為卷地址后讀取數據內容后,返回客戶端。2.根據權利要求1所述的一種對象存儲使用塊設備作為數據存儲的方法,其特征在于:對象存儲啟動時候,從配置文件讀取后端數據存儲類型,如果類型是塊設備,則ping塊管理接口是否正常,確保可以正常調用。3.根據權利要求2所述的一種對象存儲使用塊設備作為數據存儲的方法,其特征在于:當寫IO到達時,判斷是否有可用塊用于寫入,如果沒有,則調用塊設備管理接口創建塊,創建成功后調用open接口,將其置于打開狀態,如果有可用塊可用于寫入,則直接寫入。4.根據權利要求3所述的一種對象存儲使用塊設備作為數據存儲的方法,其特征在于:每一個block進行編號,寫入時候從0開始并以此向后寫入,寫入成功之后更新當前卷的寫入位置,當一個寫IO到來時,從請求中獲取到size信息,通過size計算出需要的4K個數,且對最后一個數據塊的余位置0對齊,對齊之后,讀取當前卷的寫入位置,并以此寫入位置為offset,將對齊后的buffer寫入到卷中,寫入成功之后,更新當前卷的寫入位置,同時將原來的...
【專利技術屬性】
技術研發人員:李韶雄,
申請(專利權)人:紫光云技術有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。