欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

IO數(shù)據(jù)的讀寫方法和裝置與流程

文檔序號(hào):11773939閱讀:482來源:國(guó)知局
IO數(shù)據(jù)的讀寫方法和裝置與流程

本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種io數(shù)據(jù)的讀寫方法和裝置。



背景技術(shù):

現(xiàn)有技術(shù)中,當(dāng)從上層接收io數(shù)據(jù)時(shí),將數(shù)據(jù)保存到硬盤后,發(fā)送響應(yīng)消息。硬盤的響應(yīng)速度影響了整個(gè)進(jìn)程的速度。



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

本發(fā)明的實(shí)施例提供了一種io數(shù)據(jù)的讀寫方法和裝置,本發(fā)明能夠加快系統(tǒng)的響應(yīng)速度。

為了實(shí)現(xiàn)上述目的,本發(fā)明采取了如下技術(shù)方案。

一種io數(shù)據(jù)的讀寫方法,包括:

系統(tǒng)從上層接收io數(shù)據(jù);

將所述io數(shù)據(jù)保存到第一硬盤中,將所述io數(shù)據(jù)保存到系統(tǒng)內(nèi)存中;

給所述上層發(fā)送接收到所述io數(shù)據(jù)的響應(yīng)消息;

判斷是否滿足預(yù)定條件;

當(dāng)滿足所述預(yù)定條件時(shí),將所述系統(tǒng)內(nèi)存中的io數(shù)據(jù)同步到第二硬盤中;其中,所述第一硬盤的響應(yīng)速度大于所述第二硬盤的響應(yīng)速度;

對(duì)從所述系統(tǒng)內(nèi)存中同步到所述第二硬盤的io數(shù)據(jù)在所述第一硬盤中進(jìn)行標(biāo)記。

一種數(shù)據(jù)的讀寫裝置,包括:

接收單元,系統(tǒng)從上層接收io數(shù)據(jù);

保存單元,將所述io數(shù)據(jù)保存到第一硬盤中,將所述io數(shù)據(jù)保存到系統(tǒng)內(nèi)存中;

發(fā)送單元,給所述上層發(fā)送接收到所述io數(shù)據(jù)的響應(yīng)消息;

判斷單元,判斷是否滿足預(yù)定條件;

同步單元,當(dāng)滿足所述預(yù)定條件時(shí),將所述系統(tǒng)內(nèi)存中的io數(shù)據(jù)同步到第二硬盤中;其中,所述第一硬盤的響應(yīng)速度大于所述第二硬盤的響應(yīng)速度;

標(biāo)記單元,對(duì)從所述系統(tǒng)內(nèi)存中同步到所述第二硬盤的io數(shù)據(jù)在所述第一硬盤中進(jìn)行標(biāo)記。

由上述本發(fā)明的實(shí)施例提供的技術(shù)方案可以看出,本發(fā)明實(shí)施例中,將第一硬盤作為第二硬盤的緩存,解決傳統(tǒng)的第一硬盤性能慢的問題,加快系統(tǒng)的響應(yīng)速度。

本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過本發(fā)明的實(shí)踐了解到。

附圖說明

為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1為本發(fā)明實(shí)施例提供的一種io數(shù)據(jù)的讀寫方法的處理流程圖;

圖2為本發(fā)明實(shí)施例中第一硬盤的劃分示意圖;

圖3為本發(fā)明實(shí)施例中元數(shù)據(jù)塊的示意圖。

圖4a為本發(fā)明一實(shí)施例中第一元數(shù)據(jù)區(qū)的示意圖;

圖4b為本發(fā)明一實(shí)施例中的第一元數(shù)據(jù)區(qū)的示意圖;

圖4c為本發(fā)明一實(shí)施例中的第一元數(shù)據(jù)區(qū)的示意圖;

圖4d為本發(fā)明一實(shí)施例中的第一元數(shù)據(jù)區(qū)的示意圖;

圖4e為本發(fā)明一實(shí)施例中的第一元數(shù)據(jù)區(qū)的示意圖;

圖5為本發(fā)明實(shí)施例提供的一種io數(shù)據(jù)的讀寫裝置的連接示意圖。

具體實(shí)施方式

下面詳細(xì)描述本發(fā)明的實(shí)施方式,所述實(shí)施方式的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施方式是示例性的,僅用于解釋本發(fā)明,而不能解釋為對(duì)本發(fā)明的限制。

如圖1所示,為本發(fā)明所述的一種io數(shù)據(jù)的讀寫方法,包括:

步驟110,系統(tǒng)從上層接收io數(shù)據(jù);

步驟120,將所述io數(shù)據(jù)保存到第一硬盤中,將所述io數(shù)據(jù)保存到系統(tǒng)內(nèi)存中;

步驟130,給所述上層發(fā)送接收到所述io數(shù)據(jù)的響應(yīng)消息;

步驟140,判斷是否滿足預(yù)定條件;其中,所述預(yù)定條件為:是否滿足預(yù)定時(shí)長(zhǎng);或者,所述第一硬盤中的記錄的所述io數(shù)據(jù)的大小超過預(yù)定值。

步驟150,當(dāng)滿足所述預(yù)定條件時(shí),將所述系統(tǒng)內(nèi)存中的io數(shù)據(jù)同步到第二硬盤中;其中,所述第一硬盤的響應(yīng)速度大于所述第二硬盤的響應(yīng)速度;

步驟160,對(duì)從所述系統(tǒng)內(nèi)存中同步到所述第二硬盤的io數(shù)據(jù)在所述第一硬盤中進(jìn)行標(biāo)記。

由上述本發(fā)明的實(shí)施例提供的技術(shù)方案可以看出,本發(fā)明實(shí)施例中,將第一硬盤作為第二硬盤的緩存,解決傳統(tǒng)的第一硬盤性能慢的問題,加快系統(tǒng)的響應(yīng)速度。

可選的,所述方法還包括:

步驟170,當(dāng)所述系統(tǒng)重啟后,根據(jù)所述標(biāo)記,獲取所述第一硬盤中的未同步到所述第二硬盤中的io數(shù)據(jù);

步驟180,將所述第一硬盤中的未同步到所述第二硬盤中io數(shù)據(jù)同步到所述第二硬盤中。

其中,所述第一硬盤可以為ssd;所述第二硬盤可以為hdd。當(dāng)然,也可以為其他硬盤。

其中,步驟12中的將所述io數(shù)據(jù)保存到系統(tǒng)內(nèi)存中的步驟包括:

步驟121,將所述第一硬盤分為第一元數(shù)據(jù)區(qū)、第二元數(shù)據(jù)區(qū)和數(shù)據(jù)存儲(chǔ)區(qū);例如,如圖2所示。

步驟122,將所述數(shù)據(jù)存儲(chǔ)區(qū)分為預(yù)定大小的至少一個(gè)數(shù)據(jù)塊,所述數(shù)據(jù)塊用于存儲(chǔ)所述io數(shù)據(jù);

步驟123,將所述第二元數(shù)據(jù)區(qū)分為與所述數(shù)據(jù)塊相同數(shù)量的至少一個(gè)元數(shù)據(jù)塊,所述元數(shù)據(jù)塊用于存儲(chǔ)所述io數(shù)據(jù)在與所述元數(shù)據(jù)塊序號(hào)相同的數(shù)據(jù)塊中的第一位置信息;如圖3所示,所述第一位置信息包括:所述io數(shù)據(jù)所在的數(shù)據(jù)塊的序號(hào)、所述io數(shù)據(jù)在所述數(shù)據(jù)塊中的偏移量以及所述io數(shù)據(jù)的數(shù)據(jù)大小。也就是說,一個(gè)元數(shù)據(jù)塊對(duì)應(yīng)一個(gè)數(shù)據(jù)塊,元數(shù)據(jù)塊記錄對(duì)應(yīng)的數(shù)據(jù)塊的位置信息。

步驟124,所述第一元數(shù)據(jù)區(qū)用于存儲(chǔ)所述第一位置信息在所述第二元數(shù)據(jù)區(qū)的第二位置信息;如圖4a所示,所述第二位置信息包括:當(dāng)前待存儲(chǔ)所述io數(shù)據(jù)的數(shù)據(jù)塊的當(dāng)前物理序號(hào)cur、當(dāng)前待存儲(chǔ)所述io數(shù)據(jù)的數(shù)據(jù)塊的當(dāng)前遞增序號(hào)seq、每個(gè)數(shù)據(jù)塊的遞增序號(hào)以及對(duì)應(yīng)的指示每個(gè)數(shù)據(jù)塊中的io數(shù)據(jù)是否同步到第二硬盤的標(biāo)記;所述當(dāng)前物理序號(hào)cur的初始值為0,所述當(dāng)前遞增序號(hào)seq的初始值為1;也就是說,第二元數(shù)據(jù)區(qū)保存有數(shù)據(jù)存儲(chǔ)區(qū)的元數(shù)據(jù);第一元數(shù)據(jù)區(qū)保存有第二元數(shù)據(jù)區(qū)的元數(shù)據(jù)的元數(shù)據(jù)。

步驟124,將所述io數(shù)據(jù)依次保存到各個(gè)所述數(shù)據(jù)塊;如圖4b所示,當(dāng)?shù)谝粩?shù)據(jù)塊存滿時(shí),將所述io數(shù)據(jù)存入第二數(shù)據(jù)塊,并對(duì)所述當(dāng)前物理序號(hào)cur進(jìn)行加一運(yùn)算;并對(duì)所述當(dāng)前遞增序號(hào)seq進(jìn)行加一運(yùn)算。如圖4c所示,當(dāng)所述第一硬盤的最后一數(shù)據(jù)塊存滿時(shí),從所述第一個(gè)數(shù)據(jù)塊開始存儲(chǔ)所述io數(shù)據(jù),進(jìn)行新的循環(huán);對(duì)所述當(dāng)前物理序號(hào)cur初始化,并對(duì)所述當(dāng)前遞增序號(hào)seq進(jìn)行加一運(yùn)算。假設(shè)劃分了64個(gè)數(shù)據(jù)塊,在物理序號(hào)為0的數(shù)據(jù)塊在第一次循環(huán)時(shí)對(duì)應(yīng)的遞增序號(hào)為1,在第二次循環(huán)時(shí)對(duì)應(yīng)的遞增序號(hào)為65。

步驟124,根據(jù)所述io數(shù)據(jù)在所述數(shù)據(jù)存儲(chǔ)區(qū)中的數(shù)據(jù)塊的保存信息,生成所述數(shù)據(jù)塊的第一位置信息;

步驟125,將所述數(shù)據(jù)塊的所述第一位置信息保存在與所述數(shù)據(jù)塊對(duì)應(yīng)的所述元數(shù)據(jù)塊中;

步驟126,根據(jù)所述第一位置信息在所述第二元數(shù)據(jù)區(qū)的元數(shù)據(jù)塊中的保存信息,生成第二位置信息;

步驟127,將所述第二位置信息保存在所述第一元數(shù)據(jù)區(qū)中。

其中,步驟16包括:

步驟161,獲取同步的所述io數(shù)據(jù)所在的數(shù)據(jù)塊;

步驟162,在所述第二位置信息中,生成對(duì)同步的所述io數(shù)據(jù)所在的數(shù)據(jù)塊的標(biāo)記。該步驟具體為:將同步的所述io數(shù)據(jù)所在的數(shù)據(jù)塊的遞增序號(hào)清零。例如,圖4b中,物理序號(hào)為1的數(shù)據(jù)塊,對(duì)應(yīng)的遞增序號(hào)為2,已經(jīng)被同步,所以對(duì)應(yīng)的標(biāo)記為0。圖4c中,物理序號(hào)為65的數(shù)據(jù)塊,對(duì)應(yīng)的遞增序號(hào)為66,已經(jīng)被同步,所以對(duì)應(yīng)的標(biāo)記為0。

步驟18包括:

步驟181,根據(jù)所述第二位置信息中的標(biāo)記,查找出沒有同步到所述第二硬盤中的數(shù)據(jù)塊;該步驟181包括:查找遞增序號(hào)不等于當(dāng)前遞增序號(hào)且遞增序號(hào)不為零的數(shù)據(jù)塊,作為沒有同步到所述第二硬盤中的數(shù)據(jù)塊。

步驟182,從遞增序號(hào)最小的數(shù)據(jù)塊開始,依次將沒有同步到所述第二硬盤中的數(shù)據(jù)塊中的所述io數(shù)據(jù)同步到所述第二硬盤。從遞增序號(hào)最小的數(shù)據(jù)塊開始同步,保證了數(shù)據(jù)同步的正確性和完整性。

以下描述本發(fā)明的應(yīng)用場(chǎng)景。

本應(yīng)用場(chǎng)景中,以第一硬盤為ssd、第二硬盤為hdd為例。hdd為機(jī)械硬盤,速度慢、容量大,但價(jià)格便宜。ssd為固態(tài)硬盤,速度快、容量小,但是價(jià)格比hdd貴。本發(fā)明在存儲(chǔ)系統(tǒng)中,將ssd作為hdd的cache緩存使用,解決了傳統(tǒng)的hdd性能慢的問題。

ssd的使用規(guī)劃(以10g為例):

|元數(shù)據(jù)區(qū)(1g)|數(shù)據(jù)區(qū)(8g)|

元數(shù)據(jù)區(qū)(相當(dāng)于上述的第一元數(shù)據(jù)區(qū)和第二元數(shù)據(jù)區(qū))保存需要寫入的數(shù)據(jù)的位置信息,數(shù)據(jù)區(qū)為需要寫入的數(shù)據(jù)。

元數(shù)據(jù)區(qū):

|元數(shù)據(jù)使用信息(128m)|元數(shù)據(jù)塊1(8m)|元數(shù)據(jù)塊2(8m)|.......|元數(shù)據(jù)塊64(8m)|。

元數(shù)據(jù)使用信息(等同于上述的第二位置信息)保存有:當(dāng)前使用到的數(shù)據(jù)塊的物理序號(hào),遞增序號(hào)(用來重啟時(shí)重新寫入數(shù)據(jù)時(shí)使用),已用每個(gè)數(shù)據(jù)塊的信息(每個(gè)數(shù)據(jù)塊的遞增序號(hào)、數(shù)據(jù)偏移、已經(jīng)寫入數(shù)據(jù)數(shù)量、需要刷入的hdd的數(shù)據(jù)數(shù)量)。

元數(shù)據(jù)塊中保存:需要寫入數(shù)據(jù)的大小、偏移量、數(shù)據(jù)在數(shù)據(jù)塊中的偏移、數(shù)據(jù)校驗(yàn)crc、元數(shù)據(jù)校驗(yàn)crc。

數(shù)據(jù)區(qū)用于保存需要寫入的數(shù)據(jù),可以為64個(gè)。

數(shù)據(jù)區(qū):

|數(shù)據(jù)塊1(128m)|數(shù)據(jù)塊2(128m)|......|數(shù)據(jù)塊64(128m)|

需要準(zhǔn)備的fd有:ssd的direct(直接)方式fd(文件描述符).

hdd的內(nèi)存pagecache(頁(yè)面緩存)方式的fd.

hdd的sync同步方式的fd.

啟動(dòng)一個(gè)線程,該線程的功能為:將ssd中的緩存數(shù)據(jù)每隔一定時(shí)間刷新到hdd。

當(dāng)有數(shù)據(jù)需要寫入時(shí),先寫入ssd(ssd的direct方式fd),同時(shí)寫入hdd內(nèi)存的pagecache中(hdd的內(nèi)存pathcache方式的fd),然后返回。

將數(shù)據(jù)由后臺(tái)線程同步到hdd上(hdd的sync方式的fd)。

其中,將數(shù)據(jù)寫入ssd的步驟具體包括:

將數(shù)據(jù)寫入數(shù)據(jù)區(qū),數(shù)據(jù)區(qū)的偏移由第二元數(shù)據(jù)區(qū)的元數(shù)據(jù)塊中的信息記錄。

然后,將數(shù)據(jù)的大小、偏移、數(shù)據(jù)在數(shù)據(jù)區(qū)的偏移、數(shù)據(jù)校驗(yàn)crc、元數(shù)據(jù)校驗(yàn)crc寫入到元數(shù)據(jù)的元數(shù)據(jù)塊中。

當(dāng)使用一個(gè)新的數(shù)據(jù)塊時(shí),將元數(shù)據(jù)信息中的當(dāng)前使用的數(shù)據(jù)塊編號(hào)記錄,遞增序號(hào)往上增加1,保存到元數(shù)據(jù)信息中所使用的元數(shù)據(jù)塊的信息中。

其中,后臺(tái)線程將數(shù)據(jù)寫入hdd的步驟包括:

每隔一段時(shí)間。具體為:當(dāng)ssd中的數(shù)據(jù)超過一定量,或超過一定時(shí)間,將內(nèi)存pagecache中的數(shù)據(jù)寫入到hdd上。并將已經(jīng)寫入hdd的數(shù)據(jù)進(jìn)行標(biāo)記。這樣就有一個(gè)問題,如果機(jī)器重啟或斷電,就有一定的數(shù)據(jù)量沒有寫入hdd上,仍然在ssd當(dāng)中,所以,在每次系統(tǒng)啟動(dòng)的時(shí)候首先加載ssd中未寫入hdd的數(shù)據(jù),并寫入hdd.

加載時(shí),先遍歷每個(gè)元數(shù)據(jù)的數(shù)據(jù)塊信息,從遞增序號(hào)最小的數(shù)據(jù)塊開始加載。并寫入hdd,并且寫入hdd完成后,將已寫入的數(shù)據(jù)標(biāo)記。

如圖5所示,為本發(fā)明所述的一種數(shù)據(jù)的讀寫裝置,包括:

接收單元21,系統(tǒng)從上層接收io數(shù)據(jù);

保存單元22,將所述io數(shù)據(jù)保存到第一硬盤中,將所述io數(shù)據(jù)保存到系統(tǒng)內(nèi)存中;

發(fā)送單元23,給所述上層發(fā)送接收到所述io數(shù)據(jù)的響應(yīng)消息;

判斷單元24,判斷是否滿足預(yù)定條件;

同步單元25,當(dāng)滿足所述預(yù)定條件時(shí),將所述系統(tǒng)內(nèi)存中的io數(shù)據(jù)同步到第二硬盤中;其中,所述第一硬盤的響應(yīng)速度大于所述第二硬盤的響應(yīng)速度;

標(biāo)記單元26,對(duì)從所述系統(tǒng)內(nèi)存中同步到所述第二硬盤的io數(shù)據(jù)在所述第一硬盤中進(jìn)行標(biāo)記。

以上所述,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
双流县| 梁河县| 莫力| 元谋县| 从江县| 赤壁市| 三明市| 盱眙县| 山阴县| 平泉县| 于都县| 仪陇县| 手游| 天峻县| 建水县| 大理市| 湖口县| 嵊州市| 兴和县| 卢湾区| 大关县| 新昌县| 庐江县| 申扎县| 从江县| 斗六市| 安义县| 白玉县| 平陆县| 洞头县| 诏安县| 三明市| 清原| 上虞市| 东乌珠穆沁旗| 邵东县| 浮山县| 衡山县| 望谟县| 苗栗县| 岱山县|