本發(fā)明涉及數(shù)據(jù)存儲(chǔ)的領(lǐng)域,尤其涉及一種數(shù)據(jù)存儲(chǔ)的保護(hù)方法及裝置。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)的發(fā)展,固態(tài)硬盤作為新一代的存儲(chǔ)廣泛被應(yīng)用。在通過(guò)固態(tài)硬盤對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)時(shí),非常重要的一點(diǎn)是,保證數(shù)據(jù)的安全性,保證數(shù)據(jù)不被丟失。
現(xiàn)有技術(shù)中,通常采用raid(英文全稱:redundantarraysofindependentdisks,中文全稱:獨(dú)立磁盤構(gòu)成的具有冗余能力的陣列)方式保證磁盤數(shù)據(jù)的安全性。raid是一種把多塊獨(dú)立的硬盤按不同的方式組合起來(lái)形成一個(gè)硬盤組,從而提供比單個(gè)硬盤更高的存儲(chǔ)性能和提供數(shù)據(jù)備份技術(shù)。raid對(duì)磁盤陣列的操作與單個(gè)硬盤一模一樣。不同的是,磁盤陣列的存儲(chǔ)速度要比單個(gè)硬盤高很多,而且可以提供自動(dòng)數(shù)據(jù)備份。數(shù)據(jù)備份的功能是在用戶數(shù)據(jù)一旦發(fā)生損壞后,利用備份信息可以使損壞數(shù)據(jù)得以恢復(fù),從而保障了用戶數(shù)據(jù)的安全性。
但是,僅僅是通過(guò)raid方式也不能完全保證數(shù)據(jù)存儲(chǔ)的安全性,當(dāng)raid陣列中兩個(gè)單元上的數(shù)據(jù)出現(xiàn)損壞,raid條帶上的數(shù)據(jù)就失去了完整性并導(dǎo)致數(shù)據(jù)無(wú)法恢復(fù)。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明實(shí)施例公開了一種數(shù)據(jù)存儲(chǔ)的保護(hù)方法及裝置,通過(guò)對(duì)讀取失敗的比特?cái)?shù)的限定,可以數(shù)據(jù)損壞之前,將數(shù)據(jù)轉(zhuǎn)移到安全的位置,而且,通過(guò)閾值的限定,也可以表面過(guò)度頻繁的數(shù)據(jù)搬移,減小寫放大,從而提到了固態(tài)硬盤的存儲(chǔ)性能。
本發(fā)明實(shí)施例提供的一種數(shù)據(jù)存儲(chǔ)的保護(hù)方法,該方法包括:
讀取固態(tài)硬盤第一條帶中的數(shù)據(jù)時(shí),獲取讀取失敗的比特?cái)?shù);
判斷所述讀取失敗的比特?cái)?shù)是否達(dá)到了最大的出錯(cuò)閾值;
若所述讀取失敗的比特?cái)?shù)未達(dá)到最大的出錯(cuò)閾值,判斷讀取失敗的比特?cái)?shù)是否達(dá)到了預(yù)設(shè)的錯(cuò)誤閾值;
若所述讀取失敗的比特?cái)?shù)達(dá)到了預(yù)設(shè)的錯(cuò)誤閾值,將所述第一條帶中的數(shù)據(jù)搬移到預(yù)設(shè)的第二條帶中。
可選的,還包括:
從所述磁盤中獲取小于預(yù)設(shè)擦除閾值的條帶;
從小于預(yù)設(shè)擦除閾值的條帶中,隨機(jī)選取一個(gè)條帶作為第二條帶。
可選的,還包括:
若所述讀取失敗的比特?cái)?shù)未達(dá)到預(yù)設(shè)的錯(cuò)誤閾值,則不搬移所述第一條帶中的數(shù)據(jù)
本發(fā)明實(shí)施例提供的一種數(shù)據(jù)存儲(chǔ)的保護(hù)裝置,所述裝置包括:
第一獲取單元,用于讀取固態(tài)硬盤第一條帶中的數(shù)據(jù)時(shí),獲取讀取失敗的比特?cái)?shù);
第一判斷單元,用于判斷所述讀取失敗的比特?cái)?shù)是否達(dá)到了最大的出錯(cuò)閾值;
第二判斷單元,用于若所述讀取失敗的比特?cái)?shù)未達(dá)到最大的出錯(cuò)閾值,判斷讀取失敗的比特?cái)?shù)是否達(dá)到了預(yù)設(shè)的錯(cuò)誤閾值;
數(shù)據(jù)搬移單元,用于若所述讀取失敗的比特?cái)?shù)達(dá)到了預(yù)設(shè)的錯(cuò)誤閾值,將所述第一條帶中的數(shù)據(jù)搬移到預(yù)設(shè)的第二條帶中。
可選的,還包括:
第二獲取單元,用于從所述磁盤中獲取小于預(yù)設(shè)擦除閾值的條帶;
選取單元,用于從小于預(yù)設(shè)擦除閾值的條帶中,隨機(jī)選取一個(gè)條帶作為第二條帶。
可選的,還包括:
拒絕搬移單元,用于若所述讀取失敗的比特?cái)?shù)未達(dá)到預(yù)設(shè)的錯(cuò)誤閾值,則不搬移所述第一條帶中的數(shù)據(jù)。
本實(shí)施例中,讀取固態(tài)硬盤第一條帶中的數(shù)據(jù)時(shí),獲取讀取失敗的比特?cái)?shù);判斷所述讀取失敗的比特?cái)?shù)是否達(dá)到了最大的出錯(cuò)閾值;若所述讀取失敗的比特?cái)?shù)未達(dá)到最大的出錯(cuò)閾值,判斷讀取失敗的比特?cái)?shù)是否達(dá)到了預(yù)設(shè)的錯(cuò)誤閾值;若所述讀取失敗的比特?cái)?shù)達(dá)到了預(yù)設(shè)的錯(cuò)誤閾值,將所述第一條帶中的數(shù)據(jù)搬移到預(yù)設(shè)的第二條帶中。因此,通過(guò)對(duì)讀取失敗的比特?cái)?shù)的限定,可以數(shù)據(jù)損壞之前,將數(shù)據(jù)轉(zhuǎn)移到安全的位置,而且,通過(guò)閾值的限定,也可以表面過(guò)度頻繁的數(shù)據(jù)搬移,減小寫放大,從而提到了固態(tài)硬盤的存儲(chǔ)性能。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1示出了本發(fā)明實(shí)施例提供的一種數(shù)據(jù)存儲(chǔ)的保護(hù)方法的流程示意圖;
圖2示出了本發(fā)明實(shí)施例提供的一種數(shù)據(jù)存儲(chǔ)的保護(hù)裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
參考圖1,示出了本發(fā)明實(shí)施例提供的一種數(shù)據(jù)存儲(chǔ)的保護(hù)方法的流程示意圖,在本實(shí)施例中,所述方法可以包括:
s101:讀取固態(tài)硬盤第一條帶中的數(shù)據(jù)時(shí),獲取讀取失敗的比特?cái)?shù);
本實(shí)施例中,s101中固態(tài)硬盤可以通過(guò)采用raid的方式保證數(shù)據(jù)存儲(chǔ)的安全性能。本實(shí)施例中的固態(tài)硬盤,是通過(guò)條帶化的方式存儲(chǔ)的,條帶化技術(shù)就是一種自動(dòng)的將i/o的負(fù)載均衡到多個(gè)物理磁盤上的技術(shù),條帶化技術(shù)就是將一塊連續(xù)的數(shù)據(jù)分成很多小部分并把他們分別存儲(chǔ)到不同磁盤上去。每一個(gè)條帶的存儲(chǔ)容量是相同的。因此,對(duì)數(shù)據(jù)讀取時(shí),也可以是一個(gè)條帶的讀取數(shù)據(jù)。
當(dāng)用戶需要查看保存在固態(tài)硬盤中的數(shù)據(jù)時(shí),可以向主機(jī)發(fā)送讀取固態(tài)硬盤的指令,當(dāng)主機(jī)在讀取固態(tài)硬盤中某個(gè)條帶的數(shù)據(jù)時(shí),可能會(huì)出現(xiàn)數(shù)據(jù)讀取失敗的情況,每讀取一次數(shù)據(jù),主機(jī)會(huì)反饋數(shù)據(jù)讀取失敗的比特?cái)?shù)。
s102:判斷所述讀取失敗的比特?cái)?shù)是否達(dá)到了最大出錯(cuò)閾值;
本實(shí)施例中,主機(jī)每次讀取固態(tài)硬盤中保存的數(shù)據(jù)時(shí),讀取失敗的比特?cái)?shù)存在一個(gè)最大的出錯(cuò)范圍,即讀取失敗的比特?cái)?shù)若在該最大的出錯(cuò)范圍內(nèi),糾錯(cuò)碼可以將這些讀取失敗的數(shù)據(jù)糾正為正確的數(shù)據(jù)。其中,最大出錯(cuò)閾值為最大的出錯(cuò)范圍。
舉例說(shuō)明:假設(shè)最大出錯(cuò)閾值為20bit,假設(shè)此時(shí)讀取的數(shù)據(jù)包括100bit,讀取失敗的數(shù)據(jù)包括10bit,則這10bit讀取失敗的數(shù)據(jù)可以通過(guò)糾錯(cuò)碼糾正為正確的數(shù)據(jù)。
s103:若所述讀取失敗的比特?cái)?shù)未達(dá)到預(yù)設(shè)的最大出錯(cuò)閾值,判斷讀取失敗的比特?cái)?shù)是否達(dá)到了預(yù)設(shè)的錯(cuò)誤閾值;
s104:若所述讀取失敗的比特?cái)?shù)達(dá)到了預(yù)設(shè)的錯(cuò)誤閾值,將所述第一條帶中的數(shù)據(jù)搬移到預(yù)設(shè)的第二條帶中。
本實(shí)施例中,預(yù)設(shè)的錯(cuò)誤閾值小于最大出錯(cuò)閾值,為了保證固態(tài)硬盤中數(shù)據(jù)的安全性,若讀取失敗的比特?cái)?shù)達(dá)到了預(yù)設(shè)的錯(cuò)誤閾值,將該第一條帶中的數(shù)據(jù)搬移到一個(gè)新的存儲(chǔ)性能較好的條帶中。
舉例說(shuō)明:假設(shè)最大出錯(cuò)閾值為20bit,錯(cuò)誤閾值為18bit,若獲取到的讀取失敗的比特?cái)?shù)達(dá)到18bit時(shí),將本次讀取的數(shù)據(jù)搬移到一個(gè)新的存儲(chǔ)性能較好的條帶中。
本實(shí)施例中,在將所述第一條帶中的數(shù)據(jù)搬移到預(yù)設(shè)的第一條帶之前,還需要:確定第二條帶。其中,確定第二條帶的過(guò)程可以包括:
從所述磁盤中獲取小于預(yù)設(shè)擦除閾值的條帶;
從小于預(yù)設(shè)擦除閾值的條帶中,隨機(jī)選取一個(gè)條帶作為第二條帶。
本實(shí)施例中,每個(gè)條帶總的擦除次數(shù)是一定的,不同條帶總的擦除總量可能不同,擦除閾值可以是每個(gè)條帶總的擦除次數(shù)的占比。例如:對(duì)于一個(gè)擦除次數(shù)為3000的條帶,擦出閾值可以是總的擦擦除次數(shù)的2/3,及擦出閾值為1000。
本實(shí)施例中,還需要說(shuō)明的是,若讀取失敗的比特?cái)?shù)未達(dá)到預(yù)設(shè)的錯(cuò)誤閾值,則不搬移該數(shù)據(jù)。
本實(shí)施例中,通過(guò)對(duì)讀取失敗的比特?cái)?shù)的限定,可以數(shù)據(jù)損壞之前,將數(shù)據(jù)轉(zhuǎn)移到安全的位置,而且,通過(guò)閾值的限定,也可以表面過(guò)度頻繁的數(shù)據(jù)搬移,減小寫放大,從而提到了固態(tài)硬盤的存儲(chǔ)性能。
參考圖2,示出了本發(fā)明實(shí)施例提供的一種數(shù)據(jù)存儲(chǔ)的保護(hù)裝置,所述裝置包括:
第一獲取單元201,用于讀取固態(tài)硬盤第一條帶中的數(shù)據(jù)時(shí),獲取讀取失敗的比特?cái)?shù);
第一判斷單元202,用于判斷所述讀取失敗的比特?cái)?shù)是否達(dá)到了最大的出錯(cuò)閾值;
第二判斷單元203,用于若所述讀取失敗的比特?cái)?shù)未達(dá)到最大的出錯(cuò)閾值,判斷讀取失敗的比特?cái)?shù)是否達(dá)到了預(yù)設(shè)的錯(cuò)誤閾值;
數(shù)據(jù)搬移單元204,用于若所述讀取失敗的比特?cái)?shù)達(dá)到了預(yù)設(shè)的錯(cuò)誤閾值,將所述第一條帶中的數(shù)據(jù)搬移到預(yù)設(shè)的第二條帶中。
可選的,還包括:
第二獲取單元,用于從所述磁盤中獲取小于預(yù)設(shè)擦除閾值的條帶;
選取單元,用于從小于預(yù)設(shè)擦除閾值的條帶中,隨機(jī)選取一個(gè)條帶作為第二條帶。
可選的,還包括:
拒絕搬移單元,用于若所述讀取失敗的比特?cái)?shù)未達(dá)到預(yù)設(shè)的錯(cuò)誤閾值,則不搬移所述第一條帶中的數(shù)據(jù)。
通過(guò)本實(shí)施例的裝置,讀取固態(tài)硬盤第一條帶中的數(shù)據(jù)時(shí),獲取讀取失敗的比特?cái)?shù);判斷所述讀取失敗的比特?cái)?shù)是否達(dá)到了最大的出錯(cuò)閾值;若所述讀取失敗的比特?cái)?shù)未達(dá)到最大的出錯(cuò)閾值,判斷讀取失敗的比特?cái)?shù)是否達(dá)到了預(yù)設(shè)的錯(cuò)誤閾值;若所述讀取失敗的比特?cái)?shù)達(dá)到了預(yù)設(shè)的錯(cuò)誤閾值,將所述第一條帶中的數(shù)據(jù)搬移到預(yù)設(shè)的第二條帶中。因此,通過(guò)對(duì)讀取失敗的比特?cái)?shù)的限定,可以數(shù)據(jù)損壞之前,將數(shù)據(jù)轉(zhuǎn)移到安全的位置,而且,通過(guò)閾值的限定,也可以表面過(guò)度頻繁的數(shù)據(jù)搬移,減小寫放大,從而提到了固態(tài)硬盤的存儲(chǔ)性能。
需要說(shuō)明的是,本說(shuō)明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。
對(duì)所公開的實(shí)施例的上述說(shuō)明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。