數(shù)據(jù)處理方法、服務(wù)器及存儲陣列的制作方法
【專利摘要】本發(fā)明實施例提供一種數(shù)據(jù)處理方法、服務(wù)器及存儲陣列,該方法包括:接收存儲陣列發(fā)送的返回碼;根據(jù)返回碼,在返回碼數(shù)據(jù)庫中查詢與返回碼對應(yīng)的處理屬性,返回碼數(shù)據(jù)庫中保存有存儲陣列支持的各返回碼與各返回碼的處理屬性的對應(yīng)關(guān)系;根據(jù)查詢到的處理屬性,處理返回碼。該方法中,服務(wù)器上的多路徑軟件可事先查詢并獲取存儲陣列支持的各返回碼與各返回碼的處理屬性的對應(yīng)關(guān)系并保存在服務(wù)器的返回碼數(shù)據(jù)庫中,實現(xiàn)當(dāng)存儲陣列升級時,無需聯(lián)動的對多路徑軟件進(jìn)行升級,避免暫停運(yùn)行多路徑軟件的服務(wù)器所承載的各業(yè)務(wù),甚至重啟服務(wù)器,從而保證業(yè)務(wù)的連續(xù)。
【專利說明】數(shù)據(jù)處理方法、服務(wù)器及存儲陣列
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實施例涉及數(shù)據(jù)處理技術(shù),尤其涉及一種數(shù)據(jù)處理方法、服務(wù)器及存儲陣列。
【背景技術(shù)】
[0002]存儲區(qū)網(wǎng)絡(luò)(Storage Area Network, SAN)技術(shù)中,通過光纖、以太網(wǎng)等將存儲陣列連接至服務(wù)器,在服務(wù)器與存儲陣列之間建立主用路徑和備用路徑。當(dāng)運(yùn)行在服務(wù)器上的多路徑軟件檢測到主用路徑故障時,把輸入/輸出(Input/Output,I/O)請求切換到備用路徑,以保證上層業(yè)務(wù)連續(xù)性。
[0003]隨著存儲陣列的智能化程度越來越高,其軟/硬件復(fù)雜度也隨之上升,應(yīng)用場景和處理策略也越來越多樣化,傳統(tǒng)的多路徑軟件并不能滿足日益發(fā)展的存儲陣列。例如,月艮務(wù)器上特定的邏輯單元(Logical Unit,LU)可能不允許訪問存儲陣列上的某個控制器。此時,多路徑軟件會誤認(rèn)為該控制器故障,將該控制器上的所有I/O請求都切換到其他控制器,而實際上存儲陣列所希望的僅是對該LU的I/O請求進(jìn)行切換;再如,當(dāng)前存儲陣列無法成功的完成I/O請求時,會返回特定的返回碼給服務(wù)器,使得多路徑軟件根據(jù)不同的返回碼確定采取的措施。雖然小型計算機(jī)系統(tǒng)接口(Small Computer System Interface, SCSI)定義了多種不同的返回碼用于表示不同事件或原因,然而,SCSI中的返回碼定義的比較模糊,導(dǎo)致不同的存儲廠商的理解不一致,而且,新增的返回碼源源不斷的出現(xiàn),導(dǎo)致多路徑軟件可能不識別部分返回碼。
[0004]現(xiàn)有技術(shù)中,各存儲廠商定制與存儲陣列配套的專用多路徑軟件,該專用多路徑軟件通過定制的方式對對應(yīng)的存儲陣列的1/0請求返回碼進(jìn)行處理。然而,該配套定制的方式中,各存儲廠商的存儲陣列僅能配套使用對應(yīng)的專用多路徑軟件,專用多路徑軟件對對應(yīng)的存儲陣列的返回碼進(jìn)行處理并確定出采取的措施。當(dāng)對存儲陣列進(jìn)行升級后,需要暫停運(yùn)行多路徑軟件的服務(wù)器所承載的各業(yè)務(wù),甚至需要重啟服務(wù)器以對多路徑軟件聯(lián)動的進(jìn)行升級,嚴(yán)重影響了業(yè)務(wù)的連續(xù)性。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實施例提供一種數(shù)據(jù)處理方法、服務(wù)器及存儲陣列,通過具有通用性的多路徑軟件,實現(xiàn)當(dāng)存儲陣列升級時,無需聯(lián)動的對多路徑軟件進(jìn)行升級,避免暫停運(yùn)行多路徑軟件的服務(wù)器所承載的各業(yè)務(wù),甚至重啟服務(wù)器,從而保證業(yè)務(wù)的連續(xù)性。
[0006]第一個方面,本發(fā)明實施例提供一種數(shù)據(jù)處理方法,包括:
[0007]接收存儲陣列發(fā)送的返回碼;
[0008]根據(jù)所述返回碼,在返回碼數(shù)據(jù)庫中查詢與所述返回碼對應(yīng)的處理屬性,所述返回碼數(shù)據(jù)庫中保存有所述存儲陣列支持的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系;
[0009]根據(jù)查詢到的所述處理屬性,處理所述返回碼。[0010]在第一個方面的第一種可能的實現(xiàn)方式中,所述接收存儲陣列發(fā)送的返回碼之前,包括:
[0011]向所述存儲陣列發(fā)送第一查詢命令,以使所述存儲陣列將當(dāng)前支持的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系封裝成所述返回碼數(shù)據(jù)庫;
[0012]接收所述存儲陣列發(fā)送的響應(yīng)命令,所述響應(yīng)命令攜帶所述存儲陣列當(dāng)前的返回碼數(shù)據(jù)庫。
[0013]在第二個方面的第二種可能的實現(xiàn)方式中,所述接收存儲陣列發(fā)送的返回碼之前,包括:
[0014]向所述存儲陣列發(fā)送第二查詢命令,以使得所述存儲陣列將升級后支持的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系封裝成所述返回碼數(shù)據(jù)庫;
[0015]接收所述存儲陣列發(fā)送的響應(yīng)命令,所述響應(yīng)命令攜帶所述存儲陣列升級后的返回碼數(shù)據(jù)庫。
[0016]結(jié)合第一個方面、第一個方面的第一種或第二種可能的實現(xiàn)方式,在第一個方面的第三種可能的實現(xiàn)方式中,所述處理屬性包括下述信息中的至少一種:處理方式、重試類型、重試次數(shù)、重試時間、重試間隔。
[0017]結(jié)合第一個方面的第三種可能的實現(xiàn)方式,在第一個方面的第四種可能的實現(xiàn)方式中,所述處理方式包括:
[0018]原路徑重試、路徑切換、切換控制器、不處理直接透傳。
[0019]第二個方面,本發(fā)明實施例提供一種數(shù)據(jù)處理方法,包括:
[0020]向服務(wù)器發(fā)送返回碼,所述服務(wù)器上運(yùn)行多路徑軟件;
[0021]接收所述服務(wù)器發(fā)送的輸入或輸出請求,所述輸入或輸出請求為所述多路勁軟件根據(jù)所述返回碼,在返回碼數(shù)據(jù)庫中查詢到與所述返回碼對應(yīng)的處理屬性并對所述返回碼進(jìn)行處理后發(fā)送的,所述返回碼數(shù)據(jù)庫中保存有所述存儲陣列支持的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系。
[0022]在第二個方面的第一種可能的實現(xiàn)方式中,所述向服務(wù)器發(fā)送返回碼之前,包括:
[0023]接收所述多路徑軟件發(fā)送的第一查詢命令;
[0024]將升級前支持的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系封裝成所述返回碼數(shù)據(jù)庫;
[0025]向所述多路徑軟件發(fā)送響應(yīng)命令,所述響應(yīng)命令攜帶所述存儲陣列當(dāng)前的返回碼數(shù)據(jù)庫。
[0026]在第二個方面的第二種可能的實現(xiàn)方式中,所述向服務(wù)器發(fā)送返回碼之前,包括:
[0027]接收所述多路徑軟件發(fā)送的第二查詢命令;
[0028]將升級后的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系封裝成所述返回碼數(shù)據(jù)庫;
[0029]向所述多路徑軟件發(fā)送響應(yīng)命令,所述響應(yīng)命令攜帶所述存儲陣列升級后的返回碼數(shù)據(jù)庫。
[0030]結(jié)合第二個方面、第二個方面的第一種或第二種可能的實現(xiàn)方式,在第二個方面的第三種可能的實現(xiàn)方式中,所述處理屬性包括下述信息中的至少一種:處理方式、重試類型、重試次數(shù)、重試時間、重試間隔。
[0031]結(jié)合第二個方面的第三種可能的實現(xiàn)方式,在第二個方面的第四種可能的實現(xiàn)方式中,所述處理方式包括:
[0032]原路徑重試、路徑切換、切換控制器、不處理直接透傳。
[0033]第三個方面,本發(fā)明實施例提供一種數(shù)據(jù)處理裝置,包括:
[0034]接收模塊,用于接收存儲陣列發(fā)送的返回碼;
[0035]查詢模塊,用于根據(jù)所述接收模塊接收到的所述返回碼,在返回碼數(shù)據(jù)庫中查詢與所述返回碼對應(yīng)的處理屬性,所述返回碼數(shù)據(jù)庫中保存有所述存儲陣列支持的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系;
[0036]處理模塊,用于根據(jù)所述查詢模塊查詢到的所述處理屬性,處理所述返回碼。
[0037]在第三個方面的第一種可能的實現(xiàn)方式中,所述裝置還包括:
[0038]發(fā)送模塊,用于向所述存儲陣列發(fā)送第一查詢命令,以使所述存儲陣列將當(dāng)前支持的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系封裝成所述返回碼數(shù)據(jù)庫;
[0039]所述接收模塊,用于接收所述存儲陣列發(fā)送的響應(yīng)命令,所述響應(yīng)命令攜帶所述存儲陣列當(dāng)前的返回碼數(shù)據(jù)庫。
[0040]在第三個方面的第二種可能的實現(xiàn)方式中,所述裝置還包括:
[0041]發(fā)送模塊,用于向所述存儲陣列發(fā)送第二查詢命令,以使得所述存儲陣列將升級后支持的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系封裝成所述返回碼數(shù)據(jù)庫;
[0042]所述接收模塊,用于接收所述存儲陣列發(fā)送的響應(yīng)命令,所述響應(yīng)命令攜帶所述存儲陣列升級后的返回碼數(shù)據(jù)庫。
[0043]結(jié)合第三個方面、第三個方面的第一種或第二種可能的實現(xiàn)方式,在第三個方面的第三種可能的實現(xiàn)方式在,所述處理屬性包括下述信息中的至少一種:處理方式、重試類型、重試次數(shù)、重試時間、重試間隔。
[0044]結(jié)合第三個方面的第三種可能的實現(xiàn)方式,在第三個方面的第四種可能的實現(xiàn)方式中,所述處理方式包括:
[0045]原路徑重試、路徑切換、切換控制器、不處理直接透傳。
[0046]第四個方面,本發(fā)明實施例提供一種數(shù)據(jù)處理裝置,包括:
[0047]發(fā)送模塊,用于向服務(wù)器發(fā)送返回碼,所述服務(wù)器上運(yùn)行多路徑軟件;
[0048]接收模塊,用于接收所述服務(wù)器發(fā)送的輸入或輸出請求,所述輸入或輸出請求為所述多路勁軟件根據(jù)所述返回碼,在返回碼數(shù)據(jù)庫中查詢到與所述返回碼對應(yīng)的處理屬性并對所述返回碼進(jìn)行處理后發(fā)送的,所述返回碼數(shù)據(jù)庫中保存有所述存儲陣列支持的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系。
[0049]在第四個方面的第一種可能的實現(xiàn)方式中,所述裝置還包括:封裝模塊;
[0050]所述接收模塊,用于接收所述多路徑軟件發(fā)送的第一查詢命令;
[0051]所述封裝模塊,用于將升級前支持的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系封裝成所述返回碼數(shù)據(jù)庫;
[0052]所述發(fā)送模塊,用于向所述多路徑軟件發(fā)送響應(yīng)命令,所述響應(yīng)命令攜帶所述存儲陣列當(dāng)前的返回碼數(shù)據(jù)庫。[0053]在第四個方面的第二種可能的實現(xiàn)方式中,所述裝置還包括:封裝模塊;
[0054]所述接收模塊,用于接收所述多路徑軟件發(fā)送的第二查詢命令;
[0055]所述封裝模塊,用于將升級后的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系封裝成所述返回碼數(shù)據(jù)庫;
[0056]所述發(fā)送模塊,用于向所述多路徑軟件發(fā)送響應(yīng)命令,所述響應(yīng)命令攜帶所述存儲陣列升級后的返回碼數(shù)據(jù)庫。
[0057]結(jié)合第四個方面、第四個方面的第一種或第二種可能的實現(xiàn)方式,在第四個方面的第三種可能的實現(xiàn)方式中,所述處理屬性包括下述信息中的至少一種:處理方式、重試類型、重試次數(shù)、重試時間、重試間隔。
[0058]結(jié)合第四個方面的第三種可能的實現(xiàn)方式,在第四個方面的第四種可能的實現(xiàn)方式中,所述處理方式包括:
[0059]原路徑重試、路徑切換、切換控制器、不處理直接透傳。
[0060]第五個方面,本發(fā)明實施例提供一種服務(wù)器,包括如上第三個方面或第三個方面的任一種可能的實現(xiàn)方式提供的數(shù)據(jù)處理裝置。
[0061]第六個方面,本發(fā)明實施例提供一種存儲陣列,包括如上第四個方面或第四個方面的任一種可能的實現(xiàn)方式提供的數(shù)據(jù)處理裝置。
[0062]本發(fā)明實施例提供的數(shù)據(jù)處理方法、服務(wù)器及存儲陣列,運(yùn)行在服務(wù)器上的多路徑軟件通過接受存儲陣列發(fā)送的返回碼,根據(jù)返回碼在返回碼數(shù)據(jù)庫中查找與該返回碼對應(yīng)的處理屬性,并根據(jù)處理屬性處理返回碼。該過程中,服務(wù)器上的多路徑軟件可事先查詢并獲取存儲陣列支持的各返回碼與各返回碼的處理屬性的對應(yīng)關(guān)系并保存在服務(wù)器的返回碼數(shù)據(jù)庫中,實現(xiàn)當(dāng)存儲陣列升級時,無需聯(lián)動的對多路徑軟件進(jìn)行升級,避免暫停運(yùn)行多路徑軟件的服務(wù)器所承載的各業(yè)務(wù),甚至重啟服務(wù)器,從而保證業(yè)務(wù)的連續(xù)。另外,由于多路徑軟件與各個廠商的存儲陣列的兼容,能有效避免多路徑軟件不能識別部分返回碼或?qū)/o請求的處理方式等與存儲陣列預(yù)期的處理方式等不一致,造成的處理不當(dāng)?shù)膯栴}。
【專利附圖】
【附圖說明】
[0063]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0064]圖1為本發(fā)明數(shù)據(jù)處理方法實施例一的流程圖;
[0065]圖2為本發(fā)明數(shù)據(jù)處理方法實施例二的流程圖;
[0066]圖3為本發(fā)明數(shù)據(jù)處理方法實施例三的流程圖;
[0067]圖4為本發(fā)明數(shù)據(jù)處理方法實施例四的流程圖;
[0068]圖5為本發(fā)明數(shù)據(jù)處理方法實施例五的流程圖;
[0069]圖6為本發(fā)明數(shù)據(jù)處理裝置實施例一的結(jié)構(gòu)示意圖;
[0070]圖7為本發(fā)明數(shù)據(jù)處理裝置實施例二的結(jié)構(gòu)示意圖;
[0071]圖8為本發(fā)明數(shù)據(jù)處理裝置實施例三的結(jié)構(gòu)示意圖;
[0072]圖9為本發(fā)明數(shù)據(jù)處理裝置實施例四的結(jié)構(gòu)示意圖;[0073]圖10為本發(fā)明數(shù)據(jù)處理裝置實施例五的結(jié)構(gòu)示意圖;
[0074]圖11為本發(fā)明數(shù)據(jù)處理裝置實施例六的結(jié)構(gòu)示意圖;
[0075]圖12為本發(fā)明數(shù)據(jù)處理裝置實施例七的結(jié)構(gòu)示意圖。
【具體實施方式】
[0076]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0077]圖1為本發(fā)明數(shù)據(jù)處理方法實施例一的流程圖。本實施例的執(zhí)行主體為服務(wù)器,其上運(yùn)行有多路徑軟件,適用于存儲陣列無法正確處理服務(wù)器發(fā)送的I/o請求時,向服務(wù)器發(fā)送返回碼,由多路徑軟件對返回碼進(jìn)行處理的場景。具體的,本實施例包括如下步驟:
[0078]101、接收存儲陣列發(fā)送的返回碼。
[0079]存儲陣列對接收到的I/O請求無法正確處理時,針對該I/O請求,向服務(wù)器發(fā)送返回碼,相應(yīng)的,服務(wù)器上運(yùn)行的多路徑軟件接收該返回碼。
[0080]102、根據(jù)返回碼,在返回碼數(shù)據(jù)庫中查詢與返回碼對應(yīng)的處理屬性,返回碼數(shù)據(jù)庫中保存有存儲陣列支持的各返回碼與各返回碼的處理屬性的對應(yīng)關(guān)系。
[0081]服務(wù)器上事先保存有查詢到的存儲陣列所支持的所有返回碼與各返回碼的處理屬性的對應(yīng)關(guān)系的返回碼數(shù)據(jù)庫。本步驟中,在接受到返回碼后,運(yùn)行在服務(wù)器上的多路徑軟件根據(jù)返回碼,在返回碼數(shù)據(jù)庫中查找與該返回碼對應(yīng)的處理屬性,處理屬性指示返回碼的處理方式、重試類型等。
[0082]103、根據(jù)查詢到的處理屬性,處理返回碼。
[0083]在查找到與返回碼對應(yīng)的處理屬性后,多路徑軟件根據(jù)處理屬性對返回碼進(jìn)行處理。
[0084]例如,服務(wù)器的特定邏輯單元(Logical Unit, LU)的I/O請求訪問存儲陣列的某個控制器,而該控制器事先被設(shè)置為拒絕LU訪問且該控制器本身沒有故障。此時,存儲陣列向服務(wù)器發(fā)送返回碼。多路徑軟件根據(jù)返回碼,查詢返回碼數(shù)據(jù)庫后發(fā)現(xiàn)該返回碼對應(yīng)的處理屬性指示的處理方式為:切換控制器,即將該LU的I/O請求切換到存儲陣列的其他控制器,而不對其他I/O請求進(jìn)行控制器切換。
[0085]再如,存儲陣列中被訪問的控制器當(dāng)前任務(wù)繁忙,無法及時處理部分I/O請求,需要多路徑軟件持續(xù)重試I/O請求。此時,存儲陣列向服務(wù)器發(fā)送返回碼。多路徑軟件根據(jù)返回碼,查詢返回碼數(shù)據(jù)庫后發(fā)現(xiàn)該返回碼對應(yīng)的處理屬性指示的處理方式為原路徑重試,即對I/o請求增加適當(dāng)?shù)臅r間間隔,原路徑持續(xù)多次重試,從而減小控制器的壓力。
[0086]又如,服務(wù)器的某個LU被設(shè)置為拒絕所有I/O請求的訪問,此時,存儲陣列向服務(wù)器發(fā)送返回碼。多路徑軟件根據(jù)返回碼,查詢返回碼數(shù)據(jù)庫后發(fā)現(xiàn)該返回碼對應(yīng)的處理屬性指示的處理方式為:終止I/o請求,即多路徑軟件不把該I/o請求的訪問路徑標(biāo)記為損壞路徑,也不反復(fù)重試該I/o請求,而是直接讓該I/O請求失敗。
[0087]本發(fā)明實施例提供的數(shù)據(jù)處理方法,運(yùn)行在服務(wù)器上的多路徑軟件通過接受存儲陣列發(fā)送的返回碼,根據(jù)返回碼在返回碼數(shù)據(jù)庫中查找與該返回碼對應(yīng)的處理屬性,并根據(jù)處理屬性處理返回碼。該過程中,服務(wù)器上的多路徑軟件可事先查詢并獲取存儲陣列支持的各返回碼與各返回碼的處理屬性的對應(yīng)關(guān)系并保存在服務(wù)器的返回碼數(shù)據(jù)庫中,實現(xiàn)當(dāng)存儲陣列升級時,無需聯(lián)動的對多路徑軟件進(jìn)行升級,避免暫停運(yùn)行多路徑軟件的服務(wù)器所承載的各業(yè)務(wù),甚至重啟服務(wù)器,從而保證業(yè)務(wù)的連續(xù)。另外,由于多路徑軟件與各個廠商的存儲陣列的兼容,能有效避免多路徑軟件不能識別部分返回碼或?qū)/o請求的處理方式等與存儲陣列預(yù)期的處理方式等不一致,造成的處理不當(dāng)?shù)膯栴}。
[0088]進(jìn)一步的,上述實施例一中,接收存儲陣列發(fā)送的返回碼之前,若服務(wù)器上未保存返回碼數(shù)據(jù)庫或者保存的返回碼數(shù)據(jù)庫的版本比較低,此時,運(yùn)行在服務(wù)器上的多路徑軟件可向存儲陣列發(fā)送第一查詢命令,使得存儲陣列將當(dāng)前支持的各返回碼與各返回碼的處理屬性的對應(yīng)關(guān)系封裝成返回碼數(shù)據(jù)庫并向多路徑軟件發(fā)送,多路徑軟件接收存儲陣列發(fā)送的響應(yīng)命令,響應(yīng)命令攜帶存儲陣列當(dāng)前的返回碼數(shù)據(jù)庫。
[0089]進(jìn)一步的,上述實施例一中,接收存儲陣列發(fā)送的返回碼之前,若存儲陣列對自身支持的返回碼及其對應(yīng)的處理屬性進(jìn)行了更新或升級。此時,運(yùn)行在服務(wù)器上的多路徑軟件可向存儲陣列發(fā)送第二查詢命令,使得存儲陣列將升級后支持的各返回碼與各返回碼的處理屬性的對應(yīng)關(guān)系封裝成返回碼數(shù)據(jù)庫并向多路徑軟件發(fā)送響應(yīng)命令,多路徑軟件接收存儲陣列發(fā)送的響應(yīng)命令,響應(yīng)命令攜帶存儲陣列升級后的返回碼數(shù)據(jù)庫。
[0090]圖2為本發(fā)明數(shù)據(jù)處理方法實施例二的流程圖。本實施例的執(zhí)行主體為存儲陣列,適用于當(dāng)存儲陣列無法正確處理服務(wù)器發(fā)送的I/o請求時,向服務(wù)器發(fā)送返回碼,由多路徑軟件對返回碼進(jìn)行處理的場景。具體的,本實施例包括如下步驟:
[0091]201、向服務(wù)器發(fā)送返回碼,服務(wù)器上運(yùn)行多路徑軟件。
[0092]本步驟中,當(dāng)存儲陣列對接收到的I/O請求無法正確處理時,針對該I/O請求,向服務(wù)器發(fā)送返回碼。
[0093]202、接收服務(wù)器發(fā)送的輸入或輸出請求,輸入或輸出請求為多路勁軟件根據(jù)返回碼,在返回碼數(shù)據(jù)庫中查詢到與返回碼對應(yīng)的處理屬性并對返回碼進(jìn)行處理后發(fā)送的,返回碼數(shù)據(jù)庫中保存有存儲陣列支持的各返回碼與各返回碼的處理屬性的對應(yīng)關(guān)系。
[0094]本步驟中,在運(yùn)行在服務(wù)器上的多路徑軟件根據(jù)處理屬性對返回碼進(jìn)行處理后,得到下一步的動作指示,如原路徑發(fā)送I/o請求、切換路徑發(fā)送I/O請求等,重新向存儲陣列發(fā)送I/o請求,存儲陣列接收該重新發(fā)送的I/O請求。
[0095]需要說明的是,若多路徑軟件根據(jù)處理屬性對返回碼的處理結(jié)果為:終止I/O請求,則多路徑軟件直接讓返回碼對應(yīng)的I/o請求失敗,此時,存儲陣列不接收I/O請求。
[0096]本發(fā)明實施例提供的數(shù)據(jù)處理方法,存儲陣列在不能正確處理接收到的I/O請求時,向運(yùn)行在服務(wù)器上的多路徑軟件發(fā)送返回碼,使得多路徑軟件根據(jù)返回碼在返回碼數(shù)據(jù)庫中查找與該返回碼對應(yīng)的處理屬性,并根據(jù)處理屬性處理返回碼。該過程中,服務(wù)器上的多路徑軟件可事先查詢并獲取存儲陣列支持的各返回碼與各返回碼的處理屬性的對應(yīng)關(guān)系并保存在服務(wù)器的返回碼數(shù)據(jù)庫中,實現(xiàn)當(dāng)存儲陣列升級時,無需聯(lián)動的對多路徑軟件進(jìn)行升級,避免暫停運(yùn)行多路徑軟件的服務(wù)器所承載的各業(yè)務(wù),甚至重啟服務(wù)器,從而保證業(yè)務(wù)的連續(xù)。另外,由于多路徑軟件與各個廠商的存儲陣列的兼容,能夠有效避免多路徑軟件不能識別部分返回碼或?qū)/o請求的處理方式等與存儲陣列預(yù)期的處理方式等不一致,造成的處理不當(dāng)?shù)膯栴}。[0097]進(jìn)一步的,上述實施例二中,向多路徑軟件發(fā)送返回碼之前,存儲陣列接收多路徑軟件發(fā)送的第一查詢命令。將升級前支持的各返回碼與各返回碼的處理屬性的對應(yīng)關(guān)系封裝成所述返回碼數(shù)據(jù)庫,并向多路徑軟件發(fā)送響應(yīng)命令,響應(yīng)命令攜帶所述存儲陣列升級前的返回碼數(shù)據(jù)庫,以使多路徑軟件將存儲陣列當(dāng)前的返回碼數(shù)據(jù)庫保存在本地。
[0098]進(jìn)一步的,上述實施例二中,向多路徑軟件發(fā)送返回碼之前,存儲陣列可對自身支持的返回碼及其對應(yīng)的處理屬性進(jìn)行更新或升級,當(dāng)更新或升級完畢后,存儲陣列接收所述多路徑軟件發(fā)送的第二查詢命令,將升級后的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系封裝成所述返回碼數(shù)據(jù)庫,并向多路徑軟件發(fā)送響應(yīng)命令,響應(yīng)命令攜帶存儲陣列升級后的返回碼數(shù)據(jù)庫,從而將升級后的返回碼數(shù)據(jù)庫保存在本地。
[0099]圖3為本發(fā)明數(shù)據(jù)處理方法實施例三的流程圖。如圖3所示,服務(wù)器上運(yùn)行有多路徑軟件,初始化階段時,由于服務(wù)器上未保存存儲陣列支持的所有返回碼與各返回碼的處理屬性的對應(yīng)關(guān)系的返回碼數(shù)據(jù)庫,此時,多路徑軟件向存儲陣列下發(fā)第一查詢命令以查詢并獲取當(dāng)前的返回碼數(shù)據(jù)庫。具體的,本實施例包括如下步驟:
[0100]301、多路徑軟件向存儲陣列發(fā)送第一查詢命令。
[0101]具體的,第一查詢命令例如可以為特定查詢(Inquiry)命令,如:Inquiry VPDPage 0xC2,多路徑軟件向存儲陣列發(fā)送該Inquiry命令,以查詢存儲陣列當(dāng)前對不能正確處理的I/O請求的返回碼及其處理屬性的對應(yīng)關(guān)系。
[0102]302、存儲陣列將當(dāng)前支持的返回碼及其對應(yīng)關(guān)系封裝成返回碼數(shù)據(jù)庫。
[0103]本步驟中,存儲陣列在接收到Inquiry命令,即第一查詢命令后,將當(dāng)前支持的返回碼及其處理屬性的對應(yīng)關(guān)系封裝成返回碼數(shù)據(jù)庫,其版本(version)例如為Version=I。具體的,存儲陣列可對當(dāng)前支持的所有返回碼的處理屬性用幾個固定的信息來描述,將每個返回碼與與其對應(yīng)的處理屬性封裝成一條字段,將所有字段封裝成返回碼數(shù)據(jù)庫。表1為本發(fā)明數(shù)據(jù)處理方法所適用的返回碼數(shù)據(jù)庫的信息表。
[0104]表1
[0105]
【權(quán)利要求】
1.一種數(shù)據(jù)處理方法,其特征在于,包括: 接收存儲陣列發(fā)送的返回碼; 根據(jù)所述返回碼,在返回碼數(shù)據(jù)庫中查詢與所述返回碼對應(yīng)的處理屬性,所述返回碼數(shù)據(jù)庫中保存有所述存儲陣列支持的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系;根據(jù)查詢到的所述處理屬性,處理所述返回碼。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述接收存儲陣列發(fā)送的返回碼之前,包括: 向所述存儲陣列發(fā)送第一查詢命令,以使所述存儲陣列將當(dāng)前支持的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系封裝成所述返回碼數(shù)據(jù)庫; 接收所述存儲陣列發(fā)送的響應(yīng)命令,所述響應(yīng)命令攜帶所述存儲陣列當(dāng)前的返回碼數(shù)據(jù)庫。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述接收存儲陣列發(fā)送的返回碼之前,包括: 向所述存儲陣列發(fā)送第二查詢命令,以使得所述存儲陣列將升級后支持的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系封裝成所述返回碼數(shù)據(jù)庫; 接收所述存儲陣列發(fā)送的響應(yīng)命令,所述響應(yīng)命令攜帶所述存儲陣列升級后的返回碼數(shù)據(jù)庫。
4.根據(jù)權(quán)利要求1~3任一項所述的方法,其特征在于,所述處理屬性包括下述信息中的至少一種:處理方式、重試類型、重試次數(shù)、重試時間、重試間隔。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述處理方式包括: 原路徑重試、路徑切換、切換控制器、不處理直接透傳。
6.一種數(shù)據(jù)處理方法,其特征在于,包括: 向服務(wù)器發(fā)送返回碼,所述服務(wù)器上運(yùn)行多路徑軟件; 接收所述服務(wù)器發(fā)送的輸入或輸出請求,所述輸入或輸出請求為所述多路勁軟件根據(jù)所述返回碼,在返回碼數(shù)據(jù)庫中查詢到與所述返回碼對應(yīng)的處理屬性并對所述返回碼進(jìn)行處理后發(fā)送的,所述返回碼數(shù)據(jù)庫中保存有所述存儲陣列支持的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述向服務(wù)器發(fā)送返回碼之前,包括: 接收所述多路徑軟件發(fā)送的第一查詢命令; 將升級前支持的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系封裝成所述返回碼數(shù)據(jù)庫; 向所述多路徑軟件發(fā)送響應(yīng)命令,所述響應(yīng)命令攜帶所述存儲陣列當(dāng)前的返回碼數(shù)據(jù)庫。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述向服務(wù)器發(fā)送返回碼之前,包括: 接收所述多路徑軟件發(fā)送的第二查詢命令; 將升級后的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系封裝成所述返回碼數(shù)據(jù)庫; 向所述多路徑軟件發(fā)送響應(yīng)命令,所述響應(yīng)命令攜帶所述存儲陣列升級后的返回碼數(shù)據(jù)庫。
9.根據(jù)權(quán)利要求6~8任一項所述的方法,其特征在于,所述處理屬性包括下述信息中的至少一種:處理方式、重試類型、重試次數(shù)、重試時間、重試間隔。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述處理方式包括: 原路徑重試、路徑切換、切換控制器、不處理直接透傳。
11.一種數(shù)據(jù)處理裝置,其特征在于,包括: 接收模塊,用于接收存儲陣列發(fā)送的返回碼; 查詢模塊,用于根據(jù)所述接收模塊接收到的所述返回碼,在返回碼數(shù)據(jù)庫中查詢與所述返回碼對應(yīng)的處理屬性,所述返回碼數(shù)據(jù)庫中保存有所述存儲陣列支持的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系; 處理模塊,用于根據(jù)所述查詢模塊查詢到的所述處理屬性,處理所述返回碼。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述裝置還包括: 發(fā)送模塊,用于向所述存儲陣列發(fā)送第一查詢命令,以使所述存儲陣列將當(dāng)前支持的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系封裝成所述返回碼數(shù)據(jù)庫; 所述接收模塊,用于接收所述存儲陣列發(fā)送的響應(yīng)命令,所述響應(yīng)命令攜帶所述存儲陣列當(dāng)前的返回碼數(shù)據(jù)庫。
13.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述裝置還包括: 發(fā)送模塊,用于向所述存儲陣列發(fā)送第二查詢命令,以使得所述存儲陣列將升級后支持的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系封裝成所述返回碼數(shù)據(jù)庫;. 所述接收模塊,用于接收所述存儲陣列發(fā)送的響應(yīng)命令,所述響應(yīng)命令攜帶所述存儲陣列升級后的返回碼數(shù)據(jù)庫。
14.根據(jù)權(quán)利要求11~13任一項所述的裝置,其特征在于,所述處理屬性包括下述信息中的至少一種:處理方式、重試類型、重試次數(shù)、重試時間、重試間隔。
15.根據(jù)權(quán)利要求14所述的裝置,其特征在于,所述處理方式包括: 原路徑重試、路徑切換、切換控制器、不處理直接透傳。
16.一種數(shù)據(jù)處理裝置,其特征在于,包括: 發(fā)送模塊,用于向服務(wù)器發(fā)送返回碼,所述服務(wù)器上運(yùn)行多路徑軟件; 接收模塊,用于接收所述服務(wù)器發(fā)送的輸入或輸出請求,所述輸入或輸出請求為所述多路勁軟件根據(jù)所述返回碼,在返回碼數(shù)據(jù)庫中查詢到與所述返回碼對應(yīng)的處理屬性并對所述返回碼進(jìn)行處理后發(fā)送的,所述返回碼數(shù)據(jù)庫中保存有所述存儲陣列支持的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系。
17.根據(jù)權(quán)利要求16所述的裝置,其特征在于,所述裝置還包括:封裝模塊; 所述接收模塊,用于接收所述多路徑軟件發(fā)送的第一查詢命令; 所述封裝模塊,用于將升級前支持的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系封裝成所述返回碼數(shù)據(jù)庫; 所述發(fā)送模塊,用于向所述多路徑軟件發(fā)送響應(yīng)命令,所述響應(yīng)命令攜帶所述存儲陣列當(dāng)前的返回碼數(shù)據(jù)庫。
18.根據(jù)權(quán)利要求16所述的裝置,其特征在于,所述裝置還包括:封裝模塊; 所述接收模塊,用于接收所述多路徑軟件發(fā)送的第二查詢命令; 所述封裝模塊,用于將升級后的各返回碼與各所述返回碼的處理屬性的對應(yīng)關(guān)系封裝成所述返回碼數(shù)據(jù)庫; 所述發(fā)送模塊,用于向所述多路徑軟件發(fā)送響應(yīng)命令,所述響應(yīng)命令攜帶所述存儲陣列升級后的返回碼數(shù)據(jù)庫。
19.根據(jù)權(quán)利要求16~18任一項所述的裝置,其特征在于,所述處理屬性包括下述信息中的至少一種:處理方式、重試類型、重試次數(shù)、重試時間、重試間隔。
20.根據(jù)權(quán)利要求19所述的裝置,其特征在于,所述處理方式包括: 原路徑重試、路徑切換、切換控制器、不處理直接透傳。
21.一種服務(wù)器,其特征在于,包括如權(quán)利要求11~15任一項所述的裝置。
22.一種存儲陣列,其特征在于,包括如權(quán)利要求16~20任一項所述的裝置。
【文檔編號】G06F9/445GK103473019SQ201310412535
【公開日】2013年12月25日 申請日期:2013年9月11日 優(yōu)先權(quán)日:2013年9月11日
【發(fā)明者】張力 申請人:華為數(shù)字技術(shù)(蘇州)有限公司