專利名稱:存儲設備硬件調試的方法及系統的制作方法
技術領域:
本發明涉及計算機技術領域,更具體地涉及存儲設備的硬件調試技術。
背景技術:
隨著材料科學的發展以及一些應用對存儲帶寬和延遲的較高需求,一些新的高 速存儲設備逐漸被研究開發出來,如閃存(Flash Memory)、固態硬盤(SSD :Solid State Disk)以及基于內存顆粒的存儲設備等,以彌補磁盤性能的不足。這一類產品尚無足夠的技 術積累,而且本身高帶寬低延遲的特性也容易導致缺陷(Bug)的產生。產生一次缺陷通常 對應于某一種讀寫模式(Pattern),開發者經常需要利用這一序列來重現缺陷進行調試。
為了較全面地對一個開發中的存儲產品進行測試和調試,采用確定的讀寫序列作 為輸入往往不能較好地覆蓋所有可能的問題。將存儲設備接入真實的計算機系統,由多種 應用程序、基準測試程序(Benchmark)通過操作系統對該設備發送讀寫請求,是比較好的 檢測方法。然而由于操作系統進程調度、1/0調度等服務的不確定性,能夠導致一次設備缺 陷的讀寫模式很難被記錄并重現。本發明解決了這一問題,可以在操作系統內核中以較小 的開銷來記錄和重現導致存儲設備bug產生的讀寫模式。 現有技術有兩種途徑可以一定程度上解決這種問題硬件發包器或者軟件構造讀 寫模式。前者直接對設備控制器發送特定的讀寫序列,并檢測結果。 一般的檢測方式都是先 向某一位置寫,然后再讀進行比較,從而判斷功能上是否正常。這意味著對于所有寫操作, 必須保存其所寫入的內容,為之后的讀校驗提供基準。如果導致一次bug產生需要大量的 不同位置的寫操作,那么發包器很難擁有大的空間來保存之前寫的內容。因此,一種替代的 方案即用軟件來構造讀寫序列,通過操作系統對設備進行訪問。這種方法只能勉強適用于 模式比較規整的讀寫,比如順序寫、順序讀、逆序寫、逆序讀等。隨機的讀寫序列在操作系統 中會被重排,即使是前述規整的讀寫也可能被重排。
因此,目前需要一種不依賴于讀寫序列的硬件調試技術。
發明內容
為了解決上述問題之一,本發明提出了一種存儲設備硬件調試的方法,包括以下 步驟建立被調試存儲設備的鏡像,該鏡像的存儲單元與被調試存儲設備的存儲單元一一 映射;對被調試存儲設備和鏡像進行讀寫操作;根據鏡像定位被調試存儲設備的缺陷。
根據本發明的實施例,對被調試存儲設備和鏡像進行讀寫操作包括在對被調試 存儲設備進行寫操作時,對鏡像中的相應的存儲單元進行相同的寫操作;在對被調試存儲 設備中的存儲單元進行讀操作時,讀取鏡像中相應的存儲單元的數據。 根據本發明的實施例,根據鏡像定位被調試存儲設備的缺陷的步驟包括將被調
試存儲設備中讀取的數據與鏡像中相應的存儲單元進行對比,若不一致則報錯。 根據本發明的實施例,對被調試存儲設備和鏡像進行寫操作包括在鏡像中設置
位圖,該位圖指示被調試存儲設備的相應的存儲單元是否進行過寫操作。
4
根據本發明的實施例,對被調試存儲設備進行寫操作包括檢查被調試存儲設備 相應的存儲單元所對應的位圖,如果位圖指示存儲單元未進行過寫操作,則在鏡像中申請 一個新的存儲單元,對新的存儲單元進行寫操作,并將對應的位圖置位。 根據本發明的實施例,對被調試存儲設備和鏡像進行讀操作包括根據位圖判斷 存儲設備的相應的存儲單元是否進行過寫操作;如果存儲單元進行過寫操作,則讀取存儲 設備和鏡像中相對應的存儲單元的數據。 根據本發明的實施例,根據鏡像定位被調試存儲設備的缺陷包括如果存儲單元 未進行過寫操作,則報錯;如果存儲設備和鏡像中相對應的存儲單元的數據不一致,則報 錯。 根據本發明的實施例,該方法還包括記錄讀寫請求的序列,并將讀寫請求所對應 的鏡像中的存儲單元的數據按時間備份。 根據本發明的實施例,鏡像設置于虛擬磁盤或物理磁盤上。 本發明還提出了一種存儲設備硬件調試的系統,包括中央處理器、被調試存儲設 備和被調試存儲設備的鏡像,鏡像的存儲單元與被調試存儲設備的存儲單元一一映射。其 中,中央處理器用于對被調試存儲設備和鏡像進行讀寫操作,并根據鏡像定位被調試存儲 設備的缺陷。 本發明所提出的存儲設備硬件調試的方法及系統,可以輔助高速設備的硬件調 試,使調試難度降低,縮減硬件的開發周期。
本發明上述的和/或附加的方面和優點從下面結合附圖對實施例的描述中將變 得明顯和容易理解,其中 圖1為根據本發明的一個實施例的存儲設備硬件調試方法的流程圖;
圖2為根據本發明的一個實施例的存儲設備硬件調試方法的流程圖;
圖3為根據本發明的一個實施例的存儲設備硬件調試系統的結構示意圖。
具體實施例方式
下面詳細描述本發明的實施例,所述實施例的示例在附圖中示出。下面通過參考
附圖描述的實施例是示例性的,僅用于解釋本發明,而不能解釋為對本發明的限制。 本發明的一個實施例是在其他的高速存儲介質(Media)上建立被調試存儲設備
的一個鏡像,操作系統所發出來的讀寫請求在驅動層除了交給被調試存儲設備,或稱被調
試磁盤處理外,也向鏡像發送一份。如果設備的某個位置進行過寫操作,那么再次讀的時
候,需要從鏡像上讀相應位置的數據,二者比較以確定設備上數據的正確性。作為本發明
的一個實施例,可以記錄之前的讀寫請求序列,備份特定時刻特定位置的數據,用來輔助調試。 如圖1所示為本發明的一個實施例的存儲設備硬件調試方法的流程圖。如圖1所 示,該方法100包括以下步驟 S101 :建立被調試存儲設備的鏡像,該鏡像的存儲單元與被調試存儲設備的存儲 單元一一映射。
作為本發明的一個實施例,存儲設備的鏡像設置于高可靠性和高速讀寫的設備 上,例如,可以采用虛擬磁盤。被調試設備和驅動的功能正確性將以虛擬磁盤的內容作為比 較和判斷的基準,因此使用高可靠性的設備作為鏡像能夠提高調試的準確性。虛擬磁盤的 讀寫速度優選地高于被調試設備的讀寫速度,特別地,如果高于一個數量級以上為最佳。這 樣可以盡量避免和排除虛擬磁盤讀寫所帶來的一些干擾因素,例如延遲,從而利于問題的 準確定位。 作為本發明的一個實施例,被調試存儲設備為高速設備,被調試存儲設備的鏡像 采用物理內存作為虛擬磁盤的載體,對于現有所有高速外設而言,物理內存都滿足上述高 可靠性和高速讀寫的要求。 作為本發明的一個實施例,可以以物理內存頁面簇作為虛擬磁盤的基本單元,簇 的大小一般為1、2、4個頁面,視系統內存的資源可用性和碎片程度而定,在編譯期或者運 行期手工指定,例如,如果系統內存較大、碎片較少,則可以將簇的大小指定得稍大一些。
S102 :對被調試存儲設備和鏡像進行讀寫操作。 作為本發明的一個實施例,驅動程序從操作系統獲得讀寫請求,處理之后最終要 發送給被調試存儲設備,或稱目標設備。若驅動程序發出了對設備寫的命令,則對被調試存 儲設備和其鏡像執行相同的寫操作。若驅動中發出了對設備讀的命令,則返回被調試存儲 設備和鏡像中的相應位置的數據。
S103 :根據鏡像定位被調試存儲設備的缺陷。 作為本發明的一個實施例,在中央處理器發出讀命令時,將被調試存儲設備和鏡 像中的相應位置的數據進行對比,如果不一致則報錯。 作為本發明的一個實施例,還可以在鏡像中設備位圖(bitm即)指示某個存儲單 元是否被寫過,例如,將被寫過的存儲單元對應的位圖置位。 如圖2所示為本發明的另一個實施例的存儲設備硬件調試方法的流程圖。如圖2 所示,該方法包括以下步驟 S201 :驅動程序從操作系統(0S)獲得讀寫請求; S202 :將讀寫請求進行處理之后要發送給目標設備,即被調試存儲設備;
S203 :判斷請求類型,如果為寫請求,則轉到S204,如果為讀請求,則轉到S205 ;
S204 :如果為寫請求,則對被調試存儲設備的鏡像例如虛擬磁盤進行與被調試存 儲設備相同的寫操作,如果所對應的存儲單元的位置未被寫過,則申請一個頁面簇,并將相 應塊的bitmap位置位; S205 :檢查虛擬磁盤上相應塊的bitmap,如果該bitmap指示所對應的存儲單元被 寫過,則轉到S206,如果未被寫過,則轉到S208 ;
S206 :從虛擬磁盤中讀取數據; S207 :將虛擬磁盤中讀取的數據與被調試存儲設備中讀取的數據進行比較,如果 相同,則程序結束,如果不同,則轉到S208 ;
S208 :報告缺陷(bug dump)數據。 作為本發明的一個實施例,可以在必要的時候可以記下出錯的測試用例下的讀寫 序列,并將相應塊的數據按時間備份,以便于硬件調度者進行分析。 舉例來說,以二元組〈讀寫位置,讀寫類型(R為讀,W為定)〉構成的序列來來表示一個讀寫模式〈1,R〉,〈2,W〉,〈3,R〉,〈4,W〉,〈2,R〉。此模式經過操作系統的I/O調度之 后可能變為〈1, R>, 〈3, R>, 〈2, W>, 〈4, W>, 〈2, R>。假設在此之前,系統對被調試設備無讀 寫操作,那么驅動程序中將要執行的操作為 1)獲得請求〈1, R〉,處理完請求后直接發送至存儲設備。讀操作完成后檢查虛擬 磁盤位置1的bitm即,為O,表示之前沒被寫過,不做額外操作。
2)獲得請求〈3, R>,同1); 3)獲得請求〈2, W>,由于是寫請求,無條件地將要寫的內容寫至虛擬磁盤的位置 2,將將此位置的bitm即置為1 ; 4)獲得請求〈4, W>,同3),但是目標位置不同; 5)獲得請求〈2, R>,處理完請求后直接發送至存儲設備,讀操作完成后查看虛擬 磁盤位置2的bitm即,為l,表示之前被寫過。則從虛擬磁盤中讀出位置2的內容,與存儲 設備讀回來的內容進行比較。 這里所說的位置,通常是以磁盤塊為單位,例如,采用的磁盤塊大小可以為512字 節。 如圖3所示為根據本發明的一個實施例的存儲設備硬件調試系統的結構示意圖, 其中該系統包括中央處理器301 、被調試存儲設備302和被調試存儲設備的鏡像303。其中, 鏡像303的存儲單元與被調試存儲設備302的存儲單元一一映射,中央處理器301用于對 被調試存儲設備302和鏡像303進行讀寫操作,并根據鏡像303定位被調試存儲設備302 的缺陷。 在本發明的具體實施中,鏡像用的物理內存也可以用讀寫速度高、可靠的存儲設 備來替代。 本發明所提出的存儲設備硬件調試的方法及系統可以輔助高速設備的硬件調試, 使調試難度降低,縮減了硬件的開發周期。 盡管已經示出和描述了本發明的實施例,對于本領域的普通技術人員而言,可以 理解在不脫離本發明的原理和精神的情況下可以對這些實施例進行多種變化、修改、替換 和變型,本發明的范圍由所附權利要求及其等同限定。
權利要求
一種存儲設備硬件調試的方法,其特征在于,包括以下步驟建立被調試存儲設備的鏡像,所述鏡像的存儲單元與所述被調試存儲設備的存儲單元一一映射;對所述被調試存儲設備和所述鏡像進行讀寫操作;根據所述鏡像定位所述被調試存儲設備的缺陷。
2. 根據權利要求1所述的存儲設備硬件調試的方法,其特征在于,對所述被調試存儲 設備和所述鏡像進行讀寫操作包括在對所述被調試存儲設備進行寫操作時,對所述鏡像中的相應的存儲單元進行相同的 所述寫操作;在對所述被調試存儲設備中的存儲單元進行讀操作時,讀取所述鏡像中相應的存儲單 元的數據。
3. 根據權利要求2所述的存儲設備硬件調試的方法,其特征在于,根據所述鏡像定位 所述被調試存儲設備的缺陷的步驟包括將所述被調試存儲設備中讀取的數據與所述鏡像中相應的存儲單元進行對比,若不一 致則報錯。
4. 根據權利要求1所述的存儲設備硬件調試的方法,其特征在于,對所述被調試存儲 設備和所述鏡像進行寫操作還包括在所述鏡像中設置位圖,所述位圖指示所述被調試存儲設備的相應的存儲單元是否進 行過寫操作。
5. 根據權利要求4所述的存儲設備硬件調試的方法,其特征在于,對所述被調試存儲設備進行寫操作包括檢查所述被調試存儲設備相應的存儲單元所對應的位圖,如果所述位圖指示所述存儲 單元未進行過寫操作,則在所述鏡像中申請一個新的存儲單元,對所述新的存儲單元進行 所述寫操作,并將所述對應的位圖置位。
6. 根據權利要求4所述的存儲設備硬件調試的方法,其特征在于,對所述被調試存儲設備和所述鏡像進行讀操作包括所述中央處理器根據所述位圖判斷所述存儲設備的相應的存儲單元是否進行過寫操作;如果所述存儲單元進行過寫操作,則讀取所述存儲設備和所述鏡像中相對應的存儲單 元的數據。
7. 根據權利要求6所述的存儲設備硬件調試的方法,其特征在于,根據所述鏡像定位 所述被調試存儲設備的缺陷包括如果所述存儲單元未進行過寫操作,則報錯;如果所述存儲設備和所述鏡像中相對應的存儲單元的數據不一致,則報錯。
8. 根據權利要求1所述的存儲設備硬件調試的方法,其特征在于,還包括 記錄所述讀寫請求的序列,并將所述讀寫請求所對應的所述鏡像中的存儲單元的數據按時間備份。
9. 根據權利要求1所述的存儲設備硬件調試的方法,其特征在于,所述鏡像設置于虛 擬磁盤或物理磁盤上。
10. —種存儲設備硬件調試的系統,其特征在于,包括中央處理器、被調試存儲設備和 被調試存儲設備的鏡像,所述鏡像的存儲單元與所述被調試存儲設備的存儲單元一一映 射,其中,所述中央處理器用于對所述被調試存儲設備和所述鏡像進行讀寫操作,并根據所述鏡 像定位所述被調試存儲設備的缺陷。
全文摘要
本發明提出了一種存儲設備硬件調試的方法及系統。該方法包括以下步驟建立被調試存儲設備的鏡像,該鏡像的存儲單元與被調試存儲設備的存儲單元一一映射;對被調試存儲設備和鏡像進行讀寫操作;根據鏡像定位被調試存儲設備的缺陷。本發明所提出的存儲設備硬件調試的方法及系統,可以輔助高速設備的硬件調試,使調試難度降低,縮減硬件的開發周期。
文檔編號G11C29/00GK101697285SQ20091023529
公開日2010年4月21日 申請日期2009年9月30日 優先權日2009年9月30日
發明者歷軍, 聶華, 邵宗有, 鄭規 申請人:曙光信息產業(北京)有限公司;