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

      一種基于全閃存陣列的隨機(jī)IO順序化方法及裝置與流程

      文檔序號(hào):11215858閱讀:424來(lái)源:國(guó)知局
      一種基于全閃存陣列的隨機(jī)IO順序化方法及裝置與流程

      本發(fā)明涉及數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,特別涉及一種基于全閃存陣列的隨機(jī)io順序化方法及裝置。



      背景技術(shù):

      隨著現(xiàn)代社會(huì)科技的發(fā)展,ssd(solidstatedisk,固態(tài)硬盤(pán))技術(shù)得到了高速的發(fā)展。ssd盤(pán)在性能、壽命、可靠性和容量上已經(jīng)達(dá)到了企業(yè)級(jí)別使用的程度,所以在近幾年基于全閃存存儲(chǔ)介質(zhì)的陣列研究如火如荼,但在前期的使用中,一些產(chǎn)品僅是將傳統(tǒng)的磁盤(pán)替換為ssd盤(pán),沒(méi)有做io棧上的優(yōu)化,沒(méi)有發(fā)揮出ssd的全部?jī)?yōu)勢(shì)。

      相比于傳統(tǒng)磁盤(pán),ssd盤(pán)有以下一些不同點(diǎn):ssd盤(pán)的性能高一個(gè)數(shù)量級(jí),傳統(tǒng)磁盤(pán)都是10毫秒級(jí)別的時(shí)延,而ssd盤(pán)可以達(dá)到50微妙甚至更低的讀寫(xiě)時(shí)延;傳統(tǒng)磁盤(pán)使用磁介質(zhì)來(lái)存儲(chǔ)數(shù)據(jù),同一個(gè)位置可以反復(fù)覆蓋寫(xiě),而ssd盤(pán)則由于自己本身的特性需要將之前位置的數(shù)據(jù)擦除之后才能再寫(xiě)數(shù)據(jù),由于這個(gè)特性,ssd盤(pán)也需要進(jìn)行垃圾回收保證可用容量;ssd盤(pán)的壽命與擦寫(xiě)次數(shù)有關(guān),傳統(tǒng)磁盤(pán)的壽命則與寫(xiě)的次數(shù)沒(méi)有特別大的相關(guān)關(guān)系。由于存在以上的不同點(diǎn),需要對(duì)傳統(tǒng)的io棧進(jìn)行優(yōu)化才能適配ssd的這些特性,提升全閃存陣列的性能和ssd盤(pán)的使用壽命。

      現(xiàn)有技術(shù)中,一些廠家在對(duì)傳統(tǒng)的io棧進(jìn)行優(yōu)化時(shí),往往是基于ssd盤(pán)的物理位置來(lái)做順序化的存儲(chǔ),不能很好的和raid(redundantarraysofindependentdisks,獨(dú)立硬盤(pán)冗余陣列)機(jī)制結(jié)合,并不能對(duì)隨機(jī)io進(jìn)行順序化處理,令ssd盤(pán)的使用壽命會(huì)受到一定影響,并且在改造已有磁盤(pán)陣列產(chǎn)品時(shí)有一定的難度。因此,如何更好的與raid機(jī)制結(jié)合,對(duì)隨機(jī)io進(jìn)行順序化處理,提升全閃存陣列的性能和使用壽命,減輕傳統(tǒng)磁盤(pán)陣列向全閃存陣列轉(zhuǎn)換難度,是現(xiàn)今急需解決的問(wèn)題。



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

      本發(fā)明的目的是提供一種基于全閃存陣列的隨機(jī)io順序化方法及裝置,以通過(guò)使用偏移和raid條帶映射的方式實(shí)現(xiàn)傳統(tǒng)磁盤(pán)陣列和全閃存陣列的結(jié)合,提升了全閃存陣列的性能和使用壽命,減輕了傳統(tǒng)磁盤(pán)陣列向全閃存陣列轉(zhuǎn)換難度。

      為解決上述技術(shù)問(wèn)題,本發(fā)明提供一種基于全閃存陣列的隨機(jī)io順序化方法,包括:

      接收寫(xiě)io數(shù)據(jù)后,將所述寫(xiě)io數(shù)據(jù)按預(yù)設(shè)長(zhǎng)度切割為寫(xiě)數(shù)據(jù)塊;

      從全部可用的條帶中,按預(yù)設(shè)規(guī)則選取目標(biāo)條帶,在映射表中記錄所述寫(xiě)數(shù)據(jù)塊各自的lba與各自對(duì)應(yīng)的目標(biāo)條帶的條帶號(hào)的映射關(guān)系,并將所述寫(xiě)數(shù)據(jù)塊填充到各自對(duì)應(yīng)的目標(biāo)條帶中;其中,可用的條帶包括未填充滿對(duì)應(yīng)的寫(xiě)數(shù)據(jù)塊的目標(biāo)條帶;

      對(duì)填充滿對(duì)應(yīng)的寫(xiě)數(shù)據(jù)塊的目標(biāo)條帶進(jìn)行數(shù)據(jù)下盤(pán)。

      可選的,所述將所述寫(xiě)數(shù)據(jù)塊填充到各自對(duì)應(yīng)的目標(biāo)條帶中,包括:

      依次將所述寫(xiě)數(shù)據(jù)塊填充到各自對(duì)應(yīng)的目標(biāo)條帶中。

      可選的,所述從全部可用的條帶中,按預(yù)設(shè)規(guī)則選取目標(biāo)條帶,包括:

      根據(jù)所述寫(xiě)數(shù)據(jù)塊的數(shù)量,從全部可用的條帶中,依次選取使用次數(shù)最少且對(duì)應(yīng)的條帶號(hào)最小的所述目標(biāo)條帶。

      可選的,所述將所述寫(xiě)io數(shù)據(jù)按預(yù)設(shè)長(zhǎng)度切割為寫(xiě)數(shù)據(jù)塊,包括:

      將所述寫(xiě)io數(shù)據(jù)按4kb或8kb的長(zhǎng)度切割為所述寫(xiě)數(shù)據(jù)塊。

      可選的,該方法還包括:

      接收讀io請(qǐng)求后,構(gòu)建讀io數(shù)據(jù)并將所述讀io數(shù)據(jù)按所述預(yù)設(shè)長(zhǎng)度切割為讀數(shù)據(jù)塊;

      根據(jù)所述讀數(shù)據(jù)塊各自的lba分別查詢所述映射表中是否存在對(duì)應(yīng)的條帶號(hào);

      若是,則讀取所述條帶號(hào)對(duì)應(yīng)的條帶的數(shù)據(jù)表,并下盤(pán)讀取相應(yīng)的數(shù)據(jù);

      若否,則將lba不存在對(duì)應(yīng)的條帶號(hào)的讀數(shù)據(jù)塊填充0。

      此外,本發(fā)明還提供了一種基于全閃存陣列的隨機(jī)io順序化裝置,包括:

      寫(xiě)切割模塊,用于接收寫(xiě)io數(shù)據(jù)后,將所述寫(xiě)io數(shù)據(jù)按預(yù)設(shè)長(zhǎng)度切割為寫(xiě)數(shù)據(jù)塊;

      處理模塊,用于從全部可用的條帶中,按預(yù)設(shè)規(guī)則選取目標(biāo)條帶,在映射表中記錄所述寫(xiě)數(shù)據(jù)塊各自的lba與各自對(duì)應(yīng)的目標(biāo)條帶的條帶號(hào)的映射關(guān)系,并將所述寫(xiě)數(shù)據(jù)塊填充到各自對(duì)應(yīng)的目標(biāo)條帶中;其中,可用的條帶包括未填充滿對(duì)應(yīng)的寫(xiě)數(shù)據(jù)塊的目標(biāo)條帶;

      下盤(pán)模塊,用于對(duì)填充滿對(duì)應(yīng)的寫(xiě)數(shù)據(jù)塊的目標(biāo)條帶進(jìn)行數(shù)據(jù)下盤(pán)。

      可選的,所述處理模塊,包括:

      填充子模塊,用于依次將所述寫(xiě)數(shù)據(jù)塊填充到各自對(duì)應(yīng)的目標(biāo)條帶中。

      可選的,所述處理模塊,包括:

      選取子模塊,用于根據(jù)所述寫(xiě)數(shù)據(jù)塊的數(shù)量,從全部可用的條帶中,依次選取使用次數(shù)最少且對(duì)應(yīng)的條帶號(hào)最小的所述目標(biāo)條帶。

      可選的,所述寫(xiě)切割模塊,包括:

      寫(xiě)切割子模塊,用于將所述寫(xiě)io數(shù)據(jù)按4kb或8kb的長(zhǎng)度切割為所述寫(xiě)數(shù)據(jù)塊。

      可選的,該裝置還包括:

      讀切割模塊,用于接收讀io請(qǐng)求后,構(gòu)建讀io數(shù)據(jù)并將所述讀io數(shù)據(jù)按所述預(yù)設(shè)長(zhǎng)度切割為讀數(shù)據(jù)塊;

      判斷模塊,用于根據(jù)所述讀數(shù)據(jù)塊各自的lba分別查詢所述映射表中是否存在對(duì)應(yīng)的條帶號(hào);若是,則向讀取模塊發(fā)送讀取信號(hào);若否,則向填充模塊發(fā)送填充信號(hào);

      所述讀取模塊,用于接收所述讀取信號(hào),讀取所述條帶號(hào)對(duì)應(yīng)的條帶的數(shù)據(jù)表,并下盤(pán)讀取相應(yīng)的數(shù)據(jù);

      所述填充模塊,用于接收所述填充信號(hào),將lba不存在對(duì)應(yīng)的條帶號(hào)的讀數(shù)據(jù)塊填充0。

      本發(fā)明所提供的一種基于全閃存陣列的隨機(jī)io順序化方法,包括:接收寫(xiě)io數(shù)據(jù)后,將所述寫(xiě)io數(shù)據(jù)按預(yù)設(shè)長(zhǎng)度切割為寫(xiě)數(shù)據(jù)塊;從全部可用的條帶中,按預(yù)設(shè)規(guī)則選取目標(biāo)條帶,在映射表中記錄所述寫(xiě)數(shù)據(jù)塊各自的lba與各自對(duì)應(yīng)的目標(biāo)條帶的條帶號(hào)的映射關(guān)系,并將所述寫(xiě)數(shù)據(jù)塊填充到各自對(duì)應(yīng)的目標(biāo)條帶中;其中,可用的條帶包括未填充滿對(duì)應(yīng)的寫(xiě)數(shù)據(jù)塊的目標(biāo)條帶;對(duì)填充滿對(duì)應(yīng)的寫(xiě)數(shù)據(jù)塊的目標(biāo)條帶進(jìn)行數(shù)據(jù)下盤(pán);

      可見(jiàn),本發(fā)明通過(guò)從全部可用的條帶中,按預(yù)設(shè)規(guī)則選取目標(biāo)條帶,在映射表中記錄寫(xiě)數(shù)據(jù)塊各自的lba(logicblockaddress,邏輯塊地址)與各自對(duì)應(yīng)的目標(biāo)條帶的條帶號(hào)的映射關(guān)系,可以使用偏移和raid條帶映射的方式將數(shù)據(jù)塊填充到對(duì)應(yīng)的目標(biāo)條帶,使得目標(biāo)條帶中填充的內(nèi)容均為數(shù)據(jù)塊,不存在空的填充內(nèi)容,使得隨機(jī)io可以順序化填充到目標(biāo)條帶中;通過(guò)對(duì)填充滿對(duì)應(yīng)的寫(xiě)數(shù)據(jù)塊的目標(biāo)條帶進(jìn)行數(shù)據(jù)下盤(pán),可以使數(shù)據(jù)塊可以順序化存儲(chǔ)到存儲(chǔ)介質(zhì)中,使得隨機(jī)io也可以進(jìn)行順序化存儲(chǔ),提升了全閃存陣列的性能和使用壽命,并且實(shí)現(xiàn)了傳統(tǒng)磁盤(pán)陣列和全閃存陣列的結(jié)合,減輕了傳統(tǒng)磁盤(pán)陣列向全閃存陣列轉(zhuǎn)換難度,提升了用戶體驗(yàn)。此外,本發(fā)明還提供了一種基于全閃存陣列的隨機(jī)io順序化裝置,同樣具有上述有益效果。

      附圖說(shuō)明

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

      圖1為本發(fā)明實(shí)施例所提供的一種基于全閃存陣列的隨機(jī)io順序化方法的流程圖;

      圖2為本發(fā)明實(shí)施例所提供的一種基于全閃存陣列的隨機(jī)io順序化方法的映射表的示意圖;

      圖3為本發(fā)明實(shí)施例所提供的另一種基于全閃存陣列的隨機(jī)io順序化方法的流程圖;

      圖4為本發(fā)明實(shí)施例所提供的一種基于全閃存陣列的隨機(jī)io順序化裝置的結(jié)構(gòu)圖。

      具體實(shí)施方式

      為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

      請(qǐng)參考圖1和圖2,圖1為本發(fā)明實(shí)施例所提供的一種基于全閃存陣列的隨機(jī)io順序化方法的流程圖;圖2為本發(fā)明實(shí)施例所提供的一種基于全閃存陣列的隨機(jī)io順序化方法的映射表的示意圖。該方法可以包括:

      步驟101:接收寫(xiě)io數(shù)據(jù)后,將寫(xiě)io數(shù)據(jù)按預(yù)設(shè)長(zhǎng)度切割為寫(xiě)數(shù)據(jù)塊。

      其中,本步驟中接收寫(xiě)io數(shù)據(jù),可以為主機(jī)直接接收用戶發(fā)送的io數(shù)據(jù),也可以為主機(jī)接收用戶發(fā)送的寫(xiě)io請(qǐng)求和對(duì)應(yīng)的io數(shù)據(jù)。對(duì)于主機(jī)接收寫(xiě)io數(shù)據(jù)的具體方式,也就是主機(jī)接收需要存儲(chǔ)到如ssd盤(pán)的存儲(chǔ)介質(zhì)的io數(shù)據(jù)的具體方式,可以采用與現(xiàn)有技術(shù)相同或相似的方式,也可以由設(shè)計(jì)人員根據(jù)實(shí)用場(chǎng)景或用戶需求自行設(shè)置,本實(shí)施例對(duì)此不做任何限制。

      可以理解的是,本步驟中將寫(xiě)io數(shù)據(jù)按預(yù)設(shè)長(zhǎng)度切割為寫(xiě)數(shù)據(jù)塊,也就是將需要存儲(chǔ)的io數(shù)據(jù)按預(yù)設(shè)長(zhǎng)度劃分為一個(gè)或多個(gè)小的數(shù)據(jù)塊,對(duì)于預(yù)設(shè)長(zhǎng)度的具體數(shù)值設(shè)置,也就是每個(gè)寫(xiě)數(shù)據(jù)塊的具體大小的設(shè)置,可以由設(shè)計(jì)人員根據(jù)實(shí)用場(chǎng)景和用戶需求自行設(shè)置,優(yōu)選的,可以設(shè)置為4kb或8kb,本實(shí)施例對(duì)此不做任何限制。

      需要說(shuō)明的是,對(duì)于將寫(xiě)io數(shù)據(jù)按預(yù)設(shè)長(zhǎng)度切割為寫(xiě)數(shù)據(jù)塊的具體方式,可以采用與現(xiàn)有技術(shù)相似的方式,也可以采用其他設(shè)計(jì)人員自行設(shè)置的方式,本實(shí)施例對(duì)此不做任何限制。

      步驟102:從全部可用的條帶中,按預(yù)設(shè)規(guī)則選取目標(biāo)條帶,在映射表中記錄寫(xiě)數(shù)據(jù)塊各自的lba與各自對(duì)應(yīng)的目標(biāo)條帶的條帶號(hào)的映射關(guān)系,并將寫(xiě)數(shù)據(jù)塊填充到各自對(duì)應(yīng)的目標(biāo)條帶中;其中,可用的條帶包括未填充滿對(duì)應(yīng)的寫(xiě)數(shù)據(jù)塊的目標(biāo)條帶。

      可以理解的是,本步驟中從全部可用的條帶中,按預(yù)設(shè)規(guī)則選取目標(biāo)條帶的具體方式,可以為根據(jù)寫(xiě)數(shù)據(jù)塊的數(shù)量,從全部可用的條帶中,依次選取使用次數(shù)最少且對(duì)應(yīng)的條帶號(hào)最小的目標(biāo)條帶,也就是先選取一個(gè)目標(biāo)條帶,若該目標(biāo)條帶可以填充全部寫(xiě)數(shù)據(jù)塊,則在映射表中記錄全部寫(xiě)數(shù)據(jù)塊各自的lba與該目標(biāo)條帶的條帶號(hào)的映射關(guān)系,并將全部寫(xiě)數(shù)據(jù)塊填充到該目標(biāo)條帶中;若該目標(biāo)條帶不可以填充全部寫(xiě)數(shù)據(jù)塊,則在映射表中記錄全部寫(xiě)數(shù)據(jù)塊中可填充在該目標(biāo)條帶的部分寫(xiě)數(shù)據(jù)塊各自的lba與該目標(biāo)條帶的條帶號(hào)的映射關(guān)系,并將該部分寫(xiě)數(shù)據(jù)塊填充到該目標(biāo)條帶中,然后再選取下一目標(biāo)條帶,執(zhí)行與上述相似的步驟,直至全部寫(xiě)數(shù)據(jù)各自的lba與各自對(duì)應(yīng)的目標(biāo)條帶的條帶號(hào)的映射關(guān)系均記錄在映射表中,并將全部寫(xiě)數(shù)據(jù)塊填充到各自對(duì)應(yīng)的目標(biāo)條帶中。也可以為根據(jù)寫(xiě)數(shù)據(jù)塊的數(shù)量,從全部可用的條帶中,直接選取使用次數(shù)最少且對(duì)應(yīng)的條帶號(hào)最小的目標(biāo)條帶,也就是直接選取填充全部寫(xiě)數(shù)據(jù)塊所需的目標(biāo)條帶。對(duì)于從全部可用的條帶中,按預(yù)設(shè)規(guī)則選取目標(biāo)條帶的具體方式,可以由設(shè)計(jì)人員自行設(shè)置,本實(shí)施例對(duì)此不受任何限制。

      同樣的,對(duì)于將寫(xiě)數(shù)據(jù)塊填充到各自對(duì)應(yīng)的目標(biāo)條帶中的具體方式,可以為依次將寫(xiě)數(shù)據(jù)塊填充到各自對(duì)應(yīng)的目標(biāo)條帶中,如若先選取出一個(gè)目標(biāo)條帶,則全部寫(xiě)數(shù)據(jù)塊按順序填充到該目標(biāo)條帶可填充的位置,若該目標(biāo)條帶已填充滿而全部寫(xiě)數(shù)據(jù)塊未填充完,則等待選取出的下一目標(biāo)條帶再對(duì)剩余未填充的寫(xiě)數(shù)據(jù)塊進(jìn)行填充,直至全部寫(xiě)數(shù)據(jù)塊填充完;也可以為并行將寫(xiě)數(shù)據(jù)塊填充到各自對(duì)應(yīng)的目標(biāo)條帶中,如若選取出填充全部寫(xiě)數(shù)據(jù)塊所需的目標(biāo)條帶后,全部寫(xiě)數(shù)據(jù)塊按照每個(gè)目標(biāo)條帶可填充的位置的數(shù)量,直接將全部寫(xiě)數(shù)據(jù)塊并行填充到對(duì)應(yīng)的目標(biāo)條帶。對(duì)于寫(xiě)數(shù)據(jù)塊填充到各自對(duì)應(yīng)的目標(biāo)條帶中的具體方式,可以由設(shè)計(jì)人員自行設(shè)置,本實(shí)施例對(duì)此同樣不受任何限制。

      具體的,對(duì)于在映射表中記錄寫(xiě)數(shù)據(jù)塊各自的lba與各自對(duì)應(yīng)的目標(biāo)條帶的條帶號(hào)的映射關(guān)系的具體方式,可以采用與上述將寫(xiě)數(shù)據(jù)塊填充到各自對(duì)應(yīng)的目標(biāo)條帶中的方式相對(duì)應(yīng)的方式,本實(shí)施例對(duì)此不受任何限制。其中,記錄表中l(wèi)ba與目標(biāo)條帶的映射關(guān)系可以如圖2所示,圖中l(wèi)ba中深色方格可以表示為寫(xiě)數(shù)據(jù)塊的lba,通過(guò)將寫(xiě)數(shù)據(jù)塊的lba映射到條帶(目標(biāo)條帶)中,可以避免現(xiàn)有技術(shù)中,條帶存在空的填充內(nèi)容的情況發(fā)生,如現(xiàn)有技術(shù)中可以將每5個(gè)lba的方格劃分為一個(gè)條帶,那么第一個(gè)條帶中只存在一個(gè)寫(xiě)數(shù)據(jù)塊的lba,存在4個(gè)空的填充內(nèi)容,使得寫(xiě)數(shù)據(jù)塊并不能順序化存儲(chǔ)到存儲(chǔ)介質(zhì)中。圖中,stride-offset可以為每個(gè)lba對(duì)應(yīng)的條帶號(hào)。

      需要說(shuō)明的是,本步驟與步驟103并不存在邏輯上必然的先后關(guān)系,可以為在執(zhí)行本步驟的過(guò)程中,執(zhí)行步驟103,如本步驟選取一個(gè)目標(biāo)條帶后,可以在映射表中記錄全部寫(xiě)數(shù)據(jù)塊中可填充在該目標(biāo)條帶的部分寫(xiě)數(shù)據(jù)塊各自的lba與該目標(biāo)條帶的條帶號(hào)的映射關(guān)系,并將該部分寫(xiě)數(shù)據(jù)塊填充到該目標(biāo)條帶中,然后執(zhí)行步驟103,將填充滿對(duì)應(yīng)的寫(xiě)數(shù)據(jù)塊的該目標(biāo)條帶進(jìn)行數(shù)據(jù)下盤(pán),等待數(shù)據(jù)下盤(pán)后再執(zhí)行本步驟選取下一目標(biāo)條帶或在數(shù)據(jù)下盤(pán)的過(guò)程中執(zhí)行本步驟選取下一目標(biāo)條帶;也可以在執(zhí)行本步驟之后,再執(zhí)行步驟103,如執(zhí)行本步驟依次選取多個(gè)目標(biāo)條帶,并將全部數(shù)據(jù)塊填充到多個(gè)目標(biāo)條帶后,再執(zhí)行步驟103將多個(gè)目標(biāo)條帶中已填充滿對(duì)應(yīng)的寫(xiě)數(shù)據(jù)塊的目標(biāo)條帶進(jìn)行數(shù)據(jù)下盤(pán)。本實(shí)施例對(duì)此不受任何限制。

      步驟103:對(duì)填充滿對(duì)應(yīng)的寫(xiě)數(shù)據(jù)塊的目標(biāo)條帶進(jìn)行數(shù)據(jù)下盤(pán)。

      其中,數(shù)據(jù)下盤(pán)可以為將目標(biāo)條帶中的寫(xiě)數(shù)據(jù)塊存儲(chǔ)到對(duì)應(yīng)的存儲(chǔ)介質(zhì)。對(duì)于本步驟中將填充滿對(duì)應(yīng)的寫(xiě)數(shù)據(jù)塊的目標(biāo)條帶進(jìn)行數(shù)據(jù)下盤(pán)的具體過(guò)程,可以采用與現(xiàn)有技術(shù)相同或相似的方式,也可以由設(shè)計(jì)人員自行設(shè)置其它方式,本實(shí)施例對(duì)此不受任何限制。

      可以理解的是,由于步驟102中目標(biāo)條帶的選取可以是每填充滿一個(gè)目標(biāo)條帶并進(jìn)行本步驟的數(shù)據(jù)下盤(pán)后,再選取的下一目標(biāo)條帶,所以本步驟中對(duì)于全部寫(xiě)數(shù)據(jù)塊填充的目標(biāo)條帶而言,可以對(duì)全部目標(biāo)條帶進(jìn)行數(shù)據(jù)下盤(pán),如全部寫(xiě)數(shù)據(jù)塊剛好填充滿全部目標(biāo)條帶;也可以為對(duì)全部目標(biāo)條帶中除一個(gè)未填充滿的目標(biāo)條帶外的其他目標(biāo)條帶進(jìn)行數(shù)據(jù)下盤(pán),如全部寫(xiě)數(shù)據(jù)塊的部分寫(xiě)數(shù)據(jù)塊填充滿上述其他目標(biāo)條帶后,剩余的寫(xiě)數(shù)據(jù)塊未填充滿下一個(gè)目標(biāo)條帶。本實(shí)施例對(duì)此不受任何限制。

      需要說(shuō)明的是,對(duì)于未填充滿對(duì)應(yīng)的寫(xiě)數(shù)據(jù)塊的目標(biāo)條帶,可以通過(guò)步驟102等待下一次寫(xiě)io數(shù)據(jù)切割的寫(xiě)數(shù)據(jù)塊再進(jìn)行填充;也可以直接進(jìn)行數(shù)據(jù)下盤(pán)。本實(shí)施例對(duì)此不受任何限制。

      本實(shí)施例中,本發(fā)明實(shí)施例通過(guò)從全部可用的條帶中,按預(yù)設(shè)規(guī)則選取目標(biāo)條帶,在映射表中記錄寫(xiě)數(shù)據(jù)塊各自的lba(logicblockaddress,邏輯塊地址)與各自對(duì)應(yīng)的目標(biāo)條帶的條帶號(hào)的映射關(guān)系,可以使用偏移和raid條帶映射的方式將數(shù)據(jù)塊填充到對(duì)應(yīng)的目標(biāo)條帶,使得目標(biāo)條帶中填充的內(nèi)容均為數(shù)據(jù)塊,不存在空的填充內(nèi)容,使得隨機(jī)io可以順序化填充到目標(biāo)條帶中;通過(guò)對(duì)填充滿對(duì)應(yīng)的寫(xiě)數(shù)據(jù)塊的目標(biāo)條帶進(jìn)行數(shù)據(jù)下盤(pán),可以使數(shù)據(jù)塊可以順序化存儲(chǔ)到存儲(chǔ)介質(zhì)中,使得隨機(jī)io也可以進(jìn)行順序化存儲(chǔ),提升了全閃存陣列的性能和使用壽命,并且實(shí)現(xiàn)了傳統(tǒng)磁盤(pán)陣列和全閃存陣列的結(jié)合,減輕了傳統(tǒng)磁盤(pán)陣列向全閃存陣列轉(zhuǎn)換難度,提升了用戶體驗(yàn)。

      基于上一實(shí)施例,展示了基于全閃存陣列的隨機(jī)io順序化方法的寫(xiě)操作的具體流程,對(duì)于基于全閃存陣列的隨機(jī)io順序化方法的讀操作的具體流程,可以通過(guò)本發(fā)明實(shí)施例進(jìn)行展示。具體的請(qǐng)參考圖3,圖3為本發(fā)明實(shí)施例所提供的另一種基于全閃存陣列的隨機(jī)io順序化方法的流程圖。該方法可以包括:

      步驟201:接收讀io請(qǐng)求后,構(gòu)建讀io數(shù)據(jù)并將讀io數(shù)據(jù)按預(yù)設(shè)長(zhǎng)度切割為讀數(shù)據(jù)塊。

      其中,本步驟中的預(yù)設(shè)長(zhǎng)度可以與上一實(shí)施例中的預(yù)設(shè)長(zhǎng)度相同。

      可以理解的是,對(duì)于本步驟中主機(jī)接收用戶發(fā)送的讀io請(qǐng)求后,根據(jù)讀io請(qǐng)求構(gòu)建讀io數(shù)據(jù)并將讀io數(shù)據(jù)按預(yù)設(shè)長(zhǎng)度切割為讀數(shù)據(jù)塊的具體方式,可以采用與現(xiàn)有技術(shù)相同或相似的方式,本實(shí)施例對(duì)此不受任何限制。

      步驟202:根據(jù)讀數(shù)據(jù)塊各自的lba分別查詢映射表中是否存在對(duì)應(yīng)的條帶號(hào);若是,則進(jìn)入步驟203;若否,則進(jìn)入步驟204。

      可以理解的是,本步驟可以為分別根據(jù)每個(gè)讀數(shù)據(jù)塊的lba依次查詢映射表中是否存在對(duì)應(yīng)的條帶號(hào),如分別判斷每個(gè)讀數(shù)據(jù)塊的lba是否存在對(duì)應(yīng)的條帶號(hào);也可以為對(duì)全部讀數(shù)據(jù)塊各自的lba查詢映射表中是否存在對(duì)應(yīng)的條帶號(hào),如直接判斷全部讀數(shù)據(jù)塊各自的lba是否均存在對(duì)應(yīng)的條帶號(hào)。本實(shí)施例對(duì)此不受任何限制。

      步驟203:讀取條帶號(hào)對(duì)應(yīng)的條帶的數(shù)據(jù)表,并下盤(pán)讀取相應(yīng)的數(shù)據(jù)。

      其中,數(shù)據(jù)表可以為上一實(shí)施例中對(duì)目標(biāo)條帶進(jìn)行數(shù)據(jù)下盤(pán)時(shí)生成的數(shù)據(jù)表,對(duì)于數(shù)據(jù)表的具體生成方式,可以采用與現(xiàn)有技術(shù)相同或相似的方式,本實(shí)施例對(duì)此不受任何限制。

      可以理解的是,本步驟中條帶號(hào)對(duì)應(yīng)的條帶可以為上一實(shí)施例中寫(xiě)數(shù)據(jù)塊填充的目標(biāo)條帶。對(duì)于本步驟中的具體過(guò)程,可以采用與現(xiàn)有技術(shù)相同或相似的方式,本實(shí)施例對(duì)此不受任何限制。

      步驟204:將lba不存在對(duì)應(yīng)的條帶號(hào)的讀數(shù)據(jù)塊填充0。

      可以理解的是,本步驟可以為選取出全部讀數(shù)據(jù)塊各自的lba中不存在對(duì)應(yīng)的條帶號(hào)的lba,將該lba對(duì)應(yīng)的讀數(shù)據(jù)塊填充0。

      具體的,對(duì)于將lba不存在對(duì)應(yīng)的條帶號(hào)的讀數(shù)據(jù)塊填充0的具體方式,可以采用與現(xiàn)有技術(shù)相同或相似的方式,本實(shí)施例對(duì)此不受任何限制。

      本實(shí)施例中,本發(fā)明實(shí)施例通過(guò)根據(jù)讀數(shù)據(jù)塊各自的lba分別查詢映射表中是否存在對(duì)應(yīng)的條帶號(hào),可以根據(jù)映射表獲取每個(gè)讀數(shù)據(jù)塊的lba對(duì)應(yīng)的條帶號(hào),從而查找到對(duì)應(yīng)的條帶,避免了查詢找不到讀數(shù)據(jù)塊對(duì)應(yīng)的條帶的情況發(fā)生。

      請(qǐng)參考圖4,圖4為本發(fā)明實(shí)施例所提供的一種基于全閃存陣列的隨機(jī)io順序化裝置的結(jié)構(gòu)圖。該裝置可以包括:

      寫(xiě)切割模塊100,用于接收寫(xiě)io數(shù)據(jù)后,將寫(xiě)io數(shù)據(jù)按預(yù)設(shè)長(zhǎng)度切割為寫(xiě)數(shù)據(jù)塊;

      處理模塊200,用于從全部可用的條帶中,按預(yù)設(shè)規(guī)則選取目標(biāo)條帶,在映射表中記錄寫(xiě)數(shù)據(jù)塊各自的lba與各自對(duì)應(yīng)的目標(biāo)條帶的條帶號(hào)的映射關(guān)系,并將寫(xiě)數(shù)據(jù)塊填充到各自對(duì)應(yīng)的目標(biāo)條帶中;其中,可用的條帶包括未填充滿對(duì)應(yīng)的寫(xiě)數(shù)據(jù)塊的目標(biāo)條帶;

      下盤(pán)模塊300,用于對(duì)填充滿對(duì)應(yīng)的寫(xiě)數(shù)據(jù)塊的目標(biāo)條帶進(jìn)行數(shù)據(jù)下盤(pán)。

      可選的,處理模塊200,可以包括:

      填充子模塊,用于依次將寫(xiě)數(shù)據(jù)塊填充到各自對(duì)應(yīng)的目標(biāo)條帶中。

      可選的,處理模塊200,可以包括:

      選取子模塊,用于根據(jù)寫(xiě)數(shù)據(jù)塊的數(shù)量,從全部可用的條帶中,依次選取使用次數(shù)最少且對(duì)應(yīng)的條帶號(hào)最小的目標(biāo)條帶。

      可選的,寫(xiě)切割模塊100,可以包括:

      寫(xiě)切割子模塊,用于將寫(xiě)io數(shù)據(jù)按4kb或8kb的長(zhǎng)度切割為寫(xiě)數(shù)據(jù)塊。

      可選的,該裝置還可以包括:

      讀切割模塊,用于接收讀io請(qǐng)求后,構(gòu)建讀io數(shù)據(jù)并將讀io數(shù)據(jù)按預(yù)設(shè)長(zhǎng)度切割為讀數(shù)據(jù)塊;

      判斷模塊,用于根據(jù)讀數(shù)據(jù)塊各自的lba分別查詢映射表中是否存在對(duì)應(yīng)的條帶號(hào);若是,則向讀取模塊發(fā)送讀取信號(hào);若否,則向填充模塊發(fā)送填充信號(hào);

      讀取模塊,用于接收讀取信號(hào),讀取條帶號(hào)對(duì)應(yīng)的條帶的數(shù)據(jù)表,并下盤(pán)讀取相應(yīng)的數(shù)據(jù);

      填充模塊,用于接收填充信號(hào),將lba不存在對(duì)應(yīng)的條帶號(hào)的讀數(shù)據(jù)塊填充0。

      本實(shí)施例中,本發(fā)明實(shí)施例通過(guò)處理模塊200從全部可用的條帶中,按預(yù)設(shè)規(guī)則選取目標(biāo)條帶,在映射表中記錄寫(xiě)數(shù)據(jù)塊各自的lba(logicblockaddress,邏輯塊地址)與各自對(duì)應(yīng)的目標(biāo)條帶的條帶號(hào)的映射關(guān)系,可以使用偏移和raid條帶映射的方式將數(shù)據(jù)塊填充到對(duì)應(yīng)的目標(biāo)條帶,使得目標(biāo)條帶中填充的內(nèi)容均為數(shù)據(jù)塊,不存在空的填充內(nèi)容,使得隨機(jī)io可以順序化填充到目標(biāo)條帶中;通過(guò)下盤(pán)模塊300對(duì)填充滿對(duì)應(yīng)的寫(xiě)數(shù)據(jù)塊的目標(biāo)條帶進(jìn)行數(shù)據(jù)下盤(pán),可以使數(shù)據(jù)塊可以順序化存儲(chǔ)到存儲(chǔ)介質(zhì)中,使得隨機(jī)io也可以進(jìn)行順序化存儲(chǔ),提升了全閃存陣列的性能和使用壽命,并且實(shí)現(xiàn)了傳統(tǒng)磁盤(pán)陣列和全閃存陣列的結(jié)合,減輕了傳統(tǒng)磁盤(pán)陣列向全閃存陣列轉(zhuǎn)換難度,提升了用戶體驗(yàn)。

      說(shuō)明書(shū)中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見(jiàn)即可。對(duì)于實(shí)施例公開(kāi)的裝置而言,由于其與實(shí)施例公開(kāi)的方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法部分說(shuō)明即可。

      專業(yè)人員還可以進(jìn)一步意識(shí)到,結(jié)合本文中所公開(kāi)的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來(lái)實(shí)現(xiàn),為了清楚地說(shuō)明硬件和軟件的可互換性,在上述說(shuō)明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來(lái)執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來(lái)使用不同方法來(lái)實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。

      結(jié)合本文中所公開(kāi)的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來(lái)實(shí)施。軟件模塊可以置于隨機(jī)存儲(chǔ)器(ram)、內(nèi)存、只讀存儲(chǔ)器(rom)、電可編程rom、電可擦除可編程rom、寄存器、硬盤(pán)、可移動(dòng)磁盤(pán)、cd-rom、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。

      以上對(duì)本發(fā)明所提供的基于全閃存陣列的隨機(jī)io順序化方法及裝置進(jìn)行了詳細(xì)介紹。本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以對(duì)本發(fā)明進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。

      當(dāng)前第1頁(yè)1 2 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1