【技術(shù)領(lǐng)域】
本發(fā)明涉及存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及基于閃存的數(shù)據(jù)存儲(chǔ)方法、裝置以及閃存芯片。
背景技術(shù):
非易失性存儲(chǔ)器,諸如固態(tài)硬盤(solidstatedrives,ssd),由于其非易失存儲(chǔ)特性和高速讀寫性能,近年來(lái)被廣泛應(yīng)用。
ssd在數(shù)據(jù)存儲(chǔ)過(guò)程中,其映射算法通常根據(jù)物理塊的使用次數(shù)來(lái)存儲(chǔ)數(shù)據(jù),將數(shù)據(jù)平均地存儲(chǔ)至各個(gè)物理塊中,以保證每個(gè)物理塊的使用次數(shù)和頻率是接近的。
發(fā)明人在實(shí)現(xiàn)本發(fā)明的過(guò)程中,發(fā)現(xiàn)相關(guān)技術(shù)存在以下問(wèn)題:根據(jù)上述方法進(jìn)行數(shù)據(jù)存儲(chǔ)的過(guò)程中,沒(méi)有考慮數(shù)據(jù)的重要程度,導(dǎo)致一些重要的數(shù)據(jù)存儲(chǔ)在健康狀態(tài)較差的物理塊中,從而導(dǎo)致重要數(shù)據(jù)容易出現(xiàn)丟失或者破壞。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問(wèn)題是提供基于閃存的數(shù)據(jù)存儲(chǔ)方法、裝置以及閃存芯片,解決重要數(shù)據(jù)容易出現(xiàn)丟失或者破壞的問(wèn)題。
本發(fā)明實(shí)施例的一個(gè)方面,提供一種基于閃存的數(shù)據(jù)存儲(chǔ)方法,所述閃存包含多個(gè)物理塊,所述方法包括:獲取各空閑的所述物理塊的健康狀態(tài);確定待存儲(chǔ)數(shù)據(jù)的重要等級(jí);根據(jù)所述待存儲(chǔ)數(shù)據(jù)的重要等級(jí),以及所述物理塊的健康狀態(tài),將所述待存儲(chǔ)數(shù)據(jù)存儲(chǔ)至對(duì)應(yīng)的物理塊中。
可選地,所述物理塊的健康狀態(tài)具體是根據(jù)所述物理塊最近一次被訪問(wèn)時(shí)的r/b信號(hào)等待時(shí)長(zhǎng)來(lái)確定的。
可選地,所述物理塊最近一次被訪問(wèn)包括:讀操作或者寫操作。
可選地,所述確定待存儲(chǔ)數(shù)據(jù)的重要等級(jí)包括:根據(jù)所述待存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)類型確定所述待存儲(chǔ)數(shù)據(jù)的重要等級(jí);或者,根據(jù)所述待存儲(chǔ)數(shù)據(jù)的用戶標(biāo)識(shí)確定所述待存儲(chǔ)數(shù)據(jù)的重要等級(jí)。
可選地,所述確定各空閑的所述物理塊的健康狀態(tài)之前,所述方法還包括:接收待存儲(chǔ)數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)請(qǐng)求,所述數(shù)據(jù)存儲(chǔ)請(qǐng)求包含至少一個(gè)邏輯號(hào);根據(jù)所述數(shù)據(jù)存儲(chǔ)請(qǐng)求,搜尋空閑的物理塊;
所述根據(jù)所述待存儲(chǔ)數(shù)據(jù)的重要等級(jí),以及所述物理塊的健康狀態(tài),將所述待存儲(chǔ)數(shù)據(jù)存儲(chǔ)至對(duì)應(yīng)的物理塊中之后,所述方法還包括:
將所述待存儲(chǔ)數(shù)據(jù)所存儲(chǔ)的物理塊,以及所述待存儲(chǔ)數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)請(qǐng)求所包含的邏輯號(hào),建立映射。
本發(fā)明實(shí)施例的另一方面,提供一種基于閃存的數(shù)據(jù)存儲(chǔ)裝置,所述閃存包含多個(gè)物理塊,所述裝置包括:獲取模塊,用于獲取各空閑的所述物理塊的健康狀態(tài);確定模塊,用于確定待存儲(chǔ)數(shù)據(jù)的重要等級(jí);存儲(chǔ)模塊,用于根據(jù)所述待存儲(chǔ)數(shù)據(jù)的重要等級(jí),以及所述物理塊的健康狀態(tài),將所述待存儲(chǔ)數(shù)據(jù)存儲(chǔ)至對(duì)應(yīng)的物理塊中。
可選地,所述物理塊的健康狀態(tài)具體是根據(jù)所述物理塊最近一次被訪問(wèn)時(shí)的r/b信號(hào)等待時(shí)長(zhǎng)來(lái)確定的。
可選地,所述物理塊最近一次被訪問(wèn)包括:讀操作或者寫操作。
可選地,所述確定模塊具體用于:根據(jù)所述待存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)類型確定所述待存儲(chǔ)數(shù)據(jù)的重要等級(jí);或者,根據(jù)所述待存儲(chǔ)數(shù)據(jù)的用戶標(biāo)識(shí)確定所述待存儲(chǔ)數(shù)據(jù)的重要等級(jí)。
可選地,所述裝置還包括:接收模塊,用于接收待存儲(chǔ)數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)請(qǐng)求,所述數(shù)據(jù)存儲(chǔ)請(qǐng)求包含至少一個(gè)邏輯號(hào);搜尋模塊,用于根據(jù)所述數(shù)據(jù)存儲(chǔ)請(qǐng)求,搜尋空閑的物理塊;建立模塊,用于將所述待存儲(chǔ)數(shù)據(jù)所存儲(chǔ)的物理塊,以及所述待存儲(chǔ)數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)請(qǐng)求所包含的邏輯號(hào),建立映射。
本發(fā)明實(shí)施例的又一方面,提供一種閃存芯片,所述閃存芯片包括:控制器;以及與所述控制器通信連接的存儲(chǔ)器;其中,所述存儲(chǔ)器存儲(chǔ)有可被所述控制器執(zhí)行的指令,所述指令被所述控制器執(zhí)行,以使所述控制器能夠執(zhí)行如上所述的方法。
在本發(fā)明實(shí)施例中,通過(guò)獲取空閑物理塊的健康狀態(tài)和待存儲(chǔ)數(shù)據(jù)的重要等級(jí),然后根據(jù)待存儲(chǔ)數(shù)據(jù)的重要等級(jí),以及物理塊的健康狀態(tài)來(lái)存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)。該實(shí)施方式能夠?qū)⒅匾臄?shù)據(jù)存儲(chǔ)至健康狀態(tài)好的物理塊中,提升了重要數(shù)據(jù)存儲(chǔ)時(shí)的安全性。
【附圖說(shuō)明】
一個(gè)或多個(gè)實(shí)施例通過(guò)與之對(duì)應(yīng)的附圖中的圖片進(jìn)行示例性說(shuō)明,這些示例性說(shuō)明并不構(gòu)成對(duì)實(shí)施例的限定,附圖中具有相同參考數(shù)字標(biāo)號(hào)的元件表示為類似的元件,除非有特別申明,附圖中的圖不構(gòu)成比例限制。
圖1是本發(fā)明本發(fā)明實(shí)施例提供的一種閃存設(shè)備的內(nèi)部結(jié)構(gòu)示意圖;
圖2是本發(fā)明實(shí)施例提供的一種基于閃存的數(shù)據(jù)存儲(chǔ)方法的流程示意圖;
圖3是本發(fā)明實(shí)施例提供的一種基于閃存的數(shù)據(jù)存儲(chǔ)方法中確定物理塊的健康狀態(tài)的方法的流程示意圖;
圖4是本發(fā)明實(shí)施例提供的一種基于閃存的數(shù)據(jù)存儲(chǔ)方法中一種fat文件系統(tǒng)的邏輯示意圖;
圖5是本發(fā)明另一實(shí)施例提供的一種基于閃存的數(shù)據(jù)存儲(chǔ)方法的流程示意圖;
圖6是本發(fā)明實(shí)施例提供的一種基于閃存的數(shù)據(jù)存儲(chǔ)裝置的結(jié)構(gòu)示意圖;
圖7是本發(fā)明另一實(shí)施例提供的一種基于閃存的數(shù)據(jù)存儲(chǔ)裝置的結(jié)構(gòu)示意圖;
圖8是本發(fā)明實(shí)施例提供的一種閃存芯片的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
目前,閃存設(shè)備主要由閃存介質(zhì)和閃存控制器兩部分構(gòu)成,如圖1所示,圖1是本發(fā)明實(shí)施例提供的一種閃存設(shè)備的內(nèi)部結(jié)構(gòu)示意圖。
閃存操作以頁(yè)(page)為讀寫單元,以物理塊(block)為擦除單元,設(shè)備內(nèi)部的介質(zhì)訪問(wèn)提供了通道、顆粒封裝、顆粒閃存片等多個(gè)級(jí)別的并行。設(shè)備內(nèi)部以多通道方式組織閃存顆粒封裝,每個(gè)通道上可連接多個(gè)顆粒封裝,多顆粒封裝之間共享傳輸通道,但可獨(dú)立執(zhí)行指令。每個(gè)顆粒封裝內(nèi)部包含兩個(gè)或多個(gè)顆粒,每個(gè)顆??杀华?dú)立選中執(zhí)行指令。顆粒內(nèi)部可分為多個(gè)片,每個(gè)片含有一個(gè)頁(yè)大小的寄存器緩存,用于暫存讀寫數(shù)據(jù)。
閃存控制器主要負(fù)責(zé)地址映射、垃圾回收和磨損均衡。閃存通過(guò)異地更新的方式緩解閃存單元寫前擦除的延遲,由于閃存單元的擦除次數(shù)有限,閃存控制器通過(guò)磨損均衡算法來(lái)平衡設(shè)備內(nèi)部物理塊之間的擦除次數(shù),同時(shí)垃圾回收算法盡量選擇擦除效率高的物理塊回收以控制寫放大。
可以理解的是,上述閃存設(shè)備的閃存控制器能夠?qū)?shù)據(jù)平均地存儲(chǔ)到各個(gè)不同的物理塊中,從整體上提高了閃存設(shè)備的健康狀態(tài)。然而,在數(shù)據(jù)存儲(chǔ)過(guò)程中,沒(méi)有考慮數(shù)據(jù)的重要性,導(dǎo)致一些重要的數(shù)據(jù)(比如文件系統(tǒng)數(shù)據(jù))被分配到健康狀態(tài)差的物理塊中,致使重要數(shù)據(jù)丟失。由于一些數(shù)據(jù)本身的價(jià)值遠(yuǎn)遠(yuǎn)比閃存設(shè)備本身的成本更高,因此,提高對(duì)數(shù)據(jù)本身的保護(hù)會(huì)更經(jīng)濟(jì)有效。
基于此,請(qǐng)參閱圖2,圖2是本發(fā)明實(shí)施例提供的一種基于閃存的數(shù)據(jù)存儲(chǔ)方法的流程示意圖。該閃存可具體是u盤(usb存盤,usbflashdisk)和ssd等設(shè)備,閃存可具體由閃存控制器和閃存介質(zhì)組成,閃存控制器的功能可具體由控制芯片實(shí)現(xiàn),閃存介質(zhì)的功能可具體由存儲(chǔ)芯片實(shí)現(xiàn),存儲(chǔ)芯片為flash芯片,flash類型的芯片可具體為nandflash芯片等。如圖2所述,該方法包括:
s101、獲取各空閑的所述物理塊的健康狀態(tài)。
該物理塊即閃存介質(zhì)上的存儲(chǔ)數(shù)據(jù)的物理區(qū)域,物理塊是數(shù)據(jù)在磁盤上的存儲(chǔ)單位,是上層軟件中操作文件時(shí)使用的最小操作單元。物理塊由扇區(qū)組成,從硬件設(shè)備上讀取一個(gè)物理塊,實(shí)際是從硬件設(shè)備讀取一個(gè)或多個(gè)扇區(qū)。物理塊對(duì)應(yīng)邏輯塊,邏輯塊與文件相對(duì)應(yīng)。在本實(shí)施例中,預(yù)先確定每一物理塊的健康狀態(tài),當(dāng)有數(shù)據(jù)存儲(chǔ)請(qǐng)求時(shí),獲取空閑物理塊的健康狀態(tài)。
物理塊的健康狀態(tài)一定程度上能夠反映執(zhí)行本方法的閃存設(shè)備的使用壽命的長(zhǎng)短,以及閃存設(shè)備讀數(shù)據(jù)/寫數(shù)據(jù)時(shí)的工作性能。
其中,如圖3所示,確定物理塊的健康狀態(tài)的具體過(guò)程包括:
s11、獲取所述物理塊的歷史訪問(wèn)次數(shù);
s12、當(dāng)所述歷史訪問(wèn)次數(shù)為大于或者等于預(yù)設(shè)次數(shù)時(shí),獲取所述物理塊最近一次被訪問(wèn)時(shí)的r/b信號(hào)等待時(shí)長(zhǎng);
s13、根據(jù)所述r/b信號(hào)等待時(shí)長(zhǎng)確定所述物理塊的健康狀態(tài)。
在本實(shí)施例中,每個(gè)物理塊都有相應(yīng)的區(qū)域記錄歷史訪問(wèn)次數(shù)。當(dāng)歷史訪問(wèn)次數(shù)大于或者等于預(yù)設(shè)次數(shù)時(shí),檢查r/b信號(hào)等待時(shí)長(zhǎng),根據(jù)該時(shí)長(zhǎng)的長(zhǎng)短來(lái)判斷該物理塊的健康狀態(tài),當(dāng)該等待時(shí)長(zhǎng)比較長(zhǎng)時(shí),說(shuō)明物理塊的健康狀態(tài)比較差,當(dāng)該等待時(shí)長(zhǎng)比較短時(shí),說(shuō)明物理塊的健康狀態(tài)比較好。當(dāng)物理塊的歷史訪問(wèn)次數(shù)較少,則說(shuō)明該物理塊比較新,其r/b信號(hào)等待時(shí)長(zhǎng)之間的區(qū)別比較小,可以直接使用第一次訪問(wèn)該物理塊時(shí)的r/b信號(hào)等待時(shí)長(zhǎng),以減少計(jì)算步驟。
其中,該r/b信號(hào)即表示“就緒/忙”,r/b的輸出能夠顯示閃存芯片的狀態(tài),r/b處于低電平時(shí),表示有編程、擦除或隨機(jī)讀操作正在進(jìn)行,操作完成后,r/b會(huì)自動(dòng)返回高電平。通過(guò)r/b信號(hào)可以判斷編程、擦除或隨機(jī)讀操作是否完成,如果是“忙”,表示編程、擦除或隨機(jī)讀操作正在進(jìn)行中,如果是“就緒”,表示操作完成。
其中,檢查r/b信號(hào)等待時(shí)長(zhǎng),即檢查物理塊最近一次被訪問(wèn)時(shí)的r/b信號(hào)等待時(shí)長(zhǎng)。
其中,最近一次的r/b信號(hào)等待時(shí)長(zhǎng)包括:所述物理塊被寫入數(shù)據(jù)時(shí)的最近一次的r/b信號(hào)等待時(shí)長(zhǎng);或者,所述物理塊被讀取數(shù)據(jù)時(shí)的最近一次的r/b信號(hào)等待時(shí)長(zhǎng)。也即是說(shuō),當(dāng)該物理塊最近一次的操作是讀取數(shù)據(jù),則檢查讀取數(shù)據(jù)過(guò)程中的r/b信號(hào)等待時(shí)長(zhǎng),當(dāng)該物理塊最近一次的操作是寫入數(shù)據(jù),則檢查寫入數(shù)據(jù)過(guò)程中的r/b信號(hào)等待時(shí)長(zhǎng)。
其中,根據(jù)r/b信號(hào)等待時(shí)長(zhǎng)確定物理塊的健康狀態(tài),由于r/b信號(hào)等待時(shí)長(zhǎng)越長(zhǎng),表示操作時(shí)間更長(zhǎng),隨著閃存芯片寫操作次數(shù)的增加,r/b信號(hào)等待時(shí)長(zhǎng)就會(huì)增加,因此,物理塊的健康狀態(tài)就會(huì)變差。相反地,r/b信號(hào)等待時(shí)長(zhǎng)越短,物理塊的健康狀態(tài)就會(huì)越好。
在本實(shí)施例中,可以結(jié)合一些數(shù)據(jù)(比如總?cè)萘?、文件系統(tǒng)所占用的存儲(chǔ)空間、系統(tǒng)開銷占用的存儲(chǔ)空間以及用戶習(xí)慣等),根據(jù)獲取的r/b信號(hào)等待時(shí)長(zhǎng),確定物理塊的具體健康狀態(tài),并記錄該r/b信號(hào)等待時(shí)長(zhǎng)與物理塊的具體健康狀態(tài)的對(duì)應(yīng)關(guān)系。例如,r/b信號(hào)等待時(shí)長(zhǎng)為10個(gè)cpu時(shí)鐘周期,其對(duì)應(yīng)的物理塊的健康狀態(tài)為第一級(jí)別,r/b信號(hào)等待時(shí)長(zhǎng)為7個(gè)cpu時(shí)鐘周期,其對(duì)應(yīng)的物理塊的健康狀態(tài)為第二級(jí)別,r/b信號(hào)等待時(shí)長(zhǎng)為4個(gè)cpu時(shí)鐘周期,其對(duì)應(yīng)的物理塊的健康狀態(tài)為第三級(jí)別,等。其中,第一級(jí)別表示物理塊的r/b信號(hào)等待時(shí)長(zhǎng)大于物理塊的初始r/b信號(hào)等待時(shí)長(zhǎng)并且多余的時(shí)長(zhǎng)在第一預(yù)設(shè)范圍內(nèi),第二級(jí)別表示物理塊的r/b信號(hào)等待時(shí)長(zhǎng)大于物理塊的初始r/b信號(hào)等待時(shí)長(zhǎng)并且多余的時(shí)長(zhǎng)在第二預(yù)設(shè)范圍內(nèi),第三級(jí)別表示物理塊的r/b信號(hào)等待時(shí)長(zhǎng)大于物理塊的初始r/b信號(hào)等待時(shí)長(zhǎng)并且多余的時(shí)長(zhǎng)在第三預(yù)設(shè)范圍內(nèi)。其中,第一預(yù)設(shè)范圍的時(shí)長(zhǎng)大于第二預(yù)設(shè)范圍的時(shí)長(zhǎng),第二預(yù)設(shè)范圍的時(shí)長(zhǎng)大于第三預(yù)設(shè)范圍的時(shí)長(zhǎng)。
需要說(shuō)明的是,由于是獲取所述物理塊最近一次被訪問(wèn)時(shí)的r/b信號(hào)等待時(shí)長(zhǎng),并用最近一次的r/b信號(hào)等待時(shí)長(zhǎng)來(lái)判斷物理塊的健康狀態(tài),因此,該物理塊的健康狀態(tài)的確定結(jié)果是一個(gè)動(dòng)態(tài)更新的過(guò)程,根據(jù)物理塊的使用次數(shù)以及最近一次的r/b信號(hào)等待時(shí)長(zhǎng),動(dòng)態(tài)的更新其健康狀態(tài)。
s102、確定待存儲(chǔ)數(shù)據(jù)的重要等級(jí)。
在本實(shí)施例中,執(zhí)行本方法的閃存設(shè)備可以主動(dòng)的識(shí)別待存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)類型,從而根據(jù)數(shù)據(jù)類型確定該待存儲(chǔ)數(shù)據(jù)的重要等級(jí)。比如,該待存儲(chǔ)數(shù)據(jù)屬于文件系統(tǒng)的元數(shù)據(jù)時(shí),默認(rèn)該待存儲(chǔ)數(shù)據(jù)是重要數(shù)據(jù)。其中,文件系統(tǒng)是操作系統(tǒng)用于明確存儲(chǔ)設(shè)備(常見的是磁盤,也有基于nandflash的固態(tài)硬盤)或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu),即在存儲(chǔ)設(shè)備上組織文件的方法。例如,nand閃存的存儲(chǔ)文件系統(tǒng),按其結(jié)構(gòu)主要分為基于塊設(shè)備的常規(guī)文件系統(tǒng)和日志結(jié)構(gòu)的文件系統(tǒng),基于塊設(shè)備的文件系統(tǒng)是磁盤存儲(chǔ)器最常用的文件系統(tǒng),比如fat文件系統(tǒng)和ext2文件系統(tǒng);日志結(jié)構(gòu)的文件系統(tǒng)包括jffs2、yaffs、cffs等。
在本實(shí)施例中,執(zhí)行本方法的閃存設(shè)備還可以根據(jù)待存儲(chǔ)數(shù)據(jù)的用戶標(biāo)識(shí)來(lái)確定待存儲(chǔ)數(shù)據(jù)的重要等級(jí)。在這里,只有當(dāng)用戶對(duì)待存儲(chǔ)數(shù)據(jù)的重要等級(jí)進(jìn)行自定義標(biāo)注后,在進(jìn)行數(shù)據(jù)存儲(chǔ)時(shí),閃存設(shè)備才能夠根據(jù)用戶標(biāo)注的標(biāo)識(shí)判斷數(shù)據(jù)的重要程度,該過(guò)程是一個(gè)被動(dòng)的確定待存儲(chǔ)數(shù)據(jù)重要等級(jí)的過(guò)程。
需要說(shuō)明的是,除了上述兩種方法確定待存儲(chǔ)數(shù)據(jù)的等級(jí)之外,還可以通過(guò)其他方法來(lái)確定待存儲(chǔ)數(shù)據(jù)的重要等級(jí)。
s103、根據(jù)所述待存儲(chǔ)數(shù)據(jù)的重要等級(jí),以及所述物理塊的健康狀態(tài),將所述待存儲(chǔ)數(shù)據(jù)存儲(chǔ)至對(duì)應(yīng)的物理塊中。
在本實(shí)施例中,確定待存儲(chǔ)數(shù)據(jù)的重要等級(jí),以及空閑物理塊的健康狀態(tài)之后,將最重要的待存儲(chǔ)數(shù)據(jù)寫入健康狀態(tài)最好的空閑物理塊中,將次重要的待存儲(chǔ)數(shù)據(jù)寫入健康狀態(tài)較好的空閑物理塊中。待存儲(chǔ)數(shù)據(jù)的重要等級(jí)與物理塊的健康狀態(tài)之間的對(duì)應(yīng)關(guān)系,可以預(yù)先設(shè)定好,例如,一級(jí)重要的待存儲(chǔ)數(shù)據(jù)對(duì)應(yīng)健康狀態(tài)最好的物理塊,二級(jí)重要的待存儲(chǔ)數(shù)據(jù)對(duì)應(yīng)健康狀態(tài)較好的物理塊,三級(jí)重要的待存儲(chǔ)數(shù)據(jù)對(duì)應(yīng)健康狀態(tài)一般的物理塊,四級(jí)重要的待存儲(chǔ)數(shù)據(jù)對(duì)應(yīng)健康狀態(tài)較差的物理塊,其中,一級(jí)重要、二級(jí)重要、三級(jí)重要以及四級(jí)重要是按照數(shù)據(jù)的重要程度從高到低排序的。在確定待存儲(chǔ)數(shù)據(jù)的重要等級(jí)后,根據(jù)其重要等級(jí)自動(dòng)的查找其對(duì)應(yīng)的物理塊。
下面以常用的文件系統(tǒng)fat來(lái)舉例,如圖4所示,其中,超級(jí)塊、塊描述、位表、結(jié)點(diǎn)表等數(shù)據(jù)為元數(shù)據(jù),數(shù)據(jù)塊是用于存儲(chǔ)真實(shí)的數(shù)據(jù)。由于元數(shù)據(jù)的訪問(wèn)效率對(duì)于整個(gè)文件系統(tǒng)的性能有重要的影響,并且它的損壞會(huì)導(dǎo)致數(shù)據(jù)訪問(wèn)失敗,因此,元數(shù)據(jù)是重要數(shù)據(jù),相應(yīng)地,將元數(shù)據(jù)存儲(chǔ)至健康狀態(tài)好的物理塊中。進(jìn)一步地,經(jīng)過(guò)預(yù)定時(shí)間后,當(dāng)檢測(cè)到該元數(shù)據(jù)所存儲(chǔ)的物理塊的健康狀態(tài)變差了時(shí),可以調(diào)整該元數(shù)據(jù)所存儲(chǔ)的物理塊,將元數(shù)據(jù)匹配到其他健康狀態(tài)好的物理塊中。
本發(fā)明實(shí)施例提供了一種基于閃存的數(shù)據(jù)存儲(chǔ)方法,該方法通過(guò)獲取空閑物理塊的健康狀態(tài)和待存儲(chǔ)數(shù)據(jù)的重要等級(jí),然后根據(jù)待存儲(chǔ)數(shù)據(jù)的重要等級(jí),以及物理塊的健康狀態(tài)來(lái)存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)。該實(shí)施方式能夠?qū)⒅匾臄?shù)據(jù)存儲(chǔ)至健康狀態(tài)好的物理塊中,提升了重要數(shù)據(jù)存儲(chǔ)時(shí)的安全性。
請(qǐng)參閱圖5,圖5是本發(fā)明另一實(shí)施例提供的一種基于閃存的數(shù)據(jù)存儲(chǔ)方法的流程示意圖。如圖5所示,該方法包括:
s201、接收待存儲(chǔ)數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)請(qǐng)求,所述數(shù)據(jù)存儲(chǔ)請(qǐng)求包含至少一個(gè)邏輯號(hào);
s202、根據(jù)所述數(shù)據(jù)存儲(chǔ)請(qǐng)求,搜尋空閑的物理塊;
s203、獲取各空閑的所述物理塊的健康狀態(tài);
s204、確定待存儲(chǔ)數(shù)據(jù)的重要等級(jí);
s205、根據(jù)所述待存儲(chǔ)數(shù)據(jù)的重要等級(jí),以及所述物理塊的健康狀態(tài),將所述待存儲(chǔ)數(shù)據(jù)存儲(chǔ)至對(duì)應(yīng)的物理塊中;
s206、將所述待存儲(chǔ)數(shù)據(jù)所存儲(chǔ)的物理塊,以及所述待存儲(chǔ)數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)請(qǐng)求所包含的邏輯號(hào),建立映射。
本實(shí)施例與上述實(shí)施例的主要區(qū)別在于,在根據(jù)待存儲(chǔ)數(shù)據(jù)的重要等級(jí),以及物理塊的健康狀態(tài)完成數(shù)據(jù)存儲(chǔ)之后,還根據(jù)該存儲(chǔ)結(jié)果,建立物理塊與待存儲(chǔ)數(shù)據(jù)的邏輯號(hào)之間的映射。該映射可以用于,當(dāng)有讀數(shù)據(jù)請(qǐng)求時(shí),可以根據(jù)讀數(shù)據(jù)請(qǐng)求攜帶的邏輯號(hào),并結(jié)合物理塊與邏輯號(hào)之間的映射關(guān)系,找到該邏輯號(hào)所對(duì)應(yīng)的物理塊,然后讀取該物理塊中的數(shù)據(jù)。
需要說(shuō)明的是,在上述讀取數(shù)據(jù)過(guò)程中,也可以根據(jù)讀數(shù)據(jù)過(guò)程中的r/b信號(hào)等待時(shí)長(zhǎng)來(lái)更新物理塊的健康狀態(tài),當(dāng)物理塊健康狀態(tài)更新,并且數(shù)據(jù)存儲(chǔ)的位置變化了,相應(yīng)地,對(duì)所述映射表進(jìn)行更新。
其中,所述邏輯號(hào)即邏輯塊對(duì)應(yīng)的編號(hào)。具體文件系統(tǒng)管理的是一個(gè)邏輯空間,該邏輯空間即類似于一個(gè)大的數(shù)組,數(shù)組中每個(gè)元素就是文件系統(tǒng)操作的基本單位,也即是邏輯塊,一般邏輯塊從0開始編號(hào),而且,邏輯塊是連續(xù)的,與邏輯塊對(duì)應(yīng)的即物理塊。
本發(fā)明實(shí)施例提供了一種基于閃存的數(shù)據(jù)存儲(chǔ)方法,該方法通過(guò)獲取空閑物理塊的健康狀態(tài)和待存儲(chǔ)數(shù)據(jù)的重要等級(jí),然后根據(jù)待存儲(chǔ)數(shù)據(jù)的重要等級(jí),以及物理塊的健康狀態(tài)來(lái)存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù),并且根據(jù)存儲(chǔ)結(jié)果建立相應(yīng)的映射。一方面,該實(shí)施方式能夠?qū)⒅匾臄?shù)據(jù)存儲(chǔ)至健康狀態(tài)好的物理塊中,提升了重要數(shù)據(jù)存儲(chǔ)時(shí)的安全性,另一方面,讀數(shù)據(jù)時(shí)是根據(jù)映射關(guān)系來(lái)獲取相應(yīng)的數(shù)據(jù),由于數(shù)據(jù)存儲(chǔ)結(jié)合了物理塊的健康狀態(tài),一定程度上使數(shù)據(jù)讀取的速度更快。
請(qǐng)參閱圖6,圖6是本發(fā)明實(shí)施例提供的一種基于閃存的數(shù)據(jù)存儲(chǔ)裝置的結(jié)構(gòu)示意圖。如圖6所示,該裝置30包括:獲取模塊33、確定模塊34以及存儲(chǔ)模塊35。
其中,獲取模塊33,用于獲取各空閑的所述物理塊的健康狀態(tài);確定模塊34,用于確定待存儲(chǔ)數(shù)據(jù)的重要等級(jí);存儲(chǔ)模塊35,用于根據(jù)所述待存儲(chǔ)數(shù)據(jù)的重要等級(jí),以及所述物理塊的健康狀態(tài),將所述待存儲(chǔ)數(shù)據(jù)存儲(chǔ)至對(duì)應(yīng)的物理塊中。
在本實(shí)施例中,獲取模塊33和確定模塊34分別連接存儲(chǔ)模塊,獲取模塊33將獲取的各空閑物理塊的健康狀態(tài)發(fā)送至存儲(chǔ)模塊35,確定模塊34將確定的待存儲(chǔ)數(shù)據(jù)的重要等級(jí)發(fā)送至存儲(chǔ)模塊35,存儲(chǔ)模塊35根據(jù)物理塊的健康狀態(tài)和待存儲(chǔ)數(shù)據(jù)的重要等級(jí)來(lái)存儲(chǔ)待存儲(chǔ)數(shù)據(jù)。
其中,所述物理塊的健康狀態(tài)具體是根據(jù)所述物理塊最近一次被訪問(wèn)時(shí)的r/b信號(hào)等待時(shí)長(zhǎng)來(lái)確定的。
其中,所述物理塊最近一次被訪問(wèn)包括:讀操作或者寫操作。
在一些實(shí)施例中,請(qǐng)參閱圖7,圖7與圖6的主要區(qū)別在于,所述裝置30還包括:接收模塊31、搜尋模塊32以及建立模塊36。
其中,接收模塊31,用于接收待存儲(chǔ)數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)請(qǐng)求,所述數(shù)據(jù)存儲(chǔ)請(qǐng)求包含至少一個(gè)邏輯號(hào);搜尋模塊32,用于根據(jù)所述數(shù)據(jù)存儲(chǔ)請(qǐng)求,搜尋空閑的物理塊;建立模塊36,用于將所述待存儲(chǔ)數(shù)據(jù)所存儲(chǔ)的物理塊,以及所述待存儲(chǔ)數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)請(qǐng)求所包含的邏輯號(hào),建立映射。
需要說(shuō)明的是,本發(fā)明實(shí)施例中的基于閃存的數(shù)據(jù)存儲(chǔ)裝置中的各個(gè)模塊之間的信息交互、執(zhí)行過(guò)程等內(nèi)容,由于與本發(fā)明方法實(shí)施例基于同一構(gòu)思,具體內(nèi)容同樣適用于基于閃存的數(shù)據(jù)存儲(chǔ)裝置。本發(fā)明實(shí)施例中的各個(gè)模塊能作為單獨(dú)的硬件或軟件來(lái)實(shí)現(xiàn),并且可以根據(jù)需要使用單獨(dú)的硬件或軟件來(lái)實(shí)現(xiàn)各個(gè)單元的功能的組合。
本發(fā)明實(shí)施例提供了一種基于閃存的數(shù)據(jù)存儲(chǔ)裝置,該裝置通過(guò)獲取空閑物理塊的健康狀態(tài)和待存儲(chǔ)數(shù)據(jù)的重要等級(jí),然后根據(jù)待存儲(chǔ)數(shù)據(jù)的重要等級(jí),以及物理塊的健康狀態(tài)來(lái)存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù),并且根據(jù)存儲(chǔ)結(jié)果建立相應(yīng)的映射表。一方面,該實(shí)施方式能夠?qū)⒅匾臄?shù)據(jù)存儲(chǔ)至健康狀態(tài)好的物理塊中,提升了重要數(shù)據(jù)存儲(chǔ)時(shí)的安全性,另一方面,讀數(shù)據(jù)時(shí)是根據(jù)映射表來(lái)獲取相應(yīng)的數(shù)據(jù),由于數(shù)據(jù)存儲(chǔ)結(jié)合了物理塊的健康狀態(tài),一定程度上使數(shù)據(jù)讀取的速度更快。
請(qǐng)參閱圖8,圖8是本發(fā)明實(shí)施例提供的一種閃存芯片的結(jié)構(gòu)示意圖。如圖8所示,該閃存芯片40包括:控制器41和存儲(chǔ)器42,控制器41和存儲(chǔ)器42之間電性連接。
存儲(chǔ)器42作為一種非易失性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),可用于存儲(chǔ)非易失性軟件程序、非易失性計(jì)算機(jī)可執(zhí)行程序以及模塊,如本發(fā)明實(shí)施例中的基于閃存的數(shù)據(jù)存儲(chǔ)方法對(duì)應(yīng)的程序指令/模塊(例如,附圖6所示的獲取模塊33、確定模塊34以及存儲(chǔ)模塊35)。控制器41通過(guò)運(yùn)行存儲(chǔ)在存儲(chǔ)器42中的非易失性軟件程序、指令以及模塊,從而執(zhí)行服務(wù)器的各種功能應(yīng)用以及數(shù)據(jù)處理,即實(shí)現(xiàn)上述方法實(shí)施例基于閃存的數(shù)據(jù)存儲(chǔ)方法。
存儲(chǔ)器42可以包括存儲(chǔ)程序區(qū)和存儲(chǔ)數(shù)據(jù)區(qū),其中,存儲(chǔ)程序區(qū)可存儲(chǔ)操作系統(tǒng)、至少一個(gè)功能所需要的應(yīng)用程序;存儲(chǔ)數(shù)據(jù)區(qū)可存儲(chǔ)根據(jù)基于閃存的數(shù)據(jù)存儲(chǔ)裝置的使用所創(chuàng)建的數(shù)據(jù)等。
所述一個(gè)或者多個(gè)模塊存儲(chǔ)在所述存儲(chǔ)器42中,當(dāng)被所述一個(gè)或者多個(gè)控制器41執(zhí)行時(shí),執(zhí)行上述任意方法實(shí)施例中基于閃存的數(shù)據(jù)存儲(chǔ)方法,例如,執(zhí)行以上描述的圖2中的方法步驟s101至步驟s103,圖3中的方法步驟s11至步驟s13,圖5中的方法步驟s201至步驟s206,圖6中的模塊33-35,圖7中的模塊31-36的功能。
上述產(chǎn)品可執(zhí)行本發(fā)明實(shí)施例所提供的方法,具備執(zhí)行方法相應(yīng)的功能模塊和有益效果。未在本實(shí)施例中詳盡描述的技術(shù)細(xì)節(jié),可參見本發(fā)明實(shí)施例所提供的方法。
本發(fā)明實(shí)施例提供了一種非易失性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述非易失性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令,該計(jì)算機(jī)可執(zhí)行指令被電子設(shè)備執(zhí)行上述任意方法實(shí)施例中基于閃存的數(shù)據(jù)存儲(chǔ)方法,例如,執(zhí)行以上描述的圖2中的方法步驟s101至步驟s103,圖3中的方法步驟s11至步驟s13,圖5中的方法步驟s201至步驟s206,圖6中的模塊33-35,圖7中的模塊31-36的功能。
本發(fā)明實(shí)施例提供了一種計(jì)算機(jī)程序產(chǎn)品,包括存儲(chǔ)在非易失性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的計(jì)算程序,所述計(jì)算機(jī)程序包括程序指令,當(dāng)所述程序指令被計(jì)算機(jī)執(zhí)行時(shí),使所述計(jì)算機(jī)執(zhí)行上述任意方法實(shí)施例中基于閃存的數(shù)據(jù)存儲(chǔ)方法,例如,執(zhí)行以上描述的圖2中的方法步驟s101至步驟s103,圖3中的方法步驟s11至步驟s13,圖5中的方法步驟s201至步驟s206,圖6中的模塊33-35,圖7中的模塊31-36的功能。
以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域普通技術(shù)人員可以清楚地了解到各實(shí)施方式可借助軟件加通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(read-onlymemory,rom)或隨機(jī)存儲(chǔ)記憶體(randomaccessmemory,ram)等。
最后應(yīng)說(shuō)明的是:以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;在本發(fā)明的思路下,以上實(shí)施例或者不同實(shí)施例中的技術(shù)特征之間也可以進(jìn)行組合,步驟可以以任意順序?qū)崿F(xiàn),并存在如上所述的本發(fā)明的不同方面的許多其它變化,為了簡(jiǎn)明,它們沒(méi)有在細(xì)節(jié)中提供;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。