本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,特別涉及一種數(shù)據(jù)寫入方法及系統(tǒng)。
背景技術(shù):
VMware虛擬機(jī)軟件系統(tǒng)是一種軟件虛擬平臺,所述VMware中可以部署多種分布式架構(gòu),從而實現(xiàn)了服務(wù)器、桌面的產(chǎn)品虛擬化。豐富了用戶計算機(jī)的性能。
發(fā)明人經(jīng)過研究發(fā)現(xiàn),現(xiàn)有的分布式架構(gòu)在向VMware系統(tǒng)中的連續(xù)多個邏輯區(qū)塊中寫入數(shù)據(jù)時,分布式架構(gòu)需要多次讀取需要寫入的數(shù)據(jù),然后再將數(shù)據(jù)寫入到各個邏輯區(qū)塊中,消耗時間多,降低了數(shù)據(jù)的寫入效率。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是提供一種數(shù)據(jù)寫入方法,以解決現(xiàn)有在將數(shù)據(jù)寫入到連續(xù)多個邏輯區(qū)塊中時,需要多次讀取數(shù)據(jù),消耗時間多,降低了數(shù)據(jù)寫入效率的問題。
本發(fā)明還提供一種數(shù)據(jù)寫入系統(tǒng),用以保證上述方法在實際中的實現(xiàn)及應(yīng)用。
一種數(shù)據(jù)寫入方法,包括:
讀取當(dāng)前需要寫入虛擬機(jī)軟件VMware系統(tǒng)中的目標(biāo)數(shù)據(jù);
確定所述VMware系統(tǒng)中需要寫入所述目標(biāo)數(shù)據(jù)的多個連續(xù)邏輯區(qū)塊中的初始邏輯區(qū)塊;
按預(yù)設(shè)的邏輯算法,將所述目標(biāo)數(shù)據(jù),自所述初始邏輯區(qū)塊開始,依次寫入所述多個連續(xù)邏輯區(qū)塊中。
上述的方法,優(yōu)選的,所述讀取當(dāng)前需要寫入VMware系統(tǒng)中的目標(biāo)數(shù)據(jù)包括:
依據(jù)程序指令確定需要讀取數(shù)據(jù)的目標(biāo)邏輯區(qū)塊的物理地址;
依據(jù)所述物理地址查找所述目標(biāo)邏輯區(qū)塊;
在所述目標(biāo)邏輯區(qū)塊中讀取當(dāng)前需要寫入所述VMware系統(tǒng)中的目標(biāo)數(shù)據(jù)。
上述的方法,優(yōu)選的,所述確定所述VMware系統(tǒng)中需要寫入所述目標(biāo)數(shù)據(jù)的多個連續(xù)邏輯區(qū)塊中的初始邏輯區(qū)塊包括:
確定當(dāng)前所述VMware系統(tǒng)中各個進(jìn)程的運(yùn)行進(jìn)度;
依據(jù)所述運(yùn)行進(jìn)度確定與其對應(yīng)的多個連續(xù)邏輯區(qū)塊;
在所述多個連續(xù)邏輯區(qū)塊中確定需要寫入所述目標(biāo)數(shù)據(jù)的初始邏輯區(qū)塊。
上述的方法,優(yōu)選的,所述按預(yù)設(shè)的邏輯算法,將所述目標(biāo)數(shù)據(jù),自所述初始邏輯區(qū)塊開始,依次寫入所述多個連續(xù)邏輯區(qū)塊中包括:
將所述目標(biāo)數(shù)據(jù)寫入所述初始邏輯區(qū)塊中;
當(dāng)寫入完成時,將所述目標(biāo)數(shù)據(jù)直接寫入所述初始邏輯區(qū)塊的后續(xù)相鄰邏輯區(qū)塊中,直至所述目標(biāo)數(shù)據(jù)全部寫入各個邏輯區(qū)塊中。
上述的方法,優(yōu)選的,還包括:
反饋寫入完成的提示信息至客戶端。
一種數(shù)據(jù)寫入系統(tǒng),包括:
讀取單元,用于讀取當(dāng)前需要寫入虛擬機(jī)軟件VMware系統(tǒng)中的目標(biāo)數(shù)據(jù);
確定單元,用于確定所述VMware系統(tǒng)中需要寫入所述目標(biāo)數(shù)據(jù)的多個連續(xù)邏輯區(qū)塊中的初始邏輯區(qū)塊;
寫入單元,用于按預(yù)設(shè)的邏輯算法,將所述目標(biāo)數(shù)據(jù),自所述初始邏輯區(qū)塊開始,依次寫入所述多個連續(xù)邏輯區(qū)塊中。
上述的系統(tǒng),優(yōu)選的,所述讀取單元包括:
第一確定子單元,用于依據(jù)程序指令確定需要讀取數(shù)據(jù)的目標(biāo)邏輯區(qū)塊的物理地址;
查找子單元,用于依據(jù)所述物理地址查找所述目標(biāo)邏輯區(qū)塊;
讀取子單元,用于在所述目標(biāo)邏輯區(qū)塊中讀取當(dāng)前需要寫入所述VMware系統(tǒng)中的目標(biāo)數(shù)據(jù)。
上述的系統(tǒng),優(yōu)選的,所述確定單元包括:
第二確定子單元,用于確定當(dāng)前所述VMware系統(tǒng)中各個進(jìn)程的運(yùn)行進(jìn)度;
第三確定子單元,用于依據(jù)所述運(yùn)行進(jìn)度確定與其對應(yīng)的多個連續(xù)邏輯區(qū)塊;
第四確定子單元,用于在所述多個連續(xù)邏輯區(qū)塊中確定需要寫入所述目標(biāo)數(shù)據(jù)的初始邏輯區(qū)塊。
上述的系統(tǒng),優(yōu)選的,還包括:
判斷單元,用于判斷各個邏輯區(qū)塊中的目標(biāo)數(shù)據(jù)是否寫入完成。
上述的系統(tǒng),優(yōu)選的,還包括:
反饋單元,用于反饋寫入完成的提示信息至客戶端。
與現(xiàn)有技術(shù)相比,本發(fā)明包括以下優(yōu)點:
本發(fā)明提供了一種數(shù)據(jù)寫入方法,讀取當(dāng)前需要寫入虛擬機(jī)軟件VMware系統(tǒng)中的目標(biāo)數(shù)據(jù);確定所述VMware系統(tǒng)中需要寫入所述目標(biāo)數(shù)據(jù)的多個連續(xù)邏輯區(qū)塊中的初始邏輯區(qū)塊;按預(yù)設(shè)的邏輯算法,將所述目標(biāo)數(shù)據(jù),自所述初始邏輯區(qū)塊開始,依次寫入所述多個連續(xù)邏輯區(qū)塊中。本發(fā)明提供的數(shù)據(jù)寫入方法中,對于需要寫入VMware系統(tǒng)中的多個連續(xù)邏輯區(qū)塊中的數(shù)據(jù),只需要讀取一次,然后將讀取的數(shù)據(jù)一次性寫入各個區(qū)塊中,不需要多次讀取數(shù)據(jù),節(jié)約了時間,提升了數(shù)據(jù)寫入的效率。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明提供的一種數(shù)據(jù)寫入方法的方法流程圖;
圖2為本發(fā)明提供的一種數(shù)據(jù)寫入方法的又一方法流程圖;
圖3為本發(fā)明提供的一種數(shù)據(jù)寫入系統(tǒng)的結(jié)構(gòu)示意圖;
圖4為本發(fā)明提供的一種數(shù)據(jù)寫入系統(tǒng)的又一結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明可用于眾多通用或?qū)S玫挠嬎阊b置環(huán)境或配置中。例如:個人計算機(jī)、服務(wù)器計算機(jī)、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、多處理器裝置、包括以上任何裝置或設(shè)備的分布式計算環(huán)境等等。
本發(fā)明提供了一種數(shù)據(jù)寫入方法,所述方法應(yīng)用于VMware系統(tǒng)中,其執(zhí)行主體可以為所述VMware系統(tǒng)中部署的分布式架構(gòu),也可以為所述VMware系統(tǒng)中的某一個服務(wù)器,其方法流程圖如圖1所示,所述方法包括步驟:
S101:讀取當(dāng)前需要寫入虛擬機(jī)軟件VMware系統(tǒng)中的目標(biāo)數(shù)據(jù);
本發(fā)明提供的方法中,當(dāng)分布式架構(gòu)部署在VMware系統(tǒng)中時,當(dāng)需要向所述VMware系統(tǒng)中寫入數(shù)據(jù)時,首先在數(shù)據(jù)分布的邏輯區(qū)塊中讀取需要寫入的目標(biāo)數(shù)據(jù)。
S102:確定所述VMware系統(tǒng)中需要寫入所述目標(biāo)數(shù)據(jù)的多個連續(xù)邏輯區(qū)塊中的初始邏輯區(qū)塊;
本發(fā)明提供的方法中,確定需要將目標(biāo)數(shù)據(jù)寫入到哪些連續(xù)的邏輯區(qū)塊中,并確定多個連續(xù)邏輯區(qū)塊中的初始邏輯區(qū)塊;
S103:按預(yù)設(shè)的邏輯算法,將所述目標(biāo)數(shù)據(jù),自所述初始邏輯區(qū)塊開始,依次寫入所述多個連續(xù)邏輯區(qū)塊中。
本發(fā)明提供的方法中,將讀取的目標(biāo)數(shù)據(jù),一次性逐次寫入到各個連續(xù)邏輯區(qū)塊中。
本發(fā)明提供的數(shù)據(jù)寫入方法,對于需要寫入到VMware系統(tǒng)中的數(shù)據(jù),經(jīng)過一次讀取后,將所述數(shù)據(jù)作為目標(biāo)數(shù)據(jù),逐一的寫入到VMware系統(tǒng)中需要寫入的多個連續(xù)邏輯區(qū)塊中。不需要在對每一個邏輯區(qū)塊進(jìn)行數(shù)據(jù)寫入時,都對數(shù)據(jù)進(jìn)行一次讀取。從而實現(xiàn)了一次讀取就可以全部寫入,節(jié)約了讀取時間,提升了對數(shù)據(jù)的寫入效率。
參考圖2,示出了本發(fā)明實施例中寫入方法的又一方法流程圖,包括步驟:
S201:依據(jù)程序指令確定需要讀取數(shù)據(jù)的目標(biāo)邏輯區(qū)塊的物理地址;
S202:依據(jù)所述物理地址查找所述目標(biāo)邏輯區(qū)塊;
S203:在所述目標(biāo)邏輯區(qū)塊中讀取當(dāng)前需要寫入所述VMware系統(tǒng)中的目標(biāo)數(shù)據(jù)。
本發(fā)明提供的寫入方法中,對于需要寫入VMware系統(tǒng)中的數(shù)據(jù),需要從另外的邏輯區(qū)塊中去讀取拷貝,本發(fā)明中,通多對程序指令的解析,確定需要讀取數(shù)據(jù)的邏輯區(qū)塊的物理地址,依據(jù)該物理地址查找所述邏輯區(qū)塊,然后從邏輯區(qū)塊中讀取需要寫入到VMware系統(tǒng)中的目標(biāo)數(shù)據(jù)。
本發(fā)明提供的數(shù)據(jù)寫入方法中,確定所述VMware系統(tǒng)中需要寫入所述目標(biāo)數(shù)據(jù)的多個連續(xù)邏輯區(qū)塊中的初始邏輯區(qū)塊的過程包括:
確定當(dāng)前所述VMware系統(tǒng)中各個進(jìn)程的運(yùn)行進(jìn)度;
依據(jù)所述運(yùn)行進(jìn)度確定與其對應(yīng)的多個連續(xù)邏輯區(qū)塊;
在所述多個連續(xù)邏輯區(qū)塊中確定需要寫入所述目標(biāo)數(shù)據(jù)的初始邏輯區(qū)塊。
本發(fā)明提供的方法中,依據(jù)當(dāng)前VMware系統(tǒng)的運(yùn)行狀況,確定需要寫入數(shù)據(jù)具體寫入到哪些連續(xù)的邏輯區(qū)塊中。本發(fā)明中綜合考慮各個邏輯區(qū)塊的性能進(jìn)行數(shù)據(jù)寫入。
本發(fā)明提供的數(shù)據(jù)寫入方法中,所述按預(yù)設(shè)的邏輯算法,將所述目標(biāo)數(shù)據(jù),自所述初始邏輯區(qū)塊開始,依次寫入所述多個連續(xù)區(qū)塊中的過程包括:
將所述目標(biāo)數(shù)據(jù)寫入所述初始邏輯區(qū)塊中;
當(dāng)寫入完成時,將所述目標(biāo)數(shù)據(jù)直接寫入所述初始邏輯區(qū)塊的后續(xù)相鄰邏輯區(qū)塊中,直至所述目標(biāo)數(shù)據(jù)全部寫入各個邏輯區(qū)塊中。
本發(fā)明實施例提供的寫入方法中,在確定了需要寫入的數(shù)據(jù)之后,采用預(yù)設(shè)的循環(huán)算法,一次性,依次的將確定的數(shù)據(jù)寫入到各個邏輯區(qū)塊中。
本發(fā)明實施例提供的方法中,完成數(shù)據(jù)的寫入后,反饋寫入完成的信息給客戶端。
本發(fā)明提供的數(shù)據(jù)寫入方法中,VMware系統(tǒng)中可以部署有多種分布式架構(gòu),其中以Ceph+tgt的架構(gòu)在應(yīng)用到vmware系統(tǒng)作為客戶端為例,發(fā)明人經(jīng)過研究發(fā)現(xiàn),Ceph+tgt的架構(gòu)在應(yīng)用到vmware系統(tǒng)作為客戶端時,在映射的lun中拷貝數(shù)據(jù)和裝入虛擬機(jī)的速度非常慢,經(jīng)過分析發(fā)現(xiàn)主要原因在于在該種架構(gòu)中scsi指令write_same的實現(xiàn)過程以及ceph對于小塊寫的性能低,本文通過修改tgt層面的write_same的實現(xiàn)過程,優(yōu)化了對vmware系統(tǒng)的兼容性問題。
本發(fā)明提供的數(shù)據(jù)寫入方法中,通過修改tgt層面的scsi指令write_same的實現(xiàn)方法,優(yōu)化了對vmware系統(tǒng)的兼容性問題。
本發(fā)明中通過分析代碼發(fā)現(xiàn),tgt層面對write_same的實現(xiàn)過程實現(xiàn)了兩種功能:
1、對unmap功能功能的實現(xiàn)直接調(diào)用了ceph中的rbd_discard()函數(shù)接口。
2、對于從write_buf里面讀取一個LBA的數(shù)據(jù),然后寫入到從某個地址開始的后面連續(xù)多個LBA中,主要封裝了ceph的rbd_write()函數(shù)接口。
對一個功能的實現(xiàn),tgt代碼中出現(xiàn)了一個小的bug,需要修改一下;本發(fā)明提供的數(shù)據(jù)寫入方法主要優(yōu)化了write_same的第二個對應(yīng)功能。
本發(fā)明提供的數(shù)據(jù)寫入方法,主要修改tgt中的user目錄下的Bs_rbd.c文件中的271-308行,源碼為:
優(yōu)化后的代碼為:
本發(fā)明提供的寫入方法中,通過這種在vmware系統(tǒng)下映射的lun,拷貝數(shù)據(jù)的速度達(dá)到800K/S,比原來的70K/S提升了近12倍。
本發(fā)明實施例提供的數(shù)據(jù)寫入方法,將原有代碼實現(xiàn)過程中的,每一次寫入都需要讀取數(shù)據(jù)的過程提取到循環(huán)算法之外,只需要讀取一次數(shù)據(jù),讀取完數(shù)據(jù)之后,然后再進(jìn)行區(qū)塊的循環(huán)寫入算法,提升了寫入的效率。
Ceph+tgt的架構(gòu)在應(yīng)用到VMware系統(tǒng)作為客戶端的時候,發(fā)現(xiàn)在映射的lun中拷貝數(shù)據(jù)和裝入虛擬機(jī)的速度非常慢,經(jīng)過分析發(fā)現(xiàn)主要原因在于在該種架構(gòu)中tgt層面的scsi指令write_same的實現(xiàn)過程,以及ceph對于小塊寫性能低,本發(fā)明中主要在tgt層面進(jìn)行了優(yōu)化,通過優(yōu)化write_same指令對于單個LBA的數(shù)據(jù)拷入從某個LBA開始的連續(xù)多個LBA的過程,使其拷貝數(shù)據(jù)的性能提升了近12倍左右。
與圖1所述的寫入方法相對應(yīng)的,本發(fā)明實施例還提供了一種數(shù)據(jù)寫入系統(tǒng),所述系統(tǒng)應(yīng)用于VMware系統(tǒng)中,其結(jié)構(gòu)示意圖如圖3所示,包括:
讀取單元301,用于讀取當(dāng)前需要寫入虛擬機(jī)軟件VMware系統(tǒng)中的目標(biāo)數(shù)據(jù);
確定單元302,用于確定所述VMware系統(tǒng)中需要寫入所述目標(biāo)數(shù)據(jù)的多個連續(xù)邏輯區(qū)塊中的初始邏輯區(qū)塊;
寫入單元303,用于按預(yù)設(shè)的邏輯算法,將所述目標(biāo)數(shù)據(jù),自所述初始邏輯區(qū)塊開始,依次寫入所述多個連續(xù)區(qū)塊中。
本發(fā)明提供的數(shù)據(jù)寫入系統(tǒng),對于需要寫入到VMware系統(tǒng)中的數(shù)據(jù),經(jīng)過一次讀取后,將所述數(shù)據(jù)作為目標(biāo)數(shù)據(jù),逐一的寫入到VMware系統(tǒng)中需要寫入的多個連續(xù)邏輯區(qū)塊中。不需要在對每一個邏輯區(qū)塊進(jìn)行數(shù)據(jù)寫入時,都對數(shù)據(jù)進(jìn)行一次讀取。從而實現(xiàn)了一次讀取就可以全部寫入,節(jié)約了讀取時間,提升了對數(shù)據(jù)的寫入效率。
圖4示出了本發(fā)明實施例提供的數(shù)據(jù)寫入系統(tǒng)的又一詳細(xì)結(jié)構(gòu)示意圖,所述讀取單元301包括:
第一確定子單元304,用于依據(jù)程序指令確定需要讀取數(shù)據(jù)的目標(biāo)邏輯區(qū)塊的物理地址;
查找子單元305,用于依據(jù)所述物理地址查找所述目標(biāo)邏輯區(qū)塊;
讀取子單元306,用于在所述目標(biāo)邏輯區(qū)塊中讀取當(dāng)前需要寫入所述VMware系統(tǒng)中的目標(biāo)數(shù)據(jù)。
所述確定單元302包括:
第二確定子單元307,用于確定當(dāng)前所述VMware系統(tǒng)中各個進(jìn)程的運(yùn)行進(jìn)度;
第三確定子單元308,用于依據(jù)所述運(yùn)行進(jìn)度確定與其對應(yīng)的多個連續(xù)邏輯區(qū)塊;
第四確定子單元309,用于在所述多個連續(xù)邏輯區(qū)塊中確定需要寫入所述目標(biāo)數(shù)據(jù)的初始邏輯區(qū)塊。
所述數(shù)據(jù)寫入系統(tǒng)中,還包括:
判斷單元310,用于判斷各個邏輯區(qū)塊中的目標(biāo)數(shù)據(jù)是否寫入完成。
反饋單元311,用于反饋寫入完成的提示信息至客戶端。
需要說明的是,本說明書中的各個實施例均采用遞進(jìn)的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。對于裝置類實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
為了描述的方便,描述以上裝置時以功能分為各種單元分別描述。當(dāng)然,在實施本發(fā)明時可以把各單元的功能在同一個或多個軟件和/或硬件中實現(xiàn)。
通過以上的實施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺的方式來實現(xiàn)?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例或者實施例的某些部分所述的方法。
以上對本發(fā)明所提供的一種數(shù)據(jù)寫入方法及系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進(jìn)行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。