国产精品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>

      緩存數(shù)據(jù)的刷盤方法及裝置制造方法

      文檔序號:6636637閱讀:291來源:國知局
      緩存數(shù)據(jù)的刷盤方法及裝置制造方法
      【專利摘要】本發(fā)明提供一種緩存數(shù)據(jù)的刷盤方法及裝置。一種緩存數(shù)據(jù)的刷盤方法,應(yīng)用于存儲(chǔ)系統(tǒng)中,所述存儲(chǔ)系統(tǒng)包括控制器、磁盤和SSD,所述SSD作為所述磁盤的緩存,所述方法由控制器執(zhí)行,所述方法包括:向所述SSD發(fā)送緩存數(shù)據(jù)讀取請求,所述緩存數(shù)據(jù)讀取請求包括M個(gè)待刷盤的臟數(shù)據(jù)塊的標(biāo)識;接收所述SSD發(fā)送的緩存數(shù)據(jù)讀取響應(yīng),所述緩存數(shù)據(jù)讀取響應(yīng)包括N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù),M大于或等于N;根據(jù)臟數(shù)據(jù)塊的標(biāo)識與LBA的對應(yīng)關(guān)系,確定所述N個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA;根據(jù)所述N個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA,按照LBA由小至大的順序,依次將所述N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù)存儲(chǔ)至所述磁盤。
      【專利說明】緩存數(shù)據(jù)的刷盤方法及裝置

      【技術(shù)領(lǐng)域】
      [0001 ] 本發(fā)明實(shí)施例涉及存儲(chǔ)技術(shù),尤其涉及一種緩存數(shù)據(jù)的刷盤方法及裝置。

      【背景技術(shù)】
      [0002]隨著固態(tài)硬盤(SSD, Solid State Drive)技術(shù)的成熟和成本的下降,越來越多的存儲(chǔ)系統(tǒng)開始選用SSD作為高速緩沖存儲(chǔ)器(cache)介質(zhì)。
      [0003]現(xiàn)有技術(shù)中,存儲(chǔ)系統(tǒng)通過cache技術(shù)進(jìn)行寫緩存時(shí):控制器首先接收處理器下發(fā)的寫請求,其中該寫請求包括了待寫入數(shù)據(jù)及該待寫入數(shù)據(jù)對應(yīng)的邏輯區(qū)塊地址(LBA,Logical Block Address);其次,將待寫入數(shù)據(jù)寫入到SSD的緩存塊中,將該緩存塊的狀態(tài)設(shè)置為臟數(shù)據(jù)塊,并將該臟數(shù)據(jù)塊的標(biāo)識與待寫入數(shù)據(jù)對應(yīng)的LBA進(jìn)行關(guān)聯(lián)存儲(chǔ);最后在cache的刷盤時(shí)機(jī),向磁盤進(jìn)行數(shù)據(jù)同步(即將寫緩存中的數(shù)據(jù)發(fā)送到磁盤進(jìn)行存儲(chǔ),本發(fā)明中也稱為cache的刷盤)?,F(xiàn)有技術(shù)中,在進(jìn)行cache刷盤時(shí):控制器采用異步1的方式向SSD發(fā)送多個(gè)緩存數(shù)據(jù)讀取請求以獲得多個(gè)臟數(shù)據(jù)塊的緩存數(shù)據(jù);并在接收到任一緩存數(shù)據(jù)讀取請求對應(yīng)的緩存數(shù)據(jù)后,將該緩存數(shù)據(jù)及該緩存數(shù)據(jù)對應(yīng)的LBA發(fā)送至磁盤,以使磁盤將該緩存數(shù)據(jù)存儲(chǔ)至對應(yīng)的LBA。
      [0004]由于磁盤存儲(chǔ)數(shù)據(jù)時(shí),首先需要將磁頭步進(jìn)到LBA所指示的位置,再將緩存數(shù)據(jù)進(jìn)行存儲(chǔ);因此,現(xiàn)有技術(shù)中,存在控制器刷盤效率低的問題。


      【發(fā)明內(nèi)容】

      [0005]本發(fā)明提供一種緩存數(shù)據(jù)的刷盤方法及裝置,用以解決現(xiàn)有技術(shù)中控制器刷盤效率低的問題。
      [0006]第一方面,本發(fā)明提供一種緩存數(shù)據(jù)的刷盤方法,應(yīng)用于存儲(chǔ)系統(tǒng)中,所述存儲(chǔ)系統(tǒng)包括控制器、磁盤和固態(tài)硬盤SSD,所述SSD作為所述磁盤的緩存,所述方法由控制器執(zhí)行,所述方法包括:
      [0007]向所述SSD發(fā)送緩存數(shù)據(jù)讀取請求,所述緩存數(shù)據(jù)讀取請求包括M個(gè)待刷盤的臟數(shù)據(jù)塊的標(biāo)識;
      [0008]接收所述SSD發(fā)送的緩存數(shù)據(jù)讀取響應(yīng),所述緩存數(shù)據(jù)讀取響應(yīng)包括N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù),M大于或等于N ;
      [0009]根據(jù)臟數(shù)據(jù)塊的標(biāo)識與磁盤邏輯區(qū)塊地址LBA的對應(yīng)關(guān)系,確定所述N個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA ;
      [0010]根據(jù)所述N個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA,按照LBA由小至大的順序,依次將所述N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù)存儲(chǔ)至所述磁盤。
      [0011]結(jié)合第一方面,在第一方面的第一種可能實(shí)現(xiàn)的方式中,所述向所述SSD發(fā)送緩存數(shù)據(jù)讀取請求之前,還包括:根據(jù)當(dāng)前刷盤操作的LBA,從全部臟數(shù)據(jù)塊中選擇所述M個(gè)待刷盤的臟數(shù)據(jù)塊,其中,所述M個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的M個(gè)LBA均大于所述當(dāng)前刷盤操作的LBA。
      [0012]結(jié)合第一方面的第一種可能實(shí)現(xiàn)的方式,在第一方面的第二種可能實(shí)現(xiàn)的方式中,所述根據(jù)當(dāng)前刷盤操作的LBA,從全部臟數(shù)據(jù)塊中選擇所述M個(gè)待刷盤的臟數(shù)據(jù)塊,包括:根據(jù)所述當(dāng)前刷盤操作的LBA和每個(gè)臟數(shù)據(jù)塊的LBA,將所述每個(gè)臟數(shù)據(jù)塊放入第一隊(duì)列或第二隊(duì)列,所述第一隊(duì)列中的臟數(shù)據(jù)塊的LBA大于或等于所述當(dāng)前刷盤操作的LBA,所述第二隊(duì)列中的臟數(shù)據(jù)塊的LBA小于所述當(dāng)前刷盤操作的LBA ;從所述第一隊(duì)列中選擇所述M個(gè)待刷盤的臟數(shù)據(jù)塊。
      [0013]結(jié)合第一方面的第第二種可能實(shí)現(xiàn)的方式,在第一方面的第三種可能實(shí)現(xiàn)的方式中,從所述第一隊(duì)列中選擇LBA值小的所述M個(gè)待刷盤的臟數(shù)據(jù)塊。
      [0014]結(jié)合第一方面的第二種或第三種可能實(shí)現(xiàn)的方式,在第一方面的第四種可能實(shí)現(xiàn)的方式中,所述方法還包括:根據(jù)選擇的所述M個(gè)待刷盤的臟數(shù)據(jù)塊的LBA,將所述M個(gè)待刷盤的臟數(shù)據(jù)塊中LBA連續(xù)的臟數(shù)據(jù)塊進(jìn)行合并,獲得合并后的待刷盤的臟數(shù)據(jù)塊;
      [0015]相應(yīng)的,向所述SSD發(fā)送緩存數(shù)據(jù)讀取請求,所述緩存數(shù)據(jù)讀取請求包括M個(gè)待刷盤的臟數(shù)據(jù)塊的標(biāo)識,包括:向所述SSD發(fā)送緩存數(shù)據(jù)讀取請求,所述緩存數(shù)據(jù)讀取請求包括所述合并后的待刷盤的臟數(shù)據(jù)塊的標(biāo)識。
      [0016]第二方面,本發(fā)明提供一種控制器,所述控制器應(yīng)用于存儲(chǔ)系統(tǒng)中,所述存儲(chǔ)系統(tǒng)包括所述控制器、磁盤和固態(tài)硬盤SSD,所述SSD作為所述磁盤的緩存,所述控制器包括:
      [0017]讀取請求發(fā)送模塊,用于向所述SSD發(fā)送緩存數(shù)據(jù)讀取請求,所述緩存數(shù)據(jù)讀取請求包括M個(gè)待刷盤的臟數(shù)據(jù)塊的標(biāo)識;
      [0018]讀取響應(yīng)接收模塊,用于接收所述SSD發(fā)送的緩存數(shù)據(jù)讀取響應(yīng),所述緩存數(shù)據(jù)讀取響應(yīng)包括N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù),M大于或等于N ;
      [0019]LBA確定模塊,用于根據(jù)臟數(shù)據(jù)塊的標(biāo)識與磁盤邏輯區(qū)塊地址LBA的對應(yīng)關(guān)系,確定所述N個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA ;
      [0020]刷盤模塊,用于根據(jù)所述N個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA,按照LBA由小至大的順序,依次將所述N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù)存儲(chǔ)至所述磁盤。
      [0021]結(jié)合第二方面,在第二方面的第一種可能實(shí)現(xiàn)的方式中,所述讀取請求發(fā)送模塊,還用于:根據(jù)當(dāng)前刷盤操作的LBA,從全部臟數(shù)據(jù)塊中選擇所述M個(gè)待刷盤的臟數(shù)據(jù)塊,其中,所述M個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的M個(gè)LBA均大于所述當(dāng)前刷盤操作的LBA。
      [0022]結(jié)合第二方面的第一種可能實(shí)現(xiàn)的方式,在第二方面的第二種可能實(shí)現(xiàn)的方式中,所述讀取請求發(fā)送模塊,具體用于:根據(jù)所述當(dāng)前刷盤操作的LBA和每個(gè)臟數(shù)據(jù)塊的LBA,將所述每個(gè)臟數(shù)據(jù)塊放入第一隊(duì)列或第二隊(duì)列,所述第一隊(duì)列中的臟數(shù)據(jù)塊的LBA大于所述當(dāng)前刷盤操作的LBA,所述第二隊(duì)列中的臟數(shù)據(jù)塊的LBA小于所述當(dāng)前刷盤操作的LBA ;從所述第一隊(duì)列中選擇所述M個(gè)待刷盤的臟數(shù)據(jù)塊。
      [0023]結(jié)合第二方面的第二種可能實(shí)現(xiàn)的方式,在第二方面的第三種可能實(shí)現(xiàn)的方式中,所述讀取請求發(fā)送模塊,具體用于:從所述第一隊(duì)列中選擇LBA值小的所述M個(gè)待刷盤的臟數(shù)據(jù)塊。
      [0024]結(jié)合第二方面的第二種或第三種可能實(shí)現(xiàn)的方式,在第二方面的第四種可能實(shí)現(xiàn)的方式中,所述讀取請求發(fā)送模塊,還用于:根據(jù)選擇的所述M個(gè)待刷盤的臟數(shù)據(jù)塊的LBA,將所述M個(gè)待刷盤的臟數(shù)據(jù)塊中LBA連續(xù)的臟數(shù)據(jù)塊進(jìn)行合并,獲得合并后的待刷盤的臟數(shù)據(jù)塊;
      [0025]相應(yīng)的,所述讀取請求發(fā)送模塊,具體用于:向所述SSD發(fā)送緩存數(shù)據(jù)讀取請求,所述緩存數(shù)據(jù)讀取請求包括所述合并后的待刷盤的臟數(shù)據(jù)塊的標(biāo)識。
      [0026]本發(fā)明提供一種緩存數(shù)據(jù)的刷盤方法及裝置,通過根據(jù)所述N個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA,按照LBA由小至大的順序,依次將所述N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù)存儲(chǔ)至所述磁盤,避免了由于磁盤來回尋道而浪費(fèi)的刷盤時(shí)間,提高了控制器的刷盤效率。

      【專利附圖】

      【附圖說明】
      [0027]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
      [0028]圖1為本發(fā)明緩存數(shù)據(jù)的刷盤方法的應(yīng)用場景示意圖;
      [0029]圖2為本發(fā)明緩存數(shù)據(jù)的刷盤方法實(shí)施例一的流程圖;
      [0030]圖3為本發(fā)明緩存數(shù)據(jù)的刷盤方法實(shí)施例二的流程圖;
      [0031]圖4為本發(fā)明緩存數(shù)據(jù)的刷盤方法實(shí)施例三的流程圖;
      [0032]圖5為本發(fā)明實(shí)施例LBA示意圖;
      [0033]圖6為本發(fā)明控制器實(shí)施例一的結(jié)構(gòu)示意圖;
      [0034]圖7為本發(fā)明控制器實(shí)施例四的結(jié)構(gòu)示意圖。

      【具體實(shí)施方式】
      [0035]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
      [0036]圖1為本發(fā)明緩存數(shù)據(jù)的刷盤方法的應(yīng)用場景示意圖;如圖1所示,存儲(chǔ)系統(tǒng)中,處理器11將待寫入的數(shù)據(jù)發(fā)送至控制器12 ;控制器12首先將接收到的數(shù)據(jù)發(fā)送至SSD 13進(jìn)行緩存,然后再在cache的刷盤時(shí)機(jī)將緩存在SSD 13的數(shù)據(jù)同步至磁盤14?,F(xiàn)有技術(shù)中,控制器12將緩存在SSD 13的數(shù)據(jù)同步至磁盤14時(shí):控制器12采用異步1的方式向SSD 13發(fā)送多個(gè)緩存數(shù)據(jù)讀取請求以獲得多個(gè)緩存數(shù)據(jù);并在接收到任一緩存數(shù)據(jù)讀取請求對應(yīng)的緩存數(shù)據(jù)后,將該緩存數(shù)據(jù)及該緩存數(shù)據(jù)對應(yīng)的LBA發(fā)送至磁盤14,以使磁盤14將該緩存數(shù)據(jù)存儲(chǔ)至對應(yīng)的LBA。由于磁盤存儲(chǔ)數(shù)據(jù)時(shí),首先需要將磁頭步進(jìn)到LBA所指示的位置,再將緩存數(shù)據(jù)進(jìn)行存儲(chǔ);且磁頭只能向一個(gè)方向步進(jìn);因此,存在控制器刷盤效率低的問題。
      [0037]圖2為本發(fā)明緩存數(shù)據(jù)的刷盤方法實(shí)施例一的流程圖,如圖2所示,本實(shí)施例的方法可以包括:
      [0038]步驟201、向SSD發(fā)送緩存數(shù)據(jù)讀取請求,所述緩存數(shù)據(jù)讀取請求包括M個(gè)待刷盤的臟數(shù)據(jù)塊的標(biāo)識;
      [0039]可選的,所述向SSD發(fā)送緩存數(shù)據(jù)讀取請求,包括:
      [0040]向SSD發(fā)送M個(gè)緩存數(shù)據(jù)讀取請求,每一個(gè)緩存數(shù)據(jù)讀取請求中包括一個(gè)待刷盤的臟數(shù)據(jù)塊的標(biāo)識;或者,向SSD發(fā)送一個(gè)緩存數(shù)據(jù)讀取請求,該緩存數(shù)據(jù)讀取請求中包括M個(gè)待刷盤的臟數(shù)據(jù)塊的標(biāo)識。
      [0041]可選的,所述M個(gè)待刷盤的臟數(shù)據(jù)塊可以為所有臟數(shù)據(jù)塊中任選的M個(gè)臟數(shù)據(jù)塊。
      [0042]步驟202、接收所述SSD發(fā)送的緩存數(shù)據(jù)讀取響應(yīng),所述緩存數(shù)據(jù)讀取響應(yīng)包括N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù),M大于或等于N ;
      [0043]步驟203、根據(jù)臟數(shù)據(jù)塊的標(biāo)識與LBA的對應(yīng)關(guān)系,確定所述N個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA ;
      [0044]步驟204、根據(jù)所述N個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA,按照LBA由小至大的順序,依次將所述N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù)存儲(chǔ)至所述磁盤。
      [0045]例如,若N = 5,且待刷盤的臟數(shù)據(jù)塊I對應(yīng)的LBA為2、待刷盤的臟數(shù)據(jù)塊2對應(yīng)的LBA為5、待刷盤的臟數(shù)據(jù)塊3對應(yīng)的LBA為3、待刷盤的臟數(shù)據(jù)塊4對應(yīng)的LBA為6、待刷盤的臟數(shù)據(jù)塊5對應(yīng)的LBA為4 ;則:控制器按照先待刷盤的臟數(shù)據(jù)塊I的緩存數(shù)據(jù)、再待刷盤的臟數(shù)據(jù)塊3的緩存數(shù)據(jù)、再待刷盤的臟數(shù)據(jù)塊5的緩存數(shù)據(jù)、再待刷盤的臟數(shù)據(jù)塊2的緩存數(shù)據(jù)、再待刷盤的臟數(shù)據(jù)塊4的緩存數(shù)據(jù)的順序?qū)?個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù)存儲(chǔ)至磁盤。
      [0046]現(xiàn)有技術(shù)中,控制器通過異步1的方式向SSD發(fā)送多個(gè)緩存數(shù)據(jù)讀取請求,并在接收到任一緩存數(shù)據(jù)讀取請求對應(yīng)的緩存數(shù)據(jù)后,就將該緩存數(shù)據(jù)同步至磁盤。本發(fā)明中,根據(jù)所述N個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA,按照LBA由小至大的順序,依次將所述N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù)存儲(chǔ)至所述磁盤。
      [0047]現(xiàn)有技術(shù)中,由于控制器通過異步1的方式向SSD發(fā)送多個(gè)緩存數(shù)據(jù)讀取請求,并在接收到任一緩存數(shù)據(jù)讀取請求對應(yīng)的緩存數(shù)據(jù)后,就將該緩存數(shù)據(jù)同步至磁盤;且磁盤在存儲(chǔ)數(shù)據(jù)時(shí),首先需要將磁頭步進(jìn)到LBA所指示的位置,再將緩存數(shù)據(jù)進(jìn)行存儲(chǔ);且磁頭只能向一個(gè)方向步進(jìn)。因此,若磁頭當(dāng)前位于LBA等于3的位置,控制器第一次收到的緩存數(shù)據(jù)I對應(yīng)的LBA為8、第二次收到的緩存數(shù)據(jù)2對應(yīng)的LBA為6、第三次收到的緩存數(shù)據(jù)3對應(yīng)的LBA為2 ;則:磁盤的磁頭首先需要步進(jìn)至LBA等于8為的位置將緩存數(shù)據(jù)I進(jìn)行存儲(chǔ),接著磁頭需要步進(jìn)至LBA最大的位置后、重新回到LBA等于O的位置、再步進(jìn)至LBA等于6的位置將緩存數(shù)據(jù)2進(jìn)行存儲(chǔ),接著磁頭又需要步進(jìn)至LBA最大的位置后、重新又回到LBA等于O的位置、再步進(jìn)至LBA等于2的位置將緩存數(shù)據(jù)3進(jìn)行存儲(chǔ);因此,磁盤需要來回尋道(也即,步進(jìn)至LBA最大的位置后、重新回到LBA等于O的位置、再步進(jìn)至緩存數(shù)據(jù)對應(yīng)的LBA的位置)才能實(shí)現(xiàn)對各緩存數(shù)據(jù)的存儲(chǔ);而磁盤來回尋道需要耗費(fèi)較長時(shí)間;因此,現(xiàn)有技術(shù)中存在控制器刷盤效率低的問題。本發(fā)明中,通過根據(jù)所述N個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA,按照LBA由小至大的順序,依次將所述N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù)存儲(chǔ)至所述磁盤,避免了由于磁盤來回尋道而浪費(fèi)的刷盤時(shí)間,提高了控制器的刷盤效率。
      [0048]本實(shí)施例,通過根據(jù)所述N個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA,按照LBA由小至大的順序,依次將所述N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù)存儲(chǔ)至所述磁盤,避免了由于磁盤來回尋道而浪費(fèi)的刷盤時(shí)間,提高了控制器的刷盤效率。
      [0049]需要說明的是,本發(fā)明中方法的執(zhí)行主體是控制器。
      [0050]圖3為本發(fā)明緩存數(shù)據(jù)的刷盤方法實(shí)施例二的流程圖,如圖3所示,本實(shí)施例的方法可以包括:
      [0051]步驟301、獲得臟數(shù)據(jù)塊占SSD的所有緩存塊的比例;
      [0052]可選的,當(dāng)控制器接收到處理器發(fā)送的待寫入數(shù)據(jù)時(shí),將待寫入數(shù)據(jù)寫入到SSD的若干個(gè)緩存塊中,并將該若干個(gè)緩存塊的狀態(tài)設(shè)置為臟數(shù)據(jù)塊;且該若干個(gè)緩存塊分別對應(yīng)一臟數(shù)據(jù)塊的標(biāo)識。
      [0053]其中,所述臟數(shù)據(jù)塊占SSD的所有緩存塊的比例可以為:狀態(tài)為臟數(shù)據(jù)塊的緩存塊的數(shù)量除以SSD緩存塊的總數(shù),再乘以百分之百。
      [0054]步驟302、確定所述比例是否大于或等于預(yù)設(shè)比例;
      [0055]若是,則執(zhí)行步驟303 ;否則,結(jié)束。
      [0056]可選的,預(yù)設(shè)比例可以為40%。
      [0057]步驟303、根據(jù)當(dāng)前刷盤操作的LBA,從全部臟數(shù)據(jù)塊中選擇M個(gè)待刷盤的臟數(shù)據(jù)塊,其中,所述M個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的M個(gè)LBA均大于所述當(dāng)前刷盤操作的LBA ;
      [0058]可選的,根據(jù)臟數(shù)據(jù)塊占SSD的所有緩存塊的比例來確定M的大小:當(dāng)臟數(shù)據(jù)塊占SSD的所有緩存塊的比例越大時(shí),M越大。
      [0059]可選的,當(dāng)前刷盤操作的LBA可以為最近一次將一臟數(shù)據(jù)塊的緩存數(shù)據(jù)存儲(chǔ)至磁盤時(shí),該臟數(shù)據(jù)塊對應(yīng)的LBA。
      [0060]本實(shí)施例中,通過根據(jù)當(dāng)前刷盤操作的LBA,從全部臟數(shù)據(jù)塊中選擇M個(gè)待刷盤的臟數(shù)據(jù)塊;其中,所述M個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的M個(gè)LBA均大于所述當(dāng)前刷盤操作的LBA ;使得控制器向磁盤進(jìn)行同步的所有緩存數(shù)據(jù)所對應(yīng)的LBA都大于或等于當(dāng)前刷盤操作的LBA,使得在每次進(jìn)行刷盤時(shí)磁頭都是往一個(gè)方向步進(jìn),從而減小了磁頭尋道的時(shí)間;進(jìn)一步提高了控制器的刷盤效率。
      [0061]可選的,所述根據(jù)當(dāng)前刷盤操作的LBA,從全部臟數(shù)據(jù)塊中選擇M個(gè)待刷盤的臟數(shù)據(jù)塊,包括:
      [0062]根據(jù)所述當(dāng)前刷盤操作的LBA和每個(gè)臟數(shù)據(jù)塊的LBA,將所述每個(gè)臟數(shù)據(jù)塊放入第一隊(duì)列或第二隊(duì)列,所述第一隊(duì)列中的臟數(shù)據(jù)塊的LBA大于或等于所述當(dāng)前刷盤操作的LBA,所述第二隊(duì)列中的臟數(shù)據(jù)塊的LBA小于所述當(dāng)前刷盤操作的LBA ;從所述第一隊(duì)列中選擇所述M個(gè)待刷盤的臟數(shù)據(jù)塊。
      [0063]具體的,在所有臟數(shù)據(jù)塊的標(biāo)識中,確定若一臟數(shù)據(jù)塊的LBA大于或等于當(dāng)前刷盤操作的LBA,則將該臟數(shù)據(jù)塊放入第一隊(duì)列。
      [0064]例如,若當(dāng)前存在5個(gè)臟數(shù)據(jù)塊,臟數(shù)據(jù)塊1、臟數(shù)據(jù)塊2、臟數(shù)據(jù)塊3、臟數(shù)據(jù)塊4和臟數(shù)據(jù)塊5,臟數(shù)據(jù)塊I的LBA為5,臟數(shù)據(jù)塊2的LBA為15、臟數(shù)據(jù)塊3的LBA為20、臟數(shù)據(jù)塊4的LBA為25、臟數(shù)據(jù)塊5的LBA為30,當(dāng)前刷盤操作的LBA為9 ;則將臟數(shù)據(jù)塊2、臟數(shù)據(jù)塊3、臟數(shù)據(jù)塊4、臟數(shù)據(jù)塊5放入第一隊(duì)列;將臟數(shù)據(jù)塊I放入第二隊(duì)列。
      [0065]進(jìn)一步可選的,從所述第一隊(duì)列中選擇LBA值小的所述M個(gè)待刷盤的臟數(shù)據(jù)塊。
      [0066]例如,若M等于2,第一隊(duì)列包括臟數(shù)據(jù)塊A、臟數(shù)據(jù)塊B、臟數(shù)據(jù)塊C、臟數(shù)據(jù)塊D、臟數(shù)據(jù)塊E ;其中,臟數(shù)據(jù)塊A的LBA為5,臟數(shù)據(jù)塊B的LBA為9,臟數(shù)據(jù)塊C的LBA為20,臟數(shù)據(jù)塊D的LBA為3,臟數(shù)據(jù)塊E的LBA為10 ;則通過從第一隊(duì)列中選擇LBA值小的所述M個(gè)待刷盤的臟數(shù)據(jù)塊,獲得的所述M個(gè)待刷盤的臟數(shù)據(jù)為臟數(shù)據(jù)塊D和臟數(shù)據(jù)塊A。
      [0067]本實(shí)施例中,通過從第一隊(duì)列中選擇LBA值小的所述M個(gè)待刷盤的臟數(shù)據(jù)塊,使得在刷盤時(shí)能夠根據(jù)第一隊(duì)列中所包括的各臟數(shù)據(jù)塊的LBA由小至大的順序,依次將第一隊(duì)列中的M個(gè)臟數(shù)據(jù)塊的緩存數(shù)據(jù)存儲(chǔ)至磁盤;進(jìn)一步減小了磁頭尋道的時(shí)間,提高了控制器的刷盤效率。
      [0068]步驟304、向所述SSD發(fā)送緩存數(shù)據(jù)讀取請求,所述緩存數(shù)據(jù)讀取請求包括所述M個(gè)待刷盤的臟數(shù)據(jù)塊的標(biāo)識;
      [0069]可選的,控制器可以通過異步1的方式向SSD發(fā)送緩存數(shù)據(jù)讀取請求。
      [0070]步驟305、接收所述SSD發(fā)送的緩存數(shù)據(jù)讀取響應(yīng),所述緩存數(shù)據(jù)讀取響應(yīng)包括N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù),M大于或等于N ;
      [0071]步驟306、根據(jù)臟數(shù)據(jù)塊的標(biāo)識與LBA的對應(yīng)關(guān)系,確定所述N個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA ;
      [0072]步驟307、根據(jù)所述N個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA,按照LBA由小至大的順序,依次將所述N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù)存儲(chǔ)至所述磁盤;
      [0073]當(dāng)M大于N時(shí),例如,若控制器向SSD發(fā)送緩存數(shù)據(jù)讀取請求(其中,包括8 (即,M)個(gè)待刷盤的臟數(shù)據(jù)塊的標(biāo)識)后,一段時(shí)間(例如,1ms)內(nèi)收到了 6(也即,N)個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù);則:控制器可以首先對該6個(gè)緩存數(shù)據(jù)進(jìn)行磁盤同步。
      [0074]本實(shí)施例,通過向所述SSD發(fā)送緩存數(shù)據(jù)讀取請求,所述緩存數(shù)據(jù)讀取請求包括M個(gè)待刷盤的臟數(shù)據(jù)塊的標(biāo)識;并在接收到N待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù)后對該N個(gè)緩存數(shù)據(jù)進(jìn)行磁盤同步;從而避免了當(dāng)控制器接收到若干個(gè)緩存數(shù)據(jù)的時(shí)間較晚時(shí),由于等待該若干個(gè)緩存數(shù)據(jù)而浪費(fèi)較長的時(shí)間。
      [0075]可選的,在將N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù)存儲(chǔ)至所述磁盤之后,再將剩余的M-N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù)存儲(chǔ)至磁盤。
      [0076]步驟308、回收cache空間;
      [0077]可選的,可以通過將SSD中存儲(chǔ)所述N個(gè)緩存數(shù)據(jù)的緩存塊的狀態(tài)由臟數(shù)據(jù)塊更新為干凈緩存塊實(shí)現(xiàn)cache空間的回收;若一緩存塊對應(yīng)的狀態(tài)為干凈緩存塊時(shí),則控制器可以使用該緩存塊來緩存數(shù)據(jù)。
      [0078]需要說明的是,步驟308執(zhí)行完之后,執(zhí)行步驟301。
      [0079]需要說明的是,當(dāng)將第一隊(duì)列不存在臟數(shù)據(jù)塊時(shí)(也即,所有的臟數(shù)據(jù)塊的LBA都小于當(dāng)前刷盤操作的LBA),可以從第二隊(duì)列中選取M個(gè)待刷盤的臟數(shù)據(jù)塊。
      [0080]圖4為本發(fā)明緩存數(shù)據(jù)的刷盤方法實(shí)施例三的流程圖,如圖4所示,本實(shí)施例的方法可以包括:
      [0081]步驟401、從第一隊(duì)列中選擇M個(gè)待刷盤的臟數(shù)據(jù)塊;
      [0082]可選的,從所述第一隊(duì)列中選擇LBA值小的所述M個(gè)待刷盤的臟數(shù)據(jù)塊。
      [0083]步驟402、根據(jù)選擇的所述M個(gè)待刷盤的臟數(shù)據(jù)塊的LBA,將所述M個(gè)待刷盤的臟數(shù)據(jù)塊中LBA連續(xù)的臟數(shù)據(jù)塊進(jìn)行合并,獲得合并后的待刷盤的臟數(shù)據(jù)塊;
      [0084]其中,L小于或等于M ;
      [0085]例如,圖5為本發(fā)明實(shí)施例LBA示意圖,如圖5所示,M = 80,80個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA為I?80,待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù)的大小都為32K,且一個(gè)LBA對應(yīng)32K;則將LBA連續(xù)的臟數(shù)據(jù)塊合并后,可以獲得3個(gè)(也即,L等于3)合并后的待刷盤的臟數(shù)據(jù)塊(也即,合并后的待刷盤的臟數(shù)據(jù)塊1、合并后的待刷盤的臟數(shù)據(jù)塊2以及合并后的待刷盤的臟數(shù)據(jù)塊3),且合并后的待刷盤的臟數(shù)據(jù)塊I對應(yīng)的LBA為1、合并后的待刷盤的臟數(shù)據(jù)塊2對應(yīng)的LBA為33、合并后的待刷盤的臟數(shù)據(jù)塊3對應(yīng)的LBA為65。在獲得3個(gè)合并后的待刷盤的臟數(shù)據(jù)塊后,可以根據(jù)合并后的待刷盤的臟數(shù)據(jù)塊向SSD發(fā)送緩存數(shù)據(jù)讀取請求。
      [0086]步驟403、向所述SSD發(fā)送緩存數(shù)據(jù)讀取請求,所述緩存數(shù)據(jù)讀取請求包括所述合并后的待刷盤的臟數(shù)據(jù)塊的標(biāo)識;
      [0087]步驟404、接收所述SSD發(fā)送的緩存數(shù)據(jù)讀取響應(yīng),所述緩存數(shù)據(jù)讀取響應(yīng)包括合并后的待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù);
      [0088]步驟405、根據(jù)臟數(shù)據(jù)塊的標(biāo)識與LBA的對應(yīng)關(guān)系,確定所述合并后的待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA ;
      [0089]步驟406、根據(jù)所述合并后的待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA,按照LBA由小至大的順序,依次將所述合并后的待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù)存儲(chǔ)至所述磁盤。
      [0090]本實(shí)施例中,通過根據(jù)所述M個(gè)待刷盤的臟數(shù)據(jù)塊的LBA,將所述M個(gè)待刷盤的臟數(shù)據(jù)塊中LBA連續(xù)的臟數(shù)據(jù)塊進(jìn)行合并,獲得合并后的待刷盤的臟數(shù)據(jù)塊;根據(jù)所述合并后的待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA,按照LBA由小至大的順序,依次將所述合并后的待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù)存儲(chǔ)至所述磁盤;減少了控制器向磁盤進(jìn)行緩存數(shù)據(jù)同步的次數(shù)。
      [0091]圖6為本發(fā)明控制器實(shí)施例一的結(jié)構(gòu)示意圖,所述控制器應(yīng)用于存儲(chǔ)系統(tǒng)中,所述存儲(chǔ)系統(tǒng)包括所述控制器、磁盤和SSD,所述SSD作為所述磁盤的緩存,如圖6所示,本實(shí)施例的控制器可以包括:讀取請求發(fā)送模塊601,用于向所述SSD發(fā)送緩存數(shù)據(jù)讀取請求,所述緩存數(shù)據(jù)讀取請求包括M個(gè)待刷盤的臟數(shù)據(jù)塊的標(biāo)識;讀取響應(yīng)接收模塊602,用于接收所述SSD發(fā)送的緩存數(shù)據(jù)讀取響應(yīng),所述緩存數(shù)據(jù)讀取響應(yīng)包括N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù),M大于或等于N ;LBA確定模塊603,用于根據(jù)臟數(shù)據(jù)塊的標(biāo)識與磁盤邏輯區(qū)塊地址LBA的對應(yīng)關(guān)系,確定所述N個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA ;刷盤模塊604,用于根據(jù)所述N個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA,按照LBA由小至大的順序,依次將所述N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù)存儲(chǔ)至所述磁盤。
      [0092]本實(shí)施例的控制器,可以用于執(zhí)行圖2所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
      [0093]控制器實(shí)施例二
      [0094]可選的,在本發(fā)明控制器實(shí)施例一的基礎(chǔ)上,讀取請求發(fā)送模塊601,還用于:根據(jù)當(dāng)前刷盤操作的LBA,從全部臟數(shù)據(jù)塊中選擇所述M個(gè)待刷盤的臟數(shù)據(jù)塊,其中,所述M個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的M個(gè)LBA均大于所述當(dāng)前刷盤操作的LBA。
      [0095]可選的,讀取請求發(fā)送模塊601,具體用于:根據(jù)所述當(dāng)前刷盤操作的LBA和每個(gè)臟數(shù)據(jù)塊的LBA,將所述每個(gè)臟數(shù)據(jù)塊放入第一隊(duì)列或第二隊(duì)列,所述第一隊(duì)列中的臟數(shù)據(jù)塊的LBA大于所述當(dāng)前刷盤操作的LBA,所述第二隊(duì)列中的臟數(shù)據(jù)塊的LBA小于所述當(dāng)前刷盤操作的LBA ;從所述第一隊(duì)列中選擇所述M個(gè)待刷盤的臟數(shù)據(jù)塊。
      [0096]進(jìn)一步可選的,讀取請求發(fā)送模塊601,具體用于:從所述第一隊(duì)列中選擇LBA值小的所述M個(gè)待刷盤的臟數(shù)據(jù)塊。
      [0097]本實(shí)施例的控制器,可以用于執(zhí)行圖3所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
      [0098]控制器實(shí)施例三
      [0099]可選的,在本發(fā)明控制器實(shí)施例二的基礎(chǔ)上,讀取請求發(fā)送模塊601,還用于:根據(jù)選擇的所述M個(gè)待刷盤的臟數(shù)據(jù)塊的LBA,將所述M個(gè)待刷盤的臟數(shù)據(jù)塊中LBA連續(xù)的臟數(shù)據(jù)塊進(jìn)行合并,獲得合并后的待刷盤的臟數(shù)據(jù)塊;相應(yīng)的,讀取請求發(fā)送模塊602,具體用于:向所述SSD發(fā)送緩存數(shù)據(jù)讀取請求,所述緩存數(shù)據(jù)讀取請求包括所述合并后的待刷盤的臟數(shù)據(jù)塊的標(biāo)識。
      [0100]本實(shí)施例的控制器,可以用于執(zhí)行圖4所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
      [0101]圖7為本發(fā)明控制器實(shí)施例四的結(jié)構(gòu)示意圖,如圖7所示,本實(shí)施例的控制器可以包括:發(fā)射器701、接收器702和處理器703。其中,發(fā)射器701,用于向所述SSD發(fā)送緩存數(shù)據(jù)讀取請求,所述緩存數(shù)據(jù)讀取請求包括M個(gè)待刷盤的臟數(shù)據(jù)塊的標(biāo)識;接收器702,用于接收所述SSD發(fā)送的緩存數(shù)據(jù)讀取響應(yīng),所述緩存數(shù)據(jù)讀取響應(yīng)包括N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù),M大于或等于N ;處理器703,用于根據(jù)臟數(shù)據(jù)塊的標(biāo)識與LBA的對應(yīng)關(guān)系,確定所述N個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA ;根據(jù)所述N個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA,按照LBA由小至大的順序,依次將所述N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù)存儲(chǔ)至所述磁盤。
      [0102]本實(shí)施例的控制器,可以用于執(zhí)行圖2所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
      [0103]控制器實(shí)施例五
      [0104]可選的,在本發(fā)明控制器實(shí)施例四的基礎(chǔ)上,處理器703還用于:根據(jù)當(dāng)前刷盤操作的LBA,從全部臟數(shù)據(jù)塊中選擇所述M個(gè)待刷盤的臟數(shù)據(jù)塊,其中,所述M個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的M個(gè)LBA均大于所述當(dāng)前刷盤操作的LBA。
      [0105]可選的,處理器703,具體用于:根據(jù)所述當(dāng)前刷盤操作的LBA和每個(gè)臟數(shù)據(jù)塊的LBA,將所述每個(gè)臟數(shù)據(jù)塊放入第一隊(duì)列或第二隊(duì)列,所述第一隊(duì)列中的臟數(shù)據(jù)塊的LBA大于所述當(dāng)前刷盤操作的LBA,所述第二隊(duì)列中的臟數(shù)據(jù)塊的LBA小于所述當(dāng)前刷盤操作的LBA ;從所述第一隊(duì)列中選擇所述M個(gè)待刷盤的臟數(shù)據(jù)塊。
      [0106]進(jìn)一步可選的,處理器703,具體用于:從所述第一隊(duì)列中選擇LBA值小的所述M個(gè)待刷盤的臟數(shù)據(jù)塊。
      [0107]本實(shí)施例的控制器,可以用于執(zhí)行圖3所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
      [0108]控制器實(shí)施例六
      [0109]可選的,在本發(fā)明控制器實(shí)施例五的基礎(chǔ)上,處理器703還用于:根據(jù)選擇的所述M個(gè)待刷盤的臟數(shù)據(jù)塊的LBA,將所述M個(gè)待刷盤的臟數(shù)據(jù)塊中LBA連續(xù)的臟數(shù)據(jù)塊進(jìn)行合并,獲得合并后的待刷盤的臟數(shù)據(jù)塊;
      [0110]發(fā)射器701,具體用于:向所述SSD發(fā)送緩存數(shù)據(jù)讀取請求,所述緩存數(shù)據(jù)讀取請求包括所述合并后的待刷盤的臟數(shù)據(jù)塊的標(biāo)識。
      [0111]本實(shí)施例的控制器,可以用于執(zhí)行圖4所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
      [0112]本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
      [0113]最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
      【權(quán)利要求】
      1.一種緩存數(shù)據(jù)的刷盤方法,其特征在于,應(yīng)用于存儲(chǔ)系統(tǒng)中,所述存儲(chǔ)系統(tǒng)包括控制器、磁盤和固態(tài)硬盤SSD,所述SSD作為所述磁盤的緩存,所述方法由控制器執(zhí)行,所述方法包括: 向所述SSD發(fā)送緩存數(shù)據(jù)讀取請求,所述緩存數(shù)據(jù)讀取請求包括M個(gè)待刷盤的臟數(shù)據(jù)塊的標(biāo)識; 接收所述SSD發(fā)送的緩存數(shù)據(jù)讀取響應(yīng),所述緩存數(shù)據(jù)讀取響應(yīng)包括N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù),M大于或等于N ; 根據(jù)臟數(shù)據(jù)塊的標(biāo)識與磁盤邏輯區(qū)塊地址LBA的對應(yīng)關(guān)系,確定所述N個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA ; 根據(jù)所述N個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA,按照LBA由小至大的順序,依次將所述N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù)存儲(chǔ)至所述磁盤。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述向所述SSD發(fā)送緩存數(shù)據(jù)讀取請求之前,還包括: 根據(jù)當(dāng)前刷盤操作的LBA,從全部臟數(shù)據(jù)塊中選擇所述M個(gè)待刷盤的臟數(shù)據(jù)塊,其中,所述M個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的M個(gè)LBA均大于所述當(dāng)前刷盤操作的LBA。
      3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)當(dāng)前刷盤操作的LBA,從全部臟數(shù)據(jù)塊中選擇所述M個(gè)待刷盤的臟數(shù)據(jù)塊,包括: 根據(jù)所述當(dāng)前刷盤操作的LBA和每個(gè)臟數(shù)據(jù)塊的LBA,將所述每個(gè)臟數(shù)據(jù)塊放入第一隊(duì)列或第二隊(duì)列,所述第一隊(duì)列中的臟數(shù)據(jù)塊的LBA大于或等于所述當(dāng)前刷盤操作的LBA,所述第二隊(duì)列中的臟數(shù)據(jù)塊的LBA小于所述當(dāng)前刷盤操作的LBA ; 從所述第一隊(duì)列中選擇所述M個(gè)待刷盤的臟數(shù)據(jù)塊。
      4.根據(jù)權(quán)利要求3所述的方法,其特征在于,從所述第一隊(duì)列中選擇LBA值小的所述M個(gè)待刷盤的臟數(shù)據(jù)塊。
      5.根據(jù)權(quán)利要求3或4所述的方法,其特征在于,所述方法還包括: 根據(jù)選擇的所述M個(gè)待刷盤的臟數(shù)據(jù)塊的LBA,將所述M個(gè)待刷盤的臟數(shù)據(jù)塊中LBA連續(xù)的臟數(shù)據(jù)塊進(jìn)行合并,獲得合并后的待刷盤的臟數(shù)據(jù)塊; 相應(yīng)的,向所述SSD發(fā)送緩存數(shù)據(jù)讀取請求,所述緩存數(shù)據(jù)讀取請求包括M個(gè)待刷盤的臟數(shù)據(jù)塊的標(biāo)識,包括: 向所述SSD發(fā)送緩存數(shù)據(jù)讀取請求,所述緩存數(shù)據(jù)讀取請求包括所述合并后的待刷盤的臟數(shù)據(jù)塊的標(biāo)識。
      6.一種控制器,其特征在于,所述控制器應(yīng)用于存儲(chǔ)系統(tǒng)中,所述存儲(chǔ)系統(tǒng)包括所述控制器、磁盤和固態(tài)硬盤SSD,所述SSD作為所述磁盤的緩存,所述控制器包括: 讀取請求發(fā)送模塊,用于向所述SSD發(fā)送緩存數(shù)據(jù)讀取請求,所述緩存數(shù)據(jù)讀取請求包括M個(gè)待刷盤的臟數(shù)據(jù)塊的標(biāo)識; 讀取響應(yīng)接收模塊,用于接收所述SSD發(fā)送的緩存數(shù)據(jù)讀取響應(yīng),所述緩存數(shù)據(jù)讀取響應(yīng)包括N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù),M大于或等于N ; LBA確定模塊,用于根據(jù)臟數(shù)據(jù)塊的標(biāo)識與磁盤邏輯區(qū)塊地址LBA的對應(yīng)關(guān)系,確定所述N個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA ; 刷盤模塊,用于根據(jù)所述N個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的LBA,按照LBA由小至大的順序,依次將所述N個(gè)待刷盤的臟數(shù)據(jù)塊的緩存數(shù)據(jù)存儲(chǔ)至所述磁盤。
      7.根據(jù)權(quán)利要求6所述的控制器,其特征在于,所述讀取請求發(fā)送模塊,還用于: 根據(jù)當(dāng)前刷盤操作的LBA,從全部臟數(shù)據(jù)塊中選擇所述M個(gè)待刷盤的臟數(shù)據(jù)塊,其中,所述M個(gè)待刷盤的臟數(shù)據(jù)塊分別對應(yīng)的M個(gè)LBA均大于所述當(dāng)前刷盤操作的LBA。
      8.根據(jù)權(quán)利要求7所述的控制器,其特征在于,所述讀取請求發(fā)送模塊,具體用于: 根據(jù)所述當(dāng)前刷盤操作的LBA和每個(gè)臟數(shù)據(jù)塊的LBA,將所述每個(gè)臟數(shù)據(jù)塊放入第一隊(duì)列或第二隊(duì)列,所述第一隊(duì)列中的臟數(shù)據(jù)塊的LBA大于所述當(dāng)前刷盤操作的LBA,所述第二隊(duì)列中的臟數(shù)據(jù)塊的LBA小于所述當(dāng)前刷盤操作的LBA ; 從所述第一隊(duì)列中選擇所述M個(gè)待刷盤的臟數(shù)據(jù)塊。
      9.根據(jù)權(quán)利要求8所述的控制器,其特征在于,所述讀取請求發(fā)送模塊,具體用于:從所述第一隊(duì)列中選擇LBA值小的所述M個(gè)待刷盤的臟數(shù)據(jù)塊。
      10.根據(jù)權(quán)利要求8或9所述的控制器,其特征在于,所述讀取請求發(fā)送模塊,還用于:根據(jù)選擇的所述M個(gè)待刷盤的臟數(shù)據(jù)塊的LBA,將所述M個(gè)待刷盤的臟數(shù)據(jù)塊中LBA連續(xù)的臟數(shù)據(jù)塊進(jìn)行合并,獲得合并后的待刷盤的臟數(shù)據(jù)塊; 相應(yīng)的,所述讀取請求發(fā)送模塊,具體用于:向所述SSD發(fā)送緩存數(shù)據(jù)讀取請求,所述緩存數(shù)據(jù)讀取請求包括所述合并后的待刷盤的臟數(shù)據(jù)塊的標(biāo)識。
      【文檔編號】G06F12/08GK104461936SQ201410712971
      【公開日】2015年3月25日 申請日期:2014年11月28日 優(yōu)先權(quán)日:2014年11月28日
      【發(fā)明者】張志樂 申請人:華為技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
      1