專利名稱:對(duì)光纖信道網(wǎng)絡(luò)中的流設(shè)備進(jìn)行多啟動(dòng)器支持的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及數(shù)據(jù)和信息通信系統(tǒng)及其操作,尤其涉及包括光纖信道網(wǎng)絡(luò)的通信網(wǎng)絡(luò)。本發(fā)明尤其還涉及一種光纖信道網(wǎng)絡(luò)系統(tǒng)和操作方法,它能夠處理通過SCSI路由器發(fā)向流設(shè)備的命令,以改善輸入和輸出管理,從而改進(jìn)網(wǎng)絡(luò)性能,消除通信故障,并避免由于多個(gè)并行命令發(fā)向流設(shè)備而可能出現(xiàn)的數(shù)據(jù)丟失。
在SCSI體系結(jié)構(gòu)中,流目標(biāo)設(shè)備,比如磁帶備份設(shè)備,是這樣一種目標(biāo)設(shè)備,它必須在執(zhí)行完一個(gè)命令之后才能識(shí)別來自同一主機(jī)的另一個(gè)后續(xù)命令。流目標(biāo)設(shè)備使得向還在執(zhí)行來自同一主機(jī)的前一命令的流目標(biāo)設(shè)備發(fā)出后續(xù)命令的主機(jī)發(fā)出一個(gè)檢驗(yàn)狀態(tài)(overlapped_cmd)響應(yīng)。這可能導(dǎo)致后續(xù)命令的丟失和I/O傳輸?shù)闹袛唷T趩蜸CSI體系結(jié)構(gòu)中,通常這不成問題,這是因?yàn)?,在正常情況下,主機(jī)知道,一旦它向流目標(biāo)設(shè)備發(fā)出了命令,那么,直到執(zhí)行完前一命令,它才能向該流目標(biāo)設(shè)備發(fā)出后續(xù)命令。此外,在多主機(jī)SCSI情況下,流目標(biāo)設(shè)備可以根據(jù)SCSI ID區(qū)分出不同主機(jī)發(fā)給它的命令。如果,在單SCSI情況下,流目標(biāo)設(shè)備在執(zhí)行來自某一主機(jī)的命令時(shí)接收到來自另一主機(jī)的另一個(gè)命令,那么流目標(biāo)設(shè)備只是向第二主機(jī)發(fā)出一個(gè)表示它正忙的應(yīng)答。因此,不會(huì)出現(xiàn)中斷,如果兩個(gè)命令來自同一主機(jī),那么也不會(huì)出現(xiàn)中斷。
然而,在光纖信道-SCSI體系結(jié)構(gòu)中,SCSI路由器作為網(wǎng)絡(luò)的光纖信道部分與該路由器后面的SCSI目標(biāo)之間的接口。SCSI路由器后面的SCSI目標(biāo)認(rèn)為該SCSI路由器是個(gè)單一的主機(jī),它發(fā)出來自網(wǎng)絡(luò)的光纖信道部分中的任何光纖信道主機(jī)的所有命令。因此,通過SCSI路由器接收到來自不同的光纖信道主機(jī)的并行的多個(gè)命令的流目標(biāo)設(shè)備不可能區(qū)分出不同的光纖信道主機(jī),并且把所有這些命令都看作是來自單一的主機(jī)。因此,流目標(biāo)設(shè)備將根據(jù)它在執(zhí)行前一命令時(shí)所接收到的任何后續(xù)命令,發(fā)出一個(gè)檢驗(yàn)狀態(tài)(overlapped_cmd)。由于現(xiàn)有系統(tǒng)和方法不能有效地處理光纖信道網(wǎng)絡(luò)中發(fā)向流目標(biāo)設(shè)備的多個(gè)并行命令,因此,大大降低了多主機(jī)光纖信道-SCSI的網(wǎng)絡(luò)體系結(jié)構(gòu)中的網(wǎng)絡(luò)性能。
流目標(biāo)設(shè)備可以是任意可依次被接入的設(shè)備,例如,某些類型的CD-ROM、光存儲(chǔ)設(shè)備和磁帶備份機(jī)。當(dāng)同一主機(jī)或在多主機(jī)光纖信道網(wǎng)絡(luò)情況下的另一主機(jī)向流目標(biāo)設(shè)備發(fā)出命令而前一命令尚未執(zhí)行完時(shí),第二命令被拒絕,從而導(dǎo)致了網(wǎng)絡(luò)性能的下降和可能的數(shù)據(jù)丟失。盡管,在多主機(jī)光纖信道網(wǎng)絡(luò)情況下,同一主機(jī)通常不會(huì)向流目標(biāo)設(shè)備發(fā)出多個(gè)并行命令,然而,各光纖信道主機(jī)不知道網(wǎng)絡(luò)中其他主機(jī)發(fā)向具體流目標(biāo)設(shè)備的命令。光纖信道網(wǎng)絡(luò)中的各個(gè)主機(jī)認(rèn)為好象只有它向該目標(biāo)設(shè)備發(fā)話。因此,網(wǎng)絡(luò)中的主機(jī)會(huì)不知不覺地將重復(fù)命令發(fā)向在執(zhí)行來自另一主機(jī)的命令的流目標(biāo)設(shè)備。
當(dāng)流目標(biāo)設(shè)備在完成前一命令之前接收到第二命令(或者第三或第四命令)時(shí),它將向發(fā)出后續(xù)并行命令的主機(jī)發(fā)出一個(gè)檢驗(yàn)狀態(tài)(overlapped_cmd)響應(yīng)。這可能使得發(fā)出后續(xù)并行命令的主機(jī)進(jìn)入出錯(cuò)恢復(fù)。具體地說,在多主機(jī)光纖信道網(wǎng)絡(luò)情況下,如果流目標(biāo)設(shè)備還在執(zhí)行前一命令,那么甚至查詢命令(當(dāng)主機(jī)第一次聯(lián)機(jī)或重新啟動(dòng)時(shí),它將向網(wǎng)絡(luò)BUS發(fā)出查詢命令,以判斷哪些其他設(shè)備在網(wǎng)絡(luò)中)都可能造成中斷。
后續(xù)并行命令被流目標(biāo)設(shè)備拒絕可能導(dǎo)致數(shù)據(jù)丟失。例如,許多磁帶備份設(shè)備不能處理錯(cuò)誤。如果來自同一主機(jī)的多個(gè)命令被發(fā)給這種磁帶備份設(shè)備,那么將異常中斷整個(gè)備份。因此,甚至發(fā)出查詢命令以判斷哪些設(shè)備在網(wǎng)絡(luò)中的在線(或重新啟動(dòng))主機(jī)都可能造成進(jìn)行中的磁帶備份被異常中斷。這可能導(dǎo)致數(shù)據(jù)損壞或丟失并導(dǎo)致主機(jī)與目標(biāo)設(shè)備之間的I/O的中斷。由于現(xiàn)有系統(tǒng)和方法不能處理發(fā)向流目標(biāo)設(shè)備的多個(gè)并行命令,因此某些操作可能必須被完全重新執(zhí)行,而并不只是重新啟動(dòng)。
另外,盡管向流目標(biāo)設(shè)備發(fā)話的主機(jī)通常不會(huì)發(fā)出重疊命令,但主機(jī)可能因故障而向流目標(biāo)設(shè)備發(fā)出多個(gè)并行命令。在這種情況下,可能出現(xiàn)I/O中同樣的中斷和可能的數(shù)據(jù)損壞。
另外,還需要這樣一種方法和系統(tǒng),它可以避免當(dāng)通過SCSI路由器接收到來自光纖信道網(wǎng)絡(luò)中的光纖信道主機(jī)的并行命令時(shí)在流目標(biāo)設(shè)備中可能出現(xiàn)的一般應(yīng)用故障。
根據(jù)本發(fā)明,提出了一種系統(tǒng)和方法,用于處理通過SCSI路由器發(fā)向流目標(biāo)設(shè)備的多個(gè)命令,這種系統(tǒng)和方法基本上消除或減輕了與現(xiàn)有這類系統(tǒng)和方法相關(guān)的缺陷和問題,包括受限制的網(wǎng)絡(luò)性能、某些應(yīng)用中的數(shù)據(jù)丟失以及一般應(yīng)用故障等問題。
具體地說,本發(fā)明提出了一種方法和系統(tǒng),用于處理在具有多個(gè)光纖信道主機(jī)的光纖信道網(wǎng)絡(luò)中通過SCSI路由器發(fā)向流目標(biāo)設(shè)備的多個(gè)命令。這種方法包括如下步驟在SCSI路由器中,形成一個(gè)FIFO隊(duì)列,接收來自光纖信道網(wǎng)絡(luò)中的多個(gè)光纖信道主機(jī)之一的第一命令,并將該第一命令轉(zhuǎn)發(fā)給流目標(biāo)設(shè)備。SCSI路由器可以是任意可作為光纖信道-SCSI體系結(jié)構(gòu)中的光纖信道-SCSI接口,比如Texas州Austin市的Crossroads Systems公司的型號(hào)為4100或4200的SCSI路由器。光纖信道網(wǎng)絡(luò)可以是光纖信道仲裁環(huán)或交換網(wǎng)或其他網(wǎng)絡(luò)布局。
在本方法中,下一步是要處理來自發(fā)出前一(第一)命令的同一主機(jī)的或來自多個(gè)光纖信道主機(jī)中的另一個(gè)主機(jī)的后續(xù)命令。后續(xù)命令的處理包括以下步驟在SCSI路由器中,接收該后續(xù)命令,并判斷流目標(biāo)設(shè)備是否已執(zhí)行完前一命令。如果流目標(biāo)設(shè)備已執(zhí)行完前一命令,那么,本發(fā)明的方法將該后續(xù)命令轉(zhuǎn)發(fā)給該流目標(biāo)設(shè)備。如果流目標(biāo)設(shè)備尚未執(zhí)行完前一命令,那么,可將該后續(xù)命令置于FIFO隊(duì)列中。一旦流目標(biāo)設(shè)備執(zhí)行完前一命令,就將該后續(xù)命令從FIFO隊(duì)列中轉(zhuǎn)發(fā)到該流目標(biāo)設(shè)備中。
本發(fā)明的方法還包括針對(duì)任何其他后續(xù)命令重復(fù)處理后續(xù)命令的步驟。任意多個(gè)發(fā)向流目標(biāo)設(shè)備的其他后續(xù)命令都可以被處理,而只受給定時(shí)刻FIFO隊(duì)列的存儲(chǔ)容量的限制。
本發(fā)明的用于處理發(fā)向流目標(biāo)設(shè)備的多個(gè)命令的方法也可以在具有一個(gè)以上路由器的光纖信道-SCSI網(wǎng)絡(luò)中實(shí)現(xiàn)。本發(fā)明的方法可以為各SCSI路由器之后的各流目標(biāo)設(shè)備提供單獨(dú)的FIFO隊(duì)列。如果存在多個(gè)與某個(gè)SCSI路由器連接的流目標(biāo)設(shè)備,那么,本發(fā)明的方法將某個(gè)特定流目標(biāo)設(shè)備的各后續(xù)并行命令轉(zhuǎn)發(fā)到該流目標(biāo)設(shè)備的FIFO隊(duì)列中。這樣,已執(zhí)行完命令的流目標(biāo)設(shè)備在其后續(xù)命令出現(xiàn)在單個(gè)隊(duì)列中之前不必等待執(zhí)行預(yù)定給其他流目標(biāo)設(shè)備的命令。與一個(gè)SCSI路由器連接的各流目標(biāo)設(shè)備的單獨(dú)隊(duì)列可提高網(wǎng)絡(luò)性能。
本發(fā)明的方法的一個(gè)技術(shù)優(yōu)點(diǎn)是,可以處理通過一個(gè)或多個(gè)SCSI路由器發(fā)向一個(gè)或多個(gè)流目標(biāo)設(shè)備的多個(gè)并行命令,而不會(huì)拒絕和丟失后續(xù)命令,并且不會(huì)強(qiáng)迫發(fā)出后續(xù)命令的光纖信道主機(jī)進(jìn)入出錯(cuò)恢復(fù)方式。這一技術(shù)優(yōu)點(diǎn)在具有多個(gè)主機(jī)的光纖信道網(wǎng)絡(luò)中尤其重要,這是因?yàn)?,這種網(wǎng)絡(luò)中的流目標(biāo)設(shè)備不能區(qū)分出發(fā)出命令的多個(gè)光纖信道主機(jī),并且將拒絕發(fā)自同一主機(jī)的任何后續(xù)并行命令。
本發(fā)明的另一個(gè)技術(shù)優(yōu)點(diǎn)是,可以避免當(dāng)接收到并行命令時(shí)在流目標(biāo)設(shè)備和主機(jī)設(shè)備中可能出現(xiàn)的一般應(yīng)用故障。
本發(fā)明的還有一個(gè)技術(shù)優(yōu)點(diǎn)是,可以為通過給定的SCSI路由器與光纖信道網(wǎng)絡(luò)連接的多個(gè)流目標(biāo)設(shè)備中的每一個(gè)都提供單獨(dú)的隊(duì)列。在具有多個(gè)與某個(gè)SCSI路由器連接的流目標(biāo)設(shè)備的光纖信道網(wǎng)絡(luò)中,在該SCSI路由器中為各流目標(biāo)設(shè)備都保留一個(gè)單獨(dú)的FIFO隊(duì)列可提高網(wǎng)絡(luò)性能。單獨(dú)的FIFO隊(duì)列可以減少發(fā)給各流目標(biāo)設(shè)備的命令之間的等待狀態(tài)時(shí)間。
本發(fā)明的還有一個(gè)技術(shù)優(yōu)點(diǎn)是,可以提供改進(jìn)的多主機(jī)網(wǎng)絡(luò)測試過程。在多主機(jī)網(wǎng)絡(luò)中,很多主機(jī)常常同時(shí)或至少相對(duì)同時(shí)地工作。在這些網(wǎng)絡(luò)中,由于這樣或那樣原因,需要經(jīng)常地對(duì)主機(jī)進(jìn)行維護(hù)。拆卸某個(gè)主機(jī)一般會(huì)影響到網(wǎng)絡(luò)中的所有主機(jī),這是因?yàn)椋坏┲鳈C(jī)重新聯(lián)機(jī)或被重新啟動(dòng),它將會(huì)發(fā)出查詢命令,如果流目標(biāo)設(shè)備還在執(zhí)行另一命令,那么該查詢命令可能造成其他主機(jī)與流目標(biāo)設(shè)備之間的I/O的中斷。
本發(fā)明的還有一個(gè)技術(shù)優(yōu)點(diǎn)是,以很小的代價(jià)就可以使其性能成為光纖信道網(wǎng)絡(luò)的一部分。通常,本發(fā)明的方法可以實(shí)現(xiàn)成指令的變化,這些指令用來對(duì)光纖信道網(wǎng)絡(luò)中發(fā)給流目標(biāo)設(shè)備的命令的處理進(jìn)行控制??梢栽谟布f(xié)議芯片中實(shí)現(xiàn)這些變化,以便控制網(wǎng)絡(luò)中的協(xié)議操作。甚至以相對(duì)較小的代價(jià)就可以實(shí)現(xiàn)這些修改。
具體實(shí)施例方式
附圖中示出了本發(fā)明的一些優(yōu)選實(shí)施方式,相同的標(biāo)號(hào)用來表示各圖中相同或相應(yīng)的部分。
本發(fā)明為SCSI路由器之后所連接的各個(gè)流目標(biāo)設(shè)備都提供了一個(gè)FIFO(先進(jìn)先出)隊(duì)列,并且,一旦接收到發(fā)給流目標(biāo)設(shè)備的并行命令,就可以將每個(gè)后續(xù)的并行命令置于FIFO隊(duì)列中,直到它前面的命令被執(zhí)行完。本發(fā)明的方法和系統(tǒng)可以連續(xù)執(zhí)行發(fā)給流目標(biāo)設(shè)備的各命令,而不會(huì)拒絕另一個(gè)命令在執(zhí)行時(shí)所接收到的命令。本發(fā)明的方法不是發(fā)出一個(gè)檢驗(yàn)狀態(tài)(overlapped_cmd)響應(yīng)給向流目標(biāo)設(shè)備發(fā)出后續(xù)并行命令的光纖信道主機(jī),而是可以將各后續(xù)并行命令置于FIFO隊(duì)列中,并不中斷地繼續(xù)執(zhí)行前一命令。因此,向目前正在執(zhí)行來自同一光纖信道主機(jī)或來自另一光纖信道主機(jī)的流目標(biāo)設(shè)備發(fā)出命令的光纖信道主機(jī)并不會(huì)被迫進(jìn)入出錯(cuò)恢復(fù)。
如果在接收到命令時(shí)流目標(biāo)設(shè)備并沒有在執(zhí)行前一命令(即它空閑的話),那么,本發(fā)明的方法可以簡單地將該命令轉(zhuǎn)發(fā)到該流目標(biāo)設(shè)備以便執(zhí)行。如果當(dāng)流目標(biāo)設(shè)備正在執(zhí)行前一命令時(shí),有后續(xù)命令到達(dá)該流目標(biāo)設(shè)備的SCSI路由器,那么可以將后續(xù)命令(以及當(dāng)流目標(biāo)設(shè)備正在執(zhí)行前一命令時(shí)到達(dá)的任何其他后續(xù)命令)置于FIFO隊(duì)列中。一旦流目標(biāo)設(shè)備已執(zhí)行完前一命令,SCSI路由器就可以將FIFO隊(duì)列中的第一命令轉(zhuǎn)發(fā)到該流目標(biāo)設(shè)備以便執(zhí)行。針對(duì)各個(gè)其他后續(xù)命令,這一過程可以重復(fù),直到FIFO隊(duì)列空了為止。
如果FIFO隊(duì)列空了并且流目標(biāo)設(shè)備空閑,那么可以再次簡單地將到達(dá)該流目標(biāo)設(shè)備的SCSI路由器的命令轉(zhuǎn)發(fā)到該流目標(biāo)設(shè)備。本發(fā)明的方法不僅可以保持各流目標(biāo)設(shè)備的SCSI路由器處所接收到的各命令的功能性,而且還可以保持這些命令的順序,從而確保按接收到的順序來處理各個(gè)命令。通過避免現(xiàn)有技術(shù)的檢驗(yàn)狀態(tài)響應(yīng),本發(fā)明可以確保向流目標(biāo)設(shè)備發(fā)出重疊命令的光纖信道主機(jī)不會(huì)被迫進(jìn)入出錯(cuò)恢復(fù)、被迫重新啟動(dòng)或被迫失去其功能性。因此,總體上可以提高光纖信道網(wǎng)絡(luò)的效率,尤其可以提高所給定的光纖信道主機(jī)的效率。
本發(fā)明的方法在具有一個(gè)以上SCSI路由器的光纖信道網(wǎng)絡(luò)中有著同樣的作用,其中的每個(gè)路由器都可以有多個(gè)與其連接并接收其命令的流目標(biāo)設(shè)備。本發(fā)明的方法尤其有利于保持網(wǎng)絡(luò)效率,并避免在由多個(gè)光纖信道主機(jī)組成的網(wǎng)絡(luò)中由于向流目標(biāo)設(shè)備發(fā)出多個(gè)并行命令所導(dǎo)致的數(shù)據(jù)丟失和通信故障。此外,通過在各SCSI路由器中為與該SCSI路由器連接的各個(gè)流目標(biāo)設(shè)備提供單獨(dú)的FIFO隊(duì)列,本發(fā)明的方法在總體上可以提高網(wǎng)絡(luò)的效率,還可以分別提高各個(gè)流目標(biāo)設(shè)備和光纖信道主機(jī)的效率。這可以這樣來實(shí)現(xiàn),向各個(gè)流目標(biāo)設(shè)備轉(zhuǎn)發(fā)其來自各自FIFO隊(duì)列的下一命令,而與其他目標(biāo)設(shè)備命令無關(guān),從而沒有不適當(dāng)?shù)难舆t。由于可以對(duì)通過SCSI路由器發(fā)向流目標(biāo)設(shè)備的多個(gè)命令進(jìn)行處理,而不會(huì)拒絕前一命令在執(zhí)行時(shí)所接收到的后續(xù)命令,因此,本發(fā)明的方法可以明顯地改善光纖信道環(huán)境下SCSI的穩(wěn)健性。
圖1中,示出了光纖信道網(wǎng)絡(luò)10的示意圖,該光纖信道網(wǎng)絡(luò)10包括網(wǎng)絡(luò)鏈路12,用于將1號(hào)主機(jī)14和2號(hào)主機(jī)22通過網(wǎng)絡(luò)鏈路50與1號(hào)SCSI路由器16連接。1號(hào)流目標(biāo)設(shè)備18通過SCSI網(wǎng)絡(luò)鏈路20連接到1號(hào)SCSI路由器16。網(wǎng)絡(luò)鏈路50可以是任意光纖信道網(wǎng)絡(luò)連接,而網(wǎng)絡(luò)鏈路20可以是任意SCSI網(wǎng)絡(luò)連接。
根據(jù)本發(fā)明的思想,1號(hào)SCSI路由器16形成并包括1號(hào)目標(biāo)FIFO隊(duì)列24。如果當(dāng)來自1號(hào)主機(jī)14或2號(hào)主機(jī)22的后續(xù)命令到達(dá)1號(hào)SCSI路由器16時(shí),1號(hào)流目標(biāo)設(shè)備18正在執(zhí)行命令,那么1號(hào)目標(biāo)FIFO隊(duì)列24可按接收的順序保存這一(或這些)命令,以便由1號(hào)流目標(biāo)設(shè)備18來執(zhí)行。例如,如果1號(hào)主機(jī)14向1號(hào)流目標(biāo)設(shè)備18發(fā)出命令“A”,而1號(hào)流目標(biāo)設(shè)備18空閑(未在執(zhí)行命令),那么1號(hào)SCSI路由器16可以簡單地將命令“A”轉(zhuǎn)發(fā)到1號(hào)流目標(biāo)設(shè)備18以便執(zhí)行。如果當(dāng)1號(hào)流目標(biāo)設(shè)備18正在執(zhí)行命令“A”時(shí),2號(hào)主機(jī)22向1號(hào)流目標(biāo)設(shè)備18發(fā)出一個(gè)后續(xù)命令“B”,那么,本發(fā)明的方法可以將命令“B”保存在FIFO隊(duì)列中,直到命令“A”被執(zhí)行完為止。1號(hào)SCSI路由器16一旦接收到命令“B”,就判定1號(hào)流目標(biāo)設(shè)備18還在執(zhí)行命令“A”,同時(shí)將命令“B”置于1號(hào)目標(biāo)FIFO隊(duì)列24中。當(dāng)1號(hào)流目標(biāo)設(shè)備18執(zhí)行完命令“A”時(shí),1號(hào)SCSI路由器16可以將來自2號(hào)主機(jī)22的命令“B”轉(zhuǎn)發(fā)給1號(hào)流目標(biāo)設(shè)備18以便執(zhí)行。1號(hào)目標(biāo)FIFO隊(duì)列已空,并準(zhǔn)備接收可能在1號(hào)流目標(biāo)設(shè)備18正在執(zhí)行命令“B”時(shí)所發(fā)出的來自1號(hào)主機(jī)14或2號(hào)主機(jī)22的后續(xù)命令。在這種情況下,本發(fā)明的方法可以按上述方式重復(fù)。
本發(fā)明的用于處理通過SCSI路由器發(fā)向流目標(biāo)設(shè)備的多個(gè)命令的這種方法尤其適用于圖1中所示的多主機(jī)光纖信道網(wǎng)絡(luò)環(huán)境。這是因?yàn)?,在多主機(jī)光纖信道網(wǎng)絡(luò)環(huán)境中,每個(gè)主機(jī)都認(rèn)為各目標(biāo)設(shè)備好象是它專用的。盡管,在正常操作中,光纖信道主機(jī)在它所發(fā)出的前一命令被執(zhí)行完之后才會(huì)將另一命令發(fā)給流目標(biāo)設(shè)備,然而,光纖信道網(wǎng)絡(luò)中的主機(jī)無法檢測該光纖信道網(wǎng)絡(luò)中其他主機(jī)所發(fā)出的命令。因此,主機(jī)不知道當(dāng)流目標(biāo)設(shè)備比如1號(hào)流目標(biāo)設(shè)備18在執(zhí)行來自其他主機(jī)之一的命令時(shí)不能將命令發(fā)給該流目標(biāo)設(shè)備。在多主機(jī)光纖信道網(wǎng)絡(luò)環(huán)境中,本發(fā)明的方法可以處理通過SCSI路由器發(fā)向流目標(biāo)設(shè)備的多個(gè)命令,而不會(huì)造成通信故障、數(shù)據(jù)丟失或網(wǎng)絡(luò)性能下降。
甚至在單主機(jī)光纖信道網(wǎng)絡(luò)環(huán)境中,本發(fā)明的方法仍能提高網(wǎng)絡(luò)性能,避免數(shù)據(jù)丟失,并避免通信故障。在正常操作中,光纖信道主機(jī)在它所發(fā)出的前一命令被執(zhí)行完之后才會(huì)將另一后續(xù)命令發(fā)給流目標(biāo)設(shè)備。然而,光纖信道主機(jī)可能遭受故障,或者,可以處于出錯(cuò)恢復(fù)狀態(tài),此時(shí),它所發(fā)出的命令時(shí)間已過,因此,光纖信道主機(jī)要重發(fā)該命令。在這種情況下,同一光纖信道主機(jī)停止向流目標(biāo)設(shè)備發(fā)并行命令,并可能導(dǎo)致流目標(biāo)設(shè)備向該主機(jī)發(fā)出一個(gè)檢驗(yàn)狀態(tài)(overlapped_cmd)響應(yīng)。這可導(dǎo)致網(wǎng)絡(luò)性能下降、通信故障,并可能由于使光纖信道主機(jī)進(jìn)入出錯(cuò)恢復(fù)方式而造成數(shù)據(jù)丟失。
類似地,如果其他主機(jī)與光纖信道網(wǎng)絡(luò)聯(lián)機(jī)或被重新啟動(dòng),那么該新主機(jī)通常將發(fā)出一個(gè)查詢命令,以判斷哪些其他設(shè)備在該光纖信道網(wǎng)絡(luò)中。這一查詢命令就象發(fā)向流目標(biāo)設(shè)備的任何其他命令一樣,如果在正在執(zhí)行前一命令的流目標(biāo)設(shè)備處被接收到,那么同樣可能造成網(wǎng)絡(luò)性能下降、通信故障和可能的數(shù)據(jù)丟失。如果不采用本發(fā)明的方法,那么這種后續(xù)的并行命令會(huì)造成該后續(xù)命令的丟失和網(wǎng)絡(luò)性能下降,這是因?yàn)?,該后續(xù)命令可能被拒絕,或者可能對(duì)該后續(xù)命令產(chǎn)生不適當(dāng)?shù)捻憫?yīng)。
因此,無論在單主機(jī)還是多主機(jī)光纖信道網(wǎng)絡(luò)環(huán)境中,本發(fā)明的方法都可以處理發(fā)給某個(gè)流目標(biāo)設(shè)備或發(fā)給多個(gè)流目標(biāo)設(shè)備的多個(gè)并行命令,而不會(huì)出現(xiàn)拒絕這些后續(xù)命令、通信中斷、數(shù)據(jù)丟失或網(wǎng)絡(luò)性能下降等問題。此外,本發(fā)明的方法還可以保持這些從主機(jī)發(fā)向流目標(biāo)設(shè)備的命令的順序。
圖2說明了一種改進(jìn)型光纖信道網(wǎng)絡(luò)10,表示本發(fā)明可以處理從多個(gè)光纖信道主機(jī)發(fā)向多個(gè)SCSI路由器的多個(gè)并行命令,其中每個(gè)路由器都有多個(gè)流目標(biāo)設(shè)備。這里,光纖信道網(wǎng)絡(luò)10還包括3號(hào)主機(jī)26和2號(hào)SCSI路由器30,該路由器通過網(wǎng)絡(luò)鏈路50與光纖信道網(wǎng)絡(luò)鏈路12進(jìn)行通信連接。網(wǎng)絡(luò)鏈路50可以是任意光纖信道網(wǎng)絡(luò)連接。
1號(hào)SCSI路由器16通過網(wǎng)絡(luò)鏈路20與1號(hào)流目標(biāo)設(shè)備18和2號(hào)流目標(biāo)設(shè)備28通信連接。2號(hào)SCSI路由器30通過網(wǎng)絡(luò)鏈路20與3號(hào)流目標(biāo)設(shè)備32和4號(hào)流目標(biāo)設(shè)備34通信連接。如圖2中所示,1號(hào)和2號(hào)SCSI路由器16和30每個(gè)都包括與該光纖信道網(wǎng)絡(luò)連接的各個(gè)流目標(biāo)設(shè)備的各自FIFO隊(duì)列1號(hào)目標(biāo)FIFO隊(duì)列24與1號(hào)流目標(biāo)設(shè)備18相應(yīng),2號(hào)目標(biāo)FIFO隊(duì)列36與2號(hào)流目標(biāo)設(shè)備28相應(yīng),3號(hào)目標(biāo)FIFO隊(duì)列38與3號(hào)流目標(biāo)設(shè)備32相應(yīng),而4號(hào)目標(biāo)FIFO隊(duì)列40與4號(hào)流目標(biāo)設(shè)備34相應(yīng)。目標(biāo)FIFO隊(duì)列24、36、38和40可以在它們各自的SCSI路由器中形成并保存在其中。
圖2示出了1號(hào)流目標(biāo)設(shè)備18,它正在執(zhí)行來自1號(hào)主機(jī)14的命令“A”。而2號(hào)主機(jī)22和3號(hào)主機(jī)26分別向1號(hào)流目標(biāo)設(shè)備18發(fā)出了命令“B”和“C”。根據(jù)本發(fā)明的方法的思想,命令“B”和“C”可以被保存在1號(hào)目標(biāo)FIFO隊(duì)列24中,以便由1號(hào)流目標(biāo)設(shè)備18按照命令“A”已執(zhí)行時(shí)所接收到的順序被執(zhí)行。同樣,圖中示出了2號(hào)流目標(biāo)設(shè)備28,它正在執(zhí)行來自1號(hào)主機(jī)14的命令“D”。而3號(hào)主機(jī)26還向2號(hào)流目標(biāo)設(shè)備28發(fā)出了命令“E”。1號(hào)SCSI路由器16將命令“E”保存在了2號(hào)目標(biāo)FIFO隊(duì)列36中。一旦執(zhí)行完命令“D”,1號(hào)SCSI路由器16就可從2號(hào)目標(biāo)FIFO隊(duì)列36中釋放出命令“E”,以便2號(hào)流目標(biāo)設(shè)備28來執(zhí)行。
按同樣的方式,3號(hào)流目標(biāo)設(shè)備32已得到命令“F”并正在執(zhí)行該命令。3號(hào)流目標(biāo)設(shè)備32沒有其他未完成的并行命令,因此3號(hào)目標(biāo)FIFO隊(duì)列38是空的。4號(hào)流目標(biāo)設(shè)備34已得到2號(hào)主機(jī)22發(fā)出的命令“G”,如圖中所示正在執(zhí)行該命令“G”。4號(hào)流目標(biāo)設(shè)備34還依次得到了分別發(fā)自1號(hào)主機(jī)14和3號(hào)主機(jī)26的命令“H”和“I”。2號(hào)SCSI路由器30將命令“H”和“I”置于4號(hào)目標(biāo)FIFO隊(duì)列40中,以等待4號(hào)流目標(biāo)設(shè)備34執(zhí)行完命令“G”。當(dāng)4號(hào)流目標(biāo)設(shè)備34執(zhí)行完命令“G”時(shí),命令“H”和“I”可被釋放到4號(hào)流目標(biāo)設(shè)備34,以便被執(zhí)行。
盡管圖2中示出了一封閉的、完整的光纖信道網(wǎng)絡(luò)10,然而,在該光纖信道網(wǎng)絡(luò)10中既可以添加SCSI路由器又可以添加主機(jī)。如果在該光纖信道網(wǎng)絡(luò)10中添加其他主機(jī)(或重新啟動(dòng)現(xiàn)存的主機(jī)),那么這些新的主機(jī)可以發(fā)出一個(gè)查詢命令,以判斷哪些其他設(shè)備目前在該光纖信道網(wǎng)絡(luò)10中。在這種情況下,本發(fā)明的用于處理通過SCSI路由器發(fā)向流設(shè)備的多個(gè)并行命令的這種方法可以按與任何其他命令相同的方式只處理這些查詢命令。
本發(fā)明的方法同樣可以應(yīng)用于多個(gè)主機(jī)、多個(gè)SCSI路由器和多個(gè)流目標(biāo)設(shè)備的情況。SCSI路由器、流目標(biāo)設(shè)備和主機(jī)的數(shù)量只受限于SCSI路由器和網(wǎng)絡(luò)容量。同樣,1號(hào)目標(biāo)FIFO隊(duì)列24、2號(hào)目標(biāo)FIFO隊(duì)列36、3號(hào)目標(biāo)FIFO隊(duì)列38和4號(hào)目標(biāo)FIFO隊(duì)列40可以動(dòng)態(tài)地改變隊(duì)列,隊(duì)列的大小隨發(fā)給其各自的流目標(biāo)設(shè)備的并行命令的個(gè)數(shù)而變化。目標(biāo)FIFO隊(duì)列24、36、38和40的大小只受限于路由器容量。
圖3是表示本發(fā)明的用于處理通過SCSI路由器發(fā)向流設(shè)備的多個(gè)并行命令的方法的整個(gè)操作過程的流程圖。在圖3的步驟100中,本發(fā)明的方法在SCSI路由器(比如圖1中的1號(hào)SCSI路由器16)中形成一個(gè)FIFO隊(duì)列。在步驟102中,1號(hào)SCSI路由器16接收到一個(gè)來自光纖信道主機(jī)(比如1號(hào)主機(jī)14)的發(fā)給流目標(biāo)設(shè)備(比如圖1中的1號(hào)流目標(biāo)設(shè)備18)的命令。在步驟103中,如果1號(hào)流目標(biāo)設(shè)備18沒有其他未完成的命令,那么1號(hào)SCSI路由器16可以將從1號(hào)主機(jī)14接收到的命令轉(zhuǎn)發(fā)給1號(hào)流目標(biāo)設(shè)備18。在步驟104中,1號(hào)SCSI路由器16接收到一個(gè)來自1號(hào)主機(jī)(它發(fā)出過第一命令)或來自光纖信道網(wǎng)絡(luò)中的另一個(gè)光纖信道主機(jī)(比如2號(hào)主機(jī)22)的發(fā)給1號(hào)流目標(biāo)設(shè)備18的后續(xù)命令。在步驟106中,本發(fā)明的方法可以判斷1號(hào)流目標(biāo)設(shè)備18是否已執(zhí)行完第一命令。如果1號(hào)流目標(biāo)設(shè)備18已執(zhí)行完第一命令,那么,在步驟108中,本發(fā)明的方法可以將后續(xù)命令轉(zhuǎn)發(fā)給1號(hào)流目標(biāo)設(shè)備18以便被執(zhí)行。
此時(shí),本發(fā)明的方法可以采取兩條路徑。第一,本發(fā)明的方法可以在步驟104中接收發(fā)向1號(hào)流目標(biāo)設(shè)備18的其他后續(xù)命令。如果發(fā)給1號(hào)流目標(biāo)設(shè)備18的該第一(即前一)后續(xù)命令已在步驟108中被轉(zhuǎn)發(fā),那么,本發(fā)明的方法可以只等待接收任何其他后續(xù)命令,并針對(duì)這些命令進(jìn)行重復(fù)。然而,應(yīng)當(dāng)注意,本發(fā)明的方法可以始終準(zhǔn)備接收其他后續(xù)命令,而不僅僅是在轉(zhuǎn)發(fā)前一命令之后才接收。
第二,如果在步驟106中,本發(fā)明的方法判定1號(hào)流目標(biāo)設(shè)備18尚未執(zhí)行完第一命令,那么,在步驟110中,可以將第一后續(xù)命令置于FIFO隊(duì)列中。在步驟112中,該方法又反問1號(hào)流目標(biāo)設(shè)備18是否已執(zhí)行完前一(第一)命令。如果還沒有應(yīng)答,那么本發(fā)明的方法在步驟114中等待,然后返回到步驟112又反問該問題。一旦1號(hào)流目標(biāo)設(shè)備18執(zhí)行完前一命令,本發(fā)明的方法就可以在步驟108中將FIFO隊(duì)列中的下一后續(xù)命令轉(zhuǎn)發(fā)給1號(hào)流目標(biāo)設(shè)備18。隨著1號(hào)SCSI路由器16為1號(hào)流目標(biāo)設(shè)備18接收到其他后續(xù)命令,本發(fā)明的方法可以一直重復(fù)。
圖3示出了在單SCSI路由器和單流目標(biāo)設(shè)備情況下本發(fā)明的用于處理多個(gè)并行命令的方法的整個(gè)操作過程。然而,本發(fā)明的方法同樣可應(yīng)用于多個(gè)SCSI路由器、多個(gè)流目標(biāo)設(shè)備和多個(gè)光纖信道主機(jī)的光纖信道網(wǎng)絡(luò)中。
盡管文本參照所舉例的一些實(shí)施方法詳述了本發(fā)明,然而,應(yīng)當(dāng)理解,該描述只是為了舉例,而并不局限于此。因此,還應(yīng)當(dāng)理解,對(duì)一般技術(shù)人員而言,參照這一描述,可以明白并實(shí)現(xiàn)本發(fā)明的實(shí)施方式的各種細(xì)節(jié)變化和本發(fā)明的其他實(shí)施方式。注意,所有這些變化以及其他實(shí)施方式都在后面所述的本發(fā)明的思想和真實(shí)范圍內(nèi)。
權(quán)利要求
1.一種用于處理在具有多個(gè)光纖信道主機(jī)的光纖信道網(wǎng)絡(luò)中通過SCSI路由器發(fā)向流目標(biāo)設(shè)備的多個(gè)命令的方法,這種方法包括如下步驟在SCSI路由器中形成一個(gè)FIFO隊(duì)列;接收來自多個(gè)光纖信道主機(jī)之一的第一命令,并將該第一命令轉(zhuǎn)發(fā)給流目標(biāo)設(shè)備;處理來自所述多個(gè)光纖信道主機(jī)之一或多個(gè)光纖信道主機(jī)的其他主機(jī)之一中的一個(gè)主機(jī)的后續(xù)命令,包括(a)在SCSI路由器中接收該后續(xù)命令;(b)判斷該流目標(biāo)設(shè)備是否已執(zhí)行完第一命令;(c)如果流目標(biāo)設(shè)備已執(zhí)行完第一命令,則將該后續(xù)命令轉(zhuǎn)發(fā)給該流目標(biāo)設(shè)備;(d)如果流目標(biāo)設(shè)備尚未執(zhí)行完第一命令,則將該后續(xù)命令置于FIFO隊(duì)列中;和(e)一旦流目標(biāo)設(shè)備執(zhí)行完第一命令,就將該后續(xù)命令從FIFO隊(duì)列轉(zhuǎn)發(fā)到該流目標(biāo)設(shè)備;和針對(duì)至少一個(gè)其他后續(xù)命令,重復(fù)處理來自所述多個(gè)光纖信道主機(jī)之一或所述多個(gè)第二光纖信道主機(jī)的其他主機(jī)之一中的一個(gè)主機(jī)的后續(xù)命令的步驟,此時(shí),該后續(xù)命令成為第一命令,而該至少一個(gè)其他后續(xù)命令成為后續(xù)命令。
2.權(quán)利要求1的方法,其中光纖信道網(wǎng)絡(luò)還包括單光纖信道主機(jī),并且,其中處理后續(xù)命令的所述步驟包括處理來自單光纖信道主機(jī)的后續(xù)命令。
3.權(quán)利要求1的方法,其中,該后續(xù)命令是從發(fā)出第一命令的所述多個(gè)光纖信道主機(jī)之一中接收到的。
4.權(quán)利要求1的方法,其中,SCSI路由器是Crossroads的4100型路由器。
5.權(quán)利要求1的方法,其中,光纖信道網(wǎng)絡(luò)還包括多個(gè)SCSI路由器。
6.權(quán)利要求5的方法,其中,多個(gè)SCSI路由器中的每一個(gè)路由器都有至少一個(gè)流目標(biāo)設(shè)備,它們與多個(gè)SCSI路由器中的所述每一個(gè)路由器連接并接收來自該路由器的命令。
7.權(quán)利要求6的方法,還包括如下步驟在多個(gè)SCSI路由器中的所述每一個(gè)路由器中,為與該多個(gè)SCSI路由器中的所述每一個(gè)路由器連接的至少一個(gè)流目標(biāo)設(shè)備的每一個(gè)形成各自的FIFO隊(duì)列。
8.權(quán)利要求1的方法,還包括如下步驟使流目標(biāo)設(shè)備成為磁帶備份設(shè)備。
9.權(quán)利要求1的方法,還包括如下步驟使流目標(biāo)設(shè)備成為光設(shè)備。
10.一種用于處理在具有多個(gè)光纖信道主機(jī)的光纖信道網(wǎng)絡(luò)中通過SCSI路由器發(fā)向流目標(biāo)設(shè)備的多個(gè)命令的系統(tǒng),該系統(tǒng)包括用于在SCSI路由器中形成一個(gè)FIFO隊(duì)列的指令;用于在SCSI路由器中接收來自多個(gè)光纖信道主機(jī)之一的第一命令并將該第一命令轉(zhuǎn)發(fā)給流目標(biāo)設(shè)備的指令;用于在SCSI路由器中處理來自所述多個(gè)光纖信道主機(jī)之一或多個(gè)光纖信道主機(jī)的其他主機(jī)之一中的一個(gè)主機(jī)的后續(xù)命令,還包括(a)用于在SCSI路由器中接收該后續(xù)命令的指令;(b)用于判斷該流目標(biāo)設(shè)備是否已執(zhí)行完第一命令的指令;(c)如果流目標(biāo)設(shè)備已執(zhí)行完第一命令,用于將該后續(xù)命令轉(zhuǎn)發(fā)給該流目標(biāo)設(shè)備的指令;(d)如果流目標(biāo)設(shè)備尚未執(zhí)行完第一命令,用于將該后續(xù)命令置于FIFO隊(duì)列中的指令;和(e)一旦流目標(biāo)設(shè)備執(zhí)行完第一命令用于將該后續(xù)命令從FIFO隊(duì)列轉(zhuǎn)發(fā)到該流目標(biāo)設(shè)備的指令;和針對(duì)至少一個(gè)其他后續(xù)命令,用于重復(fù)處理來自所述多個(gè)光纖信道主機(jī)之一或所述多個(gè)光纖信道主機(jī)的其他主機(jī)之一中的一個(gè)主機(jī)的后續(xù)命令的步驟的指令,此時(shí),該后續(xù)命令成為第一命令,而該至少一個(gè)其他后續(xù)命令成為后續(xù)命令。
11.權(quán)利要求10的系統(tǒng),其中光纖信道網(wǎng)絡(luò)還包括單光纖信道主機(jī),并且,其中用于處理后續(xù)命令的指令包括處理來自單光纖信道主機(jī)的后續(xù)命令。
12.權(quán)利要求10的系統(tǒng),其中,該后續(xù)命令是從發(fā)出第一命令的所述多個(gè)光纖信道主機(jī)之一中接收到的。
13.權(quán)利要求10的系統(tǒng),其中,SCSI路由器是Crossroads Systems公司的4100型路由器。
14.權(quán)利要求10的系統(tǒng),其中,光纖信道網(wǎng)絡(luò)還包括多個(gè)SCSI路由器。
15.權(quán)利要求14的系統(tǒng),其中,多個(gè)SCSI路由器中的每一個(gè)路由器都有至少一個(gè)流目標(biāo)設(shè)備,它們與多個(gè)SCSI路由器中的所述每一個(gè)路由器連接并接收來自該路由器的命令。
16.權(quán)利要求15的系統(tǒng),還包括在多個(gè)SCSI路由器中的所述每一個(gè)路由器中為與該多個(gè)SCSI路由器中的所述每一個(gè)路由器連接的至少一個(gè)流目標(biāo)設(shè)備的每一個(gè)所形成的各自的FIFO隊(duì)列。
17.權(quán)利要求10的系統(tǒng),其中,流目標(biāo)設(shè)備是磁帶備份設(shè)備。
18.權(quán)利要求10的系統(tǒng),其中,流目標(biāo)設(shè)備是光設(shè)備。
全文摘要
本發(fā)明公開了一種用于處理在具有一個(gè)或多個(gè)光纖信道主機(jī)(14,22,26)的光纖信道網(wǎng)絡(luò)中通過SCSI路由器(16,30)發(fā)向流目標(biāo)設(shè)備的多個(gè)命令(A,D,F(xiàn),G)的方法和系統(tǒng)。該系統(tǒng)和方法在SCSI路由器中實(shí)現(xiàn),包括形成FIFO隊(duì)列(24,36,38,40),接收來自光纖信道網(wǎng)絡(luò)中的光纖信道主機(jī)之一的第一命令,和將該第一命令轉(zhuǎn)發(fā)給流目標(biāo)設(shè)備。當(dāng)后續(xù)命令發(fā)向流目標(biāo)設(shè)備時(shí),SCSI路由器可以接收該后續(xù)命令,并判斷該流目標(biāo)設(shè)備是否已執(zhí)行完前一命令。如果流目標(biāo)設(shè)備已執(zhí)行完前一命令,則可將該后續(xù)命令轉(zhuǎn)發(fā)給該流目標(biāo)設(shè)備。如果流目標(biāo)設(shè)備尚未執(zhí)行完前一命令,則可以將該后續(xù)命令置于FIFO隊(duì)列中。一旦流目標(biāo)設(shè)備執(zhí)行完前一命令,本發(fā)明的方法就可以將該后續(xù)命令從FIFO隊(duì)列轉(zhuǎn)發(fā)到該流目標(biāo)設(shè)備。針對(duì)任何其他后續(xù)命令,本發(fā)明的方法可以重復(fù)。
文檔編號(hào)G06F11/00GK1425227SQ00818482
公開日2003年6月18日 申請(qǐng)日期2000年4月18日 優(yōu)先權(quán)日1999年5月24日
發(fā)明者羅伯特·A·雷諾茲, 基思·M·阿羅友 申請(qǐng)人:交叉路徑系統(tǒng)公司