本發(fā)明涉及數(shù)據(jù)存儲(chǔ)領(lǐng)域,具體涉及一種基于零預(yù)留空間固態(tài)硬盤(pán)的數(shù)據(jù)管理方法、裝置及可讀介質(zhì)。
背景技術(shù):
1、由于nand閃存的異地更新特性,即將修改的數(shù)據(jù)寫(xiě)在其他可編程的閃存頁(yè)中,并將原來(lái)存儲(chǔ)數(shù)據(jù)的閃存頁(yè)標(biāo)記為無(wú)效狀態(tài),導(dǎo)致廠商在制造固態(tài)硬盤(pán)時(shí)需要預(yù)留部分對(duì)用戶透明的硬盤(pán)空間,即預(yù)留空間,來(lái)執(zhí)行垃圾回收等內(nèi)部操作。目前市面主流的固態(tài)硬盤(pán)擁有7%到50%的預(yù)留空間比例。固態(tài)硬盤(pán)的預(yù)留空間越大,就能提供更加穩(wěn)定的讀寫(xiě)性能和更長(zhǎng)的使用壽命。但預(yù)留空間是以用戶空間作為代價(jià),較大的預(yù)留空間比例會(huì)減少用戶可用空間或者增加固態(tài)硬盤(pán)的購(gòu)買(mǎi)成本,而較小的預(yù)留空間比例會(huì)導(dǎo)致硬盤(pán)內(nèi)部操作的頻繁觸發(fā),無(wú)法提供穩(wěn)定高速的讀寫(xiě)性能。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)的目的在于針對(duì)上述提到的技術(shù)問(wèn)題提出一種基于零預(yù)留空間固態(tài)硬盤(pán)的數(shù)據(jù)管理方法、裝置及可讀介質(zhì)。
2、第一方面,本發(fā)明提供了一種基于零預(yù)留空間固態(tài)硬盤(pán)的數(shù)據(jù)管理方法,包括以下步驟:
3、構(gòu)建基于slc類(lèi)型閃存塊的熱度管理鏈表,熱度管理鏈表包括有效閃存塊鏈表、部分有效閃存塊鏈表和無(wú)效閃存塊鏈表,有效閃存塊鏈表所記錄的slc類(lèi)型的閃存塊為有效閃存塊,有效閃存塊中的所有閃存頁(yè)全部為有效閃存頁(yè),部分有效閃存塊鏈表所記錄的slc類(lèi)型的閃存塊為部分有效閃存塊,部分有效閃存塊中的閃存頁(yè)包括有效閃存塊和無(wú)效閃存頁(yè),無(wú)效閃存塊鏈表所記錄的slc類(lèi)型的閃存塊為無(wú)效閃存塊,無(wú)效閃存塊中的閃存頁(yè)全部為無(wú)效閃存頁(yè);
4、獲取當(dāng)前周期的待寫(xiě)入的數(shù)據(jù)、垃圾回收的數(shù)據(jù)量和剩余tlc類(lèi)型的空閑空間容量,根據(jù)待寫(xiě)入的數(shù)據(jù)的歷史訪問(wèn)次數(shù)得到待寫(xiě)入的數(shù)據(jù)的預(yù)測(cè)熱度,根據(jù)預(yù)測(cè)熱度選擇對(duì)應(yīng)熱度類(lèi)型的slc類(lèi)型的閃存塊,并以偽編程的方式將待寫(xiě)入的數(shù)據(jù)編程到對(duì)應(yīng)熱度類(lèi)型的slc類(lèi)型的閃存塊,并對(duì)熱度管理鏈表進(jìn)行更新,得到更新后的熱度管理鏈表;
5、根據(jù)slc類(lèi)型的閃存單元中的所有的有效閃存頁(yè)的數(shù)據(jù)計(jì)算slc遷移的數(shù)據(jù)量,響應(yīng)于確定slc遷移的數(shù)據(jù)量、垃圾回收的數(shù)據(jù)量和剩余tlc類(lèi)型的空閑空間容量滿足閾值判斷條件,則在更新后的熱度管理鏈表中選擇最佳的slc閃存塊作為重編程目標(biāo),將重編程目標(biāo)中的數(shù)據(jù)以重編程的方式編程到tlc類(lèi)型的閃存單元中,將重編程目標(biāo)重編程得到的作為額外空間的slc類(lèi)型的閃存單元作為預(yù)留空間;響應(yīng)于確定slc遷移的數(shù)據(jù)量、垃圾回收的數(shù)據(jù)量和剩余tlc類(lèi)型的空閑空間容量不滿足閾值判斷條件,則將tlc類(lèi)型的閃存單元作為預(yù)留空間;預(yù)留空間用于接收垃圾回收產(chǎn)生的數(shù)據(jù)以及slc類(lèi)型閃存中的全部有效閃存頁(yè)的數(shù)據(jù)或者除重編程目標(biāo)以外的其余slc類(lèi)型的閃存單元中的有效閃存頁(yè)的數(shù)據(jù)。
6、作為優(yōu)選,閾值判斷條件為:
7、slc遷移的數(shù)據(jù)量+垃圾回收的數(shù)據(jù)量≥剩余tlc類(lèi)型的空閑空間容量。
8、作為優(yōu)選,根據(jù)待寫(xiě)入的數(shù)據(jù)的歷史訪問(wèn)次數(shù)得到待寫(xiě)入的數(shù)據(jù)的預(yù)測(cè)熱度,根據(jù)預(yù)測(cè)熱度選擇對(duì)應(yīng)熱度類(lèi)型的slc類(lèi)型的閃存塊,具體包括:
9、響應(yīng)于確定待寫(xiě)入的數(shù)據(jù)在當(dāng)前周期之前的兩個(gè)繁忙周期內(nèi)的歷史訪問(wèn)次數(shù)不為0,則待寫(xiě)入的數(shù)據(jù)的預(yù)測(cè)熱度為熱數(shù)據(jù),將待寫(xiě)入的數(shù)據(jù)以偽編程的方式編程到熱度類(lèi)型為熱數(shù)據(jù)的slc類(lèi)型的閃存塊;
10、響應(yīng)于確定待寫(xiě)入的數(shù)據(jù)在當(dāng)前周期之前的兩個(gè)繁忙周期內(nèi)的歷史訪問(wèn)次數(shù)為0,則待寫(xiě)入的數(shù)據(jù)的預(yù)測(cè)熱度為冷數(shù)據(jù),將待寫(xiě)入的數(shù)據(jù)以偽編程的方式編程到熱度類(lèi)型為冷數(shù)據(jù)的slc類(lèi)型的閃存塊。
11、作為優(yōu)選,有效閃存頁(yè)中存儲(chǔ)的數(shù)據(jù)為寫(xiě)入slc類(lèi)型的閃存塊后未被更新過(guò)的數(shù)據(jù);無(wú)效閃存頁(yè)中存儲(chǔ)的數(shù)據(jù)為寫(xiě)入slc類(lèi)型的閃存塊后已經(jīng)被更新過(guò)的數(shù)據(jù),無(wú)效閃存塊可被擦除成為空閑狀態(tài)的閃存塊。
12、作為優(yōu)選,slc類(lèi)型的閃存單元將電壓范圍劃分為兩個(gè)不同的電壓窗口,用于表示1比特的數(shù)據(jù);tlc類(lèi)型的閃存單元將電壓范圍劃分為八個(gè)不同的電壓窗口,用于表示3比特的數(shù)據(jù);tlc類(lèi)型的閃存單元中的八個(gè)不同的電壓窗口的前兩個(gè)電壓窗口與slc類(lèi)型的閃存單元中的兩個(gè)電壓窗口相同,重編程的方式是通過(guò)增加電壓到八個(gè)電壓窗口的范圍,使編程到slc類(lèi)型的閃存單元中的數(shù)據(jù)重編程到tlc類(lèi)型的閃存單元中。
13、作為優(yōu)選,重編程目標(biāo)的選擇過(guò)程如下:
14、響應(yīng)于確定更新后的熱度管理鏈表中存在有效閃存塊,則將有效閃存塊作為重編程目標(biāo);
15、響應(yīng)于確定更新后的熱度管理鏈表中不存在有效閃存塊且存在部分有效閃存塊,則將包含最多有效閃存頁(yè)的部分有效閃存塊作為重編程目標(biāo);
16、響應(yīng)于確定更新后的熱度管理鏈表中不存在有效閃存塊和部分有效閃存塊,則將無(wú)效閃存塊作為重編程目標(biāo)。
17、作為優(yōu)選,垃圾回收的過(guò)程為選擇一個(gè)閃存塊并遷移閃存塊中的有效閃存頁(yè)的數(shù)據(jù),再擦除閃存塊中的數(shù)據(jù);多個(gè)閃存單元構(gòu)成1個(gè)閃存頁(yè),多個(gè)閃存頁(yè)構(gòu)成1個(gè)閃存塊,數(shù)據(jù)的讀和寫(xiě)操作以閃存頁(yè)為粒度執(zhí)行,擦除操作以閃存塊為粒度執(zhí)行。
18、第二方面,本發(fā)明提供了一種基于零預(yù)留空間固態(tài)硬盤(pán)的數(shù)據(jù)管理裝置,包括:
19、鏈表構(gòu)建模塊,被配置為構(gòu)建基于slc類(lèi)型閃存塊的熱度管理鏈表,熱度管理鏈表包括有效閃存塊鏈表、部分有效閃存塊鏈表和無(wú)效閃存塊鏈表,有效閃存塊鏈表所記錄的slc類(lèi)型的閃存塊為有效閃存塊,有效閃存塊中的所有閃存頁(yè)全部為有效閃存頁(yè),部分有效閃存塊鏈表所記錄的slc類(lèi)型的閃存塊為部分有效閃存塊,部分有效閃存塊中的閃存頁(yè)包括有效閃存塊和無(wú)效閃存頁(yè),無(wú)效閃存塊鏈表所記錄的slc類(lèi)型的閃存塊為無(wú)效閃存塊,無(wú)效閃存塊中的閃存頁(yè)全部為無(wú)效閃存頁(yè);
20、偽編程模塊,被配置為獲取當(dāng)前周期的待寫(xiě)入的數(shù)據(jù)、垃圾回收的數(shù)據(jù)量和剩余tlc類(lèi)型的空閑空間容量,根據(jù)待寫(xiě)入的數(shù)據(jù)的歷史訪問(wèn)次數(shù)得到待寫(xiě)入的數(shù)據(jù)的預(yù)測(cè)熱度,根據(jù)預(yù)測(cè)熱度選擇對(duì)應(yīng)熱度類(lèi)型的slc類(lèi)型的閃存塊,并以偽編程的方式將待寫(xiě)入的數(shù)據(jù)編程到對(duì)應(yīng)熱度類(lèi)型的slc類(lèi)型的閃存塊,并對(duì)熱度管理鏈表進(jìn)行更新,得到更新后的熱度管理鏈表;
21、選擇模塊,被配置為根據(jù)slc類(lèi)型的閃存單元中的所有的有效閃存頁(yè)的數(shù)據(jù)計(jì)算slc遷移的數(shù)據(jù)量,響應(yīng)于確定slc遷移的數(shù)據(jù)量、垃圾回收的數(shù)據(jù)量和剩余tlc類(lèi)型的空閑空間容量滿足閾值判斷條件,則在更新后的熱度管理鏈表中選擇最佳的slc閃存塊作為重編程目標(biāo),將重編程目標(biāo)中的數(shù)據(jù)以重編程的方式編程到tlc類(lèi)型的閃存單元中,將重編程目標(biāo)重編程得到的作為額外空間的slc類(lèi)型的閃存單元作為預(yù)留空間;響應(yīng)于確定slc遷移的數(shù)據(jù)量、垃圾回收的數(shù)據(jù)量和剩余tlc類(lèi)型的空閑空間容量不滿足閾值判斷條件,則將tlc類(lèi)型的閃存單元作為預(yù)留空間;預(yù)留空間用于接收垃圾回收產(chǎn)生的數(shù)據(jù)以及slc類(lèi)型閃存中的全部有效閃存頁(yè)的數(shù)據(jù)或者除重編程目標(biāo)以外的其余slc類(lèi)型的閃存單元中的有效閃存頁(yè)的數(shù)據(jù)。
22、第三方面,本發(fā)明提供了一種電子設(shè)備,包括一個(gè)或多個(gè)處理器;存儲(chǔ)裝置,用于存儲(chǔ)一個(gè)或多個(gè)程序,當(dāng)一個(gè)或多個(gè)程序被一個(gè)或多個(gè)處理器執(zhí)行,使得一個(gè)或多個(gè)處理器實(shí)現(xiàn)如第一方面中任一實(shí)現(xiàn)方式描述的方法。
23、第四方面,本發(fā)明提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,該計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如第一方面中任一實(shí)現(xiàn)方式描述的方法。
24、第五方面,本發(fā)明提供了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如第一方面中任一實(shí)現(xiàn)方式描述的方法。
25、相比于現(xiàn)有技術(shù),本發(fā)明具有以下有益效果:
26、(1)本發(fā)明提出的基于零預(yù)留空間固態(tài)硬盤(pán)的數(shù)據(jù)管理方法對(duì)slc類(lèi)型的閃存塊的所有閃存單元采取偽編程-重編程策略,在確保閃存單元可靠性的同時(shí),保證主機(jī)請(qǐng)求的響應(yīng)速度,并通過(guò)slc類(lèi)型的閃存單元的數(shù)據(jù)重編程到tlc類(lèi)型的閃存單元中,從產(chǎn)生更多額外的空間作為預(yù)留空間。
27、(2)本發(fā)明提出的基于零預(yù)留空間固態(tài)硬盤(pán)的數(shù)據(jù)管理方法通過(guò)熱度管理鏈表實(shí)現(xiàn)對(duì)slc類(lèi)型的閃存單元的冷熱數(shù)據(jù)分離操作,便于后續(xù)在重編程目標(biāo)的選擇過(guò)程中,能夠選擇含有最多有效閃存頁(yè)的slc類(lèi)型的閃存單元的數(shù)據(jù)作為重編程目標(biāo),而其余的slc類(lèi)型的閃存單元的數(shù)據(jù)則執(zhí)行垃圾回收操作。
28、(3)本發(fā)明提出的基于零預(yù)留空間固態(tài)硬盤(pán)的數(shù)據(jù)管理方法能夠根據(jù)閾值判斷條件選擇在slc遷移的數(shù)據(jù)量與垃圾回收的數(shù)據(jù)量之和大于或等于剩余tlc類(lèi)型的空閑空間容量時(shí)進(jìn)行重編程操作,次數(shù)由于缺乏足夠的空閑狀態(tài)的tlc類(lèi)型空間,因此將部分slc類(lèi)型的閃存單元的數(shù)據(jù)進(jìn)行重編程,以產(chǎn)生額外的空間作為預(yù)留空間,能夠在不減少存儲(chǔ)空間的基礎(chǔ)上保留較大的預(yù)留空間,提供穩(wěn)定高速的讀寫(xiě)性能。