專利名稱:自動(dòng)數(shù)據(jù)存儲(chǔ)器庫內(nèi)提供控制路徑故障切換的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及利用主計(jì)算機(jī)與自動(dòng)數(shù)據(jù)存儲(chǔ)器庫之間的一個(gè)或者多個(gè)控制路徑對(duì)自動(dòng)數(shù)據(jù)存儲(chǔ)器庫提供自動(dòng)控制路徑故障切換(failover)的系統(tǒng)。
背景技術(shù):
能提供成本效益高的存儲(chǔ)器和檢索大量數(shù)據(jù)的自動(dòng)數(shù)據(jù)存儲(chǔ)器庫(automated data storage library)是已知的。自動(dòng)數(shù)據(jù)存儲(chǔ)器庫提供了一種將數(shù)據(jù)存儲(chǔ)到不是永久地安裝在數(shù)據(jù)存儲(chǔ)器驅(qū)動(dòng)器上、而是存儲(chǔ)在庫內(nèi)的存儲(chǔ)器架(storage shelf)上的數(shù)據(jù)存儲(chǔ)介質(zhì)上的裝置。一個(gè)或者多個(gè)機(jī)器人訪問者(robot accessor)從存儲(chǔ)器架上檢索(retrieve)選擇的數(shù)據(jù)存儲(chǔ)介質(zhì),并將它們送到數(shù)據(jù)存儲(chǔ)器驅(qū)動(dòng)器。主計(jì)算機(jī)通過控制路徑與自動(dòng)數(shù)據(jù)存儲(chǔ)器庫通信??刂坡窂绞前◣炜刂泼罨驇炜刂菩盘?hào)的通信接口??刂坡窂浇涌诳梢园ㄖT如RS-232、SCSI(小型計(jì)算機(jī)系統(tǒng)接口)、FC-AL(光纖通道-仲裁回路)等的串行接口。在某種系統(tǒng)配置中,主機(jī)可以包括多個(gè)為諸如雙端口磁帶設(shè)備的設(shè)備提供多個(gè)物理路徑的主機(jī)總線適配器(HBA)。這些物理路徑分別用作一個(gè)或者多個(gè)控制路徑。如果諸如數(shù)據(jù)備份應(yīng)用程序或設(shè)備驅(qū)動(dòng)程序的主機(jī)應(yīng)用程序正在通過控制路徑將命令送到自動(dòng)數(shù)據(jù)存儲(chǔ)器庫,而控制路徑存在諸如固定路徑錯(cuò)誤的故障(例如,HBA或電纜的故障),則該應(yīng)用程序?qū)⑼V寡毓收下窂竭\(yùn)行。在這種情況下,或者由系統(tǒng)管理員調(diào)用,或者由主計(jì)算機(jī)自動(dòng)調(diào)用故障切換程序,以便沿替換路徑重新起動(dòng)該應(yīng)用程序,或者重新發(fā)出命令。
如果主計(jì)算機(jī)重新起動(dòng)該應(yīng)用程序,則庫在發(fā)生故障之前執(zhí)行的所有操作均可能丟失。這可能產(chǎn)生長延遲,因?yàn)樵搼?yīng)用程序有可能必須重復(fù)執(zhí)行已經(jīng)完成的工作。如果主計(jì)算機(jī)不知道發(fā)送到自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的先前命令是否被成功完成就沿替換路徑重新發(fā)出命令,則有可能產(chǎn)生錯(cuò)誤。例如,主計(jì)算機(jī)可能遇到在在存儲(chǔ)器槽與驅(qū)動(dòng)器之間移動(dòng)介質(zhì)時(shí),庫通信丟失的問題。主計(jì)算機(jī)可能不能確定命令是否被成功完成,因?yàn)樽詣?dòng)數(shù)據(jù)存儲(chǔ)器庫不對(duì)該命令做出響應(yīng)。如果主計(jì)算機(jī)重發(fā)同一個(gè)命令,則它可能發(fā)生故障,因?yàn)樵搸煲呀?jīng)成功完成了該命令。在其他情況下,如果該庫已經(jīng)成功完成交換命令,則重發(fā)命令可能使盒式磁盤(cartridge)從其預(yù)定目的地移開。因?yàn)檫@些原因,本技術(shù)領(lǐng)域內(nèi)需要用于管理自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的故障切換操作的改進(jìn)型技術(shù)。
發(fā)明內(nèi)容
本發(fā)明的目的是利用主計(jì)算機(jī)與自動(dòng)數(shù)據(jù)存儲(chǔ)器庫之間的一個(gè)或者多個(gè)控制路徑提供故障切換過程。
本發(fā)明公開了一種用于對(duì)自動(dòng)數(shù)據(jù)存儲(chǔ)器庫提供故障切換過程的系統(tǒng)、方法以及計(jì)算機(jī)程序產(chǎn)品。在數(shù)據(jù)存儲(chǔ)器庫的運(yùn)行過程中,主計(jì)算機(jī)利用一個(gè)或者多個(gè)控制路徑將控制命令發(fā)送到自動(dòng)數(shù)據(jù)存儲(chǔ)器庫。如果正在處理命令時(shí),主計(jì)算機(jī)與自動(dòng)數(shù)據(jù)存儲(chǔ)器庫之間的通信失敗,則主計(jì)算機(jī)可以嘗試?yán)猛粋€(gè)控制路徑或者替換控制路徑重發(fā)同一個(gè)命令。在一些解決方案中, 自動(dòng)數(shù)據(jù)存儲(chǔ)器庫可能已經(jīng)完成了該命令,但是主計(jì)算機(jī)未收到命令完成響應(yīng)。在主計(jì)算機(jī)發(fā)出重發(fā)同一個(gè)命令時(shí),自動(dòng)數(shù)據(jù)存儲(chǔ)器庫執(zhí)行本發(fā)明的過程,以防止自動(dòng)數(shù)據(jù)存儲(chǔ)器庫不止一次執(zhí)行相同的命令。本發(fā)明的過程還不需要主計(jì)算機(jī)對(duì)重發(fā)命令的結(jié)果進(jìn)行分析。例如,如果重發(fā)命令失敗,則主機(jī)不必事先嘗試確定錯(cuò)誤是否與成功完成的命令有關(guān)。通過在執(zhí)行之前,使自動(dòng)數(shù)據(jù)存儲(chǔ)器庫檢驗(yàn)一些或者全部庫控制命令,本發(fā)明防止出現(xiàn)多次執(zhí)行相同的命令。
在一個(gè)實(shí)施例中,檢驗(yàn)發(fā)送到自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的每一命令,以確定它是否是已經(jīng)成功執(zhí)行的命令。自動(dòng)數(shù)據(jù)存儲(chǔ)器庫檢驗(yàn)該命令,而且還對(duì)接收該命令之前執(zhí)行的一個(gè)或者多個(gè)命令進(jìn)行檢驗(yàn),以確定該命令是否以及被成功執(zhí)行。如果即使成功執(zhí)行了該命令,主計(jì)算機(jī)仍未從自動(dòng)數(shù)據(jù)存儲(chǔ)器庫收到命令完成響應(yīng),則在重發(fā)先前發(fā)送的命令期間,可能出現(xiàn)這種情況。如果自動(dòng)數(shù)據(jù)存儲(chǔ)器庫確定已經(jīng)成功執(zhí)行了該命令,則自動(dòng)數(shù)據(jù)存儲(chǔ)器庫不二次執(zhí)行該命令,而將命令完成響應(yīng)發(fā)送到主計(jì)算機(jī)。因?yàn)楸苊饬酥貜?fù)執(zhí)行命令,所以自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的整個(gè)運(yùn)行過程得到改進(jìn)。在此實(shí)施例中,可以將某些命令排除在該特殊處理過程之外,而且可以在每次收到它們時(shí),執(zhí)行它們。例如,可以要求在主機(jī)每次發(fā)送SCSI Test Unit Ready命令時(shí),執(zhí)行該命令。對(duì)于諸如SCSI Read Elemnet Status命令的某些數(shù)據(jù)命令也同樣可以如此。
在第二實(shí)施例中,檢驗(yàn)發(fā)送到自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的各命令,以確定它是否是用于移動(dòng)數(shù)據(jù)存儲(chǔ)介質(zhì)的命令。如果該命令不移動(dòng)數(shù)據(jù)存儲(chǔ)介質(zhì),則自動(dòng)數(shù)據(jù)存儲(chǔ)器庫立即執(zhí)行該命令,而不進(jìn)一步檢驗(yàn)該命令。如果該命令移動(dòng)數(shù)據(jù)存儲(chǔ)介質(zhì),則自動(dòng)數(shù)據(jù)存儲(chǔ)器庫進(jìn)一步檢驗(yàn)該命令,而且還對(duì)接收該命令之前執(zhí)行的一個(gè)或者多個(gè)命令進(jìn)行檢驗(yàn),以確定是否已經(jīng)執(zhí)行了該命令。如果即使成功執(zhí)行了該命令,主計(jì)算機(jī)仍未從自動(dòng)數(shù)據(jù)存儲(chǔ)器庫收到命令完成響應(yīng),則在重發(fā)先前發(fā)送的命令期間,可能出現(xiàn)這種情況。如果自動(dòng)數(shù)據(jù)存儲(chǔ)器庫確定已經(jīng)成功執(zhí)行了該命令,則自動(dòng)數(shù)據(jù)存儲(chǔ)器庫不二次執(zhí)行該命令,而將命令完成響應(yīng)發(fā)送到主計(jì)算機(jī)。因?yàn)楸苊饬酥貜?fù)執(zhí)行命令,所以自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的整個(gè)運(yùn)行過程得到改進(jìn)。此外,還簡化了主機(jī)控制路徑故障切換過程,而且不易出錯(cuò)。
本發(fā)明的第三實(shí)施例將附加驗(yàn)證過程與上述第二實(shí)施例結(jié)合在一起。自動(dòng)數(shù)據(jù)存儲(chǔ)器庫執(zhí)行附加驗(yàn)證過程以進(jìn)一步確認(rèn)先前成功執(zhí)行了命令。附加驗(yàn)證過程包括使自動(dòng)數(shù)據(jù)存儲(chǔ)器庫檢驗(yàn)該命令指定的源位置和/或目的地地址。然后,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫檢驗(yàn)數(shù)據(jù)存儲(chǔ)介質(zhì)的物理源地址和/或目的地地址,以確定該數(shù)據(jù)存儲(chǔ)介質(zhì)是否實(shí)際出現(xiàn)在兩個(gè)位置之一。利用該附加信息,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫確定是否已經(jīng)成功執(zhí)行了該命令。如果該命令被成功執(zhí)行,則自動(dòng)數(shù)據(jù)存儲(chǔ)器庫不二次執(zhí)行該命令,而將命令完成響應(yīng)發(fā)送到主計(jì)算機(jī)。
為了更全面理解本發(fā)明,請(qǐng)參考以下結(jié)合附圖所做的詳細(xì)說明。
圖1是用于運(yùn)行根據(jù)本發(fā)明的自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的電子線路的原理框圖;圖2是連接到一個(gè)以上的主計(jì)算機(jī)的自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的原理框圖;圖3是示出本發(fā)明一個(gè)實(shí)施例的自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的運(yùn)行過程的流程圖;圖4是示出本發(fā)明第二實(shí)施例的自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的運(yùn)行過程的流程圖;圖5是示出本發(fā)明第三實(shí)施例的自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的運(yùn)行過程的流程圖;圖6是示出用于本發(fā)明的主計(jì)算機(jī)的運(yùn)行過程的流程圖。
具體實(shí)施例方式
在以下的描述中,根據(jù)優(yōu)選實(shí)施例說明本發(fā)明。將參考
各優(yōu)選實(shí)施例。盡管結(jié)合優(yōu)選實(shí)施例說明本發(fā)明,但是本技術(shù)領(lǐng)域內(nèi)的熟練技術(shù)人員明白,在所附權(quán)利要求所述的本發(fā)明實(shí)質(zhì)范圍內(nèi),本發(fā)明試圖覆蓋各變換例、修改以及等效例。
根據(jù)介質(zhì)變換設(shè)備的SCSI命令集,說明本發(fā)明。介質(zhì)變換設(shè)備(medium changer)是在存儲(chǔ)器架與數(shù)據(jù)存儲(chǔ)器驅(qū)動(dòng)器之間移動(dòng)數(shù)據(jù)存儲(chǔ)介質(zhì)的設(shè)備。還將這些設(shè)備稱為自動(dòng)數(shù)據(jù)存儲(chǔ)器設(shè)備、存儲(chǔ)器自動(dòng)化設(shè)備、庫、盒式磁盤裝載器等。將說明移動(dòng)介質(zhì)命令和交換介質(zhì)命令。這些命令對(duì)本技術(shù)領(lǐng)域內(nèi)的熟練技術(shù)人員是熟知的。例如,介質(zhì)變換設(shè)備的SCSI命令集包括移動(dòng)介質(zhì)命令和交換介質(zhì)命令。移動(dòng)介質(zhì)命令用于在庫內(nèi)將數(shù)據(jù)存儲(chǔ)介質(zhì)從一個(gè)位置移動(dòng)到另一個(gè)位置。交換介質(zhì)命令被用于通過將一個(gè)以上的移動(dòng)組合到單個(gè)命令中,提高移動(dòng)命令的性能。例如,移動(dòng)介質(zhì)命令可以將盒式磁盤從位置A移動(dòng)到位置B。交換介質(zhì)命令可以將盒式磁盤從位置A移動(dòng)到位置B,而且無論位于位置B的是什么均可以被移動(dòng)到位置C。利用SCSI交換介質(zhì)命令作為例子,該命令規(guī)定了3個(gè)位置源地址、第一目的地地址以及第二目的地地址。請(qǐng)注意,地址指位置標(biāo)識(shí)符,而且可以交換使用術(shù)語地址和位置。上述任何一個(gè)地址規(guī)定的庫位置是可以被該庫內(nèi)的一個(gè)或者多個(gè)機(jī)器人訪問者訪問的庫內(nèi)的位置。將源地址的盒式磁盤移動(dòng)到第一目的地地址,而將原先占據(jù)第一目的地地址的盒式磁盤移動(dòng)到第二目的地地址。第二目的地地址可以與源地址相同,也可以不同。此外,還將說明單元狀態(tài)數(shù)據(jù)(element statusdata)。本技術(shù)領(lǐng)域內(nèi)的熟練技術(shù)人員對(duì)單元狀態(tài)數(shù)據(jù)眾所周知。例如,介質(zhì)變換設(shè)備的SCSI命令命令集包括用于處理單元狀態(tài)數(shù)據(jù)的命令。單元狀態(tài)數(shù)據(jù)包括可能含有盒式磁盤的位置的盒式磁盤映射。盒式磁盤映射可以包括關(guān)于可能的盒式磁盤位置的信息,例如該位置是否含有盒式磁盤(空或滿)、是否可以訪問該盒式磁盤、盒式磁盤條形碼標(biāo)簽值、諸如存儲(chǔ)器槽或數(shù)據(jù)存儲(chǔ)器驅(qū)動(dòng)器等的位置類型。僅為了說明問題對(duì)這些內(nèi)容進(jìn)行了說明,而且本技術(shù)領(lǐng)域內(nèi)的熟練技術(shù)人員明白,在本發(fā)明實(shí)質(zhì)范圍內(nèi),可以采用提供同樣或者類似功能的其他命令集和協(xié)議。
自動(dòng)數(shù)據(jù)存儲(chǔ)器庫通常含有一個(gè)或者多個(gè)庫控制器,用于控制自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的運(yùn)行過程。庫控制器可以取許多不同的形式,而且可以包括嵌入式系統(tǒng)、分布式控制系統(tǒng)、個(gè)人計(jì)算機(jī)、工作站等。圖1示出具有處理器102、RAM 103、非易失性存儲(chǔ)器104、設(shè)備專用電路101以及I/O接口105的典型庫控制器100。作為一種選擇,RAM 103和/或非易失性存儲(chǔ)器104可以包含在處理器102內(nèi),設(shè)備專用電路101和I/O接口105也可以包含在處理器102內(nèi)。處理器102可以包括成品(off the shelf)微處理器、客戶處理器、FPGA(現(xiàn)場(chǎng)可編程門陣列)、ASIC(專用集成電路)、分立邏輯等。RAM 103通常用于保持可變數(shù)據(jù)、堆棧數(shù)據(jù)、可執(zhí)行指令等。非易失性存儲(chǔ)器104可以包括任何類型的非易失性存儲(chǔ)器,例如EEPROM(電可擦可編程只讀存儲(chǔ)器)、閃速PROM(可編程只讀存儲(chǔ)器)、電池后備RAM(隨機(jī)存取存儲(chǔ)器)、硬盤驅(qū)動(dòng)器等。非易失性存儲(chǔ)器104通常用于保持可執(zhí)行固件以及任意非易失性數(shù)據(jù)。I/O接口105是使處理器102與該控制器外部的設(shè)備進(jìn)行通信的通信接口。其例子可以包括串行接口,例如RS-232或USB(通用串行總線)、SCSI(小型計(jì)算機(jī)系統(tǒng)接口)、FC-AL(光纖通道-仲裁回路)等。設(shè)備專用電路101提供附加硬件,以使庫控制器100執(zhí)行唯一功能,例如對(duì)盒式磁盤抓器(gripper)等進(jìn)行馬達(dá)控制。設(shè)備專用電路101可以包括提供脈寬調(diào)制(PWM)控制、模數(shù)轉(zhuǎn)換器(ADC)、數(shù)模轉(zhuǎn)換器(DAC)等的電子線路。此外,全部或者部分設(shè)備專用電路101可以位于庫控制器100的外部。
圖2示出自動(dòng)數(shù)據(jù)存儲(chǔ)器庫200和主計(jì)算機(jī)210、220和230的方框圖。主計(jì)算機(jī)210、220、230通過主機(jī)通信線路211、221、222和231連接到自動(dòng)數(shù)據(jù)存儲(chǔ)器庫200。主機(jī)通信線路211、221、222、231包括進(jìn)入庫200的控制路徑。主機(jī)通信線路211、221、222、231可以包括RS-232、USB(通用串行總線)、SCSI(小型計(jì)算機(jī)系統(tǒng)接口)、FC-AL(光纖通道-仲裁回路)或本技術(shù)領(lǐng)域內(nèi)的熟練技術(shù)人員已知的任何通信接口。主機(jī)通信線路221和222是主機(jī)與自動(dòng)數(shù)據(jù)存儲(chǔ)器庫之間的冗余控制路徑。本技術(shù)領(lǐng)域內(nèi)的熟練技術(shù)人員明白可以存在一個(gè)或者多個(gè)控制路徑,而且它們可以應(yīng)用于本發(fā)明。自動(dòng)數(shù)據(jù)存儲(chǔ)器庫200包括諸如圖1所示庫控制器100的庫控制器201、控制路徑通信線路202、數(shù)據(jù)存儲(chǔ)器驅(qū)動(dòng)器203、數(shù)據(jù)存儲(chǔ)器驅(qū)動(dòng)器通信線路204、用于存儲(chǔ)數(shù)據(jù)的可移動(dòng)的數(shù)據(jù)存儲(chǔ)介質(zhì)208、用于支持可移動(dòng)的數(shù)據(jù)存儲(chǔ)介質(zhì)208的存儲(chǔ)器架206以及用于將可移動(dòng)的數(shù)據(jù)存儲(chǔ)介質(zhì)208傳送到數(shù)據(jù)存儲(chǔ)器庫/從數(shù)據(jù)存儲(chǔ)器庫傳送可移動(dòng)的數(shù)據(jù)存儲(chǔ)介質(zhì)208的任選輸入/輸出站207。作為一種選擇,庫控制器201可以包括處理器、PC、工作站、嵌入式系統(tǒng)等,或者庫控制器201可以包括分布式控制系統(tǒng),正如美國專利6356803所公開的那樣??刂坡窂酵ㄐ啪€路202提供進(jìn)入庫200的控制路徑,而且它們?cè)试S主機(jī)系統(tǒng)將命令發(fā)送到庫200。作為一種選擇,正如美國專利6434090所公開的那樣,控制路徑可以通過數(shù)據(jù)存儲(chǔ)器驅(qū)動(dòng)器203,而且可以通過數(shù)據(jù)存儲(chǔ)器驅(qū)動(dòng)器通信線路204。在這種情況下,可以不需要控制路徑通信線路202,而且可以將主機(jī)通信線路211、221、222、231直接連接到數(shù)據(jù)存儲(chǔ)器驅(qū)動(dòng)器203。總之,無論控制路徑的起點(diǎn)在哪里,本發(fā)明的實(shí)施例均不發(fā)生變化。
數(shù)據(jù)存儲(chǔ)器驅(qū)動(dòng)器203提供了一種對(duì)可移動(dòng)的數(shù)據(jù)存儲(chǔ)介質(zhì)208讀和/或?qū)憯?shù)據(jù)的裝置。數(shù)據(jù)存儲(chǔ)器驅(qū)動(dòng)器203可以包括光驅(qū)動(dòng)器或磁帶驅(qū)動(dòng)器、光盤驅(qū)動(dòng)器或磁盤驅(qū)動(dòng)器、電子介質(zhì)驅(qū)動(dòng)器等。任選數(shù)據(jù)存儲(chǔ)器驅(qū)動(dòng)器通信線路204提供了一種在數(shù)據(jù)存儲(chǔ)器驅(qū)動(dòng)器203與庫控制器201之間進(jìn)行通信的裝置。數(shù)據(jù)存儲(chǔ)器驅(qū)動(dòng)器通信線路204可以包括串行連接,例如RS-232或本技術(shù)領(lǐng)域內(nèi)的熟練技術(shù)人員已知的任何通信協(xié)議。數(shù)據(jù)存儲(chǔ)器驅(qū)動(dòng)器可以直接連接到諸如主計(jì)算機(jī)210、220、230的主機(jī)系統(tǒng)(未示出)以對(duì)可移動(dòng)的數(shù)據(jù)存儲(chǔ)介質(zhì)208讀和/或?qū)憯?shù)據(jù)。在這種情況下,數(shù)據(jù)存儲(chǔ)器驅(qū)動(dòng)器主機(jī)通信線路(未示出)可以包括RS-232、USB(通用串行總線)、SCSI(小型計(jì)算機(jī)系統(tǒng)接口)、FC-AL(光纖通道-仲裁回路)或本技術(shù)領(lǐng)域內(nèi)的熟練技術(shù)人員已知的任何其他通信接口。作為一種選擇,數(shù)據(jù)存儲(chǔ)器驅(qū)動(dòng)器可以根本不連接到主機(jī)系統(tǒng)。在這種情況下,通過數(shù)據(jù)存儲(chǔ)器驅(qū)動(dòng)器通信線路204,庫控制器201可以將命令和數(shù)據(jù)移動(dòng)到數(shù)據(jù)存儲(chǔ)器驅(qū)動(dòng)器/從數(shù)據(jù)存儲(chǔ)器驅(qū)動(dòng)器移動(dòng)命令和數(shù)據(jù)。
圖3示出由自動(dòng)數(shù)據(jù)存儲(chǔ)器庫實(shí)現(xiàn)的本發(fā)明第一實(shí)施例的方法。在步驟301,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫接收主機(jī)命令。在步驟302,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫解碼該命令以確定命令類型,并確定該命令是否與先前的良好命令相同??梢詫⒊晒ν瓿傻拿羁醋魇窍惹傲己妹睢炜刂破鞅3置钋鍐?。該清單可以僅含有成功執(zhí)行的命令,它也可以含有命令的執(zhí)行狀態(tài)。該清單可以是一個(gè)簡單的命令拷貝,它也可以是用于描述該命令的某些其他數(shù)據(jù)集。該清單可以僅包括該先前命令,它也可以包括多個(gè)先前命令。此外,可以根據(jù)諸如移動(dòng)命令與狀態(tài)命令的命令類型組織先前命令清單。在此例中,可以存在先前移動(dòng)命令的命令清單,而且可以存在先前狀態(tài)命令的另一個(gè)命令清單。先前命令清單用于最終確定是否成功執(zhí)行了先前命令。如上所述,它可以是良好命令清單,它也可以是包括關(guān)于命令的、足以確定成功執(zhí)行的信息的命令清單。此外,良好命令清單或先前良好命令清單是等效的,而且可以表示上述描述。在這方面,良好命令是被成功執(zhí)行了的命令。在此,在描述命令清單、先前、良好、成功、先前良好以及先前成功時(shí),均指同一件事情??梢詫⑾惹懊钋鍐未鎯?chǔ)到與庫控制器相連的存儲(chǔ)器內(nèi)。RAM 103和/或非易失性存儲(chǔ)器104、包含在處理器102內(nèi)的存儲(chǔ)器或其他存儲(chǔ)器(圖1未示出)均可以用作用于存儲(chǔ)命令清單信息的存儲(chǔ)器部分。步驟302捕獲,即使發(fā)出命令的主機(jī)系統(tǒng)可能未收到命令成功完成的響應(yīng),但是沿一個(gè)控制路徑發(fā)送的命令實(shí)際上仍被成功完成的情況。具體地說,從自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的角度出發(fā),步驟302查找重復(fù)命令。該重復(fù)命令可能是主機(jī)發(fā)送重發(fā)命令的結(jié)果,因?yàn)橹鳈C(jī)沒有從自動(dòng)數(shù)據(jù)存儲(chǔ)器庫接收到命令成功完成響應(yīng)。主計(jì)算機(jī)起動(dòng)的該故障切換過程可以使用同一個(gè)控制路徑(與第一次發(fā)送命令是使用的控制路徑相同的控制路徑)或者另一個(gè)控制路徑將重發(fā)命令發(fā)送到自動(dòng)數(shù)據(jù)存儲(chǔ)器庫。例如,主機(jī)210可以利用圖2所示的控制路徑211發(fā)送命令,然后,通過控制路徑211發(fā)送重發(fā)命令。在另一個(gè)例子中,主機(jī)220可以利用圖2所示的控制路徑221發(fā)送命令,然后,通過圖2所示的控制路徑222發(fā)送重發(fā)命令。作為一種選擇,主機(jī)220可以通過不是控制路徑221或222的另一個(gè)控制路徑(圖2未示出)發(fā)送重發(fā)命令。利用主機(jī)與自動(dòng)數(shù)據(jù)存儲(chǔ)器庫之間存在的控制路徑可以不止一次發(fā)送命令。參考圖3,如果該命令與先前良好命令相同,如步驟302所示,則在步驟303,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫將良好命令狀態(tài)返回主機(jī)。然而,如果該命令不同于先前良好命令,如步驟302所示,則控制轉(zhuǎn)移到步驟304,在步驟304,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫執(zhí)行該命令。在步驟305,該庫確定此時(shí)該命令是否被成功執(zhí)行。如果該命令被成功執(zhí)行,如步驟305所示,則控制轉(zhuǎn)移到步驟307,在步驟307,利用剛成功執(zhí)行的命令更新先前良好命令清單。然而,如果該命令未被成功執(zhí)行,如步驟305所示,則控制轉(zhuǎn)移到步驟306,在步驟306,不更新先前良好命令清單。作為一種選擇,可以在步驟306,從該清單中刪除先前良好命令。本技術(shù)領(lǐng)域內(nèi)的熟練技術(shù)人員明白,在本發(fā)明范圍內(nèi),可以對(duì)圖3所示的流程圖進(jìn)行各種變化。例如,可以存在不止一個(gè)先前命令清單,而且它可以基于接收命令的類型或者某個(gè)其他判據(jù)。在這種情況下,可以修改步驟302以檢驗(yàn)先前命令的相應(yīng)命令清單。在另一個(gè)例子中,如果先前命令清單含有命令執(zhí)行狀態(tài),如上所述,則可以刪除步驟305和306。在這種情況下,步驟307可以利用當(dāng)前命令及其執(zhí)行狀態(tài)更新先前命令清單。
圖4示出自動(dòng)數(shù)據(jù)存儲(chǔ)器庫執(zhí)行的本發(fā)明第二實(shí)施例的方法。在步驟401,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫接收主機(jī)命令。在步驟402,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫解碼該命令以確定命令類型,更具體地說,是確定該命令是移動(dòng)介質(zhì)命令還是交換介質(zhì)命令。移動(dòng)介質(zhì)命令和交換介質(zhì)命令是一般類型的傳輸介質(zhì)命令。這兩種命令使數(shù)據(jù)存儲(chǔ)介質(zhì)在自動(dòng)數(shù)據(jù)存儲(chǔ)器庫內(nèi)傳輸。移動(dòng)介質(zhì)命令用于將數(shù)據(jù)存儲(chǔ)介質(zhì)從庫內(nèi)的一個(gè)位置移動(dòng)到另一個(gè)位置。交換介質(zhì)命令被用于通過將不一個(gè)以上的移動(dòng)組合到單個(gè)命令中,提高移動(dòng)命令的性能。如果該命令不是移動(dòng)命令,而且也不是交換命令,如步驟402所示,控制轉(zhuǎn)移到步驟403,在步驟403,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫執(zhí)行該主機(jī)命令。步驟402減小了正確處理故障切換的問題,因?yàn)闊o需做進(jìn)一步檢驗(yàn),就可以簡單執(zhí)行移動(dòng)命令或交換命令之外的任何命令。然而,如果該命令是移動(dòng)命令或交換命令,如步驟402所示,則控制轉(zhuǎn)移到步驟404,在步驟404,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫確定該命令是否是與先前良好命令相同的命令??梢詫⒊晒ν瓿傻拿羁醋魇窍惹傲己妹?。庫控制器保持先前命令清單。該清單可以僅含有被成功執(zhí)行的命令,它也可以含有命令的執(zhí)行狀態(tài)。該清單可以是命令的簡單拷貝,它也可以是描述該命令的某個(gè)其他數(shù)據(jù)集。該清單可以僅包括該先前命令,它也可以包括多個(gè)先前命令。此外,可以根據(jù)諸如移動(dòng)命令與狀態(tài)命令的命令類型組織先前命令清單。在此例中,可以存在先前移動(dòng)命令的命令清單,而且可以存在先前狀態(tài)命令的另一個(gè)命令清單。步驟404捕獲,即使發(fā)出命令的主機(jī)系統(tǒng)可能未收到命令成功完成的響應(yīng),但是沿一個(gè)控制路徑發(fā)送的命令實(shí)際上仍被成功完成的情況。具體地說,從自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的角度出發(fā),步驟404查找重復(fù)命令。該重復(fù)命令可能是主機(jī)發(fā)送重發(fā)命令的結(jié)果,因?yàn)橹鳈C(jī)沒有從自動(dòng)數(shù)據(jù)存儲(chǔ)器庫接收到命令成功完成響應(yīng)。主計(jì)算機(jī)起動(dòng)的該故障切換過程可以使用同一個(gè)控制路徑(與第一次發(fā)送該命令時(shí)使用的控制路徑相同的控制路徑)或者另一個(gè)控制路徑將重發(fā)命令發(fā)送到自動(dòng)數(shù)據(jù)存儲(chǔ)器庫。例如,主機(jī)210可以利用圖2所示的控制路徑211發(fā)送命令,然后,通過控制路徑211發(fā)送重發(fā)命令。在另一個(gè)例子中,主機(jī)220可以利用圖2所示的控制路徑221發(fā)送命令,然后,通過圖2所示的控制路徑222發(fā)送重發(fā)命令。作為一種選擇,主機(jī)220可以通過不是控制路徑221或222的另一個(gè)控制路徑(圖2未示出)發(fā)送重發(fā)命令。利用主機(jī)與自動(dòng)數(shù)據(jù)存儲(chǔ)器庫之間存在的任意一個(gè)控制路徑均可以不止一次發(fā)送命令。參考圖4,如果該命令與先前良好命令相同,如步驟404所示,則控制轉(zhuǎn)移到步驟405,在步驟405,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫將良好命令狀態(tài)返回主機(jī)。然而,如果該命令不同于先前良好命令,如步驟404所示,則在步驟406,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫執(zhí)行該命令。在步驟407,該庫確定此時(shí)該命令是否被成功執(zhí)行。如果該命令被成功執(zhí)行,如步驟407所示,則控制轉(zhuǎn)移到步驟409,在步驟409,利用剛成功執(zhí)行的命令更新先前良好命令清單。然而,如果該命令未被成功執(zhí)行,如步驟407所示,則控制轉(zhuǎn)移到步驟408,在步驟408,不更新先前良好命令清單。作為一種選擇,可以在步驟408,從該清單中刪除先前良好命令。本技術(shù)領(lǐng)域內(nèi)的熟練技術(shù)人員明白,在本發(fā)明范圍內(nèi),可以對(duì)圖4所示的流程圖進(jìn)行各種變化。例如,步驟402可以包括不是移動(dòng)命令和交換命令的命令,或者還包括移動(dòng)命令和交換命令之外的命令。在另一個(gè)例子中,如果先前命令清單含有命令執(zhí)行狀態(tài),如上所述,則可以刪除步驟407和408。在這種情況下,步驟409可以利用當(dāng)前命令及其執(zhí)行狀態(tài)更新先前命令清單。
圖5示出自動(dòng)數(shù)據(jù)存儲(chǔ)器庫執(zhí)行的本發(fā)明第三實(shí)施例的方法。在步驟501,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫接收主機(jī)命令。在步驟502,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫解碼該命令以確定命令類型,更具體地說,是確定該命令是移動(dòng)介質(zhì)命令還是交換介質(zhì)命令。移動(dòng)介質(zhì)命令和交換介質(zhì)命令是一般類型的傳輸介質(zhì)命令。這兩種命令使數(shù)據(jù)存儲(chǔ)介質(zhì)在自動(dòng)數(shù)據(jù)存儲(chǔ)器庫內(nèi)傳輸。移動(dòng)介質(zhì)命令用于將數(shù)據(jù)存儲(chǔ)介質(zhì)從庫內(nèi)的一個(gè)位置移動(dòng)到另一個(gè)位置。交換介質(zhì)命令被用于通過將一個(gè)以上的移動(dòng)組合到單個(gè)命令中,提高移動(dòng)命令的性能。如果該命令不是移動(dòng)命令,而且也不是交換命令,如步驟502所示,則控制轉(zhuǎn)移到步驟503,在步驟503,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫執(zhí)行該主機(jī)命令。步驟502減小了正確處理故障切換的問題,因?yàn)闊o需做進(jìn)一步檢驗(yàn),就可以簡單執(zhí)行移動(dòng)命令或交換命令之外的任何命令。然而,如果該命令是移動(dòng)命令或交換命令,如步驟502所示,則控制轉(zhuǎn)移到步驟504,在步驟504,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫確定該命令是否是與先前良好命令相同的命令??梢詫⒊晒ν瓿傻拿羁醋魇窍惹傲己妹睢炜刂破鞅3窒惹懊钋鍐?。該清單可以僅含有被成功執(zhí)行的命令,它也可以含有命令的執(zhí)行狀態(tài)。該清單可以是命令的簡單拷貝,它也可以是描述該命令的某個(gè)其他數(shù)據(jù)集。該清單可以僅包括該先前命令,它也可以包括多個(gè)先前命令。此外,可以根據(jù)諸如移動(dòng)命令與狀態(tài)命令的命令類型組織先前命令清單。在此例中,可以存在先前移動(dòng)命令的命令清單,而且可以存在先前狀態(tài)命令的另一個(gè)命令清單。步驟504捕獲,即使發(fā)出命令的主機(jī)系統(tǒng)可能未收到命令成功完成的響應(yīng),但是沿一個(gè)控制路徑發(fā)送的命令實(shí)際上仍被成功完成的情況。具體地說,從自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的角度出發(fā),步驟504查找重復(fù)命令。該重復(fù)命令可能是主機(jī)發(fā)送重發(fā)命令的結(jié)果,因?yàn)橹鳈C(jī)沒有從自動(dòng)數(shù)據(jù)存儲(chǔ)器庫接收到命令成功完成響應(yīng)。主計(jì)算機(jī)起動(dòng)的該故障切換過程可以使用同一個(gè)控制路徑(與第一次發(fā)送該命令時(shí)使用的控制路徑相同的控制路徑)或者另一個(gè)控制路徑將重發(fā)命令發(fā)送到自動(dòng)數(shù)據(jù)存儲(chǔ)器庫。例如,主機(jī)210可以利用圖2所示的控制路徑211發(fā)送命令,然后,通過控制路徑211發(fā)送重發(fā)命令。在另一個(gè)例子中,主機(jī)220可以利用圖2所示的控制路徑221發(fā)送命令,然后,通過圖2所示的控制路徑222發(fā)送重發(fā)命令。作為一種選擇,主機(jī)220可以通過不是控制路徑221或222的另一個(gè)控制路徑(圖2未示出)發(fā)送重發(fā)命令。利用主機(jī)與自動(dòng)數(shù)據(jù)存儲(chǔ)器庫之間存在的任任意一個(gè)控制路徑可以不止一次發(fā)送命令。參考圖5,如果該命令與先前良好命令不相同,如步驟504所示,則控制轉(zhuǎn)移到步驟510,在步驟510,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫執(zhí)行移動(dòng)命令或交換命令。然而,如果該命令與先前良好命令相同,如步驟504所示,則控制轉(zhuǎn)移到步驟505,在步驟505,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫確定移動(dòng)命令或交換命令的源位置是空還是不可存取。步驟505進(jìn)一步嘗試確定是否已經(jīng)執(zhí)行了該命令。例如,如果最后一個(gè)成功命令是與當(dāng)前命令相同的命令,則移動(dòng)命令或交換命令的源位置應(yīng)該為空,因?yàn)橐呀?jīng)成功執(zhí)行了該命令。此外,可存取性檢驗(yàn)將進(jìn)一步增強(qiáng)了先驗(yàn)執(zhí)行的確定,因?yàn)樗c驅(qū)動(dòng)器有關(guān)。例如,通常不能訪問裝載到可移動(dòng)的介質(zhì)驅(qū)動(dòng)器內(nèi)的盒式磁盤,直到將該盒式磁盤從驅(qū)動(dòng)器卸下。如果源位置和目的地地址是一個(gè)驅(qū)動(dòng)器,則該命令可能是移動(dòng)命令。如果因?yàn)闄z測(cè)到介質(zhì)負(fù)載或線程錯(cuò)誤(thread error)而重新裝載該介質(zhì),則這可能作為例如半模(re-chuck)ERP(錯(cuò)誤校正過程)出現(xiàn)??纱嫒⌒詸z驗(yàn)可以防止故障切換將盒式磁盤重新裝載到驅(qū)動(dòng)器的可能性。參考圖5,如果源位置是空,或者是不可存取,如步驟505所示,則在步驟506,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫將良好命令狀態(tài)返回主機(jī)。然而,如果源位置不是空,而是可存取,如步驟505所示,則控制轉(zhuǎn)移到步驟507,在步驟507,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫確定該命令是不是交換介質(zhì)命令。如果該命令不是交換介質(zhì)命令,如步驟507所示,則控制轉(zhuǎn)移到步驟510,在步驟510,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫執(zhí)行移動(dòng)命令。然而,如果該命令是交換命令,如步驟507所示,則控制轉(zhuǎn)移到步驟508,在步驟508,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫確定第一目的地位置是否是空或不可存取。以與步驟505類似的方式,步驟508進(jìn)一步嘗試確定該交換命令是否已經(jīng)被執(zhí)行。如果第一目的地位置不是空,而是可存取,如步驟508所示,則控制轉(zhuǎn)移到步驟510,在步驟510,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫執(zhí)行交換命令。然而,如果第一目的地位置是空,或者不可存取,如步驟508所示,則在步驟509,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫將良好命令狀態(tài)返回主機(jī)。如上所述,如果該命令與先前成功命令不同,如步驟504所示,或者如果該命令不是交換介質(zhì)命令,如步驟507所示,或者如果第一目的地位置不是空,而是可存取,如步驟508所示,則控制轉(zhuǎn)移到步驟510,在步驟510,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫執(zhí)行該命令。在步驟511,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫確定該命令是否被成功執(zhí)行。如果該命令被成功執(zhí)行,如步驟511所示,則控制轉(zhuǎn)移到步驟513,在步驟513,利用剛成功執(zhí)行的命令更新先前良好命令清單。然而,如果該命令未被成功執(zhí)行,如步驟511所示,則控制轉(zhuǎn)移到步驟512,在步驟512,不更新先前良好命令清單。作為一種選擇,在步驟512,可以從該清單中刪除該先前良好命令。本技術(shù)領(lǐng)域內(nèi)的熟練技術(shù)人員明白,在本發(fā)明方法范圍內(nèi),可以對(duì)圖5所示的流程圖做各種修改。例如,一些庫可以不支持交換介質(zhì)命令,而且可以省略步驟507、508和509。在這種情況下,步驟505的否(NO)答案將引導(dǎo)到步驟510。作為另一個(gè)例子,可以刪除或者修改步驟502和503,以將流程圖的該邏輯應(yīng)用到其他自動(dòng)數(shù)據(jù)存儲(chǔ)器庫命令。在這種情況下,步驟504和513的先前良好命令可以包括不是移動(dòng)命令和交換命令的命令,或者包括移動(dòng)命令和交換命令之外的命令。此外,可以省略步驟502,因?yàn)椴襟E504可以確定該命令是否已經(jīng)被執(zhí)行。在這種情況下,可對(duì)步驟513的邏輯進(jìn)行修改以便僅包括某些命令,因?yàn)槿魏巫詣?dòng)數(shù)據(jù)存儲(chǔ)器庫命令均可以導(dǎo)致執(zhí)行步驟513。此外,可以修改或者刪除在步驟505進(jìn)行的空和/或不可存取檢驗(yàn)。例如,可以跳越對(duì)空和/或不可存取進(jìn)行的附加檢驗(yàn),因?yàn)榻?jīng)過步驟504,自動(dòng)數(shù)據(jù)存儲(chǔ)器庫含有成功完成該命令的記錄。此外,可以刪除為了檢查當(dāng)前命令是否與步驟504的最后良好命令相同進(jìn)行的檢驗(yàn),因?yàn)樵诓襟E505對(duì)空和/或不可存取進(jìn)行的檢驗(yàn)可以間接捕獲該命令已經(jīng)被執(zhí)行的情況。作為又一個(gè)例子,可以改變步驟順序。例如,可以將步驟502和504對(duì)換。最后,如果先前命令清單含有如上所述的命令執(zhí)行狀態(tài),則可以刪除步驟511和512。在這種情況下,步驟513可以利用當(dāng)前命令及其執(zhí)行狀態(tài)更新先前命令清單。
圖6示出主計(jì)算機(jī)執(zhí)行的、上述全部3個(gè)實(shí)施例的方法。在步驟601,主計(jì)算機(jī)通過諸如圖2所示主機(jī)通信線路221的第一控制路徑發(fā)出命令。在步驟602,主計(jì)算機(jī)確定該命令是否完成。命令完成可以包括命令成功完成狀態(tài)。作為一種選擇,命令完成還可以包括命令未成功完成狀態(tài)。例如,一些命令錯(cuò)誤可能是因?yàn)榭刂坡窂街械膯栴}產(chǎn)生的,而其他命令錯(cuò)誤可能是與通過其發(fā)送命令的控制路徑無關(guān)的問題產(chǎn)生的。因此,對(duì)一些錯(cuò)誤的處理需要不同于對(duì)其他錯(cuò)誤的處理。作為一種選擇,步驟602可以僅檢驗(yàn)該命令成功完成。參考圖6,如果該命令完成了,如步驟602所示,則控制轉(zhuǎn)移到步驟603,在步驟603,主機(jī)認(rèn)為該控制路徑良好,并正確處理命令響應(yīng)。然而,如果自動(dòng)數(shù)據(jù)存儲(chǔ)器庫命令未完成,如步驟602所示,則控制轉(zhuǎn)移到步驟604,在步驟604,主機(jī)通過諸如圖2所示主機(jī)通信線路222的第二控制路徑發(fā)送同一個(gè)命令(重發(fā)命令)。作為一種選擇,主機(jī)可以通過同一個(gè)控制路徑發(fā)送同一個(gè)命令(重發(fā)命令)??梢詫?duì)同一個(gè)控制路徑,或者附加控制路徑重復(fù)步驟602、603和604。這樣可以執(zhí)行任何數(shù)量的被試控制路徑故障切換。
在本發(fā)明的另一個(gè)實(shí)施例中,主計(jì)算機(jī)同時(shí)沿兩個(gè)或者更多個(gè)控制路徑發(fā)送同一個(gè)命令。由于從庫控制器的角度出發(fā),一個(gè)命令總是比其他命令先到,所以庫執(zhí)行的邏輯與圖1至圖5所示的邏輯相同。主計(jì)算機(jī)可以監(jiān)測(cè)重復(fù)響應(yīng),而不管理重發(fā)。在此,導(dǎo)致庫執(zhí)行本發(fā)明所述邏輯的任何順序的主機(jī)命令均被稱為主機(jī)重發(fā)。
盡管利用具有冗余控制路徑的單個(gè)主計(jì)算機(jī)對(duì)本發(fā)明進(jìn)行了大致說明,但是它可以應(yīng)用于單個(gè)控制路徑。例如,主計(jì)算機(jī)可以具有一個(gè)以上的與一個(gè)庫控制路徑相連的主機(jī)總線適配器。一個(gè)主機(jī)總線適配器發(fā)生故障可以使主機(jī)利用另一個(gè)主機(jī)總線適配器通過同一個(gè)控制路徑重發(fā)命令。主機(jī)總線適配器包括主機(jī)可以利用其通過SCSI(小型計(jì)算機(jī)系統(tǒng)接口)總線、FC-AL(光纖通道-仲裁回路)總線、USB(通用串行總線)或者本技術(shù)領(lǐng)域內(nèi)的熟練技術(shù)人員已知的任何其他通信方法實(shí)現(xiàn)通信的電路。
盡管利用具有多個(gè)控制路徑的單個(gè)主計(jì)算機(jī)對(duì)本發(fā)明進(jìn)行了說明,但是它可以應(yīng)用于共享一個(gè)或者多個(gè)控制路徑的多個(gè)主計(jì)算機(jī)。在這種情況下,可以擴(kuò)充先前良好命令清單以包括關(guān)于該命令與哪個(gè)主機(jī)有關(guān)的信息??梢岳迷摳郊有畔⑼粋€(gè)主機(jī)發(fā)出的當(dāng)前命令與先前命令進(jìn)行比較。
盡管對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行了詳細(xì)說明,但是熟練技術(shù)人員明白,在所附權(quán)利要求所述的本發(fā)明范圍內(nèi),可以對(duì)這些實(shí)施例進(jìn)行修改和調(diào)整。
權(quán)利要求
1.一種用于對(duì)在主計(jì)算機(jī)與自動(dòng)數(shù)據(jù)存儲(chǔ)器庫之間傳遞的重發(fā)命令進(jìn)行管理的方法,所述主計(jì)算機(jī)利用一個(gè)或者多個(gè)控制路徑與所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫進(jìn)行通信,而且所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫包括用于控制所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的庫控制器,所述方法包括下述步驟所述主計(jì)算機(jī)利用所述一個(gè)或者多個(gè)控制路徑之一將命令發(fā)送到所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫;所述主計(jì)算機(jī)利用所述一個(gè)或者多個(gè)控制路徑之任一將所述命令的重發(fā)發(fā)送到所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫;所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫接收并解碼所述命令;以及如果響應(yīng)利用所述一個(gè)或者多個(gè)控制路徑的所述之一發(fā)送到所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的所述命令,所述命令已經(jīng)被執(zhí)行,則所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫將命令完成響應(yīng)發(fā)送到所述主計(jì)算機(jī),而不執(zhí)行所述命令的所述重發(fā)。
2.根據(jù)權(quán)利要求1所述的方法,其中所述庫控制器包括用于存儲(chǔ)良好命令清單的存儲(chǔ)器部分,所述方法包括附加步驟如果響應(yīng)利用所述一個(gè)或者多個(gè)控制路徑的所述之一發(fā)送到所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的所述命令,所述命令沒有已被執(zhí)行,則所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫執(zhí)行所述命令的所述重發(fā);以及如果成功執(zhí)行了所述命令的所述重發(fā),則所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫利用所述命令更新所述良好命令清單。
3.根據(jù)權(quán)利要求1所述的方法,其中所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫包括數(shù)據(jù)存儲(chǔ)介質(zhì)和用于傳輸所述數(shù)據(jù)存儲(chǔ)介質(zhì)的裝置,其中權(quán)利要求1所述方法中描述所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫接收并解碼所述命令的步驟進(jìn)一步包括步驟如果所述命令不是傳輸所述數(shù)據(jù)存儲(chǔ)介質(zhì)的命令,則所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫執(zhí)行所述命令的所述重發(fā)。
4.根據(jù)權(quán)利要求3所述的方法,其中所述庫控制器包括用于存儲(chǔ)良好命令清單的存儲(chǔ)器部分,所述方法包括附加步驟如果響應(yīng)利用所述一個(gè)或者多個(gè)控制路徑的所述之一發(fā)送到所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的所述命令,所述命令沒有已被執(zhí)行,則所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫執(zhí)行所述命令的所述重發(fā);以及如果成功執(zhí)行了所述命令的所述重發(fā),則所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫利用所述命令更新所述良好命令清單。
5.根據(jù)權(quán)利要求1所述的方法,其中所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫包括數(shù)據(jù)存儲(chǔ)介質(zhì)和用于傳輸所述數(shù)據(jù)存儲(chǔ)介質(zhì)的裝置,其中權(quán)利要求1所述方法中描述所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫接收并解碼所述命令的步驟進(jìn)一步包括步驟如果所述命令是傳輸所述數(shù)據(jù)存儲(chǔ)介質(zhì)的命令,而且所述命令的源地址規(guī)定的庫位置為空,則所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫不執(zhí)行所述命令的所述重發(fā)。
6.根據(jù)權(quán)利要求5所述的方法,其中所述庫控制器包括用于存儲(chǔ)良好命令清單的存儲(chǔ)器部分,所述方法包括附加步驟如果響應(yīng)利用所述一個(gè)或者多個(gè)控制路徑的所述之一發(fā)送到所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的所述命令,所述命令沒有已被執(zhí)行,則所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫執(zhí)行所述命令的所述重發(fā);以及如果成功執(zhí)行了所述命令的所述重發(fā),則所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫利用所述命令更新所述良好命令清單。
7.根據(jù)權(quán)利要求1所述的方法,其中所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫包括數(shù)據(jù)存儲(chǔ)介質(zhì)和用于傳輸所述數(shù)據(jù)存儲(chǔ)介質(zhì)的裝置,其中權(quán)利要求1所述方法中描述所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫接收并解碼所述命令的步驟進(jìn)一步包括步驟如果所述命令是交換命令,而且所述交換命令的第一目的地地址指定的庫位置為空,則所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫不執(zhí)行所述命令的所述重發(fā)。
8.根據(jù)權(quán)利要求7所述的方法,其中所述庫控制器包括用于存儲(chǔ)良好命令清單的存儲(chǔ)器部分,所述方法包括附加步驟如果響應(yīng)利用所述一個(gè)或者多個(gè)控制路徑的所述之一發(fā)送到所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的所述命令,所述命令沒有已被執(zhí)行,則所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫執(zhí)行所述命令的所述重發(fā);如果成功執(zhí)行了所述命令的所述重發(fā),則所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫利用所述命令更新所述良好命令清單。
9.一種用于對(duì)在主計(jì)算機(jī)與自動(dòng)數(shù)據(jù)存儲(chǔ)器庫之間傳遞的重發(fā)命令進(jìn)行管理的系統(tǒng),所述系統(tǒng)包括一個(gè)或者多個(gè)控制路徑,用于在所述主計(jì)算機(jī)與所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫之間進(jìn)行通信;庫控制器,用于控制所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫;所述主計(jì)算機(jī),適于利用所述一個(gè)或者多個(gè)控制路徑之一將命令發(fā)送到所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫;所述主計(jì)算機(jī),適于利用所述一個(gè)或者多個(gè)控制路徑之任一將所述命令的重發(fā)發(fā)送到所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫;所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫,適于接收并解碼所述命令;以及所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫,如果響應(yīng)利用所述一個(gè)或者多個(gè)控制路徑的所述之一發(fā)送到所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的所述命令,所述命令已經(jīng)被執(zhí)行,適于將命令完成響應(yīng)發(fā)送到所述主計(jì)算機(jī),而不執(zhí)行所述命令的所述重發(fā)。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),該系統(tǒng)進(jìn)一步包括存儲(chǔ)器部分,用于存儲(chǔ)良好命令清單,所述存儲(chǔ)器部分連接到所述庫控制器;所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫,如果響應(yīng)利用所述一個(gè)或者多個(gè)控制路徑的所述之一發(fā)送到所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的所述命令,所述命令沒有已被執(zhí)行,則適于執(zhí)行所述命令的所述重發(fā);以及所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫,如果成功執(zhí)行了所述命令的所述重發(fā),則適于更新所述良好命令清單。
11.根據(jù)權(quán)利要求9所述的系統(tǒng),該系統(tǒng)進(jìn)一步包括數(shù)據(jù)存儲(chǔ)介質(zhì),用于存儲(chǔ)數(shù)據(jù);用于傳送所述數(shù)據(jù)存儲(chǔ)介質(zhì)的裝置;所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫,如果所述命令不是傳輸所述數(shù)據(jù)存儲(chǔ)介質(zhì)的命令,則適于在對(duì)所述命令進(jìn)行所述解碼后,執(zhí)行所述命令的所述重發(fā)。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),該系統(tǒng)進(jìn)一步包括存儲(chǔ)器部分,用于存儲(chǔ)良好命令清單,所述存儲(chǔ)器部分連接到所述庫控制器;所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫,如果響應(yīng)利用所述一個(gè)或者多個(gè)控制路徑的所述之一發(fā)送到所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的所述命令,所述命令沒有已被執(zhí)行,則適于執(zhí)行所述命令的所述重發(fā);以及所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫,如果成功執(zhí)行了所述命令的所述重發(fā),則適于利用所述命令良好狀態(tài)更新所述良好命令清單。
13.根據(jù)權(quán)利要求9所述的系統(tǒng),該系統(tǒng)進(jìn)一步包括數(shù)據(jù)存儲(chǔ)介質(zhì),用于存儲(chǔ)數(shù)據(jù);用于傳送所述數(shù)據(jù)存儲(chǔ)介質(zhì)的裝置;所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫,如果所述命令是傳輸所述數(shù)據(jù)存儲(chǔ)介質(zhì)的命令,而且所述命令的源地址指定的庫位置為空,則適于在對(duì)所述命令進(jìn)行所述解碼后,不執(zhí)行所述命令的所述重發(fā)。
14.根據(jù)權(quán)利要求13所述的系統(tǒng),該系統(tǒng)進(jìn)一步包括存儲(chǔ)器部分,用于存儲(chǔ)良好命令清單,所述存儲(chǔ)器部分連接到所述庫控制器;所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫,如果響應(yīng)利用所述一個(gè)或者多個(gè)控制路徑的所述之一發(fā)送到所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的所述命令,所述命令沒有已被執(zhí)行,則適于執(zhí)行所述命令的所述重發(fā);以及所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫,如果成功執(zhí)行了所述命令的所述重發(fā),則適于更新所述良好命令清單。
15.根據(jù)權(quán)利要求9所述的系統(tǒng),該系統(tǒng)進(jìn)一步包括數(shù)據(jù)存儲(chǔ)介質(zhì),用于存儲(chǔ)數(shù)據(jù);用于傳送所述數(shù)據(jù)存儲(chǔ)介質(zhì)的裝置;所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫,如果所述命令是交換命令,而且所述交換命令的第一目的地地址指定的庫位置為空,則適于在對(duì)所述命令進(jìn)行所述解碼后,不執(zhí)行所述命令的所述重發(fā)。
16.根據(jù)權(quán)利要求15所述的系統(tǒng),該系統(tǒng)進(jìn)一步包括存儲(chǔ)器部分,用于存儲(chǔ)良好命令清單,所述存儲(chǔ)器部分連接到所述庫控制器;所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫,如果響應(yīng)利用所述一個(gè)或者多個(gè)控制路徑的所述之一發(fā)送到所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的所述命令,所述命令沒有已被執(zhí)行,則適于執(zhí)行所述命令的所述重發(fā);以及所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫,如果成功執(zhí)行了所述命令的所述重發(fā),則適于更新所述良好命令清單。
17.一種位于計(jì)算機(jī)可讀介質(zhì)上、可與可編程計(jì)算機(jī)一起使用的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品具有嵌入其內(nèi)、用于管理在主計(jì)算機(jī)與自動(dòng)數(shù)據(jù)存儲(chǔ)器庫之間傳遞的重發(fā)命令的計(jì)算機(jī)可讀程序代碼,所述主計(jì)算機(jī)利用一個(gè)或者多個(gè)控制路徑與所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫進(jìn)行通信,所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫包括用于控制所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的庫控制器,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀程序代碼,使所述主計(jì)算機(jī)利用所述一個(gè)或者多個(gè)控制路徑之一將命令發(fā)送到所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫;計(jì)算機(jī)可讀程序代碼,使所述主計(jì)算機(jī)利用所述一個(gè)或者多個(gè)控制路徑之任一將所述命令的重發(fā)發(fā)送到所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫;計(jì)算機(jī)可讀程序代碼,使所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫接收并解碼所述命令;以及計(jì)算機(jī)可讀程序代碼,如果響應(yīng)利用所述一個(gè)或者多個(gè)控制路徑的所述之一發(fā)送到所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的所述命令,所述命令已經(jīng)被執(zhí)行,則使所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫將命令完成響應(yīng)發(fā)送到所述主計(jì)算機(jī),而不執(zhí)行所述命令的所述重發(fā)。
18.根據(jù)權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其中所述庫控制器包括用于存儲(chǔ)良好命令清單的存儲(chǔ)器部分,而且該計(jì)算機(jī)可讀程序產(chǎn)品進(jìn)一步包括計(jì)算機(jī)可讀程序代碼,如果響應(yīng)利用所述一個(gè)或者多個(gè)控制路徑的所述之一發(fā)送到所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的所述命令,所述命令沒有已被執(zhí)行,則使所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫執(zhí)行所述命令的所述重發(fā);以及計(jì)算機(jī)可讀程序代碼,如果成功執(zhí)行了所述命令的所述重發(fā),則使所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫利用所述命令更新所述良好命令清單。
19.根據(jù)權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其中所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫包括數(shù)據(jù)存儲(chǔ)介質(zhì)、用于傳輸所述數(shù)據(jù)存儲(chǔ)介質(zhì)的裝置,而且進(jìn)一步包括計(jì)算機(jī)可讀程序代碼,如果所述命令不是傳輸所述數(shù)據(jù)存儲(chǔ)介質(zhì)的命令,則在對(duì)所述命令進(jìn)行所述解碼后,使所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫執(zhí)行所述命令的所述重發(fā);計(jì)算機(jī)可讀程序代碼,如果響應(yīng)利用所述一個(gè)或者多個(gè)控制路徑的所述之一發(fā)送到所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的所述命令,已經(jīng)執(zhí)行了所述命令,則使所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫將命令完成響應(yīng)發(fā)送到所述主計(jì)算機(jī)。
20.根據(jù)權(quán)利要求19所述的計(jì)算機(jī)可讀程序產(chǎn)品,其中所述庫控制器包括用于存儲(chǔ)良好命令清單的存儲(chǔ)器部分,而且進(jìn)一步包括計(jì)算機(jī)可讀程序代碼,如果響應(yīng)利用所述一個(gè)或者多個(gè)控制路徑的所述之一發(fā)送到所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的所述命令,所述命令沒有已被執(zhí)行,則使所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫執(zhí)行所述命令的所述重發(fā);以及計(jì)算機(jī)可讀程序代碼,如果成功執(zhí)行了所述命令的所述重發(fā),則使所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫利用所述命令更新所述良好命令清單。
21.根據(jù)權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其中所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫包括數(shù)據(jù)存儲(chǔ)介質(zhì)、用于傳輸所述數(shù)據(jù)存儲(chǔ)介質(zhì)的裝置,而且進(jìn)一步包括計(jì)算機(jī)可讀程序代碼,如果所述命令是傳輸所述數(shù)據(jù)存儲(chǔ)介質(zhì)的命令,而且所述命令的源地址指定的庫位置為空,則在對(duì)所述命令進(jìn)行所述解碼后,所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫不執(zhí)行所述命令的所述重發(fā)。
22.根據(jù)權(quán)利要求21所述的計(jì)算機(jī)可讀程序產(chǎn)品,其中所述庫控制器包括用于存儲(chǔ)良好命令清單的存儲(chǔ)器部分,而且進(jìn)一步包括計(jì)算機(jī)可讀程序代碼,如果響應(yīng)利用所述一個(gè)或者多個(gè)控制路徑的所述之一發(fā)送到所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的所述命令,所述命令沒有已被執(zhí)行,則使所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫執(zhí)行所述命令的所述重發(fā);以及計(jì)算機(jī)可讀程序代碼,如果成功執(zhí)行了所述命令的所述重發(fā),則使所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫利用所述命令更新所述良好命令清單。
23.根據(jù)權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其中所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫包括數(shù)據(jù)存儲(chǔ)介質(zhì)、用于傳輸所述數(shù)據(jù)存儲(chǔ)介質(zhì)的裝置,而且進(jìn)一步包括計(jì)算機(jī)可讀程序代碼,如果所述命令是交換命令,而且所述交換命令的第一目的地地址指定的庫位置為空,則在對(duì)所述命令進(jìn)行所述解碼后,使所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫不執(zhí)行所述命令的所述重發(fā)。
24.根據(jù)權(quán)利要求23所述的計(jì)算機(jī)程序產(chǎn)品,其中所述庫控制器包括用于存儲(chǔ)良好命令清單的存儲(chǔ)器部分,而且進(jìn)一步包括計(jì)算機(jī)可讀程序代碼,如果響應(yīng)利用所述一個(gè)或者多個(gè)控制路徑的所述之一發(fā)送到所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫的所述命令,所述命令沒有已被執(zhí)行,則使所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫執(zhí)行所述命令的所述重發(fā);以及計(jì)算機(jī)可讀程序代碼,如果成功執(zhí)行了所述命令的所述重發(fā),則使所述自動(dòng)數(shù)據(jù)存儲(chǔ)器庫利用所述命令更新所述良好命令清單。
全文摘要
本發(fā)明公開了一種用于對(duì)自動(dòng)數(shù)據(jù)存儲(chǔ)器庫提供故障切換過程的系統(tǒng)、方法以及計(jì)算機(jī)程序產(chǎn)品。在數(shù)據(jù)存儲(chǔ)器庫的運(yùn)行過程中,主計(jì)算機(jī)利用一個(gè)或者多個(gè)控制路徑將控制命令發(fā)送到自動(dòng)數(shù)據(jù)存儲(chǔ)器庫。如果主機(jī)未收到所希望的結(jié)果,例如,如果在正在處理命令時(shí)主計(jì)算機(jī)與自動(dòng)數(shù)據(jù)存儲(chǔ)器庫之間的通信失敗,則主計(jì)算機(jī)可以嘗試?yán)猛粋€(gè)控制路徑或者替換控制路徑重發(fā)同一個(gè)命令。在主計(jì)算機(jī)發(fā)出重發(fā)同一個(gè)命令時(shí),自動(dòng)數(shù)據(jù)存儲(chǔ)器庫檢驗(yàn)該命令和所執(zhí)行的一個(gè)或者多個(gè)先前命令,以防止自動(dòng)數(shù)據(jù)存儲(chǔ)器庫不止一次執(zhí)行相同的命令。
文檔編號(hào)G06F11/36GK1499372SQ20031010443
公開日2004年5月26日 申請(qǐng)日期2003年10月29日 優(yōu)先權(quán)日2002年11月8日
發(fā)明者弗蘭克·D.·加羅, 布賴恩·G.·古德曼, 倫納德·G.·杰森諾維斯基, G. 古德曼, G. 杰森諾維斯基, 弗蘭克 D. 加羅 申請(qǐng)人:國際商業(yè)機(jī)器公司