国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

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

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

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



      背景技術(shù):

      現(xiàn)有技術(shù)中,當(dāng)從上層接收io數(shù)據(jù)時,將數(shù)據(jù)保存到硬盤后,發(fā)送響應(yīng)消息。硬盤的響應(yīng)速度影響了整個進(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ù)定條件時,將所述系統(tǒng)內(nèi)存中的io數(shù)據(jù)同步到第二硬盤中;其中,所述第一硬盤的響應(yīng)速度大于所述第二硬盤的響應(yīng)速度;

      對從所述系統(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ù)定條件時,將所述系統(tǒng)內(nèi)存中的io數(shù)據(jù)同步到第二硬盤中;其中,所述第一硬盤的響應(yīng)速度大于所述第二硬盤的響應(yīng)速度;

      標(biāo)記單元,對從所述系統(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ù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuà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)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施方式是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(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ù)定時長;或者,所述第一硬盤中的記錄的所述io數(shù)據(jù)的大小超過預(yù)定值。

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

      步驟160,對從所述系統(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ù)存儲區(qū);例如,如圖2所示。

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

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

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

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

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

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

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

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

      其中,步驟16包括:

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

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

      步驟18包括:

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

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

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

      本應(yīng)用場景中,以第一硬盤為ssd、第二硬盤為hdd為例。hdd為機(jī)械硬盤,速度慢、容量大,但價格便宜。ssd為固態(tài)硬盤,速度快、容量小,但是價格比hdd貴。本發(fā)明在存儲系統(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ù)塊的物理序號,遞增序號(用來重啟時重新寫入數(shù)據(jù)時使用),已用每個數(shù)據(jù)塊的信息(每個數(shù)據(jù)塊的遞增序號、數(shù)據(jù)偏移、已經(jīng)寫入數(shù)據(jù)數(shù)量、需要刷入的hdd的數(shù)據(jù)數(shù)量)。

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

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

      數(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(頁面緩存)方式的fd.

      hdd的sync同步方式的fd.

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

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

      將數(shù)據(jù)由后臺線程同步到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ù)校驗crc、元數(shù)據(jù)校驗crc寫入到元數(shù)據(jù)的元數(shù)據(jù)塊中。

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

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

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

      加載時,先遍歷每個元數(shù)據(jù)的數(shù)據(jù)塊信息,從遞增序號最小的數(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ù)定條件時,將所述系統(tǒng)內(nèi)存中的io數(shù)據(jù)同步到第二硬盤中;其中,所述第一硬盤的響應(yīng)速度大于所述第二硬盤的響應(yīng)速度;

      標(biāo)記單元26,對從所述系統(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頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1