專利名稱:一種iSCSI網(wǎng)絡(luò)系統(tǒng)以及檢測網(wǎng)絡(luò)故障的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種iSCSI網(wǎng)絡(luò)系統(tǒng)以及檢測網(wǎng)絡(luò)故障 的方法。
背景技術(shù):
Internet 小型計算機(jī)系統(tǒng)接 口 iSCSI (Internet Small Computer SystemInterface)協(xié)議,是一種基于TCP/IP網(wǎng)絡(luò)的協(xié)議,用來建立和管理IP存儲設(shè)備、主 機(jī)和客戶機(jī)等設(shè)備之間的相互連接,并創(chuàng)建存儲區(qū)域網(wǎng)絡(luò)(SAN,StorageArea Network)。存 儲區(qū)域網(wǎng)絡(luò)SAN使得SCSI (小型計算機(jī)系統(tǒng)接口,SmallComputer System Interface)協(xié) 議應(yīng)用于高速數(shù)據(jù)傳輸網(wǎng)絡(luò)成為可能,這種傳輸以數(shù)據(jù)塊級別(block-level)在多個數(shù)據(jù) 存儲網(wǎng)絡(luò)間進(jìn)行。SCSI結(jié)構(gòu)基于客戶端/服務(wù)器(Client/Server)模式,其通常應(yīng)用環(huán)境是設(shè)備 之間互相靠近,并且這些設(shè)備由SCSI總線連接。iSCSI的主要功能是在TCP/IP網(wǎng)絡(luò)上的主 機(jī)系統(tǒng)(啟動器,Initiator)和存儲設(shè)備(目標(biāo)器,Target)之間進(jìn)行大量數(shù)據(jù)的封裝和可 靠傳輸過程,如圖1所示。啟動器(Initiator)即典型的主機(jī)系統(tǒng),用于發(fā)出讀、寫數(shù)據(jù)請 求;目標(biāo)器(Target)即磁盤陣列之類的存儲設(shè)備,用于響應(yīng)客戶端的請求。目標(biāo)器和啟動 器通過TCP/IP網(wǎng)絡(luò)及相應(yīng)網(wǎng)關(guān)設(shè)備進(jìn)行連接,進(jìn)行數(shù)據(jù)收發(fā)過程。此外,iSCSI協(xié)議還提 供了在IP網(wǎng)絡(luò)封裝的SCSI命令,且運行在TCP層上。傳輸控制協(xié)議/ 因特網(wǎng)互聯(lián)協(xié)議(TCP/IP, Transmission ControlProtocol/ Internet Protocol),是由網(wǎng)絡(luò)層的IP協(xié)議和傳輸層的TCP協(xié)議組成。TCP/IP是一個兩 層的協(xié)議,其中高層為傳輸控制協(xié)議TCP,它負(fù)責(zé)聚集信息或把文件拆分成更小的包,這 些包通過網(wǎng)絡(luò)傳送到接收端的TCP層,接收端的TCP層把包還原為原始文件;低層是網(wǎng)際協(xié) 議,即IP層,它處理每個包的地址部分,使這些包能夠正確到達(dá)目的地。網(wǎng)絡(luò)上的網(wǎng)關(guān)計算 機(jī)根據(jù)信息的地址來進(jìn)行路由選擇。即使來自同一文件的分包,其各自路由也有可能不同, 但最后會在目的地匯合。TCP/IP使用客戶端/服務(wù)器模式進(jìn)行通信。iSCSI技術(shù)的核心是在TCP/IP網(wǎng)絡(luò)上傳輸SCSI協(xié)議,具體而言,就是在網(wǎng)絡(luò)上封 包和解包的過程中,在網(wǎng)絡(luò)的發(fā)送端,iSCSI數(shù)據(jù)包被封裝成包括TCP/IP頭、iSCSI的PDU 包頭以及攜帶的SCSI命令或數(shù)據(jù)包,并將封裝后的iSCSI數(shù)據(jù)包傳輸?shù)骄W(wǎng)絡(luò)的接收端;在 網(wǎng)絡(luò)的接收端,對接收到的iSCSI數(shù)據(jù)包再順序地解包,上傳給SCSI層協(xié)議。由于iSCSI技術(shù)主要使用的是TCP/IP網(wǎng)絡(luò),因此網(wǎng)絡(luò)的穩(wěn)定性對于iSCSI技術(shù)來 說極其重要。在目前大多數(shù)iSCSI存儲系統(tǒng)中,特別是在IP SAN存儲網(wǎng)絡(luò)中,iSCSI協(xié)議 都需要應(yīng)用在復(fù)雜的網(wǎng)絡(luò)環(huán)境下,此時IP-SAN的網(wǎng)絡(luò)專指iSCSI-SAN,指的就是一種iSCSI 磁盤陣列所構(gòu)建的IP網(wǎng)絡(luò)。而在復(fù)雜的網(wǎng)絡(luò)環(huán)境中,總會出現(xiàn)各種網(wǎng)絡(luò)故障。所述網(wǎng)絡(luò)故 障是指某一啟動器與某一目標(biāo)器之間或者某一啟動器與多個目標(biāo)器之間的網(wǎng)絡(luò)連接故障, 包括網(wǎng)線斷掉,網(wǎng)線破損,交換機(jī)路由器死機(jī),以及主機(jī)宕機(jī)或重啟等等。如果網(wǎng)絡(luò)發(fā)生故障,iSCSI層沒有及時有效的獲知這種連接故障的情況,那么iSCSI目標(biāo)器的驅(qū)動模塊的連接狀態(tài)以及申請的內(nèi)存資源都會繼續(xù)存在。在網(wǎng)絡(luò)恢復(fù)正常 后,啟動器需要重新進(jìn)行連接,就會發(fā)現(xiàn)iSCSI目標(biāo)器依然保存著原來的連接,就會拒絕該 啟動器的連接,同時造成整個目標(biāo)器的驅(qū)動軟件出現(xiàn)死鎖現(xiàn)象,無法進(jìn)行正常的使用,更嚴(yán) 重的會造成死機(jī)。這不但會造成iSCSI目標(biāo)器的資源浪費,甚至影響整個存儲核心軟件的 穩(wěn)定性和可靠性?,F(xiàn)有的iSCSI目標(biāo)器驅(qū)動模塊實現(xiàn)中,并沒有可以及時有效的判斷網(wǎng)絡(luò)當(dāng)前所處 狀態(tài)的方法,因此,就需要一種在復(fù)雜網(wǎng)絡(luò)環(huán)境下及時檢測網(wǎng)絡(luò)故障的技術(shù)方案,以便及時 了解網(wǎng)絡(luò)狀態(tài),檢測到網(wǎng)絡(luò)故障時能夠及時做出正確處理。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題在于,一種iSCSI網(wǎng)絡(luò)系統(tǒng)以及檢測網(wǎng)絡(luò)故障的方 法,用于解決復(fù)雜的網(wǎng)絡(luò)環(huán)境下如何及時發(fā)現(xiàn)網(wǎng)絡(luò)故障并做出相應(yīng)故障處理的問題。為了解決上述問題,本發(fā)明提出了一種利用iSCSI協(xié)議檢測網(wǎng)絡(luò)故障的方法,包 括在iSCSI目標(biāo)器與啟動器之間建立網(wǎng)絡(luò)連接時,初始化連接定時器,并在啟動內(nèi) 核線程后啟動連接定時器;所述目標(biāo)器在連接定時器超時,啟動探測定時器并向啟動器發(fā)送探測幀;若所述 目標(biāo)器未收到探測幀應(yīng)答且探測定時器超時,則判定網(wǎng)絡(luò)發(fā)生故障,進(jìn)入網(wǎng)絡(luò)故障異常處
理流程。所述方法進(jìn)一步包括所述目標(biāo)器在連接定時器未超時且又有數(shù)據(jù)接收或數(shù)據(jù)發(fā) 送時,修改連接定時器的超時時間,啟動進(jìn)行數(shù)據(jù)接收或數(shù)據(jù)發(fā)送。所述方法進(jìn)一步包括所述目標(biāo)器若收到探測幀應(yīng)答,則關(guān)閉探測定時器,進(jìn)一步 判斷是否還有數(shù)據(jù)需要接收,若有則關(guān)閉探測定時器,重新啟動連接定時器。所述探測幀是iSCSI協(xié)議中定義的NOP-IN幀。本發(fā)明還提供一種iSCSI網(wǎng)絡(luò)系統(tǒng),包括一個或多個目標(biāo)器,一個或多個啟動 器,所述啟動器通過TCP/IP網(wǎng)絡(luò)、網(wǎng)關(guān)設(shè)備與所述目標(biāo)器連接;所述目標(biāo)器,用于在與啟動器之間建立網(wǎng)絡(luò)連接時,初始化連接定時器,并在啟動 內(nèi)核線程后啟動連接定時器,在所述連接定時器超時,用于啟動探測定時器并向啟動器發(fā) 送探測幀,若所述目標(biāo)器未收到探測幀應(yīng)答且探測定時器超時,則判定網(wǎng)絡(luò)發(fā)生故障,進(jìn)入 網(wǎng)絡(luò)故障異常處理流程;所述啟動器,用于與目標(biāo)器建立網(wǎng)絡(luò)連接進(jìn)行數(shù)據(jù)接收或數(shù)據(jù)發(fā)送交互,在收到 所述探測幀時向目標(biāo)器返回探測幀應(yīng)答。所述目標(biāo)器在連接定時器未超時且又有數(shù)據(jù)接收或數(shù)據(jù)發(fā)送時,用于修改連接定 時器的超時時間,啟動進(jìn)行數(shù)據(jù)接收或數(shù)據(jù)發(fā)送。所述目標(biāo)器在收到探測幀應(yīng)答時,關(guān)閉探測定時器,并進(jìn)一步判斷是否還有數(shù)據(jù) 需要接收,若有則關(guān)閉探測定時器,重新啟動連接定時器。本發(fā)明還提供一種iSCSI網(wǎng)絡(luò)系統(tǒng)的目標(biāo)器,包括存儲裝置以及驅(qū)動模塊,還包 括與驅(qū)動模塊相連的用戶態(tài)建立連接程序模塊和網(wǎng)絡(luò)協(xié)議處理系統(tǒng)模塊;所述驅(qū)動模塊包 括數(shù)據(jù)接收處理子系統(tǒng)、數(shù)據(jù)發(fā)送處理子系統(tǒng)、以及用于處理網(wǎng)絡(luò)故障的異常處理模塊;其
5中所述數(shù)據(jù)接收處理子系統(tǒng),包括連接定時器和接收系統(tǒng)調(diào)度模塊,所述數(shù)據(jù)發(fā)送處理子系統(tǒng),包括探測定時器和發(fā)送系統(tǒng)調(diào)度模塊,所述連接定時器在目標(biāo)器與啟動器之間建立網(wǎng)絡(luò)連接時初始化并在啟動內(nèi)核線 程后啟動;所述數(shù)據(jù)發(fā)送處理子系統(tǒng)在連接定時器超時時,向啟動器發(fā)送探測幀,探測定時 器在發(fā)送探測幀后啟動;所述數(shù)據(jù)發(fā)送處理子系統(tǒng)在探測定時器超時且數(shù)據(jù)接收處理子系統(tǒng)未收到探測 幀應(yīng)答時,調(diào)用異常處理模塊。所述驅(qū)動模塊在數(shù)據(jù)接收結(jié)束時進(jìn)入接收系統(tǒng)調(diào)度模塊,或者在數(shù)據(jù)發(fā)送結(jié)束時 進(jìn)入發(fā)送系統(tǒng)調(diào)度模塊,產(chǎn)生空閑狀態(tài),接收系統(tǒng)調(diào)度模塊或發(fā)送系統(tǒng)調(diào)度模塊在空閑狀 態(tài)相應(yīng)地啟動連接定時器。若所述探測定時器未發(fā)生超時,所述數(shù)據(jù)接收處理子系統(tǒng)收到了啟動器的探測幀 應(yīng)答,指示所述連接定時器重新啟動進(jìn)行定時。本發(fā)明的技術(shù)方案,在iSCSI目標(biāo)器的驅(qū)動模塊中增加兩個定時器,即連接定時 器和探測定時器,通過內(nèi)核定時器機(jī)制,可發(fā)現(xiàn)網(wǎng)絡(luò)異常,并及時有效的做出相應(yīng)的異常處 理,從而實現(xiàn)網(wǎng)絡(luò)故障檢測。相比于現(xiàn)有技術(shù),本發(fā)明可通過目標(biāo)器的驅(qū)動模塊主動探測是 否發(fā)生網(wǎng)絡(luò)故障,一方面目標(biāo)器可獲得正確的網(wǎng)絡(luò)狀態(tài),另一方面也可加快發(fā)生網(wǎng)絡(luò)故障 時的處理進(jìn)程,及時消除網(wǎng)絡(luò)故障。由于本發(fā)明實現(xiàn)了 iSCSI目標(biāo)器驅(qū)動模塊對網(wǎng)絡(luò)狀態(tài) 的探測,從而可增強(qiáng)iSCSI目標(biāo)器驅(qū)動模塊和整個存儲核心軟件的穩(wěn)定性和可靠性。
圖1是iSCSI網(wǎng)絡(luò)的架構(gòu)示意圖;圖2是iSCSI網(wǎng)絡(luò)的目標(biāo)器結(jié)構(gòu)示意圖;圖3是iSCSI網(wǎng)絡(luò)實現(xiàn)檢測網(wǎng)絡(luò)故障的連接定時器啟動圖;圖4是iSCSI網(wǎng)絡(luò)實現(xiàn)檢測網(wǎng)絡(luò)故障的接收子系統(tǒng)圖;圖5是iSCSI網(wǎng)絡(luò)實現(xiàn)檢測網(wǎng)絡(luò)故障的發(fā)送子系統(tǒng)圖。
具體實施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,以下結(jié)合附圖對本發(fā)明作進(jìn)一步 地詳細(xì)說明。本發(fā)明針對復(fù)雜的網(wǎng)絡(luò)環(huán)境下發(fā)生網(wǎng)絡(luò)故障后,如何保證iSCSI的目標(biāo)器端的目 標(biāo)器驅(qū)動模塊及時檢測到網(wǎng)絡(luò)故障的問題,提出了一種目標(biāo)器驅(qū)動模塊主動檢測網(wǎng)絡(luò)連接 是否發(fā)生故障的技術(shù)方案。在目標(biāo)器驅(qū)動模塊中增加設(shè)置了連接定時器和探測定時器,利 用連接定時器對數(shù)據(jù)接收和/或數(shù)據(jù)發(fā)送進(jìn)行連接定時監(jiān)控,在連接定時器超時后,發(fā)送 探測幀并同時啟動探測定時器,若未收到探測幀應(yīng)答且探測定時器超時,則表明發(fā)生了網(wǎng) 絡(luò)故障,則轉(zhuǎn)入相應(yīng)的網(wǎng)絡(luò)故障異常處理流程即可。由于本發(fā)明實現(xiàn)了目標(biāo)器驅(qū)動模塊對網(wǎng)絡(luò)故障的主動檢測,故而可以及時發(fā)現(xiàn)網(wǎng) 絡(luò)故障,獲知網(wǎng)絡(luò)狀態(tài),進(jìn)行網(wǎng)絡(luò)異常故障處理,從而保證內(nèi)核資源的正確使用以及整個存
6儲核心軟件的穩(wěn)定性和可靠性。通常,某一目標(biāo)器與某一啟動器之間可以建立連接,或者某一目標(biāo)器可與多個啟 動器之間建立連接,因為每個連接都有自己申請的資源,因此也會同時申請針對每個連接 的連接定時器和探測定時器。當(dāng)多個啟動器同時出現(xiàn)網(wǎng)絡(luò)故障時,那么iSCSI目標(biāo)器的驅(qū) 動模塊可通過軟件輪詢的方式查找到每個超時的連接,從而釋放申請的資源以及解除整個 目標(biāo)器驅(qū)動模塊軟件對申請資源鎖定狀態(tài)。因而本發(fā)明的網(wǎng)絡(luò)故障檢測方案具有很強(qiáng)的適 用性及靈活性。如圖2所示,顯示了 iSCSI網(wǎng)絡(luò)的目標(biāo)器結(jié)構(gòu)示意圖。針對圖1所示的目標(biāo)器,每 一目標(biāo)器都具有相應(yīng)的存儲裝置以及驅(qū)動模塊,還包括與驅(qū)動模塊相連的用戶態(tài)連接程序 模塊和網(wǎng)絡(luò)協(xié)議處理系統(tǒng)模塊。其中,所述目標(biāo)器驅(qū)動模塊包括數(shù)據(jù)接收處理子系統(tǒng)、數(shù)據(jù)發(fā)送處理子系統(tǒng)、以 及用于處理網(wǎng)絡(luò)故障的異常處理模塊。所述數(shù)據(jù)接收處理子系統(tǒng),包括連接定時器及接收 系統(tǒng)調(diào)度模塊;所述數(shù)據(jù)發(fā)送處理子系統(tǒng),包括探測定時器及發(fā)送系統(tǒng)調(diào)度模塊。如圖3所示,用戶態(tài)建立連接程序模塊主要用于創(chuàng)建S0CKET、P0LL監(jiān)聽、建立TCP 連接和解除TCP連接釋放資源。在用戶態(tài)建立連接程序模塊建立TCP連接后通過IOCTL用 戶態(tài)和內(nèi)核交互的接口傳入到內(nèi)核中,在內(nèi)核態(tài)下建立TCP連接,初始化連接定時器,設(shè)定 連接定時的超時時間(比如設(shè)為10秒),啟動內(nèi)核線程,最后啟動連接定時器,等待接收啟 動器端發(fā)送的數(shù)據(jù)包。用戶態(tài)只是連接TCP連接,并沒有啟動定時器,啟動定時器的操作是 在內(nèi)核態(tài)下實現(xiàn)的。在圖2所示的所述目標(biāo)器驅(qū)動模塊中所述數(shù)據(jù)接收處理子系統(tǒng),用于接收啟動器發(fā)送的iSCSI PDU數(shù)據(jù),進(jìn)行解包處 理,系統(tǒng)調(diào)用等待連接定時器的超時,以及判斷是否需要啟動探測定時器等。所述數(shù)據(jù)發(fā)送處理子系統(tǒng),用于將iSCSI目標(biāo)器驅(qū)動模塊的iSCSI PDU數(shù)據(jù)發(fā)送 到啟動器,對iSCSI PDU進(jìn)行封包,以及探測幀的發(fā)送處理,調(diào)用異常處理模塊進(jìn)行網(wǎng)絡(luò)異
常處理等。在目標(biāo)器驅(qū)動模塊中,只要數(shù)據(jù)接收或數(shù)據(jù)發(fā)送結(jié)束,驅(qū)動模塊就會進(jìn)入相應(yīng)的 系統(tǒng)調(diào)度模塊,從而產(chǎn)生空閑狀態(tài),接收系統(tǒng)調(diào)度模塊或發(fā)送系統(tǒng)調(diào)度模塊在空閑狀態(tài)會 相應(yīng)地啟動連接定時器。如果在連接定時器未到達(dá)超時時刻時,就有數(shù)據(jù)接收或發(fā)送的發(fā)生,則連接定時 器會被iSCSI目標(biāo)器驅(qū)動模塊重新復(fù)位超時時間。如果連接定時器發(fā)生超時,則就開始進(jìn)入探測網(wǎng)絡(luò)狀態(tài)階段,由數(shù)據(jù)發(fā)送處理子 系統(tǒng)向啟動器發(fā)送探測幀,在發(fā)送探測幀后,會啟動探測定時器若探測定時器未發(fā)生超時,數(shù)據(jù)接收處理子系統(tǒng)就收到了啟動器的探測幀應(yīng)答, 則又重新進(jìn)入連接定時器階段;若探測定時器發(fā)生超時,則就說明發(fā)生網(wǎng)絡(luò)故障,數(shù)據(jù)發(fā)送處理子系統(tǒng)調(diào)用異常 處理模塊,進(jìn)入連接異常處理流程?;趫D2所示的iSCSI目標(biāo)器驅(qū)動模塊的結(jié)構(gòu),本發(fā)明的利用iSCSI協(xié)議檢測網(wǎng) 絡(luò)故障的方法,包括在iSCSI目標(biāo)器與啟動器之間建立網(wǎng)絡(luò)連接時,初始化連接定時器,并在啟動內(nèi)核線程后啟動連接定時器;若連接定時器超時,則啟動探測定時器,并向啟動器發(fā)送探測幀;若iSCSI目標(biāo)器未收到探測幀應(yīng)答且探測定時器超時,則判定網(wǎng)絡(luò)發(fā)生故障,進(jìn) 入網(wǎng)絡(luò)故障異常處理流程。所述方法進(jìn)一步包括若連接定時器未超時且又有數(shù)據(jù)接收或數(shù)據(jù)發(fā)送,則修改 連接定時器的超時時間,啟動進(jìn)行數(shù)據(jù)接收或數(shù)據(jù)發(fā)送。所述方法進(jìn)一步包括若iSCSI目標(biāo)器收到探測幀應(yīng)答,則關(guān)閉探測定時器,進(jìn)一 步判斷是否還有數(shù)據(jù)需要接收,若有則關(guān)閉探測定時器,重新啟動連接定時器。在所述檢測網(wǎng)絡(luò)故障的方法中,數(shù)據(jù)接收及所述探測幀應(yīng)答接收由數(shù)據(jù)接收處理 子系統(tǒng)處理,數(shù)據(jù)發(fā)送及所述探測幀發(fā)送由數(shù)據(jù)發(fā)送子系統(tǒng)處理。本發(fā)明的檢測網(wǎng)絡(luò)故障的方法,可以針對無數(shù)據(jù)傳輸,數(shù)據(jù)接收,數(shù)據(jù)發(fā)送,數(shù)據(jù) 收發(fā)四種應(yīng)用場景下進(jìn)行實施,下面結(jié)合具體實施例,對具體應(yīng)用場景的檢測方法進(jìn)行詳 細(xì)說明。實施例1 網(wǎng)絡(luò)無數(shù)據(jù)狀態(tài)時,檢測網(wǎng)絡(luò)故障參見附圖3、圖4、圖5,iSCSI目標(biāo)器的驅(qū)動模塊會在啟動連接定時器后,開始等待 接收啟動器發(fā)送的數(shù)據(jù),如果iSCSI目標(biāo)器在間隔IOs (即連接定時器設(shè)定的超時時間)后 仍未收到啟動器發(fā)送的數(shù)據(jù),此時可能啟動器已經(jīng)發(fā)送數(shù)據(jù)或者啟動器并未發(fā)送數(shù)據(jù),不 管是哪種可能,連接定時器都會超時,從而啟動探測定時器,通過iSCSI數(shù)據(jù)向啟動器發(fā)送 子系統(tǒng)發(fā)送網(wǎng)絡(luò)探測幀,進(jìn)行網(wǎng)絡(luò)狀態(tài)的探測如果探測定時器未超時且收到啟動器的探測幀應(yīng)答數(shù)據(jù)包,則刪除探測定時器, 重新調(diào)整連接定時器的超時時間;如果在發(fā)送探測定時器5s (即探測定時器設(shè)定的超時時間)后,還未收到啟動器 的應(yīng)答數(shù)據(jù)包,則判定在無數(shù)據(jù)收發(fā)情況下,網(wǎng)絡(luò)已經(jīng)發(fā)生故障,則進(jìn)入異常處理模塊,進(jìn) 入網(wǎng)絡(luò)異常處理。實施例2 數(shù)據(jù)接收狀態(tài)時,檢測網(wǎng)絡(luò)故障參見附圖4、圖5,iSCSI目標(biāo)器的驅(qū)動模塊從網(wǎng)絡(luò)協(xié)議處理子系統(tǒng)模塊中接收到 啟動器發(fā)送的iSCSI PDU包后,就進(jìn)入iSCSI數(shù)據(jù)接收處理子系統(tǒng),對接收的數(shù)據(jù)包進(jìn)行解
析等處理。如果此時發(fā)生網(wǎng)絡(luò)故障,則會進(jìn)入系統(tǒng)調(diào)度階段,等待連接定時器的超時,其中如果連接定時器沒有發(fā)生超時,就返回iSCSI數(shù)據(jù)接收處理子系統(tǒng);如果連接定時器超時,就開始啟動探測定時器,并發(fā)送探測幀給啟動器。如果 iSCSI目標(biāo)器接收到啟動器的探測幀應(yīng)答數(shù)據(jù)包,則關(guān)閉探測定時器,否則就說明網(wǎng)絡(luò)已經(jīng) 發(fā)生故障,此時就進(jìn)入iSCSI網(wǎng)絡(luò)故障異常處理流程。實施例3 數(shù)據(jù)發(fā)送狀態(tài)時,檢測網(wǎng)絡(luò)故障iSCSI目標(biāo)器的驅(qū)動模塊從網(wǎng)絡(luò)子系統(tǒng)準(zhǔn)備把iSCSI PDU包發(fā)送到啟動器,就進(jìn) 入iSCSI數(shù)據(jù)發(fā)送處理子系統(tǒng),主要是對發(fā)送的數(shù)據(jù)進(jìn)行封包等處理。如果此時發(fā)生網(wǎng)絡(luò)故障,則會進(jìn)入系統(tǒng)調(diào)度階段,等待連接定時器的超時,其中如果連接定時器沒有發(fā)生超時,就返回iSCSI數(shù)據(jù)發(fā)送處理子系統(tǒng);如果連接定時器超時,就開始啟動探測定時器,并發(fā)送探測幀給啟動器。如果iSCSI目標(biāo)器的驅(qū)動模塊接收啟動器的探測幀應(yīng)答數(shù)據(jù)包,則關(guān)閉探測定時器,否則就說明 網(wǎng)絡(luò)已經(jīng)發(fā)生故障,此時就進(jìn)入iSCSI網(wǎng)絡(luò)故障異常處理流程。實施例4 數(shù)據(jù)收發(fā)狀態(tài)時,檢測網(wǎng)絡(luò)故障如果iSCSI目標(biāo)器驅(qū)動模塊處于數(shù)據(jù)收發(fā)狀態(tài),此時數(shù)據(jù)流是雙向,從主機(jī)發(fā)送 到磁陣,同時也從磁陣發(fā)送到主機(jī),這種情況下網(wǎng)絡(luò)出現(xiàn)故障,由于操作系統(tǒng)都是分時處理 數(shù)據(jù)的,因此此時數(shù)據(jù)流的處理要么處于數(shù)據(jù)接收處理子系統(tǒng),要么處理數(shù)據(jù)發(fā)送處理子 系統(tǒng),那么iSCSI目標(biāo)器驅(qū)動模塊會根據(jù)當(dāng)前所處的子系統(tǒng)進(jìn)行啟動連接定時器、探測定 時器和發(fā)送探測幀進(jìn)行網(wǎng)絡(luò)狀態(tài)的查詢,如果網(wǎng)絡(luò)發(fā)生了故障,則轉(zhuǎn)入進(jìn)行相應(yīng)的異常處 理流程。由于收發(fā)狀態(tài)是分時進(jìn)行,因此可在數(shù)據(jù)接收時采用實施例2的技術(shù)方案,數(shù)據(jù) 發(fā)送時采用實施例3的技術(shù)方案。在上述1-4的實施例中,在數(shù)據(jù)收發(fā)的過程中已經(jīng)啟動定時器,啟動器定時時間 跟數(shù)據(jù)收發(fā)的長短無關(guān),當(dāng)有數(shù)據(jù)收發(fā)存在的情況下,定時器會重新恢復(fù)原來的定時時間 (比如原來時間間隔為10秒),從而定時器不會觸發(fā)定時器操作函數(shù)。在需要數(shù)據(jù)接收的 情況,TCP/IP層會通知iSCSI層,通過回調(diào)函數(shù)機(jī)制,喚醒內(nèi)核線程接收數(shù)據(jù);在需要發(fā)送 數(shù)據(jù)的情況,SCSI層會通知iSCSI層,也是通過回調(diào)函數(shù)機(jī)制,喚醒內(nèi)核線程發(fā)送數(shù)據(jù)。探測幀是iSCSI協(xié)議中定義的一種幀格式,即NOP-IN幀,無需攜帶數(shù)據(jù)。本發(fā)明 中,啟動探測器是因為連接定時器超時時網(wǎng)絡(luò)無數(shù)據(jù)狀態(tài),可能存在網(wǎng)絡(luò)故障。本發(fā)明通過 啟動探測器后發(fā)送探測幀去檢測網(wǎng)絡(luò)狀態(tài),如果收到啟動器的探測幀應(yīng)答數(shù)據(jù)包,說明網(wǎng) 絡(luò)狀態(tài)是正常的,如果沒有收到探測幀應(yīng)答數(shù)據(jù)包說明網(wǎng)絡(luò)發(fā)生故障,接著進(jìn)入異常處理 流程,異常處理流程與具體的存儲驅(qū)動軟件實現(xiàn)相關(guān),在此不再贅述。以上所述僅為本發(fā)明的實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人 員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、 等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的權(quán)利要求范圍之內(nèi)。
9
權(quán)利要求
一種利用iSCSI協(xié)議檢測網(wǎng)絡(luò)故障的方法,包括在iSCSI目標(biāo)器與啟動器之間建立網(wǎng)絡(luò)連接時,初始化連接定時器,并在啟動內(nèi)核線程后啟動連接定時器;所述目標(biāo)器在連接定時器超時,啟動探測定時器并向啟動器發(fā)送探測幀;若所述目標(biāo)器未收到探測幀應(yīng)答且探測定時器超時,則判定網(wǎng)絡(luò)發(fā)生故障,進(jìn)入網(wǎng)絡(luò)故障異常處理流程。
2.如權(quán)利要求1的方法,其特征在于,所述方法進(jìn)一步包括所述目標(biāo)器在連接定時器未超時且又有數(shù)據(jù)接收或數(shù)據(jù)發(fā)送時,修改連接定時器的超 時時間,啟動進(jìn)行數(shù)據(jù)接收或數(shù)據(jù)發(fā)送。
3.如權(quán)利要求1或2的方法,其特征在于,所述方法進(jìn)一步包括所述目標(biāo)器若收到探測幀應(yīng)答,則關(guān)閉探測定時器,進(jìn)一步判斷是否還有數(shù)據(jù)需要接 收,若有則關(guān)閉探測定時器,重新啟動連接定時器。
4.如權(quán)利要求1或2的方法,其特征在于,所述探測幀是iSCSI協(xié)議中定義的NOP-IN幀。
5.一種iSCSI網(wǎng)絡(luò)系統(tǒng),包括一個或多個目標(biāo)器,一個或多個啟動器,所述啟動器通 過TCP/IP網(wǎng)絡(luò)、網(wǎng)關(guān)設(shè)備與所述目標(biāo)器連接;所述目標(biāo)器,用于在與啟動器之間建立網(wǎng)絡(luò)連接時,初始化連接定時器,并在啟動內(nèi)核 線程后啟動連接定時器,在所述連接定時器超時,用于啟動探測定時器并向啟動器發(fā)送探 測幀,若所述目標(biāo)器未收到探測幀應(yīng)答且探測定時器超時,則判定網(wǎng)絡(luò)發(fā)生故障,進(jìn)入網(wǎng)絡(luò) 故障異常處理流程;所述啟動器,用于與目標(biāo)器建立網(wǎng)絡(luò)連接進(jìn)行數(shù)據(jù)接收或數(shù)據(jù)發(fā)送交互,在收到所述 探測幀時向目標(biāo)器返回探測幀應(yīng)答。
6.如權(quán)利要求5所述的網(wǎng)絡(luò)系統(tǒng),其特征在于,所述目標(biāo)器在連接定時器未超時且又有數(shù)據(jù)接收或數(shù)據(jù)發(fā)送時,用于修改連接定時器 的超時時間,啟動進(jìn)行數(shù)據(jù)接收或數(shù)據(jù)發(fā)送。
7.如權(quán)利要求5所述的網(wǎng)絡(luò)系統(tǒng),其特征在于,所述目標(biāo)器在收到探測幀應(yīng)答時,關(guān)閉探測定時器,并進(jìn)一步判斷是否還有數(shù)據(jù)需要 接收,若有則關(guān)閉探測定時器,重新啟動連接定時器。
8.—種iSCSI網(wǎng)絡(luò)系統(tǒng)的目標(biāo)器,包括存儲裝置以及驅(qū)動模塊,還包括與驅(qū)動模塊相 連的用戶態(tài)建立連接程序模塊和網(wǎng)絡(luò)協(xié)議處理系統(tǒng)模塊;所述驅(qū)動模塊包括數(shù)據(jù)接收處理 子系統(tǒng)、數(shù)據(jù)發(fā)送處理子系統(tǒng)、以及用于處理網(wǎng)絡(luò)故障的異常處理模塊;其特征在于,所述數(shù)據(jù)接收處理子系統(tǒng),包括連接定時器和接收系統(tǒng)調(diào)度模塊,所述數(shù)據(jù)發(fā)送處理子系統(tǒng),包括探測定時器和發(fā)送系統(tǒng)調(diào)度模塊,所述連接定時器在目標(biāo)器與啟動器之間建立網(wǎng)絡(luò)連接時初始化并在啟動內(nèi)核線程后 啟動;所述數(shù)據(jù)發(fā)送處理子系統(tǒng)在連接定時器超時時,向啟動器發(fā)送探測幀,探測定時器在 發(fā)送探測幀后啟動;所述數(shù)據(jù)發(fā)送處理子系統(tǒng)在探測定時器超時且數(shù)據(jù)接收處理子系統(tǒng)未收到探測幀應(yīng) 答時,調(diào)用異常處理模塊。
9.如權(quán)利要求8所述的目標(biāo)器,其特征在于,所述驅(qū)動模塊在數(shù)據(jù)接收結(jié)束時進(jìn)入接收系統(tǒng)調(diào)度模塊,或者在數(shù)據(jù)發(fā)送結(jié)束時進(jìn)入 發(fā)送系統(tǒng)調(diào)度模塊,產(chǎn)生空閑狀態(tài),接收系統(tǒng)調(diào)度模塊或發(fā)送系統(tǒng)調(diào)度模塊在空閑狀態(tài)相 應(yīng)地啟動連接定時器。
10.如權(quán)利要求8所述的目標(biāo)器,其特征在于,若所述探測定時器未發(fā)生超時,所述數(shù)據(jù)接收處理子系統(tǒng)收到了啟動器的探測幀應(yīng) 答,指示所述連接定時器重新啟動進(jìn)行定時。
全文摘要
本發(fā)明公開了一種iSCSI網(wǎng)絡(luò)系統(tǒng)以及檢測網(wǎng)絡(luò)故障的方法,屬于網(wǎng)絡(luò)存儲技術(shù)領(lǐng)域,解決復(fù)雜的網(wǎng)絡(luò)環(huán)境下發(fā)生網(wǎng)絡(luò)故障后,iSCSI的目標(biāo)器端的目標(biāo)器驅(qū)動模塊如何及時檢測到網(wǎng)絡(luò)故障的問題。本發(fā)明在目標(biāo)器驅(qū)動模塊中增加設(shè)置了連接定時器和探測定時器,利用連接定時器對數(shù)據(jù)接收和/或數(shù)據(jù)發(fā)送進(jìn)行連接定時監(jiān)控,在連接定時器超時后,發(fā)送探測幀并同時啟動探測定時器,若未收到探測幀應(yīng)答且探測定時器超時,則表明發(fā)生了網(wǎng)絡(luò)故障,則轉(zhuǎn)入相應(yīng)的網(wǎng)絡(luò)故障異常處理流程即可。本發(fā)明簡便易行,可及時檢測發(fā)現(xiàn)網(wǎng)絡(luò)故障并轉(zhuǎn)入異常處理,可增強(qiáng)iSCSI目標(biāo)器驅(qū)動模塊和整個存儲核心軟件的穩(wěn)定性和可靠性。
文檔編號H04L29/06GK101951327SQ20101022307
公開日2011年1月19日 申請日期2010年7月2日 優(yōu)先權(quán)日2010年7月2日
發(fā)明者陳倫艷 申請人:中興通訊股份有限公司