專利名稱:存儲系統(tǒng)中的強(qiáng)制端到端完整性檢查的設(shè)備、系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)錯誤檢查和恢復(fù),更具體地說,本發(fā)明涉及小型計算機(jī)系統(tǒng)接口(“SCSI”)端到端檢查系統(tǒng)中的數(shù)據(jù)存儲裝置中的數(shù)據(jù)錯誤檢查和恢復(fù)。
背景技術(shù):
電子商務(wù)產(chǎn)生的信息的激增使存儲器成為所有規(guī)模的公司的戰(zhàn)略投資優(yōu)先事項。電子商務(wù)的本質(zhì)需要支持?jǐn)?shù)據(jù)可用性,以致雇員、客戶和商業(yè)伙伴能夠在全天的任何時候通過可靠的容災(zāi)系統(tǒng)訪問數(shù)據(jù)的存儲器。在發(fā)生災(zāi)難的情況下,高數(shù)據(jù)可用性和恢復(fù)對保持商業(yè)連續(xù)性來說是必不可少的。
為了避免災(zāi)難(例如系統(tǒng)故障或自然災(zāi)害)期間的數(shù)據(jù)丟失,許多公司依賴于存儲備份。數(shù)據(jù)的備份可被保存在可拆卸介質(zhì)(例如磁帶或可寫光盤)上。雖然可拆卸介質(zhì)適合于小公司,但是大企業(yè)需要極大的存儲容量,于是可拆卸介質(zhì)不是數(shù)據(jù)備份的可行選擇。對于大企業(yè)來說,一種解決方案是存儲服務(wù)器。存儲服務(wù)器一般位于公共商用網(wǎng)絡(luò)上,并被配置成與網(wǎng)絡(luò)上的節(jié)點(diǎn)共享數(shù)據(jù)。一種這樣的實(shí)現(xiàn)是存儲區(qū)域網(wǎng)(SAN)。SAN是共享存儲裝置的高速子網(wǎng)。存儲裝置是包含用于保存數(shù)據(jù)的一個磁盤或多個磁盤的機(jī)器。另外,存儲服務(wù)器可位于遠(yuǎn)程位置,以便在發(fā)生徹底的現(xiàn)場故障的情況下,提供數(shù)據(jù)冗余。
對于當(dāng)前的存儲區(qū)域網(wǎng),數(shù)據(jù)一般在不提供從源到目標(biāo)的冗余檢查的SCSI環(huán)境中傳送。目前,單個設(shè)備具有內(nèi)部錯誤檢查。例如,PCI總線可具有加入到每個32位字中的一個奇偶校驗位。從沿著總線把數(shù)據(jù)發(fā)送給目標(biāo)的地方開始跟蹤所述奇偶校驗,但是一旦數(shù)據(jù)到達(dá)目標(biāo)裝置,就不保持該奇偶校驗信息。鑒于該問題,出現(xiàn)一種稱為SCSIT10端到端數(shù)據(jù)保護(hù)標(biāo)準(zhǔn)的新SCSI標(biāo)準(zhǔn),該標(biāo)準(zhǔn)解決在源和目標(biāo)之間的數(shù)據(jù)流中的某處引入的錯誤不能被源、目標(biāo)和存儲裝置之間的單個裝置檢測的問題。
該標(biāo)準(zhǔn)的一個要素是以2字節(jié)保護(hù)區(qū)、2字節(jié)應(yīng)用標(biāo)記和4字節(jié)參考標(biāo)記的形式把信息連同數(shù)據(jù)的每個扇區(qū)包括在一起。這允許創(chuàng)建冗余檢查并將其保存在保護(hù)區(qū)(guard)中。應(yīng)用標(biāo)記由應(yīng)用使用,參考標(biāo)記是邏輯塊地址的一部分。由于冗余檢查現(xiàn)在可在源進(jìn)行,并被傳送給目標(biāo)和保存在磁盤上,因此它可被用于確保從端到端的數(shù)據(jù)一致性。
但是,根據(jù)端到端數(shù)據(jù)保護(hù)標(biāo)準(zhǔn),主機(jī)或源可在這些完整性字段中增加它所希望的任何信息,并要求目標(biāo)裝置或數(shù)據(jù)存儲服務(wù)器逐字地返回它們。按照這種模式,不允許中間裝置檢查有效負(fù)載的完整性,只允許中間裝置傳遞數(shù)據(jù)。如果發(fā)現(xiàn)錯誤,恢復(fù)是困難或不可能的。另外,確定錯誤的來源變得極為困難。這種端到端數(shù)據(jù)保護(hù)標(biāo)準(zhǔn)允許這種行為,因為在特定的環(huán)境中發(fā)送數(shù)據(jù)的應(yīng)用可把保護(hù)區(qū)用于除完整性檢查之外的用途,并且應(yīng)用必須把信息原樣返回。
由于存儲系統(tǒng)的首要職責(zé)是完整地保存和返回數(shù)據(jù),允許源禁止端到端檢查產(chǎn)生極大的數(shù)據(jù)丟失風(fēng)險。根據(jù)上面的討論,顯然需要一種用于克服與被允許禁止端到端檢查的源相關(guān)的冗余檢查問題的強(qiáng)制端到端數(shù)據(jù)保護(hù)的設(shè)備、系統(tǒng)和方法。有利的是,這樣的設(shè)備、系統(tǒng)和方法會允許SCSI環(huán)境中的數(shù)據(jù)錯誤檢查和恢復(fù),同時仍然遵守端到端數(shù)據(jù)保護(hù)標(biāo)準(zhǔn)。
發(fā)明內(nèi)容
鑒于本領(lǐng)域的當(dāng)前狀態(tài),尤其是鑒于本領(lǐng)域的還未被目前可用的檢查系統(tǒng)充分解決的問題和需要,提出了本發(fā)明。因此,為了提供一種實(shí)現(xiàn)存儲系統(tǒng)中的強(qiáng)制端到端完整性檢查的設(shè)備、系統(tǒng)和方法,提出了本發(fā)明,所述設(shè)備、系統(tǒng)和方法克服了上面討論的本領(lǐng)域中的許多或全部缺陷。
端到端強(qiáng)制完整性檢查的設(shè)備具備邏輯單元,所述邏輯單元包含配置成功能上執(zhí)行完整性檢查的必要步驟的多個模塊。在描述的實(shí)施例中,這些模塊包括配置成監(jiān)視來自源的數(shù)據(jù)的兼容性模塊。兼容性模塊還可被配置成核實(shí)完整性信息與標(biāo)準(zhǔn)的兼容性。該設(shè)備還包括一個完整性模塊,所述完整性模塊被配置成用附加完整性信息包裹(wrap)來自源的數(shù)據(jù),或者把附加完整性信息加入所述數(shù)據(jù)中。
在一個實(shí)施例中,具有完整性信息的數(shù)據(jù)在小型計算機(jī)系統(tǒng)接口(SCSI)環(huán)境中被發(fā)送,所述標(biāo)準(zhǔn)可包括由國際信息技術(shù)標(biāo)準(zhǔn)委員會(INCITS)的技術(shù)委員會制定的SCSI端到端數(shù)據(jù)保護(hù)標(biāo)準(zhǔn)。在另一實(shí)施例中,附加完整性信息包括8字節(jié)的數(shù)據(jù)塊,該8字節(jié)的數(shù)據(jù)塊具有縱向冗余檢查(LRC)部分、序號部分和填充部分。
按照權(quán)利要求1的設(shè)備,其中完整性模塊還被配置成把數(shù)據(jù)的完整性信息移動到報頭位置,并把附加完整性信息附到該數(shù)據(jù)上。數(shù)據(jù)可包含512字節(jié)的有效負(fù)載和完整性信息,所述完整性信息包含一個8字節(jié)的部分。該8字節(jié)的部分包括參考標(biāo)記部分、應(yīng)用標(biāo)記部分和塊保護(hù)區(qū)部分。在一個實(shí)施例中,源還被配置成要求目標(biāo)不檢查完整性信息。
在另一實(shí)施例中,兼容性模塊被配置成識別何時源要求目標(biāo)不檢查完整性信息,還被配置成當(dāng)源要求目標(biāo)不檢查完整性信息時通知完整性模塊。另外,完整性模塊被配置成當(dāng)源要求目標(biāo)不檢查完整性信息時,用附加完整性信息包裹數(shù)據(jù)。
另外,完整性模塊還可被配置成在把數(shù)據(jù)發(fā)送給源或主機(jī)之一之前,除去附加完整性信息。在一個實(shí)施例中,設(shè)備包括通信適配器,所述通信適配器具有兼容性模塊和完整性模塊,并被配置成從源接收數(shù)據(jù),并檢查數(shù)據(jù)的完整性信息。設(shè)備還可包括主存儲器模塊,所述主存儲器模塊具有兼容性模塊和完整性模塊,并被配置成保持多個數(shù)據(jù)塊,并檢查數(shù)據(jù)塊的完整性信息。
在一個實(shí)施例中,所述設(shè)備還包括存儲控制器和存儲裝置,存儲控制器和存儲裝置均具有兼容性模塊和完整性模塊,并被配置成檢查數(shù)據(jù)的完整性信息。
另外本發(fā)明還提供一種強(qiáng)制端到端完整性檢查系統(tǒng)。具體地說,在一個實(shí)施例中,所述系統(tǒng)包括配置成通過網(wǎng)絡(luò)發(fā)送數(shù)據(jù)的源,配置成通過網(wǎng)絡(luò)接收數(shù)據(jù)的目標(biāo)和所述設(shè)備。系統(tǒng)還可包括主存儲器模塊,存儲控制器和存儲裝置。
本發(fā)明還提供一種強(qiáng)制端到端完整性檢查方法。所公開實(shí)施例中的方法實(shí)質(zhì)上包括實(shí)現(xiàn)上面關(guān)于所述設(shè)備和系統(tǒng)的操作給出的功能所必需的步驟。在一個實(shí)施例中,該方法包括監(jiān)視來自源的數(shù)據(jù),源被配置成發(fā)送具有完整性信息的數(shù)據(jù),核實(shí)完整性信息與標(biāo)準(zhǔn)的兼容性,并用附加完整性信息包裹來自源的數(shù)據(jù)。
該方法還包括把數(shù)據(jù)的完整性信息移動到報頭位置,并把附加完整性信息附到該數(shù)據(jù)上。另一方面,完整性信息不被移動,附加完整性信息被附到或追加到該數(shù)據(jù)上。在另一實(shí)施例中,該方法還包括識別何時源要求目標(biāo)不檢查完整性信息,并且當(dāng)源要求目標(biāo)不檢查完整性信息時通知完整性模塊。另外,該方法包括當(dāng)源要求目標(biāo)不檢查完整性信息時,用附加完整性信息包裹數(shù)據(jù)。
在一個實(shí)施例中,該方法包括在把數(shù)據(jù)發(fā)送給源或主機(jī)之一之前,除去附加完整性信息。此外,該方法還包括檢查數(shù)據(jù)的完整性信息,和保持多個數(shù)據(jù)塊,并檢查數(shù)據(jù)塊的完整性信息。
本說明書內(nèi)對特征、優(yōu)點(diǎn)或類似語言的引用并不意味著利用本發(fā)明可實(shí)現(xiàn)的所有特征和優(yōu)點(diǎn)應(yīng)在本發(fā)明的任何單一實(shí)施例中。相反,對特征和優(yōu)點(diǎn)的引用意味著結(jié)合一個實(shí)施例描述的具體特征、優(yōu)點(diǎn)或特性被包括在本發(fā)明的至少一個實(shí)施例中。從而,本說明書內(nèi)的特征和優(yōu)點(diǎn),及類似語言的討論可以涉及的是同一實(shí)施例(但不必定)。
此外,在一個或多個實(shí)施例中,可按照任何適當(dāng)?shù)姆绞浇M合本發(fā)明的所述特征、優(yōu)點(diǎn)和特性。相關(guān)領(lǐng)域中的技術(shù)人員會認(rèn)識到在沒有特定實(shí)施例的一個或多個具體特征或優(yōu)點(diǎn)的情況下,可實(shí)踐本發(fā)明。在其它情況下,可在某些實(shí)施例中認(rèn)識到可能不存在于本發(fā)明的所有實(shí)施例中的附加特征和優(yōu)點(diǎn)。
根據(jù)下面的說明和附加的權(quán)利要求,本發(fā)明的這些特征和優(yōu)點(diǎn)變得更明顯,或者通過如下陳述的本發(fā)明的實(shí)踐可掌握本發(fā)明的特征和優(yōu)點(diǎn)。
為了易于理解本發(fā)明的優(yōu)點(diǎn),下面將參考在附圖中圖解說明的具體實(shí)施例,提供上面簡要描述的發(fā)明的更詳細(xì)描述。這些附圖只描述本發(fā)明的典型實(shí)施例,并不是對本發(fā)明的范圍的限制,通過附圖的使用,將更詳細(xì)地說明和解釋本發(fā)明,其中圖1是圖解說明根據(jù)現(xiàn)有技術(shù)的SCSI端到端數(shù)據(jù)保護(hù)標(biāo)準(zhǔn)環(huán)境中的數(shù)據(jù)錯誤檢查和恢復(fù)系統(tǒng)的一個實(shí)施例的示意方框圖;圖2是圖解說明根據(jù)現(xiàn)有技術(shù)的數(shù)據(jù)塊的一個實(shí)施例的示意方框圖;圖3是圖解說明根據(jù)本發(fā)明的數(shù)據(jù)存儲服務(wù)器的一個實(shí)施例的示意方框圖;圖4是圖解說明根據(jù)本發(fā)明的數(shù)據(jù)塊的一個實(shí)施例的示意方框圖;圖5是圖解說明根據(jù)本發(fā)明的附加完整性信息的備選實(shí)施例的示意方框圖;圖6是圖解說明根據(jù)本發(fā)明的強(qiáng)制端到端數(shù)據(jù)保護(hù)方法的一個實(shí)施例的示意流程圖;圖7是圖解說明根據(jù)本發(fā)明的強(qiáng)制端到端完整性檢查方法的一個備選實(shí)施例的示意流程圖。
具體實(shí)施例方式
為了更加強(qiáng)調(diào)本說明書中描述的許多功能單元的實(shí)現(xiàn)獨(dú)立性,所述許多功能單元被標(biāo)記為模塊。例如,模塊可被實(shí)現(xiàn)成包含定制的VLSI電路或門陣列的硬件電路、諸如邏輯芯片之間的現(xiàn)用半導(dǎo)體、晶體管、或者其它離散組件。還可用可編程硬件裝置(比如現(xiàn)場可編程門陣列、可編程陣列邏輯、可編程邏輯裝置等)實(shí)現(xiàn)模塊。
還可用供各種處理器執(zhí)行的軟件實(shí)現(xiàn)模塊??蓤?zhí)行代碼的標(biāo)識(identified)模塊可包括計算機(jī)指令的一個或多個物理或邏輯塊,所述計算機(jī)可被組織成對象、過程或函數(shù)。然而,標(biāo)識模塊的可執(zhí)行代碼不必物理上位于一起,但是可包含保存在不同位置的根本不同的指令,當(dāng)被邏輯結(jié)合時,所述根本不同的指令構(gòu)成所述模塊并實(shí)現(xiàn)該模塊的規(guī)定用途。
事實(shí)上,可執(zhí)行代碼的模塊可以是單一指令,或者許多指令,甚至可分布在幾個不同的代碼段內(nèi),分布在不同的程序中,以及分布在幾個存儲裝置上。類似地,這里操作數(shù)據(jù)可被識別和例示于模塊內(nèi),并且可按照任何適當(dāng)?shù)男问絹砭唧w體現(xiàn)并被組織在任何適當(dāng)類型的數(shù)據(jù)結(jié)構(gòu)內(nèi)。操作數(shù)據(jù)可被集合成單一數(shù)據(jù)集,或者可分布在不同的位置,包括分布在不同的存儲裝置中,并且可以至少部分地僅僅作為電子信號存在于系統(tǒng)或網(wǎng)絡(luò)上。
本說明書中對“一個實(shí)施例”或類似語言的引用指的是結(jié)合該實(shí)施例描述的特定特征、結(jié)構(gòu)或特性包括在本發(fā)明的至少一個實(shí)施例中。整個說明書中,短語“在一個實(shí)施例中”或者類似語言的出現(xiàn)都指的是相同實(shí)施例(不過并不一定)。
對信號承載介質(zhì)的引用可以采用能夠產(chǎn)生信號,導(dǎo)致信號被產(chǎn)生,或者導(dǎo)致機(jī)器可讀指令在數(shù)字處理設(shè)備上的執(zhí)行的任何形式。信號承載介質(zhì)可由傳輸線路、光盤、數(shù)字視頻光盤、磁帶、Bernoulli驅(qū)動器、磁盤、穿孔卡、快速存儲器、集成電路、或者其它數(shù)字處理設(shè)備存儲裝置具體體現(xiàn)。
此外,在一個或多個實(shí)施例中,可按照任何適當(dāng)?shù)姆绞浇M合本發(fā)明的所述特性、結(jié)構(gòu)或特性。在下面的說明中,提供眾多的具體細(xì)節(jié),例如程序設(shè)計、軟件模塊、用戶選擇、網(wǎng)絡(luò)事務(wù)、數(shù)據(jù)庫查詢、數(shù)據(jù)庫結(jié)構(gòu)、硬件模塊、硬件電路、硬件芯片等,以便充分理解本發(fā)明的實(shí)施例。但是,相關(guān)領(lǐng)域的技術(shù)人員會認(rèn)識到可在不存在一個或多個具體細(xì)節(jié)的情況下,或者利用其它方法、組件、材料等實(shí)踐本發(fā)明。在其它情況下,沒有詳細(xì)表示或說明公知的結(jié)構(gòu)、材料或操作,以避免使本發(fā)明的各個方面不清楚。
圖1表示在克服現(xiàn)有技術(shù)的問題和限制的SCSI端到端數(shù)據(jù)保護(hù)標(biāo)準(zhǔn)環(huán)境中的數(shù)據(jù)錯誤檢查和恢復(fù)系統(tǒng)10。系統(tǒng)10包括與存儲區(qū)域網(wǎng)14連接的一個或多個主服務(wù)器(host server)12。數(shù)據(jù)存儲服務(wù)器18也與存儲區(qū)域網(wǎng)14連接?;蛘撸瑪?shù)據(jù)存儲服務(wù)器18可以是類似于上面在發(fā)明的背景技術(shù)中描述的問題,在其中錯誤檢查標(biāo)準(zhǔn)導(dǎo)致不能執(zhí)行端到端檢查的RAID數(shù)據(jù)存儲服務(wù)器或者任何其它數(shù)據(jù)存儲裝置。系統(tǒng)10還可包括一個或多個數(shù)據(jù)存儲服務(wù)器18。
系統(tǒng)10還可包括計算機(jī)網(wǎng)絡(luò)20。一個或多個工作站22、個人計算機(jī)24、打印機(jī)26或者其它裝置可與計算機(jī)網(wǎng)絡(luò)20連接。另外,主服務(wù)器12可具有與連接到因特網(wǎng)28的其它計算機(jī)30的因特網(wǎng)連接28。本領(lǐng)域的技術(shù)人員會認(rèn)可其它存儲區(qū)域網(wǎng),計算機(jī)網(wǎng)絡(luò)和包括與本系統(tǒng)10相關(guān)的其它數(shù)據(jù)存儲裝置、計算機(jī)、工作站、大型計算機(jī)、個人計算機(jī)、打印機(jī)和其它外圍設(shè)備的因特網(wǎng)結(jié)構(gòu)。
圖2是圖解說明根據(jù)現(xiàn)有技術(shù)的數(shù)據(jù)塊200的一個實(shí)施例的示意方框圖。在一個實(shí)施例中,數(shù)據(jù)塊200包括有效負(fù)載202和完整性信息204。有效負(fù)載202包含不同于報頭和控制信息的數(shù)據(jù)。在另一實(shí)施例中,根據(jù)SCSI標(biāo)準(zhǔn),有效負(fù)載202的大小為512字節(jié)。另一方面,有效負(fù)載202的大小可最高達(dá)2112字節(jié)。
完整性信息204可包括參考標(biāo)記(RT)206,應(yīng)用標(biāo)記(AT)208和塊保護(hù)區(qū)(BG)210。參考標(biāo)記206字段被設(shè)置成數(shù)據(jù)塊與之相關(guān)的存儲服務(wù)器18的邏輯塊地址的四個最低有效字節(jié)。應(yīng)用標(biāo)記208一般由應(yīng)用設(shè)定,并且不由SCSI端到端數(shù)據(jù)保護(hù)標(biāo)準(zhǔn)定義。塊保護(hù)區(qū)210包含有效負(fù)載202的循環(huán)冗余檢查(CRC)。CRC是一種用于發(fā)覺多數(shù)傳輸錯誤的一種檢查值。解碼器(未示出)計算接收的數(shù)據(jù)的CRC,并把其與編碼器計算的附在數(shù)據(jù)上的CRC進(jìn)行比較。失配表明數(shù)據(jù)在傳輸中被破壞。完整性信息204為SCSI體系結(jié)構(gòu)領(lǐng)域的技術(shù)人員熟知,因此不再贅述。
圖3是圖解說明根據(jù)本發(fā)明的數(shù)據(jù)存儲服務(wù)器18的一個實(shí)施例的示意方框圖。如上參考圖1所述,數(shù)據(jù)存儲服務(wù)器18可通過存儲區(qū)域網(wǎng)14與主機(jī)12或源耦接。在一個實(shí)施例中,數(shù)據(jù)存儲服務(wù)器18(下面稱為“服務(wù)器”)包含通信適配器302,主存儲器模塊304,存儲控制器306和多個存儲裝置308。在描述的實(shí)施例中,通信適配器302,主存儲器模塊304,存儲控制器306和存儲裝置308可集中位于服務(wù)器18內(nèi)。另一方面,每個組件302、304、306、308可分布在通信網(wǎng)絡(luò)內(nèi)。此外,服務(wù)器18可包含多個通信適配器302。
通信適配器302可被配置成在各種網(wǎng)絡(luò)(比如(但不限于)存儲區(qū)域網(wǎng)14、局域網(wǎng)、廣域網(wǎng)、因特網(wǎng)等)上進(jìn)行通信。可在其它協(xié)議(比如Infiniband FICON、TCP/IP、以太網(wǎng)、Gigabit以太網(wǎng)或iSCSI)上實(shí)現(xiàn)存儲區(qū)域網(wǎng)14。
在一個實(shí)施例中,通信適配器302包含兼容性模塊310和完整性模塊312。兼容性模塊310可被配置成監(jiān)視來自源12的數(shù)據(jù),并核實(shí)完整性信息與標(biāo)準(zhǔn)的兼容性。另一方面,兼容性模塊310執(zhí)行的功能可由完整性模塊312實(shí)現(xiàn)。標(biāo)準(zhǔn)一般由關(guān)心硬件、軟件或通信協(xié)議的發(fā)展的成員的專業(yè)組織制定。在另一實(shí)施例中,標(biāo)準(zhǔn)可以是由國際信息技術(shù)標(biāo)準(zhǔn)委員會(INCITS)的技術(shù)委員會制定的SCSI端到端數(shù)據(jù)保護(hù)標(biāo)準(zhǔn)。
按照端到端數(shù)據(jù)保護(hù)標(biāo)準(zhǔn),主機(jī)或源12可向有效負(fù)載202增加完整性信息204,并要求服務(wù)器18不修改完整性信息204。中間裝置不被允許檢查有效負(fù)載202的完整性,只傳遞數(shù)據(jù)。如果發(fā)現(xiàn)錯誤,那么恢復(fù)是困難的或者不可能的。另外,確定錯誤的來源變得非常困難,當(dāng)數(shù)據(jù)從一個模塊傳送到另一模塊時,存儲服務(wù)器18沒辦法提供檢查。
有利的是,兼容性模塊310可被配置成識別已要求服務(wù)器不檢查或修改完整性信息204的主機(jī)或源(下面稱為“源”)12,并用附加完整性信息包裹數(shù)據(jù)塊200。用附加完整性信息包裹數(shù)據(jù)塊200允許完整性模塊312檢查數(shù)據(jù),同時遵守來自源12的不檢查或修改初始完整性信息204的要求。附加完整性信息可遵守端到端數(shù)據(jù)保護(hù)標(biāo)準(zhǔn),并且可以采取BG、AT和RT的形式。這里使用的術(shù)語“包裹”指的是向初始數(shù)據(jù)塊200的增加或添加。
在一個實(shí)施例中,兼容性模塊310被配置成初始化附加完整性信息,并把數(shù)據(jù)塊200和附加完整性信息一起傳送給完整性模塊312。在另一實(shí)施例中,完整性模塊312被配置成分析數(shù)據(jù)塊200,并產(chǎn)生完整性代碼來代替初始化的附加完整性信息。完整性代碼可以是由多項式方程產(chǎn)生的縱向或循環(huán)冗余檢查。這樣的完整性或錯誤代碼為本領(lǐng)域的技術(shù)人員熟知。
通常稱為“高速緩存”的主存儲器模塊304也可包括完整性模塊312。另外,存儲控制器316和每個存儲裝置308可包括完整性模塊312。有利的是,這使服務(wù)器能夠查明錯誤發(fā)生的位置。例如,通信適配器302的完整性模塊312產(chǎn)生完整性或錯誤代碼。如果主存儲器模塊304的完整性模塊312發(fā)現(xiàn)新產(chǎn)生的完整性代碼和在通信適配器302中產(chǎn)生的完整性代碼不一致,那么服務(wù)器18知道在通信適配器302和主存儲器模塊304之間發(fā)生了錯誤。
圖4是圖解說明根據(jù)本實(shí)施例的數(shù)據(jù)塊400的一個實(shí)施例的示意方框圖。在一個實(shí)施例中,數(shù)據(jù)塊400包括附加完整性信息402。如上所述,兼容性模塊310被配置成把初始的完整性信息204移動到報頭位置,并把初始的完整性信息204看作有效負(fù)載202的一部分(如虛線編號所示)。此外,兼容性模塊310可被配置成把附加完整性信息402包裹或附到有效負(fù)載202和初始完整性信息204上。
在另一實(shí)施例中,兼容性模塊310被配置成初始化附加完整性信息402。初始化附加完整性信息402可包括產(chǎn)生8字節(jié)的0。完整性模塊312被配置成根據(jù)整個數(shù)據(jù)塊400(包括初始完整性信息204),計算或產(chǎn)生完整性代碼。在一個客戶機(jī)中,主機(jī)12可能不支持任何類型的完整性檢查,于是數(shù)據(jù)在沒有完整性信息204的情況下到達(dá)。這種情況下,兼容性模塊310可產(chǎn)生將用作初始完整性信息的8字節(jié)的0。
圖5是圖解說明根據(jù)本發(fā)明的附加完整性信息402的備選實(shí)施例的示意方框圖。在一個實(shí)施例中,附加完整性信息402可包括遵守常見SCSI標(biāo)準(zhǔn)的多個部分。例如,附加完整性信息可包括序號502部分,縱向冗余檢查(LRC)504部分和填充部分506。多個部分502、504和506一起需要8個字節(jié)。另一方面,附加完整性信息402可包含遵守或不遵守SCSI端到端數(shù)據(jù)保護(hù)標(biāo)準(zhǔn)的依賴于所有者或服務(wù)器18的信息。
下面的示意流程圖一般被陳述成邏輯流程圖。從而,描述的順序和標(biāo)記的步驟表示所提出的方法的一個實(shí)施例。其它步驟和方法可被認(rèn)為在功能、邏輯或效果上與圖解說明的方法的一個或多個步驟或其多個部分等同。另外,采用的格式和符號被用于解釋該方法的邏輯步驟,并不是對方法的范圍的限制。雖然在流程圖中可以采用各種箭頭類型和線條類型,不過它們并不限制對應(yīng)方法的范圍。事實(shí)上,可以使用一些箭頭或其它連接符來只指示該方法的邏輯流程。例如,箭頭可指示所描述方法的列舉步驟之間未指定的持續(xù)時間的等待或監(jiān)視周期。另外,特定方法中發(fā)生的順序可以嚴(yán)格遵守所示對應(yīng)步驟的順序,也可不嚴(yán)格遵守所示對應(yīng)步驟的順序。
圖6是圖解說明根據(jù)本發(fā)明的強(qiáng)制端到端數(shù)據(jù)保護(hù)方法600的一個實(shí)施例的示意流程圖。在一個實(shí)施例中,方法600從步驟602開始,兼容性模塊310監(jiān)視正被源12發(fā)送的數(shù)據(jù)。兼容性模塊310監(jiān)視所述數(shù)據(jù)以便核實(shí)與標(biāo)準(zhǔn)的兼容性。在一個實(shí)施例中,標(biāo)準(zhǔn)包括SCSI端到端數(shù)據(jù)保護(hù)標(biāo)準(zhǔn)。
如果在步驟604中,數(shù)據(jù)遵守標(biāo)準(zhǔn)并包含520字節(jié),那么兼容性模塊310在步驟606檢查所需的完整性檢查。按照SCSI端到端數(shù)據(jù)保護(hù)標(biāo)準(zhǔn),在步驟606中,源12可要求服務(wù)器18不檢查或修改完整性信息204。例如,源12可實(shí)現(xiàn)代替完整性信息204,供應(yīng)用之用的專用信息,于是不想要服務(wù)器18或其它中間裝置修改完整性信息204。但是,通過在步驟610中在有效負(fù)載202和完整性信息204周圍包裹附加完整性信息402,兼容性模塊310能夠?qū)崿F(xiàn)完整性檢查。
如果在步驟606中,源要求完整性檢查,那么通信適配器的完整性模塊312先在步驟608中檢查完整性信息,之后把數(shù)據(jù)傳送給兼容性模塊310以便在步驟610中用附加完整性信息包裹。如果在步驟606中,源要求完整性信息不被檢查,那么完整性模塊312把數(shù)據(jù)傳送給兼容性模塊310,以便在步驟610中用附加完整性信息包裹。
如果在步驟604中,數(shù)據(jù)并不遵守標(biāo)準(zhǔn)并包含512字節(jié),那么在步驟605中,兼容性模塊產(chǎn)生8字節(jié)的完整性信息,以便遵守該標(biāo)準(zhǔn)。兼容性模塊310隨后在步驟610中用附加完整性信息包裹該數(shù)據(jù)。在一個實(shí)施例中,兼容性模塊隨后可在步驟612中,通過用0填充所述8字節(jié)的附加完整性信息402,初始化所述附加完整性信息402。這8字節(jié)的附加完整性信息402遵守SCSI端到端數(shù)據(jù)保護(hù)標(biāo)準(zhǔn)。另一方面,附加完整性信息402可以是專有的,具有任意大小,不必遵守該標(biāo)準(zhǔn)。在另一實(shí)施例中,完整性模塊312隨后通過根據(jù)有效負(fù)載202和完整性信息204計算CRC或LRC,產(chǎn)生完整性代碼。另一方面,完整性模塊可實(shí)現(xiàn)用于計算完整性代碼的專有錯誤檢查算法。
通信適配器的完整性模塊312在步驟614檢查數(shù)據(jù)塊400,之后在步驟616把數(shù)據(jù)塊400傳送給主存儲器模塊304,在那里,主存儲器模塊304的完整性模塊312檢查數(shù)據(jù)。主存儲器模塊304隨后保持?jǐn)?shù)據(jù)塊400,直到在步驟618數(shù)據(jù)轉(zhuǎn)出(destage)給存儲裝置308為止。數(shù)據(jù)轉(zhuǎn)出618為存儲區(qū)域網(wǎng)領(lǐng)域的技術(shù)人員熟知,這里不再贅述。
一旦數(shù)據(jù)被轉(zhuǎn)出618,存儲控制器306的完整性模塊312在步驟620通過類似地計算或者產(chǎn)生新的完整性代碼并把該完整性代碼與附加完整性信息402進(jìn)行比較,檢查數(shù)據(jù)塊400。如果存在差異,那么存儲控制器306可請求主存儲器模塊304重新發(fā)送數(shù)據(jù)塊400。
存儲控制器306在步驟622把數(shù)據(jù)傳送給存儲裝置,存儲裝置308的完整性模塊312通過計算或產(chǎn)生新的完整性代碼并比較該完整性代碼與附加完整性信息402,檢查數(shù)據(jù)塊400。存儲裝置308隨后在步驟624保存數(shù)據(jù)塊400,方法600在步驟626結(jié)束。
圖7是圖解說明根據(jù)本發(fā)明的強(qiáng)制端到端完整性檢查的方法700的備選實(shí)施例的示意流程圖。在一個實(shí)施例中,方法700從步驟702開始,存儲裝置308的完整性模塊312在步驟704中檢查數(shù)據(jù)塊400的附加完整性信息,之后在步驟706中把數(shù)據(jù)塊400傳送給存儲控制器306。存儲控制器306隨后在步驟708中檢查數(shù)據(jù)塊400的附加完整性信息。在一個實(shí)施例中,步驟708中的檢查數(shù)據(jù)塊400可包括計算或產(chǎn)生錯誤代碼,如上參考圖6所述。
在步驟710,存儲控制器306把數(shù)據(jù)塊400傳送給主存儲器模塊304,在步驟712,完整性模塊312在主存儲器模塊304檢查數(shù)據(jù)塊400的附加完整性信息。數(shù)據(jù)塊400可長時間駐留在主存儲器模塊304中,并被發(fā)送給源12或者被返回給存儲裝置308。
在所描述的實(shí)施例中,在步驟714,主存儲器模塊304把數(shù)據(jù)塊傳送給通信適配器304,在通信適配器304,完整性模塊312可執(zhí)行數(shù)據(jù)塊400的附加完整性信息的最終完整性檢查,之后數(shù)據(jù)塊400離開服務(wù)器18。在另一實(shí)施例中,兼容性模塊310隨后在步驟716除去附加完整性信息402。完整性模塊312隨后在步驟718檢查源是否要求完整性檢查。如果是,那么在步驟720中,完整性模塊檢查通信適配器中的完整性信息。兼容性模塊310隨后在步驟722檢查源最初傳送的是512字節(jié)還是520字節(jié)。
如果初始數(shù)據(jù)是512字節(jié),那么兼容性模塊310除去8字節(jié)的完整性信息,通信適配器在步驟726把數(shù)據(jù)傳送給源。如果初始數(shù)據(jù)是520字節(jié),那么通信適配器在步驟726把520字節(jié)的數(shù)據(jù)傳送給源,方法700結(jié)束于步驟728。
在一個備選實(shí)施例中,如果在步驟718,源不要求完整性檢查,或者要求不檢查數(shù)據(jù),那么兼容性模塊310在步驟722檢查源最初傳送的是512字節(jié)還是520字節(jié),方法700如上所述繼續(xù)。
在不脫離本發(fā)明的精神或基本特性的情況下,可用其它具體形式體現(xiàn)本發(fā)明。所描述的實(shí)施例只是例證性的,而不是對本發(fā)明的限制。于是,本發(fā)明的范圍由附加的權(quán)利要求限定,而不是由上述說明限定。落入權(quán)利要求的相等物的含義和范圍內(nèi)的所有變化都將被包含在權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種檢查存儲系統(tǒng)中的端到端完整性的設(shè)備,所述設(shè)備包括兼容性模塊,兼容性模塊被配置成監(jiān)視來自源的數(shù)據(jù)并核實(shí)完整性信息與標(biāo)準(zhǔn)的兼容性;兼容性模塊還被配置成用附加完整性信息包裹來自源的數(shù)據(jù);和完整性模塊,完整性模塊被配置成檢查附加完整性信息并核實(shí)數(shù)據(jù)的完整性。
2.按照權(quán)利要求1所述的設(shè)備,其中具有完整性信息的數(shù)據(jù)在存儲區(qū)域網(wǎng)環(huán)境中被發(fā)送。
3.按照權(quán)利要求1所述的設(shè)備,其中附加完整性信息包含8字節(jié)的數(shù)據(jù)塊,該數(shù)據(jù)塊具有縱向冗余檢查(LRC)部分、序號部分和填充部分。
4.按照權(quán)利要求1所述的設(shè)備,其中兼容性模塊還被配置成把數(shù)據(jù)的完整性信息移動到報頭位置,并把附加完整性信息附到該數(shù)據(jù)上。
5.按照權(quán)利要求1所述的設(shè)備,其中數(shù)據(jù)包含512字節(jié)的有效負(fù)載和包含8字節(jié)部分的完整性信息,該8字節(jié)部分具有參考標(biāo)記部分、應(yīng)用標(biāo)記部分和塊保護(hù)區(qū)部分。
6.按照權(quán)利要求1所述的設(shè)備,其中源還被配置成要求目標(biāo)在某些情況下不檢查完整性信息。
7.按照權(quán)利要求1所述的設(shè)備,其中兼容性模塊被配置成當(dāng)源要求目標(biāo)不檢查完整性信息時,用附加完整性信息包裹數(shù)據(jù)。
8.按照權(quán)利要求1所述的設(shè)備,其中兼容性模塊還被配置成在把數(shù)據(jù)發(fā)送給不支持所述標(biāo)準(zhǔn)的主機(jī)之前,除去附加完整性信息。
9.按照權(quán)利要求1所述的設(shè)備,還包括通信適配器,所述通信適配器具有兼容性模塊和完整性模塊,并被配置成從源接收數(shù)據(jù)和檢查數(shù)據(jù)的完整性信息。
10.按照權(quán)利要求1所述的設(shè)備,還包括主存儲器模塊,所述主存儲器模塊具有兼容性模塊和完整性模塊,并被配置成保持多個數(shù)據(jù)塊和檢查數(shù)據(jù)塊的完整性信息。
11.按照權(quán)利要求1所述的設(shè)備,還包括存儲控制器,存儲控制器具有兼容性模塊和完整性模塊,并被配置成檢查數(shù)據(jù)的完整性信息。
12.按照權(quán)利要求1所述的設(shè)備,還包括存儲裝置,存儲裝置具有兼容性模塊和完整性模塊,并被配置成保持多個數(shù)據(jù)塊并檢查數(shù)據(jù)塊的完整性信息。
13.一種在存儲系統(tǒng)中實(shí)施強(qiáng)制端到端完整性檢查的系統(tǒng),所述系統(tǒng)包括配置成通過網(wǎng)絡(luò)發(fā)送數(shù)據(jù)的源;配置成通過網(wǎng)絡(luò)接收數(shù)據(jù)的目標(biāo);配置成監(jiān)視來自源的數(shù)據(jù)并核實(shí)完整性信息與標(biāo)準(zhǔn)的兼容性的兼容性模塊;兼容性模塊還被配置成用附加完整性信息包裹來自源的數(shù)據(jù);和配置成檢查附加完整性信息并核實(shí)數(shù)據(jù)的完整性的完整性模塊;具有兼容性模塊和完整性模塊,并被配置成從源接收數(shù)據(jù)和檢查數(shù)據(jù)的完整性信息的通信適配器;具有完整性模塊,并被配置成保持多個數(shù)據(jù)塊和檢查數(shù)據(jù)塊的完整性信息的主存儲器模塊;具有完整性模塊,并被配置成檢查數(shù)據(jù)的完整性信息的存儲控制器;和具有完整性模塊,并被配置成保持多個數(shù)據(jù)塊和檢查數(shù)據(jù)塊的完整性信息的存儲裝置。
14.按照權(quán)利要求13所述的系統(tǒng),其中具有完整性信息的數(shù)據(jù)在存儲區(qū)域網(wǎng)環(huán)境中被發(fā)送。
15.按照權(quán)利要求13所述的系統(tǒng),其中附加完整性信息包含8字節(jié)的數(shù)據(jù)塊,該數(shù)據(jù)塊具有縱向冗余檢查(LRC)部分、序號部分和填充部分。
16.按照權(quán)利要求13所述的系統(tǒng),其中兼容性模塊還被配置成把數(shù)據(jù)的完整性信息移動到報頭位置,并追加附加完整性信息。
17.按照權(quán)利要求13所述的系統(tǒng),其中數(shù)據(jù)包含512字節(jié)的有效負(fù)載和包含8字節(jié)部分的完整性信息,該8字節(jié)部分具有參考標(biāo)記部分、應(yīng)用標(biāo)記部分和塊保護(hù)區(qū)部分。
18.按照權(quán)利要求13所述的系統(tǒng),其中源還被配置成要求目標(biāo)不檢查完整性信息。
19.按照權(quán)利要求13所述的系統(tǒng),其中完整性模塊被配置成當(dāng)源要求目標(biāo)不檢查完整性信息時,用附加完整性信息包裹數(shù)據(jù)。
20.按照權(quán)利要求13所述的系統(tǒng),其中完整性模塊還被配置成在把數(shù)據(jù)發(fā)送給源或主機(jī)之一之前,除去附加完整性信息。
21.一種部署計算基礎(chǔ)結(jié)構(gòu)的方法,包括把計算機(jī)可讀代碼集成到計算系統(tǒng)中,其中代碼與計算系統(tǒng)結(jié)合能夠執(zhí)行下述操作監(jiān)視來自源的數(shù)據(jù);核實(shí)完整性信息與標(biāo)準(zhǔn)的兼容性;和用附加完整性信息包裹來自源的數(shù)據(jù)。
22.按照權(quán)利要求21所述的方法,其中所述方法包括把數(shù)據(jù)的完整性信息移動到報頭位置,并把附加完整性信息附到數(shù)據(jù)上。
23.按照權(quán)利要求21所述的方法,其中所述方法包括當(dāng)源已要求目標(biāo)不檢查完整性信息時,用附加完整性信息包裹數(shù)據(jù)。
24.按照權(quán)利要求21所述的方法,其中所述方法包括在把數(shù)據(jù)發(fā)送給源或主機(jī)之一之前,除去附加完整性信息。
25.按照權(quán)利要求21所述的方法,其中所述方法還包括檢查數(shù)據(jù)的完整性信息的操作。
26.按照權(quán)利要求21所述的方法,其中所述方法還包括保持多個數(shù)據(jù)塊,并檢查數(shù)據(jù)塊的完整性信息的操作。
27.一種信號承載介質(zhì),其確實(shí)包含可由數(shù)字處理設(shè)備執(zhí)行、從而執(zhí)行在存儲系統(tǒng)中實(shí)施強(qiáng)制端到端完整性檢查的操作的機(jī)器可讀指令的程序,所述操作包括在權(quán)利要求21-24任意之一中的步驟。
全文摘要
公開一種實(shí)現(xiàn)強(qiáng)制端到端完整性檢查的設(shè)備、系統(tǒng)和方法。所述設(shè)備包括一個配置成監(jiān)視來自源的數(shù)據(jù)并核實(shí)完整性信息與標(biāo)準(zhǔn)的兼容性的兼容性模塊,和一個配置成用附加完整性信息包裹來自源的數(shù)據(jù)的完整性模塊。系統(tǒng)可包括配置成通過網(wǎng)絡(luò)發(fā)送數(shù)據(jù)的源,通過網(wǎng)絡(luò)接收數(shù)據(jù)的目標(biāo)、所述設(shè)備、主存儲器模塊、存儲控制器和存儲裝置。方法包括監(jiān)視來自源的數(shù)據(jù),核實(shí)完整性信息與標(biāo)準(zhǔn)的兼容性,并用附加完整性信息包裹來自源的數(shù)據(jù)。
文檔編號G06F11/00GK1920785SQ20061010913
公開日2007年2月28日 申請日期2006年8月2日 優(yōu)先權(quán)日2005年8月26日
發(fā)明者安德魯·D.·瓦爾斯, 小威廉·G.·沃多恩, 邁克爾·J.·帕爾墨, 邁克爾·T.·本哈斯 申請人:國際商業(yè)機(jī)器公司