專利名稱:一種對(duì)scsi感測(cè)數(shù)據(jù)進(jìn)行處理的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)通信技術(shù),特別涉及一種對(duì)小型計(jì)算機(jī)系統(tǒng)接口(SCSI)感測(cè)數(shù)據(jù)進(jìn)行處理的方法和裝置。
背景技術(shù):
小型計(jì)算機(jī)系統(tǒng)接口(SCSI,SmallComputer System Interface)作為一種面向企業(yè)級(jí)應(yīng)用的高速且高效率的存儲(chǔ)總線協(xié)議,提供了詳盡的錯(cuò)誤狀態(tài)指示機(jī)制,SCSI總線協(xié)議中定義了一種隨命令響應(yīng)返回的錯(cuò)誤信息碼,用于指示命令失敗的原因或硬盤所處的異常狀態(tài),該錯(cuò)誤信息碼為SCSI感測(cè)數(shù)據(jù),其定義了接近200種特異性錯(cuò)誤或異常狀態(tài)信息。例如,當(dāng)硬盤設(shè)備接收到諸如管理控制類或訪問類的I/O命令時(shí),如果該I/O命令被硬盤設(shè)備正常處理,則硬盤設(shè)備會(huì)返回包含成功信息的命令響應(yīng),如果該硬盤設(shè)備出錯(cuò)使得命令無法正常處理,則會(huì)返回包含SCSI感測(cè)數(shù)據(jù)的命令響應(yīng)。通常,對(duì)感測(cè)數(shù)據(jù)的處理是在SCSI驅(qū)動(dòng)程序中完成的。如圖1所示,SCSI驅(qū)動(dòng)程序是一種分層的架構(gòu),共分為三層較高層、中間層和較低層,其中對(duì)感測(cè)數(shù)據(jù)的處理在較高層和中間層實(shí)現(xiàn)?,F(xiàn)有對(duì)感測(cè)數(shù)據(jù)的處理主要包括以下幾種第一種處理SCSI驅(qū)動(dòng)程序接收到來自硬盤設(shè)備的SCSI感測(cè)數(shù)據(jù)后,直接通知上層應(yīng)用程序I/O命令沒有成功執(zhí)行。第二種處理SCSI驅(qū)動(dòng)程序接收到來自硬盤設(shè)備的SCSI感測(cè)數(shù)據(jù)后,立即重新向該硬盤設(shè)備發(fā)送I/O命令。然而,上述現(xiàn)有的處理方式中,第一種方式?jīng)]有采用任何容錯(cuò)機(jī)制,而第二種方式簡(jiǎn)單地采用重新發(fā)送I/O命令的方式看似簡(jiǎn)便高效,但如果硬盤設(shè)備的異常是持久性或者需要額外干預(yù)的,那么不斷重新發(fā)送I/O命令并不能解決硬盤設(shè)備的異常,還容易造成I/O 命令超時(shí)而將整個(gè)存儲(chǔ)系統(tǒng)掛起或陷于阻塞狀態(tài),嚴(yán)重時(shí)甚至造成存儲(chǔ)系統(tǒng)崩潰。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種對(duì)SCSI感測(cè)數(shù)據(jù)進(jìn)行處理的方法和裝置,以便于有效地提高存儲(chǔ)系統(tǒng)的容錯(cuò)性。一種對(duì)SCSI感測(cè)數(shù)據(jù)進(jìn)行處理的方法,應(yīng)用于包含SCSI驅(qū)動(dòng)單元和硬盤設(shè)備的存儲(chǔ)系統(tǒng);其特征在于,所述SCSI驅(qū)動(dòng)單元收到所述硬盤設(shè)備發(fā)送的包含感測(cè)數(shù)據(jù)的命令響應(yīng)后,確定所述硬盤設(shè)備出現(xiàn)異常,執(zhí)行以下異?;謴?fù)處理A、通過發(fā)送下電命令來切斷所述硬盤設(shè)備的供電,同時(shí)啟動(dòng)定時(shí)器;B、在所述定時(shí)器到時(shí)后,通過發(fā)送上電命令來恢復(fù)所述硬盤設(shè)備的供電。一種對(duì)SCSI感測(cè)數(shù)據(jù)進(jìn)行處理的裝置,應(yīng)用于包含SCSI驅(qū)動(dòng)單元和硬盤設(shè)備的存儲(chǔ)系統(tǒng);其特征在于,該裝置包括異常確定單元、異?;謴?fù)單元和定時(shí)器;所述異常確定單元,用于在所述SCSI驅(qū)動(dòng)單元收到所述硬盤設(shè)備發(fā)送的包含感測(cè)數(shù)據(jù)的命令響應(yīng)后,確定所述硬盤設(shè)備出現(xiàn)異常,向所述異常恢復(fù)單元發(fā)送異?;謴?fù)通知;所述異?;謴?fù)單元,用于接收到所述異?;謴?fù)通知后,執(zhí)行以下異?;謴?fù)處理通過發(fā)送下電命令來切斷所述硬盤設(shè)備的供電,同時(shí)啟動(dòng)所述定時(shí)器;在所述定時(shí)器到時(shí)后, 通過發(fā)送上電命令來恢復(fù)所述硬盤設(shè)備的供電。由以上技術(shù)方案可以看出,本發(fā)明中,SCSI驅(qū)動(dòng)單元在收到硬盤設(shè)備發(fā)送的包含感測(cè)數(shù)據(jù)的命令響應(yīng)后,通過將硬盤設(shè)備下電后延時(shí)上電的方式,對(duì)硬盤設(shè)備進(jìn)行異?;謴?fù),使得硬盤設(shè)備能夠在異?;謴?fù)后及時(shí)處理I/O命令,避免因I/O命令超時(shí)而將整個(gè)存儲(chǔ)系統(tǒng)掛起或陷于阻塞狀態(tài),從而有效地提高存儲(chǔ)系統(tǒng)的容錯(cuò)性。
圖1為SCSI驅(qū)動(dòng)程序分層架構(gòu)示意圖
圖2為本發(fā)明實(shí)施例一提供的方法流程圖3為本發(fā)明實(shí)施例二提供的方法流程圖4為本發(fā)明實(shí)施例三提供的方法流程圖5為本發(fā)明實(shí)施例四提供的方法流程圖6為本發(fā)明實(shí)施例五提供的方法流程圖7為本發(fā)明提供的裝置結(jié)構(gòu)示意圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述。本發(fā)明提供的方法主要包括收到硬盤設(shè)備發(fā)送的包含感測(cè)數(shù)據(jù)的命令響應(yīng)后, 通過發(fā)送下電命令來切斷該硬盤設(shè)備的供電同時(shí)啟動(dòng)定時(shí)器,在該定時(shí)器到時(shí)后,通過發(fā)送上電命令來恢復(fù)該硬盤設(shè)備的供電。也就是說,在收到來自硬盤設(shè)備的感測(cè)數(shù)據(jù)后,確定該硬盤設(shè)備出現(xiàn)異常,通過觸發(fā)對(duì)該硬盤設(shè)備下電,并延時(shí)一段時(shí)間后再上電的方式,使其恢復(fù)到正常狀態(tài)。下面通過具體實(shí)施例對(duì)上述方法進(jìn)行詳細(xì)描述。實(shí)施例一、如圖2所示,該方法可以具體包括以下步驟步驟201 =SCSI驅(qū)動(dòng)程序收到硬盤設(shè)備發(fā)送的包含感測(cè)數(shù)據(jù)的命令響應(yīng)。步驟202 判斷該硬盤設(shè)備是否在存儲(chǔ)系統(tǒng)的拓?fù)渲?,如果是,?zhí)行步驟203 ;否則,結(jié)束對(duì)該感測(cè)數(shù)據(jù)的容錯(cuò)處理流程。在存儲(chǔ)系統(tǒng)中會(huì)針對(duì)存儲(chǔ)系統(tǒng)的拓?fù)渖梢粋€(gè)邏輯視圖,當(dāng)硬盤設(shè)備被成功添加到存儲(chǔ)系統(tǒng)中后,就會(huì)存在于該邏輯視圖中,因此,本步驟通過查詢?cè)撚脖P設(shè)備是否存在于存儲(chǔ)系統(tǒng)的邏輯視圖中便可以獲知是否在存儲(chǔ)系統(tǒng)的拓?fù)渲?。步驟203 判斷該硬盤設(shè)備是否正在進(jìn)行異常恢復(fù)處理,如果是,結(jié)束對(duì)該感測(cè)數(shù)據(jù)的容錯(cuò)處理流程;否則,執(zhí)行步驟204。本步驟所涉及的異?;謴?fù)處理實(shí)際上就是下電后延遲上電的過程。步驟204 在硬盤設(shè)備對(duì)應(yīng)的錯(cuò)誤節(jié)點(diǎn)中,將該硬盤設(shè)備的異常計(jì)數(shù)值加1。為了對(duì)各硬盤設(shè)備的異常進(jìn)行管理,通常首次發(fā)現(xiàn)硬盤設(shè)備的異常時(shí),例如首次接收到硬盤設(shè)備發(fā)送的包含感測(cè)數(shù)據(jù)的命令響應(yīng)時(shí),會(huì)針對(duì)該硬盤設(shè)備創(chuàng)建錯(cuò)誤節(jié)點(diǎn),在錯(cuò)誤節(jié)點(diǎn)中可以包含硬盤設(shè)備的異常計(jì)數(shù)值(初始建立時(shí)為0)、異常事件信息等。步驟205 判斷該硬盤設(shè)備的異常計(jì)數(shù)值是否超過預(yù)設(shè)的異常計(jì)數(shù)閾值,如果否, 執(zhí)行步驟206 ;如果是,執(zhí)行步驟209。在某些情況下,對(duì)硬盤設(shè)備進(jìn)行一次下電后延遲上電的處理后,硬盤設(shè)備仍無法恢復(fù)到正常狀態(tài),SCSI驅(qū)動(dòng)程序可以在下次收到該硬盤設(shè)備的感測(cè)數(shù)據(jù)后執(zhí)行同樣操作。 但是,有些時(shí)候硬盤設(shè)備的異常在經(jīng)過多次的下電后延遲上電的處理后仍無法恢復(fù)到正常狀態(tài),那么就可以徹底放棄該硬盤設(shè)備的恢復(fù),以避免長時(shí)間的延時(shí)。步驟206:向上層的獨(dú)立硬盤冗余陣列(RAID)發(fā)送恢復(fù)處理容忍事件,以避免 RAID將硬盤設(shè)備移除。在有些時(shí)候,上層的RAID在長時(shí)間無法收到命令響應(yīng)時(shí),會(huì)將響應(yīng)的硬盤設(shè)備從陣列中移除,為了避免在對(duì)硬盤設(shè)備進(jìn)行異常恢復(fù)的過程中發(fā)生這一情況,可以向RAID發(fā)送恢復(fù)處理容忍事件,RAID收到該事件后不會(huì)將該硬盤設(shè)備從陣列中移除。步驟207 向硬盤控制單元發(fā)送針對(duì)上述硬盤設(shè)備的下電命令,同時(shí)啟動(dòng)定時(shí)器。硬盤控制單元負(fù)責(zé)對(duì)硬盤框中所有硬盤設(shè)備的控制和管理,在收到針對(duì)上述硬盤設(shè)備的下電命令后,會(huì)切斷對(duì)該硬盤設(shè)備的供電,在步驟208中收到針對(duì)上述硬盤設(shè)備的上電命令后,會(huì)恢復(fù)對(duì)該硬盤設(shè)備的供電。步驟208 定時(shí)器超時(shí)后,向硬盤控制單元發(fā)送針對(duì)上述硬盤設(shè)備的上電命令,結(jié)束對(duì)當(dāng)前感測(cè)數(shù)據(jù)的容錯(cuò)處理流程。步驟209 向RAID發(fā)送恢復(fù)處理失敗事件,等待設(shè)定時(shí)長后,刪除硬盤設(shè)備對(duì)應(yīng)的錯(cuò)誤節(jié)點(diǎn)。在硬盤設(shè)備的異常計(jì)數(shù)值超過預(yù)設(shè)的異常計(jì)數(shù)閾值時(shí),可以啟動(dòng)一個(gè)定時(shí)器,待該定時(shí)器超時(shí)后,刪除硬盤設(shè)備對(duì)應(yīng)的錯(cuò)誤節(jié)點(diǎn)。其中,通過啟動(dòng)定時(shí)器的方式等待設(shè)定時(shí)長后再刪除硬盤設(shè)備對(duì)應(yīng)的錯(cuò)誤節(jié)點(diǎn)是為了給RAID提供一段時(shí)間來移除該硬盤設(shè)備。一旦硬盤設(shè)備被移除,該硬盤設(shè)備的異常信息變不需要保存,因此刪除該硬盤設(shè)備對(duì)應(yīng)的錯(cuò)誤節(jié)點(diǎn)。RAID收到該恢復(fù)處理失敗事件后,可以將該硬盤設(shè)備從存儲(chǔ)設(shè)備中移除。至此實(shí)施例一所示流程結(jié)束。在該實(shí)施例一中,可以針對(duì)任何感測(cè)數(shù)據(jù)均執(zhí)行圖2流程中所示的使硬盤設(shè)備下電后延遲上電的恢復(fù)方式,較優(yōu)地,也可以針對(duì)表明硬盤設(shè)備發(fā)生無法恢復(fù)的異常的感測(cè)數(shù)據(jù),對(duì)硬盤設(shè)備執(zhí)行永久下電的處理方式,例如,當(dāng)感測(cè)數(shù)據(jù)表明硬盤設(shè)備發(fā)生硬件故障等。也就是說,在圖2的步驟202之前,還可以進(jìn)一步包含一個(gè)判斷操作判斷感測(cè)數(shù)據(jù)是否表明硬盤設(shè)備發(fā)生無法恢復(fù)的異常,如果否,繼續(xù)執(zhí)行步驟202 ;如果是,則按照下述實(shí)施例二中所示的流程執(zhí)行。實(shí)施例二、如圖3所示,在SCSI驅(qū)動(dòng)程序收到硬盤設(shè)備發(fā)送的感測(cè)數(shù)據(jù),且該感測(cè)數(shù)據(jù)表明該硬盤設(shè)備發(fā)生無法恢復(fù)的異常時(shí),執(zhí)行以下步驟步驟301 判斷該硬盤設(shè)備是否在存儲(chǔ)系統(tǒng)的拓?fù)渲校绻?,?zhí)行步驟302 ;否則,結(jié)束對(duì)該感測(cè)數(shù)據(jù)的容錯(cuò)處理流程。步驟302 判斷該硬盤設(shè)備是否正在進(jìn)行永久下電處理,如果是,結(jié)束對(duì)該感測(cè)數(shù)據(jù)的容錯(cuò)處理流程;否則,執(zhí)行步驟303。步驟303 向硬盤控制單元發(fā)送針對(duì)上述硬盤設(shè)備的下電命令,切斷對(duì)該硬盤設(shè)備的供電。至此實(shí)施例二所示流程結(jié)束??梢栽谌魏螆?chǎng)景下都按照實(shí)施例一和實(shí)施例二所示的流程對(duì)感測(cè)數(shù)據(jù)進(jìn)行容錯(cuò)處理,但更優(yōu)地,可以對(duì)該感測(cè)數(shù)據(jù)所發(fā)生的場(chǎng)景進(jìn)行具體區(qū)分,針對(duì)不同的場(chǎng)景執(zhí)行與該場(chǎng)景相適應(yīng)的容錯(cuò)處理方式。可以對(duì)命令響應(yīng)進(jìn)行擴(kuò)展,使該命令響應(yīng)除了包含感測(cè)數(shù)據(jù)之外,還包含感測(cè)數(shù)據(jù)所發(fā)生的場(chǎng)景信息。其中,可以將I/O命令類型和硬盤設(shè)備所處的狀態(tài)作為場(chǎng)景信息的兩個(gè)基本量,并分別通過命令響應(yīng)中兩個(gè)擴(kuò)展字段來攜帶。如果存在m個(gè)I/O命令類型和 η個(gè)硬盤設(shè)備所處的狀態(tài),則共存在mXn類場(chǎng)景。該實(shí)施例中假設(shè)I/O命令類型分為管理控制類命令和I/O訪問類命令,其中I/O訪問類命令又具體包含讀命令和寫命令,硬盤設(shè)備所處的狀態(tài)分為設(shè)備添加狀態(tài)和靜態(tài)訪問狀態(tài),則可以組合出如表1所示的六類場(chǎng)景。表 權(quán)利要求
1.一種對(duì)小型計(jì)算機(jī)系統(tǒng)接口 SCSI感測(cè)數(shù)據(jù)進(jìn)行處理的方法,應(yīng)用于包含SCSI驅(qū)動(dòng)單元和硬盤設(shè)備的存儲(chǔ)系統(tǒng);其特征在于,所述SCSI驅(qū)動(dòng)單元收到所述硬盤設(shè)備發(fā)送的包含感測(cè)數(shù)據(jù)的命令響應(yīng)后,確定所述硬盤設(shè)備出現(xiàn)異常,執(zhí)行以下異?;謴?fù)處理A、通過發(fā)送下電命令來切斷所述硬盤設(shè)備的供電,同時(shí)啟動(dòng)定時(shí)器;B、在所述定時(shí)器到時(shí)后,通過發(fā)送上電命令來恢復(fù)所述硬盤設(shè)備的供電。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟A中在通過發(fā)送下電命令來切斷所述硬盤設(shè)備的供電之前還包括Al、在所述硬盤設(shè)備對(duì)應(yīng)的錯(cuò)誤節(jié)點(diǎn)中,將所述硬盤設(shè)備的異常計(jì)數(shù)值加1 ;A2、判斷所述硬盤設(shè)備的異常計(jì)數(shù)值是否超過預(yù)設(shè)的異常計(jì)數(shù)閾值,如果否,向所述存儲(chǔ)系統(tǒng)的獨(dú)立硬盤冗余陣列RAID發(fā)送恢復(fù)處理容忍事件以避免所述RAID將所述硬盤設(shè)備移除,繼續(xù)執(zhí)行所述通過發(fā)送下電命令來切斷所述硬盤設(shè)備的供電;否則,執(zhí)行步驟A3 ;A3、向所述RAID發(fā)送恢復(fù)處理失敗事件,等待設(shè)定時(shí)長后,刪除所述硬盤設(shè)備對(duì)應(yīng)的錯(cuò)誤節(jié)點(diǎn)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,步驟A中在所述步驟Al之前還包括AO、判斷所述硬盤設(shè)備是否正在進(jìn)行所述異?;謴?fù)處理,如果是,結(jié)束對(duì)所述感測(cè)數(shù)據(jù)的容錯(cuò)處理流程;否則,繼續(xù)執(zhí)行所述步驟Al。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,步驟A中在所述步驟AO之前還包括所述硬盤設(shè)備是否在所述存儲(chǔ)系統(tǒng)的拓?fù)渲?,如果是,繼續(xù)執(zhí)行所述步驟AO ;否則,結(jié)束對(duì)所述感測(cè)數(shù)據(jù)的容錯(cuò)處理。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,確定所述硬盤設(shè)備出現(xiàn)異常后,在執(zhí)行所述異?;謴?fù)處理之前還包括判斷所述感測(cè)數(shù)據(jù)是否表明所述硬盤設(shè)備發(fā)生無法恢復(fù)的異常,如果否,繼續(xù)執(zhí)行所述異?;謴?fù)處理;如果是,執(zhí)行以下永久下電處理C、通過發(fā)送下電命令切斷對(duì)所述硬盤設(shè)備的供電,結(jié)束對(duì)所述感測(cè)數(shù)據(jù)的容錯(cuò)處理。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,在步驟C之前還包括Cl、判斷所述硬盤設(shè)備是否在所述存儲(chǔ)系統(tǒng)的拓?fù)渲校绻?,?zhí)行步驟C2 ;否則,結(jié)束對(duì)所述感測(cè)數(shù)據(jù)的容錯(cuò)處理;C2、判斷所述硬盤設(shè)備是否正在進(jìn)行所述永久下電處理,如果是,結(jié)束對(duì)所述感測(cè)數(shù)據(jù)的容錯(cuò)處理;否則,繼續(xù)執(zhí)行所述步驟C。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,確定所述硬盤設(shè)備出現(xiàn)異常后,在執(zhí)行所述異?;謴?fù)處理之前還包括解析所述命令響應(yīng)中包含的場(chǎng)景信息,按照預(yù)先設(shè)定的場(chǎng)景信息與容錯(cuò)處理方式的對(duì)應(yīng)關(guān)系,確定場(chǎng)景信息對(duì)應(yīng)的容錯(cuò)處理方式,按照確定的容錯(cuò)處理方式執(zhí)行容錯(cuò)處理;所述對(duì)應(yīng)關(guān)系中至少存在一種容錯(cuò)處理方式為所述異?;謴?fù)處理, 所述場(chǎng)景信息包含所述命令響應(yīng)對(duì)應(yīng)的I/O命令的類型以及硬盤設(shè)備所處的狀態(tài)。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,按照預(yù)先設(shè)定的場(chǎng)景信息與容錯(cuò)處理方式的對(duì)應(yīng)關(guān)系,確定場(chǎng)景信息對(duì)應(yīng)的容錯(cuò)處理方式,按照確定的容錯(cuò)處理方式執(zhí)行容錯(cuò)處理具體包括如果所述場(chǎng)景信息為所述I/O命令的類型為管理控制類命令且所述硬盤設(shè)備所處的狀態(tài)為靜態(tài)訪問狀態(tài),則執(zhí)行以下步驟;Dl、判斷所述管理控制類命令是否影響硬盤設(shè)備被正常訪問,如果是,執(zhí)行所述異?;謴?fù)處理;否則執(zhí)行步驟D2;D2、判斷針對(duì)所述硬盤設(shè)備的重試次數(shù)是否達(dá)到預(yù)設(shè)的重試次數(shù)閾值,如果是,執(zhí)行步驟D3;否則,執(zhí)行步驟D4;D3、向用戶提示所述硬盤設(shè)備的錯(cuò)誤信息,將針對(duì)所述硬盤設(shè)備的重試次數(shù)清零,結(jié)束對(duì)所述感測(cè)數(shù)據(jù)的容錯(cuò)處理;D4、重新向所述硬盤設(shè)備發(fā)送所述管理控制類命令。
9.根據(jù)權(quán)利要求7所述的方法,其特征在于,按照預(yù)先設(shè)定的場(chǎng)景信息與容錯(cuò)處理方式的對(duì)應(yīng)關(guān)系,確定場(chǎng)景信息對(duì)應(yīng)的容錯(cuò)處理方式,按照確定的容錯(cuò)處理方式執(zhí)行容錯(cuò)處理具體包括如果所述場(chǎng)景信息為所述I/O命令的類型為讀命令且所述硬盤設(shè)備所處的狀態(tài)為靜態(tài)訪問狀態(tài),則執(zhí)行以下步驟;E1、通知所述存儲(chǔ)系統(tǒng)中的RAID對(duì)所述硬盤設(shè)備進(jìn)行寫修復(fù)處理;E2、判斷所述寫修復(fù)處理是否成功,如果是,執(zhí)行步驟E3 ;否則,執(zhí)行所述異?;謴?fù)處理;E3、重新向所述硬盤設(shè)備發(fā)送所述讀命令。
10.根據(jù)權(quán)利要求7所述的方法,其特征在于,按照預(yù)先設(shè)定的場(chǎng)景信息與容錯(cuò)處理方式的對(duì)應(yīng)關(guān)系,確定場(chǎng)景信息對(duì)應(yīng)的容錯(cuò)處理方式,按照確定的容錯(cuò)處理方式執(zhí)行容錯(cuò)處理具體包括如果所述場(chǎng)景信息為所述I/O命令的類型為管理控制類命令且所述硬盤設(shè)備所處的狀態(tài)為設(shè)備添加狀態(tài),則執(zhí)行以下步驟;Fl、暫停對(duì)所述感測(cè)數(shù)據(jù)的容錯(cuò)處理;F2、待所述硬盤設(shè)備完成設(shè)備添加后,恢復(fù)對(duì)感測(cè)數(shù)據(jù)的容錯(cuò)處理。
11.根據(jù)權(quán)利要求7所述的方法,其特征在于,按照預(yù)先設(shè)定的場(chǎng)景信息與容錯(cuò)處理方式的對(duì)應(yīng)關(guān)系,確定場(chǎng)景信息對(duì)應(yīng)的容錯(cuò)處理方式,按照確定的容錯(cuò)處理方式執(zhí)行容錯(cuò)處理具體包括如果所述場(chǎng)景信息為所述I/O命令的類型為寫命令且所述硬盤設(shè)備所處的狀態(tài)為靜態(tài)訪問狀態(tài),或者,所述I/O命令的類型為讀命令且所述硬盤設(shè)備所處的狀態(tài)為設(shè)備添加狀態(tài),或者,所述I/O命令的類型為寫命令且所述硬盤設(shè)備所處的狀態(tài)為設(shè)備添加狀態(tài),則執(zhí)行所述異?;謴?fù)處理。
12.—種對(duì)小型計(jì)算機(jī)系統(tǒng)接口 SCSI感測(cè)數(shù)據(jù)進(jìn)行處理的裝置,應(yīng)用于包含SCSI驅(qū)動(dòng)單元和硬盤設(shè)備的存儲(chǔ)系統(tǒng);其特征在于,該裝置包括異常確定單元、異?;謴?fù)單元和定時(shí)器;所述異常確定單元,用于在所述SCSI驅(qū)動(dòng)單元收到所述硬盤設(shè)備發(fā)送的包含感測(cè)數(shù)據(jù)的命令響應(yīng)后,確定所述硬盤設(shè)備出現(xiàn)異常,向所述異?;謴?fù)單元發(fā)送異?;謴?fù)通知;所述異常恢復(fù)單元,用于接收到所述異?;謴?fù)通知后,執(zhí)行以下異常恢復(fù)處理通過發(fā)送下電命令來切斷所述硬盤設(shè)備的供電,同時(shí)啟動(dòng)所述定時(shí)器;在所述定時(shí)器到時(shí)后,通過發(fā)送上電命令來恢復(fù)所述硬盤設(shè)備的供電。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述異?;謴?fù)單元具體包括異常計(jì)數(shù)子單元、第一判斷子單元、事件上報(bào)子單元和異?;謴?fù)子單元;所述異常計(jì)數(shù)子單元,用于接收到所述異?;謴?fù)通知后,在所述硬盤設(shè)備對(duì)應(yīng)的錯(cuò)誤節(jié)點(diǎn)中,將所述硬盤設(shè)備的異常計(jì)數(shù)值加1,向所述第一判斷子單元發(fā)送第一判斷通知;在所述第一判斷子單元的判斷結(jié)果為是時(shí),等待設(shè)定時(shí)長后,刪除所述硬盤設(shè)備對(duì)應(yīng)的錯(cuò)誤節(jié)點(diǎn);所述第一判斷子單元,用于接收到所述第一判斷通知后,判斷所述硬盤設(shè)備的異常計(jì)數(shù)值是否超過預(yù)設(shè)的異常計(jì)數(shù)閾值;所述事件上報(bào)子單元,用于在所述第一判斷子單元的判斷結(jié)果為否時(shí),向所述存儲(chǔ)系統(tǒng)的獨(dú)立硬盤冗余陣列RAID發(fā)送恢復(fù)處理容忍事件以避免所述RAID將所述硬盤設(shè)備移除;在所述第一判斷子單元的判斷結(jié)果為是時(shí),向所述RAID發(fā)送恢復(fù)處理失敗事件;所述異?;謴?fù)子單元,用于在所述第一判斷子單元的判斷結(jié)果為否時(shí),執(zhí)行所述異?;謴?fù)處理。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述異?;謴?fù)單元還包括第二判斷子單元,用于在所述異常計(jì)數(shù)子單元之前接收所述異常確定單元發(fā)送來的異?;謴?fù)通知,判斷所述硬盤設(shè)備是否正在進(jìn)行所述異常恢復(fù)處理,如果是,丟棄所述異?;謴?fù)通知;否則將所述異?;謴?fù)通知發(fā)送給所述異常計(jì)數(shù)子單元。
15.根據(jù)權(quán)利要求14所述的裝置,其特征在于,所述異常恢復(fù)單元還包括第三判斷子單元,用于在所述第二判斷子單元之前接收所述異常確定單元發(fā)送來的異?;謴?fù)通知,判斷所述硬盤設(shè)備是否在所述存儲(chǔ)系統(tǒng)的拓?fù)渲校绻?,將所述異常恢?fù)通知發(fā)送給所述第二判斷子單元;否則,丟棄所述異?;謴?fù)通知。
16.根據(jù)權(quán)利要求12所述的裝置,其特征在于,該裝置還包括永久下電單元,具體包含第四判斷子單元和永久下電子單元;所述第四判斷子單元,用于在所述異?;謴?fù)單元之前接收所述異常確定單元發(fā)送的異?;謴?fù)通知,判斷所述感測(cè)數(shù)據(jù)是否表明所述硬盤設(shè)備發(fā)生無法恢復(fù)的異常,如果否,將所述異常恢復(fù)通知發(fā)送給所述異?;謴?fù)單元;如果是,向所述永久下電子單元發(fā)送永久下電通知;所述永久下電子單元,用于接收到所述永久下電通知后,執(zhí)行以下永久下電處理通過發(fā)送下電命令切斷對(duì)所述硬盤設(shè)備的供電。
17.根據(jù)權(quán)利要求16所述的裝置,其特征在于,所述永久下電單元還包括第五判斷子單元和第六判斷子單元;所述第五判斷子單元,用于在所述第四判斷子單元之前接收所述異常確定單元發(fā)送的異?;謴?fù)通知,判斷所述硬盤設(shè)備是否在所述存儲(chǔ)系統(tǒng)的拓?fù)渲校绻?,將所述異常恢?fù)通知發(fā)送給第六判斷子單元;否則,丟棄所述異?;謴?fù)通知;所述第六判斷子單元,用于接收到異?;謴?fù)通知后,判斷所述硬盤設(shè)備是否正在進(jìn)行所述永久下電處理,如果是,丟棄所述異?;謴?fù)通知;否則,將所述異常恢復(fù)通知發(fā)送給所述第四判斷子單元。
18.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述異常確定單元具體包括異常確定子單元、場(chǎng)景解析子單元和方式確定子單元;所述異常確定子單元,用于在所述SCSI驅(qū)動(dòng)單元收到所述硬盤設(shè)備發(fā)送的包含感測(cè)數(shù)據(jù)的命令響應(yīng)后,確定所述硬盤設(shè)備出現(xiàn)異常;所述場(chǎng)景解析子單元,用于在所述異常確定子單元確定所述硬盤設(shè)備出現(xiàn)異常后,解析所述命令響應(yīng)中包含的場(chǎng)景信息;所述方式確定子單元,用于按照預(yù)先設(shè)定的場(chǎng)景信息與容錯(cuò)處理方式的對(duì)應(yīng)關(guān)系,確定所述場(chǎng)景解析子單元解析出的場(chǎng)景信息對(duì)應(yīng)的容錯(cuò)處理方式,如果確定的容錯(cuò)處理方式為異?;謴?fù)處理,則向所述異?;謴?fù)單元發(fā)送異?;謴?fù)通知;其中,所述場(chǎng)景信息包含所述命令響應(yīng)對(duì)應(yīng)的I/O命令的類型以及硬盤設(shè)備所處的狀態(tài)。
19.根據(jù)權(quán)利要求18所述的裝置,其特征在于,該裝置還包括重試處理單元;所述方式確定子單元,在所述場(chǎng)景解析子單元解析出的場(chǎng)景信息為所述I/O命令的類型為管理控制類命令且所述硬盤設(shè)備所處的狀態(tài)為靜態(tài)訪問狀態(tài)時(shí),向所述重試處理單元發(fā)送重試處理通知;所述重試處理單元,用于接收到所述重試處理通知時(shí),判斷所述管理控制類命令是否影響硬盤設(shè)備被正常訪問,如果是,向所述異?;謴?fù)單元發(fā)送異常恢復(fù)通知;如果否,進(jìn)一步判斷針對(duì)所述硬盤設(shè)備的重試次數(shù)是否達(dá)到預(yù)設(shè)的重試次數(shù)閾值,如果是,向用戶提示所述硬盤設(shè)備的錯(cuò)誤信息,將針對(duì)所述硬盤設(shè)備的重試次數(shù)清零,否則重新向所述硬盤設(shè)備發(fā)送所述管理控制類命令。
20.根據(jù)權(quán)利要求18所述的裝置,其特征在于,該裝置還包括寫修復(fù)處理單元;所述方式確定子單元,在所述場(chǎng)景解析子單元解析出的場(chǎng)景信息為所述I/O命令的類型為讀命令且所述硬盤設(shè)備所處的狀態(tài)為靜態(tài)訪問狀態(tài)時(shí),向所述寫修復(fù)處理單元發(fā)送寫修復(fù)通知;所述寫修復(fù)處理單元,用于在接收到所述寫修復(fù)通知時(shí),通知所述存儲(chǔ)系統(tǒng)中的RAID 對(duì)所述硬盤設(shè)備進(jìn)行寫修復(fù)處理,判斷所述寫修復(fù)處理是否成功,如果是,重新向所述硬盤設(shè)備發(fā)送所述讀命令;否則,向所述異?;謴?fù)單元發(fā)送異常恢復(fù)通知。
21.根據(jù)權(quán)利要求18所述的裝置,其特征在于,該裝置還包括暫停處理單元;所述方式確定子單元,在所述場(chǎng)景解析子單元解析出的場(chǎng)景信息為所述I/O命令的類型為管理控制類命令且所述硬盤設(shè)備所處的狀態(tài)為設(shè)備添加狀態(tài)時(shí),向所述暫停處理單元發(fā)送暫停處理通知;所述暫停處理單元,用于接收到所述暫停處理通知時(shí),暫停該裝置對(duì)所述感測(cè)數(shù)據(jù)的容錯(cuò)處理,待所述硬盤設(shè)備完成設(shè)備添加后,恢復(fù)該裝置對(duì)感測(cè)數(shù)據(jù)的容錯(cuò)處理。
22.根據(jù)權(quán)利要求18所述的裝置,其特征在于,所述方式確定子單元,在所述場(chǎng)景解析子單元解析出的場(chǎng)景信息為所述I/O命令的類型為寫命令且所述硬盤設(shè)備所處的狀態(tài)為靜態(tài)訪問狀態(tài),或者,所述I/O命令的類型為讀命令且所述硬盤設(shè)備所處的狀態(tài)為設(shè)備添加狀態(tài),或者,所述I/O命令的類型為寫命令且所述硬盤設(shè)備所處的狀態(tài)為設(shè)備添加狀態(tài)時(shí),向所述異?;謴?fù)單元發(fā)送異常恢復(fù)通知。
全文摘要
本發(fā)明提供了一種對(duì)小型計(jì)算機(jī)系統(tǒng)接口(SCSI)感測(cè)數(shù)據(jù)進(jìn)行處理的方法和裝置,應(yīng)用于包含SCSI驅(qū)動(dòng)單元和硬盤設(shè)備的存儲(chǔ)系統(tǒng);該方法包括所述SCSI驅(qū)動(dòng)單元收到所述硬盤設(shè)備發(fā)送的包含感測(cè)數(shù)據(jù)的命令響應(yīng)后,確定所述硬盤設(shè)備出現(xiàn)異常,執(zhí)行以下異?;謴?fù)處理通過發(fā)送下電命令來切斷所述硬盤設(shè)備的供電,同時(shí)啟動(dòng)定時(shí)器;在所述定時(shí)器到時(shí)后,通過發(fā)送上電命令來恢復(fù)所述硬盤設(shè)備的供電。本發(fā)明能夠有效的提高存儲(chǔ)系統(tǒng)的容錯(cuò)性。
文檔編號(hào)G06F11/07GK102446123SQ201010505228
公開日2012年5月9日 申請(qǐng)日期2010年10月9日 優(yōu)先權(quán)日2010年10月9日
發(fā)明者張日新, 徐磊, 汪文敏, 鄭劭馨, 金堂 申請(qǐng)人:杭州華三通信技術(shù)有限公司