本申請涉及存儲技術(shù)領(lǐng)域,更具體地說,涉及一種數(shù)據(jù)寫入方法及裝置。
背景技術(shù):
固態(tài)硬盤(ssd)是由控制單元和固態(tài)存儲單元(nandflash)組成的硬盤。固態(tài)硬盤采用固態(tài)存儲單元存儲數(shù)據(jù),數(shù)據(jù)寫入之前需要對固態(tài)存儲單元進(jìn)行擦除操作,擦除操作的基本單位為塊(block),每個塊包含若干個頁(page),頁是數(shù)據(jù)讀寫操作的基本單元。
以寫操作對應(yīng)的數(shù)據(jù)在寫操作前后均保存在ssd中為例,完成一次寫操作分兩步:首先將數(shù)據(jù)寫入已經(jīng)擦除過的page(即空白page),再將原先存放該數(shù)據(jù)的page標(biāo)記為無效,其中,被標(biāo)記為無效的page未經(jīng)擦除前不能再次被寫入,這樣的page稱為垃圾page。通常,ssd初始時會預(yù)留一部分空白page供新的寫入操作,在這些空白page耗盡前必須及時啟動回收,回收那些被標(biāo)記為無效的垃圾page,這個過程被稱為垃圾回收(garbagecollection)。
然而,由于擦除的基本單位是block,且實(shí)際操作中block中不可能全是無效page,為達(dá)到回收無效page的目的,需要先將block中的有效page中的數(shù)據(jù)搬移走,然后再將該block擦除。這種先擦后寫的特性導(dǎo)致了gc延遲(garbagecollectionlatency)問題,相比于寫操作來說,回收操作本身帶來了額外的后臺數(shù)據(jù)搬移,這就是通常所說的寫放大,而寫放大所導(dǎo)致的gc延遲,直接影響了ssd的性能(gc延遲越小,整個ssd的性能就越好)。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本申請實(shí)施例提供一種數(shù)據(jù)寫入方法及裝置,通過減少待擦除塊中有效頁的數(shù)量,減少寫放大導(dǎo)致的gc延遲,進(jìn)而減少數(shù)據(jù)回收操作對ssd性能的影響。
為了實(shí)現(xiàn)上述目的,現(xiàn)提出的方案如下:
一種數(shù)據(jù)寫入方法,應(yīng)用于固態(tài)硬盤ssd,包括:
s11、獲取所述ssd中的目標(biāo)待擦除塊;
s12、確定所述目標(biāo)待擦除塊的目標(biāo)待擦除塊信息,所述目標(biāo)待擦除塊信息中攜帶所述目標(biāo)待擦除塊中每個碎片頁的碎片頁信息;
s13、計(jì)算當(dāng)前寫請求相對所述目標(biāo)待擦除塊的寫請求次數(shù);
s14、判斷所述寫請求次數(shù)是否滿足預(yù)先設(shè)置的擦除規(guī)則;當(dāng)滿足時;執(zhí)行步驟s19;當(dāng)不滿足時,執(zhí)行步驟s15;
s15、依據(jù)所述碎片頁信息,逐個判斷所述目標(biāo)待擦除塊中是否存在剩余空間滿足當(dāng)前所述寫請求的數(shù)據(jù)寫入需求的碎片頁;當(dāng)存在時,執(zhí)行步驟s16;當(dāng)不存在時,執(zhí)行步驟s18;
s16、獲取剩余空間滿足當(dāng)前所述寫請求的數(shù)據(jù)寫入需求的碎片頁中的數(shù)據(jù)信息,并將所述碎片頁標(biāo)記為無效頁;
s17、將所述數(shù)據(jù)信息和當(dāng)前所述寫請求中的待寫入數(shù)據(jù),寫入所述ssd中的待寫入塊中;
s18、將當(dāng)前所述寫請求中的所述待寫入數(shù)據(jù),寫入所述ssd中的所述待寫入塊中;
s19、獲取所述ssd中的下一待擦除塊,并將獲取到的所述下一待擦除塊確定為所述ssd中的目標(biāo)待擦除塊,返回執(zhí)行s11。
優(yōu)選的,所述獲取所述ssd中的目標(biāo)待擦除塊包括:
當(dāng)所述ssd中的空閑空間低于啟動數(shù)據(jù)回收操作的閾值時,獲取所述ssd中的目標(biāo)待擦除塊。
優(yōu)選的,當(dāng)所述ssd中的空閑空間不低于所述啟動數(shù)據(jù)回收操作的閾值時,該方法還包括:
將當(dāng)前所述寫請求中的待寫入數(shù)據(jù)寫入所述ssd中的所述待寫入塊中。
優(yōu)選的,所述確定所述目標(biāo)待擦除塊的目標(biāo)待擦除塊信息包括:
確定所述目標(biāo)待擦除塊中的有效頁;
分別將每個存在剩余空間的有效頁確定為一個碎片頁;
由所述目標(biāo)待擦除塊中的每個所述碎片頁的碎片頁信息組成所述目標(biāo)待擦除塊信息。
優(yōu)選的,當(dāng)所述碎片頁信息包括對應(yīng)所述碎片頁信息的碎片頁中的剩余空間信息時,所述判斷所述目標(biāo)待擦除塊中是否存在剩余空間滿足當(dāng)前所述寫請求的數(shù)據(jù)寫入需求的碎片頁包括:
針對所述目標(biāo)待擦除塊信息中的每個碎片頁信息,逐個判斷所述碎片頁信息中包括的剩余空間信息指示的剩余空間是否大于當(dāng)前所述寫請求中的待寫入數(shù)據(jù)的存儲空間;
當(dāng)判斷出存在碎片頁信息中包括的剩余空間信息指示的剩余空間大于當(dāng)前所述寫請求中的待寫入數(shù)據(jù)的存儲空間時,確定所述目標(biāo)待擦除塊中存在剩余空間滿足當(dāng)前所述寫請求的數(shù)據(jù)寫入需求的碎片頁;
當(dāng)未判斷出存在碎片頁信息中包括的剩余空間信息指示的剩余空間大于當(dāng)前所述寫請求中的待寫入數(shù)據(jù)的存儲空間時,確定所述目標(biāo)待擦除塊中不存在剩余空間滿足當(dāng)前所述寫請求的數(shù)據(jù)寫入需求的碎片頁。
優(yōu)選的,在所述步驟s7之后還包括:
獲取所述數(shù)據(jù)信息和當(dāng)前所述寫請求中的待寫入數(shù)據(jù),寫入的所述ssd中的待寫入塊中的第一地址;
獲取所述數(shù)據(jù)信息所屬的碎片頁位于所述ssd中的第二地址;
存儲所述第一地址和第二地址的對應(yīng)關(guān)系。
一種數(shù)據(jù)寫入裝置,應(yīng)用于固態(tài)硬盤ssd,包括:
第一獲取單元,用于執(zhí)行s11、獲取所述ssd中的目標(biāo)待擦除塊;
目標(biāo)待擦除塊信息確定單元,用于執(zhí)行s12、確定所述目標(biāo)待擦除塊的目標(biāo)待擦除塊信息,所述目標(biāo)待擦除塊信息中攜帶所述目標(biāo)待擦除塊中每個碎片頁的碎片頁信息;
寫請求次數(shù)計(jì)算單元,用于執(zhí)行s13、計(jì)算當(dāng)前寫請求相對所述目標(biāo)待擦除塊的寫請求次數(shù);
第一判斷單元,用于執(zhí)行s14、判斷所述寫請求次數(shù)是否滿足預(yù)先設(shè)置的擦除規(guī)則;當(dāng)滿足時;執(zhí)行步驟s19;當(dāng)不滿足時,執(zhí)行步驟s15;
第二判斷單元,用于執(zhí)行s15、依據(jù)所述碎片頁信息,逐個判斷所述目標(biāo)待擦除塊中是否存在剩余空間滿足當(dāng)前所述寫請求的數(shù)據(jù)寫入需求的碎片頁;當(dāng)存在時,執(zhí)行步驟s16;當(dāng)不存在時,執(zhí)行步驟s18;
數(shù)據(jù)信息獲取單元,用于執(zhí)行s16、獲取剩余空間滿足當(dāng)前所述寫請求的數(shù)據(jù)寫入需求的碎片頁中的數(shù)據(jù)信息,并將所述碎片頁標(biāo)記為無效頁;
第一寫入單元,用于執(zhí)行s17、將所述數(shù)據(jù)信息和當(dāng)前所述寫請求中的待寫入數(shù)據(jù),寫入所述ssd中的待寫入塊中;
第二寫入單元,用于執(zhí)行s18、將當(dāng)前所述寫請求中的所述待寫入數(shù)據(jù),寫入所述ssd中的所述待寫入塊中;
第二獲取單元,用于執(zhí)行s19、獲取所述ssd中的下一待擦除塊,并將獲取到的所述下一待擦除塊確定為所述ssd中的目標(biāo)待擦除塊,返回執(zhí)行s11。
優(yōu)選的,第一獲取單元,用于當(dāng)所述ssd中的空閑空間低于啟動數(shù)據(jù)回收操作的閾值時,獲取所述ssd中的目標(biāo)待擦除塊。
優(yōu)選的,還包括第三寫入單元,用于當(dāng)所述ssd中的空閑空間不低于所述啟動數(shù)據(jù)回收操作的閾值時,將當(dāng)前所述寫請求中的待寫入數(shù)據(jù)寫入所述ssd中的所述待寫入塊中。
優(yōu)選的,還包括存儲單元,用于在將所述數(shù)據(jù)信息和當(dāng)前所述寫請求中的待寫入數(shù)據(jù),寫入所述ssd中的待寫入塊中之后,獲取所述數(shù)據(jù)信息和當(dāng)前所述寫請求中的待寫入數(shù)據(jù),寫入的所述ssd中的待寫入塊中的第一地址;以及,獲取所述數(shù)據(jù)信息所屬的碎片頁位于所述ssd中的第二地址;以及,存儲所述第一地址和第二地址的對應(yīng)關(guān)系。
本申請?zhí)峁┮环N數(shù)據(jù)寫入方法及裝置,應(yīng)用于固態(tài)硬盤ssd,該方法通過獲取ssd中的目標(biāo)待擦除塊以及目標(biāo)待擦除塊信息,并計(jì)算當(dāng)前寫請求相對目標(biāo)待擦除塊的寫請求次數(shù),以及判斷該寫請求次數(shù)是否滿足預(yù)先設(shè)置的擦除規(guī)則,進(jìn)而使得當(dāng)滿足時,將獲取到的ssd中的下一待擦除塊確定為目標(biāo)待擦除塊;當(dāng)不滿足時,將ssd中滿足當(dāng)前寫請求的數(shù)據(jù)寫入需求的碎片頁中的數(shù)據(jù)信息和當(dāng)前寫請求中的待寫入數(shù)據(jù)存儲到ssd中的待寫入塊中,并將碎片頁標(biāo)記為無效頁的方式,減少了待擦除塊中有效頁的數(shù)量,進(jìn)而減少了寫放大導(dǎo)致的gc延遲,更進(jìn)一步的減少了數(shù)據(jù)回收操作對ssd性能的影響。
附圖說明
為了更清楚地說明本申請實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本申請實(shí)施例提供的一種數(shù)據(jù)寫入方法流程圖;
圖2為本申請實(shí)施例提供的一種確定目標(biāo)待擦除塊的目標(biāo)待擦除塊信息的方法流程圖;
圖3為本申請實(shí)施例提供的一種判斷目標(biāo)待擦除塊中是否存在剩余空間滿足當(dāng)前寫請求的數(shù)據(jù)寫入需求的碎片頁的方法流程圖;
圖4為本申請實(shí)施例提供的一種數(shù)據(jù)寫入裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本申請實(shí)施例中的附圖,對本申請實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾堉械膶?shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本申請保護(hù)的范圍。
實(shí)施例:
圖1為本申請實(shí)施例提供的一種數(shù)據(jù)寫入方法流程圖。
如圖1所示,該方法包括:
s11、獲取ssd中的目標(biāo)待擦除塊;
本申請實(shí)施例提供的一種數(shù)據(jù)寫入方法應(yīng)用于固態(tài)硬盤(ssd),并且,應(yīng)用于需要對ssd進(jìn)行數(shù)據(jù)回收操作的情況下。
在本申請實(shí)施例中,優(yōu)選的,當(dāng)需要對ssd進(jìn)行數(shù)據(jù)回收時,需要獲取ssd中的目標(biāo)待擦除塊。
具體的,當(dāng)需要對ssd進(jìn)行數(shù)據(jù)回收時,可通過與ssd的交互直接獲取ssd中的目標(biāo)待擦除塊,該目標(biāo)待擦除塊即為ssd中當(dāng)前需要被擦除的塊。
s12、確定目標(biāo)待擦除塊的目標(biāo)待擦除塊信息,目標(biāo)待擦除塊信息中攜帶目標(biāo)待擦除塊中每個碎片頁的碎片頁信息;
s13、計(jì)算當(dāng)前寫請求相對目標(biāo)待擦除塊的寫請求次數(shù);
在本申請實(shí)施例中,優(yōu)選的,當(dāng)前寫請求相對目標(biāo)待擦除塊的寫請求次數(shù)包括:從目標(biāo)待擦除塊被獲取的時刻開始,一直到計(jì)算當(dāng)前寫請求相對目標(biāo)待擦除塊的寫請求次數(shù)的時刻為止,針對目標(biāo)待擦除塊的寫請求的總個數(shù),其中,總個數(shù)即為目標(biāo)待擦除塊的寫請求次數(shù)。
例如,當(dāng)確定ssd中的目標(biāo)待擦除塊1后,第一次計(jì)算當(dāng)前寫請求相對目標(biāo)待擦除塊的寫請求次數(shù)時,計(jì)算得到的寫請求次數(shù)為1;當(dāng)再次計(jì)算當(dāng)前寫請求相對目標(biāo)待擦除塊的寫請求次數(shù)時,計(jì)算得到的寫請求次數(shù)為2;以此類推,每當(dāng)增加一次計(jì)算當(dāng)前寫請求相對目標(biāo)待擦除塊的寫請求次數(shù)時,計(jì)算得到的寫請求次數(shù)加1。
s14、判斷寫請求次數(shù)是否滿足預(yù)先設(shè)置的擦除規(guī)則;當(dāng)滿足時;執(zhí)行步驟s19;當(dāng)不滿足時,執(zhí)行步驟s15;
在本申請實(shí)施例中,優(yōu)選的,判斷寫請求次數(shù)是否滿足預(yù)先設(shè)置的擦除規(guī)則包括:判斷寫請求次數(shù)是否高于預(yù)先設(shè)置的擦除規(guī)則閾值;當(dāng)高于時,確定寫請求次數(shù)滿足預(yù)先設(shè)置的擦除規(guī)則;當(dāng)不高于時,確定寫請求次數(shù)不滿足預(yù)先設(shè)置的擦除規(guī)則。
在本申請實(shí)施例中,優(yōu)選的,預(yù)先設(shè)置的擦除規(guī)則閾值為6。
以上僅僅是本申請實(shí)施例的優(yōu)選方式,發(fā)明人可根據(jù)自己的需求任意設(shè)置判斷寫請求次數(shù)是否滿足預(yù)先設(shè)置的擦除規(guī)則的方式,在此不做限定。
s15、依據(jù)碎片頁信息,逐個判斷目標(biāo)待擦除塊中是否存在剩余空間滿足當(dāng)前寫請求的數(shù)據(jù)寫入需求的碎片頁;當(dāng)存在時,執(zhí)行步驟s16;當(dāng)不存在時,執(zhí)行步驟s18;
s16、獲取剩余空間滿足當(dāng)前寫請求的數(shù)據(jù)寫入需求的碎片頁中的數(shù)據(jù)信息,并將碎片頁標(biāo)記為無效頁;
s17、將數(shù)據(jù)信息和當(dāng)前寫請求中的待寫入數(shù)據(jù),寫入ssd中的待寫入塊中;
在本申請實(shí)施例中,優(yōu)選的,可通過與ssd的交互,直接獲取ssd中的待寫入塊。
s18、將當(dāng)前寫請求中的待寫入數(shù)據(jù),寫入ssd中的待寫入塊中;
s19、獲取ssd中的下一待擦除塊,并將獲取到的下一待擦除塊確定為ssd中的目標(biāo)待擦除塊,返回執(zhí)行s11。
在本申請實(shí)施例中,優(yōu)選的,可通過與ssd的交互,直接獲取ssd中目標(biāo)擦除塊中的下一待擦除塊。
具體的,在獲取到ssd中的下一待擦除塊后,可將獲取到的該下一待擦除塊確定為ssd中最新的目標(biāo)待擦除塊,并返回執(zhí)行s11,以便獲取最新確定的ssd中的目標(biāo)待擦除塊。
在本申請實(shí)施例中,優(yōu)選的,獲取ssd中的目標(biāo)待擦除塊包括:當(dāng)ssd中的空閑空間低于啟動數(shù)據(jù)回收操作的閾值時,獲取ssd中的目標(biāo)待擦除塊。
在本申請實(shí)施例中,優(yōu)選的,上述提到的“在獲取到ssd中的下一待擦除塊后,可將獲取到的該下一待擦除塊確定為ssd中最新的目標(biāo)待擦除塊,并返回執(zhí)行s11,以便獲取最新確定的ssd中的目標(biāo)待擦除塊”的過程,具體為:在獲取到ssd中的下一待擦除塊后,可將獲取到的該下一待擦除塊確定為ssd中最新的目標(biāo)待擦除塊,并返回執(zhí)行s11,以便在ssd中的空閑空間低于啟動數(shù)據(jù)回收操作的閾值時,獲取最新確定的ssd中的目標(biāo)待擦除塊。
進(jìn)一步的,在本申請實(shí)施例提供的一種數(shù)據(jù)寫入方法中,當(dāng)ssd中的空閑空間不低于啟動數(shù)據(jù)回收操作的閾值時,該方法還包括:將當(dāng)前寫請求中的待寫入數(shù)據(jù)寫入ssd中的待寫入塊中。
在本申請實(shí)施例中,優(yōu)選的,可通過與ssd的交互,直接獲取ssd中的待寫入塊。
圖2為本申請實(shí)施例提供的一種確定目標(biāo)待擦除塊的目標(biāo)待擦除塊信息的方法流程圖。
如圖2所示,該方法包括:
s21、確定目標(biāo)待擦除塊中的有效頁;
s22、分別將每個存在剩余空間的有效頁確定為一個碎片頁;
在本申請實(shí)施例中,優(yōu)選的,針對目標(biāo)待擦除塊中的每個有效頁,判斷該有效頁是否存在剩余空間,當(dāng)存在時,將該有效頁確定為一個碎片頁。
s23、由目標(biāo)待擦除塊中的每個碎片頁的碎片頁信息組成目標(biāo)待擦除塊信息。
在本申請實(shí)施例中,優(yōu)選的,碎片頁信息包括對應(yīng)碎片頁信息的碎片頁中的剩余空間信息時。
具體的,每個碎片頁的碎片頁信息中均包括該碎片頁中的剩余空間信息。
在本申請實(shí)施例中,優(yōu)選的,當(dāng)碎片頁信息包括對應(yīng)碎片頁信息的碎片頁中的剩余空間信息時,判斷目標(biāo)待擦除塊中是否存在剩余空間滿足當(dāng)前寫請求的數(shù)據(jù)寫入需求的碎片頁的方法,請參見圖3。
如圖3所示,該方法包括:
s31、針對目標(biāo)待擦除塊信息中的每個碎片頁信息,逐個判斷碎片頁信息中包括的剩余空間信息指示的剩余空間是否大于當(dāng)前寫請求中的待寫入數(shù)據(jù)的存儲空間;
在本申請實(shí)施例中,優(yōu)選的,在判斷目標(biāo)待擦除塊中是否存在剩余空間滿足當(dāng)前寫請求的數(shù)據(jù)寫入需求的碎片頁時,需針對目標(biāo)待擦除塊的目標(biāo)待擦除塊信息中的各個碎片頁信息進(jìn)行逐個判斷,判斷的過程為:判斷碎片頁信息中包括的剩余空間信息指示的剩余空間是否大于當(dāng)前寫請求中的待寫入數(shù)據(jù)的存儲空間(也就是當(dāng)前寫請求中的待寫入數(shù)據(jù)進(jìn)行存儲時需占用的存儲空間)。
s32、當(dāng)判斷出存在碎片頁信息中包括的剩余空間信息指示的剩余空間大于當(dāng)前寫請求中的待寫入數(shù)據(jù)的存儲空間時,確定目標(biāo)待擦除塊中存在剩余空間滿足當(dāng)前寫請求的數(shù)據(jù)寫入需求的碎片頁;
在本申請實(shí)施例中,優(yōu)選的,當(dāng)判斷出存在碎片頁信息中包括的剩余空間信息指示的剩余空間大于當(dāng)前寫請求中的待寫入數(shù)據(jù)的存儲空間時,則不在對目標(biāo)待擦除塊信息中的剩余未進(jìn)行判斷的碎片頁信息進(jìn)行判斷,以提高效率。
s33、當(dāng)未判斷出存在碎片頁信息中包括的剩余空間信息指示的剩余空間大于當(dāng)前寫請求中的待寫入數(shù)據(jù)的存儲空間時,確定目標(biāo)待擦除塊中不存在剩余空間滿足當(dāng)前寫請求的數(shù)據(jù)寫入需求的碎片頁。
進(jìn)一步的,在本申請實(shí)施例提供的一種數(shù)據(jù)寫入方法中,在將數(shù)據(jù)信息和當(dāng)前寫請求中的待寫入數(shù)據(jù),寫入ssd中的待寫入塊中之后,該方法還包括:獲取數(shù)據(jù)信息和當(dāng)前寫請求中的待寫入數(shù)據(jù),寫入的ssd中的待寫入塊中的第一地址;以及,獲取數(shù)據(jù)信息所屬的碎片頁位于ssd中的第二地址;以及,存儲第一地址和第二地址的對應(yīng)關(guān)系。
在本申請實(shí)施例中,優(yōu)選的,第一地址為:數(shù)據(jù)信息和當(dāng)前寫請求中的待寫入數(shù)據(jù)寫入在ssd中的地址(即數(shù)據(jù)信息和當(dāng)前寫請求中的待寫入數(shù)據(jù)在ssd中的寫入地址);第二地址為數(shù)據(jù)信息所屬的碎片頁在ssd中的地址。
在本申請實(shí)施例中,優(yōu)選的,存儲第一地址和第二地址的對應(yīng)關(guān)系包括:將第一地址存儲為原始地址,將第二地址存儲為最新地址,并且將第二地址設(shè)置為與第一地址對應(yīng)。
以上僅僅是本申請實(shí)施例的優(yōu)選方式,發(fā)明人可根據(jù)自己的需求任意設(shè)置存儲第一地址和第二地址的對應(yīng)關(guān)系的具體方式,在此不做限定。
圖4為本申請實(shí)施例提供的一種數(shù)據(jù)寫入裝置的結(jié)構(gòu)示意圖。
如圖4所示,該裝置包括:
第一獲取單元41,用于執(zhí)行s11、獲取ssd中的目標(biāo)待擦除塊;
目標(biāo)待擦除塊信息確定單元42,用于執(zhí)行s12、確定目標(biāo)待擦除塊的目標(biāo)待擦除塊信息,目標(biāo)待擦除塊信息中攜帶目標(biāo)待擦除塊中每個碎片頁的碎片頁信息;
寫請求次數(shù)計(jì)算單元43,用于執(zhí)行s13、計(jì)算當(dāng)前寫請求相對目標(biāo)待擦除塊的寫請求次數(shù);
第一判斷單元44,用于執(zhí)行s14、判斷寫請求次數(shù)是否滿足預(yù)先設(shè)置的擦除規(guī)則;當(dāng)滿足時;執(zhí)行步驟s19;當(dāng)不滿足時,執(zhí)行步驟s15;
第二判斷單元45,用于執(zhí)行s15、依據(jù)碎片頁信息,逐個判斷目標(biāo)待擦除塊中是否存在剩余空間滿足當(dāng)前寫請求的數(shù)據(jù)寫入需求的碎片頁;當(dāng)存在時,執(zhí)行步驟s16;當(dāng)不存在時,執(zhí)行步驟s18;
數(shù)據(jù)信息獲取單元46,用于執(zhí)行s16、獲取剩余空間滿足當(dāng)前寫請求的數(shù)據(jù)寫入需求的碎片頁中的數(shù)據(jù)信息,并將碎片頁標(biāo)記為無效頁;
第一寫入單元47,用于執(zhí)行s17、將數(shù)據(jù)信息和當(dāng)前寫請求中的待寫入數(shù)據(jù),寫入ssd中的待寫入塊中;
第二寫入單元48,用于執(zhí)行s18、將當(dāng)前寫請求中的待寫入數(shù)據(jù),寫入ssd中的待寫入塊中;
第二獲取單元49,用于執(zhí)行s19、獲取ssd中的下一待擦除塊,并將獲取到的下一待擦除塊確定為ssd中的目標(biāo)待擦除塊,返回執(zhí)行s11。
在本申請實(shí)施例中,優(yōu)選的,第一獲取單元41,用于當(dāng)ssd中的空閑空間低于啟動數(shù)據(jù)回收操作的閾值時,獲取ssd中的目標(biāo)待擦除塊。
進(jìn)一步的,在本申請實(shí)施例提供的一種數(shù)據(jù)寫入裝置中,還包括第三寫入單元,該第三寫入單元用于當(dāng)ssd中的空閑空間不低于啟動數(shù)據(jù)回收操作的閾值時,將當(dāng)前寫請求中的待寫入數(shù)據(jù)寫入ssd中的待寫入塊中。
在本申請實(shí)施例中,優(yōu)選的,目標(biāo)待擦除塊信息確定單元,用于確定目標(biāo)待擦除塊中的有效頁;以及,分別將每個存在剩余空間的有效頁確定為一個碎片頁;以及,由目標(biāo)待擦除塊中的每個碎片頁的碎片頁信息組成目標(biāo)待擦除塊信息。
在本申請實(shí)施例中,優(yōu)選的,第二判斷單元,用于當(dāng)碎片頁信息包括對應(yīng)碎片頁信息的碎片頁中的剩余空間信息時,針對目標(biāo)待擦除塊信息中的每個碎片頁信息,逐個判斷碎片頁信息中包括的剩余空間信息指示的剩余空間是否大于當(dāng)前寫請求中的待寫入數(shù)據(jù)的存儲空間;以及,當(dāng)判斷出存在碎片頁信息中包括的剩余空間信息指示的剩余空間大于當(dāng)前寫請求中的待寫入數(shù)據(jù)的存儲空間時,確定目標(biāo)待擦除塊中存在剩余空間滿足當(dāng)前寫請求的數(shù)據(jù)寫入需求的碎片頁;以及,當(dāng)未判斷出存在碎片頁信息中包括的剩余空間信息指示的剩余空間大于當(dāng)前寫請求中的待寫入數(shù)據(jù)的存儲空間時,確定目標(biāo)待擦除塊中不存在剩余空間滿足當(dāng)前寫請求的數(shù)據(jù)寫入需求的碎片頁。
進(jìn)一步的,在本申請實(shí)施例提供的一種數(shù)據(jù)寫入裝置中,還包括存儲單元,該存儲單元用于在將數(shù)據(jù)信息和當(dāng)前寫請求中的待寫入數(shù)據(jù),寫入ssd中的待寫入塊中之后,獲取數(shù)據(jù)信息和當(dāng)前寫請求中的待寫入數(shù)據(jù),寫入的ssd中的待寫入塊中的第一地址;以及,獲取數(shù)據(jù)信息所屬的碎片頁位于ssd中的第二地址;以及,存儲第一地址和第二地址的對應(yīng)關(guān)系。
本申請?zhí)峁┮环N數(shù)據(jù)寫入方法及裝置,應(yīng)用于固態(tài)硬盤ssd,該方法通過獲取ssd中的目標(biāo)待擦除塊以及目標(biāo)待擦除塊信息,并計(jì)算當(dāng)前寫請求相對目標(biāo)待擦除塊的寫請求次數(shù),以及判斷該寫請求次數(shù)是否滿足預(yù)先設(shè)置的擦除規(guī)則,進(jìn)而使得當(dāng)滿足時,將獲取到的ssd中的下一待擦除塊確定為目標(biāo)待擦除塊;當(dāng)不滿足時,將ssd中滿足當(dāng)前寫請求的數(shù)據(jù)寫入需求的碎片頁中的數(shù)據(jù)信息和當(dāng)前寫請求中的待寫入數(shù)據(jù)存儲到ssd中的待寫入塊中,并將碎片頁標(biāo)記為無效頁的方式,減少了待擦除塊中有效頁的數(shù)量,進(jìn)而減少了寫放大導(dǎo)致的gc延遲,更進(jìn)一步的減少了數(shù)據(jù)回收操作對ssd性能的影響。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實(shí)體或者操作與另一個實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
本說明書中各個實(shí)施例采用遞進(jìn)的方式描述,每個實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個實(shí)施例之間相同相似部分互相參見即可。
對所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本申請。對這些實(shí)施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本申請的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本申請將不會被限制于本文所示的這些實(shí)施例, 而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。