本發(fā)明涉及數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,特別涉及一種分布式存儲(chǔ)系統(tǒng)中數(shù)據(jù)分布的方法及裝置。
背景技術(shù):
在分布式存儲(chǔ)系統(tǒng)中,文件的數(shù)據(jù)內(nèi)容以塊為粒度進(jìn)行切分并將其分散存儲(chǔ)在不同的存儲(chǔ)節(jié)點(diǎn)中,已成為一種通常的處理手段(以下簡稱分布式的處理手段)。塊的尺寸可根據(jù)系統(tǒng)中普遍的文件尺寸進(jìn)行設(shè)置,典型的塊大小為4kb至4mb不等。相較于集中式的處理手段,分布式的處理手段通過數(shù)據(jù)塊分散存儲(chǔ)在不同節(jié)點(diǎn),可以充分地發(fā)揮存儲(chǔ)系統(tǒng)的并發(fā)處理能力。例如讀取同一個(gè)尺寸為64mb的文件,集中式的處理手段產(chǎn)生的時(shí)延為一次讀取64mb的時(shí)延,而分布式的處理手段產(chǎn)生的時(shí)延僅為64路并發(fā)讀取1mb的時(shí)延,顯然分布式的處理手段大幅降低了讀取操作的時(shí)延。
因此,文件的數(shù)據(jù)內(nèi)容在以塊為粒度切分之后,如何分布在各存儲(chǔ)節(jié)點(diǎn)中,成為當(dāng)前分布式存儲(chǔ)系統(tǒng)領(lǐng)域的重要技術(shù)熱點(diǎn)。一般地,評(píng)價(jià)一種數(shù)據(jù)分布方法的優(yōu)劣,主要從均衡性、可靠性以及計(jì)算量方法進(jìn)行考量。
現(xiàn)有的數(shù)據(jù)分布方法包括:
1.隨機(jī)選取方法。該種方式在為數(shù)據(jù)塊分配節(jié)點(diǎn)時(shí)完全隨機(jī),從宏觀上來說,對(duì)于大規(guī)模的存儲(chǔ)系統(tǒng)而言,各節(jié)點(diǎn)的數(shù)據(jù)塊將會(huì)十分均衡;計(jì)算量也很?。坏@種完全隨機(jī)的方法無法顯性地控制數(shù)據(jù)的各副本不在同一個(gè)故障域中,一種極端的情況甚至是同一文件的各數(shù)據(jù)塊及副本被分配到同一節(jié)點(diǎn)中。另外,在小規(guī)模的存儲(chǔ)系統(tǒng)中,各節(jié)點(diǎn)的均衡性難以保證。
2.固定分段選取方法。該種方式根據(jù)故障域進(jìn)行分段,在段內(nèi)進(jìn)行隨機(jī)選取節(jié)點(diǎn),這種方式提供了較好的可靠性,計(jì)算量也不大,但是由于故障域是固定的,因此分段也是固定的,數(shù)據(jù)分布結(jié)果的可能性十分有限;同時(shí),在節(jié)點(diǎn)數(shù)量無法被段數(shù)整除的情況下,亦無法保證各段的節(jié)點(diǎn)數(shù)量相等,因此均衡性難以得到滿足。
3.哈希選取方法。該種方式為每一個(gè)切片分配一個(gè)全局唯一的號(hào)碼,并通過某種計(jì)算規(guī)則求得散列值,然后對(duì)節(jié)點(diǎn)數(shù)進(jìn)行求余操作,其余數(shù)即為切片所存儲(chǔ)的節(jié)點(diǎn)。該種方法具有較好的均衡性,但計(jì)算量較大,可靠性略差。
由上可見,現(xiàn)有技術(shù)中的數(shù)據(jù)分布存儲(chǔ)方法,均無法同時(shí)滿足均衡性高、可靠性強(qiáng)、計(jì)算量小的評(píng)價(jià)指標(biāo)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種分布式存儲(chǔ)系統(tǒng)中數(shù)據(jù)分布的方法及裝置,能夠同時(shí)滿足均衡性高、可靠性強(qiáng)、計(jì)算量小的評(píng)價(jià)指標(biāo)。
為實(shí)現(xiàn)上述目的,本發(fā)明提供一種分布式存儲(chǔ)系統(tǒng)中數(shù)據(jù)分布的方法,所述方法包括:當(dāng)所述分布式存儲(chǔ)系統(tǒng)初始化時(shí),加載初始化信息;其中,所述初始化信息包括所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)總數(shù)、單文件分配節(jié)點(diǎn)數(shù)以及文件塊尺寸;當(dāng)在所述分布式存儲(chǔ)系統(tǒng)中寫入目標(biāo)文件時(shí),根據(jù)所述目標(biāo)文件的尺寸以及所述文件塊尺寸,將所述目標(biāo)文件劃分為多個(gè)切片;在所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)中確定邏輯起始點(diǎn),并根據(jù)所述節(jié)點(diǎn)總數(shù)和所述單文件分配節(jié)點(diǎn)數(shù),確定邏輯分組長度;將所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)按照邏輯分組長度劃分為多個(gè)邏輯組,并在各個(gè)邏輯組中分別選取一個(gè)偏移節(jié)點(diǎn);基于所述邏輯起始點(diǎn)、各個(gè)偏移節(jié)點(diǎn)以及所述節(jié)點(diǎn)總數(shù),確定物理分組;其中,所述物理分組中的節(jié)點(diǎn)的數(shù)量與所述偏移節(jié)點(diǎn)的數(shù)量相同;將根據(jù)所述目標(biāo)文件劃分得到的所述多個(gè)切片依次存放于所述物理分組內(nèi)的各個(gè)節(jié)點(diǎn)中。
進(jìn)一步地,按照下述公式將所述目標(biāo)文件劃分為多個(gè)切片:
其中,n表示切片的數(shù)量,k表示所述目標(biāo)文件的尺寸,blocksize表示所述文件塊尺寸。
進(jìn)一步地,所述邏輯分組長度按照下述公式確定:
其中,l表示所述邏輯分組長度,nodenum表示所述節(jié)點(diǎn)總數(shù),m表示所述單文件分配節(jié)點(diǎn)數(shù),
進(jìn)一步地,所述物理分組中的各個(gè)節(jié)點(diǎn)按照下述公式確定:
si=(lstart+li)%nodenum
其中,si表示所述物理分組中第i個(gè)節(jié)點(diǎn)在所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)編號(hào),lstart表示所述邏輯起始點(diǎn)在所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)編號(hào),li表示第i個(gè)偏移節(jié)點(diǎn)在所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)編號(hào),nodenum表示所述節(jié)點(diǎn)總數(shù),%表示取余運(yùn)算。
進(jìn)一步地,所述初始化信息中還包括文件副本個(gè)數(shù),并且所述文件副本個(gè)數(shù)為大于或者等于2的整數(shù);相應(yīng)地,在確定物理分組之后,所述方法還包括:
將所述物理分組繼續(xù)劃分為與所述文件副本個(gè)數(shù)相匹配的物理子分組,并分別將各個(gè)文件副本存儲(chǔ)至相應(yīng)的物理子分組中。
為實(shí)現(xiàn)上述目的,本申請(qǐng)還提供一種分布式存儲(chǔ)系統(tǒng)中數(shù)據(jù)分布的裝置,所述裝置包括:初始化信息加載單元,用于當(dāng)所述分布式存儲(chǔ)系統(tǒng)初始化時(shí),加載初始化信息;其中,所述初始化信息包括所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)總數(shù)、單文件分配節(jié)點(diǎn)數(shù)以及文件塊尺寸;切片劃分單元,用于當(dāng)在所述分布式存儲(chǔ)系統(tǒng)中寫入目標(biāo)文件時(shí),根據(jù)所述目標(biāo)文件的尺寸以及所述文件塊尺寸,將所述目標(biāo)文件劃分為多個(gè)切片;邏輯分組長度確定單元,用于在所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)中確定邏輯起始點(diǎn),并根據(jù)所述節(jié)點(diǎn)總數(shù)和所述單文件分配節(jié)點(diǎn)數(shù),確定邏輯分組長度;偏移節(jié)點(diǎn)確定單元,用于將所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)按照邏輯分組長度劃分為多個(gè)邏輯組,并在各個(gè)邏輯組中分別選取一個(gè)偏移節(jié)點(diǎn);物理分組確定單元,用于基于所述邏輯起始點(diǎn)、各個(gè)偏移節(jié)點(diǎn)以及所述節(jié)點(diǎn)總數(shù),確定物理分組;其中,所述物理分組中的節(jié)點(diǎn)的數(shù)量與所述偏移節(jié)點(diǎn)的數(shù)量相同;切片存放單元,用于將根據(jù)所述目標(biāo)文件劃分得到的所述多個(gè)切片依次存放于所述物理分組內(nèi)的各個(gè)節(jié)點(diǎn)中。
進(jìn)一步地,所述切片劃分單元按照下述公式將所述目標(biāo)文件劃分為多個(gè)切片:
其中,n表示切片的數(shù)量,k表示所述目標(biāo)文件的尺寸,blocksize表示所述文件塊尺寸。
進(jìn)一步地,所述邏輯分組長度確定單元按照下述公式確定所述邏輯分組長度:
其中,l表示所述邏輯分組長度,nodenum表示所述節(jié)點(diǎn)總數(shù),m表示所述單文件分配節(jié)點(diǎn)數(shù),
進(jìn)一步地,所述物理分組確定單元按照下述公式確定所述物理分組中的各個(gè)節(jié)點(diǎn):
si=(lstart+li)%nodenum
其中,si表示所述物理分組中第i個(gè)節(jié)點(diǎn)在所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)編號(hào),lstart表示所述邏輯起始點(diǎn)在所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)編號(hào),li表示第i個(gè)偏移節(jié)點(diǎn)在所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)編號(hào),nodenum表示所述節(jié)點(diǎn)總數(shù),%表示取余運(yùn)算。
進(jìn)一步地,所述初始化信息中還包括文件副本個(gè)數(shù),并且所述文件副本個(gè)數(shù)為大于或者等于2的整數(shù);相應(yīng)地,所述裝置還包括:
物理子分組劃分單元,用于將所述物理分組繼續(xù)劃分為與所述文件副本個(gè)數(shù)相匹配的物理子分組,并分別將各個(gè)文件副本存儲(chǔ)至相應(yīng)的物理子分組中。
由上可見,本申請(qǐng)?jiān)诜植际酱鎯?chǔ)系統(tǒng)中寫入目標(biāo)文件時(shí),可以將目標(biāo)文件劃分為多個(gè)切片,然后通過設(shè)置邏輯組合物理分組的方法,能夠保證寫入數(shù)據(jù)時(shí)在各個(gè)節(jié)點(diǎn)中的均衡性。此外,在確定邏輯組和物理分組時(shí),采用的都是極其簡單的運(yùn)算方法,從而有效地減少了系統(tǒng)的運(yùn)算量。由于系統(tǒng)的運(yùn)算量減小,從而保證系統(tǒng)能夠避免處于高負(fù)載的狀態(tài),從而也提高了系統(tǒng)的可靠性。
附圖說明
圖1是本申請(qǐng)中分布式存儲(chǔ)系統(tǒng)中數(shù)據(jù)分布的方法流程圖;
圖2是本申請(qǐng)中目標(biāo)文件的寫入示意圖;
圖3是本申請(qǐng)中分布式存儲(chǔ)系統(tǒng)中數(shù)據(jù)分布的裝置功能模塊圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本申請(qǐng)中的技術(shù)方案,下面將結(jié)合本申請(qǐng)實(shí)施方式中的附圖,對(duì)本申請(qǐng)實(shí)施方式中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施方式僅僅是本申請(qǐng)一部分實(shí)施方式,而不是全部的實(shí)施方式。基于本申請(qǐng)中的實(shí)施方式,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施方式,都應(yīng)當(dāng)屬于本申請(qǐng)保護(hù)的范圍。
請(qǐng)參閱圖1,本申請(qǐng)?zhí)峁┮环N分布式存儲(chǔ)系統(tǒng)中數(shù)據(jù)分布的方法,所述方法包括:
s1:當(dāng)所述分布式存儲(chǔ)系統(tǒng)初始化時(shí),加載初始化信息;其中,所述初始化信息包括所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)總數(shù)、單文件分配節(jié)點(diǎn)數(shù)以及文件塊尺寸;
s2:當(dāng)在所述分布式存儲(chǔ)系統(tǒng)中寫入目標(biāo)文件時(shí),根據(jù)所述目標(biāo)文件的尺寸以及所述文件塊尺寸,將所述目標(biāo)文件劃分為多個(gè)切片;
s3:在所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)中確定邏輯起始點(diǎn),并根據(jù)所述節(jié)點(diǎn)總數(shù)和所述單文件分配節(jié)點(diǎn)數(shù),確定邏輯分組長度;
s4:將所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)按照邏輯分組長度劃分為多個(gè)邏輯組,并在各個(gè)邏輯組中分別選取一個(gè)偏移節(jié)點(diǎn);
s5:基于所述邏輯起始點(diǎn)、各個(gè)偏移節(jié)點(diǎn)以及所述節(jié)點(diǎn)總數(shù),確定物理分組;其中,所述物理分組中的節(jié)點(diǎn)的數(shù)量與所述偏移節(jié)點(diǎn)的數(shù)量相同;
s6:將根據(jù)所述目標(biāo)文件劃分得到的所述多個(gè)切片依次存放于所述物理分組內(nèi)的各個(gè)節(jié)點(diǎn)中。
在本實(shí)施方式中,按照下述公式將所述目標(biāo)文件劃分為多個(gè)切片:
其中,n表示切片的數(shù)量,k表示所述目標(biāo)文件的尺寸,blocksize表示所述文件塊尺寸。
在本實(shí)施方式中,所述邏輯分組長度按照下述公式確定:
其中,l表示所述邏輯分組長度,nodenum表示所述節(jié)點(diǎn)總數(shù),m表示所述單文件分配節(jié)點(diǎn)數(shù),
在本實(shí)施方式中,所述物理分組中的各個(gè)節(jié)點(diǎn)按照下述公式確定:
si=(lstart+li)%nodenum
其中,si表示所述物理分組中第i個(gè)節(jié)點(diǎn)在所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)編號(hào),lstart表示所述邏輯起始點(diǎn)在所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)編號(hào),li表示第i個(gè)偏移節(jié)點(diǎn)在所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)編號(hào),nodenum表示所述節(jié)點(diǎn)總數(shù),%表示取余運(yùn)算。
在本實(shí)施方式中,所述初始化信息中還包括文件副本個(gè)數(shù),并且所述文件副本個(gè)數(shù)為大于或者等于2的整數(shù);相應(yīng)地,在確定物理分組之后,所述方法還包括:
將所述物理分組繼續(xù)劃分為與所述文件副本個(gè)數(shù)相匹配的物理子分組,并分別將各個(gè)文件副本存儲(chǔ)至相應(yīng)的物理子分組中。
具體地,請(qǐng)結(jié)合圖2,在單副本的場(chǎng)景中可以包括以下步驟。
步驟101:在該存儲(chǔ)系統(tǒng)中有13個(gè)存儲(chǔ)節(jié)點(diǎn),節(jié)點(diǎn)編號(hào)為0-12,單文件分配節(jié)點(diǎn)數(shù)為4,塊尺寸為1mb。
步驟102:當(dāng)寫入一個(gè)尺寸為7mb的文件時(shí),將該文件切分為7個(gè)切片。
步驟103:在13個(gè)節(jié)點(diǎn)中使用隨機(jī)函數(shù),選取編號(hào)為5的節(jié)點(diǎn)為邏輯起始值。
步驟104:將13個(gè)節(jié)點(diǎn)分成4個(gè)邏輯組,其中邏輯組1包含節(jié)點(diǎn)0、1、2;邏輯組2包含節(jié)點(diǎn)3、4、5;邏輯組3包含節(jié)點(diǎn)6、7、8;邏輯組4包含節(jié)點(diǎn)9、10、11、12。
步驟105:從4個(gè)邏輯組中使用隨機(jī)函數(shù),分別選取1、5、8、10組成邏輯偏移組。
步驟106:計(jì)算物理分組:第一個(gè)節(jié)點(diǎn)為(5+1)%13=6,第二個(gè)節(jié)點(diǎn)為(5+5)%13=10,第三個(gè)節(jié)點(diǎn)為(5+8)%13=0,第四個(gè)節(jié)點(diǎn)為(5+10)%13=2。
步驟107:將該文件的7個(gè)切片存儲(chǔ)到物理分組(6、10、0、2)的節(jié)點(diǎn)中:第1個(gè)切片存儲(chǔ)到編號(hào)為6的節(jié)點(diǎn)中,第2個(gè)切片存儲(chǔ)到編號(hào)為10的節(jié)點(diǎn)中,第3個(gè)切片存儲(chǔ)到編號(hào)為0的節(jié)點(diǎn)中,第4個(gè)切片存儲(chǔ)到編號(hào)為2的節(jié)點(diǎn)中,第5個(gè)切片存儲(chǔ)到編號(hào)為6的節(jié)點(diǎn)中,第6個(gè)切片存儲(chǔ)到編號(hào)為10的節(jié)點(diǎn)中,第7個(gè)切片存儲(chǔ)到編號(hào)為0的節(jié)點(diǎn)中。
在另一個(gè)場(chǎng)景中,一個(gè)文件可以存在多個(gè)副本,在這種情況下,可以按照以下步驟實(shí)現(xiàn):
步驟201:在該存儲(chǔ)系統(tǒng)中有121個(gè)存儲(chǔ)節(jié)點(diǎn),節(jié)點(diǎn)編號(hào)為0-120,副本個(gè)數(shù)為4,單文件分配節(jié)點(diǎn)數(shù)為20,塊尺寸為128kb。
步驟202:當(dāng)寫入一個(gè)尺寸為1mb的文件時(shí),將該文件切分為8個(gè)切片。
步驟203:在121個(gè)節(jié)點(diǎn)中隨機(jī)選取99,作為邏輯起始編號(hào)。
步驟204:將121個(gè)節(jié)點(diǎn)分成20個(gè)邏輯組,其中邏輯組1包含節(jié)點(diǎn)0-5;邏輯組2包含節(jié)點(diǎn)6-11;以此類推,邏輯組19包含節(jié)點(diǎn)108-113;邏輯組20包含114-121。
步驟205:在20個(gè)邏輯組中分別使用隨機(jī)函數(shù),選取4、7、16、22、26、30、39、46、52、56、64、67、77、80、89、93、100、105、112、119組成邏輯偏移組。
步驟206:計(jì)算物理分組:104、107、113、120、3、9、16、25、28、35、43、45、55、56、65、72、79、83、89、94。
步驟207:將第1副本的8個(gè)切片存儲(chǔ)到物理分組一(104、107、113、120、3):第1個(gè)切片存儲(chǔ)到編號(hào)為104的節(jié)點(diǎn)中,第2個(gè)切片存儲(chǔ)到編號(hào)為107的節(jié)點(diǎn)中,第3個(gè)切片存儲(chǔ)到編號(hào)為113的節(jié)點(diǎn)中,第4個(gè)切片存儲(chǔ)到編號(hào)為120的節(jié)點(diǎn)中,第5個(gè)切片存儲(chǔ)到編號(hào)為3的節(jié)點(diǎn)中,第6個(gè)切片存儲(chǔ)到編號(hào)為104的節(jié)點(diǎn)中,第7個(gè)切片存儲(chǔ)到編號(hào)為107的節(jié)點(diǎn)中,第8個(gè)切片存儲(chǔ)到編號(hào)為113的節(jié)點(diǎn)中。
步驟208:將第2副本的8個(gè)切片存儲(chǔ)到物理分組二(9、16、25、28、35):第1個(gè)切片存儲(chǔ)到編號(hào)為9的節(jié)點(diǎn)中,第2個(gè)切片存儲(chǔ)到編號(hào)為16的節(jié)點(diǎn)中,第3個(gè)切片存儲(chǔ)到編號(hào)為25的節(jié)點(diǎn)中,第4個(gè)切片存儲(chǔ)到編號(hào)為28的節(jié)點(diǎn)中,第5個(gè)切片存儲(chǔ)到編號(hào)為35的節(jié)點(diǎn)中,第6個(gè)切片存儲(chǔ)到編號(hào)為9的節(jié)點(diǎn)中,第7個(gè)切片存儲(chǔ)到編號(hào)為16的節(jié)點(diǎn)中,第8個(gè)切片存儲(chǔ)到編號(hào)為25的節(jié)點(diǎn)中。
步驟209:將第3副本的8個(gè)切片存儲(chǔ)到物理分組三(43、45、55、56、65):第1個(gè)切片存儲(chǔ)到編號(hào)為43的節(jié)點(diǎn)中,第2個(gè)切片存儲(chǔ)到編號(hào)為45的節(jié)點(diǎn)中,第3個(gè)切片存儲(chǔ)到編號(hào)為55的節(jié)點(diǎn)中,第4個(gè)切片存儲(chǔ)到編號(hào)為56的節(jié)點(diǎn)中,第5個(gè)切片存儲(chǔ)到編號(hào)為65的節(jié)點(diǎn)中,第6個(gè)切片存儲(chǔ)到編號(hào)為43的節(jié)點(diǎn)中,第7個(gè)切片存儲(chǔ)到編號(hào)為45的節(jié)點(diǎn)中,第8個(gè)切片存儲(chǔ)到編號(hào)為55的節(jié)點(diǎn)中。
步驟210:將第4副本的8個(gè)切片存儲(chǔ)到物理分組四(72、79、83、89、94):第1個(gè)切片存儲(chǔ)到編號(hào)為72的節(jié)點(diǎn)中,第2個(gè)切片存儲(chǔ)到編號(hào)為79的節(jié)點(diǎn)中,第3個(gè)切片存儲(chǔ)到編號(hào)為83的節(jié)點(diǎn)中,第4個(gè)切片存儲(chǔ)到編號(hào)為89的節(jié)點(diǎn)中,第5個(gè)切片存儲(chǔ)到編號(hào)為94的節(jié)點(diǎn)中,第6個(gè)切片存儲(chǔ)到編號(hào)為72的節(jié)點(diǎn)中,第7個(gè)切片存儲(chǔ)到編號(hào)為79的節(jié)點(diǎn)中,第8個(gè)切片存儲(chǔ)到編號(hào)為94的節(jié)點(diǎn)中。
請(qǐng)參閱圖3,本申請(qǐng)還提供一種分布式存儲(chǔ)系統(tǒng)中數(shù)據(jù)分布的裝置,所述裝置包括:
初始化信息加載單元100,用于當(dāng)所述分布式存儲(chǔ)系統(tǒng)初始化時(shí),加載初始化信息;其中,所述初始化信息包括所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)總數(shù)、單文件分配節(jié)點(diǎn)數(shù)以及文件塊尺寸;
切片劃分單元200,用于當(dāng)在所述分布式存儲(chǔ)系統(tǒng)中寫入目標(biāo)文件時(shí),根據(jù)所述目標(biāo)文件的尺寸以及所述文件塊尺寸,將所述目標(biāo)文件劃分為多個(gè)切片;
邏輯分組長度確定單元300,用于在所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)中確定邏輯起始點(diǎn),并根據(jù)所述節(jié)點(diǎn)總數(shù)和所述單文件分配節(jié)點(diǎn)數(shù),確定邏輯分組長度;
偏移節(jié)點(diǎn)確定單元400,用于將所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)按照邏輯分組長度劃分為多個(gè)邏輯組,并在各個(gè)邏輯組中分別選取一個(gè)偏移節(jié)點(diǎn);
物理分組確定單元500,用于基于所述邏輯起始點(diǎn)、各個(gè)偏移節(jié)點(diǎn)以及所述節(jié)點(diǎn)總數(shù),確定物理分組;其中,所述物理分組中的節(jié)點(diǎn)的數(shù)量與所述偏移節(jié)點(diǎn)的數(shù)量相同;
切片存放單元600,用于將根據(jù)所述目標(biāo)文件劃分得到的所述多個(gè)切片依次存放于所述物理分組內(nèi)的各個(gè)節(jié)點(diǎn)中。
在本實(shí)施方式中,所述切片劃分單元按照下述公式將所述目標(biāo)文件劃分為多個(gè)切片:
其中,n表示切片的數(shù)量,k表示所述目標(biāo)文件的尺寸,blocksize表示所述文件塊尺寸。
在本實(shí)施方式中,所述邏輯分組長度確定單元按照下述公式確定所述邏輯分組長度:
其中,l表示所述邏輯分組長度,nodenum表示所述節(jié)點(diǎn)總數(shù),m表示所述單文件分配節(jié)點(diǎn)數(shù),
在本實(shí)施方式中,所述物理分組確定單元按照下述公式確定所述物理分組中的各個(gè)節(jié)點(diǎn):
si=(lstart+li)%nodenum
其中,si表示所述物理分組中第i個(gè)節(jié)點(diǎn)在所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)編號(hào),lstart表示所述邏輯起始點(diǎn)在所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)編號(hào),li表示第i個(gè)偏移節(jié)點(diǎn)在所述分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)編號(hào),nodenum表示所述節(jié)點(diǎn)總數(shù),%表示取余運(yùn)算。
在本實(shí)施方式中,所述初始化信息中還包括文件副本個(gè)數(shù),并且所述文件副本個(gè)數(shù)為大于或者等于2的整數(shù);相應(yīng)地,所述裝置還包括:
物理子分組劃分單元,用于將所述物理分組繼續(xù)劃分為與所述文件副本個(gè)數(shù)相匹配的物理子分組,并分別將各個(gè)文件副本存儲(chǔ)至相應(yīng)的物理子分組中。
由上可見,本申請(qǐng)?jiān)诜植际酱鎯?chǔ)系統(tǒng)中寫入目標(biāo)文件時(shí),可以將目標(biāo)文件劃分為多個(gè)切片,然后通過設(shè)置邏輯組合物理分組的方法,能夠保證寫入數(shù)據(jù)時(shí)在各個(gè)節(jié)點(diǎn)中的均衡性。此外,在確定邏輯組和物理分組時(shí),采用的都是極其簡單的運(yùn)算方法,從而有效地減少了系統(tǒng)的運(yùn)算量。由于系統(tǒng)的運(yùn)算量減小,從而保證系統(tǒng)能夠避免處于高負(fù)載的狀態(tài),從而也提高了系統(tǒng)的可靠性。
上面對(duì)本申請(qǐng)的各種實(shí)施方式的描述以描述的目的提供給本領(lǐng)域技術(shù)人員。其不旨在是窮舉的、或者不旨在將本發(fā)明限制于單個(gè)公開的實(shí)施方式。如上所述,本申請(qǐng)的各種替代和變化對(duì)于上述技術(shù)所屬領(lǐng)域技術(shù)人員而言將是顯而易見的。因此,雖然已經(jīng)具體討論了一些另選的實(shí)施方式,但是其它實(shí)施方式將是顯而易見的,或者本領(lǐng)域技術(shù)人員相對(duì)容易得出。本申請(qǐng)旨在包括在此已經(jīng)討論過的本發(fā)明的所有替代、修改、和變化,以及落在上述申請(qǐng)的精神和范圍內(nèi)的其它實(shí)施方式。
本說明書中的各個(gè)實(shí)施方式均采用遞進(jìn)的方式描述,各個(gè)實(shí)施方式之間相同相似的部分互相參見即可,每個(gè)實(shí)施方式重點(diǎn)說明的都是與其他實(shí)施方式的不同之處。
雖然通過實(shí)施方式描繪了本申請(qǐng),本領(lǐng)域普通技術(shù)人員知道,本申請(qǐng)有許多變形和變化而不脫離本申請(qǐng)的精神,希望所附的權(quán)利要求包括這些變形和變化而不脫離本申請(qǐng)的精神。