亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于CEPH糾刪除容錯的讀取文件方法及裝置與流程

文檔序號:11654326閱讀:271來源:國知局
基于CEPH糾刪除容錯的讀取文件方法及裝置與流程

本發(fā)明涉及分布式存儲領(lǐng)域,尤其涉及一種基于ceph糾刪除容錯的讀取文件方法及裝置。



背景技術(shù):

在ceph分布式文件系統(tǒng)中,通常采用rs(k,m)的糾刪碼,即原始數(shù)據(jù)切片k塊,編碼出m塊校驗塊,分別存儲到k+m個節(jié)點中。糾刪碼覆蓋寫,需要至少m+1個節(jié)點的參與,包括1個數(shù)據(jù)節(jié)點,m個校驗塊節(jié)點。rs(k,m)的糾刪碼至多容忍m個節(jié)點丟失,需要k個節(jié)點才能解碼原始數(shù)據(jù),所以覆蓋寫更新需要保持至少k個節(jié)點數(shù)據(jù)版本一致,才能保證更新不會造成數(shù)據(jù)丟失。特別是在做讀取操作時,糾刪數(shù)據(jù)塊分散在多個osd或主機上,該數(shù)據(jù)的相應(yīng)時間即為最慢的osd或者主機上的糾刪數(shù)據(jù)塊相應(yīng)時間,導(dǎo)致使用糾刪編碼的數(shù)據(jù)讀取性能較差。



技術(shù)實現(xiàn)要素:

本發(fā)明的主要目的在于提供一種基于ceph糾刪除容錯的讀取文件方法及裝置,旨在提高使用糾刪編碼的數(shù)據(jù)讀取性能。

為實現(xiàn)上述目的,本發(fā)明提供的一種基于ceph糾刪除容錯的讀取文件方法包括如下步驟:

接收客戶端發(fā)送的讀取對象的請求;

根據(jù)請求計算需要讀取的數(shù)據(jù)塊,并根據(jù)客戶端id和對象id,向所有其它osd發(fā)送請求讀取數(shù)據(jù)塊的廣播消息;

接收糾刪數(shù)據(jù)塊及校驗塊所在的osd發(fā)送過來的請求讀取的數(shù)據(jù)塊;

將接收到的請求讀取的數(shù)據(jù)塊恢復(fù)出原對象并發(fā)送給客戶端。

優(yōu)選地,所述接收客戶端發(fā)送的讀取對象的請求的步驟具體包括:客戶端根據(jù)crush算法找到主osd,主osd接收客戶端發(fā)送的讀取對象的請求。

優(yōu)選地,所述將接收到的請求讀取的數(shù)據(jù)塊恢復(fù)出原對象并發(fā)送給客戶端的步驟包括:

若糾刪比為k:m,則根據(jù)最先發(fā)回的k個數(shù)據(jù)塊或檢驗塊恢復(fù)出原對象,將恢復(fù)后的原對象發(fā)送給客戶端。

優(yōu)選地,所述接收糾刪數(shù)據(jù)塊及校驗塊所在的osd發(fā)送過來的請求讀取的數(shù)據(jù)塊的步驟具體包括:

主osd根據(jù)客戶端id檢索糾刪數(shù)據(jù)塊及校驗塊所在的osd內(nèi)的緩存組內(nèi)是否存在所述數(shù)據(jù)塊,如果存在,則直接提??;

如果不存在,則根據(jù)對象id和讀取范圍內(nèi)對應(yīng)的數(shù)據(jù)塊序號檢索hashmap的索引結(jié)構(gòu),如果存在對應(yīng)數(shù)據(jù)塊,則直接將所述數(shù)據(jù)塊返回至主osd。

此外,為實現(xiàn)上述目的,本發(fā)明還提供一種基于ceph糾刪除容錯的讀取文件裝置,所述基于ceph糾刪除容錯的讀取文件裝置:

第一接收模塊,用于接收客戶端發(fā)送的讀取對象的請求;

第一發(fā)送模塊,用于根據(jù)請求計算需要讀取的數(shù)據(jù)塊,并根據(jù)客戶端id和對象id,向所有其它osd發(fā)送請求讀取數(shù)據(jù)塊的廣播消息;

第二接收模塊,用于接收糾刪數(shù)據(jù)塊及校驗塊所在的osd發(fā)送過來的請求讀取的數(shù)據(jù)塊;

第二發(fā)送模塊,用于將接收到的請求讀取的數(shù)據(jù)塊恢復(fù)出原對象并發(fā)送給客戶端。

優(yōu)選地,所述客戶端用于根據(jù)crush算法找到主osd,所述第一接收模塊用于主osd接收客戶端發(fā)送的讀取對象的請求。

優(yōu)選地,所述第二發(fā)送模塊包括:

恢復(fù)單元,用于當(dāng)糾刪比為k:m時,根據(jù)最先發(fā)回的k個數(shù)據(jù)塊或檢驗塊恢復(fù)出原對象,將恢復(fù)后的原對象發(fā)送給客戶端。

優(yōu)選地,所述第二接收模塊包括:

提取單元,用于根據(jù)客戶端id檢索糾刪數(shù)據(jù)塊及校驗塊所在的osd內(nèi)的緩存組,如果存在所述數(shù)據(jù)塊,則直接提取;

返回單元,用于當(dāng)不存在所述數(shù)據(jù)塊時,則根據(jù)對象id和讀取范圍內(nèi)對應(yīng)的數(shù)據(jù)塊序號檢索hashmap的索引結(jié)構(gòu),如果存在對應(yīng)數(shù)據(jù)塊,則直接將所述數(shù)據(jù)塊返回至主osd。

本發(fā)明通過接收客戶端發(fā)送讀取對象的請求;根據(jù)請求計算需要讀取的數(shù)據(jù)塊,并根據(jù)客戶端id和對象id,向所有osd發(fā)送請求讀取數(shù)據(jù)塊的消息;接收接收糾刪數(shù)據(jù)塊及校驗塊所在的osd發(fā)送過來的請求讀取的數(shù)據(jù)塊;將接收到的請求讀取的數(shù)據(jù)塊恢復(fù)出原對象并發(fā)送給客戶端。采用本發(fā)明的讀取文件方法實現(xiàn)了讀取糾刪數(shù)據(jù)的優(yōu)化,提高了糾刪編碼數(shù)據(jù)的讀取性能。

附圖說明

圖1為本發(fā)明基于ceph糾刪除容錯的讀取文件方法第一實施例的流程示意圖;

圖2為本發(fā)明基于ceph糾刪除容錯的讀取文件方法第二實施例中讀取數(shù)據(jù)塊的細(xì)化流程示意圖;

圖3為本發(fā)明基于ceph糾刪除容錯的讀取文件裝置第一實施例的功能模塊示意圖;

圖4為本發(fā)明基于ceph糾刪除容錯的讀取文件裝置第二實施例中第二接收模塊的細(xì)化功能模塊示意圖;

圖5為基于ceph糾刪除容錯的讀取文件方法的時序圖。

本發(fā)明目的的實現(xiàn)、功能特點及優(yōu)點將結(jié)合實施例,參照附圖做進一步說明。

具體實施方式

應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

本發(fā)明提供一種基于ceph糾刪除容錯的讀取文件方法,參照圖1和圖5,在第一實施例中,該基于ceph糾刪除容錯的讀取文件方法包括:

步驟s10,接收客戶端發(fā)送過來的讀取對象的請求;

本實施例中,在ceph存儲系統(tǒng)中,讀取數(shù)據(jù)時,客戶端只會向ceph的存儲節(jié)點中的主osd節(jié)點發(fā)起讀取數(shù)據(jù)請求,并不會有類似于數(shù)據(jù)庫中的讀寫分類的情況出現(xiàn)。在ceph分布式存儲系統(tǒng)中,每個存儲服務(wù)器上可能包含了眾多的osd節(jié)點,每個節(jié)點監(jiān)聽不同的端口,每個osd節(jié)點可以設(shè)置一個目錄作為實際存儲區(qū)域,也可以是一個分區(qū)。本實施例中,所有osd節(jié)點均分布于ceph分布式存儲系統(tǒng)中。

本實施例中,所述客戶端根據(jù)crush算法找到主osd,crush算法是ceph的兩大創(chuàng)新之一,ceph摒棄了傳統(tǒng)的集中式存儲元數(shù)據(jù)尋址的方案,轉(zhuǎn)而使用crush算法完成數(shù)據(jù)的尋址操作。crush在一致性哈?;A(chǔ)上很好的考慮了容災(zāi)域的隔離,能夠?qū)崿F(xiàn)各類負(fù)載的副本放置規(guī)則,例如跨機房、機架感知等。crush算法有相當(dāng)強大的擴展性,理論上支持?jǐn)?shù)千個存儲節(jié)點??蛻舳税l(fā)送需要讀取數(shù)據(jù)的請求,主osd接收客戶端發(fā)送過來的讀取對象的請求。

步驟s20,根據(jù)請求計算需要讀取的數(shù)據(jù)塊,并根據(jù)客戶端id和對象id,向所有osd發(fā)送請求讀取數(shù)據(jù)的消息;

本實施例中,所述主osd根據(jù)相應(yīng)的編碼方法計算出需要讀取的數(shù)據(jù)塊,并根據(jù)客戶端id和對象id向所有osd發(fā)送請求讀取數(shù)據(jù)的消息。

步驟s30,接收糾刪數(shù)據(jù)塊及校驗塊所在的osd發(fā)送過來的請求讀取的數(shù)據(jù)塊;

步驟s40,將接收到的請求讀取的數(shù)據(jù)塊恢復(fù)出原對象并發(fā)送給客戶端。

具體地,若糾刪比為k:m,則根據(jù)最先發(fā)回的k個數(shù)據(jù)塊或檢驗塊恢復(fù)出原對象,將恢復(fù)后的原對象發(fā)送給客戶端。其中k和m均為正整數(shù)。

本實施例中,以糾刪碼rs(4,2)為例說明本發(fā)明方法,即原始數(shù)據(jù)塊切成四塊,經(jīng)過rs編碼處2塊校驗碼,所有涉及的運算皆為rs編碼中的有限域運算。以4mb大小作為編碼條帶,其中每個節(jié)點都會存儲條帶中1mb大小的數(shù)據(jù)塊,原始文件會以4mb為大小切分成多個編碼條帶。一個pg組包含6個存儲節(jié)點osd,其中前4個節(jié)點存儲原始數(shù)據(jù)塊,稱為數(shù)據(jù)節(jié)點,第2個節(jié)點存儲編碼塊,稱為校驗塊節(jié)點,并且數(shù)據(jù)節(jié)點中第一塊數(shù)據(jù)塊所在節(jié)點為主osd。讀取數(shù)據(jù)請求由額外的1個客戶端節(jié)點發(fā)起。

圖5為ceph系統(tǒng)中實現(xiàn)糾刪碼容錯讀取文件的時序圖。包括客戶端發(fā)起讀取請求到ceph的存儲節(jié)點中的主osd,主osd分析讀取請求選定編碼方法后構(gòu)造對應(yīng)的讀取請求,發(fā)送給對應(yīng)數(shù)據(jù)塊osd,然后異步等待數(shù)據(jù)返回。主osd收到所有返回的數(shù)據(jù)后,將接收到的請求讀取的數(shù)據(jù)塊恢復(fù)出原對象后發(fā)送給客戶端。

本實施例通過接收客戶端發(fā)送讀取對象的請求;計算需要讀取的數(shù)據(jù)塊,并根據(jù)客戶端id和對象id,向所有osd發(fā)送請求讀取數(shù)據(jù)塊的消息;接收特定的osd發(fā)送過來的請求讀取的數(shù)據(jù)塊;將接收到的請求讀取的數(shù)據(jù)塊恢復(fù)出原對象并發(fā)送給客戶端。采用本發(fā)明的讀取文件方法實現(xiàn)了讀取糾刪數(shù)據(jù)的優(yōu)化,提高了糾刪編碼數(shù)據(jù)的讀取性能。

進一步地,請參閱圖2,基于本發(fā)明基于ceph糾刪除容錯的讀取文件方法第一實施例,在本發(fā)明基于ceph糾刪除容錯的讀取文件方法第二實施例中,上述步驟s30包括:

步驟s31,主osd根據(jù)客戶端id檢索糾刪數(shù)據(jù)塊及校驗塊所在的osd內(nèi)的緩存組,如果存在所述數(shù)據(jù)塊,則直接提?。?/p>

步驟s32,如果沒有,則根據(jù)對象id和讀取范圍內(nèi)對應(yīng)的數(shù)據(jù)塊序號檢索hashmap的索引結(jié)構(gòu),如果存在對應(yīng)數(shù)據(jù)塊,則直接將所述數(shù)據(jù)塊返回至主osd。

具體地,本實施例中,根據(jù)客戶端id檢索緩存組,如果存在,則直接提取,如果沒有則分配新的緩存組,如果空間足夠,則直接分配,如果已分配數(shù)超過預(yù)定客戶端緩存數(shù)時,從lru鏈表中刪除末尾客戶端id,新建當(dāng)前客戶端id的緩存組索引。并加入lru結(jié)構(gòu)。從緩存組中,根據(jù)對象id和讀取范圍對應(yīng)的數(shù)據(jù)塊序號檢索hashmp的索引結(jié)構(gòu),如果存在對應(yīng)數(shù)據(jù)塊,則直接返回;如果不存在,則發(fā)起讀取請求,在讀取數(shù)據(jù)返回后將數(shù)據(jù)塊加入緩存組,在緩存滿時。則根據(jù)lru算法刪除最近未使用的數(shù)據(jù)塊。

本實施例通過在osd內(nèi)讀取數(shù)據(jù)塊,并根據(jù)osd內(nèi)的存儲情況,及時將數(shù)據(jù)塊緩存到osd內(nèi)的緩存組中,并及時清理osd內(nèi)的緩存空間。提高了數(shù)據(jù)讀取速度以及擴展了存儲空間。

本發(fā)明還提供一種基于ceph糾刪除容錯的讀取文件裝置,參照圖3,在第一實施例中,該基于ceph糾刪除容錯的讀取文件裝置包括:

第一接收模塊10,用于接收客戶端發(fā)送過來的讀取對象的請求;

本實施例中,在ceph存儲系統(tǒng)中,讀取數(shù)據(jù)時,客戶端只會向ceph的存儲節(jié)點中的主osd節(jié)點發(fā)起讀取數(shù)據(jù)請求,并不會有類似于數(shù)據(jù)庫中的讀寫分類的情況出現(xiàn)。在ceph分布式存儲系統(tǒng)中,每個存儲服務(wù)器上可能包含了眾多的osd節(jié)點,每個節(jié)點監(jiān)聽不同的端口,每個osd節(jié)點可以設(shè)置一個目錄作為實際存儲區(qū)域,也可以是一個分區(qū)。本實施例中,所有osd節(jié)點均分布于ceph分布式存儲系統(tǒng)中。

本實施例中,所述客戶端根據(jù)crush算法找到主osd,crush算法是ceph的兩大創(chuàng)新之一,ceph摒棄了傳統(tǒng)的集中式存儲元數(shù)據(jù)尋址的方案,轉(zhuǎn)而使用crush算法完成數(shù)據(jù)的尋址操作。crush在一致性哈希基礎(chǔ)上很好的考慮了容災(zāi)域的隔離,能夠?qū)崿F(xiàn)各類負(fù)載的副本放置規(guī)則,例如跨機房、機架感知等。crush算法有相當(dāng)強大的擴展性,理論上支持?jǐn)?shù)千個存儲節(jié)點。客戶端發(fā)送需要讀取數(shù)據(jù)的請求,主osd接收客戶端發(fā)送過來的讀取對象的請求。

第一發(fā)送模塊20,用于根據(jù)請求計算需要讀取的數(shù)據(jù)塊,并根據(jù)客戶端id和對象id,向所有osd發(fā)送請求讀取數(shù)據(jù)的消息;

本實施例中,所述主osd根據(jù)相應(yīng)的編碼方法計算出需要讀取的數(shù)據(jù)塊,并根據(jù)客戶端id和對象id向所有osd發(fā)送請求讀取數(shù)據(jù)的消息。

第二接收模塊30,用于接收糾刪數(shù)據(jù)塊及校驗塊所在的osd發(fā)送過來的請求讀取的數(shù)據(jù)塊;

第二發(fā)送模塊40,用于將接收到的請求讀取的數(shù)據(jù)塊恢復(fù)出原對象并發(fā)送給客戶端。

具體地,若糾刪比為k:m,則根據(jù)最先發(fā)回的k個數(shù)據(jù)塊或檢驗塊恢復(fù)出原對象,將恢復(fù)后的原對象發(fā)送給客戶端。其中k和m均為正整數(shù)。

本實施例中,以糾刪碼rs(4,2)為例說明本發(fā)明方法,即原始數(shù)據(jù)塊切成四塊,經(jīng)過rs編碼處2塊校驗碼,所有涉及的運算皆為rs編碼中的有限域運算。以4mb大小作為編碼條帶,其中每個節(jié)點都會存儲條帶中1mb大小的數(shù)據(jù)塊,原始文件會以4mb為大小切分成多個編碼條帶。一個pg組包含6個存儲節(jié)點osd,其中前4個節(jié)點存儲原始數(shù)據(jù)塊,稱為數(shù)據(jù)節(jié)點,第2個節(jié)點存儲編碼塊,稱為校驗塊節(jié)點,并且數(shù)據(jù)節(jié)點中第一塊數(shù)據(jù)塊所在節(jié)點為主osd。讀取數(shù)據(jù)請求由額外的1個客戶端節(jié)點發(fā)起。

圖5為ceph系統(tǒng)中實現(xiàn)糾刪碼容錯讀取文件的時序圖。包括客戶端發(fā)起讀取請求到ceph的存儲節(jié)點中的主osd,主osd分析讀取請求選定編碼方法后構(gòu)造對應(yīng)的讀取請求,發(fā)送給對應(yīng)數(shù)據(jù)塊osd,然后異步等待數(shù)據(jù)返回。主osd收到所有返回的數(shù)據(jù)后,將接收到的請求讀取的數(shù)據(jù)塊恢復(fù)出原對象后發(fā)送給客戶端。

本實施例通過接收客戶端發(fā)送讀取對象的請求;計算需要讀取的數(shù)據(jù)塊,并根據(jù)客戶端id和對象id,向所有osd發(fā)送請求讀取數(shù)據(jù)塊的消息;接收特定的osd發(fā)送過來的請求讀取的數(shù)據(jù)塊;將接收到的請求讀取的數(shù)據(jù)塊恢復(fù)出原對象并發(fā)送給客戶端。采用本發(fā)明的讀取文件方法實現(xiàn)了讀取糾刪數(shù)據(jù)的優(yōu)化,提高了糾刪編碼數(shù)據(jù)的讀取性能。

進一步地,請參閱圖4,基于本發(fā)明基于ceph糾刪除容錯的讀取文件裝置第一實施例,在本發(fā)明基于ceph糾刪除容錯的讀取文件裝置第二實施例中,所述第二接收模塊30還包括:

提取單元31,用于主osd根據(jù)客戶端id檢索糾刪數(shù)據(jù)塊及校驗塊所在的osd內(nèi)的緩存組內(nèi)是否存在所述數(shù)據(jù)塊,如果存在,則直接提??;

返回單元32,用于當(dāng)不存在所述數(shù)據(jù)塊時,則根據(jù)對象id和讀取范圍內(nèi)對應(yīng)的數(shù)據(jù)塊序號檢索hashmap的索引結(jié)構(gòu),如果存在對應(yīng)數(shù)據(jù)塊,則直接將所述數(shù)據(jù)塊返回至主osd。

具體地,本實施例中,根據(jù)客戶端id檢索緩存組,如果存在,則直接提取,如果沒有則分配新的緩存組,如果空間足夠,則直接分配,如果已分配數(shù)超過預(yù)定客戶端緩存數(shù)時,從lru鏈表中刪除末尾客戶端id,新建當(dāng)前客戶端id的緩存組索引。并加入lru結(jié)構(gòu)。從緩存組中,根據(jù)對象id和讀取范圍對應(yīng)的數(shù)據(jù)塊序號檢索hashmp的索引結(jié)構(gòu),如果存在對應(yīng)數(shù)據(jù)塊,則直接返回;如果不存在,則發(fā)起讀取請求,在讀取數(shù)據(jù)返回后將數(shù)據(jù)塊加入緩存組,在緩存滿時。則根據(jù)lru算法刪除最近未使用的數(shù)據(jù)塊。

本實施例通過在osd內(nèi)讀取數(shù)據(jù)塊,并根據(jù)osd內(nèi)的存儲情況,及時將數(shù)據(jù)塊緩存到osd內(nèi)的緩存組中,并及時清理osd內(nèi)的緩存空間。提高了數(shù)據(jù)讀取速度以及擴展了存儲空間。

以上僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1