專利名稱:虛擬層系統(tǒng)中的故障跟蹤的方法和設備的制作方法
技術領域:
本發(fā)明涉及錯誤跟蹤,及具體地說,涉及到在主機應用和裝置間具有虛擬層的環(huán)境中的錯誤跟蹤。
背景技術:
故障檢測和隔離的問題—跟蹤復雜系統(tǒng)中的問題直到它的根原因—是非常重要的。在一些環(huán)境中,沒有任何簡單的錯誤報告信息,但是在許多企業(yè)級的環(huán)境中,對收集和記錄所檢測到的故障投入許多精力。在容錯系統(tǒng)中,如此的信息對確保連續(xù)容錯是關鍵的。在缺乏有效的檢測和修復機制中,容錯系統(tǒng)將簡單地掩飾問題直到進一步錯誤引起故障。
當問題發(fā)生時,它的影響通常是很難預測的。例如,在存儲控制器子系統(tǒng)中,從磁盤驅動器到主機應用的路徑或“堆?!敝杏性S多組件。很難將實際檢測和記錄的錯誤與由應用或用戶主機系統(tǒng)所知道的效果聯(lián)系起來。
當在同一時間產(chǎn)生許多錯誤時,確定這些錯誤中的哪一個引起具體的應用失敗是特別困難的。強制地修復所有報告的錯誤可能使其工作,但是基于這些影響業(yè)務最重要的應用的錯誤的配置的優(yōu)先權來修復將是較有效的花費,以及對于系統(tǒng)用戶將有大的價值。
缺乏任何可跟蹤性也減少了以解決用戶或系統(tǒng)碰到的任何特殊問題而修復正確的錯誤的自信。
具有RAID陣列、諸如快速拷貝(Flash Copy)和高速緩沖存儲器(cache)的先進的現(xiàn)有系統(tǒng)已經(jīng)對自頂向下分析增加了相當大的混亂(在系統(tǒng)中跟蹤從應用到組件的錯誤)?;ù罅康臅r間和知識來選擇引起故障的根原因錯誤。
隨著虛擬層在許多系統(tǒng)中的引進,問題越來越嚴重。虛擬不僅間接的增加另外的層,而且在基本的現(xiàn)實子系統(tǒng)中,許多虛擬配置容許動態(tài)的移動數(shù)據(jù),甚至使系統(tǒng)已經(jīng)更難于來執(zhí)行精確的故障跟蹤。
例如,已經(jīng)從美國專利5,974,544得之,使用便宜的磁盤的冗余陣列的存儲系統(tǒng)中的RAID控制器層上維護邏輯缺陷列表。然而,使用與其它外圍裝置相連的如此的陣列多個的系統(tǒng),特別是當與其它外圍裝置相連的多個如此陣列形成存儲區(qū)網(wǎng)絡(SAN)的一部分時,引入具有諸如虛擬特征的軟件層,使得更難于從錯誤的外部表現(xiàn)跟蹤到錯誤的根原因。
因此,存在減輕這個問題的方法、系統(tǒng)或計算機程序的需要,最好以客戶花最少的金錢、處理資源和時間來減輕所述問題。
發(fā)明內容
因此,在第一方面,本發(fā)明提供一種用于將一個或多個主機系統(tǒng)的用戶應用界面上檢測的錯誤與虛擬層以下的堆棧層上的根原因錯誤聯(lián)系在一起的堆棧系統(tǒng)的方法,該方法包括下列步驟在用戶應用界面上檢測錯誤;在較低的堆棧層上識別相關的根原因錯誤;為所述的錯誤建立錯誤跟蹤條目;使出錯日志識別符與所述錯誤跟蹤條目相聯(lián)系;使所述組合的出錯日志識別符與錯誤跟蹤條目成為錯誤識別符,該錯誤識別符在所述堆棧系統(tǒng)中的多個主機系統(tǒng)之內是唯一的;當由于根原因錯誤導致所述服務必定失敗時,向一個或多個主機系統(tǒng)的用戶應用界面上的任何服務的請求者傳送錯誤識別符。
最好,使所述組合的出錯日志識別符與錯誤跟蹤條目成為所述堆棧系統(tǒng)中的多個主機系統(tǒng)之內的唯一錯誤識別符的步驟包括使錯誤跟蹤條目和出錯日志識別符與整數(shù)值組合以形成所述多個主機系統(tǒng)內的唯一錯誤識別符。
最好,在較低堆棧層上的所述根原因錯誤是在所述堆棧系統(tǒng)的外圍裝置中。
最好,所述外圍裝置是存儲裝置。
最好,堆棧系統(tǒng)包括存儲區(qū)網(wǎng)絡。
在第二方面,本發(fā)明提供一種用于將一個或多個主機系統(tǒng)的用戶應用界面上檢測的錯誤與虛擬層以下的堆棧層上的根原因錯誤聯(lián)系在一起的堆棧系統(tǒng)的設備,該設備包括錯誤檢測器,用于檢測用戶界面上的錯誤;診斷組件,用于識別較低堆棧層上的相關的根原因錯誤;跟蹤組件,用于建立所述錯誤的錯誤跟蹤條目;識別組件,用于使出錯日志識別器與所述錯誤跟蹤條目聯(lián)系在一起;廣域系統(tǒng)識別組件,用于使所述組合的出錯日志識別符與錯誤跟蹤條目成為錯誤識別符,該錯誤識別符在所述堆棧系統(tǒng)中的多個主機系統(tǒng)之內是唯一的。和通信組件,用于當由于根原因錯誤導致所述服務必定失敗時,向一個或多個主機系統(tǒng)的用戶應用界面上的任何服務的請求者傳送錯誤識別符。
最好,用于使所述組合的出錯日志識別符與錯誤跟蹤條目成為在所述堆棧系統(tǒng)中的多個主機系統(tǒng)之內的唯一錯誤識別符的廣域系統(tǒng)識別組件包括使錯誤跟蹤條目和出錯日志識別符與整數(shù)值組合以形成所述多個主機系統(tǒng)內的唯一錯誤識別符的組件。
最好,在較低堆棧層上的所述根原因錯誤是在所述堆棧系統(tǒng)的外圍裝置中。
最好,所述外圍裝置是存儲裝置。
最好,堆棧系統(tǒng)包括存儲區(qū)網(wǎng)絡。
在第三方面,本發(fā)明進一步提供一種確實包含在存儲媒介中的計算機程序產(chǎn)品,當其裝入計算機系統(tǒng)且運行時,引起所述計算機系統(tǒng)使一個或多個主機系統(tǒng)的用戶應用界面上檢測的錯誤與虛擬層下的堆棧層上的根原因錯誤聯(lián)系在一起,所述計算機程序產(chǎn)品包括計算機程序代碼裝置,其用于檢測在用戶界面上的錯誤;識別較低堆棧層上的相關的根原因錯誤;為所述錯誤建立錯誤跟蹤條目;將錯誤跟蹤條目與出錯日志識別符聯(lián)系在一起;使所述組合的出錯日志識別符與所述錯誤跟蹤條目成為在所述堆棧系統(tǒng)中的多個主機系統(tǒng)之內的唯一錯誤識別符;當由于根原因錯誤導致所述服務必定失敗時,向一個或多個主機系統(tǒng)的用戶應用界面上的任何服務的請求者傳送錯誤識別符。
使用唯一錯誤識別符的根原因信息標記錯誤的虛擬存儲子系統(tǒng)中的故障隔離的本發(fā)明優(yōu)選實施例。對于單個故障,這個提供了能夠快速地診斷系統(tǒng)中由單個故障引起的多個錯誤的優(yōu)勢。在另外的高的可獲得的系統(tǒng)中,這個加速了診斷過程和減少了發(fā)生故障的時間
參考附圖,本發(fā)明的優(yōu)選實施例將僅用示例的方式來描述,其中圖1示出了示例的虛擬子系統(tǒng)組件堆棧;圖2示出了根據(jù)本發(fā)明優(yōu)選實施例的出錯日志的示例。
具體實施例方式
本發(fā)明的優(yōu)選實施例以采用諸如已存在于許多企業(yè)級的環(huán)境中的傳統(tǒng)的出錯日志(170)開始。該出錯日志用來記錄由系統(tǒng)中的組件檢測到的故障。有一些典型的連接外部世界的組件,例如,網(wǎng)絡和驅動器層,它們首先檢測,然后處理該錯誤。
唯一識別符(120)被加到現(xiàn)有的傳統(tǒng)的出錯日志條目,這可以通過對每個條目使用大的(如,32比特)整數(shù)來實現(xiàn)。當由日志的識別符限定復制時,識別以后可能引起I/O服務或其它動作失敗的具體事件。該出錯日志包含詳述所檢測的故障(220)的補充信息,足以容許用戶或服務個人來修復根原因故障。
然后,唯一識別符被用作對任何由于錯誤必定導致失敗的服務請求(如,I/O請求)的響應的一部分。該請求的請求者的請求在收到針對該請求失敗的響應時判斷它自己的服務或請求的哪一個必定是失敗的。依次,請求者破壞自己的請求,再重新引用它最初收到的、識別這些失敗的原因的唯一識別符。
這樣,引起失敗的事件的識別通過失敗請求鏈,直到它到達每個請求的始發(fā)者。然后該始發(fā)者有要求為每個檢測的失敗來精確地判斷哪個錯誤事件必須被修復、分派修復過程和確保最關鍵的應用首先被修復的信息,此外,對需矯正的錯誤已被修復、避免時間的拖延和不成功恢復的相關花費有較高的自信度。
在本發(fā)明的最優(yōu)選的實施例中,傳送請求的組件是軟件堆棧(100)中的層,執(zhí)行諸如管理RAID控制器(110)、虛擬(120)、快速拷貝(130)、高速緩沖存儲器(140)、遠端拷貝(150)和連接到主機系統(tǒng)(160)的功能。本發(fā)明的優(yōu)選實施例的方法容許經(jīng)由該系統(tǒng)向堆棧以下直到存儲控制器的邊緣可跟蹤。
作為最初的失敗事件的結果,軟件堆棧中的每個組件可能自己發(fā)生錯誤。例如,來自應用服務(190)的寫操作可以作為故障被返回到SCSI后端,即,寫入因物理存儲器的一些原因而失敗。這產(chǎn)生被記錄的錯誤和被返回到發(fā)生錯誤的組件的唯一識別符。該失敗的寫入隨同唯一識別(210)符返回到上一層。它們返回直到堆棧。在每一層上寫入可以在那個組件內導致失敗,例如,如果快速拷貝對照寫入失敗的磁盤是有效的,該快速拷貝操作將暫停執(zhí)行,并發(fā)生錯誤。這個新錯誤本身被分配唯一識別符,它用唯一識別符或根原因(230)來標記,由下面的組件傳遞。同樣的情況可以在軟件堆棧中的每一層中發(fā)生。最終,最初的錯誤作為SCSI感測數(shù)據(jù)的一部分返回到要求寫入的應用服務器。
然后,用戶可以將失敗的寫入操作與不能寫入的物理磁盤,以及不在軟件堆棧內的操作和功能相聯(lián)系,如上面所描述的快速拷貝。
應該理解上述方法將典型地以運行于一個或多個處理器(未顯示)上的軟件實施,并且該軟件可以作為攜帶在任何諸如計算機的磁盤和光盤這樣的合適的數(shù)據(jù)載體(也未顯示)的計算機程序單元而被提供。同樣地,數(shù)據(jù)的傳輸信道可以包括所有描述的存儲媒介以及信號運送媒介,例如有線或無線信號媒介。
本發(fā)明可以合適地被具體表達為計算機所用的計算機程序產(chǎn)品。這樣一種實現(xiàn)可以包括固定在諸如計算機可讀媒介磁盤、CD-ROM、ROM或硬盤的有形的媒介上的一系列計算機可讀指令,或者通過調制解調器或其它接口裝置,在包括但不限于光或模擬的通信線的有形的媒介上或包括但不限于微波、紅外線或其它傳輸技術的無形的無線技術上可傳輸?shù)接嬎銠C系統(tǒng)的一系列計算機可讀指令。這里,該計算機可讀指令系列實施先前所描述的全部或部的功能。
本領域熟練技術人員應該理解,如此的計算機可讀指令能夠以為許多計算機結構和操作系統(tǒng)所用的許多程序語言來編寫。而且,如此的指令可以用目前或未來的包括但不限于半導體、磁的或光的任何存儲器技術來存儲,或者如此的指令可以用目前或未來的包括但不限于光、紅外線或其它傳輸技術的任何通信技術來傳輸。期望如此的帶有打印的或電子的文檔的計算機程序產(chǎn)品可以作為可移動的媒介被分發(fā),例如,用計算機系統(tǒng)預裝載壓縮包裹(shrink-wrapped)的軟件,例如,裝在系統(tǒng)ROM或固定的磁盤上,或從服務器或網(wǎng)絡上的電子公告牌分發(fā),例如,通過因特網(wǎng)或萬維網(wǎng)傳送。
本領域普通的技術人員可知,對上述實施例做出各種各樣的修改是顯而易見的。
權利要求
1.一種在堆棧系統(tǒng)中將一個或多個主機系統(tǒng)的用戶應用界面上檢測的錯誤與虛擬層下的堆棧層上的根原因錯誤聯(lián)系在一起的方法,包括以下步驟在用戶應用界面上檢測錯誤;在較低的堆棧層上識別相關的根原因錯誤;為所述的錯誤建立錯誤跟蹤條目;將出錯日志識別符與所述錯誤跟蹤條目聯(lián)系在一起;使所述組合出錯日志識別符與錯誤跟蹤條目成為錯誤識別符,該錯誤識別符在所述堆棧系統(tǒng)中的多個主機系統(tǒng)之內是唯一的;和當由于根原因錯誤導致所述服務必定失敗時,向一個或多個主機系統(tǒng)的用戶應用界面上的任何服務的請求者傳送錯誤識別符。
2.如權利要求1的所述方法,其中使所述組合的出錯日志識別符與所述錯誤跟蹤條目成為在所述堆棧系統(tǒng)中的多個主機系統(tǒng)之內的唯一錯誤識別符的步驟包括使錯誤跟蹤條目和出錯日志識別符與整數(shù)值組合以形成在所述多個主機系統(tǒng)內是唯一的錯誤識別符。
3.如權利要求1的所述方法,其中在較低的堆棧層上的根原因錯誤是在所述堆棧系統(tǒng)的外圍裝置中。
4.如權利要求3的所述方法,其中所述外圍裝置是存儲裝置。
5.如權利要求1的所述方法,其中所述堆棧系統(tǒng)包括存儲區(qū)網(wǎng)絡。
6.一種用于將一個或多個主機系統(tǒng)的用戶應用界面上檢測的錯誤與虛擬層以下的堆棧層上的根原因錯誤聯(lián)系在一起的設備包括錯誤檢測器,用于檢測用戶界面上的錯誤;診斷組件,用于識別較低堆棧層上的相關的根原因錯誤;跟蹤組件,用于建立所述錯誤的錯誤跟蹤條目;識別組件,用于將出錯日志識別器與所述錯誤跟蹤條目聯(lián)系在一起;廣域系統(tǒng)識別組件,使所述組合的出錯日志識別符與錯誤跟蹤條目成為錯誤識別符,該錯誤識別符在所述堆棧系統(tǒng)中的多個主機系統(tǒng)之內是唯一的;和通信組件,用于當由于根原因錯誤導致所述服務必定失敗時,向一個或多個主機系統(tǒng)的用戶應用界面上的任何服務的請求者傳送錯誤識別符。
7.如權利要求6的所述設備,其中廣域系統(tǒng)識別組件包括用于將錯誤跟蹤條目和出錯日志識別符與整數(shù)值組合以形成在所述多個主機系統(tǒng)內是唯一的錯誤識別符的組件。
8.如權利要求6的所述設備,其中在較低的堆棧層上的根原因錯誤是在所述堆棧系統(tǒng)的外圍裝置中。
9.如權利要求6的所述設備,其中所述外圍裝置是存儲裝置。
10.如權利要求6的所述設備,其中所述堆棧系統(tǒng)包括存儲區(qū)網(wǎng)絡。
11.一種確實包含在存儲媒介中的計算機程序產(chǎn)品,當其裝入計算機系統(tǒng)且運行時,引起所述計算機系統(tǒng)使一個或多個主機系統(tǒng)的用戶應用界面上檢測的錯誤與虛擬層下的堆棧層上的根原因錯誤聯(lián)系在一起,所述計算機程序產(chǎn)品包括計算機程序代碼裝置,其用于檢測在用戶界面上的錯誤;識別較低堆棧層上的相關的根原因錯誤;為所述錯誤建立錯誤跟蹤條目;將錯誤跟蹤條目與出錯日志識別符聯(lián)系在一起;使所述組合的出錯日志識別符與所述錯誤跟蹤條目成為在所述堆棧系統(tǒng)中的多個主機系統(tǒng)之內的唯一錯誤識別符;和當由于根原因錯誤導致所述服務必定失敗時,向一個或多個主機系統(tǒng)的用戶應用界面上的任何服務的請求者傳送錯誤識別符。
全文摘要
在堆棧系統(tǒng)中,通過檢測用戶應用界面上的錯誤,將一個或多個主機系統(tǒng)的用戶應用界面上檢測的錯誤與虛擬層以下的堆棧層上的根原因錯誤聯(lián)系在一起;識別較低堆棧層上的相關的根原因錯誤(root cause error);為錯誤建立錯誤跟蹤條目;將出錯日志識別符與錯誤跟蹤條目聯(lián)系在一起;使組合出錯日志識別符與錯誤跟蹤條目成為錯誤識別符,該錯誤識別符在所述堆棧系統(tǒng)中的多個主機系統(tǒng)之內是唯一的;以及當由于根原因錯誤導致所述服務必定失敗時,向一個或多個主機系統(tǒng)的用戶應用界面上的任何服務的請求者傳送錯誤識別符。
文檔編號G06F13/00GK1503130SQ0314360
公開日2004年6月9日 申請日期2003年7月25日 優(yōu)先權日2002年11月22日
發(fā)明者彼得·J·迪肯, 卡洛斯·F·芬特, 威廉·J·斯凱爾斯, 巴里·D·懷特, F 芬特, D 懷特, J 斯凱爾斯, 彼得 J 迪肯 申請人:國際商業(yè)機器公司