本發(fā)明涉及配置更新技術(shù)領(lǐng)域,特別是涉及一種基于固態(tài)硬盤系統(tǒng)的配置信息檢索方法及其裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)、云計算、物聯(lián)網(wǎng)等技術(shù)的發(fā)展,固態(tài)硬盤作為新的一代存儲,被廣泛應(yīng)用。在固態(tài)硬盤的存儲空間中,除了存用戶數(shù)據(jù)還要存系統(tǒng)元數(shù)據(jù),用于固件正常運行和數(shù)據(jù)管理,如系統(tǒng)狀態(tài)信息、系統(tǒng)配置信息等。系統(tǒng)每次下電或更新時,會生成最新的配置信息,將其存入nand空間中,待下次上電后,固件讀取最新配置信息,以保證系統(tǒng)運行啟動。配置信息的管理,對保證固件正常運行,處理異常掉電等情況有重要作用。
在ssd固件運行過程中,配置信息的版本會不斷更新,為了保證數(shù)據(jù)的安全性和追溯性,會在特定區(qū)域內(nèi)按一定順序保存不同版本的配置信息。在ssd系統(tǒng)上電過程中,需要在所有版本中檢索最新配置信息,用于系統(tǒng)啟動運行。而目前的檢索方式是順序檢索,即依據(jù)存儲配置信息的空間地址,依次讀取各個地址對應(yīng)的配置信息,這種方式需要將配置信息全部檢索一遍才能確定最新配置信息,效率低,時間長。
因此,如何提供一種檢索效率高的基于固態(tài)硬盤系統(tǒng)的配置信息檢索方法及其裝置是本領(lǐng)域技術(shù)人員目前需要解決的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是提供一種基于固態(tài)硬盤系統(tǒng)的配置信息檢索方法及其裝置,通過將存儲配置信息的地址進行一維簡化,并采用二分算法進行檢索,大大減少了檢索次數(shù),檢索效率高。
為解決上述技術(shù)問題,本發(fā)明提供了一種基于固態(tài)硬盤系統(tǒng)的配置信息檢索方法,包括:
步驟s1:將存放配置信息的地址空間以存儲頁地址作為基準單位進行統(tǒng)計排序,得到多個順序排序的頁地址;
步驟s2:從當前起始頁地址開始依次檢索各個所述頁地址對應(yīng)的存儲頁內(nèi)的配置信息,檢索到有效配置信息后,將所述有效配置信息對應(yīng)的頁地址更新為起始頁地址,并將所述有效配置信息作為最新配置信息;
步驟s3:依據(jù)所述起始頁地址和終止頁地址計算中間頁地址,并判斷所述起始頁地址是否等于所述終止頁地址,若不等,進入步驟s4,若相等,將所述起始頁地址對應(yīng)的存儲頁內(nèi)的配置信息作為檢索結(jié)果;
步驟s4:讀取所述中間頁地址對應(yīng)的存儲頁內(nèi)的配置信息;若讀取結(jié)果為空,則依據(jù)所述中間頁地址更新所述終止頁地址;若讀取的配置信息中的版本號大于所述最新配置信息中的版本號,則依據(jù)所述中間頁地址更新所述起始頁地址,并將更新后的起始頁地址對應(yīng)的存儲頁內(nèi)的配置信息作為最新配置信息;若讀取的配置信息中的版本號小于所述最新配置信息中的版本號,則依據(jù)所述中間頁地址更新所述終止頁地址;返回步驟s3。
優(yōu)選地,步驟s3中判斷所述起始頁地址不等于所述終止頁地址后,進入步驟s4之前還包括:
步驟s31:將所述中間頁地址作為當前檢測頁地址;
步驟s32:判斷其對應(yīng)的存儲頁是否為壞頁,若是,進入步驟s33,否則,進入步驟s4;
步驟s33:將所述檢測頁地址的下一個頁地址更新為當前檢測頁地址,并判斷所述當前檢測頁地址是否小于所述終止頁地址,若是,則返回步驟s32,否則,依據(jù)所述中間頁地址更新所述終止頁地址,并返回步驟s3。
優(yōu)選地,步驟s2中還包括:
在檢索完成所述終止頁地址對應(yīng)的存儲頁內(nèi)的配置信息后,仍未檢索到有效配置信息時,返回檢索失敗的響應(yīng)。
為解決上述技術(shù)問題,本發(fā)明還提供了一種基于固態(tài)硬盤系統(tǒng)的配置信息檢索裝置,包括:
一維簡化模塊,用于將存放配置信息的地址空間以存儲頁地址作為基準單位進行統(tǒng)計排序,得到多個順序排序的頁地址;
初始檢索模塊,用于從當前起始頁地址開始依次檢索各個所述頁地址對應(yīng)的存儲頁內(nèi)的配置信息,檢索到有效配置信息后,將所述有效配置信息對應(yīng)的頁地址更新為起始頁地址,并將所述有效配置信息作為最新配置信息;觸發(fā)中間計算模塊;
所述中間計算模塊,用于依據(jù)所述起始頁地址和終止頁地址計算中間頁地址,并判斷所述起始頁地址是否等于所述終止頁地址,若不等,觸發(fā)二分檢索模塊,若相等,將所述起始頁地址對應(yīng)的存儲頁內(nèi)的配置信息作為檢索結(jié)果;
所述二分檢索模塊,用于讀取所述中間頁地址對應(yīng)的存儲頁內(nèi)的配置信息;若讀取結(jié)果為空,則依據(jù)所述中間頁地址更新所述終止頁地址;若讀取的配置信息中的版本號大于所述最新配置信息中的版本號,則依據(jù)所述中間頁地址更新所述起始頁地址,并將更新后的起始頁地址對應(yīng)的存儲頁內(nèi)的配置信息作為最新配置信息;若讀取的配置信息中的版本號小于所述最新配置信息中的版本號,則依據(jù)所述中間頁地址更新所述終止頁地址;觸發(fā)所述中間計算模塊。
優(yōu)選地,還包括壞頁檢測模塊;所述中間計算模塊在判斷所述起始頁地址不等于所述終止頁地址后,觸發(fā)所述壞頁檢測模塊;
所述壞頁檢測模塊具體包括:
壞頁檢測單元,用于將所述中間頁地址作為當前檢測頁地址,判斷其對應(yīng)的存儲頁是否為壞頁,若是,觸發(fā)更新單元;否則,觸發(fā)所述二分檢索模塊;
所述更新單元,用于將所述檢測頁地址的下一個頁地址更新為當前檢測頁地址,并判斷所述當前檢測頁地址是否小于所述終止頁地址,若小于,觸發(fā)所述壞頁檢測單元檢測所述當前檢測頁地址對應(yīng)的存儲頁,否則,依據(jù)所述中間頁地址更新所述終止頁地址,并觸發(fā)所述中間計算模塊。
優(yōu)選地,所述初始檢索模塊還包括:
失敗響應(yīng)單元,用于在檢索完成所述終止頁地址對應(yīng)的存儲頁內(nèi)的配置信息后,仍未檢索到有效配置信息時,返回檢索失敗的響應(yīng)。
本發(fā)明提供了一種基于固態(tài)硬盤系統(tǒng)的配置信息檢索方法及其裝置,將存放配置信息的地址空間以存儲頁地址作為基準單位進行統(tǒng)計排序,得到多個順序排序的頁地址,這樣能夠使存放配置信息的地址空間從包含channel、target、lun、block以及page(存儲頁)的多維地址簡化為了僅包含page的一維地址,進而簡化了檢索過程。
之后本發(fā)明采用二分算法,計算起始頁地址與終止頁地址之間的中間頁地址,并依據(jù)中間頁地址對應(yīng)的配置信息內(nèi)容,確定所需的最新配置信息處于哪部分半?yún)^(qū)內(nèi),通過這一次檢索即將待檢索的存儲頁數(shù)量簡化為了初始的一半,之后再采用上述方法確定最新配置信息處于哪1/4區(qū)內(nèi),以此類推,直至起始頁地址等于終止頁地址,則表明已檢索到最后,則輸出當前起始頁地址對應(yīng)的存儲頁內(nèi)的配置信息??梢?,相比順序依次檢索的方式,本發(fā)明在檢索過程中,讀取配置信息的次數(shù)大大減少,提高了檢索效率。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對現(xiàn)有技術(shù)和實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明提供的一種基于固態(tài)硬盤系統(tǒng)的配置信息檢索方法的過程的流程圖;
圖2為本發(fā)明提供的另一種基于固態(tài)硬盤系統(tǒng)的配置信息檢索方法的過程的流程圖;
圖3為本發(fā)明提供的一種基于固態(tài)硬盤系統(tǒng)的配置信息檢索裝置的結(jié)構(gòu)示意圖。
具體實施方式
本發(fā)明的核心是提供一種基于固態(tài)硬盤系統(tǒng)的配置信息檢索方法及其裝置,通過將存儲配置信息的地址進行一維簡化,并采用二分算法進行檢索,大大減少了檢索次數(shù),檢索效率高。
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明提供了一種基于固態(tài)硬盤(solidstatedrives,ssd)系統(tǒng)的配置信息檢索方法,參見圖1所示,圖1為本發(fā)明提供的一種基于固態(tài)硬盤系統(tǒng)的配置信息檢索方法的過程的流程圖;該方法包括:
步驟s1:將存放配置信息的地址空間以存儲頁地址作為基準單位進行統(tǒng)計排序,得到多個順序排序的頁地址;
在ssd存儲空間中,物理層面默認以channel、target、lun、block、page(存儲也)的單位進行空間劃分以存儲數(shù)據(jù),不同板卡會有區(qū)別,例如1個channel包含8個target,每個target包含2個lun,每個block包含192個page等等。生成的每份配置信息保存在一個page中。另外,本發(fā)明在配置信息中增加版本號versionnumber,每新生成一版配置信息,其版本號versionnumber加1,則最新配置信息為最大versionnumber的版本。
其中,步驟s1中的操作具體為將存儲配置信息的地址從之前的多維簡化為了一維,只考慮page個數(shù)。例如,配置信息在板卡上被分配的地址空間為channel[0-1]、target[0-3]、lun[0-1]、block[0],則配置信息所占用的page個數(shù)為2*4*2*1*192=3072。此時,順序排序的頁地址為page0~page3071。當所有存儲頁空間均填滿時,則從page0重新寫入。當ssd上電檢索最新配置信息時,設(shè)置檢索的起始頁地址start_address為page0,終止頁地址end_address為page3071。
步驟s2:從當前起始頁地址開始依次檢索各個頁地址對應(yīng)的存儲頁內(nèi)的配置信息,檢索到有效配置信息后,將有效配置信息對應(yīng)的頁地址更新為起始頁地址,并將有效配置信息作為最新配置信息;
可以理解的是,有些存儲頁內(nèi)存儲的配置信息為無效信息或者為空,這種情況下將其作為起始頁地址也只是增加操作次數(shù),并無有益效果,因此需要按照頁地址的排列順依次檢索到有效配置信息后,再以此為起始,進行后續(xù)二分檢索操作。
步驟s3:依據(jù)起始頁地址和終止頁地址計算中間頁地址,并判斷起始頁地址是否等于終止頁地址,若不等,進入步驟s4,若相等,將起始頁地址對應(yīng)的存儲頁內(nèi)的配置信息作為檢索結(jié)果;
其中,計算中間頁地址與判斷起始頁地址是否等于終止頁地址的兩個操作可以同時進行,也可以有先后順序,兩者之間的先后順序本發(fā)明不作具體限定。
具體計算過程為中間頁地址mid_address=(起始頁地址start_address+終止頁地址end_address)/2。
需要注意的是,若(start_address+end_address)/2的計算結(jié)果不為整數(shù),例如(0+3071)/2=1535.5,此時,可以采用page1535作為中間頁或者采用page1536作為中間頁,即可以選取得到的結(jié)果的前一個或后一個頁地址作為中間頁地址,具體如何選用,可自行決定,本發(fā)明對此不作具體限定。
步驟s4:讀取中間頁地址對應(yīng)的存儲頁內(nèi)的配置信息;若讀取結(jié)果為空,則依據(jù)中間頁地址更新終止頁地址;若讀取的配置信息中的版本號大于最新配置信息中的版本號,則依據(jù)中間頁地址更新起始頁地址,并將更新后的起始頁地址對應(yīng)的存儲頁內(nèi)的配置信息作為最新配置信息;若讀取的配置信息中的版本號小于最新配置信息中的版本號,則依據(jù)中間頁地址更新終止頁地址;返回步驟s3。
其中,該步驟中,可以先判斷讀取結(jié)果是否為空,若不為空,再判斷讀取的配置信息中的版本號是否小于最新配置信息中的版本號。當然,也可采用其他順序,本發(fā)明對此不作具體限定。
例如,步驟s41:讀取中間頁地址對應(yīng)的存儲頁內(nèi)的配置信息;
步驟s42:判斷讀取結(jié)果是否為空,若讀取結(jié)果為空,進入步驟s44,否則,進入步驟s43;
步驟s43:判斷讀取的配置信息中的版本號是否小于最新配置信息中的版本號,若小于,進入步驟s44,否則,進入步驟s45;
步驟s44:依據(jù)中間頁地址更新終止頁地址;返回步驟s3;
步驟s45:依據(jù)中間頁地址更新起始頁地址,并將更新后的起始頁地址對應(yīng)的存儲頁內(nèi)的配置信息作為最新配置信息;返回步驟s3。
可以理解的是,由于配置信息的寫入順序為從page0開始依次向后寫入,若中間頁的讀取結(jié)果為空(erasedpage),則表明此時尚未寫到中間頁的位置,因此最新配置信息在二分上半?yún)^(qū),即在start_address~mid_address之間,因此,令end_address=mid_address。
若讀取的配置信息中的版本號大于當前最新配置信息中的版本號,由于當前的最新配置信息為start_address對應(yīng)的配置信息,該信息的存儲位置為起始頁,即在中間頁之前,若中間頁存儲的配置信息要比起始頁的配置信息新,則表明最新的配置信息應(yīng)該位于中間頁或中間頁之后的某個存儲頁中,即位于二分下半?yún)^(qū),在mid_address~end_address之間,令start_address=mid_address。
若讀取的配置信息中的版本號小于當前最新配置信息中的版本號,即中間頁之前的起始頁中的配置信息比中間頁的配置信息要新,則表明此時全部存儲頁已經(jīng)寫滿,并重新從page0開始重新寫入了,故最新的配置信息應(yīng)該位于二分上半?yún)^(qū),令end_address=mid_address。
作為優(yōu)選地,步驟s3中判斷起始頁地址不等于終止頁地址后,進入步驟s4之前還包括:
步驟s31:將中間頁地址作為當前檢測頁地址;讀取中間頁地址對應(yīng)的存儲頁內(nèi)的配置信息;
步驟s32:判斷其對應(yīng)的存儲頁是否為壞頁,若是,進入步驟s33,否則,進入步驟s4;
步驟s33:將檢測頁地址的下一個頁地址更新為當前檢測頁地址,并判斷當前檢測頁地址是否小于終止頁地址,若是,則返回步驟s32,否則,依據(jù)中間頁地址更新終止頁地址,并返回步驟s3。
可以理解的是,確定中間頁地址后,中間頁地址對應(yīng)的中間頁可能出現(xiàn)損壞的情況,即為壞頁,這種情況下顯然無法讀取其配置信息,因此需要順序查看中間頁地址的下一個頁地址,若其仍未壞頁,則繼續(xù)后續(xù)操作,直到找到?jīng)]有損壞的存儲頁為止;若直到終止頁地址均是壞頁,表明此時從中間頁到終止頁均損壞,故此時只能從二分上半?yún)^(qū)開始找。
進一步的,步驟s2中還包括:
在檢索完成終止頁地址對應(yīng)的存儲頁內(nèi)的配置信息后,仍未檢索到有效配置信息時,返回檢索失敗的響應(yīng)。
可以理解的是,在某些情況下,會出現(xiàn)全部存儲頁內(nèi)均為存儲有效配置信息,此時需要告知工作人員檢索失敗。
參見圖2所示,圖2為本發(fā)明提供的另一種基于固態(tài)硬盤系統(tǒng)的配置信息檢索方法的過程的流程圖。
本發(fā)明提供了一種基于固態(tài)硬盤系統(tǒng)的配置信息檢索方法,將存放配置信息的地址空間以存儲頁地址作為基準單位進行統(tǒng)計排序,得到多個順序排序的頁地址,這樣能夠使存放配置信息的地址空間從包含channel、target、lun、block以及page(存儲頁)的多維地址簡化為了僅包含page的一維地址,進而簡化了檢索過程。
之后本發(fā)明采用二分算法,計算起始頁地址與終止頁地址之間的中間頁地址,并依據(jù)中間頁地址對應(yīng)的配置信息內(nèi)容,確定所需的最新配置信息處于哪部分半?yún)^(qū)內(nèi),通過這一次檢索即將待檢索的存儲頁數(shù)量簡化為了初始的一半,之后再采用上述方法確定最新配置信息處于哪1/4區(qū)內(nèi),以此類推,直至起始頁地址等于終止頁地址,則表明已檢索到最后,則輸出當前起始頁地址對應(yīng)的存儲頁內(nèi)的配置信息??梢?,相比順序依次檢索的方式,本發(fā)明在檢索過程中,讀取配置信息的次數(shù)大大減少,提高了檢索效率。
本發(fā)明還提供了一種基于固態(tài)硬盤系統(tǒng)的配置信息檢索裝置,參見圖3所示,圖3為本發(fā)明提供的一種基于固態(tài)硬盤系統(tǒng)的配置信息檢索裝置的結(jié)構(gòu)示意圖。該裝置包括:
一維簡化模塊1,用于將存放配置信息的地址空間以存儲頁地址作為基準單位進行統(tǒng)計排序,得到多個順序排序的頁地址;
初始檢索模塊2,用于從當前起始頁地址開始依次檢索各個頁地址對應(yīng)的存儲頁內(nèi)的配置信息,檢索到有效配置信息后,將有效配置信息對應(yīng)的頁地址更新為起始頁地址,并將有效配置信息作為最新配置信息;觸發(fā)中間計算模塊3;
中間計算模塊3,用于依據(jù)起始頁地址和終止頁地址計算中間頁地址,并判斷起始頁地址是否等于終止頁地址,若不等,觸發(fā)二分檢索模塊4,若相等,將起始頁地址對應(yīng)的存儲頁內(nèi)的配置信息作為檢索結(jié)果;
二分檢索模塊4,用于讀取中間頁地址對應(yīng)的存儲頁內(nèi)的配置信息;若讀取結(jié)果為空,則依據(jù)中間頁地址更新終止頁地址;若讀取的配置信息中的版本號大于最新配置信息中的版本號,則依據(jù)中間頁地址更新起始頁地址,并將更新后的起始頁地址對應(yīng)的存儲頁內(nèi)的配置信息作為最新配置信息;若讀取的配置信息中的版本號小于最新配置信息中的版本號,則依據(jù)中間頁地址更新終止頁地址;觸發(fā)中間計算模塊3。
作為優(yōu)選地,該裝置還包括壞頁檢測模塊5;中間計算模塊3在判斷起始頁地址不等于終止頁地址后,觸發(fā)壞頁檢測模塊5;
壞頁檢測模塊5具體包括:
壞頁檢測單元,用于將中間頁地址作為當前檢測頁地址,判斷其對應(yīng)的存儲頁是否為壞頁,若是,觸發(fā)更新單元;否則,觸發(fā)二分檢索模塊4;
更新單元,用于將檢測頁地址的下一個頁地址更新為當前檢測頁地址,并判斷當前檢測頁地址是否小于終止頁地址,若小于,觸發(fā)壞頁檢測單元檢測當前檢測頁地址對應(yīng)的存儲頁,否則,依據(jù)中間頁地址更新終止頁地址,并觸發(fā)中間計算模塊3。
作為優(yōu)選地,初始檢索模塊2還包括:
失敗響應(yīng)單元,用于在檢索完成終止頁地址對應(yīng)的存儲頁內(nèi)的配置信息后,仍未檢索到有效配置信息時,返回檢索失敗的響應(yīng)。
本發(fā)明提供了一種基于固態(tài)硬盤系統(tǒng)的配置信息檢索裝置,將存放配置信息的地址空間以存儲頁地址作為基準單位進行統(tǒng)計排序,得到多個順序排序的頁地址,這樣能夠使存放配置信息的地址空間從包含channel、target、lun、block以及page(存儲頁)的多維地址簡化為了僅包含page的一維地址,進而簡化了檢索過程。
之后本發(fā)明采用二分算法,計算起始頁地址與終止頁地址之間的中間頁地址,并依據(jù)中間頁地址對應(yīng)的配置信息內(nèi)容,確定所需的最新配置信息處于哪部分半?yún)^(qū)內(nèi),通過這一次檢索即將待檢索的存儲頁數(shù)量簡化為了初始的一半,之后再采用上述方法確定最新配置信息處于哪1/4區(qū)內(nèi),以此類推,直至起始頁地址等于終止頁地址,則表明已檢索到最后,則輸出當前起始頁地址對應(yīng)的存儲頁內(nèi)的配置信息??梢?,相比順序依次檢索的方式,本發(fā)明在檢索過程中,讀取配置信息的次數(shù)大大減少,提高了檢索效率。
以上的兩種具體實施方式僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進,這些改進也應(yīng)視為本發(fā)明的保護范圍。
本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
還需要說明的是,在本說明書中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其他實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。