本申請(qǐng)涉及網(wǎng)絡(luò)存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及一種存儲(chǔ)資源的訪問(wèn)方法及裝置。
背景技術(shù):
現(xiàn)今社會(huì),信息系統(tǒng)已成為社會(huì)生產(chǎn)能力以及企業(yè)正常運(yùn)作的重要支撐,數(shù)據(jù)是信息系統(tǒng)的基石,業(yè)務(wù)連續(xù)性是信息系統(tǒng)可用性的保證,越來(lái)越多的用戶選擇把數(shù)據(jù)保存在專門的存儲(chǔ)系統(tǒng)。
對(duì)于高端存儲(chǔ)用戶而言,通常選擇多控制器存儲(chǔ)系統(tǒng),多控制器存儲(chǔ)系統(tǒng)的控制器數(shù)目較多,控制器故障容忍度較高,且前端訪問(wèn)路徑以及訪問(wèn)手段較多,可滿足高端存儲(chǔ)用戶對(duì)存儲(chǔ)系統(tǒng)可靠性的要求。但是,目前多控制器存儲(chǔ)的實(shí)體LUN只有一個(gè)副本,數(shù)據(jù)可靠性不高。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本申請(qǐng)?zhí)峁┮环N存儲(chǔ)資源的訪問(wèn)方法及裝置,為用戶提供一個(gè)更高可靠性的多控存儲(chǔ)系統(tǒng)。
具體地,本申請(qǐng)是通過(guò)如下技術(shù)方案實(shí)現(xiàn)的:
本申請(qǐng)?zhí)峁┮环N存儲(chǔ)資源的訪問(wèn)方法,所述方法應(yīng)用于多控存儲(chǔ)系統(tǒng)中的存儲(chǔ)節(jié)點(diǎn)上,所述多控存儲(chǔ)系統(tǒng)包括多個(gè)存儲(chǔ)節(jié)點(diǎn),該方法包括:
存儲(chǔ)節(jié)點(diǎn)接收到應(yīng)用服務(wù)器發(fā)送的寫(xiě)IO請(qǐng)求時(shí),根據(jù)所述寫(xiě)IO請(qǐng)求中攜帶的LUN標(biāo)識(shí)信息從本地記錄的LUN關(guān)系表項(xiàng)中獲取與所述LUN標(biāo)識(shí)信息對(duì)應(yīng)的主副本LUN以及主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn),所述LUN關(guān)系表項(xiàng)用于記錄LUN標(biāo)識(shí)信息、副本LUN以及副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系,其中,所述副本LUN包括主副本LUN和從副本LUN,所述主副本LUN和所述從副本LUN的屬性相同,且歸屬于不同的存儲(chǔ)節(jié)點(diǎn);
當(dāng)所述主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)是本存儲(chǔ)節(jié)點(diǎn)時(shí),將所述寫(xiě)IO請(qǐng)求提交本存儲(chǔ)節(jié)點(diǎn)上的主副本LUN處理;并向從副本LUN同步寫(xiě)IO數(shù)據(jù);在完成寫(xiě)IO請(qǐng)求處理以及完成寫(xiě)IO數(shù)據(jù)同步后,將處理結(jié)果返回所述應(yīng)用服務(wù)器;
當(dāng)所述主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)不是本存儲(chǔ)節(jié)點(diǎn)時(shí),向所述主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)轉(zhuǎn)發(fā)所述寫(xiě)IO請(qǐng)求,以使所述主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)將所述寫(xiě)IO請(qǐng)求提交自身節(jié)點(diǎn)的主副本LUN處理,并向從副本LUN同步寫(xiě)IO數(shù)據(jù);接收所述主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)在完成寫(xiě)IO請(qǐng)求處理以及完成寫(xiě)IO數(shù)據(jù)同步后發(fā)送的處理結(jié)果,將所述處理結(jié)果返回所述應(yīng)用服務(wù)器。
進(jìn)一步地,所述方法還包括:
存儲(chǔ)節(jié)點(diǎn)接收到應(yīng)用服務(wù)器發(fā)送的讀IO請(qǐng)求時(shí),根據(jù)所述讀IO請(qǐng)求中攜帶的LUN標(biāo)識(shí)信息從本地記錄的LUN關(guān)系表項(xiàng)中獲取與所述LUN標(biāo)識(shí)信息對(duì)應(yīng)的副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn);
當(dāng)所述副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)中包含本存儲(chǔ)節(jié)點(diǎn)時(shí),將所述讀IO請(qǐng)求提交本存儲(chǔ)節(jié)點(diǎn)上的副本LUN處理,并在讀IO請(qǐng)求處理完成后,將處理結(jié)果返回所述應(yīng)用服務(wù)器;
當(dāng)所述副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)中不包含本存儲(chǔ)節(jié)點(diǎn)時(shí),從副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)中選擇一個(gè)副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)轉(zhuǎn)發(fā)所述讀IO請(qǐng)求,以使選擇的副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)將所述讀IO請(qǐng)求提交自身節(jié)點(diǎn)上的副本LUN處理;接收處理所述讀IO請(qǐng)求的副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)發(fā)送的處理結(jié)果,將所述處理結(jié)果返回所述應(yīng)用服務(wù)器。
進(jìn)一步地,所述方法還包括:
當(dāng)主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)故障,且從副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)是本存儲(chǔ)節(jié)點(diǎn)時(shí),獲取仲裁設(shè)備記錄的差異標(biāo)識(shí),所述差異標(biāo)識(shí)用于標(biāo)識(shí)所述主副本LUN和所述從副本LUN的數(shù)據(jù)是否一致;
當(dāng)所述差異標(biāo)識(shí)為數(shù)據(jù)一致時(shí),將本存儲(chǔ)節(jié)點(diǎn)上的從副本LUN確定為主副本LUN,并通告給其它存儲(chǔ)節(jié)點(diǎn),以使其它存儲(chǔ)節(jié)點(diǎn)重新確定主副本LUN。
進(jìn)一步地,所述方法還包括:
本存儲(chǔ)節(jié)點(diǎn)記錄差異位圖,所述差異位圖用于記錄主副本LUN中新增數(shù)據(jù)的位置,并在出現(xiàn)新增數(shù)據(jù)時(shí),通知所述仲裁設(shè)備更新所述差異標(biāo)識(shí)為數(shù)據(jù)不一致;
當(dāng)故障的主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)恢復(fù)正常時(shí),將恢復(fù)正常的存儲(chǔ)節(jié)點(diǎn)的主副本LUN確定為從副本LUN,并根據(jù)記錄的差異位圖向該從副本LUN同步本存儲(chǔ)節(jié)點(diǎn)上主副本LUN的新增數(shù)據(jù),并在完成新增數(shù)據(jù)同步后,通知仲裁設(shè)備更新差異標(biāo)識(shí)為數(shù)據(jù)一致。
進(jìn)一步地,所述方法還包括:
當(dāng)從副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)故障,且主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)是本存儲(chǔ)節(jié)點(diǎn)時(shí),記錄差異位圖,所述差異位圖用于記錄主副本LUN中新增數(shù)據(jù)的位置,并在出現(xiàn)新增數(shù)據(jù)時(shí),通知所述仲裁設(shè)備更新所述差異標(biāo)識(shí)為數(shù)據(jù)不一致;
當(dāng)故障的從副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)恢復(fù)正常時(shí),根據(jù)記錄的差異位圖向該從副本LUN同步主副本LUN的新增數(shù)據(jù),并在完成新增數(shù)據(jù)同步后,通知仲裁設(shè)備更新差異標(biāo)識(shí)為數(shù)據(jù)一致。
本申請(qǐng)還提供一種存儲(chǔ)資源的訪問(wèn)裝置,所述裝置應(yīng)用于多控存儲(chǔ)系統(tǒng)中的存儲(chǔ)節(jié)點(diǎn)上,所述多控存儲(chǔ)系統(tǒng)包括多個(gè)存儲(chǔ)節(jié)點(diǎn),該裝置包括:
獲取單元,用于存儲(chǔ)節(jié)點(diǎn)接收到應(yīng)用服務(wù)器發(fā)送的寫(xiě)IO請(qǐng)求時(shí),根據(jù)所述寫(xiě)IO請(qǐng)求中攜帶的LUN標(biāo)識(shí)信息從本地記錄的LUN關(guān)系表項(xiàng)中獲取與所述LUN標(biāo)識(shí)信息對(duì)應(yīng)的主副本LUN以及主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn),所述LUN關(guān)系表項(xiàng)用于記錄LUN標(biāo)識(shí)信息、副本LUN以及副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系,其中,所述副本LUN包括主副本LUN和從副本LUN,所述主副本LUN和所述從副本LUN的屬性相同,且歸屬于不同的存儲(chǔ)節(jié)點(diǎn);
處理單元,用于當(dāng)所述主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)是本存儲(chǔ)節(jié)點(diǎn)時(shí),將所述寫(xiě)IO請(qǐng)求提交本存儲(chǔ)節(jié)點(diǎn)上的主副本LUN處理;并向從副本LUN同步寫(xiě)IO數(shù)據(jù);在完成寫(xiě)IO請(qǐng)求處理以及完成寫(xiě)IO數(shù)據(jù)同步后,將處理結(jié)果返回所述應(yīng)用服務(wù)器;當(dāng)所述主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)不是本存儲(chǔ)節(jié)點(diǎn)時(shí),向所述主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)轉(zhuǎn)發(fā)所述寫(xiě)IO請(qǐng)求,以使所述主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)將所述寫(xiě)IO請(qǐng)求提交自身節(jié)點(diǎn)的主副本LUN處理,并向從副本LUN同步寫(xiě)IO數(shù)據(jù);接收所述主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)在完成寫(xiě)IO請(qǐng)求處理以及完成寫(xiě)IO數(shù)據(jù)同步后發(fā)送的處理結(jié)果,將所述處理結(jié)果返回所述應(yīng)用服務(wù)器。
進(jìn)一步地,
所述獲取單元,還用于存儲(chǔ)節(jié)點(diǎn)接收到應(yīng)用服務(wù)器發(fā)送的讀IO請(qǐng)求時(shí),根據(jù)所述讀IO請(qǐng)求中攜帶的LUN標(biāo)識(shí)信息從本地記錄的LUN關(guān)系表項(xiàng)中獲取與所述LUN標(biāo)識(shí)信息對(duì)應(yīng)的副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn);
所述處理單元,還用于當(dāng)所述副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)中包含本存儲(chǔ)節(jié)點(diǎn)時(shí),將所述讀IO請(qǐng)求提交本存儲(chǔ)節(jié)點(diǎn)上的副本LUN處理,并在讀IO請(qǐng)求處理完成后,將處理結(jié)果返回所述應(yīng)用服務(wù)器;當(dāng)所述副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)中不包含本存儲(chǔ)節(jié)點(diǎn)時(shí),從副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)中選擇一個(gè)副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)轉(zhuǎn)發(fā)所述讀IO請(qǐng)求,以使選擇的副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)將所述讀IO請(qǐng)求提交自身節(jié)點(diǎn)上的副本LUN處理;接收處理所述讀IO請(qǐng)求的副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)發(fā)送的處理結(jié)果,將所述處理結(jié)果返回所述應(yīng)用服務(wù)器。
進(jìn)一步地,所述裝置還包括:
故障單元,用于當(dāng)主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)故障,且從副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)是本存儲(chǔ)節(jié)點(diǎn)時(shí),獲取仲裁設(shè)備記錄的差異標(biāo)識(shí),所述差異標(biāo)識(shí)用于標(biāo)識(shí)所述主副本LUN和所述從副本LUN的數(shù)據(jù)是否一致;當(dāng)所述差異標(biāo)識(shí)為數(shù)據(jù)一致時(shí),將本存儲(chǔ)節(jié)點(diǎn)上的從副本LUN確定為主副本LUN,并通告給其它存儲(chǔ)節(jié)點(diǎn),以使其它存儲(chǔ)節(jié)點(diǎn)重新確定主副本LUN。
進(jìn)一步地,
所述故障單元,還用于本存儲(chǔ)節(jié)點(diǎn)記錄差異位圖,所述差異位圖用于記錄主副本LUN中新增數(shù)據(jù)的位置,并在出現(xiàn)新增數(shù)據(jù)時(shí),通知所述仲裁設(shè)備更新所述差異標(biāo)識(shí)為數(shù)據(jù)不一致;當(dāng)故障的主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)恢復(fù)正常時(shí),將恢復(fù)正常的存儲(chǔ)節(jié)點(diǎn)的主副本LUN確定為從副本LUN,并根據(jù)記錄的差異位圖向該從副本LUN同步本存儲(chǔ)節(jié)點(diǎn)上主副本LUN的新增數(shù)據(jù),并在完成新增數(shù)據(jù)同步后,通知仲裁設(shè)備更新差異標(biāo)識(shí)為數(shù)據(jù)一致。
進(jìn)一步地,所述裝置還包括:
故障單元,用于當(dāng)從副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)故障,且主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)是本存儲(chǔ)節(jié)點(diǎn)時(shí),記錄差異位圖,所述差異位圖用于記錄主副本LUN中新增數(shù)據(jù)的位置,并在出現(xiàn)新增數(shù)據(jù)時(shí),通知所述仲裁設(shè)備更新所述差異標(biāo)識(shí)為數(shù)據(jù)不一致;當(dāng)故障的從副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)恢復(fù)正常時(shí),根據(jù)記錄的差異位圖向該從副本LUN同步主副本LUN的新增數(shù)據(jù),并在完成新增數(shù)據(jù)同步后,通知仲裁設(shè)備更新差異標(biāo)識(shí)為數(shù)據(jù)一致。
由以上描述可以看出,本申請(qǐng)為用戶提供了兩個(gè)副本LUN(主副本LUN和從副本LUN,即兩個(gè)實(shí)體LUN),這兩個(gè)副本LUN的屬性相同、數(shù)據(jù)同步、且歸屬于不同的存儲(chǔ)節(jié)點(diǎn),因此,可起到數(shù)據(jù)備份的作用,當(dāng)一個(gè)存儲(chǔ)節(jié)點(diǎn)故障時(shí),另一個(gè)存儲(chǔ)節(jié)點(diǎn)上的副本LUN可正常為用戶提供存儲(chǔ)服務(wù),保證用戶業(yè)務(wù)不中斷,提高存儲(chǔ)系統(tǒng)的可靠性。
附圖說(shuō)明
圖1是本申請(qǐng)一示例性實(shí)施例示出的多控存儲(chǔ)系統(tǒng)示意圖;
圖2是本申請(qǐng)一示例性實(shí)施例示出的一種存儲(chǔ)資源的訪問(wèn)方法流程圖;
圖3是本申請(qǐng)一示例性實(shí)施例示出的創(chuàng)建代理LUN后的多控存儲(chǔ)系統(tǒng)示意圖;
圖4是本申請(qǐng)一示例性實(shí)施例示出的一種存儲(chǔ)資源的訪問(wèn)裝置所在設(shè)備的基礎(chǔ)硬件結(jié)構(gòu)示意圖;
圖5是本申請(qǐng)一示例性實(shí)施例示出的一種存儲(chǔ)資源的訪問(wèn)裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說(shuō)明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本申請(qǐng)相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書(shū)中所詳述的、本申請(qǐng)的一些方面相一致的裝置和方法的例子。
在本申請(qǐng)使用的術(shù)語(yǔ)是僅僅出于描述特定實(shí)施例的目的,而非旨在限制本申請(qǐng)。在本申請(qǐng)和所附權(quán)利要求書(shū)中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應(yīng)當(dāng)理解,本文中使用的術(shù)語(yǔ)“和/或”是指并包含一個(gè)或多個(gè)相關(guān)聯(lián)的列出項(xiàng)目的任何或所有可能組合。
應(yīng)當(dāng)理解,盡管在本申請(qǐng)可能采用術(shù)語(yǔ)第一、第二、第三等來(lái)描述各種信息,但這些信息不應(yīng)限于這些術(shù)語(yǔ)。這些術(shù)語(yǔ)僅用來(lái)將同一類型的信息彼此區(qū)分開(kāi)。例如,在不脫離本申請(qǐng)范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語(yǔ)境,如在此所使用的詞語(yǔ)“如果”可以被解釋成為“在……時(shí)”或“當(dāng)……時(shí)”或“響應(yīng)于確定”。
本申請(qǐng)實(shí)施例提出一種存儲(chǔ)資源的訪問(wèn)方法,應(yīng)用于多控存儲(chǔ)系統(tǒng)中的存儲(chǔ)節(jié)點(diǎn)(即存儲(chǔ)設(shè)備)上,該方法為用戶提供了兩個(gè)副本LUN(主副本LUN和從副本LUN,即兩個(gè)實(shí)體LUN),這兩個(gè)副本LUN的屬性相同、數(shù)據(jù)同步、且歸屬于不同的存儲(chǔ)節(jié)點(diǎn),因此,當(dāng)一個(gè)存儲(chǔ)節(jié)點(diǎn)故障時(shí),另一個(gè)存儲(chǔ)節(jié)點(diǎn)上的副本LUN可正常為用戶提供存儲(chǔ)服務(wù),提高存儲(chǔ)系統(tǒng)的可靠性。
參見(jiàn)圖1,為本申請(qǐng)多控存儲(chǔ)系統(tǒng)示意圖。該多控存儲(chǔ)系統(tǒng)包括3個(gè)存儲(chǔ)節(jié)點(diǎn),分別為NodeA、NodeB以及NodeC,每個(gè)存儲(chǔ)節(jié)點(diǎn)包含2個(gè)控制器(SP1和SP2)。其中,NodeA上創(chuàng)建LUN0,NodeB上創(chuàng)建LUN1,LUN0和LUN1均為實(shí)體LUN,且屬性相同(例如,存儲(chǔ)空間大小相同)。本申請(qǐng)實(shí)施例將LUN0和LUN1作為同一用戶的兩個(gè)副本LUN。各存儲(chǔ)節(jié)點(diǎn)通過(guò)私有網(wǎng)絡(luò)互聯(lián),例如,以太網(wǎng)、FC(Fibre Channel,光纖通道)、PCI-E(Peripheral Component Interconnection-Express,快速外設(shè)組件互連標(biāo)準(zhǔn))等,實(shí)現(xiàn)存儲(chǔ)節(jié)點(diǎn)間的數(shù)據(jù)交互。應(yīng)用服務(wù)器ServerA上運(yùn)行多路徑軟件,可通過(guò)多條訪問(wèn)路徑(A1、A2、B1、B2、C1、C2)訪問(wèn)用戶的實(shí)體LUN(LUN0或LUN1)。
參見(jiàn)圖2,為本申請(qǐng)存儲(chǔ)資源的訪問(wèn)方法的一個(gè)實(shí)施例流程圖,該實(shí)施例對(duì)存儲(chǔ)資源的訪問(wèn)過(guò)程進(jìn)行描述。
步驟201,存儲(chǔ)節(jié)點(diǎn)接收到應(yīng)用服務(wù)器發(fā)送的寫(xiě)IO請(qǐng)求時(shí),根據(jù)所述寫(xiě)IO請(qǐng)求中攜帶的LUN標(biāo)識(shí)信息從本地記錄的LUN關(guān)系表項(xiàng)中獲取與所述LUN標(biāo)識(shí)信息對(duì)應(yīng)的主副本LUN以及主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)。
在應(yīng)用服務(wù)器訪問(wèn)多控存儲(chǔ)系統(tǒng)之前,首先完成對(duì)多控存儲(chǔ)系統(tǒng)的資源配置工作。具體為,管理員通過(guò)管理設(shè)備登錄多控存儲(chǔ)系統(tǒng)的管理界面,為用戶創(chuàng)建兩個(gè)實(shí)體LUN,以下稱為副本LUN,其中一個(gè)為主副本LUN,另一個(gè)為從副本LUN,主副本LUN和從副本LUN的屬性相同,但歸屬于不同的存儲(chǔ)節(jié)點(diǎn)。管理設(shè)備向多控存儲(chǔ)系統(tǒng)中的存儲(chǔ)節(jié)點(diǎn)下發(fā)配置命令,在配置命令中攜帶為用戶分配的副本LUN信息以及路徑信息。存儲(chǔ)節(jié)點(diǎn)接收到配置命令后,在本存儲(chǔ)節(jié)點(diǎn)上創(chuàng)建與副本LUN對(duì)應(yīng)的代理LUN,該代理LUN屬性與副本LUN屬性相同,并生成對(duì)應(yīng)的LUN關(guān)系表項(xiàng),用于記錄代理LUN與副本LUN以及副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系。參見(jiàn)表1,為L(zhǎng)UN關(guān)系表項(xiàng)示例。
表1
表1為存儲(chǔ)節(jié)點(diǎn)NodeA上的LUN關(guān)系表項(xiàng),該表項(xiàng)表明NodeA上創(chuàng)建了一個(gè)代理LUN(VA-LUN0),該VA-LUN0為配置在NodeA上的指向NodeA的副本LUN0和NodeB的副本LUN1的代理LUN。然后,在存儲(chǔ)節(jié)點(diǎn)上將代理LUN分配給應(yīng)用服務(wù)器,即配置應(yīng)用服務(wù)器可以訪問(wèn)代理LUN的路徑。
基于多控存儲(chǔ)系統(tǒng)的特點(diǎn),管理員可在不同存儲(chǔ)節(jié)點(diǎn)上創(chuàng)建與用戶的副本LUN對(duì)應(yīng)的代理LUN,以增加訪問(wèn)副本LUN的路徑,提高存儲(chǔ)系統(tǒng)的可靠性。當(dāng)然,這不是本申請(qǐng)的重點(diǎn),在此不再贅述。
在完成上述多控存儲(chǔ)系統(tǒng)的資源配置工作后,登錄應(yīng)用服務(wù)器,建立應(yīng)用服務(wù)器到多控存儲(chǔ)系統(tǒng)中各存儲(chǔ)節(jié)點(diǎn)的連接,以便應(yīng)用服務(wù)器通過(guò)多路徑軟件將不同存儲(chǔ)節(jié)點(diǎn)上屬性相同的代理LUN識(shí)別為一個(gè)副本LUN。
當(dāng)應(yīng)用服務(wù)器訪問(wèn)副本LUN時(shí),由多路徑軟件根據(jù)網(wǎng)絡(luò)情況、路徑狀態(tài)等選擇路徑下發(fā)IO請(qǐng)求,并在IO請(qǐng)求中攜帶代理LUN的LUN標(biāo)識(shí)信息。位于該路徑上的存儲(chǔ)節(jié)點(diǎn)根據(jù)應(yīng)用服務(wù)器的IO請(qǐng)求執(zhí)行后續(xù)處理。
本步驟中,存儲(chǔ)節(jié)點(diǎn)接收應(yīng)用服務(wù)器發(fā)送的寫(xiě)IO請(qǐng)求,并根據(jù)寫(xiě)IO請(qǐng)求中攜帶的LUN標(biāo)識(shí)信息從本地記錄的LUN關(guān)系表項(xiàng)中獲取與LUN標(biāo)識(shí)信息對(duì)應(yīng)的主副本LUN以及主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)。例如,假設(shè)表1中LUN0為主副本LUN,LUN1為從副本LUN,則通過(guò)本步驟可獲知主副本LUN為L(zhǎng)UN0,該主副本LUN位于存儲(chǔ)節(jié)點(diǎn)NodeA上。
步驟202,當(dāng)所述主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)是本存儲(chǔ)節(jié)點(diǎn)時(shí),將所述寫(xiě)IO請(qǐng)求提交本存儲(chǔ)節(jié)點(diǎn)上的主副本LUN處理;并向從副本LUN同步寫(xiě)IO數(shù)據(jù);在完成寫(xiě)IO請(qǐng)求處理以及完成寫(xiě)IO數(shù)據(jù)同步后,將處理結(jié)果返回所述應(yīng)用服務(wù)器。
步驟203,當(dāng)所述主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)不是本存儲(chǔ)節(jié)點(diǎn)時(shí),向所述主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)轉(zhuǎn)發(fā)所述寫(xiě)IO請(qǐng)求,以使所述主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)將所述寫(xiě)IO請(qǐng)求提交自身節(jié)點(diǎn)的主副本LUN處理,并向從副本LUN同步寫(xiě)IO數(shù)據(jù);接收所述主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)在完成寫(xiě)IO請(qǐng)求處理以及完成寫(xiě)IO數(shù)據(jù)同步后發(fā)送的處理結(jié)果,將所述處理結(jié)果返回所述應(yīng)用服務(wù)器。
從步驟202和步驟203可以看出,應(yīng)用服務(wù)器發(fā)送的寫(xiě)IO請(qǐng)求始終由主副本LUN處理,并向從副本LUN同步寫(xiě)IO數(shù)據(jù),以保證主副本LUN和從副本LUN的數(shù)據(jù)一致。同時(shí),主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)將處理結(jié)果沿IO請(qǐng)求路徑返回給應(yīng)用服務(wù)器,完成整個(gè)寫(xiě)IO請(qǐng)求的處理過(guò)程。
當(dāng)存儲(chǔ)節(jié)點(diǎn)接收到應(yīng)用服務(wù)器發(fā)送的讀IO請(qǐng)求時(shí),根據(jù)讀IO請(qǐng)求中攜帶的LUN標(biāo)識(shí)信息從本地記錄的LUN關(guān)系表項(xiàng)中獲取與LUN標(biāo)識(shí)信息對(duì)應(yīng)的副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)。例如,當(dāng)讀IO請(qǐng)求中攜帶的LUN標(biāo)識(shí)信息為VA-LUN0時(shí),查詢表1可知,與VA-LUN0對(duì)應(yīng)的副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)為NodeA和NodeB。
當(dāng)獲取的副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)中包含本存儲(chǔ)節(jié)點(diǎn)時(shí),將讀IO請(qǐng)求提交本存儲(chǔ)節(jié)點(diǎn)上的副本LUN處理,并在讀IO請(qǐng)求處理完成后,將處理結(jié)果返回應(yīng)用服務(wù)器。
當(dāng)副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)中不包含本存儲(chǔ)節(jié)點(diǎn)時(shí),從副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)中選擇一個(gè)副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)轉(zhuǎn)發(fā)讀IO請(qǐng)求,以使選擇的副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)將讀IO請(qǐng)求提交自身節(jié)點(diǎn)上的副本LUN處理;接收處理該讀IO請(qǐng)求的副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)發(fā)送的處理結(jié)果,將處理結(jié)果返回應(yīng)用服務(wù)器。
從上述讀IO請(qǐng)求的處理過(guò)程可以看出,當(dāng)接收讀IO請(qǐng)求的存儲(chǔ)節(jié)點(diǎn)上有匹配的副本LUN時(shí),無(wú)論是主副本LUN還是從副本LUN,都由該存儲(chǔ)節(jié)點(diǎn)的副本LUN處理,節(jié)約向其它存儲(chǔ)節(jié)點(diǎn)轉(zhuǎn)發(fā)的帶寬消耗;當(dāng)接收讀IO請(qǐng)求的存儲(chǔ)節(jié)點(diǎn)上沒(méi)有匹配的副本LUN時(shí),可在主副本LUN和從副本LUN中任意選擇一個(gè)副本LUN處理讀IO請(qǐng)求。處理結(jié)果沿讀IO請(qǐng)求的路徑返回。
至此,完成雙副本LUN多控存儲(chǔ)系統(tǒng)的IO請(qǐng)求處理過(guò)程。
當(dāng)多控存儲(chǔ)系統(tǒng)中副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)故障時(shí),其處理過(guò)程如下:
當(dāng)主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)故障,且從副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)是本存儲(chǔ)節(jié)點(diǎn)時(shí),獲取仲裁設(shè)備(多控存儲(chǔ)系統(tǒng)中每一個(gè)存儲(chǔ)節(jié)點(diǎn)均與仲裁設(shè)備連接)記錄的差異標(biāo)識(shí),該差異標(biāo)識(shí)用于標(biāo)識(shí)主副本LUN和從副本LUN的數(shù)據(jù)是否一致。
當(dāng)差異標(biāo)識(shí)為數(shù)據(jù)不一致時(shí),從副本LUN無(wú)法代替主副本LUN提供存儲(chǔ)服務(wù),存儲(chǔ)業(yè)務(wù)中斷。
當(dāng)差異標(biāo)識(shí)為數(shù)據(jù)一致時(shí),將本存儲(chǔ)節(jié)點(diǎn)上的從副本LUN確定為主副本LUN,并通告給其它存儲(chǔ)節(jié)點(diǎn),以使其它存儲(chǔ)節(jié)點(diǎn)重新確定主副本LUN。同時(shí),本存儲(chǔ)節(jié)點(diǎn)(重新確定的主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn))開(kāi)始記錄差異位圖,該差異位圖用于記錄主副本LUN中新增數(shù)據(jù)的位置。且在出現(xiàn)新增數(shù)據(jù)時(shí),通知仲裁設(shè)備更新差異標(biāo)識(shí)為數(shù)據(jù)不一致。當(dāng)發(fā)生故障的主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)恢復(fù)正常時(shí),將恢復(fù)正常的存儲(chǔ)節(jié)點(diǎn)的主副本LUN確定為從副本LUN,并根據(jù)記錄的差異位圖向該從副本LUN同步本存儲(chǔ)節(jié)點(diǎn)上主副本LUN的新增數(shù)據(jù),以保證故障恢復(fù)后的數(shù)據(jù)同步,并在完成新增數(shù)據(jù)同步后,通知仲裁設(shè)備更新差異標(biāo)識(shí)為數(shù)據(jù)一致。
當(dāng)從副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)故障,且主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)是本存儲(chǔ)節(jié)點(diǎn)時(shí),記錄差異位圖,并在出現(xiàn)新增數(shù)據(jù)時(shí),通知仲裁設(shè)備更新差異標(biāo)識(shí)為數(shù)據(jù)不一致。當(dāng)故障的從副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)恢復(fù)正常時(shí),根據(jù)記錄的差異位圖向該從副本LUN同步主副本LUN的新增數(shù)據(jù),以保證數(shù)據(jù)一致,并在完成新增數(shù)據(jù)同步后,通知仲裁設(shè)備更新差異標(biāo)識(shí)為數(shù)據(jù)一致。
從上述描述可以看出,某一副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)故障,可由另一副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)繼續(xù)處理業(yè)務(wù),提高了數(shù)據(jù)存儲(chǔ)的可靠性。
至此,完成故障處理過(guò)程。
此外,當(dāng)應(yīng)用服務(wù)器不再需要通過(guò)某個(gè)存儲(chǔ)節(jié)點(diǎn)訪問(wèn)副本LUN時(shí),可以在該存儲(chǔ)節(jié)點(diǎn)上把副本LUN對(duì)應(yīng)的代理LUN從應(yīng)用服務(wù)器取消分配,刪除對(duì)應(yīng)的LUN關(guān)系表項(xiàng),然后刪除代理LUN,從而降低系統(tǒng)資源的消耗。
從上述描述可以看出,本申請(qǐng)為用戶提供了雙副本LUN,該雙副本LUN歸屬于不同的存儲(chǔ)節(jié)點(diǎn),因此,可起到數(shù)據(jù)備份的作用,當(dāng)一個(gè)存儲(chǔ)節(jié)點(diǎn)故障時(shí),另一個(gè)存儲(chǔ)節(jié)點(diǎn)上的副本LUN可正常為用戶提供存儲(chǔ)服務(wù),保證用戶業(yè)務(wù)不中斷,提高存儲(chǔ)系統(tǒng)的可靠性。
現(xiàn)仍以圖1為例,詳細(xì)介紹存儲(chǔ)資源訪問(wèn)過(guò)程。
假設(shè),用戶需求為創(chuàng)建兩個(gè)副體LUN LUN0和LUN1,LUN0位于NodeA上,容量為100GB;LUN1位于NodeB上,容量為100GB,其中,LUN0為主副本LUN,LUN1為從副本LUN,ServerA通過(guò)NodeA、NodeB、NodeC訪問(wèn)副本LUN(LUN0/LUN1)。
首先,配置資源。在NodeA的RAID(Redundant Array of Independent Disks,獨(dú)立冗余磁盤陣列)上創(chuàng)建LUN0,容量為100GB;在NodeB的RAID上創(chuàng)建LUN1,容量為100GB。
然后,把資源分配給應(yīng)用服務(wù)器。管理員通過(guò)管理設(shè)備向NodeA、NodeB、NodeC下發(fā)配置命令。以NodeA為例,NodeA接收管理設(shè)備下發(fā)的配置命令,該配置命令中攜帶副本LUN信息(NodeA的LUN0、NodeB的LUN1)以及路徑信息;NodeA接收配置命令,創(chuàng)建與NodeA的LUN0、NodeB的LUN1對(duì)應(yīng)的代理LUN VA-LUN0,繼承LUN0和LUN1的屬性,NodeA在本地添加LUN關(guān)系表項(xiàng),參見(jiàn)表1。然后,NodeA從配置命令中獲取路徑信息,把VA-LUN0分配給應(yīng)用服務(wù)器,路徑關(guān)聯(lián)關(guān)系參見(jiàn)表2。
表2
從表2可以看出,在NodeA上為VA-LUN0關(guān)聯(lián)了兩條路徑:ServerA→NodeA的SP1→VA-LUN0、ServerA→NodeA的SP2→VA-LUN0,即通過(guò)圖1所示的路徑A1和A2可以訪問(wèn)VA-LUN0,進(jìn)而訪問(wèn)NodeA的LUN0或NodeB的LUN1。
同理,根據(jù)用戶需求完成所有存儲(chǔ)節(jié)點(diǎn)上代理LUN的創(chuàng)建和分配,參見(jiàn)圖3。配置完成后,各存儲(chǔ)節(jié)點(diǎn)上的LUN關(guān)系表項(xiàng)以及路徑關(guān)聯(lián)關(guān)系分別為:
表3
表4
表3為NodeB上的LUN關(guān)系表項(xiàng);表4為NodeB上的路徑關(guān)聯(lián)關(guān)系。
表5
表6
表5為NodeC上的LUN關(guān)系表項(xiàng);表6為NodeC上的路徑關(guān)聯(lián)關(guān)系。
管理員登錄ServerA,建立ServerA到各存儲(chǔ)節(jié)點(diǎn)上控制器的連接,則ServerA可通過(guò)多路徑軟件選擇任一路徑訪問(wèn)分配給用戶的副本LUN。
在完成上述配置后,ServerA可以訪問(wèn)副本LUN,以下舉幾個(gè)具體實(shí)施例說(shuō)明存儲(chǔ)資源的訪問(wèn)過(guò)程。
實(shí)施例1(以NodeA為例):
假設(shè),ServerA上的多路徑軟件選擇路徑A1下發(fā)寫(xiě)IO請(qǐng)求,在寫(xiě)IO請(qǐng)求中攜帶LUN標(biāo)識(shí)信息VA-LUN0,存儲(chǔ)節(jié)點(diǎn)NodeA接收到該寫(xiě)IO請(qǐng)求后,查詢表1,獲取VA-LUN0對(duì)應(yīng)的主副本LUN為L(zhǎng)UN0,LUN0的歸屬存儲(chǔ)節(jié)點(diǎn)為NodeA,即,主副本LUN位于自身存儲(chǔ)節(jié)點(diǎn)上,因此,NodeA提交自身節(jié)點(diǎn)上的LUN0處理寫(xiě)IO請(qǐng)求。在寫(xiě)IO請(qǐng)求處理完后,NodeA通過(guò)私有網(wǎng)絡(luò)將寫(xiě)IO數(shù)據(jù)發(fā)送給NodeB,向NodeB上的從副本LUN LUN1同步寫(xiě)IO數(shù)據(jù)。同時(shí),將處理結(jié)果沿A1路徑返回給ServerA。
假設(shè),ServerA上的多路徑軟件選擇路徑A1下發(fā)讀IO請(qǐng)求,在讀IO請(qǐng)求中攜帶LUN標(biāo)識(shí)信息VA-LUN0,存儲(chǔ)節(jié)點(diǎn)NodeA接收到該寫(xiě)IO請(qǐng)求后,查詢表1,獲取VA-LUN0對(duì)應(yīng)的副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)為NodeA和NodeB,即在獲取的歸屬存儲(chǔ)節(jié)點(diǎn)中包含當(dāng)前接收讀IO請(qǐng)求的存儲(chǔ)節(jié)點(diǎn)NodeA,因此,NodeA將讀IO請(qǐng)求提交本存儲(chǔ)節(jié)點(diǎn)上的LUN0處理,處理完成后,將處理結(jié)果通過(guò)路徑A1返回ServerA。
當(dāng)主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)NodeA故障時(shí),主副本LUN LUN0無(wú)法再執(zhí)行存儲(chǔ)業(yè)務(wù)。
當(dāng)從副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)NodeB故障時(shí),主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)NodeA開(kāi)始記錄差異位圖,并在出現(xiàn)新增數(shù)據(jù)時(shí),通知仲裁設(shè)備(圖1未示出)更新差異標(biāo)識(shí)為數(shù)據(jù)不一致。當(dāng)NodeB恢復(fù)正常時(shí),NodeA根據(jù)差異位圖向NodeB上的從副本LUN LUN1同步LUN0的新增數(shù)據(jù),并在完成新增數(shù)據(jù)同步后,通知仲裁設(shè)備更新差異標(biāo)識(shí)為數(shù)據(jù)一致。
至此,完成實(shí)施例1的描述。
實(shí)施例2(以NodeB為例):
假設(shè),ServerA上的多路徑軟件選擇路徑B1下發(fā)寫(xiě)IO請(qǐng)求,在寫(xiě)IO請(qǐng)求中攜帶LUN標(biāo)識(shí)信息VB-LUN0,存儲(chǔ)節(jié)點(diǎn)NodeB接收到該寫(xiě)IO請(qǐng)求后,查詢表3,獲取VB-LUN0對(duì)應(yīng)的主副本LUN為L(zhǎng)UN0,LUN0的歸屬存儲(chǔ)節(jié)點(diǎn)為NodeA,即主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)不是當(dāng)前接收寫(xiě)IO請(qǐng)求的存儲(chǔ)節(jié)點(diǎn)NodeB,則NodeB向NodeA轉(zhuǎn)發(fā)寫(xiě)IO請(qǐng)求,由NodeA提交LUN0處理寫(xiě)IO請(qǐng)求,并在寫(xiě)IO請(qǐng)求處理完后,向NodeB上的從副本LUN LUN1同步寫(xiě)IO數(shù)據(jù)。同時(shí),NodeB接收NodeA返回的處理結(jié)果,并通過(guò)路徑B1返回給ServerA。
假設(shè),ServerA上的多路徑軟件選擇路徑B1下發(fā)讀IO請(qǐng)求,在讀IO請(qǐng)求中攜帶LUN標(biāo)識(shí)信息VB-LUN0,存儲(chǔ)節(jié)點(diǎn)NodeB接收到該寫(xiě)IO請(qǐng)求后,查詢表3,獲取VB-LUN0對(duì)應(yīng)的副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)為NodeA和NodeB,即在獲取的歸屬存儲(chǔ)節(jié)點(diǎn)中包含當(dāng)前接收讀IO請(qǐng)求的存儲(chǔ)節(jié)點(diǎn)NodeB,因此,NodeB將讀IO請(qǐng)求提交本存儲(chǔ)節(jié)點(diǎn)上的LUN1處理,處理完成后,將處理結(jié)果通過(guò)路徑B1返回ServerA。
當(dāng)從副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)NodeB故障時(shí),從副本LUN LUN1無(wú)法再執(zhí)行IO請(qǐng)求的處理。
當(dāng)主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)NodeA故障時(shí),從副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)NodeB從仲裁設(shè)備獲取仲裁設(shè)備記錄的差異標(biāo)識(shí)。當(dāng)差異標(biāo)識(shí)為數(shù)據(jù)不一致時(shí),NodeB上的從副本LUN無(wú)法執(zhí)行存儲(chǔ)業(yè)務(wù),存儲(chǔ)業(yè)務(wù)中斷;當(dāng)差異標(biāo)識(shí)為數(shù)據(jù)一致時(shí),NodeB將LUN1確定為主副本LUN,并通告給其它存儲(chǔ)節(jié)點(diǎn)(NodeC),以使NodeC確定新的主副本LUN為NodeB的LUN1。同時(shí),NodeB作為新的主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)記錄差異位圖,在出現(xiàn)新增數(shù)據(jù)時(shí),通知仲裁設(shè)備更新差異標(biāo)識(shí)為數(shù)據(jù)不一致。當(dāng)原主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)NodeA恢復(fù)正常時(shí),將NodeA的LUN0確定為從副本LUN,并根據(jù)差異位圖向LUN0同步LUN1的新增數(shù)據(jù),并在完成新增數(shù)據(jù)同步后,通知仲裁設(shè)備更新差異標(biāo)識(shí)為數(shù)據(jù)一致。
至此,完成實(shí)施例2的描述。
實(shí)施例3(以NodeC為例):
假設(shè),ServerA上的多路徑軟件選擇路徑C1下發(fā)寫(xiě)IO請(qǐng)求,在寫(xiě)IO請(qǐng)求中攜帶LUN標(biāo)識(shí)信息VC-LUN0,存儲(chǔ)節(jié)點(diǎn)NodeC接收到該寫(xiě)IO請(qǐng)求后,查詢表5,獲取VC-LUN0對(duì)應(yīng)的主副本LUN為L(zhǎng)UN0,LUN0的歸屬存儲(chǔ)節(jié)點(diǎn)為NodeA,即主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)不是當(dāng)前接收寫(xiě)IO請(qǐng)求的存儲(chǔ)節(jié)點(diǎn)NodeC,則NodeC向NodeA轉(zhuǎn)發(fā)寫(xiě)IO請(qǐng)求,由NodeA提交LUN0處理寫(xiě)IO請(qǐng)求,并在寫(xiě)IO請(qǐng)求處理完后,向NodeB上的從副本LUN LUN1同步寫(xiě)IO數(shù)據(jù)。同時(shí),NodeC接收NodeA返回的處理結(jié)果,并通過(guò)路徑C1返回給ServerA。
假設(shè),ServerA上的多路徑軟件選擇路徑C1下發(fā)讀IO請(qǐng)求,在讀IO請(qǐng)求中攜帶LUN標(biāo)識(shí)信息VC-LUN0,存儲(chǔ)節(jié)點(diǎn)NodeC接收到該寫(xiě)IO請(qǐng)求后,查詢表5,獲取VC-LUN0對(duì)應(yīng)的副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)為NodeA和NodeB,副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)中不包含當(dāng)前接收讀IO請(qǐng)求的存儲(chǔ)節(jié)點(diǎn)NodeC,因此,NodeC從LUN0和LUN1中選擇一個(gè)副本LUN處理讀IO請(qǐng)求,假設(shè)選擇LUN1,則NodeC將讀IO請(qǐng)求轉(zhuǎn)發(fā)給LUN1的歸屬存儲(chǔ)節(jié)點(diǎn)NodeB,NodeB將讀IO請(qǐng)求提交本存儲(chǔ)節(jié)點(diǎn)上的LUN1處理,并在處理完成后,將處理結(jié)果返回給NodeC,NodeC再通過(guò)路徑C1返回ServerA。
當(dāng)主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)NodeA故障時(shí),等待接收從副本LUN的歸屬節(jié)點(diǎn)NodeB的通告,重新確定NodeB的LUN1為主副本LUN。
至此,完成實(shí)施例3的描述。
與前述存儲(chǔ)資源訪問(wèn)方法的實(shí)施例相對(duì)應(yīng),本申請(qǐng)還提供了存儲(chǔ)資源訪問(wèn)裝置的實(shí)施例。
本申請(qǐng)存儲(chǔ)資源訪問(wèn)裝置的實(shí)施例可以應(yīng)用在存儲(chǔ)節(jié)點(diǎn)上。裝置實(shí)施例可以通過(guò)軟件實(shí)現(xiàn),也可以通過(guò)硬件或者軟硬件結(jié)合的方式實(shí)現(xiàn)。以軟件實(shí)現(xiàn)為例,作為一個(gè)邏輯意義上的裝置,是通過(guò)其所在設(shè)備的處理器運(yùn)行存儲(chǔ)器中對(duì)應(yīng)的計(jì)算機(jī)程序指令形成的。從硬件層面而言,如圖4所示,為本申請(qǐng)存儲(chǔ)資源訪問(wèn)裝置所在設(shè)備的一種硬件結(jié)構(gòu)圖,除了圖4所示的處理器、網(wǎng)絡(luò)接口、以及存儲(chǔ)器之外,實(shí)施例中裝置所在的設(shè)備通常根據(jù)該設(shè)備的實(shí)際功能,還可以包括其他硬件,對(duì)此不再贅述。
請(qǐng)參考圖5,為本申請(qǐng)一個(gè)實(shí)施例中的存儲(chǔ)資源訪問(wèn)裝置的結(jié)構(gòu)示意圖。該存儲(chǔ)資源訪問(wèn)裝置包括:獲取單元501和處理單元502,其中:
獲取單元501,用于存儲(chǔ)節(jié)點(diǎn)接收到應(yīng)用服務(wù)器發(fā)送的寫(xiě)IO請(qǐng)求時(shí),根據(jù)所述寫(xiě)IO請(qǐng)求中攜帶的LUN標(biāo)識(shí)信息從本地記錄的LUN關(guān)系表項(xiàng)中獲取與所述LUN標(biāo)識(shí)信息對(duì)應(yīng)的主副本LUN以及主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn),所述LUN關(guān)系表項(xiàng)用于記錄LUN標(biāo)識(shí)信息、副本LUN以及副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系,其中,所述副本LUN包括主副本LUN和從副本LUN,所述主副本LUN和所述從副本LUN的屬性相同,且歸屬于不同的存儲(chǔ)節(jié)點(diǎn);
處理單元502,用于當(dāng)所述主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)是本存儲(chǔ)節(jié)點(diǎn)時(shí),將所述寫(xiě)IO請(qǐng)求提交本存儲(chǔ)節(jié)點(diǎn)上的主副本LUN處理;并向從副本LUN同步寫(xiě)IO數(shù)據(jù);在完成寫(xiě)IO請(qǐng)求處理以及完成寫(xiě)IO數(shù)據(jù)同步后,將處理結(jié)果返回所述應(yīng)用服務(wù)器;當(dāng)所述主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)不是本存儲(chǔ)節(jié)點(diǎn)時(shí),向所述主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)轉(zhuǎn)發(fā)所述寫(xiě)IO請(qǐng)求,以使所述主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)將所述寫(xiě)IO請(qǐng)求提交自身節(jié)點(diǎn)的主副本LUN處理,并向從副本LUN同步寫(xiě)IO數(shù)據(jù);接收所述主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)在完成寫(xiě)IO請(qǐng)求處理以及完成寫(xiě)IO數(shù)據(jù)同步后發(fā)送的處理結(jié)果,將所述處理結(jié)果返回所述應(yīng)用服務(wù)器。
進(jìn)一步地,
所述獲取單元501,還用于存儲(chǔ)節(jié)點(diǎn)接收到應(yīng)用服務(wù)器發(fā)送的讀IO請(qǐng)求時(shí),根據(jù)所述讀IO請(qǐng)求中攜帶的LUN標(biāo)識(shí)信息從本地記錄的LUN關(guān)系表項(xiàng)中獲取與所述LUN標(biāo)識(shí)信息對(duì)應(yīng)的副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn);
所述處理單元502,還用于當(dāng)所述副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)中包含本存儲(chǔ)節(jié)點(diǎn)時(shí),將所述讀IO請(qǐng)求提交本存儲(chǔ)節(jié)點(diǎn)上的副本LUN處理,并在讀IO請(qǐng)求處理完成后,將處理結(jié)果返回所述應(yīng)用服務(wù)器;當(dāng)所述副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)中不包含本存儲(chǔ)節(jié)點(diǎn)時(shí),從副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)中選擇一個(gè)副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)轉(zhuǎn)發(fā)所述讀IO請(qǐng)求,以使選擇的副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)將所述讀IO請(qǐng)求提交自身節(jié)點(diǎn)上的副本LUN處理;接收處理所述讀IO請(qǐng)求的副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)發(fā)送的處理結(jié)果,將所述處理結(jié)果返回所述應(yīng)用服務(wù)器。
進(jìn)一步地,所述裝置還包括:
故障單元,用于當(dāng)主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)故障,且從副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)是本存儲(chǔ)節(jié)點(diǎn)時(shí),獲取仲裁設(shè)備記錄的差異標(biāo)識(shí),所述差異標(biāo)識(shí)用于標(biāo)識(shí)所述主副本LUN和所述從副本LUN的數(shù)據(jù)是否一致;當(dāng)所述差異標(biāo)識(shí)為數(shù)據(jù)一致時(shí),將本存儲(chǔ)節(jié)點(diǎn)上的從副本LUN確定為主副本LUN,并通告給其它存儲(chǔ)節(jié)點(diǎn),以使其它存儲(chǔ)節(jié)點(diǎn)重新確定主副本LUN。
進(jìn)一步地,
所述故障單元,還用于本存儲(chǔ)節(jié)點(diǎn)記錄差異位圖,所述差異位圖用于記錄主副本LUN中新增數(shù)據(jù)的位置,并在出現(xiàn)新增數(shù)據(jù)時(shí),通知所述仲裁設(shè)備更新所述差異標(biāo)識(shí)為數(shù)據(jù)不一致;當(dāng)故障的主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)恢復(fù)正常時(shí),將恢復(fù)正常的存儲(chǔ)節(jié)點(diǎn)的主副本LUN確定為從副本LUN,并根據(jù)記錄的差異位圖向該從副本LUN同步本存儲(chǔ)節(jié)點(diǎn)上主副本LUN的新增數(shù)據(jù),并在完成新增數(shù)據(jù)同步后,通知仲裁設(shè)備更新差異標(biāo)識(shí)為數(shù)據(jù)一致。
進(jìn)一步地,所述裝置還包括:
故障單元,用于當(dāng)從副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)故障,且主副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)是本存儲(chǔ)節(jié)點(diǎn)時(shí),記錄差異位圖,所述差異位圖用于記錄主副本LUN中新增數(shù)據(jù)的位置,并在出現(xiàn)新增數(shù)據(jù)時(shí),通知所述仲裁設(shè)備更新所述差異標(biāo)識(shí)為數(shù)據(jù)不一致;當(dāng)故障的從副本LUN的歸屬存儲(chǔ)節(jié)點(diǎn)恢復(fù)正常時(shí),根據(jù)記錄的差異位圖向該從副本LUN同步主副本LUN的新增數(shù)據(jù),并在完成新增數(shù)據(jù)同步后,通知仲裁設(shè)備更新差異標(biāo)識(shí)為數(shù)據(jù)一致。
上述裝置中各個(gè)單元的功能和作用的實(shí)現(xiàn)過(guò)程具體詳見(jiàn)上述方法中對(duì)應(yīng)步驟的實(shí)現(xiàn)過(guò)程,在此不再贅述。
對(duì)于裝置實(shí)施例而言,由于其基本對(duì)應(yīng)于方法實(shí)施例,所以相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本申請(qǐng)方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。
以上所述僅為本申請(qǐng)的較佳實(shí)施例而已,并不用以限制本申請(qǐng),凡在本申請(qǐng)的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)保護(hù)的范圍之內(nèi)。