本申請(qǐng)涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種用于在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的技術(shù)。
背景技術(shù):
隨著互聯(lián)網(wǎng)的普及,數(shù)據(jù)業(yè)務(wù)逐步增加,因此對(duì)分布式存儲(chǔ)系統(tǒng)的要求亦逐步提高,尤其是對(duì)文件寫(xiě)入的吞吐量有一定的要求,在當(dāng)前分布式存儲(chǔ)系統(tǒng)中,以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,chunksever即數(shù)據(jù)管理模塊本文亦稱之為數(shù)據(jù)塊服務(wù)器或塊服務(wù)器都需要服務(wù)很多文件的讀寫(xiě)請(qǐng)求,而每個(gè)chunkserver所擁有的網(wǎng)絡(luò)和磁盤(pán)帶寬是有限的,所以平均每個(gè)文件所能分到的寫(xiě)帶寬有限,這也就限制了每個(gè)文件寫(xiě)入的吞吐量,所以現(xiàn)有技術(shù)會(huì)采用同時(shí)寫(xiě)多路文件的方式來(lái)獲得所需的寫(xiě)入帶寬,從而提高文件寫(xiě)入吞吐量。
然而,現(xiàn)有技術(shù)會(huì)降低系統(tǒng)所能同時(shí)服務(wù)的用戶數(shù)量,以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,多路文件寫(xiě)入會(huì)增加master也就是命名空間管理模塊本文亦稱之為元數(shù)據(jù)管理設(shè)備端的內(nèi)存負(fù)擔(dān)?,F(xiàn)有技術(shù)在多路文件寫(xiě)入時(shí)還容易產(chǎn)生熱點(diǎn),例如,數(shù)據(jù)塊服務(wù)器chunksever同時(shí)接到多個(gè)文件的寫(xiě)入請(qǐng)求,從而產(chǎn)生寫(xiě)入熱點(diǎn),進(jìn)而降低了每路文件分到的帶寬資源,也就無(wú)法達(dá)到提高寫(xiě)入吞吐量的目的。此外,當(dāng)現(xiàn)有技術(shù)通過(guò)多路文件來(lái)提高寫(xiě)入吞吐量的時(shí)候,用戶需要為管理多路文件付出額外的成本,特別是當(dāng)寫(xiě)入吞吐量在不斷變化的時(shí)候,需要相應(yīng)的調(diào)整多路文件的數(shù)量。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)的一個(gè)目的是提供一種用于在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的方法與設(shè)備,用以解決分布式存儲(chǔ)系統(tǒng)中單文件寫(xiě)入吞吐量低下的問(wèn)題。
根據(jù)本申請(qǐng)的一個(gè)方面,本申請(qǐng)?zhí)峁┝艘环N在元數(shù)據(jù)管理設(shè)備端用于在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的方法,該方法解決了分布式存儲(chǔ)系統(tǒng)中單文件寫(xiě)入吞吐量低下的問(wèn)題,該方法包括:
獲取用戶設(shè)備提交的關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求;
根據(jù)所述目標(biāo)文件對(duì)應(yīng)的可寫(xiě)塊數(shù)量閾值確定所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊;
將所述多個(gè)可寫(xiě)數(shù)據(jù)塊返回至所述用戶設(shè)備。
根據(jù)本申請(qǐng)的另一個(gè)方面,本申請(qǐng)?zhí)峁┝艘环N在用戶設(shè)備端用于在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的方法,該方法解決了分布式存儲(chǔ)系統(tǒng)中單文件寫(xiě)入吞吐量低下的問(wèn)題,該方法包括:
向元數(shù)據(jù)管理設(shè)備提交關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求;
接收所述元數(shù)據(jù)管理設(shè)備基于所述塊信息請(qǐng)求返回的、所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊;
根據(jù)關(guān)于所述目標(biāo)文件的寫(xiě)入請(qǐng)求對(duì)所述多個(gè)可寫(xiě)數(shù)據(jù)塊中之一執(zhí)行文件寫(xiě)入。
根據(jù)本申請(qǐng)的又一個(gè)方面,本申請(qǐng)?zhí)峁┝艘环N用于在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的元數(shù)據(jù)管理設(shè)備端設(shè)備,該設(shè)備解決了分布式存儲(chǔ)系統(tǒng)中單文件寫(xiě)入吞吐量低下的問(wèn)題,該設(shè)備包括:
塊信息請(qǐng)求獲取裝置,用于獲取用戶設(shè)備提交的關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求;
可寫(xiě)數(shù)據(jù)塊確定裝置,用于根據(jù)所述目標(biāo)文件對(duì)應(yīng)的可寫(xiě)塊數(shù)量閾值確定所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊;
塊信息反饋裝置,用于將所述多個(gè)可寫(xiě)數(shù)據(jù)塊返回至所述用戶設(shè)備。
根據(jù)本申請(qǐng)的再一個(gè)方面,本申請(qǐng)?zhí)峁┝艘环N用于在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的用戶設(shè)備端設(shè)備,該設(shè)備解決了分布式存儲(chǔ)系統(tǒng)中單文件寫(xiě)入吞吐量低下的問(wèn)題,該設(shè)備包括:
塊信息請(qǐng)求發(fā)送裝置,用于向元數(shù)據(jù)管理設(shè)備提交關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求;
塊信息接受裝置,用于接收所述元數(shù)據(jù)管理設(shè)備基于所述塊信息請(qǐng)求返回的、所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊;
數(shù)據(jù)塊寫(xiě)入執(zhí)行裝置,用于根據(jù)關(guān)于所述目標(biāo)文件的寫(xiě)入請(qǐng)求對(duì)所述多個(gè)可寫(xiě)數(shù)據(jù)塊中之一執(zhí)行文件寫(xiě)入。
根據(jù)本申請(qǐng)的又一個(gè)方面,本申請(qǐng)?zhí)峁┝艘环N用于在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的元數(shù)據(jù)管理設(shè)備端設(shè)備,其中,該設(shè)備包括:
處理器;
以及被安排成存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的存儲(chǔ)器,所述可執(zhí)行指令在被執(zhí)行時(shí)使所述處理器:
獲取用戶設(shè)備提交的關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求;
根據(jù)所述目標(biāo)文件對(duì)應(yīng)的可寫(xiě)塊數(shù)量閾值確定所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊;
將所述多個(gè)可寫(xiě)數(shù)據(jù)塊返回至所述用戶設(shè)備。
根據(jù)本申請(qǐng)的又一個(gè)方面,本申請(qǐng)?zhí)峁┝艘环N用于在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的用戶設(shè)備端設(shè)備,其中,該設(shè)備包括:
處理器;
以及被安排成存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的存儲(chǔ)器,所述可執(zhí)行指令在被執(zhí)行時(shí)使所述處理器:
向元數(shù)據(jù)管理設(shè)備提交關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求;
接收所述元數(shù)據(jù)管理設(shè)備基于所述塊信息請(qǐng)求返回的、所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊;
根據(jù)關(guān)于所述目標(biāo)文件的寫(xiě)入請(qǐng)求對(duì)所述多個(gè)可寫(xiě)數(shù)據(jù)塊中之一執(zhí)行文件寫(xiě)入。
根據(jù)本申請(qǐng)的再一方面,還提供了一種實(shí)現(xiàn)在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的系統(tǒng),解決了分布式存儲(chǔ)系統(tǒng)中單文件寫(xiě)入吞吐量低下的問(wèn)題,其中,該系統(tǒng)包括如前所述根據(jù)本發(fā)明一個(gè)方面的一種用于在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的元數(shù)據(jù)管理設(shè)備端設(shè)備,以及如前所述根據(jù)本發(fā)明另一個(gè)方面的一種用于在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的用戶設(shè)備端設(shè)備。
與現(xiàn)有技術(shù)相比,本申請(qǐng)向元數(shù)據(jù)管理設(shè)備提交關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求,接收所述元數(shù)據(jù)管理設(shè)備基于所述塊信息請(qǐng)求返回的、所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊,并根據(jù)關(guān)于所述目標(biāo)文件的寫(xiě)入請(qǐng)求對(duì)所述多個(gè)可寫(xiě)數(shù)據(jù)塊中之一執(zhí)行文件寫(xiě)入,從而允許單個(gè)文件可同時(shí)寫(xiě)入多個(gè)數(shù)據(jù)塊,使得單文件寫(xiě)入吞吐量增加,消除寫(xiě)入熱點(diǎn)發(fā)生的可能性,減輕用戶管理負(fù)擔(dān)。
附圖說(shuō)明
通過(guò)閱讀參照以下附圖所作的對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本申請(qǐng)的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:
圖1示出根據(jù)本申請(qǐng)一個(gè)方面的元數(shù)據(jù)管理設(shè)備端以及用戶設(shè)備端配合實(shí)現(xiàn)的一種實(shí)現(xiàn)在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的方法流程圖;
圖2示出根據(jù)本申請(qǐng)一個(gè)優(yōu)選實(shí)例的一種實(shí)現(xiàn)在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的方法中的步驟s22流程圖;
圖3示出根據(jù)本申請(qǐng)一個(gè)優(yōu)選實(shí)例的一種實(shí)現(xiàn)在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的方法中的步驟s13流程圖;
圖4示出根據(jù)本申請(qǐng)另一個(gè)方面的元數(shù)據(jù)管理設(shè)備端以及用戶設(shè)備端配合實(shí)現(xiàn)的一種實(shí)現(xiàn)在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的方法中修改可寫(xiě)塊數(shù)量閾值的流程圖;
圖5示出根據(jù)本申請(qǐng)另一個(gè)方面的元數(shù)據(jù)管理設(shè)備端設(shè)備以及用戶設(shè)備端設(shè)備配合實(shí)現(xiàn)的一種實(shí)現(xiàn)在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的設(shè)備示意圖;
圖6示出根據(jù)本申請(qǐng)另一個(gè)優(yōu)選實(shí)例的一種實(shí)現(xiàn)在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的設(shè)備中可寫(xiě)數(shù)據(jù)塊確定裝置示意圖。
圖7示出根據(jù)本申請(qǐng)另一個(gè)優(yōu)選實(shí)例的一種實(shí)現(xiàn)在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的設(shè)備中數(shù)據(jù)塊寫(xiě)入執(zhí)行裝置示意圖。
圖8示出根據(jù)本申請(qǐng)另一個(gè)方面的元數(shù)據(jù)管理設(shè)備端設(shè)備以及用戶設(shè)備端設(shè)備配合實(shí)現(xiàn)的一種實(shí)現(xiàn)在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的設(shè)備中實(shí)現(xiàn)修改可寫(xiě)塊數(shù)量閾值功能的示意圖;
附圖中相同或相似的附圖標(biāo)記代表相同或相似的部件。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)描述。
在本申請(qǐng)一個(gè)典型的配置中,終端、服務(wù)網(wǎng)絡(luò)的設(shè)備和可信方均包括一個(gè)或多個(gè)處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(rom)或閃存(flashram)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、其他類型的隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤(pán)只讀存儲(chǔ)器(cd-rom)、數(shù)字多功能光盤(pán)(dvd)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁盤(pán)存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
圖1示出根據(jù)本申請(qǐng)一個(gè)方面的元數(shù)據(jù)管理設(shè)備端以及用戶設(shè)備端配合實(shí)現(xiàn)的一種實(shí)現(xiàn)在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的方法流程圖。其中,所述用戶設(shè)備端包括步驟s11、步驟s12、步驟s13。所述元數(shù)據(jù)管理設(shè)備端包括步驟s21、步驟s22、步驟s23將所述多個(gè)可寫(xiě)數(shù)據(jù)塊返回至所述用戶設(shè)備。
其中,在步驟s11中用戶設(shè)備端向元數(shù)據(jù)管理設(shè)備提交關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求;在步驟s21中元數(shù)據(jù)管理設(shè)備端獲取用戶設(shè)備提交的關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求;在步驟s22中元數(shù)據(jù)管理設(shè)備端根據(jù)所述目標(biāo)文件對(duì)應(yīng)的可寫(xiě)塊數(shù)量閾值確定所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊;在步驟s23中元數(shù)據(jù)管理設(shè)備端將所述多個(gè)可寫(xiě)數(shù)據(jù)塊返回至所述用戶設(shè)備;在步驟s12中用戶設(shè)備端接收所述元數(shù)據(jù)管理設(shè)備基于所述塊信息請(qǐng)求返回的、所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊;在步驟s13中用戶設(shè)備端根據(jù)關(guān)于所述目標(biāo)文件的寫(xiě)入請(qǐng)求對(duì)所述多個(gè)可寫(xiě)數(shù)據(jù)塊中之一執(zhí)行文件寫(xiě)入。
具體地,在步驟s11中用戶設(shè)備端向元數(shù)據(jù)管理設(shè)備提交關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求;在步驟s21中元數(shù)據(jù)管理設(shè)備端獲取用戶設(shè)備提交的關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求。其中,所述用戶設(shè)備端是指分布式存儲(chǔ)系統(tǒng)中用于為用戶提供各種接口的端口模塊,以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,所述用戶設(shè)備端即為客戶端庫(kù)client。所述元數(shù)據(jù)管理設(shè)備端是指分布式存儲(chǔ)系統(tǒng)中管理分布式存儲(chǔ)系統(tǒng)中元數(shù)據(jù)的模塊,以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,所述元數(shù)據(jù)管理設(shè)備端即為master也就是命名空間管理模塊。所述目標(biāo)文件即為需要執(zhí)行寫(xiě)入的文件,通常在分布式存儲(chǔ)系統(tǒng)中會(huì)預(yù)先創(chuàng)建好但不限于此,所有需要執(zhí)行寫(xiě)入的文件均可成為目標(biāo)文件。所述數(shù)據(jù)塊是指一段用戶邏輯數(shù)據(jù),以字節(jié)流的形式存儲(chǔ),用于目標(biāo)文件的數(shù)據(jù)寫(xiě)入,以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,數(shù)據(jù)塊即為該系統(tǒng)中所稱的chunk。所述關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息是指可以用于執(zhí)行目標(biāo)文件寫(xiě)入的當(dāng)前可寫(xiě)的數(shù)據(jù)塊及其位置,數(shù)量等信息。所述提交和獲取請(qǐng)求的方法包括但不限于通過(guò)分布式存儲(chǔ)系統(tǒng)自有接口進(jìn)行,以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,client啟動(dòng),向master發(fā)送獲取目標(biāo)文件f所有可以寫(xiě)的chunk的信息的請(qǐng)求。通過(guò)上述動(dòng)作,可以使得元數(shù)據(jù)管理設(shè)備端發(fā)起對(duì)目標(biāo)文件可寫(xiě)數(shù)據(jù)塊的塊信息的查找,從而使得文件寫(xiě)入流程啟動(dòng)。
本領(lǐng)域技術(shù)人員應(yīng)能理解上述發(fā)送和獲取關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的發(fā)送和獲取關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
接著,在步驟s22中元數(shù)據(jù)管理設(shè)備端根據(jù)所述目標(biāo)文件對(duì)應(yīng)的可寫(xiě)塊數(shù)量閾值確定所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊。即根據(jù)可寫(xiě)塊數(shù)量閾值將與所述閾值比較的符合預(yù)置數(shù)目的可寫(xiě)數(shù)據(jù)塊分配給所述目標(biāo)文件進(jìn)行寫(xiě)入,例如,所述可寫(xiě)塊數(shù)量閾值為m,則以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,元數(shù)據(jù)塊管理設(shè)備端master收到請(qǐng)求后在內(nèi)存中找到目標(biāo)文件f所有可以寫(xiě)的chunk的信息t和可以寫(xiě)的chunk的數(shù)量m,若t大于m則確定這t個(gè)可寫(xiě)數(shù)據(jù)塊chunk為目標(biāo)文件f所對(duì)應(yīng)的可寫(xiě)數(shù)據(jù)塊。所述可寫(xiě)塊數(shù)量閾值是指所設(shè)置的控制可寫(xiě)數(shù)據(jù)塊數(shù)量的閾值,在此,塊即指代數(shù)據(jù)塊,此指代上下文均通用,所述可寫(xiě)塊數(shù)量閾值可根據(jù)寫(xiě)入吞吐量或速率的要求進(jìn)行設(shè)置,本閾值的存在使得用戶不需要自己管理多路寫(xiě)入的文件,只需要根據(jù)寫(xiě)入的需求調(diào)整可寫(xiě)數(shù)據(jù)塊的數(shù)量,此外,所述可寫(xiě)塊數(shù)量閾值亦可以根據(jù)系統(tǒng)的要求設(shè)置系統(tǒng)自行調(diào)整,或進(jìn)行初始設(shè)定。所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊是指每個(gè)寫(xiě)入文件可以有一個(gè)以上的可寫(xiě)數(shù)據(jù)塊,在典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs中,現(xiàn)有技術(shù)僅支持每個(gè)目標(biāo)文件在元數(shù)據(jù)塊管理設(shè)備端master有一個(gè)可寫(xiě)數(shù)據(jù)塊,在本申請(qǐng)的實(shí)施例中可以通過(guò)對(duì)用戶設(shè)備端以及元數(shù)據(jù)管理設(shè)備端的接口間的協(xié)議進(jìn)行設(shè)置,使得每個(gè)目標(biāo)文件在元數(shù)據(jù)塊管理設(shè)備端有多個(gè)可寫(xiě)數(shù)據(jù)塊,從而能夠達(dá)到單文件寫(xiě)入時(shí)支持多個(gè)數(shù)據(jù)塊同時(shí)寫(xiě)入的目的,進(jìn)而使得單文件寫(xiě)入的效率提高。
其中,在本申請(qǐng)的實(shí)施例中通過(guò)對(duì)用戶設(shè)備端以及元數(shù)據(jù)管理設(shè)備端的接口間的協(xié)議進(jìn)行設(shè)置的方法,以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,在元數(shù)據(jù)塊管理設(shè)備端master中設(shè)置如下:在面向用戶設(shè)備端client的服務(wù)和協(xié)議方面,對(duì)于獲取文件可寫(xiě)數(shù)據(jù)塊chunk信息的服務(wù):擴(kuò)展現(xiàn)有協(xié)議,增加對(duì)可寫(xiě)的數(shù)據(jù)塊chunk有多個(gè)的支持;對(duì)于可寫(xiě)數(shù)據(jù)塊chunk數(shù)量的服務(wù):增加設(shè)置文件可寫(xiě)數(shù)據(jù)塊chunk數(shù)量的協(xié)議和服務(wù),增加獲取文件可寫(xiě)數(shù)據(jù)塊chunk數(shù)量的協(xié)議和服務(wù)。在用戶設(shè)備端client中設(shè)置如下:在面向元數(shù)據(jù)塊管理設(shè)備端master協(xié)議方面:對(duì)于獲取文件可寫(xiě)數(shù)據(jù)塊chunk信息的協(xié)議:擴(kuò)展現(xiàn)有協(xié)議,增加對(duì)可寫(xiě)的數(shù)據(jù)塊chunk有多個(gè)的支持;對(duì)于可寫(xiě)數(shù)據(jù)塊chunk數(shù)量的接口:增加設(shè)置文件可寫(xiě)數(shù)據(jù)塊chunk數(shù)量的協(xié)議,增加獲取文件可寫(xiě)數(shù)據(jù)塊chunk數(shù)量的協(xié)議;在對(duì)于在面向用戶的接口方面:對(duì)于可寫(xiě)數(shù)據(jù)塊chunk數(shù)量的接口:增加設(shè)置文件可寫(xiě)數(shù)據(jù)塊chunk數(shù)量的接口,增加獲取文件可寫(xiě)數(shù)據(jù)塊chunk數(shù)量的接口。以上設(shè)置使得每個(gè)目標(biāo)文件在元數(shù)據(jù)塊管理設(shè)備端有多個(gè)可寫(xiě)數(shù)據(jù)塊,從而能夠達(dá)到單文件寫(xiě)入時(shí)支持多個(gè)數(shù)據(jù)塊同時(shí)寫(xiě)入的目的,滿足用戶需求,同時(shí)在元數(shù)據(jù)塊管理設(shè)備端master只耗費(fèi)了單個(gè)文件的內(nèi)存,沒(méi)有降低集群服務(wù)用戶的數(shù)量。
本領(lǐng)域技術(shù)人員應(yīng)能理解上述對(duì)用戶設(shè)備端以及元數(shù)據(jù)管理設(shè)備端的接口間的協(xié)議進(jìn)行設(shè)置使得每個(gè)目標(biāo)文件在元數(shù)據(jù)塊管理設(shè)備端有多個(gè)可寫(xiě)數(shù)據(jù)塊的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的對(duì)用戶設(shè)備端以及元數(shù)據(jù)管理設(shè)備端的接口間的協(xié)議進(jìn)行設(shè)置使得每個(gè)目標(biāo)文件在元數(shù)據(jù)塊管理設(shè)備端有多個(gè)可寫(xiě)數(shù)據(jù)塊的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
接著,在步驟s23中元數(shù)據(jù)管理設(shè)備端將所述多個(gè)可寫(xiě)數(shù)據(jù)塊返回至所述用戶設(shè)備;在步驟s12中用戶設(shè)備端接收所述元數(shù)據(jù)管理設(shè)備基于所述塊信息請(qǐng)求返回的、所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊。即如上文所述確定所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊后將所述數(shù)據(jù)塊及其相關(guān)信息由元數(shù)據(jù)管理設(shè)備端返回至用戶設(shè)備端,以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,接上文舉例,元數(shù)據(jù)管理設(shè)備端master將目標(biāo)文件f所有可以寫(xiě)的數(shù)據(jù)塊chunk的數(shù)量t及其相關(guān)信息從內(nèi)存中找到并進(jìn)行反饋,反饋的方式包括但不限于通過(guò)分布式存儲(chǔ)系統(tǒng)自有接口進(jìn)行。
其中,所述元數(shù)據(jù)管理設(shè)備端內(nèi)存中的所述目標(biāo)文件對(duì)應(yīng)的可寫(xiě)數(shù)據(jù)塊的數(shù)量以及相關(guān)信息的獲取方式包括但不限于在獲取每個(gè)在分布式存儲(chǔ)系統(tǒng)中文件后,元數(shù)據(jù)管理設(shè)備端即存儲(chǔ)其所有正在寫(xiě)以及允許寫(xiě)的數(shù)據(jù)塊信息,以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,元數(shù)據(jù)塊管理設(shè)備端master在文件的元數(shù)據(jù)存儲(chǔ)方面:負(fù)責(zé)存儲(chǔ)每個(gè)文件當(dāng)前所有正在寫(xiě)的數(shù)據(jù)塊chunk信息,例如數(shù)據(jù)塊的副本位置;負(fù)責(zé)存儲(chǔ)每個(gè)文件當(dāng)前所允許的可寫(xiě)數(shù)據(jù)塊chunk的數(shù)量。以上信息在元數(shù)據(jù)塊管理設(shè)備端master端都需要進(jìn)行持久化的保存,宕機(jī)重啟后不能丟失,從而使得可以在用戶設(shè)備端需要目標(biāo)文件是可以及時(shí)查找到。
本領(lǐng)域技術(shù)人員應(yīng)能理解上述元數(shù)據(jù)管理設(shè)備端對(duì)每個(gè)文件數(shù)據(jù)塊存儲(chǔ)的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的元數(shù)據(jù)管理設(shè)備端對(duì)每個(gè)文件數(shù)據(jù)塊存儲(chǔ)的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
接著,在步驟s13中用戶設(shè)備端根據(jù)關(guān)于所述目標(biāo)文件的寫(xiě)入請(qǐng)求對(duì)所述多個(gè)可寫(xiě)數(shù)據(jù)塊中之一執(zhí)行文件寫(xiě)入。即因?yàn)樗瞿繕?biāo)文件有對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊,因此,在所述用戶設(shè)備端獲得所述可寫(xiě)數(shù)據(jù)塊相關(guān)信息后將所述多個(gè)可寫(xiě)數(shù)據(jù)塊進(jìn)行排序,或按照默認(rèn)順序依次在接受到目標(biāo)文件的寫(xiě)入請(qǐng)求后進(jìn)行寫(xiě)入。以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,用戶設(shè)備端client將所接到的目標(biāo)文件f所有的對(duì)應(yīng)的可寫(xiě)數(shù)據(jù)塊chunk之后,在按照默認(rèn)或設(shè)置的順序?qū)δ骋籧hunk進(jìn)行寫(xiě)入時(shí),尋找其相應(yīng)的數(shù)據(jù)塊服務(wù)器chunksever進(jìn)行相應(yīng)副本的寫(xiě)入。其中,chunksever的信息的獲取方式包括但不限于由元數(shù)據(jù)管理設(shè)備端master記錄當(dāng)前可寫(xiě)chunk所在的所有chunkserver,這部分信息以緩存的形式存在,不需要持久化,宕機(jī)重啟后可以根據(jù)之前所記錄的信息恢復(fù)出來(lái),也就是從所負(fù)責(zé)存儲(chǔ)的每個(gè)文件當(dāng)前所有正在寫(xiě)的數(shù)據(jù)塊chunk信息中進(jìn)行恢復(fù);用戶設(shè)備端client存儲(chǔ)文件當(dāng)前所有可寫(xiě)的chunk信息,這部分信息以緩存的形式存在,不需要持久化,宕機(jī)重啟后從master端重新獲取。
本領(lǐng)域技術(shù)人員應(yīng)能理解上述保存和獲取數(shù)據(jù)塊對(duì)應(yīng)數(shù)據(jù)塊服務(wù)器信息的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的保存和獲取數(shù)據(jù)塊對(duì)應(yīng)數(shù)據(jù)塊服務(wù)器信息的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
優(yōu)選地,所述方法還包括步驟s14(未示出),在步驟s14中用戶設(shè)備端當(dāng)所述多個(gè)可寫(xiě)數(shù)據(jù)塊中之一被寫(xiě)滿時(shí),向所述元數(shù)據(jù)管理設(shè)備重新提交關(guān)于所述目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求。是指在對(duì)目標(biāo)文件所對(duì)應(yīng)的數(shù)據(jù)塊進(jìn)行寫(xiě)入時(shí),若遇到所述數(shù)據(jù)塊寫(xiě)滿的情況,則需要向元數(shù)據(jù)管理設(shè)備重新提交獲取同樣目標(biāo)文件的可寫(xiě)數(shù)據(jù)及其相關(guān)信息的請(qǐng)求,此時(shí),如前文中實(shí)施例所述,將之前的步驟重新進(jìn)行一遍。以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,當(dāng)client發(fā)現(xiàn)某個(gè)chunk已經(jīng)寫(xiě)滿的時(shí)候,向master發(fā)送獲取文件f所有可以寫(xiě)的chunk的信息的請(qǐng)求,重新分配獲取可寫(xiě)chunk的數(shù)量,使得所述用戶設(shè)備端獲取新的目標(biāo)文件所對(duì)應(yīng)的可寫(xiě)數(shù)據(jù)塊,從而繼續(xù)進(jìn)行文件的寫(xiě)入。
圖2示出根據(jù)本申請(qǐng)一個(gè)優(yōu)選實(shí)例的一種實(shí)現(xiàn)在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的方法中的步驟s22流程圖。其中,所述步驟s22包括步驟s221、步驟s222、步驟s223。
其中,在步驟s221中元數(shù)據(jù)管理設(shè)備端確定所述目標(biāo)文件對(duì)應(yīng)的所有可寫(xiě)的數(shù)據(jù)塊;在步驟s222中元數(shù)據(jù)管理設(shè)備端若所述所有可寫(xiě)的數(shù)據(jù)塊的數(shù)量等于或大于所述目標(biāo)文件對(duì)應(yīng)的可寫(xiě)塊數(shù)量閾值,則將所述所有可寫(xiě)的數(shù)據(jù)塊作為所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊;否則,在步驟s223中元數(shù)據(jù)管理設(shè)備端為所述目標(biāo)文件分配其他可寫(xiě)的數(shù)據(jù)塊,并將所述其他可寫(xiě)的數(shù)據(jù)塊及所述所有可寫(xiě)的數(shù)據(jù)塊作為所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊,其中,所述多個(gè)可寫(xiě)數(shù)據(jù)塊的數(shù)量等于可寫(xiě)塊數(shù)量閾值。
具體地,在步驟s221中元數(shù)據(jù)管理設(shè)備端確定所述目標(biāo)文件對(duì)應(yīng)的所有可寫(xiě)的數(shù)據(jù)塊。是指確定所述目標(biāo)文件的所有可寫(xiě)數(shù)據(jù)塊信息,獲取的方法包括如上文所述從所述元數(shù)據(jù)管理設(shè)備端所存儲(chǔ)的元數(shù)據(jù)信息中的每個(gè)文件當(dāng)前所允許的可寫(xiě)數(shù)據(jù)塊的數(shù)量,即以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,因?yàn)樵獢?shù)據(jù)塊管理設(shè)備端master在文件的元數(shù)據(jù)存儲(chǔ)方面:負(fù)責(zé)存儲(chǔ)每個(gè)文件當(dāng)前所有正在寫(xiě)的數(shù)據(jù)塊chunk信息,例如數(shù)據(jù)塊的副本位置;負(fù)責(zé)存儲(chǔ)每個(gè)文件當(dāng)前所允許的可寫(xiě)數(shù)據(jù)塊chunk的數(shù)量,因此可以從master端中找到目標(biāo)文件f的所有可寫(xiě)數(shù)據(jù)塊,假設(shè)所找到的目標(biāo)文件f的所有可寫(xiě)數(shù)據(jù)塊為t。
接著,在步驟s222中元數(shù)據(jù)管理設(shè)備端若所述所有可寫(xiě)的數(shù)據(jù)塊的數(shù)量等于或大于所述目標(biāo)文件對(duì)應(yīng)的可寫(xiě)塊數(shù)量閾值,則將所述所有可寫(xiě)的數(shù)據(jù)塊作為所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊。即將根據(jù)系統(tǒng)默認(rèn)或用戶根據(jù)寫(xiě)入要求所設(shè)置的可寫(xiě)塊數(shù)量閾值與所獲得的目標(biāo)文件的所有可寫(xiě)數(shù)據(jù)塊數(shù)量進(jìn)行比較,若所述目標(biāo)文件的所有可寫(xiě)數(shù)據(jù)塊數(shù)量不小于所述可寫(xiě)塊數(shù)量閾值則將所述目標(biāo)文件的所有可寫(xiě)數(shù)據(jù)塊及其相關(guān)信息直接由元數(shù)據(jù)管理設(shè)備端反饋給用戶設(shè)備端,使之作為所述目標(biāo)文件對(duì)應(yīng)的可寫(xiě)數(shù)據(jù)塊進(jìn)行寫(xiě)入。以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,如果當(dāng)前目標(biāo)文件f已有的chunk數(shù)量不小于可寫(xiě)塊數(shù)量閾值m,則將這些chunk信息返回client。
接著,若所述所有可寫(xiě)的數(shù)據(jù)塊的數(shù)量小于所述目標(biāo)文件對(duì)應(yīng)的可寫(xiě)塊數(shù)量閾值,在步驟s223中元數(shù)據(jù)管理設(shè)備端為所述目標(biāo)文件分配其他可寫(xiě)的數(shù)據(jù)塊,并將所述其他可寫(xiě)的數(shù)據(jù)塊及所述所有可寫(xiě)的數(shù)據(jù)塊作為所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊,其中,所述多個(gè)可寫(xiě)數(shù)據(jù)塊的數(shù)量等于可寫(xiě)塊數(shù)量閾值。即將根據(jù)系統(tǒng)默認(rèn)或用戶根據(jù)寫(xiě)入要求所設(shè)置的可寫(xiě)塊數(shù)量閾值與所獲得的目標(biāo)文件的所有可寫(xiě)數(shù)據(jù)塊數(shù)量進(jìn)行比較,若所述目標(biāo)文件的所有可寫(xiě)數(shù)據(jù)塊數(shù)量小于所述可寫(xiě)塊數(shù)量閾值,則重新由元數(shù)據(jù)管理設(shè)備端分配從所存儲(chǔ)或新被釋放的數(shù)據(jù)塊中分配差額數(shù)量的數(shù)據(jù)塊,使得所述目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊數(shù)量與所述可寫(xiě)塊數(shù)量閾值相等。以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,如果當(dāng)前文件f已有的chunk數(shù)量小于可寫(xiě)塊數(shù)量閾值m,則重新分配足夠數(shù)量的chunk,新分配的chunk數(shù)量加已有的chunk數(shù)量等于可寫(xiě)塊數(shù)量閾值m,將所有chunk信息返回client。通過(guò)上述方式,可以通過(guò)可寫(xiě)塊數(shù)量閾值控制,使得可寫(xiě)數(shù)據(jù)塊維持在一定值,從而使得用戶不需要對(duì)文件寫(xiě)入進(jìn)行人工控制,減小用戶的管理成本。
本領(lǐng)域技術(shù)人員應(yīng)能理解上述確定目標(biāo)文件對(duì)應(yīng)可寫(xiě)數(shù)據(jù)塊的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的目標(biāo)文件對(duì)應(yīng)可寫(xiě)數(shù)據(jù)塊的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
優(yōu)選地,所述為所述目標(biāo)文件分配其他可寫(xiě)的數(shù)據(jù)塊包括:根據(jù)每個(gè)文件當(dāng)前對(duì)應(yīng)的在寫(xiě)數(shù)據(jù)塊及每個(gè)在寫(xiě)數(shù)據(jù)塊對(duì)應(yīng)的塊服務(wù)器,為所述目標(biāo)文件分配其他可寫(xiě)的數(shù)據(jù)塊,其中,每個(gè)其他可寫(xiě)的數(shù)據(jù)塊對(duì)應(yīng)的塊服務(wù)器與每個(gè)在寫(xiě)數(shù)據(jù)塊對(duì)應(yīng)的塊服務(wù)器小于或等于預(yù)定的塊服務(wù)器重復(fù)閾值。即在分配新的可寫(xiě)數(shù)據(jù)塊所對(duì)應(yīng)的數(shù)據(jù)塊服務(wù)器時(shí),盡量避免其所分配的數(shù)據(jù)塊服務(wù)器是元數(shù)據(jù)管理設(shè)備端中已經(jīng)記錄的,從而減少數(shù)據(jù)塊服務(wù)器同時(shí)接受多個(gè)數(shù)據(jù)塊的寫(xiě)入請(qǐng)求從而造成寫(xiě)入熱點(diǎn)的情況。所述塊服務(wù)器是指chunksever,即數(shù)據(jù)管理模塊本文亦稱之為數(shù)據(jù)塊服務(wù)器或塊服務(wù)器,用于維護(hù)數(shù)據(jù)塊副本的模塊,提供數(shù)據(jù)塊副本的訪問(wèn)的接口。所述塊服務(wù)器重復(fù)閾值是指允許塊服務(wù)器同時(shí)提供不同的數(shù)據(jù)塊進(jìn)行寫(xiě)入的數(shù)量,例如,所述塊服務(wù)器重復(fù)閾值為3,即每個(gè)塊服務(wù)器僅可對(duì)三個(gè)數(shù)據(jù)塊提供服務(wù)。對(duì)數(shù)據(jù)塊對(duì)應(yīng)的塊服務(wù)器的具體分配方式,以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,在元數(shù)據(jù)管理設(shè)備端對(duì)chunk位置的分配方面:記錄當(dāng)前可寫(xiě)chunk所在的所有chunkserver,這部分信息以緩存的形式存在,不需要持久化,宕機(jī)重啟后可以根據(jù)上面記錄的元數(shù)據(jù)信息恢復(fù)出來(lái)。分配新的chunk的時(shí)候,根據(jù)塊服務(wù)器重復(fù)閾值避免新分配的chunkserver與上述步驟記錄的chunkserver重復(fù)?;蛘哌@一步操作采用盡量而為的策略,當(dāng)集群可寫(xiě)的chunkserver數(shù)量太少,無(wú)法滿足不重復(fù)的要求的時(shí)候,也允許chunk的分配動(dòng)作成功。文件內(nèi)部的數(shù)據(jù)分部信息可見(jiàn),有效的避免多個(gè)chunk分布在相同的chunkserver上,消除熱點(diǎn),保證了寫(xiě)入吞吐量的實(shí)際效果。
圖3示出根據(jù)本申請(qǐng)一個(gè)優(yōu)選實(shí)例的一種實(shí)現(xiàn)在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的方法中的步驟s13流程圖。所述步驟s13包括步驟s131、步驟s132、步驟s133。
其中,在步驟s131中用戶設(shè)備端接收關(guān)于所述目標(biāo)文件的寫(xiě)入請(qǐng)求;在步驟s132中用戶設(shè)備端根據(jù)所述寫(xiě)入請(qǐng)求對(duì)所述多個(gè)可寫(xiě)數(shù)據(jù)塊中當(dāng)前第一個(gè)可寫(xiě)數(shù)據(jù)塊對(duì)應(yīng)的一個(gè)或多個(gè)數(shù)據(jù)塊副本執(zhí)行文件寫(xiě)入;在步驟s133中用戶設(shè)備端更新所述多個(gè)可寫(xiě)數(shù)據(jù)塊中當(dāng)前第一個(gè)可寫(xiě)數(shù)據(jù)塊。
具體地,在步驟s131中用戶設(shè)備端接收關(guān)于所述目標(biāo)文件的寫(xiě)入請(qǐng)求。即用戶設(shè)備端接受關(guān)于所述目標(biāo)文件的寫(xiě)入請(qǐng)求,因?yàn)樗瞿繕?biāo)文件可寫(xiě)入的數(shù)據(jù)塊數(shù)量大于所述可寫(xiě)塊數(shù)量閾值,因此支持用戶同時(shí)發(fā)起相應(yīng)數(shù)量的寫(xiě)入請(qǐng)求。以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,用戶設(shè)備端client在數(shù)據(jù)寫(xiě)入流程中支持用戶同時(shí)發(fā)起m個(gè)寫(xiě)請(qǐng)求,m等于當(dāng)前可寫(xiě)chunk的數(shù)量。同時(shí)接受若干關(guān)于單個(gè)文件的寫(xiě)請(qǐng)求,使得單個(gè)文件的寫(xiě)入速率提升。
接著,在步驟s132中用戶設(shè)備端根據(jù)所述寫(xiě)入請(qǐng)求對(duì)所述多個(gè)可寫(xiě)數(shù)據(jù)塊中當(dāng)前第一個(gè)可寫(xiě)數(shù)據(jù)塊對(duì)應(yīng)的一個(gè)或多個(gè)數(shù)據(jù)塊副本執(zhí)行文件寫(xiě)入。即用戶設(shè)備端在接受到所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊后按照默認(rèn)排序或依據(jù)一定的排序準(zhǔn)則對(duì)所述可寫(xiě)數(shù)據(jù)塊的數(shù)據(jù)塊服務(wù)器進(jìn)行尋找,并傳達(dá)相應(yīng)的寫(xiě)入請(qǐng)求,從而在數(shù)據(jù)塊及其副本上進(jìn)行寫(xiě)入。以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,client收到可寫(xiě)chunk信息后按順序緩存,同時(shí)將下次可寫(xiě)chunk的序號(hào)i設(shè)置為第一個(gè)可寫(xiě)chunk的序號(hào),client收到用戶的寫(xiě)入請(qǐng)求,選取序號(hào)為i的chunk,將數(shù)據(jù)寫(xiě)入請(qǐng)求發(fā)往這個(gè)chunk的所有chunkserver,同時(shí)將i序號(hào)修改為下一個(gè)可寫(xiě)chunk的序號(hào)。
接著,在步驟s133中用戶設(shè)備端更新所述多個(gè)可寫(xiě)數(shù)據(jù)塊中當(dāng)前第一個(gè)可寫(xiě)數(shù)據(jù)塊。即用戶設(shè)備端按順序?qū)λ袑?xiě)入請(qǐng)求進(jìn)行響應(yīng),即按順序?qū)λ鰯?shù)據(jù)塊執(zhí)行寫(xiě)入,當(dāng)所述數(shù)據(jù)塊排序所在的第一個(gè)可寫(xiě)數(shù)據(jù)塊被執(zhí)行寫(xiě)入后,將后續(xù)的所述可寫(xiě)數(shù)據(jù)塊更新排序信息,例如上文舉例,client收到用戶的寫(xiě)入請(qǐng)求,選取序號(hào)為i的chunk,將數(shù)據(jù)寫(xiě)入請(qǐng)求發(fā)往這個(gè)chunk的所有chunkserver,同時(shí)將i序號(hào)修改為下一個(gè)可寫(xiě)chunk的序號(hào),即每當(dāng)用戶發(fā)起寫(xiě)請(qǐng)求的時(shí)候,根據(jù)序號(hào)i選擇相應(yīng)的chunk,同時(shí)將i指向下一個(gè)chunk,這樣以輪詢的方式訪問(wèn)所有的chunk,避免某個(gè)chunk成為寫(xiě)入的熱點(diǎn)。
本領(lǐng)域技術(shù)人員應(yīng)能理解上述對(duì)可寫(xiě)數(shù)據(jù)塊進(jìn)行輪詢寫(xiě)入的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的對(duì)可寫(xiě)數(shù)據(jù)塊進(jìn)行輪詢寫(xiě)入的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
優(yōu)選地,所述步驟s13還包括:步驟s134(未示出),在步驟s134中用戶設(shè)備端當(dāng)在所述一個(gè)或多個(gè)數(shù)據(jù)塊副本均成功執(zhí)行文件寫(xiě)入,回收所述當(dāng)前第一個(gè)可寫(xiě)數(shù)據(jù)塊以接收關(guān)于所述目標(biāo)文件的新寫(xiě)入請(qǐng)求。是指在某個(gè)可寫(xiě)數(shù)據(jù)塊及其副本進(jìn)行寫(xiě)入后,當(dāng)所有的塊服務(wù)器均反饋寫(xiě)入成功后,用戶設(shè)備端返回用戶該數(shù)據(jù)塊所對(duì)應(yīng)的寫(xiě)入請(qǐng)求寫(xiě)入成功,進(jìn)而因?yàn)楫?dāng)前所述可寫(xiě)數(shù)據(jù)塊沒(méi)有寫(xiě)滿觸發(fā)重新分配可寫(xiě)數(shù)據(jù)塊的情況,因此可重新接受用戶關(guān)于所述目標(biāo)文件的寫(xiě)入請(qǐng)求。以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,當(dāng)某個(gè)chunk的所有chunkserver都返回client成功的時(shí)候,client返回用戶成功,寫(xiě)流程返回接收用戶新的請(qǐng)求的階段,從而充分利用可寫(xiě)數(shù)據(jù)塊同時(shí)使得單文件的寫(xiě)入保持在一定數(shù)量數(shù)據(jù)塊的同時(shí)寫(xiě)入中,提升單文件寫(xiě)入速率。
優(yōu)選地,所述步驟s13還包括:步驟s135(未示出),在步驟s135中用戶設(shè)備端當(dāng)所述多個(gè)可寫(xiě)數(shù)據(jù)塊中每個(gè)可寫(xiě)數(shù)據(jù)塊都在執(zhí)行文件寫(xiě)入時(shí),阻塞關(guān)于所述目標(biāo)文件的寫(xiě)入請(qǐng)求。即因?yàn)樗鰣?zhí)行文件寫(xiě)入的可寫(xiě)數(shù)據(jù)塊與所設(shè)置的可寫(xiě)塊數(shù)量閾值相等,因此同時(shí)接受的所述目標(biāo)文件的寫(xiě)入請(qǐng)求與可寫(xiě)塊數(shù)量閾值相等,通過(guò)在所有可寫(xiě)數(shù)據(jù)塊均執(zhí)行寫(xiě)入后阻塞相關(guān)寫(xiě)入請(qǐng)求的方式使得可以通過(guò)可寫(xiě)塊數(shù)量閾值對(duì)單文件同時(shí)寫(xiě)入進(jìn)程數(shù)量進(jìn)行控制,從而達(dá)到用戶不需要自己管理文件多進(jìn)程寫(xiě)入的木大,只要根據(jù)寫(xiě)入需求控制所述可寫(xiě)塊數(shù)量閾值即可,從而減輕用戶的管理負(fù)擔(dān)。以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,重復(fù)對(duì)可寫(xiě)chunk按順序進(jìn)行寫(xiě)入請(qǐng)求響應(yīng)執(zhí)行,直到當(dāng)前所有的可寫(xiě)chunk都有數(shù)據(jù)正在寫(xiě)入,阻塞用戶的寫(xiě)入請(qǐng)求。
圖4示出根據(jù)本申請(qǐng)另一個(gè)方面的元數(shù)據(jù)管理設(shè)備端以及用戶設(shè)備端配合實(shí)現(xiàn)的一種實(shí)現(xiàn)在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的方法中修改可寫(xiě)塊數(shù)量閾值的流程圖。為實(shí)現(xiàn)所述修改可寫(xiě)塊數(shù)量閾值功能,所述用戶設(shè)備端包括步驟s15。所述元數(shù)據(jù)管理設(shè)備端包括步驟s24、步驟s25。
其中,在步驟s15中用戶設(shè)備端將用戶提交的關(guān)于所述目標(biāo)文件的可寫(xiě)塊數(shù)量閾值設(shè)置請(qǐng)求發(fā)送至所述元數(shù)據(jù)管理設(shè)備,其中,所述可寫(xiě)塊數(shù)量閾值設(shè)置請(qǐng)求包括關(guān)于所述目標(biāo)文件的新的可寫(xiě)塊數(shù)量閾值。在步驟s24中元數(shù)據(jù)管理設(shè)備端接收所述用戶設(shè)備發(fā)送的關(guān)于所述目標(biāo)文件的可寫(xiě)塊數(shù)量閾值設(shè)置請(qǐng)求,其中,所述可寫(xiě)塊數(shù)量閾值設(shè)置請(qǐng)求包括關(guān)于所述目標(biāo)文件的新的可寫(xiě)塊數(shù)量閾值;在步驟s25中元數(shù)據(jù)管理設(shè)備端根據(jù)所述新的可寫(xiě)塊數(shù)量閾值更新所述可寫(xiě)塊數(shù)量閾值。
具體地,在步驟s15中用戶設(shè)備端將用戶提交的關(guān)于所述目標(biāo)文件的可寫(xiě)塊數(shù)量閾值設(shè)置請(qǐng)求發(fā)送至所述元數(shù)據(jù)管理設(shè)備,其中,所述可寫(xiě)塊數(shù)量閾值設(shè)置請(qǐng)求包括關(guān)于所述目標(biāo)文件的新的可寫(xiě)塊數(shù)量閾值。接著,在步驟s24中元數(shù)據(jù)管理設(shè)備端接收所述用戶設(shè)備發(fā)送的關(guān)于所述目標(biāo)文件的可寫(xiě)塊數(shù)量閾值設(shè)置請(qǐng)求,其中,所述可寫(xiě)塊數(shù)量閾值設(shè)置請(qǐng)求包括關(guān)于所述目標(biāo)文件的新的可寫(xiě)塊數(shù)量閾值;是指所述可寫(xiě)塊數(shù)量閾值是可以根據(jù)用戶的寫(xiě)入需求進(jìn)行調(diào)整,將調(diào)整的具體數(shù)據(jù)和請(qǐng)求通過(guò)用戶設(shè)備端發(fā)送至元數(shù)據(jù)塊管理設(shè)備端即可。具體執(zhí)行中可比較當(dāng)前可寫(xiě)的數(shù)據(jù)塊數(shù)量與需要設(shè)置的所述可寫(xiě)塊數(shù)量閾值是否相等,若相等則不進(jìn)行修改,若不等,則將所述可寫(xiě)塊數(shù)量閾值修改為所需的數(shù)值,但不限于此。以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,用戶根據(jù)寫(xiě)入吞吐的要求,決定將可寫(xiě)chunk的數(shù)量設(shè)置為m;用戶調(diào)用client接口,獲取當(dāng)前可寫(xiě)chunk的數(shù)量;client向master發(fā)起請(qǐng)求,獲取當(dāng)前可寫(xiě)chunk的數(shù)量;master收到client請(qǐng)求后在內(nèi)存中找到文件可寫(xiě)chunk的數(shù)量n,將n返回client,cilent將當(dāng)前可寫(xiě)chunk數(shù)量n返回用戶;用戶根據(jù)n和m的值進(jìn)行判斷,如果n==m,則無(wú)需修改;如果n?。絤,則調(diào)用client接口,設(shè)置當(dāng)前可寫(xiě)chunk的數(shù)量為m;client向master發(fā)起請(qǐng)求,將可寫(xiě)chunk數(shù)量設(shè)置為m。
接著,在步驟s25中元數(shù)據(jù)管理設(shè)備端根據(jù)所述新的可寫(xiě)塊數(shù)量閾值更新所述可寫(xiě)塊數(shù)量閾值。是指所述元數(shù)據(jù)塊管理設(shè)備端接受請(qǐng)求根據(jù)所述請(qǐng)求中的新的可寫(xiě)塊數(shù)量閾值對(duì)歷史值進(jìn)行更新或存儲(chǔ)。具體地,以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,master收到請(qǐng)求后將可寫(xiě)chunk數(shù)量設(shè)置為m,同時(shí)將這個(gè)改動(dòng)持久化。優(yōu)選地,可返回client改動(dòng)成功;client返回用戶改動(dòng)成功。通過(guò)以上方法為分布式文件系統(tǒng)添加了一種新的數(shù)據(jù)寫(xiě)入方式,允許單個(gè)文件同時(shí)可以寫(xiě)多個(gè)chunk,同時(shí)可寫(xiě)chunk的個(gè)數(shù)支持動(dòng)態(tài)調(diào)整,從而用戶不需要自己管理多路寫(xiě)入的文件,只需要根據(jù)寫(xiě)入的需求調(diào)整可寫(xiě)數(shù)據(jù)塊的數(shù)量,節(jié)約用戶管理成本。
圖5示出根據(jù)本申請(qǐng)另一個(gè)方面的元數(shù)據(jù)管理設(shè)備端設(shè)備以及用戶設(shè)備端設(shè)備配合實(shí)現(xiàn)的一種實(shí)現(xiàn)在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的設(shè)備示意圖。其中,所述用戶設(shè)備端設(shè)備包括塊信息請(qǐng)求發(fā)送裝置111、塊信息接受裝置112、數(shù)據(jù)塊寫(xiě)入執(zhí)行裝置113。所述元數(shù)據(jù)管理設(shè)備端設(shè)備包括塊信息請(qǐng)求獲取裝置121、可寫(xiě)數(shù)據(jù)塊確定裝置122、塊信息反饋裝置123將所述多個(gè)可寫(xiě)數(shù)據(jù)塊返回至所述用戶設(shè)備。
其中,塊信息請(qǐng)求發(fā)送裝置111向元數(shù)據(jù)管理設(shè)備提交關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求;塊信息請(qǐng)求獲取裝置121獲取用戶設(shè)備提交的關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求;可寫(xiě)數(shù)據(jù)塊確定裝置122根據(jù)所述目標(biāo)文件對(duì)應(yīng)的可寫(xiě)塊數(shù)量閾值確定所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊;塊信息反饋裝置123將所述多個(gè)可寫(xiě)數(shù)據(jù)塊返回至所述用戶設(shè)備;塊信息接受裝置112接收所述元數(shù)據(jù)管理設(shè)備基于所述塊信息請(qǐng)求返回的、所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊;數(shù)據(jù)塊寫(xiě)入執(zhí)行裝置113根據(jù)關(guān)于所述目標(biāo)文件的寫(xiě)入請(qǐng)求對(duì)所述多個(gè)可寫(xiě)數(shù)據(jù)塊中之一執(zhí)行文件寫(xiě)入。
具體地,所述用戶設(shè)備端設(shè)備中塊信息請(qǐng)求發(fā)送裝置111向元數(shù)據(jù)管理設(shè)備提交關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求;所述元數(shù)據(jù)管理設(shè)備端設(shè)備中塊信息請(qǐng)求獲取裝置121獲取用戶設(shè)備提交的關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求。其中,所述用戶設(shè)備端是指分布式存儲(chǔ)系統(tǒng)中用于為用戶提供各種接口的端口模塊,以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,所述用戶設(shè)備端即為客戶端庫(kù)client。所述元數(shù)據(jù)管理設(shè)備端是指分布式存儲(chǔ)系統(tǒng)中管理分布式存儲(chǔ)系統(tǒng)中元數(shù)據(jù)的模塊,以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,所述元數(shù)據(jù)管理設(shè)備端即為master也就是命名空間管理模塊。所述目標(biāo)文件即為需要執(zhí)行寫(xiě)入的文件,通常在分布式存儲(chǔ)系統(tǒng)中會(huì)預(yù)先創(chuàng)建好但不限于此,所有需要執(zhí)行寫(xiě)入的文件均可成為目標(biāo)文件。所述數(shù)據(jù)塊是指一段用戶邏輯數(shù)據(jù),以字節(jié)流的形式存儲(chǔ),用于目標(biāo)文件的數(shù)據(jù)寫(xiě)入,以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,數(shù)據(jù)塊即為該系統(tǒng)中所稱的chunk。所述關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息是指可以用于執(zhí)行目標(biāo)文件寫(xiě)入的當(dāng)前可寫(xiě)的數(shù)據(jù)塊及其位置,數(shù)量等信息。所述提交和獲取請(qǐng)求的方法包括但不限于通過(guò)分布式存儲(chǔ)系統(tǒng)自有接口進(jìn)行,以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,client啟動(dòng),向master發(fā)送獲取目標(biāo)文件f所有可以寫(xiě)的chunk的信息的請(qǐng)求。通過(guò)上述動(dòng)作,可以使得元數(shù)據(jù)管理設(shè)備端發(fā)起對(duì)目標(biāo)文件可寫(xiě)數(shù)據(jù)塊的塊信息的查找,從而使得文件寫(xiě)入流程啟動(dòng)。
本領(lǐng)域技術(shù)人員應(yīng)能理解上述發(fā)送和獲取關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的發(fā)送和獲取關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
接著,所述元數(shù)據(jù)管理設(shè)備端設(shè)備中可寫(xiě)數(shù)據(jù)塊確定裝置122根據(jù)所述目標(biāo)文件對(duì)應(yīng)的可寫(xiě)塊數(shù)量閾值確定所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊。即根據(jù)可寫(xiě)塊數(shù)量閾值將與所述閾值比較的符合預(yù)置數(shù)目的可寫(xiě)數(shù)據(jù)塊分配給所述目標(biāo)文件進(jìn)行寫(xiě)入,例如,所述可寫(xiě)塊數(shù)量閾值為m,則以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,元數(shù)據(jù)塊管理設(shè)備端master收到請(qǐng)求后在內(nèi)存中找到目標(biāo)文件f所有可以寫(xiě)的chunk的信息t和可以寫(xiě)的chunk的數(shù)量m,若t大于m則確定這t個(gè)可寫(xiě)數(shù)據(jù)塊chunk為目標(biāo)文件f所對(duì)應(yīng)的可寫(xiě)數(shù)據(jù)塊。所述可寫(xiě)塊數(shù)量閾值是指所設(shè)置的控制可寫(xiě)數(shù)據(jù)塊數(shù)量的閾值,在此,塊即指代數(shù)據(jù)塊,此指代上下文均通用,所述可寫(xiě)塊數(shù)量閾值可根據(jù)寫(xiě)入吞吐量或速率的要求進(jìn)行設(shè)置,本閾值的存在使得用戶不需要自己管理多路寫(xiě)入的文件,只需要根據(jù)寫(xiě)入的需求調(diào)整可寫(xiě)數(shù)據(jù)塊的數(shù)量,此外,所述可寫(xiě)塊數(shù)量閾值亦可以根據(jù)系統(tǒng)的要求設(shè)置系統(tǒng)自行調(diào)整,或進(jìn)行初始設(shè)定。所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊是指每個(gè)寫(xiě)入文件可以有一個(gè)以上的可寫(xiě)數(shù)據(jù)塊,在典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs中,現(xiàn)有技術(shù)僅支持每個(gè)目標(biāo)文件在元數(shù)據(jù)塊管理設(shè)備端master有一個(gè)可寫(xiě)數(shù)據(jù)塊,在本申請(qǐng)的實(shí)施例中可以通過(guò)對(duì)用戶設(shè)備端以及元數(shù)據(jù)管理設(shè)備端的接口間的協(xié)議進(jìn)行設(shè)置,使得每個(gè)目標(biāo)文件在元數(shù)據(jù)塊管理設(shè)備端有多個(gè)可寫(xiě)數(shù)據(jù)塊,從而能夠達(dá)到單文件寫(xiě)入時(shí)支持多個(gè)數(shù)據(jù)塊同時(shí)寫(xiě)入的目的,進(jìn)而使得單文件寫(xiě)入的效率提高。
其中,在本申請(qǐng)的實(shí)施例中通過(guò)對(duì)用戶設(shè)備端以及元數(shù)據(jù)管理設(shè)備端的接口間的協(xié)議進(jìn)行設(shè)置的方法,以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,在元數(shù)據(jù)塊管理設(shè)備端master中設(shè)置如下:在面向用戶設(shè)備端client的服務(wù)和協(xié)議方面,對(duì)于獲取文件可寫(xiě)數(shù)據(jù)塊chunk信息的服務(wù):擴(kuò)展現(xiàn)有協(xié)議,增加對(duì)可寫(xiě)的數(shù)據(jù)塊chunk有多個(gè)的支持;對(duì)于可寫(xiě)數(shù)據(jù)塊chunk數(shù)量的服務(wù):增加設(shè)置文件可寫(xiě)數(shù)據(jù)塊chunk數(shù)量的協(xié)議和服務(wù),增加獲取文件可寫(xiě)數(shù)據(jù)塊chunk數(shù)量的協(xié)議和服務(wù)。在用戶設(shè)備端client中設(shè)置如下:在面向元數(shù)據(jù)塊管理設(shè)備端master協(xié)議方面:對(duì)于獲取文件可寫(xiě)數(shù)據(jù)塊chunk信息的協(xié)議:擴(kuò)展現(xiàn)有協(xié)議,增加對(duì)可寫(xiě)的數(shù)據(jù)塊chunk有多個(gè)的支持;對(duì)于可寫(xiě)數(shù)據(jù)塊chunk數(shù)量的接口:增加設(shè)置文件可寫(xiě)數(shù)據(jù)塊chunk數(shù)量的協(xié)議,增加獲取文件可寫(xiě)數(shù)據(jù)塊chunk數(shù)量的協(xié)議;在對(duì)于在面向用戶的接口方面:對(duì)于可寫(xiě)數(shù)據(jù)塊chunk數(shù)量的接口:增加設(shè)置文件可寫(xiě)數(shù)據(jù)塊chunk數(shù)量的接口,增加獲取文件可寫(xiě)數(shù)據(jù)塊chunk數(shù)量的接口。以上設(shè)置使得每個(gè)目標(biāo)文件在元數(shù)據(jù)塊管理設(shè)備端有多個(gè)可寫(xiě)數(shù)據(jù)塊,從而能夠達(dá)到單文件寫(xiě)入時(shí)支持多個(gè)數(shù)據(jù)塊同時(shí)寫(xiě)入的目的,滿足用戶需求,同時(shí)在元數(shù)據(jù)塊管理設(shè)備端master只耗費(fèi)了單個(gè)文件的內(nèi)存,沒(méi)有降低集群服務(wù)用戶的數(shù)量。
本領(lǐng)域技術(shù)人員應(yīng)能理解上述對(duì)用戶設(shè)備端以及元數(shù)據(jù)管理設(shè)備端的接口間的協(xié)議進(jìn)行設(shè)置使得每個(gè)目標(biāo)文件在元數(shù)據(jù)塊管理設(shè)備端有多個(gè)可寫(xiě)數(shù)據(jù)塊的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的對(duì)用戶設(shè)備端以及元數(shù)據(jù)管理設(shè)備端的接口間的協(xié)議進(jìn)行設(shè)置使得每個(gè)目標(biāo)文件在元數(shù)據(jù)塊管理設(shè)備端有多個(gè)可寫(xiě)數(shù)據(jù)塊的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
接著,所述元數(shù)據(jù)管理設(shè)備端設(shè)備中塊信息反饋裝置123將所述多個(gè)可寫(xiě)數(shù)據(jù)塊返回至所述用戶設(shè)備;所述用戶設(shè)備端設(shè)備中塊信息接受裝置112接收所述元數(shù)據(jù)管理設(shè)備基于所述塊信息請(qǐng)求返回的、所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊。即如上文所述確定所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊后將所述數(shù)據(jù)塊及其相關(guān)信息由元數(shù)據(jù)管理設(shè)備端返回至用戶設(shè)備端,以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,接上文舉例,元數(shù)據(jù)管理設(shè)備端master將目標(biāo)文件f所有可以寫(xiě)的數(shù)據(jù)塊chunk的數(shù)量t及其相關(guān)信息從內(nèi)存中找到并進(jìn)行反饋,反饋的方式包括但不限于通過(guò)分布式存儲(chǔ)系統(tǒng)自有接口進(jìn)行。
其中,所述元數(shù)據(jù)管理設(shè)備端內(nèi)存中的所述目標(biāo)文件對(duì)應(yīng)的可寫(xiě)數(shù)據(jù)塊的數(shù)量以及相關(guān)信息的獲取方式包括但不限于在獲取每個(gè)在分布式存儲(chǔ)系統(tǒng)中文件后,元數(shù)據(jù)管理設(shè)備端即存儲(chǔ)其所有正在寫(xiě)以及允許寫(xiě)的數(shù)據(jù)塊信息,以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,元數(shù)據(jù)塊管理設(shè)備端master在文件的元數(shù)據(jù)存儲(chǔ)方面:負(fù)責(zé)存儲(chǔ)每個(gè)文件當(dāng)前所有正在寫(xiě)的數(shù)據(jù)塊chunk信息,例如數(shù)據(jù)塊的副本位置;負(fù)責(zé)存儲(chǔ)每個(gè)文件當(dāng)前所允許的可寫(xiě)數(shù)據(jù)塊chunk的數(shù)量。以上信息在元數(shù)據(jù)塊管理設(shè)備端master端都需要進(jìn)行持久化的保存,宕機(jī)重啟后不能丟失,從而使得可以在用戶設(shè)備端需要目標(biāo)文件是可以及時(shí)查找到。
本領(lǐng)域技術(shù)人員應(yīng)能理解上述元數(shù)據(jù)管理設(shè)備端對(duì)每個(gè)文件數(shù)據(jù)塊存儲(chǔ)的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的元數(shù)據(jù)管理設(shè)備端對(duì)每個(gè)文件數(shù)據(jù)塊存儲(chǔ)的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
接著,所述用戶設(shè)備端設(shè)備中數(shù)據(jù)塊寫(xiě)入執(zhí)行裝置113根據(jù)關(guān)于所述目標(biāo)文件的寫(xiě)入請(qǐng)求對(duì)所述多個(gè)可寫(xiě)數(shù)據(jù)塊中之一執(zhí)行文件寫(xiě)入。即因?yàn)樗瞿繕?biāo)文件有對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊,因此,在所述用戶設(shè)備端獲得所述可寫(xiě)數(shù)據(jù)塊相關(guān)信息后將所述多個(gè)可寫(xiě)數(shù)據(jù)塊進(jìn)行排序,或按照默認(rèn)順序依次在接受到目標(biāo)文件的寫(xiě)入請(qǐng)求后進(jìn)行寫(xiě)入。以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,用戶設(shè)備端client將所接到的目標(biāo)文件f所有的對(duì)應(yīng)的可寫(xiě)數(shù)據(jù)塊chunk之后,在按照默認(rèn)或設(shè)置的順序?qū)δ骋籧hunk進(jìn)行寫(xiě)入時(shí),尋找其相應(yīng)的數(shù)據(jù)塊服務(wù)器chunksever進(jìn)行相應(yīng)副本的寫(xiě)入。其中,chunksever的信息的獲取方式包括但不限于由元數(shù)據(jù)管理設(shè)備端master記錄當(dāng)前可寫(xiě)chunk所在的所有chunkserver,這部分信息以緩存的形式存在,不需要持久化,宕機(jī)重啟后可以根據(jù)之前所記錄的信息恢復(fù)出來(lái),也就是從所負(fù)責(zé)存儲(chǔ)的每個(gè)文件當(dāng)前所有正在寫(xiě)的數(shù)據(jù)塊chunk信息中進(jìn)行恢復(fù);用戶設(shè)備端client存儲(chǔ)文件當(dāng)前所有可寫(xiě)的chunk信息,這部分信息以緩存的形式存在,不需要持久化,宕機(jī)重啟后從master端重新獲取。
本領(lǐng)域技術(shù)人員應(yīng)能理解上述保存和獲取數(shù)據(jù)塊對(duì)應(yīng)數(shù)據(jù)塊服務(wù)器信息的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的保存和獲取數(shù)據(jù)塊對(duì)應(yīng)數(shù)據(jù)塊服務(wù)器信息的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
優(yōu)選地,所述設(shè)備還包括數(shù)據(jù)塊寫(xiě)滿處理裝置114(未示出),所述用戶設(shè)備端設(shè)備中數(shù)據(jù)塊寫(xiě)滿處理裝置114當(dāng)所述多個(gè)可寫(xiě)數(shù)據(jù)塊中之一被寫(xiě)滿時(shí),向所述元數(shù)據(jù)管理設(shè)備重新提交關(guān)于所述目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求。是指在對(duì)目標(biāo)文件所對(duì)應(yīng)的數(shù)據(jù)塊進(jìn)行寫(xiě)入時(shí),若遇到所述數(shù)據(jù)塊寫(xiě)滿的情況,則需要向元數(shù)據(jù)管理設(shè)備重新提交獲取同樣目標(biāo)文件的可寫(xiě)數(shù)據(jù)及其相關(guān)信息的請(qǐng)求,此時(shí),如前文中實(shí)施例所述,將之前的步驟重新進(jìn)行一遍。以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,當(dāng)client發(fā)現(xiàn)某個(gè)chunk已經(jīng)寫(xiě)滿的時(shí)候,向master發(fā)送獲取文件f所有可以寫(xiě)的chunk的信息的請(qǐng)求,重新分配獲取可寫(xiě)chunk的數(shù)量,使得所述用戶設(shè)備端獲取新的目標(biāo)文件所對(duì)應(yīng)的可寫(xiě)數(shù)據(jù)塊,從而繼續(xù)進(jìn)行文件的寫(xiě)入。
圖6示出根據(jù)本申請(qǐng)另一個(gè)優(yōu)選實(shí)例的一種實(shí)現(xiàn)在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的設(shè)備中可寫(xiě)數(shù)據(jù)塊確定裝置示意圖。其中,所述可寫(xiě)數(shù)據(jù)塊確定裝置122包括候選數(shù)據(jù)塊確定單元1221、直接反饋單元1222、重分配反饋單元1223。
其中,候選數(shù)據(jù)塊確定單元1221確定所述目標(biāo)文件對(duì)應(yīng)的所有可寫(xiě)的數(shù)據(jù)塊;直接反饋單元1222若所述所有可寫(xiě)的數(shù)據(jù)塊的數(shù)量等于或大于所述目標(biāo)文件對(duì)應(yīng)的可寫(xiě)塊數(shù)量閾值,則將所述所有可寫(xiě)的數(shù)據(jù)塊作為所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊;否則,重分配反饋單元1223為所述目標(biāo)文件分配其他可寫(xiě)的數(shù)據(jù)塊,并將所述其他可寫(xiě)的數(shù)據(jù)塊及所述所有可寫(xiě)的數(shù)據(jù)塊作為所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊,其中,所述多個(gè)可寫(xiě)數(shù)據(jù)塊的數(shù)量等于可寫(xiě)塊數(shù)量閾值。
具體地,候選數(shù)據(jù)塊確定單元1221確定所述目標(biāo)文件對(duì)應(yīng)的所有可寫(xiě)的數(shù)據(jù)塊。是指確定所述目標(biāo)文件的所有可寫(xiě)數(shù)據(jù)塊信息,獲取的方法包括如上文所述從所述元數(shù)據(jù)管理設(shè)備端所存儲(chǔ)的元數(shù)據(jù)信息中的每個(gè)文件當(dāng)前所允許的可寫(xiě)數(shù)據(jù)塊的數(shù)量,即以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,因?yàn)樵獢?shù)據(jù)塊管理設(shè)備端master在文件的元數(shù)據(jù)存儲(chǔ)方面:負(fù)責(zé)存儲(chǔ)每個(gè)文件當(dāng)前所有正在寫(xiě)的數(shù)據(jù)塊chunk信息,例如數(shù)據(jù)塊的副本位置;負(fù)責(zé)存儲(chǔ)每個(gè)文件當(dāng)前所允許的可寫(xiě)數(shù)據(jù)塊chunk的數(shù)量,因此可以從master端中找到目標(biāo)文件f的所有可寫(xiě)數(shù)據(jù)塊,假設(shè)所找到的目標(biāo)文件f的所有可寫(xiě)數(shù)據(jù)塊為t。
接著,直接反饋單元1222若所述所有可寫(xiě)的數(shù)據(jù)塊的數(shù)量等于或大于所述目標(biāo)文件對(duì)應(yīng)的可寫(xiě)塊數(shù)量閾值,則將所述所有可寫(xiě)的數(shù)據(jù)塊作為所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊。即將根據(jù)系統(tǒng)默認(rèn)或用戶根據(jù)寫(xiě)入要求所設(shè)置的可寫(xiě)塊數(shù)量閾值與所獲得的目標(biāo)文件的所有可寫(xiě)數(shù)據(jù)塊數(shù)量進(jìn)行比較,若所述目標(biāo)文件的所有可寫(xiě)數(shù)據(jù)塊數(shù)量不小于所述可寫(xiě)塊數(shù)量閾值則將所述目標(biāo)文件的所有可寫(xiě)數(shù)據(jù)塊及其相關(guān)信息直接由元數(shù)據(jù)管理設(shè)備端反饋給用戶設(shè)備端,使之作為所述目標(biāo)文件對(duì)應(yīng)的可寫(xiě)數(shù)據(jù)塊進(jìn)行寫(xiě)入。以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,如果當(dāng)前目標(biāo)文件f已有的chunk數(shù)量不小于可寫(xiě)塊數(shù)量閾值m,則將這些chunk信息返回client。
接著,若所述所有可寫(xiě)的數(shù)據(jù)塊的數(shù)量小于所述目標(biāo)文件對(duì)應(yīng)的可寫(xiě)塊數(shù)量閾值,重分配反饋單元1223為所述目標(biāo)文件分配其他可寫(xiě)的數(shù)據(jù)塊,并將所述其他可寫(xiě)的數(shù)據(jù)塊及所述所有可寫(xiě)的數(shù)據(jù)塊作為所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊,其中,所述多個(gè)可寫(xiě)數(shù)據(jù)塊的數(shù)量等于可寫(xiě)塊數(shù)量閾值。即將根據(jù)系統(tǒng)默認(rèn)或用戶根據(jù)寫(xiě)入要求所設(shè)置的可寫(xiě)塊數(shù)量閾值與所獲得的目標(biāo)文件的所有可寫(xiě)數(shù)據(jù)塊數(shù)量進(jìn)行比較,若所述目標(biāo)文件的所有可寫(xiě)數(shù)據(jù)塊數(shù)量小于所述可寫(xiě)塊數(shù)量閾值,則重新由元數(shù)據(jù)管理設(shè)備端分配從所存儲(chǔ)或新被釋放的數(shù)據(jù)塊中分配差額數(shù)量的數(shù)據(jù)塊,使得所述目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊數(shù)量與所述可寫(xiě)塊數(shù)量閾值相等。以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,如果當(dāng)前文件f已有的chunk數(shù)量小于可寫(xiě)塊數(shù)量閾值m,則重新分配足夠數(shù)量的chunk,新分配的chunk數(shù)量加已有的chunk數(shù)量等于可寫(xiě)塊數(shù)量閾值m,將所有chunk信息返回client。通過(guò)上述方式,可以通過(guò)可寫(xiě)塊數(shù)量閾值控制,使得可寫(xiě)數(shù)據(jù)塊維持在一定值,從而使得用戶不需要對(duì)文件寫(xiě)入進(jìn)行人工控制,減小用戶的管理成本。
本領(lǐng)域技術(shù)人員應(yīng)能理解上述確定目標(biāo)文件對(duì)應(yīng)可寫(xiě)數(shù)據(jù)塊的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的目標(biāo)文件對(duì)應(yīng)可寫(xiě)數(shù)據(jù)塊的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
優(yōu)選地,所述為所述目標(biāo)文件分配其他可寫(xiě)的數(shù)據(jù)塊包括:根據(jù)每個(gè)文件當(dāng)前對(duì)應(yīng)的在寫(xiě)數(shù)據(jù)塊及每個(gè)在寫(xiě)數(shù)據(jù)塊對(duì)應(yīng)的塊服務(wù)器,為所述目標(biāo)文件分配其他可寫(xiě)的數(shù)據(jù)塊,其中,每個(gè)其他可寫(xiě)的數(shù)據(jù)塊對(duì)應(yīng)的塊服務(wù)器與每個(gè)在寫(xiě)數(shù)據(jù)塊對(duì)應(yīng)的塊服務(wù)器小于或等于預(yù)定的塊服務(wù)器重復(fù)閾值。即在分配新的可寫(xiě)數(shù)據(jù)塊所對(duì)應(yīng)的數(shù)據(jù)塊服務(wù)器時(shí),盡量避免其所分配的數(shù)據(jù)塊服務(wù)器是元數(shù)據(jù)管理設(shè)備端中已經(jīng)記錄的,從而減少數(shù)據(jù)塊服務(wù)器同時(shí)接受多個(gè)數(shù)據(jù)塊的寫(xiě)入請(qǐng)求從而造成寫(xiě)入熱點(diǎn)的情況。所述塊服務(wù)器是指chunksever,即數(shù)據(jù)管理模塊本文亦稱之為數(shù)據(jù)塊服務(wù)器或塊服務(wù)器,用于維護(hù)數(shù)據(jù)塊副本的模塊,提供數(shù)據(jù)塊副本的訪問(wèn)的接口。所述塊服務(wù)器重復(fù)閾值是指允許塊服務(wù)器同時(shí)提供不同的數(shù)據(jù)塊進(jìn)行寫(xiě)入的數(shù)量,例如,所述塊服務(wù)器重復(fù)閾值為3,即每個(gè)塊服務(wù)器僅可對(duì)三個(gè)數(shù)據(jù)塊提供服務(wù)。對(duì)數(shù)據(jù)塊對(duì)應(yīng)的塊服務(wù)器的具體分配方式,以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,在元數(shù)據(jù)管理設(shè)備端對(duì)chunk位置的分配方面:記錄當(dāng)前可寫(xiě)chunk所在的所有chunkserver,這部分信息以緩存的形式存在,不需要持久化,宕機(jī)重啟后可以根據(jù)上面記錄的元數(shù)據(jù)信息恢復(fù)出來(lái)。分配新的chunk的時(shí)候,根據(jù)塊服務(wù)器重復(fù)閾值避免新分配的chunkserver與上述步驟記錄的chunkserver重復(fù)?;蛘哌@一步操作采用盡量而為的策略,當(dāng)集群可寫(xiě)的chunkserver數(shù)量太少,無(wú)法滿足不重復(fù)的要求的時(shí)候,也允許chunk的分配動(dòng)作成功。文件內(nèi)部的數(shù)據(jù)分部信息可見(jiàn),有效的避免多個(gè)chunk分布在相同的chunkserver上,消除熱點(diǎn),保證了寫(xiě)入吞吐量的實(shí)際效果。
圖7示出根據(jù)本申請(qǐng)另一個(gè)優(yōu)選實(shí)例的一種實(shí)現(xiàn)在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的設(shè)備中數(shù)據(jù)塊寫(xiě)入執(zhí)行裝置示意圖。所述數(shù)據(jù)塊寫(xiě)入執(zhí)行裝置113包括寫(xiě)入請(qǐng)求接受單元1131、數(shù)據(jù)塊寫(xiě)入執(zhí)行單元1132、數(shù)據(jù)塊更新單元1133。
其中,寫(xiě)入請(qǐng)求接受單元1131接收關(guān)于所述目標(biāo)文件的寫(xiě)入請(qǐng)求;數(shù)據(jù)塊寫(xiě)入執(zhí)行單元1132根據(jù)所述寫(xiě)入請(qǐng)求對(duì)所述多個(gè)可寫(xiě)數(shù)據(jù)塊中當(dāng)前第一個(gè)可寫(xiě)數(shù)據(jù)塊對(duì)應(yīng)的一個(gè)或多個(gè)數(shù)據(jù)塊副本執(zhí)行文件寫(xiě)入;數(shù)據(jù)塊更新單元1133更新所述多個(gè)可寫(xiě)數(shù)據(jù)塊中當(dāng)前第一個(gè)可寫(xiě)數(shù)據(jù)塊。
具體地,寫(xiě)入請(qǐng)求接受單元1131接收關(guān)于所述目標(biāo)文件的寫(xiě)入請(qǐng)求。即用戶設(shè)備端接受關(guān)于所述目標(biāo)文件的寫(xiě)入請(qǐng)求,因?yàn)樗瞿繕?biāo)文件可寫(xiě)入的數(shù)據(jù)塊數(shù)量大于所述可寫(xiě)塊數(shù)量閾值,因此支持用戶同時(shí)發(fā)起相應(yīng)數(shù)量的寫(xiě)入請(qǐng)求。以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,用戶設(shè)備端client在數(shù)據(jù)寫(xiě)入流程中支持用戶同時(shí)發(fā)起m個(gè)寫(xiě)請(qǐng)求,m等于當(dāng)前可寫(xiě)chunk的數(shù)量。同時(shí)接受若干關(guān)于單個(gè)文件的寫(xiě)請(qǐng)求,使得單個(gè)文件的寫(xiě)入速率提升。
接著,數(shù)據(jù)塊寫(xiě)入執(zhí)行單元1132根據(jù)所述寫(xiě)入請(qǐng)求對(duì)所述多個(gè)可寫(xiě)數(shù)據(jù)塊中當(dāng)前第一個(gè)可寫(xiě)數(shù)據(jù)塊對(duì)應(yīng)的一個(gè)或多個(gè)數(shù)據(jù)塊副本執(zhí)行文件寫(xiě)入。即用戶設(shè)備端在接受到所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊后按照默認(rèn)排序或依據(jù)一定的排序準(zhǔn)則對(duì)所述可寫(xiě)數(shù)據(jù)塊的數(shù)據(jù)塊服務(wù)器進(jìn)行尋找,并傳達(dá)相應(yīng)的寫(xiě)入請(qǐng)求,從而在數(shù)據(jù)塊及其副本上進(jìn)行寫(xiě)入。以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,client收到可寫(xiě)chunk信息后按順序緩存,同時(shí)將下次可寫(xiě)chunk的序號(hào)i設(shè)置為第一個(gè)可寫(xiě)chunk的序號(hào),client收到用戶的寫(xiě)入請(qǐng)求,選取序號(hào)為i的chunk,將數(shù)據(jù)寫(xiě)入請(qǐng)求發(fā)往這個(gè)chunk的所有chunkserver,同時(shí)將i序號(hào)修改為下一個(gè)可寫(xiě)chunk的序號(hào)。
接著,數(shù)據(jù)塊更新單元1133更新所述多個(gè)可寫(xiě)數(shù)據(jù)塊中當(dāng)前第一個(gè)可寫(xiě)數(shù)據(jù)塊。即用戶設(shè)備端按順序?qū)λ袑?xiě)入請(qǐng)求進(jìn)行響應(yīng),即按順序?qū)λ鰯?shù)據(jù)塊執(zhí)行寫(xiě)入,當(dāng)所述數(shù)據(jù)塊排序所在的第一個(gè)可寫(xiě)數(shù)據(jù)塊被執(zhí)行寫(xiě)入后,將后續(xù)的所述可寫(xiě)數(shù)據(jù)塊更新排序信息,例如上文舉例,client收到用戶的寫(xiě)入請(qǐng)求,選取序號(hào)為i的chunk,將數(shù)據(jù)寫(xiě)入請(qǐng)求發(fā)往這個(gè)chunk的所有chunkserver,同時(shí)將i序號(hào)修改為下一個(gè)可寫(xiě)chunk的序號(hào),即每當(dāng)用戶發(fā)起寫(xiě)請(qǐng)求的時(shí)候,根據(jù)序號(hào)i選擇相應(yīng)的chunk,同時(shí)將i指向下一個(gè)chunk,這樣以輪詢的方式訪問(wèn)所有的chunk,避免某個(gè)chunk成為寫(xiě)入的熱點(diǎn)。
本領(lǐng)域技術(shù)人員應(yīng)能理解上述對(duì)可寫(xiě)數(shù)據(jù)塊進(jìn)行輪詢寫(xiě)入的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的對(duì)可寫(xiě)數(shù)據(jù)塊進(jìn)行輪詢寫(xiě)入的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
優(yōu)選地,所述數(shù)據(jù)塊寫(xiě)入執(zhí)行裝置113還包括:新寫(xiě)入請(qǐng)求接受單元1134(未示出),所述新寫(xiě)入請(qǐng)求接受單元1134當(dāng)在所述一個(gè)或多個(gè)數(shù)據(jù)塊副本均成功執(zhí)行文件寫(xiě)入,回收所述當(dāng)前第一個(gè)可寫(xiě)數(shù)據(jù)塊以接收關(guān)于所述目標(biāo)文件的新寫(xiě)入請(qǐng)求。是指在某個(gè)可寫(xiě)數(shù)據(jù)塊及其副本進(jìn)行寫(xiě)入后,當(dāng)所有的塊服務(wù)器均反饋寫(xiě)入成功后,用戶設(shè)備端返回用戶該數(shù)據(jù)塊所對(duì)應(yīng)的寫(xiě)入請(qǐng)求寫(xiě)入成功,進(jìn)而因?yàn)楫?dāng)前所述可寫(xiě)數(shù)據(jù)塊沒(méi)有寫(xiě)滿觸發(fā)重新分配可寫(xiě)數(shù)據(jù)塊的情況,因此可重新接受用戶關(guān)于所述目標(biāo)文件的寫(xiě)入請(qǐng)求。以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,當(dāng)某個(gè)chunk的所有chunkserver都返回client成功的時(shí)候,client返回用戶成功,寫(xiě)流程返回接收用戶新的請(qǐng)求的階段,從而充分利用可寫(xiě)數(shù)據(jù)塊同時(shí)使得單文件的寫(xiě)入保持在一定數(shù)量數(shù)據(jù)塊的同時(shí)寫(xiě)入中,提升單文件寫(xiě)入速率。
優(yōu)選地,所述數(shù)據(jù)塊寫(xiě)入執(zhí)行裝置113包括:寫(xiě)入請(qǐng)求阻塞單元1135(未示出),所述寫(xiě)入請(qǐng)求阻塞單元1135當(dāng)所述多個(gè)可寫(xiě)數(shù)據(jù)塊中每個(gè)可寫(xiě)數(shù)據(jù)塊都在執(zhí)行文件寫(xiě)入時(shí),阻塞關(guān)于所述目標(biāo)文件的寫(xiě)入請(qǐng)求。即因?yàn)樗鰣?zhí)行文件寫(xiě)入的可寫(xiě)數(shù)據(jù)塊與所設(shè)置的可寫(xiě)塊數(shù)量閾值相等,因此同時(shí)接受的所述目標(biāo)文件的寫(xiě)入請(qǐng)求與可寫(xiě)塊數(shù)量閾值相等,通過(guò)在所有可寫(xiě)數(shù)據(jù)塊均執(zhí)行寫(xiě)入后阻塞相關(guān)寫(xiě)入請(qǐng)求的方式使得可以通過(guò)可寫(xiě)塊數(shù)量閾值對(duì)單文件同時(shí)寫(xiě)入進(jìn)程數(shù)量進(jìn)行控制,從而達(dá)到用戶不需要自己管理文件多進(jìn)程寫(xiě)入的木大,只要根據(jù)寫(xiě)入需求控制所述可寫(xiě)塊數(shù)量閾值即可,從而減輕用戶的管理負(fù)擔(dān)。以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,重復(fù)對(duì)可寫(xiě)chunk按順序進(jìn)行寫(xiě)入請(qǐng)求響應(yīng)執(zhí)行,直到當(dāng)前所有的可寫(xiě)chunk都有數(shù)據(jù)正在寫(xiě)入,阻塞用戶的寫(xiě)入請(qǐng)求。
圖8示出根據(jù)本申請(qǐng)另一個(gè)方面的元數(shù)據(jù)管理設(shè)備端設(shè)備以及用戶設(shè)備端設(shè)備配合實(shí)現(xiàn)的一種實(shí)現(xiàn)在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的設(shè)備中實(shí)現(xiàn)修改可寫(xiě)塊數(shù)量閾值功能的示意圖。為實(shí)現(xiàn)所述修改可寫(xiě)塊數(shù)量閾值功能,所述用戶設(shè)備端設(shè)備包括可寫(xiě)塊數(shù)量閾值設(shè)置請(qǐng)求發(fā)送裝置115。所述元數(shù)據(jù)管理設(shè)備端設(shè)備包括可寫(xiě)塊數(shù)量閾值設(shè)置請(qǐng)求接受裝置124、可寫(xiě)塊數(shù)量閾值更新裝置125。
其中,可寫(xiě)塊數(shù)量閾值設(shè)置請(qǐng)求發(fā)送裝置115將用戶提交的關(guān)于所述目標(biāo)文件的可寫(xiě)塊數(shù)量閾值設(shè)置請(qǐng)求發(fā)送至所述元數(shù)據(jù)管理設(shè)備,其中,所述可寫(xiě)塊數(shù)量閾值設(shè)置請(qǐng)求包括關(guān)于所述目標(biāo)文件的新的可寫(xiě)塊數(shù)量閾值??蓪?xiě)塊數(shù)量閾值設(shè)置請(qǐng)求接受裝置124接收所述用戶設(shè)備發(fā)送的關(guān)于所述目標(biāo)文件的可寫(xiě)塊數(shù)量閾值設(shè)置請(qǐng)求,其中,所述可寫(xiě)塊數(shù)量閾值設(shè)置請(qǐng)求包括關(guān)于所述目標(biāo)文件的新的可寫(xiě)塊數(shù)量閾值;可寫(xiě)塊數(shù)量閾值更新裝置125根據(jù)所述新的可寫(xiě)塊數(shù)量閾值更新所述可寫(xiě)塊數(shù)量閾值。
具體地,可寫(xiě)塊數(shù)量閾值設(shè)置請(qǐng)求發(fā)送裝置115將用戶提交的關(guān)于所述目標(biāo)文件的可寫(xiě)塊數(shù)量閾值設(shè)置請(qǐng)求發(fā)送至所述元數(shù)據(jù)管理設(shè)備,其中,所述可寫(xiě)塊數(shù)量閾值設(shè)置請(qǐng)求包括關(guān)于所述目標(biāo)文件的新的可寫(xiě)塊數(shù)量閾值。接著,可寫(xiě)塊數(shù)量閾值設(shè)置請(qǐng)求接受裝置124接收所述用戶設(shè)備發(fā)送的關(guān)于所述目標(biāo)文件的可寫(xiě)塊數(shù)量閾值設(shè)置請(qǐng)求,其中,所述可寫(xiě)塊數(shù)量閾值設(shè)置請(qǐng)求包括關(guān)于所述目標(biāo)文件的新的可寫(xiě)塊數(shù)量閾值;是指所述可寫(xiě)塊數(shù)量閾值是可以根據(jù)用戶的寫(xiě)入需求進(jìn)行調(diào)整,將調(diào)整的具體數(shù)據(jù)和請(qǐng)求通過(guò)用戶設(shè)備端發(fā)送至元數(shù)據(jù)塊管理設(shè)備端即可。具體執(zhí)行中可比較當(dāng)前可寫(xiě)的數(shù)據(jù)塊數(shù)量與需要設(shè)置的所述可寫(xiě)塊數(shù)量閾值是否相等,若相等則不進(jìn)行修改,若不等,則將所述可寫(xiě)塊數(shù)量閾值修改為所需的數(shù)值,但不限于此。以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,用戶根據(jù)寫(xiě)入吞吐的要求,決定將可寫(xiě)chunk的數(shù)量設(shè)置為m;用戶調(diào)用client接口,獲取當(dāng)前可寫(xiě)chunk的數(shù)量;client向master發(fā)起請(qǐng)求,獲取當(dāng)前可寫(xiě)chunk的數(shù)量;master收到client請(qǐng)求后在內(nèi)存中找到文件可寫(xiě)chunk的數(shù)量n,將n返回client,cilent將當(dāng)前可寫(xiě)chunk數(shù)量n返回用戶;用戶根據(jù)n和m的值進(jìn)行判斷,如果n==m,則無(wú)需修改;如果n!=m,則調(diào)用client接口,設(shè)置當(dāng)前可寫(xiě)chunk的數(shù)量為m;client向master發(fā)起請(qǐng)求,將可寫(xiě)chunk數(shù)量設(shè)置為m。
接著,可寫(xiě)塊數(shù)量閾值更新裝置125根據(jù)所述新的可寫(xiě)塊數(shù)量閾值更新所述可寫(xiě)塊數(shù)量閾值。是指所述元數(shù)據(jù)塊管理設(shè)備端接受請(qǐng)求根據(jù)所述請(qǐng)求中的新的可寫(xiě)塊數(shù)量閾值對(duì)歷史值進(jìn)行更新或存儲(chǔ)。具體地,以典型的三端模式的分布式存儲(chǔ)系統(tǒng)gfs為例,master收到請(qǐng)求后將可寫(xiě)chunk數(shù)量設(shè)置為m,同時(shí)將這個(gè)改動(dòng)持久化。優(yōu)選地,可返回client改動(dòng)成功;client返回用戶改動(dòng)成功。通過(guò)以上方法為分布式文件系統(tǒng)添加了一種新的數(shù)據(jù)寫(xiě)入方式,允許單個(gè)文件同時(shí)可以寫(xiě)多個(gè)chunk,同時(shí)可寫(xiě)chunk的個(gè)數(shù)支持動(dòng)態(tài)調(diào)整,從而用戶不需要自己管理多路寫(xiě)入的文件,只需要根據(jù)寫(xiě)入的需求調(diào)整可寫(xiě)數(shù)據(jù)塊的數(shù)量,節(jié)約用戶管理成本。
此外,本申請(qǐng)?zhí)峁┝艘环N用于在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的元數(shù)據(jù)管理設(shè)備端設(shè)備,其中,該設(shè)備包括:
處理器;
以及被安排成存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的存儲(chǔ)器,所述可執(zhí)行指令在被執(zhí)行時(shí)使所述處理器:
獲取用戶設(shè)備提交的關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求;
根據(jù)所述目標(biāo)文件對(duì)應(yīng)的可寫(xiě)塊數(shù)量閾值確定所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊;
將所述多個(gè)可寫(xiě)數(shù)據(jù)塊返回至所述用戶設(shè)備。
此外,本申請(qǐng)?zhí)峁┝艘环N用于在分布式存儲(chǔ)系統(tǒng)中執(zhí)行文件寫(xiě)入的用戶設(shè)備端設(shè)備,其中,該設(shè)備包括:
處理器;
以及被安排成存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的存儲(chǔ)器,所述可執(zhí)行指令在被執(zhí)行時(shí)使所述處理器:
向元數(shù)據(jù)管理設(shè)備提交關(guān)于目標(biāo)文件的可寫(xiě)數(shù)據(jù)塊的塊信息請(qǐng)求;
接收所述元數(shù)據(jù)管理設(shè)備基于所述塊信息請(qǐng)求返回的、所述目標(biāo)文件對(duì)應(yīng)的多個(gè)可寫(xiě)數(shù)據(jù)塊;
根據(jù)關(guān)于所述目標(biāo)文件的寫(xiě)入請(qǐng)求對(duì)所述多個(gè)可寫(xiě)數(shù)據(jù)塊中之一執(zhí)行文件寫(xiě)入。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本申請(qǐng)進(jìn)行各種改動(dòng)和變型而不脫離本申請(qǐng)的精神和范圍。這樣,倘若本申請(qǐng)的這些修改和變型屬于本申請(qǐng)權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請(qǐng)也意圖包含這些改動(dòng)和變型在內(nèi)。
需要注意的是,本申請(qǐng)可在軟件和/或軟件與硬件的組合體中被實(shí)施,例如,可采用專用集成電路(asic)、通用目的計(jì)算機(jī)或任何其他類似硬件設(shè)備來(lái)實(shí)現(xiàn)。在一個(gè)實(shí)施例中,本申請(qǐng)的軟件程序可以通過(guò)處理器執(zhí)行以實(shí)現(xiàn)上文所述步驟或功能。同樣地,本申請(qǐng)的軟件程序(包括相關(guān)的數(shù)據(jù)結(jié)構(gòu))可以被存儲(chǔ)到計(jì)算機(jī)可讀記錄介質(zhì)中,例如,ram存儲(chǔ)器,磁或光驅(qū)動(dòng)器或軟磁盤(pán)及類似設(shè)備。另外,本申請(qǐng)的一些步驟或功能可采用硬件來(lái)實(shí)現(xiàn),例如,作為與處理器配合從而執(zhí)行各個(gè)步驟或功能的電路。
另外,本申請(qǐng)的一部分可被應(yīng)用為計(jì)算機(jī)程序產(chǎn)品,例如計(jì)算機(jī)程序指令,當(dāng)其被計(jì)算機(jī)執(zhí)行時(shí),通過(guò)該計(jì)算機(jī)的操作,可以調(diào)用或提供根據(jù)本申請(qǐng)的方法和/或技術(shù)方案。而調(diào)用本申請(qǐng)的方法的程序指令,可能被存儲(chǔ)在固定的或可移動(dòng)的記錄介質(zhì)中,和/或通過(guò)廣播或其他信號(hào)承載媒體中的數(shù)據(jù)流而被傳輸,和/或被存儲(chǔ)在根據(jù)所述程序指令運(yùn)行的計(jì)算機(jī)設(shè)備的工作存儲(chǔ)器中。在此,根據(jù)本申請(qǐng)的一個(gè)實(shí)施例包括一個(gè)裝置,該裝置包括用于存儲(chǔ)計(jì)算機(jī)程序指令的存儲(chǔ)器和用于執(zhí)行程序指令的處理器,其中,當(dāng)該計(jì)算機(jī)程序指令被該處理器執(zhí)行時(shí),觸發(fā)該裝置運(yùn)行基于前述根據(jù)本申請(qǐng)的多個(gè)實(shí)施例的方法和/或技術(shù)方案。
對(duì)于本領(lǐng)域技術(shù)人員而言,顯然本申請(qǐng)不限于上述示范性實(shí)施例的細(xì)節(jié),而且在不背離本申請(qǐng)的精神或基本特征的情況下,能夠以其他的具體形式實(shí)現(xiàn)本申請(qǐng)。因此,無(wú)論從哪一點(diǎn)來(lái)看,均應(yīng)將實(shí)施例看作是示范性的,而且是非限制性的,本申請(qǐng)的范圍由所附權(quán)利要求而不是上述說(shuō)明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本申請(qǐng)內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標(biāo)記視為限制所涉及的權(quán)利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復(fù)數(shù)。裝置權(quán)利要求中陳述的多個(gè)單元或裝置也可以由一個(gè)單元或裝置通過(guò)軟件或者硬件來(lái)實(shí)現(xiàn)。第一,第二等詞語(yǔ)用來(lái)表示名稱,而并不表示任何特定的順序。