專利名稱:擴展計數(shù)密鑰數(shù)據(jù)的基于塊的端到端數(shù)據(jù)保護方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機,更具體地說,涉及計算存儲環(huán)境中的擴展計數(shù)密鑰數(shù)據(jù)(ECKD, extended count key data)的基于塊的端到端數(shù)據(jù)保護。
背景技術(shù):
在當今社會中,計算機系統(tǒng)常見。在工作場所、在家庭或者在學校都可見到計算機系統(tǒng)。計算機系統(tǒng)可包括處理和保存數(shù)據(jù)的數(shù)據(jù)存儲系統(tǒng)或者磁盤存儲系統(tǒng)。數(shù)據(jù)存儲系統(tǒng)或者磁盤存儲系統(tǒng)被用于處理和保存數(shù)據(jù)。存儲系統(tǒng)可包括一個或多個磁盤驅(qū)動器。在企業(yè)級計算環(huán)境中,數(shù)據(jù)存儲系統(tǒng)(或者存儲控制器)通常與計算機系統(tǒng)分離,經(jīng)由網(wǎng)絡(luò)(或者存儲網(wǎng)絡(luò))連接。經(jīng)由網(wǎng)絡(luò)訪問這種數(shù)據(jù)存儲系統(tǒng)的計算機系統(tǒng)通常被稱為服務(wù)器或主機。在一些計算環(huán)境中,可按ECKD(擴展計數(shù)密鑰數(shù)據(jù))格式來組織數(shù)據(jù)。數(shù)據(jù)可被保存在磁道序列中的多個卷上,其中每個磁道包含一個或多個ECKD記錄。每個ECKD記錄由固定長度計數(shù)字段、可選的可變長度密鑰字段、和可變長度數(shù)據(jù)字段組成。當從服務(wù)器向待寫入的數(shù)據(jù)的存儲控制器發(fā)送數(shù)據(jù)時,或者當在讀取操作期間從存儲控制器向服務(wù)器發(fā)送數(shù)據(jù)時,也可以使用這種ECKD格式。對服務(wù)器和存儲控制器之間的傳送來說,可以使用FICON或者高性能FICON(HPF)協(xié)議。這兩者都是由負責定義光纖信道標準組的INCITS Tll委員會定義的光纖信道(FC)層4協(xié)議的個別實現(xiàn)。利用ECKD協(xié)議定義的數(shù)據(jù)實體(它可以是一個或多個ECKD記錄,這種記錄的各個字段,或者整個ECKD格式磁道)借助FICON或者HPF協(xié)議在服務(wù)器和存儲控制器之間傳送。FICON和HPF按照與其它光纖信道協(xié)議,比如最廣泛使用的SCSI光纖信道協(xié)議(FCP)相同的方式,利用基礎(chǔ)的光纖信道層。
發(fā)明內(nèi)容
如前所述,當從服務(wù)器向待寫入的數(shù)據(jù)的存儲控制器發(fā)送數(shù)據(jù)時,或者當在讀取操作期間從存儲控制器向服務(wù)器發(fā)送數(shù)據(jù)時,可以使用ECKD格式。對服務(wù)器和存儲控制器之間的傳送來說,可以使用FICON或者高性能FICON(HPF)協(xié)議。ECKD數(shù)據(jù)實體被嵌入FICON或HPF信息單元(IU)中,以便在服務(wù)器和存儲控制器之間傳送。然而,F(xiàn)ICON和HPF協(xié)議的當前定義有限,并且不能被用于采用和實現(xiàn)其它標準,比如用于保護可變長度ECKD數(shù)據(jù)的TlO-DIF標準,因為TlO-DIF標準是為基于固定長度塊的I/O方案定義的基于塊的端到端數(shù)據(jù)保護。結(jié)果,效率和生產(chǎn)率被降低。因而,并且鑒于上面所述,提供了計算環(huán)境中的擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的基于塊的端到端數(shù)據(jù)保護的各種例證方法、系統(tǒng)和計算機程序產(chǎn)品實施例。在一個實施例中,只是作為例子,按塊邊界格式使信息單元(IU)對齊。向每個IU中添加塊保護報尾數(shù)據(jù)。除了上這例證的方法實施例之外,還提供其它例證的系統(tǒng)和計算機產(chǎn)品實施例,所述其它例證的系統(tǒng)和計算機產(chǎn)品實施例帶來有關(guān)的優(yōu)點。提供上述發(fā)明內(nèi)容是為了簡要地介紹下面在具體實施方式
中進一步說明的概念的選擇。發(fā)明內(nèi)容部分并不意圖確定要求保護的主題的關(guān)鍵特征或者基本特征,也不意圖用于幫助確定要求保護的主題的范圍。要求保護的主題并不局限于解決背景技術(shù)中提到的任意或者所有缺點的實現(xiàn)。
為了易于理解本發(fā)明的優(yōu)點,將參考在附圖中圖解說明的具體實施例,提供上面簡要描述的發(fā)明的更具體說明。顯然這些附圖描述本發(fā)明的實施例,于是不應(yīng)視為對本發(fā)明范圍的限制,將利用附圖,更具體和詳細地說明和解釋本發(fā)明,附圖中:圖1圖解說明具有其中可實現(xiàn)本發(fā)明的各個方面的例證存儲設(shè)備的計算存儲環(huán)境;圖2是示出其中可實現(xiàn)本發(fā)明的各個方面的計算存儲環(huán)境中的主機和存儲控制器的硬件結(jié)構(gòu)的例證方框圖;圖3A-B是圖解說明基于第一種實現(xiàn)的接收擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的寫入請求的例證方法的流程圖;圖4A-B是圖解說明基于第一種實現(xiàn)的接收擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的讀取請求的例證方法的流程圖;圖5A是圖解說明基于第二種實現(xiàn)的接收擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的寫入請求的例證方法的流程圖;圖5B是圖解說明基于第二種實現(xiàn)的接收擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的讀取請求的例證方法的流程圖;圖6圖解說明示出可變長度ECKD數(shù)據(jù)的基于塊的端到端數(shù)據(jù)保護的例證方框圖;圖7圖解說明示出借助小型計算機系統(tǒng)接口(SCSI)標準數(shù)據(jù)保護報尾的可變長度ECKD數(shù)據(jù)的基于塊的端到端數(shù)據(jù)保護的例證方框圖;圖8圖解說明示出基于第一種實現(xiàn)的擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的傳送的例證方框圖;圖9圖解說明示出基于第二種實現(xiàn)的擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的傳送的例證方框圖;圖10圖解說明示出基于第一種實現(xiàn),傳送擴展計數(shù)密鑰數(shù)據(jù)(ECKD)以便對齊ECKD數(shù)據(jù)的硬件結(jié)構(gòu)的例證方框圖;圖11圖解說明示出基于第二種實現(xiàn),傳送擴展計數(shù)密鑰數(shù)據(jù)(ECKD)以便對齊ECKD數(shù)據(jù)的硬件結(jié)構(gòu)的例證方框圖;圖12圖解說明示出就第一種或第二種實現(xiàn)來說,用于防止丟失和/或錯位塊的參考標記的例證方框圖;圖13圖解說明示出就第二種實現(xiàn)來說,用于防止丟失和/或錯位塊的參考標記的例證方框圖;圖14是圖解說明利用第一種實現(xiàn),進行擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的寫入操作的例證方法的流程圖;圖15是圖解說明利用第二種實現(xiàn),進行擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的寫入操作的例證方法的流程圖16A圖解說明示出在主機內(nèi)存和存儲介質(zhì)中的擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的對齊的例證方框圖;圖16B圖解說明示出基于第一種實現(xiàn),只對IU進行的擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的傳送的對齊的例證方框圖;以及圖16C圖解說明示出基于第二種實現(xiàn),擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的傳送的對齊的例證方框圖。
具體實施例方式在系統(tǒng)z大型機上,數(shù)據(jù)一般是按照ECKD(擴展計數(shù)密鑰數(shù)據(jù))格式組織的。數(shù)據(jù)可被保存在磁道序列中的多個卷上,其中每個磁道包含一個或多個ECKD記錄。每個記錄由固定長度計數(shù)字段、可選的可變長度密鑰字段和可變長度數(shù)據(jù)字段組成。當從服務(wù)器向待寫入的數(shù)據(jù)的存儲控制器發(fā)送數(shù)據(jù)時,或者當在讀取操作期間從存儲控制器向服務(wù)器發(fā)送數(shù)據(jù)時,可以使用這種ECKD格式。對服務(wù)器和存儲控制器之間的傳送來說,可以使用FICON或者高性能FICON(HPF)協(xié)議(FIC0N也是IBM考慮到大型計算機的數(shù)據(jù)存儲要求而開發(fā)的實現(xiàn)FICON協(xié)議的I/O信道的名稱)。FICON和HPF都是由負責定義光纖信道標準組的INCITS Tll委員會定義的光纖信道(FC)層4協(xié)議的個別實現(xiàn)。FICON和HPF按照與其它光纖信道協(xié)議,比如最廣泛使用的SCSI光纖信道協(xié)議(FCP)相同的方式,使用基礎(chǔ)的光纖信道層。就FC協(xié)議來說,可以按信息單元(IU)在邏輯上組織要傳送的數(shù)據(jù),通過利用由較低的FC層提供的設(shè)施,在服務(wù)器和存儲控制器之間交換所述IU。就利用FICON或HPF協(xié)議傳送的ECKD數(shù)據(jù)來說,F(xiàn)C IU可包含一個或多個ECKD記錄和/或所述記錄的一個或多個字段。較低的FC層還防止光纖信道鏈路上的數(shù)據(jù)損壞。然而,由于這種保護信息可被檢查,并且可能被存儲區(qū)域網(wǎng)(SAN)中的組件(例如,被主機總線適配器(HBA)和光纖信道交換機)去除和再生,F(xiàn)ICON和HPF協(xié)議以IU為基礎(chǔ)在FC層4上提供額外的端到端保護。為此,保護數(shù)據(jù)可由服務(wù)器添加到每個IU中,并在出站數(shù)據(jù)傳送的情況下由存儲控制器再次檢查和去除,反過來對入站傳送來說也是一樣。這種方案防止可由上述SAN組件引起的數(shù)據(jù)損壞。保護信息由關(guān)于IU中的所有數(shù)據(jù)計算的被添加到每個IU的結(jié)尾的循環(huán)冗余檢驗(CRC)字段組成??蛇x的是,就出站傳送來說,也可存在保護IU的各個片段的中間循環(huán)冗余檢驗(CRC)。這種選項可用于在IU包含多個ECKD記錄或字段的情況下,保護單獨的ECKD記錄或字段。當使用中間CRC時,可以利用指定CRC字段在數(shù)據(jù)流內(nèi)的位置的目錄結(jié)構(gòu),所述目錄結(jié)構(gòu)是以也作為IU的一部分的元數(shù)據(jù)的形式傳送的。如果沒有該信息,那么接收存儲控制器不能區(qū)分用戶數(shù)據(jù)和保護數(shù)據(jù),因此不能完成中間CRC的必需檢驗。在分布式(無大型機)世界中,可按固定長度的塊來組織數(shù)據(jù),在這種情況下,塊長度通常為512字節(jié),或者512字節(jié)的倍數(shù),比如4K或8K字節(jié)。相同的固定塊格式(例如,在塊邊界上對齊的數(shù)據(jù))可被用于服務(wù)器和存儲控制器之間的數(shù)據(jù)傳輸,也可被用于把數(shù)據(jù)保存在設(shè)備介質(zhì)上。設(shè)備介質(zhì)是按用邏輯單元編號(LUN)尋址的邏輯單元(設(shè)備)來組織的,這種邏輯單元上的固定尺寸塊是按簡單的順序次序來組織的,每個塊是通過在O到某個最大整數(shù)(取決于邏輯單元的尺寸(存儲容量))的范圍內(nèi)的邏輯塊地址(LBA)來尋址的。
利用光纖信道組的FCP的分布式系統(tǒng)(有時也稱為“開放”系統(tǒng))過去一直不支持如上對FICON和HPF所述的端到端數(shù)據(jù)保護。然而近年來,專有機制試圖填補該空白。此外,定義SCSI標準組的INCITS TlO委員會通過向每個數(shù)據(jù)塊添加8字節(jié)數(shù)據(jù)完整性字段(DIF),提出了一種端到端數(shù)據(jù)保護標準。因此,通常512字節(jié)塊的長度會被增大到520字節(jié)。根據(jù)ANSI委員會TlO和該保護數(shù)據(jù)字段的名稱(DIF),這種保護機制被稱為TlO-DIFo TlO-DIF可被用于保護傳輸中的數(shù)據(jù)(data-1n-flight)和保護靜止的數(shù)據(jù)(dataat rest),這意味著在寫入操作的情況下,存儲控制器不剝離保護數(shù)據(jù)和添加專用保護數(shù)據(jù)以便把數(shù)據(jù)保存在設(shè)備介質(zhì)上。相反,TlO-DIF保護數(shù)據(jù)與用戶數(shù)據(jù)一起被寫入設(shè)備介質(zhì)。因而,在讀取的情況下,用戶數(shù)據(jù)連同保護數(shù)據(jù)一起被再次發(fā)送給服務(wù)器。因此,服務(wù)器接收它最初生成的相同保護數(shù)據(jù)。TlODIF將假定保護數(shù)據(jù)在服務(wù)器和設(shè)備介質(zhì)之間的路徑上,比如在交換機中和在存儲控制器中被檢查。特別地,重要的是存儲控制器在數(shù)據(jù)被寫入介質(zhì)之前檢查所述數(shù)據(jù),以避免損壞的數(shù)據(jù)被寫入,只有當再次讀回數(shù)據(jù)時(可能在晚得多的時刻),才檢測損壞。然而,就利用FICON和HPF協(xié)議傳送的ECKD數(shù)據(jù)來說,不能利用分布式系統(tǒng)中的這些進展。即使存儲控制器支持TlO DIF, IU級保護數(shù)據(jù)也需要被轉(zhuǎn)換成存儲控制器特有的保護數(shù)據(jù),然而通常,當被記錄在設(shè)備介質(zhì)上時,ECKD記錄被映射到固定塊。為了解決上述低效率和性能問題,圖解說明的實施例提供各種機制,所述各種機制用于提供可變長度ECKD數(shù)據(jù)的基于塊的端到端數(shù)據(jù)保護協(xié)議。例如,所述各種機制以塊邊界格式對齊信息單元(IU)。具有保護數(shù)據(jù)的小型計算機系統(tǒng)接口(SCSI)標準報尾被添加到IU的每個塊中。所述各種機制以塊邊界格式(例如,固定塊)對齊信息單元(IU)。如果需要,可通過向IU添加填充數(shù)據(jù),獨立地對齊IU。具有保護數(shù)據(jù)的小型計算機系統(tǒng)接口(SCSI)標準報尾被添加到IU的每個塊中。至少一個請求連同IU—起被發(fā)送給存儲控制器。所述請求至少是寫入請求和/或讀取請求。響應(yīng)于存儲控制器收到所述請求,對寫入請求來說,IU被保存在存儲設(shè)備上,而對讀取請求來說,IU被轉(zhuǎn)換成IU序列。具有保護數(shù)據(jù)的SCSI標準報尾被添加到所述IU序列的每個IU的每個塊中。此外,在一個實施例中,所述各種機制改變FICON和HPF協(xié)議,以使用基于塊的TlO-DIF保護方案,而不是專用的基于IU的保護方案。這意味著當存儲組織的基于塊的概念被應(yīng)用于存儲控制器上大型機類數(shù)據(jù)時,存儲組織的基于塊的概念被傳播到服務(wù)器側(cè)。這是有利的,尤其是當存儲控制器使用TlO DIF方案來保護靜止的數(shù)據(jù)時更是如此,使得在一些情況下,在主機生成并在從主機到存儲控制器的數(shù)據(jù)傳送期間用于數(shù)據(jù)的保護(傳輸中的數(shù)據(jù)的保護)的基于塊的TlO DIF保護數(shù)據(jù)也可被用于保護保存在設(shè)備介質(zhì)上的數(shù)據(jù),以及當該數(shù)據(jù)再次被讀回時在從存儲控制器到主機的后續(xù)數(shù)據(jù)傳送期間,用于再次保護該數(shù)據(jù)。所述各種機制提供真實的端到端數(shù)據(jù)保護,其中在服務(wù)器上創(chuàng)建的保護數(shù)據(jù)連同用戶數(shù)據(jù)一起被保存在設(shè)備介質(zhì)上,并在后續(xù)讀取時被送回服務(wù)器以便核實。因此,避免了從FICON CRC到TlO-DIF CRC和從TlO-DIF CRC到FICON CRC的高成本轉(zhuǎn)換。對于大型機類數(shù)據(jù),本發(fā)明的機制還在SAN組件(例如,主機總線適配器(HBA)和光纖信道交換機)中采用對TlO-DIF的支持。在一個實施例中,TlODIF報尾包含可用于防止丟失塊或錯位塊的其它字段(除了保持CRC的保護字段之外)。這些字段也可被用于對于大型機數(shù)據(jù)的類似種類的保護。此外,本發(fā)明的機制有助于容易地建立允許ECKD的控制單元(例如,包括端到端(E2E)檢驗),和允許已把本發(fā)明的相同數(shù)據(jù)格式用于其固定塊磁盤上的存儲布局的新的ECKD控制單元避免傳輸中的數(shù)據(jù)和靜止的數(shù)據(jù)的保護數(shù)據(jù)之間的高成本轉(zhuǎn)換。圖1圖解說明了具有其中可以實現(xiàn)本發(fā)明的各個方面的例證存儲設(shè)備的計算環(huán)境10。服務(wù)器24包括中央處理單元(CPU) 12,CPU 12連接到通信端口 18和內(nèi)存設(shè)備16。通信端口 18與通信網(wǎng)絡(luò)20和/或存儲網(wǎng)絡(luò)30通信。通信網(wǎng)絡(luò)20和存儲網(wǎng)絡(luò)30可被配置成與服務(wù)器(主機)24和存儲系統(tǒng)通信,所述存儲系統(tǒng)包括存儲控制器40和存儲設(shè)備50。存儲系統(tǒng)(例如,存儲設(shè)備50)可包括按獨立磁盤冗余陣列構(gòu)成的硬盤驅(qū)動器(HDD)設(shè)備,固態(tài)設(shè)備(SSD)等。下面說明的操作可在位于系統(tǒng)10中或者其他地方的設(shè)備50上執(zhí)行,可包括相互結(jié)合地或者獨立地運行,以便實現(xiàn)本發(fā)明目的的獨立內(nèi)存設(shè)備16。內(nèi)存設(shè)備16可包括諸如電可擦可編程只讀存儲器(EEPROM)之類的內(nèi)存,或者相關(guān)設(shè)備的主機。內(nèi)存設(shè)備16和存儲設(shè)備50經(jīng)由信號承載介質(zhì)連接到CPU 12。另外,CPU 12通過通信端口 18連接到通信網(wǎng)絡(luò)20,通信網(wǎng)絡(luò)20具有附接的多個額外的計算機主機系統(tǒng)24。注意,計算存儲環(huán)境10內(nèi)的計算機系統(tǒng)可以是企業(yè)級(或者大型機類)系統(tǒng)。在這些系統(tǒng)內(nèi),大型機可被稱為主機或服務(wù)器24,并且可不包括大容量存儲設(shè)備。相反,大容量存儲設(shè)備50可由利用存儲網(wǎng)絡(luò)30連接到主機的存儲控制器40管理。多個主機24和存儲控制器40可以連接到存儲網(wǎng)絡(luò)30,使得主機可以訪問多個存儲控制器40,而存儲控制器40可被多個主機24訪問。存儲設(shè)備50可被集成到存儲控制器40,和/或可以是同樣經(jīng)由某種外部點對點連接或者存儲網(wǎng)絡(luò)30 (可被連接并用于從存儲控制器40到存儲設(shè)備50的通信)連接的獨立實體??梢源嬖诖鎯刂破?0和存儲設(shè)備50被物理集成到主機中,從而存在互連多個主機的通信網(wǎng)絡(luò)20的情況。圖2是示出其中可以實現(xiàn)本發(fā)明的各個方面的計算存儲環(huán)境中的主機和存儲控制器的硬件結(jié)構(gòu)的例證方框圖200。參見圖2,圖中示出了主計算機210、220、225,主計算機210,220,225都包括作為計算存儲環(huán)境200的一部分用于進行數(shù)據(jù)處理的中央處理單元。主機(物理或虛擬服務(wù)器)210、220和225可以是在計算存儲環(huán)境200中實現(xiàn)本發(fā)明目的的一個或多個新的物理服務(wù)器或虛擬服務(wù)器。存儲網(wǎng)絡(luò)連接260可以是光纖信道架構(gòu),光纖信道點對點鏈路,光纖信道仲裁環(huán)路,以太網(wǎng)光纖信道架構(gòu)或點對點鏈路,F(xiàn)ICON或ESCONI/O接口,任何其它I/O接口種類,無線網(wǎng)絡(luò),有線網(wǎng)絡(luò),LAN, WAN,異構(gòu)、同構(gòu)、公共(B卩,因特網(wǎng))、專用網(wǎng)絡(luò),或者它們的任意組合。主機210、220、225可在本地或者分布在一個或多個位置,并且可以配有任意種類的網(wǎng)絡(luò)適配器(或者主機總線適配器)(圖2中未示出),以連接到存儲網(wǎng)絡(luò)260并與存儲控制器240通信,比如光纖信道,F(xiàn)ICON, ESC0N,以太網(wǎng),光纖,無線或同軸適配器。存儲控制器240相應(yīng)地配有適當?shù)木W(wǎng)絡(luò)適配器或者主機總線適配器241,以連接到存儲網(wǎng)絡(luò)260,從而與主機210、220和225通信。圖2中描述了計算存儲環(huán)境200內(nèi)的數(shù)據(jù)存儲系統(tǒng)290,包括存儲控制器240和存儲器230。在一個實施例中,只是作為例子,存儲控制器240可被實現(xiàn)成IBM System Storage DS8000 。 為了便于更清楚地理解這里說明的各種機制,在圖2中,存儲控制器240被示出為單個處理單元,包括將在下面更詳細說明的微處理器242、系統(tǒng)內(nèi)存243和非易失性存儲器(“NVS”)216。注意在一些實施例中,存儲控制器240由多個處理單元構(gòu)成,每個處理單元具有它們自己的處理器復(fù)合體和系統(tǒng)內(nèi)存,并由計算存儲環(huán)境200內(nèi)的專用網(wǎng)絡(luò)互連。存儲器230可以由一個或多個存儲設(shè)備,比如通過直接(點對點)連接、存儲網(wǎng)絡(luò)或者某種其它種類的連接(比如總線)連接到存儲控制器240的存儲陣列構(gòu)成,或者可被集成到存儲控制器240中。在一些實施例中,包括在存儲器230中的設(shè)備可被連接成環(huán)路結(jié)構(gòu)。存儲控制器240管理存儲器230并便利預(yù)定給存儲器230的寫入和讀取請求的處理。存儲控制器240的系統(tǒng)內(nèi)存243保存程序指令和數(shù)據(jù),微處理器242可以訪問所述程序指令和數(shù)據(jù)以便執(zhí)行與管理存儲器230相關(guān)的功能和方法步驟,和執(zhí)行本發(fā)明的關(guān)于計算存儲環(huán)境中的擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的基于塊的端到端數(shù)據(jù)保護的步驟和方法。在一個實施例中,系統(tǒng)內(nèi)存243包括用于計算存儲環(huán)境中的擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的基于塊的端到端數(shù)據(jù)保護的操作軟件250(包括這里說明的方法和操作)、與所述操作軟件250相關(guān)聯(lián)、或者與所述操作軟件250通信。如圖2中所示,系統(tǒng)內(nèi)存243還可包括或者與用于存儲器230的高速緩存245通信,這里,高速緩存245也被稱為“高速緩沖存儲器”,用于緩存“寫入數(shù)據(jù)”和“讀取數(shù)據(jù)”,“寫入數(shù)據(jù)”和“讀取數(shù)據(jù)”分別指的是寫入/讀取請求及其相關(guān)數(shù)據(jù)。在一個實施例中,高速緩存245分配在系統(tǒng)內(nèi)存243之外的設(shè)備中,然而仍然能夠被微處理器242訪問,除了實現(xiàn)這里所述的操作之外,還可用于提供防止數(shù)據(jù)丟失的額外安全性。在一些實施例中,高速緩存245是用易失性存儲器和非易失性存儲器(NVS)實現(xiàn)的,并經(jīng)由局域總線(圖2中未示出)耦接到微處理器242,以便提高計算存儲環(huán)境200內(nèi)的數(shù)據(jù)存儲系統(tǒng)290的性能。包括在存儲控制器240中的NVS216能夠被微處理器242訪問,并用于為在其它附圖中說明的本發(fā)明的操作和執(zhí)行提供額外的支持。NVS 216也可被稱作“永久”高速緩存或者“高速緩沖存儲器”,并且是用可利用或者可不利用外部電源來保持保存于其中的數(shù)據(jù)的非易失性存儲器實現(xiàn)的。出于適合于實現(xiàn)本發(fā)明的目的的任何意圖,NVS可被保存在高速緩存245內(nèi)。在一些實施例中,諸如電池之類的備用電源(圖2中未示出)向NVS 216供給足夠的電力,以便在計算存儲環(huán)境200內(nèi)的數(shù)據(jù)存儲系統(tǒng)290失去電力的情況下,保持保存在其中的數(shù)據(jù)。在一些實施例中,NVS 216的容量小于或等于高速緩存245的總?cè)萘?。存儲?30可物理地由一個或多個存儲設(shè)備,比如存儲器陣列構(gòu)成。存儲器陣列是諸如硬盤之類的單獨存儲設(shè)備的邏輯分組。在一些實施例中,存儲器230由JBOD(磁盤簇)陣列或者RAID (獨立磁盤冗余陣列)陣列構(gòu)成。物理存儲器陣列的集合可被進一步結(jié)合以形成區(qū)塊(rank),區(qū)塊使物理存儲器和邏輯結(jié)構(gòu)分離。區(qū)塊中的存儲空間可被分配成邏輯卷,邏輯卷定義在寫入/讀取請求中規(guī)定的存儲位置。在一個實施例中,只是作為例子,如圖2中所示的存儲系統(tǒng)可包括邏輯卷,或者簡稱為“卷”,邏輯卷可具有不同種類的分配。存儲器230a、230b和230η被示出為計算存儲環(huán)境200內(nèi)的數(shù)據(jù)存儲系統(tǒng)290中的區(qū)塊,并在這里被稱為區(qū)塊230a、230b和230η。區(qū)塊可以在計算存儲環(huán)境200內(nèi)的數(shù)據(jù)存儲系統(tǒng)290的本地,或者可以位于物理上的遠程位置。換句話說,本地存儲控制器可以與遠程存儲控制器連接,并管理遠程位置的存儲器。區(qū)塊230a被示出配置有兩個完整卷234和236以及一個部分卷232a。區(qū)塊230b被示出具有另一個部分卷232b。從而,卷232是跨區(qū)塊230a和230b分配的。區(qū)塊230η被示出被完全分配給卷238-即,區(qū)塊230η指的是卷238的整個物理存儲器。根據(jù)上面的例子,會理解區(qū)塊可被配置成包括一個或多個部分卷和/或完整卷。卷和區(qū)塊可被進一步分成所謂的“磁道”,磁道代表固定的存儲塊。因此,磁道與給定卷相關(guān)聯(lián),并且可能與給定區(qū)塊相關(guān)聯(lián)。存儲控制器240可包括控制器ECKD塊保護單元255。所述控制器ECKD塊保護單元255可包括傳送塊保護單元247、IU對齊單元260、字段對齊單元264、存儲塊保護單元266和塊保護核實單元268,以幫助計算存儲環(huán)境中的擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的基于塊的端到端數(shù)據(jù)保護??刂破鱁CKD塊保護單元255及其子組件,即傳送塊保護單元247、IU對齊單元260、字段對齊單元264、存儲塊保護單元266和塊保護核實單元268可以與存儲控制器240,主機210、220、225以及存儲設(shè)備230的每個組件一起工作。控制器ECKD塊保護單元255及其子組件,即傳送塊保護單元247、IU對齊單元260、字段對齊單元264、存儲塊保護單元266和塊保護核實單元268在結(jié)構(gòu)上可以是一起協(xié)同工作以便實現(xiàn)計算存儲環(huán)境中的擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的基于塊的端到端數(shù)據(jù)保護的一個完整組件,或者可以是多個單獨的組件??刂破鱁CKD塊保護單元255及其子組件,即傳送塊保護單元247、IU對齊單元260、字段對齊單元264、存儲塊保護單元266和塊保護核實單元268也可以位于存儲控制器240的高速緩存245或其它組件中,以便實現(xiàn)本發(fā)明的目的。存儲控制器240可由用于控制對于主計算機210、220、225的光纖信道協(xié)議的網(wǎng)絡(luò)適配器(或主機總線適配器)241、用于執(zhí)行操作軟件250的指令的微處理器242、內(nèi)存243、用于保存控制存儲控制器240的操作的微程序(操作軟件)250、控制數(shù)據(jù)和后面說明的每個表格的非易失性存儲器216、用于臨時保存(緩沖)數(shù)據(jù)的高速緩存245、用于幫助高速緩存245讀寫數(shù)據(jù)的緩沖器244、用于控制對往來于存儲設(shè)備230的數(shù)據(jù)傳送進行控制的協(xié)議的設(shè)備適配器270、包括其子組件,S卩,傳送塊保護單元247、IU對齊單元260、字段對齊單元264、存儲塊保護單元266和塊保護核實單元268在內(nèi)的控制器ECKD塊保護單元255構(gòu)成。本發(fā)明可以實現(xiàn)多個緩沖器244,以幫助計算存儲環(huán)境中的擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的基于端到端的數(shù)據(jù)保護。微處理器242可被配置成執(zhí)行多種算法/操作,操作軟件250可被配置成定義算法/操作協(xié)議,以及內(nèi)存243可被配置成保存數(shù)據(jù)程序和數(shù)據(jù)程序的數(shù)據(jù)。緩沖器244可被配置成傳送數(shù)據(jù)。高速緩存245和NVS 216可被酌情使用,但并不是這里說明的各種機制的操作所必不可少的。在一個實施例中,只是作為例子,主計算機或一個或多個物理或虛擬服務(wù)器21、220、225和存儲控制器240通過存儲網(wǎng)絡(luò)(這可以是光纖信道)260連接,存儲網(wǎng)絡(luò)260也被稱為“架構(gòu)”,它包括一個或多個網(wǎng)絡(luò)交換機、導向器或者其它連網(wǎng)組件。在一個實施例中,只是作為例子,將說明圖2中所示的系統(tǒng)的操作。微處理器242控制內(nèi)存243保存來自主服務(wù)器(物理或虛擬)210的命令信息和用于識別主服務(wù)器(物理或虛擬)210的信息。網(wǎng)絡(luò)適配器241,緩沖器244,高速緩存245,操作軟件250,微處理器242,內(nèi)存243,NVS216,和包括其子組件247、260、264、266、268在內(nèi)的控制器ECKD塊保護單元255以及設(shè)備適配器270相互通信,并且可以是獨立的或者一個單獨組件。另外,幾個組件(如果不是所有組件的話),比如操作軟件250可包含在內(nèi)存243內(nèi),以便傳送計算存儲環(huán)境中的擴展計數(shù)密鑰數(shù)據(jù)(ECKD)??紤]到適合于本發(fā)明的目的,存儲設(shè)備內(nèi)的每個組件可以鏈接在一起,并且相互通信。如前所述,圖解說明的實施例提供用于計算存儲環(huán)境內(nèi)的擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的基于塊的端到端數(shù)據(jù)保護的各種機制??梢詾榭勺冮L度ECKD數(shù)據(jù)的基于塊的端到端數(shù)據(jù)保護建立各種協(xié)議。在一個實施例中,信息單元(IU)被排列成塊邊界格式。這些信息單元(IU)可包含一個或多個ECKD數(shù)據(jù)字段和記錄。塊邊界格式可以是IU的固定邊界格式。IU可包含ECKD數(shù)據(jù)和控制數(shù)據(jù)(元數(shù)據(jù)),并且可以對控制數(shù)據(jù)連同ECKD數(shù)據(jù)一起,或者如果需要,單獨地進行本發(fā)明的一些或者所有機制。通過添加填充數(shù)據(jù),可作為信息單元(IU)的一部分,獨立地對齊ECKD數(shù)據(jù)和控制數(shù)據(jù)。在一些情況下,可能不需要填充數(shù)據(jù)。填充數(shù)據(jù)可以在IU的結(jié)尾,并且另外在IU內(nèi)的控制數(shù)據(jù)部分或ECKD數(shù)據(jù)部分的結(jié)尾。塊保護數(shù)據(jù)(例如,帶有保護數(shù)據(jù)的小型計算機系統(tǒng)接口(SCSI)標準報尾)可被添加到IU的每個塊。帶有保護數(shù)據(jù)的SCSI標準報尾可以是TlO DIF數(shù)據(jù),并且可被添加到IU的每個塊的結(jié)尾。寫入和/或讀取請求可以與IU —起被發(fā)送。如果接收的請求(例如,存儲控制器接收的請求)是寫入請求,那么包含在IU中的ECKD數(shù)據(jù)可被保存在存儲設(shè)備上。當被保存在存儲設(shè)備上時,包含在IU中的ECKD數(shù)據(jù)可被重新組裝。另一方面,如果請求不是寫入請求,那么可確定接收的請求(例如,存儲控制器接收的請求)是否是讀取請求。如果是,IU可被轉(zhuǎn)換成IU序列,所述IU序列把從設(shè)備讀取的ECKD數(shù)據(jù)傳送給服務(wù)器。帶有保護數(shù)據(jù)的SCSI標準報尾可以用所述IU序列的每個塊傳送。當被放入IU中以便傳送時,從設(shè)備讀取的ECKD數(shù)據(jù)可被重新組裝。另外應(yīng)當注意,為了使SCSI標準報尾(例如,塊保護數(shù)據(jù))被添加到IU中,IU的數(shù)據(jù)流被邏輯地切成塊尺寸的組塊(例如,512字節(jié)的組塊)。在最后一個組塊小于塊尺寸的情況下,附加填充數(shù)據(jù),直到到達塊尺寸為止。隨后,把塊保護數(shù)據(jù)(比如8字節(jié)的TlO DIF報尾)附加到每個塊。圖3A和38更詳細地描述了按照第一種實現(xiàn),用于接收寫入請求(圖3A)和讀取請求(圖3B)的處理。在一個實施例中,主機可以只進行IU的對齊(與包含在IU中的每個ECKD字段的對齊相比),在這種情況下,存儲控制器進行以下操作。對于寫入請求/操作,各種機制核實每個塊的塊保護報尾,從每個塊中剝除塊保護數(shù)據(jù)報尾,以及從IU的結(jié)尾剝除填充數(shù)據(jù),并重排ECKD數(shù)據(jù),使得通過向每個ECKD字段的結(jié)尾添加適當?shù)奶畛鋽?shù)據(jù)(如果需要的話)而使每個ECKD字段被塊對齊。所述各種機制可以向這種新的數(shù)據(jù)結(jié)構(gòu)的每個塊添加塊保護報尾,然后將其保存在存儲介質(zhì)上。對于讀取請求/操作,各種機制核實從存儲介質(zhì)讀取的數(shù)據(jù)的每個塊的塊保護報尾,重排數(shù)據(jù),使得通過從ECKD字段的每個塊除去塊保護數(shù)據(jù)而僅僅整個IU被塊對齊,從每個ECKD字段的結(jié)尾除去填充數(shù)據(jù),向IU的結(jié)尾添加新的填充數(shù)據(jù),向這種新的數(shù)據(jù)結(jié)構(gòu)的每個塊添加塊保護數(shù)據(jù),然后把IU發(fā)送給主機。當主機對每個ECKD字段進行對齊時,存儲控制器進行以下操作。各種機制可對寫入請求/操作進行接收的IU的每個塊的塊保護數(shù)據(jù)的核實,隨后把數(shù)據(jù)按照從主機接收時的相同格式,包括塊保護數(shù)據(jù),保存在存儲介質(zhì)上。對于讀取請求/操作,各種機制可核實從存儲介質(zhì)讀取的每個塊的塊保護數(shù)據(jù),隨后把相同格式的數(shù)據(jù),包括塊保護數(shù)據(jù)放入IU中,然后把IU發(fā)送給主機。更準確地說,在存儲控制器進行數(shù)據(jù)的重排的第一種情況下,必須遵循的是對于讀取和寫入來說,它都首先核實保護數(shù)據(jù),然后剝除保護數(shù)據(jù),并創(chuàng)建新的保護數(shù)據(jù)。在不進行重新對齊的第二種情況下,這種核實步驟是可選的。圖3A-B是圖解說明了按照圖解說明的實施例的各種機制,基于第一種實現(xiàn)的接收擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的寫入請求的例證方法300的流程圖。通過把寫入數(shù)據(jù)保存在IU的數(shù)據(jù)區(qū)中(步驟304),開始方法300 (步驟302)。方法300將判定IU數(shù)據(jù)的結(jié)果長度是否是塊尺寸的倍數(shù)(步驟306)。如果否,那么方法300將向IU數(shù)據(jù)添加填充字節(jié),使得所述長度變成塊尺寸的整數(shù)倍(步驟308)。如果是,那么跳過步驟308?,F(xiàn)在塊保護數(shù)據(jù)被添加到IU數(shù)據(jù)的每個塊中(步驟310)。IU被發(fā)送給存儲控制器(步驟312)。方法300將從主機接收指示寫入請求的IU,并核實所有塊保護數(shù)據(jù)(步驟314)。任何錯誤可被發(fā)送以便進行錯誤通知處理,并且可以停止處理而不保存數(shù)據(jù),并向主機發(fā)送通知。方法300將判定IU數(shù)據(jù)是否由單個ECKD字段組成(步驟316)。如果是,那么方法300將把該數(shù)據(jù)寫入磁盤(步驟348)。如果否,那么“需要調(diào)整指示符”被初始化為假(步驟318)。把“當前字段指示符”設(shè)定到IU數(shù)據(jù)區(qū)中的第一個ECKD字段(步驟320)。現(xiàn)在方法300進入關(guān)于IU中的所有ECKD字段的循環(huán)。就該循環(huán)中的第一個操作來說,方法300檢查“需要調(diào)整指示符”是否為假(步驟322)。如果否,那么方法300將取回屬于當前ECKD字段的數(shù)據(jù),并將其附加到I/O緩沖器中的數(shù)據(jù)(如果有的話)(步驟324)。隨后向I/O緩沖器中添加填充字節(jié),使得ECKD字段被塊對齊(步驟326)。為ECKD字段中的每個塊創(chuàng)建和添加塊保護數(shù)據(jù)(步驟328)。返回步驟322,如果“需要調(diào)整指示符”(仍然)為假,那么方法300將判定ECKD字段是否結(jié)束于塊邊界(步驟330)。如果否,那么為屬于該ECKD字段的所有各個塊(最后一個塊除外)生成塊保護數(shù)據(jù),然后把包括其塊保護數(shù)據(jù)的這些塊附加到已在I/O緩沖器中的數(shù)據(jù)(如果有的話)(步驟332)。屬于當前ECKD字段的最后一個塊的數(shù)據(jù)被取出并保存到I/O緩沖器中(步驟334)。向I/O緩沖器中的所述最后一個塊添加填充字節(jié),使得它被塊對齊(步驟336)。為所述最后一個塊創(chuàng)建和添加塊保護數(shù)據(jù)(步驟338)。“需要調(diào)整指示符”被設(shè)定成為真(步驟340)。返回步驟330,如果ECKD字段確實結(jié)束于塊邊界(步驟330),那么可為每個塊生成塊保護數(shù)據(jù)(未示出),包括其塊保護數(shù)據(jù)的所有塊被附加到已在I/o緩沖器中的數(shù)據(jù)(如果有的話)(步驟342)。在步驟328和342之后,方法300都將檢查ECKD字段是否是IU中的最后一個ECKD字段(步驟344)。如果否,那么方法300將把“當前字段指示符”設(shè)定到IU數(shù)據(jù)區(qū)中的下一個ECKD字段(步驟346),然后返回步驟322。如果是,那么方法300將把數(shù)據(jù)寫入磁盤中(步驟348),然后方法300結(jié)束(步驟349)。圖4A-B是圖解說明以按照圖解說明的實施例的機制的第一種實現(xiàn)為基礎(chǔ),接收擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的讀取請求的例證方法350的流程圖。通過把IU發(fā)送給存儲控制器(步驟354),開始方法350 (步驟352)。存儲控制器從主機接收指示讀取請求的IU (步驟355)。方法350將從磁盤讀取數(shù)據(jù),然后首先把數(shù)據(jù)保存在內(nèi)部I/O緩沖器中(步驟358)?!靶枰{(diào)整指示符”被初始化為假(步驟360)。把“當前字段指示符”設(shè)定到I/O緩沖器中的第一個ECKD字段(步驟362)。方法350現(xiàn)在進入關(guān)于I/O緩沖器中的所有ECKD字段的循環(huán)。作為所述循環(huán)中的第一個操作,將判定當前ECKD字段是否是IO緩沖器中的最后一個(或者唯一的)字段(步驟363)。如果否,那么將判定“需要調(diào)整指示符”是否為假(步驟364)。如果是(即,所述指示符仍然被設(shè)定為假),那么方法350將判定當前ECKD字段是否結(jié)束于塊邊界(步驟374)。如果是,那么方法350將把包括填充數(shù)據(jù)和塊保護數(shù)據(jù)的所有塊附加到IU數(shù)據(jù)區(qū)(步驟375),隨后轉(zhuǎn)移到步驟368。
如果ECKD字段不結(jié)束于塊邊界(步驟374),那么除包括塊保護數(shù)據(jù)的最后一個塊之外的所有各個塊被附加到已在IU數(shù)據(jù)區(qū)中的數(shù)據(jù)(步驟378)。IO緩沖器中的該ECKD字段的最后一個塊的數(shù)據(jù)部分(但無填充數(shù)據(jù)和塊保護數(shù)據(jù))也被取回和保存在IU數(shù)據(jù)區(qū)中(步驟380)。隨后,“需要調(diào)整指示符”被設(shè)定為真(步驟382),然后方法350進入步驟 368。返回步驟364,如果“需要調(diào)整指示符”不為假,那么方法350將取回屬于當前ECKD字段的數(shù)據(jù)(無任何填充數(shù)據(jù)和塊保護數(shù)據(jù)),并將其附加到已在IU緩沖器中的數(shù)據(jù)。為因該操作而變得完全充滿的IU緩沖器中的每個塊創(chuàng)建和添加塊保護數(shù)據(jù)(步驟366)。在步驟366、375和382之后,方法350現(xiàn)在將使“當前字段指示符”前進到I/O緩沖器中的下一個ECKD字段(步驟368),然后返回步驟363。現(xiàn)在返回步驟363,如果這是IO緩沖器中的最后一個(或者唯一的)ECKD字段,那么對于這種情況下,方法350也判定“需要調(diào)整”指示符是否仍然為假(步驟384)。如果“需要調(diào)整指示符”不為假,那么方法350將取回屬于該最后一個ECKD字段的數(shù)據(jù)(無任何填充數(shù)據(jù)和塊保護數(shù)據(jù)),并將其附加到IU緩沖器中的數(shù)據(jù)。另外,為因該操作而變得完全充滿的IU緩沖器中的每個塊創(chuàng)建和添加塊保護數(shù)據(jù)(步驟386)。在IU緩沖器中的最后一個塊還未完全充滿數(shù)據(jù)的情況下,還將向所述最后一個塊添加填充數(shù)據(jù),以便塊對齊,另外對所述最后一個塊創(chuàng)建和添加塊保護數(shù)據(jù)(步驟388)。返回步驟384,如果需要調(diào)整指示符仍然被設(shè)定為假,那么方法350將把包括填充數(shù)據(jù)和塊保護數(shù)據(jù)的所有各個塊附加到IU數(shù)據(jù)區(qū)(步驟385)。在步驟385和388之后,方法350都將把響應(yīng)數(shù)據(jù)IU發(fā)送給主機(步驟390)?,F(xiàn)在在服務(wù)器側(cè)繼續(xù)方法350,在服務(wù)器側(cè),服務(wù)器從存儲控制器接收響應(yīng)數(shù)據(jù)IU (步驟392)。核實并去除所有的塊保護數(shù)據(jù)(步驟394)。如果需要,方法350最后將從IU的結(jié)尾除去填充字節(jié)(步驟396)。然后結(jié)束方法350 (步驟399)。在備選實施例中,對于和用戶數(shù)據(jù)一起傳送的元數(shù)據(jù)(控制數(shù)據(jù))部分(如果有的話)以及對于IU的整個用戶數(shù)據(jù)段,即使存在一個或多個ECKD記錄或字段,也可以利用第一種實現(xiàn)來進行對齊。在單個ECKD數(shù)據(jù)字段和/或記錄的傳送期間,相同的保護數(shù)據(jù)被用于傳輸中的數(shù)據(jù)和用于靜止的數(shù)據(jù)。然而,當IU包含多個ECKD記錄或字段時,存儲控制器可從它從服務(wù)器接收的IU的每個塊中剝除TlO DIF報尾,并為存儲控制器寫入設(shè)備介質(zhì)的用戶數(shù)據(jù)塊生成新的TlO DIF報尾(對讀取操作來說則反過來)。圖5A是圖解說明以按照圖解說明的實施例的機制的第二種實現(xiàn)為基礎(chǔ),接收擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的寫入請求的例證方法3000的流程圖。通過把“當前字段指示符”設(shè)定到要被寫入的數(shù)據(jù)區(qū)中的第一個ECKD字段(步驟3004)在服務(wù)器側(cè)開始方法3000(步驟3002)。方法3000將從主機內(nèi)存取回屬于當前ECKD字段的數(shù)據(jù)的連續(xù)塊尺寸的組塊,向最后一個組塊(塊)添加填充數(shù)據(jù)(如果需要的話),為每個塊創(chuàng)建塊保護數(shù)據(jù),并將塊保護數(shù)據(jù)添加到每個塊的結(jié)尾,以及把結(jié)果附加到內(nèi)部IU緩沖器(步驟3006)。方法3000將判定該ECKD是否是要被寫入的數(shù)據(jù)的最后一個ECKD字段(步驟3008)。如果不是,那么把“當前字段指示符”設(shè)定到下一個ECKD字段(步驟3010),然后返回步驟3006。如果是,那么方法3000將把該IU發(fā)送給存儲控制器(步驟3012)。現(xiàn)在,在存儲控制器側(cè)繼續(xù)方法3000。接收指示來自主機的寫入請求的IU (步驟3014)。核實每個塊的塊保護數(shù)據(jù)(步驟3016)。任何錯誤可被發(fā)送以便進行錯誤通知處理,并且可以停止處理而不保存數(shù)據(jù),通知可被發(fā)送給主機。方法3000將按照與在來自主機的IU中接收數(shù)據(jù)時相同的格式(包括所有的塊保護數(shù)據(jù)和ECKD字段填充數(shù)據(jù)),把數(shù)據(jù)寫入磁盤中(步驟3018),然后方法3000將結(jié)束(步驟3020)。圖5B是圖解說明以按照圖解說明的實施例的機制的第二種實現(xiàn)為基礎(chǔ),接收擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的讀取請求的例證方法3100的流程圖。通過向存儲控制器發(fā)送讀取請求(步驟3104),在服務(wù)器側(cè)開始方法3100 (步驟3102)?,F(xiàn)在在存儲控制器側(cè)繼續(xù)方法3100,從主機接收讀取請求(步驟3106)。方法3100將從磁盤讀取請求的ECKD字段,核實每個塊的塊保護數(shù)據(jù),按照與從存儲介質(zhì)讀取數(shù)據(jù)時相同的格式,包括所有的塊保護數(shù)據(jù)和可能的ECKD字段填充數(shù)據(jù),把數(shù)據(jù)放入IU緩沖器中(步驟3108)。響應(yīng)數(shù)據(jù)IU被發(fā)送給主機(步驟3110)?,F(xiàn)在再次在主機側(cè)繼續(xù)方法3100。從存儲控制器接收響應(yīng)數(shù)據(jù)IU(步驟3112)。把“當前字段指示符”設(shè)定到IU數(shù)據(jù)區(qū)中的第一個ECKD字段(步驟3114)。方法3100將從IU數(shù)據(jù)區(qū),取回屬于當前ECKD字段的數(shù)據(jù)的連續(xù)塊尺寸的組塊,核實并從每個塊剝除塊保護數(shù)據(jù),從最后一個塊除去填充數(shù)據(jù)(如果有的話),然后把結(jié)果附加到主機存儲緩沖器(步驟3116)。方法3100將判定該ECKD字段是否是IU的最后一個ECKD字段(步驟3118)。如果不是,那么把“當前字段指示符”設(shè)定到IU數(shù)據(jù)區(qū)中的下一個ECKD字段(步驟3120),然后返回步驟3116。如果是,那么方法3100結(jié)束(步驟3122)。在備選實施例中,對齊是按照每個ECKD字段的第二種實現(xiàn)進行的。存儲控制器可以把相同的TlO DIF報尾用于傳輸中的數(shù)據(jù)和靜止的數(shù)據(jù)。然而,存儲控制器可仍然利用不同的方案更緊湊地記錄計數(shù)字段和密鑰字段,在這種情況下,對于這些類型的字段,可能需要調(diào)整保護數(shù)據(jù)。從性能的觀點來看,這不是關(guān)鍵性的,因為密鑰字段很少使用,而在ECKD卷的特定磁道被格式化之后,計數(shù)字段通常不再被訪問。應(yīng)注意的是這里說明的方法僅僅舉例圖解說明了在單個IU中傳送數(shù)據(jù)的情形,然而圖解說明的實施例的各種機構(gòu)可被容易地擴展和適用于其中要傳送的數(shù)據(jù)分布在IU序列中,和/或其中(在寫入操作的情況下)IU包含不被寫入設(shè)備的元數(shù)據(jù)的狀況和情形。如下所述,在一個實施例中,各種機制試圖提供利用基于塊的端到端數(shù)據(jù)保護來傳送可變長度擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的能力。圖6圖解說明了示出當可變長度ECKD數(shù)據(jù)被記錄在存儲介質(zhì)上以及按照第二種實現(xiàn)在主機和存儲控制器之間被傳送時,可變長度ECKD數(shù)據(jù)的基于塊的端到端數(shù)據(jù)保護的例證方框圖400。方框圖400示出由計數(shù)字段402、密鑰字段408和數(shù)據(jù)字段410組成的ECKD記錄。計數(shù)字段402和密鑰字段408都小于512字節(jié)的典型塊長度。這些字段都被保存在單獨的塊中,同時添加填充數(shù)據(jù)404以便塊對齊。數(shù)據(jù)字段410的尺寸大于2個塊的尺寸,但是小于3個塊。因此,數(shù)據(jù)字段410分布在3個塊內(nèi),同樣向這些塊中的最后一個塊附加填充數(shù)據(jù)404。最后,向所有各個塊附加數(shù)據(jù)保護報尾406 (表不成“T”)。進一步圖解說明如圖6中所述的具有數(shù)據(jù)保護的各個塊,圖7圖解說明示出具有小型計算機系統(tǒng)接口(SCSI)標準數(shù)據(jù)保護報尾的可變長度ECKD數(shù)據(jù)的基于塊的端到端數(shù)據(jù)保護的例證方框圖500。在一個實施例中,與圖6中所述類似,各種機制包括具有512字節(jié)的典型塊尺寸的按照固定塊格式(例如,塊邊界格式)傳送的ECKD數(shù)據(jù)。這種格式可被用于傳送和保存SCSI數(shù)據(jù)。數(shù)據(jù)保護報尾(表示成“T”)被添加到用戶數(shù)據(jù)的每個塊。通過利用在INCITS SCSI標準中定義的TlO DIF方案,可向每個塊添加8字節(jié)報尾。這把典型的512字節(jié)塊尺寸增大到520字節(jié)。數(shù)據(jù)保護報尾可包括在數(shù)據(jù)保護報尾的0-1字節(jié)中的塊保護(CRC)、字節(jié)2-3中的應(yīng)用標記、以及字節(jié)4-7中的參考標記(這些字節(jié)用作例子,不應(yīng)被解釋成對本發(fā)明的限制,可按照本發(fā)明的用途而被變更、調(diào)整或改變)。圖8圖解說明了基于第一種實現(xiàn)的擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的傳送的例證方框圖800。圖8圖解說明了 3種情況;情況1:ECKD記錄的單個數(shù)據(jù)字段,情況2:多個ECKD記錄的數(shù)據(jù)字段,以及情況3:包含密鑰、計數(shù)和數(shù)據(jù)字段的ECKD記錄。對于每種情況,舉例說明了 3個獨立的階段:在服務(wù)器存儲器中的數(shù)據(jù),傳送期間的數(shù)據(jù),以及記錄在520B塊設(shè)備上的數(shù)據(jù),其中每個512B數(shù)據(jù)塊被SB的TlO-DIF報尾擴展。在情況I中,使元數(shù)據(jù)(M)在塊邊界與ECKD數(shù)據(jù)(D)對齊,如首先在數(shù)據(jù)在服務(wù)器存儲器中時所示。在ECKD數(shù)據(jù)的傳送期間,填充數(shù)據(jù)⑵被添加到元數(shù)據(jù)(M)和ECKD數(shù)據(jù)⑶的結(jié)尾以便塊對齊,向元數(shù)據(jù)(M)和ECKD數(shù)據(jù)(D)的每個塊添加TlO DIF數(shù)據(jù)(T)。然而,元數(shù)據(jù)將用于管理用途(例如,供存儲控制器使用),從而只有ECKD數(shù)據(jù)(D)將被記錄在介質(zhì)(存儲)設(shè)備上。添加有填充數(shù)據(jù)的ECKD數(shù)據(jù)將總是開始和結(jié)束于塊邊界。記錄在520B塊設(shè)備上的數(shù)據(jù)現(xiàn)在示出其中保存單個ECKD數(shù)據(jù)字段的數(shù)據(jù)的2個塊,并且每個塊包含數(shù)據(jù)保護報尾。在這種情況下,存在與在傳送期間使用的數(shù)據(jù)保護報尾相同的數(shù)據(jù)保護報尾。在情況2中,圖解說明了多個ECKD數(shù)據(jù)字段,如在服務(wù)器存儲器中所示。在這種情況下,以及在下面的情況3下,未示出任何元數(shù)據(jù)字段,盡管元數(shù)據(jù)也可以是這些情形的一部分。在通常情況下,第一和第二 ECKD數(shù)據(jù)(D)字段由塊內(nèi)的邊界分隔,并且在傳送期間,可向每個塊添加數(shù)據(jù)保護報尾(T),其中,每個塊可包含屬于一個或多個ECKD數(shù)據(jù)(D)字段的數(shù)據(jù)。第一個塊包含第一 ECKD數(shù)據(jù)(D)字段的數(shù)據(jù),并且具有添加到該塊的數(shù)據(jù)保護報尾(T)。第二個塊包含第一個ECKD數(shù)據(jù)字段的剩余部分和第二個ECKD數(shù)據(jù)字段的開始。從而,這兩個ECKD數(shù)據(jù)字段未被塊對齊。數(shù)據(jù)保護報尾被添加到該第二個塊的結(jié)尾,并與屬于兩個不同的ECKD數(shù)據(jù)(D)字段的數(shù)據(jù)有關(guān)。最后一個塊包含第二個ECKD數(shù)據(jù)(D)字段的剩余部分加上填充數(shù)據(jù)(P)和數(shù)據(jù)保護報尾(T)。在把數(shù)據(jù)記錄在520B塊設(shè)備上時,第一個塊包含第一個ECKD數(shù)據(jù)(D)字段的數(shù)據(jù)和相關(guān)的數(shù)據(jù)保護報尾(T)。第二個塊包含第一個ECKD數(shù)據(jù)(D)字段的剩余部分加上填充數(shù)據(jù)(P)和數(shù)據(jù)保護報尾(T)。應(yīng)當注意,在存儲時,存儲器中的第一個塊包含ECKD數(shù)據(jù)的相同部分和最初創(chuàng)建的相同保護數(shù)據(jù),而其它各個塊包含ECKD數(shù)據(jù)的不同部分、填充數(shù)據(jù)、和重新計算的保護數(shù)據(jù)。在情況3中,在數(shù)據(jù)傳送期間,計數(shù)(C)(例如,ECKD計數(shù)字段)、密鑰(K)(例如,ECKD密鑰字段)和一部分ECKD數(shù)據(jù)(D)被包含在第一個塊中,并且具有添加到整個塊的數(shù)據(jù)保護報尾(T)。第二個塊包含ECKD數(shù)據(jù)(D)字段的剩余部分,具有添加在結(jié)尾的填充數(shù)據(jù)(P),和最后再次的數(shù)據(jù)保護報尾(T)。在把數(shù)據(jù)保存在介質(zhì)(例如,520B塊設(shè)備)上時,計數(shù)(C)字段和密鑰(K)字段被保存在獨立的塊中,具有添加的填充數(shù)據(jù),并且具有添加到它們上的重新計算的數(shù)據(jù)保護報尾(T)。包含ECKD數(shù)據(jù)(D)字段的第一部分(例如,在密鑰字段之后)的第一個塊還包含重新計算的數(shù)據(jù)保護報尾(T),以及包含ECKD數(shù)據(jù)(D)字段的剩余部分的最后塊包含填充數(shù)據(jù)(P)和重新計算的數(shù)據(jù)保護報尾(T)。作為一般規(guī)則,對于無相關(guān)計數(shù)字段和密鑰字段的單個ECKD數(shù)據(jù)字段的數(shù)據(jù)傳送,和/或多個自然塊對齊的只有ECKD數(shù)據(jù)字段的傳送(它們是最常見的情形),不需要保護數(shù)據(jù)的重新計算。另外,如下在圖10中所述,可在IU對齊單元(例如,服務(wù)器和/或控制器中的IU對齊單元)中進行這種對齊處理。
圖9圖解說明示出基于第二種實現(xiàn)的擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的傳送的例證方框圖900。圖9圖解說明了三種情況;情況1:ECKD記錄的單個數(shù)據(jù)字段,情況2:兩個ECKD記錄的數(shù)據(jù)字段,以及情況3:包含密鑰、計數(shù)和數(shù)據(jù)字段的單個ECKD記錄。對于每種情況,舉例說明了 3個獨立的階段:在服務(wù)器存儲器中的數(shù)據(jù),傳送期間的數(shù)據(jù),和記錄在512B塊設(shè)備上的數(shù)據(jù)。在情況I中,使元數(shù)據(jù)(M)在塊邊界與ECKD數(shù)據(jù)(D)對齊,如首先在數(shù)據(jù)在服務(wù)器存儲器中時所示。在數(shù)據(jù)的傳送期間,向元數(shù)據(jù)(M)的最后一個塊添加填充數(shù)據(jù)(P),以及向元數(shù)據(jù)(M)的每個塊添加TlO DIF數(shù)據(jù)(T)。然而,元數(shù)據(jù)將用于管理用途(例如,供存儲控制器使用),從而只有ECKD數(shù)據(jù)(D)將被記錄在介質(zhì)設(shè)備上。ECKD數(shù)據(jù)(D)現(xiàn)在也開始于塊邊界。同樣向ECKD數(shù)據(jù)(D)字段的結(jié)尾添加填充數(shù)據(jù),使得它也結(jié)束于塊邊界,并向ECKD數(shù)據(jù)(D)的每個塊添加TlO DIF數(shù)據(jù)(T)。記錄在存儲介質(zhì)上的ECKD數(shù)據(jù)和傳送期間的ECKD數(shù)據(jù)相同。ECKD數(shù)據(jù)在512B塊設(shè)備上被記錄在2個塊上,每個塊包含ECKD數(shù)據(jù)字段的相同部分、相同的填充數(shù)據(jù)(只有最后一個塊)、和在傳送期間使用的相同數(shù)據(jù)保護報尾。情況I與圖8中的情況I類似。在情況2中,如在服務(wù)器存儲器中所示,圖解說明了多個ECKD數(shù)據(jù)字段。在這種情況中,以及在下面的情況3中,未示出元數(shù)據(jù)字段,然而,元數(shù)據(jù)也可以是這些情形的一部分。如前所述,服務(wù)器存儲器中的第一和第二 ECKD數(shù)據(jù)(D)字段由塊內(nèi)的邊界分隔。在傳送期間,第一個塊包含第一 ECKD數(shù)據(jù)(D)字段的第一部分,并具有添加到該塊的數(shù)據(jù)保護報尾(T)。第二個塊包含第一 ECKD數(shù)據(jù)(D)字段的剩余部分,還包含后面是數(shù)據(jù)保護報尾(T)的填充數(shù)據(jù)(P)。第三個塊包含第二 ECKD數(shù)據(jù)(D)字段的第一部分,并且具有數(shù)據(jù)保護報尾(T)。最后一個塊包含第二 ECKD數(shù)據(jù)(D)字段的剩余部分,并且包含填充數(shù)據(jù)(P)和數(shù)據(jù)保護報尾(T)。從而,每個ECKD數(shù)據(jù)字段總是開始于塊邊界,并且沒有任何一個塊包含兩個不同ECKD數(shù)據(jù)字段的片段。在把數(shù)據(jù)記錄在512B塊設(shè)備上時,按照與所述傳送數(shù)據(jù)的相同方式,把數(shù)據(jù)保存和記錄在介質(zhì)上。另外,每個塊只屬于單個ECKD數(shù)據(jù)(D)字段,并且每個ECKD數(shù)據(jù)字段是基于單個塊對齊的。對于任何數(shù)據(jù)字段,都不需要保護數(shù)據(jù)的重新計算。如圖9中圖解所示,與第一種實現(xiàn)所需的填充數(shù)據(jù)相比,基于第二種實現(xiàn)的擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的傳送需要更多的填充數(shù)據(jù)。在情況3中,在數(shù)據(jù)傳送期間,第一個塊包含計數(shù)(C)(例如,ECKD計數(shù)字段),以及第二個塊包含密鑰(K)(例如,ECKD密鑰字段),第一個塊和第二個塊都具有添加到該塊中的填充數(shù)據(jù)(P)和數(shù)據(jù)保護報尾(T)。第三個塊包含ECKD數(shù)據(jù)(D)字段的第一部分和添加在該塊的結(jié)尾的數(shù)據(jù)保護報尾(T),最后一個塊包含ECKD數(shù)據(jù)(D)字段的剩余部分以及填充數(shù)據(jù)(P)和添加在結(jié)尾的數(shù)據(jù)保護報尾(T)。從而,3種不同的ECKD字段都總是開始于塊邊界,沒有任何一個塊包含兩個不同ECKD字段的片段。在把數(shù)據(jù)保存在介質(zhì)(例如,512B塊設(shè)備)上時,如前關(guān)于傳送期間的數(shù)據(jù)所述,記錄計數(shù)(C)字段、密鑰(K)字段和ECKD數(shù)據(jù)(D)字段。在計數(shù)(C)字段、密鑰(K)字段和/或數(shù)據(jù)(D)字段的傳送期間,不存在數(shù)據(jù)保護報尾(T)的重新計算。另外,如下在圖10中所述,可在服務(wù)器中的IU對齊單元中進行這種對齊處理。參見圖10,圖10圖解說明示出基于第一種實現(xiàn),傳送擴展計數(shù)密鑰數(shù)據(jù)(ECKD),以便對齊ECKD數(shù)據(jù)的硬件結(jié)構(gòu)的例證方框圖1000。圖10示出具有與服務(wù)器ECKD塊保護單元1022通信的ECKD數(shù)據(jù)生成器/使用器1020的服務(wù)器1010。在服務(wù)器ECKD塊保護單元1022內(nèi),描述了信息單元(IU)對齊單元1024和塊保護單元1026。IU對齊單元1024可如前在圖8中所述實現(xiàn)各種功能和操作。此外,服務(wù)器(主機側(cè))可對齊IU。IU對齊單元1024可以添加/剝除填充字節(jié)用于在塊邊界的IU對齊。塊保護單元1026可以在塊基礎(chǔ)上生成、檢查(核實)和剝除數(shù)據(jù)保護報尾(例如,TlO DIF數(shù)據(jù)保護報尾)。服務(wù)器1010可以與存儲區(qū)域網(wǎng)絡(luò)(SAN)設(shè)備(例如,交換機)1028通信。交換機1028可以連接到存儲控制器1030,以允許從主機(例如,服務(wù)器)1010到存儲控制器1030的通信。在存儲控制器內(nèi),描述了控制器ECKD塊保護單元1040??刂破鱁CKD塊保護單元1040包含傳送塊保護單元1042、IU對齊單元1044、字段對齊單元1046和存儲塊保護單元1048。存儲控制器1030的各個組件可以相互協(xié)同工作,從而好像它們是一個完整單元似地工作,或者它們可以單獨起作用,從而實現(xiàn)本發(fā)明的目的。傳送塊保護單元1042可核實(在寫入操作的情況下)或者生成(在讀取操作的情況下)用于傳輸?shù)臄?shù)據(jù)保護報尾(例如,TlO DIF保護數(shù)據(jù))。IU對齊單元1044在寫入操作的情況下,除去IU對齊,改為進行字段對齊(例如,在存儲控制器進行字段對齊),因為在一個IU中,可能存在不是結(jié)束于塊邊界的多個字段,并且在讀取操作的情況下,除去字段對齊,而在IU基礎(chǔ)上添加對齊。如果存在單個記錄/單個字段,那么在塊基礎(chǔ)上檢查和核實數(shù)據(jù)保護報尾。如果存在多個記錄/字段,那么對于寫入操作,可以在塊基礎(chǔ)上檢查(核實)和剝除保護數(shù)據(jù)(例如,TlO DIF字段)。對于讀取操作,可以在塊基礎(chǔ)上生成保護數(shù)據(jù)(例如,TlO DIF保護數(shù)據(jù))??梢猿ヌ畛鋽?shù)據(jù),以便IU對齊。對于讀/寫操作時的ECKD字段對齊,可以添加填充數(shù)據(jù)。對于靜止的數(shù)據(jù),可以在塊基礎(chǔ)上檢查(核實)和剝除保護數(shù)據(jù)(例如,TlO DIF保護數(shù)據(jù))。圖11圖解說明示出基于第二種實現(xiàn),傳送擴展計數(shù)密鑰數(shù)據(jù)(ECKD)以便對齊ECKD數(shù)據(jù)的硬件結(jié)構(gòu)的例證方框圖1100。圖11示出具有與服務(wù)器ECKD塊保護單元1114通信的ECKD數(shù)據(jù)生成器/使用器1112的服務(wù)器1110。在服務(wù)器ECKD塊保護單元1114內(nèi),描述了字段對齊單元1116和塊保護單元1118。字段對齊可在主機側(cè)進行??梢詾樵趬K邊界的ECKD字段對齊添加和/或剝除填充數(shù)據(jù)(例如,填充字節(jié))。塊保護單元1118可以在塊基礎(chǔ)上生成、檢查(核實)和剝除數(shù)據(jù)保護報尾(例如,TlO DIF數(shù)據(jù)保護報尾)。服務(wù)器1110可以與SAN設(shè)備(例如交換機)1132通信。SAN設(shè)備1132可以連接到存儲控制器1120,以允許從主機(例如,服務(wù)器)1110到存儲控制器1120的通信。在存儲控制器1120內(nèi),塊保護核實單元1130可以核實用于傳輸?shù)谋Wo(字段)數(shù)據(jù)(例如,TlO DIF保護數(shù)據(jù)),和相對于存儲設(shè)備1140寫入和/或讀取未更改和/或未改變的數(shù)據(jù)。如前所述,本發(fā)明的機制防止丟失和/或錯位塊。圖12圖解說明示出在第一種或第二種實現(xiàn)中,用于防止丟失和/或錯位塊的參考標記的例證方框圖1200。數(shù)據(jù)保護報尾(例如,TlO DIF保護數(shù)據(jù))可包含參考標記字段1224,參考標記字段1224用于攜帶序號或者邏輯塊地址(LBA)的低位32比特,以防止錯位。在ECKD數(shù)據(jù)的情況下,在服務(wù)器側(cè)可能不知道LBA,因此,可以使用4字節(jié)的參考標記1224作為備選方案,以攜帶IU內(nèi)的數(shù)據(jù)塊的相對序號。這種4字節(jié)參考標記1224可被用于防止不改變IU的長度的重排塊和/或丟失/復(fù)制塊。這是最關(guān)鍵的情況,因為當在IU報頭中以及在較低的光纖信道協(xié)議層所使用的分組報頭中包含長度指示符時,導致IU的長度發(fā)生變化的問題能夠被容易地檢出。圖12描述了 3個塊,每個塊具有數(shù)據(jù)區(qū)1210和數(shù)據(jù)保護報尾,數(shù)據(jù)區(qū)1210可包含一個或多個ECKD字段或者ECKD字段的多個片段,可能帶有填充數(shù)據(jù),數(shù)據(jù)保護報尾由順序添加到每個塊的數(shù)據(jù)區(qū)1210的保護字段(CRC) 1220、應(yīng)用標記1222、和參考標記1224組成。具有其數(shù)據(jù)區(qū)和相關(guān)數(shù)據(jù)保護報尾的這3個塊構(gòu)成塊對齊IU。圖13圖解說明示出就第二種實現(xiàn)來說,防止丟失和/或錯位塊的參考標記的例證方框圖1300。為了在第二種實現(xiàn)期間防止丟失和/或錯位塊,可以通過5字節(jié)的記錄標識符柱面-磁頭-記錄CCHHR來唯一地識別邏輯卷的每個ECKD記錄,CCHH可以是磁道號,R可以是相對于該磁道的起點的記錄編號。當映射到512字節(jié)塊時,每個ECKD記錄一般被映射到最多112個塊。從而,CCHHR可被擴展一個字節(jié),所述一個字節(jié)包含識別記錄的每個520字節(jié)塊的7比特相對塊編號(B)(加上一個保留比特)。合成的6字節(jié)CCHHRB編號可被保存在每個保護數(shù)據(jù)報尾(例如,TlO DIF報尾)的聯(lián)合參考和應(yīng)用標記字段1330中。另一方面,CCHHRB的4字節(jié)散列值可被保存在參考標記字段中,擱置應(yīng)用標記字段供其它用途之用。圖13圖解說明了 3個塊,每個塊包含數(shù)據(jù)字段1310、順序添加到每個數(shù)據(jù)字段1310的保護字段(CRC) 1320和與參考標記合并的應(yīng)用標記1330。具有其數(shù)據(jù)區(qū)和相關(guān)的數(shù)據(jù)保護報尾的這3個塊構(gòu)成塊對齊IU,數(shù)據(jù)將被保存在(或者讀取自)磁道0002 A108,記錄4的前3個塊。圖14是圖解說明利用第一種實現(xiàn),進行擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的寫入操作的例證方法1400的流程圖。在一個實施例中,方法1400可以利用如圖10中所述的硬件組件。在如果需要,那么IU對齊單元(服務(wù)器中的如圖10中圖解所示的IU對齊單元)向IU的結(jié)尾添加填充字節(jié),以便進行塊對齊的情況下(步驟1410),開始方法1400 (步驟1402)。塊保護單元(服務(wù)器中的如圖10中圖解所示的塊保護單元)可向每個塊的結(jié)尾添加具有保護數(shù)據(jù)(例如,TlO DIF保護數(shù)據(jù))的報尾(步驟1420)。此時,數(shù)據(jù)可通過存儲區(qū)域網(wǎng)絡(luò)(SAN)傳送。當收到傳送的數(shù)據(jù)時,傳送塊保護單元(存儲控制器中的如圖10中圖解所示的傳送塊保護單元)檢查保護數(shù)據(jù),以判定是否存在任何錯誤(步驟1430)。如果是,那么用信號通知所述錯誤,并把錯誤發(fā)送給錯誤處理器(步驟1435)。主機(服務(wù)器)可被通知所述錯誤,從而不保存所述數(shù)據(jù)。如果沒有錯誤,那么傳送塊保護單元判定IU是否只包含單個ECKD字段(步驟1440)。如果是,那么方法1400將把數(shù)據(jù)發(fā)送給磁盤(例如,存儲磁盤)(步驟1490)。如果存在多個字段和/或多個記錄,IU對齊單元(存儲控制器中的如圖10中圖解所示的IU對齊單元)可剝除塊保護數(shù)據(jù)(步驟1450)。字段對齊單元(存儲控制器中的如圖10中圖解所示的字段對齊單元)可酌情向每個ECKD記錄的每個字段的結(jié)尾添加填充字節(jié)(步驟1460)。存儲塊保護單元(存儲控制器中的如圖10中圖解所示的存儲塊保護單元)可向每個塊的結(jié)尾添加具有保護數(shù)據(jù)(例如,TlO DIF保護數(shù)據(jù))的報尾(步驟S1480)。該數(shù)據(jù)隨后被發(fā)送給磁盤(例如,存儲磁盤)(步驟1490)。圖15是圖解說明用第二種實現(xiàn),進行擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的寫入操作的例證方法1500的流程圖。在一個實施例中,方法1500可利用如圖11中描述的硬件組件。通過IU對齊單元(服務(wù)器中的如圖11中圖解所示的IU對齊單元)酌情向每個ECKD記錄的每個字段的結(jié)尾添加填充字節(jié)(步驟1510),開始方法1500 (步驟1502)。塊保護單元(服務(wù)器中的如圖11中圖解所示的塊保護單元)可向每個塊的結(jié)尾添加具有保護數(shù)據(jù)(例如,TlO DIF保護數(shù)據(jù))的報尾(步驟1520)。數(shù)據(jù)隨后被傳送給存儲控制器。塊保護核實單元(存儲控制器中的如圖11中圖解所示的塊保護核實單元)將核實和檢查保護數(shù)據(jù),以判定是否存在任何錯誤(步驟1530)。如果是,那么用信號通知所述錯誤,并把錯誤發(fā)送給主機,以便處理錯誤(步驟1540)。如果沒有錯誤,那么把所述數(shù)據(jù)發(fā)送給磁盤(步驟1550)。為了進一步解釋和提供布局和對齊的基本理解,圖16A-C是描述ECKD數(shù)據(jù)的介紹性布局的例證方框圖,圖16A示出在主機內(nèi)存中和存儲介質(zhì)上的數(shù)據(jù)的布局,圖16B和圖16C同樣不出在主機內(nèi)存中的布局,以及在傳送期間(例如,作為嵌入式IU的一部分)ECKD數(shù)據(jù)的結(jié)構(gòu)布局,和在存儲介質(zhì)上的布局。只是作為例子和更好地解釋圖3A-B和4A-B的流程圖,這些附圖在圖中未區(qū)分不同種類的ECKD字段(計數(shù)、密鑰和數(shù)據(jù))。圖16A圖解說明示出主機內(nèi)存和存儲介質(zhì)中的擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的對齊的例證方框圖1600。圖16A描述主機內(nèi)存和存儲介質(zhì)兩者中的3個ECKD字段。所述ECKD字段可以是計數(shù)字段、密鑰字段和數(shù)據(jù)字段。在主機內(nèi)存中可以連續(xù)地分配這些字段。ECKD字段的尺寸可以變化;例如,ECKD字段I可以小于一個塊的尺寸。ECKD字段2的尺寸可以大于2個塊,但是小于3個塊。ECKD字段3的尺寸可以大于I個塊,但是小于2個塊。塊尺寸可以是各種尺寸(例如,512字節(jié)加上數(shù)據(jù)保護報尾)。就存儲介質(zhì)上的數(shù)據(jù)來說,ECKD字段可被左對齊地分配在塊序列中。在字段尺寸不是塊尺寸的整數(shù)倍的情況下,可向用于ECKD字段的最后一個塊中的數(shù)據(jù)的結(jié)尾附加填充數(shù)據(jù)(表示成“Pad”),一直到所述塊的結(jié)尾為止??上蛎總€塊附加具有塊保護數(shù)據(jù)(T)的SCSI標準報尾。從而,如圖16A中所示,ECKD字段(例如,ECKD字段1、2和3)還具有部分1、部分2和部分3。圖16B圖解說明示出基于第一種實現(xiàn),只對IU進行的擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的傳送的對齊的例證方框圖1650。圖16B描述主機內(nèi)存和存儲介質(zhì)兩者中的3個ECKD字段。所述ECKD字段可以是計數(shù)字段、密鑰字段和數(shù)據(jù)字段。在主機內(nèi)存中可以連續(xù)地分配這些字段。在數(shù)據(jù)傳送(嵌入IU中)期間,主機可以僅僅基于IU進行對齊,并且每個塊地添加和/或剝除數(shù)據(jù)保護報尾。傳送期間的數(shù)據(jù)圖解說明了具有隨著位置添加的塊保護數(shù)據(jù)和/或填充數(shù)據(jù)的這3個ECKD字段。各個字段可具有部分1、部分2和部分3 (例如,ECKD字段示出(2,2)作為傳送期間的數(shù)據(jù)中的字段2和部分2,或者它僅僅被標記成部分
1、部分2和/或部分3)。關(guān)于存儲介質(zhì)上的數(shù)據(jù),就寫入來說,存儲控制器在塊邊界對齊每個ECKD字段。在一些情況下,在把數(shù)據(jù)寫入存儲介質(zhì)之前,要求從IU剝除塊保護數(shù)據(jù)和填充數(shù)據(jù),并生成新的塊保護數(shù)據(jù)和填充數(shù)據(jù)。就讀取請求來說,存儲控制器可通過級聯(lián)保存在介質(zhì)上的各個字段、向IU的結(jié)尾附加填充數(shù)據(jù)以便塊對齊、以及向IU的每個塊附加塊保護數(shù)據(jù),來構(gòu)建IU。在許多情況下,這要求從接收自存儲介質(zhì)的數(shù)據(jù)中剝除塊保護數(shù)據(jù)和填充數(shù)據(jù),并為將被傳送給主機的IU生成和附加新的塊保護數(shù)據(jù)和填充數(shù)據(jù)。在圖16中,“T”表示塊保護數(shù)據(jù),而“PAD”表示填充數(shù)據(jù)。圖16C圖解說明示出以第二種實現(xiàn)為基礎(chǔ),擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的傳送的對齊的例證方框圖1675。圖16C描述在主機內(nèi)存和存儲介質(zhì)兩者中的3個ECKD字段。ECKD字段可以是計數(shù)字段、密鑰字段和數(shù)據(jù)字段。在主機內(nèi)存中,字段可以是連續(xù)分配的。在數(shù)據(jù)傳送(嵌入IU中)期間,主機可以進行每個單獨的ECKD字段的對齊,以及每個塊地添加和/或剝除數(shù)據(jù)保護報尾。傳送期間的數(shù)據(jù)圖解說明了具有隨著位置添加的塊保護數(shù)據(jù)和/或填充數(shù)據(jù)的這3個ECKD字段。主機可進行對齊,和添加/剝除塊保護數(shù)據(jù),使得傳送期間的數(shù)據(jù)格式和存儲介質(zhì)上的數(shù)據(jù)格式匹配。關(guān)于存儲介質(zhì)上的數(shù)據(jù),在寫入操作的情況下,存儲控制器按照與從主機收到所述數(shù)據(jù)時相同的格式把數(shù)據(jù)保存在存儲介質(zhì)上,以及在讀取操作的情況下,存儲控制器按照與在介質(zhì)上保存數(shù)據(jù)時相同的格式把數(shù)據(jù)傳送給主機。本領(lǐng)域的技術(shù)人員會理解,本發(fā)明的各個方面可被具體體現(xiàn)成系統(tǒng)、方法或計算機程序產(chǎn)品。因而,本發(fā)明的各個方面,尤其是控制器的形式可以采取純硬件實施例,純軟件實施例(包括固件、駐留軟件、微代碼等),或者結(jié)合這里通常都可被稱為“電路”、“模塊”或“系統(tǒng)”的軟件和硬件特征的實施例的形式。此外,本發(fā)明的各個方面,比如方法可以采取包含在一個或多個計算機可讀介質(zhì)中的計算機程序產(chǎn)品的形式,所述一個或多個計算機可讀介質(zhì)具有包含于其中的計算機可讀程序代碼??梢岳靡粋€或多個計算機可讀介質(zhì)的任意組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)可以是例如(但不限于)電、磁、光、電磁、紅外或半導體系統(tǒng)、設(shè)備或裝置,或者它們的任意適當組合。計算機可讀存儲介質(zhì)的更具體例子(非窮舉列表)可包括:具有一條或多條導線的電連接、可移植計算機磁盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦可編程只讀存儲器(EPR0M或閃速存儲器)、光纖、可移植光盤只讀存儲器(CD-ROM)、光存儲裝置、磁存儲裝置,或者它們的任意適當組合。在本文的上下文中,計算機可讀存儲介質(zhì)可以是能夠包含或保存供指令執(zhí)行系統(tǒng)、設(shè)備或裝置使用的,或者結(jié)合指令執(zhí)行系統(tǒng)、設(shè)備或裝置使用的程序的任何有形介質(zhì)。包含在計算機可讀介質(zhì)上的程序代碼可利用任何適當?shù)拿襟w傳送,包括(但不限于)無線、有線、光纜、RF等,或者它們的任何適當組合。可用一種或多種編程語言,包括諸如Java、Smalltalk、C++之類的面向?qū)ο缶幊陶Z言,和諸如“C”編程語言或類似編程語言之類的常規(guī)過程編程語言的任意組合,編寫執(zhí)行本發(fā)明的各個方面的操作的計算機程序代碼。程序代碼可完全在用戶的計算機上運行,部分在用戶的計算機上運行,作為獨立的軟件包,部分在用戶的計算機上運行并且部分在遠程計算機上運行,或者完全在遠程計算機或服務(wù)器上運行。在后一情況下,遠程計算機可通過任意類型的網(wǎng)絡(luò),包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN),連接到用戶的計算機,或者可實現(xiàn)與外部計算機的連接(例如,利用因特網(wǎng)服務(wù)提供商,經(jīng)因特網(wǎng)實現(xiàn)與外部計算機的連接)。上面參考按照本發(fā)明的各個實施例的方法、設(shè)備(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或方框圖,說明了本發(fā)明的各個方面。要明白流程圖和/或方框圖的每個方框,以及流程圖和/或方框圖中的各個方框的組合可用計算機程序指令實現(xiàn)。這些計算機程序指令可被提供給通用計算機,專用計算機或者其它可編程數(shù)據(jù)處理設(shè)備的處理器,從而產(chǎn)生機器,以致借助計算機或其它可編程數(shù)據(jù)處理設(shè)備的處理器運行的指令產(chǎn)生實現(xiàn)在流程圖和/或方框圖的一個或多個方框中指定的功能/動作的裝置。這些計算機程序指令也可被保存在計算機可讀介質(zhì)中,所述計算機可讀介質(zhì)能夠指令計算機、其它可編程數(shù)據(jù)處理設(shè)備或者其它裝置按特定方式運行,以致保存在計算機可讀介質(zhì)中的指令產(chǎn)生制成品,所述制成品包括實現(xiàn)在示意流程圖和/或示意方框圖的一個或多個方框中指定的功能/動作的指令。計算機程序指令也可被加載到計算機,其它可編程數(shù)據(jù)處理設(shè)備或其它裝置上,使得在計算機,其它可編程設(shè)備或其它裝置上執(zhí)行一系列的操作步驟,從而產(chǎn)生計算機實現(xiàn)的處理,以致在計算機或其它可編程設(shè)備上執(zhí)行的指令提供實現(xiàn)在流程圖和/或方框圖的一個或多個方框中指定的功能/動作的處理。上面的附圖中的流程圖和方框解說明按照本發(fā)明的各個實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系結(jié)構(gòu)、功能和操作。在這方面,流程圖或方框圖中的每個方框可代表包含實現(xiàn)指定邏輯功能的一個或多個可執(zhí)行指令的模塊、程序段或一部分代碼。另外應(yīng)注意,在一些備選實現(xiàn)中,在方框中表示的功能可不按照附圖中所示的順序發(fā)生。例如,接連表示的兩個方框事實上可以基本同時地執(zhí)行,或者各個方框有時可按照相反的順序執(zhí)行,取決于所涉及的功能。另外要注意方框圖和/或流程圖的每個方框,以及方框圖和/或流程圖中的各個方框的組合可用實現(xiàn)指定功能或動作的基于專用硬件的系統(tǒng),或者專用硬件和計算機指令的組合實現(xiàn)。盡管詳細說明了本發(fā)明的一個或多個實施例,然而有經(jīng)驗的技術(shù)人員會理解可以做出對這些實施例的變形和修改,而不脫離在以下權(quán)利要求中陳述的本發(fā)明的范圍。
權(quán)利要求
1.一種由計算存儲環(huán)境中的處理器設(shè)備執(zhí)行的對于擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的基于塊的端到端數(shù)據(jù)保護方法,所述方法包括: 按照塊邊界格式對齊多個信息單元(IU)中的至少一個IU;和 向所述多個IU中的所述至少一個IU的每個塊添加塊保護報尾數(shù)據(jù)。
2.按照權(quán)利要求1所述的方法,進一步包括:向所述多個IU中的所述至少一個IU添加填充數(shù)據(jù)。
3.按照權(quán)利要求1所述的方法,進一步包括進行下述至少之一: 把所述多個IU中的所述至少一個IU的ECKD的多個字段中的至少一個字段對齊成塊邊界格式, 向ECKD的多個字段中的所述至少一個字段添加填充數(shù)據(jù),以及 向ECKD的多個字段中的所述至少一個字段的每個塊添加塊保護報尾數(shù)據(jù)。
4.按照權(quán)利要求1所述的方法,進一步包括進行下述至少之一: 核實所述多個IU中的所述至少一個IU的每個塊上的塊保護報尾數(shù)據(jù), 剝除所述多個IU中的所述至少一個IU的每個塊上的塊保護報尾數(shù)據(jù),以及 在所述多個IU中的所述至少一個IU的每個塊上放置所述塊保護報尾數(shù)據(jù)的替換塊保護報尾數(shù)據(jù)。
5.按照權(quán)利要求1所述的方法,其中,對于ECKD的多個字段中的至少一個字段,添加到所述多個IU中的所述至少一個IU的每個塊的塊保護報尾數(shù)據(jù)對于傳輸中的數(shù)據(jù)和靜止的數(shù)據(jù)都相同。
6.按照權(quán)利要求1所述的方法,進一步包括:按照塊邊界格式對齊所述多個IU中的所述至少一個IU的控制數(shù)據(jù),向控制數(shù)據(jù)的結(jié)尾添加填充數(shù)據(jù),以及向控制數(shù)據(jù)的每個塊添加塊保護報尾數(shù)據(jù)。
7.按照權(quán)利要求1所述的方法,進一步包括向所述塊保護報尾數(shù)據(jù)添加參考標記字段,其中,所述參考標記字段防止所述多個IU中的所述至少一個IU被丟失、復(fù)制或錯位。
8.按照權(quán)利要求7所述的方法,進一步包括:響應(yīng)于向塊保護數(shù)據(jù)添加參考標記字段,進行下述之一: 把參考標記字段用于下述之一: 攜帶用于防止塊報尾保護數(shù)據(jù)錯位的序號, 提供ECKD記錄標識,和 利用參考標記字段中的4字節(jié)散列碼來防止重排塊、丟失塊或復(fù)制塊。
9.按照權(quán)利要求1所述的方法,進一步包括進行下述之一: 把關(guān)于所述多個IU中的所述至少一個IU的至少一個請求發(fā)送給存儲控制器,所述至少一個請求是寫入請求和/或讀取請求, 響應(yīng)于存儲控制器收到所述至少一個請求: 對于寫入請求,把所述多個IU中的所述至少一個IU保存在存儲設(shè)備上,以及對于讀取請求,把所述多個IU中的所述至少一個IU轉(zhuǎn)換成所述多個IU中的所述至少一個IU的序列,塊保護報尾數(shù)據(jù)被添加到所述多個IU中的所述至少一個IU的序列中的每一個的每個塊,以及 把多個IU中的數(shù)據(jù)重新組裝到ECKD中。
10.一種計算環(huán)境中的對于擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的基于塊的端到端數(shù)據(jù)保護系統(tǒng),包括: 可在計算存儲環(huán)境中工作的至少一個處理器設(shè)備, 可由所述至少一個處理器設(shè)備操作的存儲控制器,以及 其中,所述至少一個處理器設(shè)備適合于: 按照塊邊界格式對齊多個信息單元(IU)中的至少一個IU;和 向所述多個IU中的所述至少一個IU的每個塊添加塊保護報尾數(shù)據(jù)。
11.按照權(quán)利要求10所述的系統(tǒng),其中,所述至少一個處理器設(shè)備進一步適合于向所述多個IU中的所述至少一個IU添加填充數(shù)據(jù)。
12.按照權(quán)利要求10所述的系統(tǒng),其中,所述至少一個處理器設(shè)備進一步適合于進行下述至少之一: 把所述多個IU中的所述至少一個IU的ECKD的多個字段中的至少一個字段對齊成塊邊界格式, 向ECKD的多個字段中的所述至少一個字段添加填充數(shù)據(jù),以及 向ECKD的多個字段中的所述至少一個字段的每個塊添加塊保護報尾數(shù)據(jù)。
13.按照權(quán)利要求10所述的系統(tǒng),其中,所述至少一個處理器設(shè)備進一步適合于進行下述至少之一: 核實所述多個IU中的所述至少一個IU的每個塊上的塊保護報尾數(shù)據(jù), 剝除所述多個IU中的所述 至少一個IU的每個塊上的塊保護報尾數(shù)據(jù),以及在所述多個IU中的所述至少一個IU的每個塊上放置所述塊保護報尾數(shù)據(jù)的替換塊保護報尾數(shù)據(jù)。
14.按照權(quán)利要求10所述的系統(tǒng),其中,對于ECKD的多個字段中的至少一個字段,添加到所述多個IU中的所述至少一個IU的每個塊的塊保護報尾數(shù)據(jù)對于傳輸中的數(shù)據(jù)和靜止的數(shù)據(jù)都相同。
15.按照權(quán)利要求10所述的系統(tǒng),其中,所述至少一個處理器設(shè)備進一步適合于:按照塊邊界格式對齊所述多個IU中的所述至少一個IU的控制數(shù)據(jù),向控制數(shù)據(jù)的結(jié)尾添加填充數(shù)據(jù),以及向控制數(shù)據(jù)的每個塊添加塊保護報尾數(shù)據(jù)。
16.按照權(quán)利要求10所述的系統(tǒng),其中,所述至少一個處理器設(shè)備進一步適合于向塊保護報尾數(shù)據(jù)添加參考標記字段,其中,所述參考標記字段防止所述多個IU中的所述至少一個IU被丟失、復(fù)制或錯位。
17.按照權(quán)利要求16所述的系統(tǒng),其中,所述至少一個處理器設(shè)備進一步適合于響應(yīng)于向塊保護數(shù)據(jù)添加參考標記字段,進行下述之一: 把參考標記字段用于下述之一: 攜帶用于防止塊報尾保護數(shù)據(jù)的錯位的序號, 提供ECKD記錄標識,以及 利用參考標記字段中的4字節(jié)散列碼來防止重排塊、丟失塊或復(fù)制塊。
18.按照權(quán)利要求10所述的系統(tǒng),其中,所述至少一個處理器設(shè)備進一步適合于進行下述之一: 把關(guān)于所述多個IU中的所述至少一個IU的至少一個請求發(fā)送給存儲控制器,所述至少一個請求是寫入請求和/或讀取請求, 響應(yīng)于存儲控制器收到所述至少一個請求: 對于寫入請求,把所述多個IU中的所述至少一個IU保存在存儲設(shè)備上,以及對于讀取請求,把所述多個IU中的所述至少一個IU轉(zhuǎn)換成所述多個IU中的所述至少一個IU的序列,塊保護報尾數(shù)據(jù)被添加到所述多個IU中的所述至少一個IU的序列中的每一個的每個塊, 以及 把多個IU中的數(shù)據(jù)重新組裝到ECKD中。
全文摘要
本發(fā)明公開了擴展計數(shù)密鑰數(shù)據(jù)的基于塊的端到端數(shù)據(jù)保護方法和系統(tǒng)。提供了計算環(huán)境中的對于擴展計數(shù)密鑰數(shù)據(jù)(ECKD)的基于塊的端到端數(shù)據(jù)保護的例證方法、系統(tǒng)和計算機程序產(chǎn)品實施例。在一個實施例中,僅僅作為例子,按照塊邊界格式對齊信息單元(IU)。向每個IU添加塊保護報尾數(shù)據(jù)。公開了另外的系統(tǒng)和計算機程序產(chǎn)品實施例并提供相關(guān)優(yōu)點。
文檔編號G06F11/10GK103164293SQ20121030556
公開日2013年6月19日 申請日期2012年8月24日 優(yōu)先權(quán)日2011年8月26日
發(fā)明者G·班扎夫, M·本-達揚, K·W·博伊德, T·什利普夫, H·H·韋伯 申請人:國際商業(yè)機器公司