基于集群的元數據修改方法、裝置及節點設備的制作方法
【專利摘要】本發明公開了一種基于集群的元數據修改方法、裝置及節點設備,該方法包括:根據獲取到的元數據修改請求確定需要修改元數據的LUN,將獲取到的元數據修改請求存儲在位于確定出的LUN包含的第二存儲空間、且與所述當前節點設備的ID信息對應的存儲單元中;在第一存儲空間中競爭集群鎖信息,以及輪詢每個所述第二存儲空間的存儲單元;若競爭到集群鎖信息、且輪詢到的存儲單元中存儲有元數據修改請求,則獲取并執行存儲的元數據修改請求后,將得到的元數據修改結果存儲在獲取對應的元數據修改請求的存儲單元中;若輪詢到的存儲單元存儲元數據修改結果,獲取存儲的元數據修改結果。該方案可以確保元數據修改的正確性。
【專利說明】基于集群的元數據修改方法、裝置及節點設備
【技術領域】
[0001]本發明涉及通信【技術領域】,尤指一種基于集群的元數據修改方法、裝置及節點設備。
【背景技術】
[0002]存儲區域網絡(Storage Array Network, SAN)是一種高速網絡或子網絡,SAN提供的共享存儲以邏輯單元(Logical Unit Number, LUN)的形式向集群中的節點設備呈現。
[0003]在共享存儲場景下,卷管理的元數據存放在LUN上,由于多個節點設備可以同時修改LUN中的元數據,因此必須保證各個節點設備修改元數據的操作是順序進行的,這就需要在一個節點設備修改元數據時對元數據進行加鎖保護,在某一時刻只有獲取到集群鎖的節點設備才能修改元數據,從而保證同一時刻不會存在兩個或者兩個以上的節點設備同時修改元數據。
[0004]目前常用的卷管理方式有兩種:分布式卷管理和集中式卷管理。如圖1所示為分布式卷管理方式的示意圖,當節點設備要修改卷元數據時,首先獲取集群鎖,然后修改元數據,完成后再釋放集群鎖,其它節點設備可以繼續獲取集群鎖來修改元數據。如圖2所示為集中式卷管理方式的示意圖,首先要選取一個節點設備作為主節點設備,其它節點設備需要修改元數據時,會發送元數據修改請求給主節點設備,由主節點設備來順序執行元數據修改請求。
[0005]上述兩種元數據修改方法中集群的節點設備之間是基于控制面進行通信的,節點設備必須與其它節點設備網絡相通,一旦出現網絡故障,節點設備之間的網絡中斷,就不能保證元數據修改的正確性。
【發明內容】
[0006]本發明實施例提供一種基于集群的元數據修改方法、裝置及節點設備,用以解決現有的元數據修改方法中一旦網絡出現故障無法保證元數據修改的正確性的問題。
[0007]第一方面,本發明實施例提供一種基于集群的元數據修改方法,所述集群包括至少兩個節點設備,所述集群與存儲區域網絡SAN連接,所述SAN包括至少一個邏輯單元LUN,每個所述LUN包含第一存儲空間和第二存儲空間,針對每個所述節點設備,所述方法包括:
[0008]當前節點設備根據獲取到的元數據修改請求確定需要修改元數據的LUN,將獲取到的元數據修改請求存儲在位于確定出的LUN包含的第二存儲空間、且與所述當前節點設備的標識ID信息對應的存儲單元中;
[0009]所述當前節點設備在所述第一存儲空間中競爭集群鎖信息,以及輪詢每個所述第二存儲空間的存儲單元;
[0010]若所述當前節點設備競爭到所述集群鎖信息、且輪詢到的存儲單元中存儲有元數據修改請求,則獲取并執行存儲的元數據修改請求后,將得到的元數據修改結果存儲在獲取對應的元數據修改請求的存儲單元中;[0011]若所述當前節點設備輪詢到的存儲單元存儲元數據修改結果,獲取存儲的元數據修改結果。
[0012]結合第一方面,在第一種可能的實現方式中,所述當前節點設備獲取所述當前節點設備的ID信息,具體包括:
[0013]所述當前節點設備啟動后,從一個所述第一存儲空間包含的空閑的存儲單元中選取任意一個存儲單元、地址最小的存儲單元或者地址最大的存儲單元;
[0014]將選取的存儲單元的ID信息作為所述當前節點設備的ID信息。
[0015]結合第一方面或者第一方面的第一種可能的實現方式,在第二種可能的實現方式中,所述第二存儲空間的每個存儲單元包括接收子單元和發送子單元;
[0016]所述當前節點設備將獲取到的元數據修改請求存儲在位于確定出的LUN包含的第二存儲空間、且與所述ID信息對應的存儲單元的接收子單元中;
[0017]所述當前節點設備在所述第一存儲空間中競爭集群鎖信息,以及輪詢每個所述第二存儲空間的存儲單元中的接收子單元;
[0018]若所述當前節點設備競爭到所述集群鎖信息、且輪詢到的接收子單元中存儲有元數據修改請求,則獲取并執行存儲的元數據修改請求后,將得到的元數據修改結果存儲在獲取對應的元數據修改請求的存儲單元的發送子單元中。
[0019]結合第一方面的第二種可能的實現方式,在第三種可能的實現方式中,所述當前節點設備輪詢每個所述第二存儲空間的存儲單元的發送子單元;
[0020]若輪詢到的發送子單元存儲有元數據修改結果,獲取存儲的元數據修改結果。
[0021]結合第一方面、第一方面的第一種可能的實現方式、第一方面的第二種可能的實現方式或第一方面的第三種可能的實現方式,在第四種可能的實現方式中,還包括:
[0022]所述當前節點設備將所述當前節點設備的心跳信息存儲在位于每個所述第一存儲空間、且與所述ID信息對應的存儲單元中;
[0023]所述當前節點設備在所述第一存儲空間中競爭集群鎖信息,具體包括:
[0024]所述當前節點設備輪詢每個所述第一存儲空間的存儲單元,并查看輪詢到的存儲單元中是否存儲所述集群鎖信息;
[0025]若輪詢到的存儲單元中未存儲所述集群鎖信息,則競爭到所述集群鎖信息,并存儲在所述ID信息對應的所述第一存儲空間的存儲單元中;
[0026]若輪詢到的存儲空間中存儲有所述集群鎖信息,查看輪詢到的存儲空間中存儲的心跳信息是否超時,若超時,則競爭到所述集群鎖信息,并存儲在所述ID信息對應的所述第一存儲空間的存儲單元中;若未超時,則未競爭到所述集群鎖信息。
[0027]第二方面,一種元數據修改裝置,應用于集群包括的至少兩個節點設備中,所述集群與存儲區域網絡SAN連接,所述SAN包括至少一個邏輯單元LUN,每個所述LUN包含第一存儲空間和第二存儲空間,所述裝置包括:
[0028]存儲模塊,用于根據獲取到的元數據修改請求確定需要修改元數據的LUN,將獲取到的元數據修改請求存儲在位于確定出的LUN包含的第二存儲空間、且與自身所在的節點設備的標識ID信息對應的存儲單元中;
[0029]處理模塊,用于在所述第一存儲空間中競爭所述集群鎖信息,以及輪詢每個所述第二存儲空間的存儲單元;若競爭到集群鎖信息、且輪詢到的存儲單元中存儲有元數據修改請求,則獲取并執行存儲的元數據修改請求后,將得到的元數據修改結果存儲在獲取對應的元數據修改請求的存儲單元中;若所述輪詢模塊輪詢到的存儲單元存儲元數據修改結果,獲取存儲的元數據修改結果。
[0030]結合第二方面,在第一種可能的實現方式中,所述存儲模塊,具體用于:
[0031]所述節點設備啟動后,從一個所述第一存儲空間包含的空閑的存儲單元中選取任意一個存儲單元、地址最小的存儲單元或者地址最大的存儲單元;
[0032]將選取的存儲單元的ID信息作為所述節點設備的ID信息。
[0033]結合第二方面或者第一方面的第二種可能的實現方式,在第二種可能的實現方式中,所述第二存儲空間的每個存儲單元包括接收子單元和發送子單元;
[0034]所述存儲模塊,具體用于將獲取到的元數據修改請求存儲在位于確定出的LUN包含的第二存儲空間、且與所述ID信息對應的存儲單元的接收子單元中;
[0035]所述處理模塊,具體用于在所述第一存儲空間中競爭集群鎖信息,以及輪詢每個所述第二存儲空間的存儲單元中的接收子單元;若競爭到所述集群鎖信息、且輪詢到的接收子單元中存儲有元數據修改請求,則獲取并執行存儲的元數據修改請求后,將得到的元數據修改結果存儲在獲取對應的元數據修改請求的存儲單元的發送子單元中。
[0036]結合第二方面的第二種可能的實現方式,在第三種可能的實現方式中,所述處理模塊,具體用于輪詢每個所述第二存儲空間的存儲單元的發送子單元;若輪詢到的發送子單元存儲有元數據修改結果,獲取存儲的元數據修改結果。
[0037]結合第二方面、第二方面的第一種可能的實現方式、第二方面的第二種可能的實現方式或第二方面的第三種可能的實現方式,在第四種可能的實現方式中,所述存儲模塊,還用于將所述節點設備的心跳信息存儲在位于每個所述第一存儲空間、且與所述ID信息對應的存儲單元中;
[0038]所述處理模塊,具體用于:
[0039]輪詢每個所述第一存儲空間的存儲單元,并查看輪詢到的存儲單元中是否存儲所述集群鎖信息;
[0040]若輪詢到的存儲單元中未存儲所述集群鎖信息,則競爭到所述集群鎖信息,并存儲在所述ID信息對應的所述第一存儲空間的存儲單元中;
[0041]若輪詢到的存儲空間中存儲有所述集群鎖信息,查看輪詢到的存儲空間中存儲的心跳信息是否超時,若超時,則競爭到所述集群鎖信息,并存儲在所述ID信息對應的所述第一存儲空間的存儲單元中;若未超時,則未競爭到所述集群鎖信息。
[0042]第三方面,一種節點設備,應用于集群中,所述集群包括至少兩個所述節點設備,所述集群與存儲區域網絡SAN連接,所述SAN包括至少一個邏輯單元LUN,每個所述LUN包含第一存儲空間和第二存儲空間,每個所述節點設備包括:
[0043]存儲器,用于根據獲取到的元數據修改請求確定需要修改元數據的LUN,將獲取到的元數據修改請求存儲在位于確定出的LUN包含的第二存儲空間、且與自身所在的節點設備的標識ID信息對應的存儲單元中;
[0044]處理器,用于在所述第一存儲空間中競爭所述集群鎖信息,以及輪詢每個所述第二存儲空間的存儲單元;若競爭到所述集群鎖信息、且輪詢到的存儲單元中存儲有元數據修改請求,則獲取并執行存儲的元數據修改請求后,將得到的元數據修改結果存儲在獲取對應的元數據修改請求的存儲單元中;若輪詢到的存儲單元存儲元數據修改結果,獲取存儲的元數據修改結果。
[0045]結合第三方面,在第一種可能的實現方式中,所述存儲器,具體用于:
[0046]所述節點設備啟動后,從一個所述第一存儲空間包含的空閑的存儲單元中選取任意一個存儲單元、地址最小的存儲單元或者地址最大的存儲單元;
[0047]將選取的存儲單元的ID信息作為所述節點設備的ID信息。
[0048]結合第三方面或者第三方面的第一種可能的實現方式,在第二種可能的實現方式中,所述第二存儲空間的每個存儲單元包括接收子單元和發送子單元;
[0049]所述存儲器,具體用于將獲取到的元數據修改請求存儲在位于確定出的LUN包含的第二存儲空間、且與所述ID信息對應的存儲單元的接收子單元中;
[0050]所述處理器,具體用于在所述第一存儲空間中競爭集群鎖信息,以及輪詢每個所述第二存儲空間的存儲單元中的接收子單元;若競爭到所述集群鎖信息、且輪詢到的接收子單元中存儲有元數據修改請求,則獲取并執行存儲的元數據修改請求后,將得到的元數據修改結果存儲在獲取對應的元數據修改請求的存儲單元的發送子單元中。
[0051]結合第三方面的第二種可能的實現方式,在第三種可能的實現方式中,所述處理器,具體用于輪詢每個所述第二存儲空間的存儲單元的發送子單元;若輪詢到的發送子單元存儲有元數據修改結果,獲取存儲的元數據修改結果。
[0052]結合第三方面、第三方面的第一種可能的實現方式、第三方面的第二種可能的實現方式或第三方面的第三種可能的實現方式,在第四種可能的實現方式中,所述存儲器,還用于將所述節點設備的心跳信息存儲在位于每個所述第一存儲空間、且與所述ID信息對應的存儲單元中;
[0053]所述處理器,具體用于:
[0054]輪詢每個所述第一存儲空間的存儲單元,并查看輪詢到的存儲單元中是否存儲所述集群鎖信息;
[0055]若輪詢到的存儲單元中未存儲所述集群鎖信息,則競爭到所述集群鎖信息,并存儲在所述ID信息對應的所述第一存儲空間的存儲單元中;
[0056]若輪詢到的存儲空間中存儲有所述集群鎖信息,查看輪詢到的存儲空間中存儲的心跳信息是否超時,若超時,則競爭到所述集群鎖信息,并存儲在所述ID信息對應的所述第一存儲空間的存儲單元中;若未超時,則未競爭到所述集群鎖信息。
[0057]根據第一方面提供的基于集群的元數據修改方法、第二方面提供的元數據修改裝置或者第三方面提供的節點設備,集群中的每個節點設備都可以獲取元數據修改請求,將獲取到的元數據修改請求存儲在第二存儲空間對應的存儲單元中;還可以在第一存儲空間中競爭集群鎖信息,以及輪詢第二存儲空間的存儲單元,若競爭到集群鎖信息、且輪詢到的存儲單元中存儲有元數據修改請求,則可以獲取元數據修改請求并執行,再將得到的元數據修改結果存儲在第二存儲空間對應的存儲單元中,若輪詢到的存儲單元存儲有元數據修改結果,獲取存儲的元數據修改結果;可見,集群中節點設備之間的通信不再是基于控制面進行的,而是通過LUN中的第一存儲空間和第二存儲空間實現的,集群中節點設備之間在競爭集群鎖時是基于LUN中的第一存儲空間進行通信的,最終獲取到的集群鎖也是存儲在LUN中的第一存儲空間的,集群中節點設備之間在進行元數據修改時是基于LUN中的第二存儲空間進行通信的,元數據修改請求以及元數據修改結果都是存儲在LUN中的第二存儲空間的,即使集群中節點設備之間的網絡出現故障,集群中節點設備之間不能通過網絡通信,仍可以通過LUN中的第一存儲空間和第二存儲空間正常通信,從而可以確保元數據修改的正確性。
【專利附圖】
【附圖說明】
[0058]圖1為現有技術中第一種卷管理方式的示意圖;
[0059]圖2為現有技術中第二種卷管理方式的示意圖;
[0060]圖3為本發明實施例中基于集群的元數據修改方法的應用場景的示意圖;
[0061]圖4為本發明實施例中基于集群的元數據修改方法的流程圖;
[0062]圖5為本發明實施例中第二存儲空間的每個存儲單元的結構示意圖;
[0063]圖6為本發明實施例中基于集群的元數據裝置的結構示意圖;
[0064]圖7為本發明實施例中節點設備的結構示意圖。
【具體實施方式】
[0065]針對現有的元數據修改方法中一旦網絡出現故障無法保證元數據修改的正確性的問題,發明人經研究發現,出現該問題的原因是,一旦出現網絡故障,節點之間無法進行通信,從而影響元數據修改的正確性。因此,本發明實施例提供一種基于集群的元數據修改方法,如圖3所示,集群包括至少兩個節點設備,集群與SAN連接,SAN包括至少一個LUN,每個LUN包含第一存儲空間和第二存儲空間,針對每個節點設備,該方法的流程如圖4所示,執行步驟如下:
[0066]S40:根據獲取到的元數據修改請求確定需要修改元數據的LUN,將獲取到的元數據修改請求存儲在位于確定出的LUN包含的第二存儲空間、且與當前節點設備的標識(Identification, ID)信息對應的存儲單元中。
[0067]基于集群的卷管理中涉及到元數據修改的操作有創建卷、刪除卷、擴容卷、減容卷
坐寸ο
[0068]當前節點設備可以在自身產生元數據修改請求,也可以從設備接口接收到元數據修改請求。獲取到元數據修改請求之后,根據其中攜帶的需要修改元數據的LUN的信息就可以確定需要修改元數據的LUN,將該元數據修改請求存儲在位于確定出的LUN包含的第二存儲空間、且與當前節點設備的ID信息對應的存儲單元中。
[0069]其中,第二存儲空間是LUN上的一段區域,可以將第二存儲空間等分后得到存儲單元,這樣當前節點設備只要根據ID信息和每個存儲單元的大小就可以計算在第二存儲空間中的偏移量,從而找到對應的存儲單元。
[0070]S41:在第一存儲空間中競爭集群鎖信息,以及輪詢每個第二存儲空間的存儲單
J Li ο
[0071]S40與S41并沒有嚴格的先后執行順序,可以同時執行,也可以先執行S40,再執行S41,當然也可以先執行S41,再執行S40。
[0072]S42:若競爭到集群鎖信息、且輪詢到的存儲單元中存儲有元數據修改請求,獲取并執行存儲的元數據修改請求后,將得到的元數據修改結果存儲在獲取對應的元數據修改請求的存儲單元中。
[0073]當前節點設備在獲取到集群鎖信息后,一旦輪詢到存儲單元中存儲有元數據修改請求,就可以獲取并執行該元數據修改請求了。
[0074]第一存儲空間是LUN上的一段區域,可以將第一存儲空間進行等分后得到存儲單元,這樣當前節點設備只要根據預先獲取的ID信息和每個存儲單元的大小就可以計算在第一存儲空間中的偏移量,從而找到對應的存儲單元。
[0075]S43:若輪詢到的存儲單元存儲有元數據修改結果,獲取存儲的元數據修改結果。
[0076]當前節點設備輪詢到與接收到的元數據修改請求對應的元數據修改結果時,獲取該元數據修改結果,這樣就完成了處理一個元數據修改請求的流程。
[0077]S42與S43并沒有嚴格的先后執行順序,可以同時執行,也可以先執行S42,再執行S43,當然也可以先執行S43,再執行S42。
[0078]該方案中,集群中節點設備之間的通信不再是基于控制面進行的,而是通過LUN中的第一存儲空間和第二存儲空間實現的,集群中節點設備之間在競爭集群鎖時是基于LUN中的第一存儲空間進行通信的,最終獲取到的集群鎖也是存儲在LUN中的第一存儲空間的,集群中節點設備之間在進行元數據修改時是基于LUN中的第二存儲空間進行通信的,元數據修改請求以及元數據修改結果都是存儲在LUN中的第二存儲空間的,即使集群中節點設備之間的網絡出現故障,集群中節點設備之間不能通過網絡通信,仍可以通過LUN中的第一存儲空間和第二存儲空間正常通信,從而可以確保元數據修改的正確性。
[0079]具體的,上述S40中的當前節點設備獲取當前節點設備的ID信息,具體包括:
[0080]當前節點設備啟動后,從一個第一存儲空間包含的空閑的存儲單元中選取任意一個存儲單元、地址最小的存儲單元或者地址最大的存儲單元;
[0081]將選取的存儲單元的ID信息作為當前節點設備的ID信息。
[0082]如圖5所示,第二存儲空間的每個存儲單元包括接收子單元和發送子單元,并且接收子單元和發送子單元大小相等。
[0083]具體的,上述S40中的當前節點設備將獲取到的元數據修改請求存儲在位于確定出的LUN包含的第二存儲空間、且與當前節點設備的ID信息對應的存儲單元中,具體包括:當前節點設備將獲取到的元數據修改請求存儲在位于確定出的LUN包含的第二存儲空間、且與ID信息對應的存儲單兀的接收子單兀中。
[0084]具體的,上述S41中的當前節點設備在第一存儲空間中競爭集群鎖信息,以及輪詢每個第二存儲空間的存儲單元中的接收子單元;
[0085]若當前節點設備競爭到集群鎖信息、且輪詢到的接收子單元中存儲有元數據修改請求,則獲取并執行存儲的元數據修改請求后,將得到的元數據修改結果存儲在獲取對應的元數據修改請求的存儲單元的發送子單元中。
[0086]具體的,上述S41中可以是當前節點設備輪詢每個第二存儲空間的存儲單元的發送子單元;
[0087]若輪詢到的發送子單元存儲有元數據修改結果,獲取存儲的元數據修改結果。
[0088]可選的,上述基于集群的元數據修改方法還包括:當前節點設備將當前節點設備的心跳信息存儲在位于每個第一存儲空間、且與ID信息對應的存儲單元中。
[0089]當前節點設備啟動后,可以一定的時間周期將自身的心跳信息存儲在位于每個第一存儲空間、與前節點設備的ID信息對應的存儲單元中,心跳信息中會攜帶時間信息,來表明該心跳信息生成的時間。
[0090]上述S41中的當前節點設備在第一存儲空間中競爭集群鎖信息,具體包括:
[0091]當前節點設備輪詢每個第一存儲空間的存儲單元,并查看輪詢到的存儲單元中是否存儲集群鎖信息;
[0092]若輪詢到的存儲單元中未存儲集群鎖信息,則競爭到集群鎖信息,并存儲在ID信息對應的第一存儲空間的存儲單元中;
[0093]若輪詢到的存儲空間中存儲有集群鎖信息,查看輪詢到的存儲空間中存儲的心跳信息是否超時,若超時,則競爭到集群鎖信息,并存儲在ID信息對應的第一存儲空間的存儲單元中;若未超時,則未競爭到集群鎖信息。
[0094]當前節點設備可以去競爭集群鎖,競爭到集群鎖后可以執行元數據修改請求,并將得到的元數據修改結果存儲在相應第二存儲空間的存儲單元中。在競爭集群鎖的過程中,若輪詢到的第一存儲空間的存儲單元中存儲了集群鎖,就可以去查看該存儲單元中的心跳信息,根據心跳信息中攜帶的時間信息與當前時間信息的差值來確定心跳信息是否超時,若超時就可以獲取到該集群鎖信息。
[0095]由于集群鎖只有一個,所以只有獲取到集群鎖的節點設備才能執行元數據修改請求,這樣就可以保證元數據修改的正確性,同時由于每個節點設備都會輪詢每個第一存儲空間的存儲單元,一旦獲取到集群鎖的節點設備故障后,其他的節點設備可以獲取到集群鎖,繼續執行元數據修改請求,完成元數據修改請。
[0096]可以對第一存儲空間、第二存儲空間命名以及第二存儲空間的存儲單元中的發送子單元和接收子單元命名,例如,將第一存儲空間命名為租約(Lease)文件、第二存儲空間命名為郵箱(Mailbox)文件、第二存儲空間的存儲單元中的發送子單元命名為收件箱(Inbox)文件、第二存儲空間的存儲單元中的接收子單元命名為發件箱(Outbox)文件。
[0097]由于Mailbox文件中的Inbox文件和Outbox文件大小相等,所以節點設備可以根據ID信息和Inbox文件(或者Outbox文件)的大小計算偏移量找到對應的Inbox文件和Outbox文件。為了提高節點設備并行處理的元數據修改請求的個數,Inbox文件和Outbox文件中可以存放多條元數據修改請求。
[0098]節點設備既可以將獲取到的元數據修改請求放入對應的Inbox中,還可以到對應的Outbox中獲取元數據處理結果,從而完成一次元數據修改的流程。
[0099]基于同一發明構思,本發明實施例提供一種基于集群的元數據修改裝置,應用于如圖3所示的集群包括的至少兩個節點設備中,該裝置的結構如圖6所示,包括:
[0100]存儲模塊60,用于根據獲取到的元數據修改請求確定需要修改元數據的LUNdf獲取到的元數據修改請求存儲在位于確定出的LUN包含的第二存儲空間、且與自身所在的節點設備的ID信息對應的存儲單元中。
[0101]處理模塊61,用于第一存儲空間中競爭集群鎖信息,以及輪詢每個第二存儲空間的存儲單元;若競爭到集群鎖信息、且輪詢到的存儲單元中存儲有元數據修改請求,則獲取并執行存儲的元數據修改請求后,將得到的元數據修改結果存儲在獲取對應的元數據修改請求的存儲單元中;若輪詢模塊輪詢到的存儲單元存儲元數據修改結果,獲取存儲的元數據修改結果。[0102]具體的,上述存儲模塊60,具體用于:
[0103]節點設備啟動后,從一個第一存儲空間包含的空閑的存儲單元中選取任意一個存儲單元、地址最小的存儲單元或者地址最大的存儲單元;
[0104]將選取的存儲單元的ID信息作為節點設備的ID信息。
[0105]具體的,第二存儲空間的每個存儲單元包括接收子單元和發送子單元;
[0106]上述存儲模塊60,具體用于將獲取到的元數據修改請求存儲在位于確定出的LUN包含的第二存儲空間、且與ID信息對應的存儲單元的接收子單元中.[0107]上述處理模塊61,具體用于第一存儲空間中競爭集群鎖信息,以及輪詢每個第二存儲空間的存儲單元中的接收子單元;若競爭到集群鎖信息、且輪詢到的接收子單元中存儲有元數據修改請求,則獲取并執行存儲的元數據修改請求后,將得到的元數據修改結果存儲在獲取對應的元數據修改請求的存儲單元的發送子單元中。
[0108]具體的,上述處理模塊61,具體用于輪詢每個第二存儲空間的存儲單元的發送子單元;若輪詢到的發送子單元存儲有元數據修改結果,獲取存儲的元數據修改結果。
[0109]可選的,上述存儲模塊60,還用于將節點設備的心跳信息存儲在位于每個第一存儲空間、且與ID信息對應的存儲單元中。
[0110]處理模塊61,具體用于輪詢每個第一存儲空間的存儲單元,并查看輪詢到的存儲單元中是否存儲集群鎖信息;
[0111]若輪詢到的存儲單元中未存儲集群鎖信息,則競爭到集群鎖信息,并存儲在ID信息對應的第一存儲空間的存儲單元中;
[0112]若輪詢到的存儲空間中存儲有集群鎖信息,查看輪詢到的存儲空間中存儲的心跳信息是否超時,若超時,則競爭到集群鎖信息,并存儲在ID信息對應的第一存儲空間的存儲單元中;若未超時,則未競爭到集群鎖信息。
[0113]基于同一發明構思,本發明實施例提供一種節點設備,應用于如圖3所示的集群中,該節點設備的結構如圖7所示,包括:
[0114]存儲器70,用于根據獲取到的元數據修改請求確定需要修改元數據的LUN,將獲取到的元數據修改請求存儲在位于確定出的LUN包含的第二存儲空間、且與自身所在的節點設備的ID信息對應的存儲單元中。
[0115]處理器71,用于第一存儲空間中競爭集群鎖信息,以及輪詢每個第二存儲空間的存儲單元;若進行到集群鎖信息、且輪詢到的存儲單元中存儲有元數據修改請求,則獲取并執行存儲的元數據修改請求后,將得到的元數據修改結果存儲在獲取對應的元數據修改請求的存儲單元中;若輪詢到的存儲單元存儲元數據修改結果,獲取存儲的元數據修改結果。
[0116]存儲器70與處理器71之間通過總線連接。
[0117]具體的,上述存儲器70,具體用于:
[0118]節點設備啟動后,從一個第一存儲空間包含的空閑的存儲單元中選取任意一個存儲單元、地址最小的存儲單元或者地址最大的存儲單元;
[0119]將選取的存儲單元的ID信息作為節點設備的ID信息。
[0120]具體的,第二存儲空間的每個存儲單元包括接收子單元和發送子單元。
[0121]上述存儲器70,具體用于將獲取到的元數據修改請求存儲在位于確定出的LUN包含的第二存儲空間、且與ID信息對應的存儲單元的接收子單元中。[0122]上述處理器71,具體用于第一存儲空間中競爭集群鎖信息,以及輪詢每個第二存儲空間的存儲單元中的接收子單元;若競爭到集群鎖信息、且輪詢到的接收子單元中存儲有元數據修改請求,則獲取并執行存儲的元數據修改請求后,將得到的元數據修改結果存儲在獲取對應的元數據修改請求的存儲單元的發送子單元中。
[0123]具體的,上述處理器71,具體用于輪詢每個第二存儲空間的存儲單元的發送子單元;若輪詢到的發送子單元存儲有元數據修改結果,獲取存儲的元數據修改結果。
[0124]可選的,上述存儲器70,還用于將節點設備的心跳信息存儲在位于每個第一存儲空間、且與ID信息對應的存儲單元中。
[0125]上述處理器71,具體用于:輪詢每個第一存儲空間的存儲單元,并查看輪詢到的存儲單元中是否存儲集群鎖信息;
[0126]若輪詢到的存儲單元中未存儲集群鎖信息,則競爭到集群鎖信息,并存儲在ID信息對應的第一存儲空間的存儲單元中;
[0127]若輪詢到的存儲空間中存儲有集群鎖信息,查看輪詢到的存儲空間中存儲的心跳信息是否超時,若超時,則競爭到集群鎖信息,并存儲在ID信息對應的第一存儲空間的存儲單元中;若未超時,則未競爭到集群鎖信息。
[0128]本發明是參照根據本發明實施例的方法、設備(系統)、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0129]這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0130]這些計算機程序指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0131]盡管已描述了本發明的可選實施例,但本領域內的技術人員一旦得知了基本創造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權利要求意欲解釋為包括可選實施例以及落入本發明范圍的所有變更和修改。
[0132]顯然,本領域的技術人員可以對本發明實施例進行各種改動和變型而不脫離本發明實施例的精神和范圍。這樣,倘若本發明實施例的這些修改和變型屬于本發明權利要求及其等同技術的范圍之內,則本發明也意圖包含這些改動和變型在內。
【權利要求】
1.一種基于集群的元數據修改方法,所述集群包括至少兩個節點設備,所述集群與存儲區域網絡SAN連接,所述SAN包括至少一個邏輯單元LUN,其特征在于,每個所述LUN包含第一存儲空間和第二存儲空間,針對每個所述節點設備,所述方法包括: 當前節點設備根據獲取到的元數據修改請求確定需要修改元數據的LUN,將獲取到的元數據修改請求存儲在位于確定出的LUN包含的第二存儲空間、且與所述當前節點設備的標識ID信息對應的存儲單元中; 所述當前節點設備在所述第一存儲空間中競爭集群鎖信息,以及輪詢每個所述第二存儲空間的存儲單元; 若所述當前節點設備競爭到所述集群鎖信息、且輪詢到的存儲單元中存儲有元數據修改請求,則獲取并執行存儲的元數據修改請求后,將得到的元數據修改結果存儲在獲取對應的元數據修改請求的存儲單元中; 若所述當前節點設備輪詢到的存儲單元存儲元數據修改結果,獲取存儲的元數據修改結果。
2.如權利要求1所述的方法,其特征在于,所述當前節點設備獲取所述當前節點設備的ID信息,具體包括: 所述當前節點設備啟動后,從一個所述第一存儲空間包含的空閑的存儲單元中選取任意一個存儲單元、地址最小的存儲單元或者地址最大的存儲單元; 將選取的存儲單元的ID信息作為所述當前節點設備的ID信息。
3.如權利要求1-2任一所述的方法,其特征在于,所述第二存儲空間的每個存儲單元包括接收子單元和發送子單元; 所述當前節點設備將獲取到的元數據修改請求存儲在位于確定出的LUN包含的第二存儲空間、且與所述ID信息對應的存儲單元的接收子單元中; 所述當前節點設備在所述第一存儲空間中競爭集群鎖信息,以及輪詢每個所述第二存儲空間的存儲單元中的接收子單元; 若所述當前節點設備競爭到所述集群鎖信息、且輪詢到的接收子單元中存儲有元數據修改請求,則獲取并執行存儲的元數據修改請求后,將得到的元數據修改結果存儲在獲取對應的元數據修改請求的存儲單元的發送子單元中。
4.如權利要求3所述的方法,其特征在于,所述當前節點設備輪詢每個所述第二存儲空間的存儲單元的發送子單元; 若輪詢到的發送子單元存儲有元數據修改結果,獲取存儲的元數據修改結果。
5.如權利要求1-4任一所述的方法,其特征在于,還包括: 所述當前節點設備將所述當前節點設備的心跳信息存儲在位于每個所述第一存儲空間、且與所述ID信息對應的存儲單元中; 所述當前節點設備在所述第一存儲空間中競爭集群鎖信息,具體包括: 所述當前節點設備輪詢每個所述第一存儲空間的存儲單元,并查看輪詢到的存儲單元中是否存儲所述集群鎖信息; 若輪詢到的存儲單元中未存儲所述集群鎖信息,則競爭到所述集群鎖信息,并存儲在所述ID信息對應的所述第一存儲空間的存儲單元中; 若輪詢到的存儲空間中存儲有所述集群鎖信息,查看輪詢到的存儲空間中存儲的心跳信息是否超時,若超時,則競爭到所述集群鎖信息,并存儲在所述ID信息對應的所述第一存儲空間的存儲單元中;若未超時,則未競爭到所述集群鎖信息。
6.一種元數據修改裝置,應用于集群包括的至少兩個節點設備中,所述集群與存儲區域網絡SAN連接,所述SAN包括至少一個邏輯單元LUN,其特征在于,每個所述LUN包含第一存儲空間和第二存儲空間,所述裝置包括: 存儲模塊,用于根據獲取到的元數據修改請求確定需要修改元數據的LUN,將獲取到的元數據修改請求存儲在位于確定出的LUN包含的第二存儲空間、且與自身所在的節點設備的標識ID信息對應的存儲單元中; 處理模塊,用于在所述第一存儲空間中競爭所述集群鎖信息,以及輪詢每個所述第二存儲空間的存儲單元;若競爭到集群鎖信息、且輪詢到的存儲單元中存儲有元數據修改請求,則獲取并執行存儲的元數據修改請求后,將得到的元數據修改結果存儲在獲取對應的元數據修改請求的存儲單元中;若所述輪詢模塊輪詢到的存儲單元存儲元數據修改結果,獲取存儲的元數據修改結果。
7.如權利要求6所述的裝置,其特征在于,所述存儲模塊,具體用于: 所述節點設備啟動后,從一個所述第一存儲空間包含的空閑的存儲單元中選取任意一個存儲單元、地址最小的存儲單元或者地址最大的存儲單元; 將選取的存儲單元的ID信息作為所述節點設備的ID信息。
8.如權利要求6-7任一所述的裝置,其特征在于,所述第二存儲空間的每個存儲單元包括接收子單元和發送子單元; 所述存儲模塊,具體用于將獲取到的元數據修改請求存儲在位于確定出的LUN包含的第二存儲空間、且與所述ID信息對應的存儲單元的接收子單元中; 所述處理模塊,具體用于在所述第一存儲空間中競爭集群鎖信息,以及輪詢每個所述第二存儲空間的存儲單元中的接收子單元;若競爭到所述集群鎖信息、且輪詢到的接收子單元中存儲有元數據修改請求,則獲取并執行存儲的元數據修改請求后,將得到的元數據修改結果存儲在獲取對應的元數據修改請求的存儲單元的發送子單元中。
9.如權利要求8所述的裝置,其特征在于,所述處理模塊,具體用于輪詢每個所述第二存儲空間的存儲單元的發送子單元;若輪詢到的發送子單元存儲有元數據修改結果,獲取存儲的元數據修改結果。
10.如權利要求6-9任一所述的裝置,其特征在于,所述存儲模塊,還用于將所述節點設備的心跳信息存儲在位于每個所述第一存儲空間、且與所述ID信息對應的存儲單元中; 所述處理模塊,具體用于: 輪詢每個所述第一存儲空間的存儲單元,并查看輪詢到的存儲單元中是否存儲所述集群鎖信息; 若輪詢到的存儲單元中未存儲所述集群鎖信息,則競爭到所述集群鎖信息,并存儲在所述ID信息對應的所述第一存儲空間的存儲單元中; 若輪詢到的存儲空間中存儲有所述集群鎖信息,查看輪詢到的存儲空間中存儲的心跳信息是否超時,若超時,則競爭到所述集群鎖信息,并存儲在所述ID信息對應的所述第一存儲空間的存儲單元中;若未超時,則未競爭到所述集群鎖信息。
11.一種節點設備,應用于集群中,所述集群包括至少兩個所述節點設備,所述集群與存儲區域網絡SAN連接,所述SAN包括至少一個邏輯單元LUN,其特征在于,每個所述LUN包含第一存儲空間和第二存儲空間,每個所述節點設備包括: 存儲器,用于根據獲取到的元數據修改請求確定需要修改元數據的LUN,將獲取到的元數據修改請求存儲在位于確定出的LUN包含的第二存儲空間、且與自身所在的節點設備的標識ID信息對應的存儲單元中; 處理器,用于在所述第一存儲空間中競爭所述集群鎖信息,以及輪詢每個所述第二存儲空間的存儲單元;若競爭到所述集群鎖信息、且輪詢到的存儲單元中存儲有元數據修改請求,則獲取并執行存儲的元數據修改請求后,將得到的元數據修改結果存儲在獲取對應的元數據修改請求的存儲單元中;若輪詢到的存儲單元存儲元數據修改結果,獲取存儲的元數據修改結果。
12.如權利要求11所述的節點設備,其特征在于,所述存儲器,具體用于: 所述節點設備啟動后,從一個所述第一存儲空間包含的空閑的存儲單元中選取任意一個存儲單元、地址最小的存儲單元或者地址最大的存儲單元; 將選取的存儲單元的ID信息作為所述節點設備的ID信息。
13.如權利要求11-12任一所述的節點設備,其特征在于,所述第二存儲空間的每個存儲單元包括接收子單元和發送子單元; 所述存儲器,具體用于將獲取到的元數據修改請求存儲在位于確定出的LUN包含的第二存儲空間、且與所述ID信息對應的存儲單元的接收子單元中; 所述處理器,具體用于在所述第一存儲空間中競爭集群鎖信息,以及輪詢每個所述第二存儲空間的存儲單元中的接收子單元;若競爭到所述集群鎖信息、且輪詢到的接收子單元中存儲有元數據修改請求,則獲取并執行存儲的元數據修改請求后,將得到的元數據修改結果存儲在獲取對應的 元數據修改請求的存儲單元的發送子單元中。
14.如權利要求13所述的節點設備,其特征在于,所述處理器,具體用于輪詢每個所述第二存儲空間的存儲單元的發送子單元;若輪詢到的發送子單元存儲有元數據修改結果,獲取存儲的元數據修改結果。
15.如權利要求11-14任一所述的節點設備,其特征在于,所述存儲器,還用于將所述節點設備的心跳信息存儲在位于每個所述第一存儲空間、且與所述ID信息對應的存儲單元中; 所述處理器,具體用于: 輪詢每個所述第一存儲空間的存儲單元,并查看輪詢到的存儲單元中是否存儲所述集群鎖信息; 若輪詢到的存儲單元中未存儲所述集群鎖信息,則競爭到所述集群鎖信息,并存儲在所述ID信息對應的所述第一存儲空間的存儲單元中; 若輪詢到的存儲空間中存儲有所述集群鎖信息,查看輪詢到的存儲空間中存儲的心跳信息是否超時,若超時,則競爭到所述集群鎖信息,并存儲在所述ID信息對應的所述第一存儲空間的存儲單元中;若未超時,則未競爭到所述集群鎖信息。
【文檔編號】G06F17/30GK103678537SQ201310637339
【公開日】2014年3月26日 申請日期:2013年12月2日 優先權日:2013年12月2日
【發明者】亓曉振 申請人:華為技術有限公司