本發(fā)明涉及信息存儲(chǔ)領(lǐng)域,尤其涉及一種固態(tài)硬盤垃圾回收的方法。
背景技術(shù):
固態(tài)存儲(chǔ)設(shè)備在使用過程中一定會(huì)發(fā)生部分?jǐn)?shù)據(jù)失效的情況,存在有效數(shù)據(jù)和無效數(shù)據(jù)共存的情況,累積多了必然會(huì)造成空間浪費(fèi)。因此垃圾回收是存儲(chǔ)設(shè)備必須要有的機(jī)制,現(xiàn)有技術(shù)中垃圾回收過程通常是:讀取待回收塊的每個(gè)頁,獲取頁的帶外數(shù)據(jù)中存儲(chǔ)的邏輯地址,根據(jù)邏輯地址判斷該物理頁包含的數(shù)據(jù)是否有效,如果有效,則將該物理頁的數(shù)據(jù)搬移到新的塊中;當(dāng)這個(gè)塊中所有的有效數(shù)據(jù)頁都搬移完成后,就可將該塊進(jìn)行擦除操作,完成該塊的回收工作。
圖1是一般的垃圾回收過程示例,在一般的垃圾回收中,由于在回收一個(gè)block前,我們無法知道該block中每個(gè)page的邏輯地址信息,因此也并不知道待回收block中的哪些page是有效的,所以我們需要讀取該block的所有page,每讀取一個(gè)page后,根據(jù)其meta中記錄的邏輯地址,確認(rèn)該page包含的數(shù)據(jù)是否有效,假設(shè)該block中只有Meta為1、8、10等是有效數(shù)據(jù),而Meta為99、134等數(shù)據(jù)為無效數(shù)據(jù),要實(shí)現(xiàn)數(shù)據(jù)回收,回收流程需要將所有的page的數(shù)據(jù)都讀取出才能完整的判斷其中哪些數(shù)據(jù)為有效數(shù)據(jù),完整的將所有有效數(shù)據(jù)搬移到新的block中,才能將該block擦除實(shí)現(xiàn)回收。由于meta數(shù)據(jù)分布在各個(gè)Page中,要實(shí)現(xiàn)meta數(shù)據(jù)的讀取,就要對(duì)整個(gè)頁數(shù)據(jù)進(jìn)行讀取并進(jìn)行校驗(yàn),整個(gè)讀取過程耗時(shí)較大,因此存在許多無效數(shù)據(jù)讀取操作,造成整體的數(shù)據(jù)垃圾回收過程耗時(shí)較長的問題。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)以上缺陷,本發(fā)明目的在于如何避免固態(tài)存儲(chǔ)設(shè)備垃圾回收過程無效物理頁的讀取,從而提高固態(tài)存儲(chǔ)設(shè)備垃圾回收的效率,提升固態(tài)存儲(chǔ)設(shè)備性能。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種固態(tài)硬盤垃圾回收的方法,其特征在于在每個(gè)block中預(yù)留一個(gè)固定頁用于存儲(chǔ)數(shù)據(jù)有效性標(biāo)識(shí)表,所述數(shù)據(jù)有效性標(biāo)識(shí)表記錄了該block中所有的有效數(shù)據(jù)頁的邏輯地址,當(dāng)該block需要垃圾回收時(shí),回收程序直接讀取該block的數(shù)據(jù)有效性標(biāo)識(shí)表,根據(jù)數(shù)據(jù)有效性標(biāo)識(shí)表獲取到該block中各個(gè)頁的邏輯地址,并通過邏輯地址直接判斷出哪些頁的數(shù)據(jù)有效,回收程序直接只讀寫并搬移有效的數(shù)據(jù)頁到新的block中,所有有效數(shù)據(jù)頁數(shù)據(jù)完成后,擦除該block,完成該block的回收。
所述的固態(tài)硬盤垃圾回收的方法,其特征在于所述的存儲(chǔ)數(shù)據(jù)有效性標(biāo)識(shí)表中直接按各個(gè)塊的頁序號(hào)順序存儲(chǔ)各個(gè)頁數(shù)據(jù)的有效性狀態(tài),當(dāng)該block需要垃圾回收時(shí),回收程序直接讀取該block的數(shù)據(jù)有效性標(biāo)識(shí)表,根據(jù)數(shù)據(jù)有效性標(biāo)識(shí)表可直接獲得數(shù)據(jù)有效的頁序號(hào),回收程序直接只讀寫并搬移有效的數(shù)據(jù)頁到新的block中,所有有效數(shù)據(jù)頁數(shù)據(jù)完成后,擦除該block,完成該block的回收。
本發(fā)明通過增加數(shù)據(jù)有效性標(biāo)識(shí)表,去除了固態(tài)存儲(chǔ)設(shè)備垃圾回收過程無效物理頁的讀取的浪費(fèi),從而提高固態(tài)存儲(chǔ)設(shè)備垃圾回收的效率,提升固態(tài)存儲(chǔ)設(shè)備性能。
附圖說明
圖1是一般的垃圾回收過程示例;
圖2是增加數(shù)據(jù)有效性標(biāo)識(shí)表后的塊數(shù)據(jù)存儲(chǔ)結(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ù)的范圍。
圖2是增加數(shù)據(jù)有效性標(biāo)識(shí)表后的塊數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),現(xiàn)有技術(shù)的塊數(shù)據(jù)存儲(chǔ)一般在每個(gè)頁中的數(shù)據(jù)都包括標(biāo)簽Meta和該頁的數(shù)據(jù),一般標(biāo)簽一般由該頁的邏輯地址構(gòu)成,本發(fā)明在每個(gè)塊中,固定分配一個(gè)頁作為圖2是數(shù)據(jù)有效性標(biāo)識(shí)表用于存儲(chǔ)本塊的所有頁的Meta數(shù)據(jù),當(dāng)該塊中的任何一個(gè)數(shù)據(jù)頁的M eta數(shù)據(jù)發(fā)生變化了,則同步更新到該數(shù)據(jù)有效性標(biāo)識(shí)表中;也可以直接在數(shù)據(jù)有效性標(biāo)識(shí)表中存儲(chǔ)本塊中各個(gè)頁的數(shù)據(jù)有效性標(biāo)識(shí)。
當(dāng)該block需要垃圾回收時(shí),回收程序直接讀取該block的數(shù)據(jù)有效性標(biāo)識(shí)表,根據(jù)數(shù)據(jù)有效性標(biāo)識(shí)表獲取到該block中所有頁的邏輯地址,并通過邏輯地址直接判斷出哪些頁的數(shù)據(jù)還依然有效,回收程序直接只讀寫并搬移有效的數(shù)據(jù)頁到新的block中,所有有效數(shù)據(jù)頁數(shù)據(jù)完成后,擦除該block,完成該block的回收。而不會(huì)需要額外的去讀取所有的頁后才能判斷出哪些頁數(shù)據(jù)是有效,哪些頁數(shù)據(jù)是無效的。
以上所揭露的僅為本發(fā)明一種實(shí)施例而已,當(dāng)然不能以此來限定本之權(quán)利范圍,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分流程,并依本發(fā)明權(quán)利要求所作的等同變化,仍屬于本發(fā)明所涵蓋的范圍。