本發(fā)明涉及集群文件系統(tǒng)技術領域,特別是涉及一種基于集群文件系統(tǒng)的sanlock優(yōu)化方法及裝置。
背景技術:
目前,隨著計算機技術和網絡技術的快速發(fā)展,集群系統(tǒng)以其強大的運算能力和健壯的容錯機制讓其逐步成為計算機行業(yè)的焦點。集群中的腦裂現(xiàn)象稱為當今亟需解決的問題,因此出現(xiàn)了dlm和sanlock等類型的分布式鎖,dlm鎖基于網絡,當出現(xiàn)大批量的操作處理時候影響該分布式鎖的性能,因此大部分切換到sanlock鎖來管理集群,防止出現(xiàn)腦裂現(xiàn)象。但是sanlock鎖對于offset值非常依賴,sanlock分布式鎖必須具備offset值管理功能,產生offset值,即存在sanlock鎖的offset值問題。
技術實現(xiàn)要素:
本發(fā)明的目的是提供一種基于集群文件系統(tǒng)的sanlock優(yōu)化方法及裝置,以實現(xiàn)優(yōu)化sanlock鎖對于offset值的依賴,解決sanlock鎖的offset值問題。
為解決上述技術問題,本發(fā)明提供一種基于集群文件系統(tǒng)的sanlock優(yōu)化方法,該方法包括:
在集群文件系統(tǒng)中部署代理agent;
通過agent維護分布式鎖管理器sanlock所需要的offset值,當創(chuàng)建需要加鎖的文件時,通過agent來為需要加鎖的文件申請offset值;
在agent上創(chuàng)建多線程,利用多線程建立agent與sanlock的多個socket通信。
優(yōu)選的,所述通過agent來為需要加鎖的文件申請offset值之后,還包括:
將offset值記錄在集群文件系統(tǒng)上的offset值文件上。
優(yōu)選的,在agent上創(chuàng)建多線程,利用多線程建立agent與sanlock的多個socket通信之前,還包括:
在agent上設置排隊機制和并發(fā)機制。
優(yōu)選的,所述在agent上創(chuàng)建多線程,利用多線程建立agent與sanlock的多個socket通信之后,還包括:
通過agent代理獲取offset文件對應的鎖資源,利用鎖資源執(zhí)行offset值文件的互斥操作。
本發(fā)明還提供一種基于集群文件系統(tǒng)的sanlock優(yōu)化裝置,用于實現(xiàn)上述基于集群文件系統(tǒng)的sanlock方法,包括:
部署模塊,用于在集群文件系統(tǒng)中部署代理模塊agent;
維護模塊,用于通過agent維護分布式鎖管理器sanlock所需要的offset值,當創(chuàng)建需要加鎖的文件時,通過agent來為需要加鎖的文件申請offset值;
創(chuàng)建模塊,用于在agent上創(chuàng)建多線程,利用多線程建立agent與sanlock的多個socket通信。
優(yōu)選的,所述維護模塊還包括:
記錄單元,用于將offset值記錄在集群文件系統(tǒng)上的offset值文件上。
優(yōu)選的,所述裝置還包括:
設置模塊,用于在agent上設置排隊機制和并發(fā)機制。
優(yōu)選的,所述裝置還包括:
獲取模塊,用于通過agent代理獲取offset文件對應的鎖資源,利用鎖資源執(zhí)行offset值文件的互斥操作。
本發(fā)明所提供的一種基于集群文件系統(tǒng)的sanlock優(yōu)化方法及裝置,在集群文件系統(tǒng)中部署代理agent;通過agent維護分布式鎖管理器sanlock所需要的offset值,當創(chuàng)建需要加鎖的文件時,通過agent來為需要加鎖的文件申請offset值;在agent上創(chuàng)建多線程,利用多線程建立agent與sanlock的多個socket通信??梢姡ㄟ^agent代理完成了offset值的分配機制,如此利用agent代理優(yōu)化掉sanlock分布式鎖所必須的offset值管理,實現(xiàn)優(yōu)化sanlock鎖對于offset值的依賴,解決sanlock鎖的offset值問題。并且,通過多線程創(chuàng)建agent與sanlock的多個socket通信,保證并發(fā)對sanlock操作時的業(yè)務繁忙。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明所提供的一種基于集群文件系統(tǒng)的sanlock優(yōu)化方法的流程圖;
圖2為存儲池包含的基礎的信息;
圖3為agent通過sanlock獲取leases上的資源所之后操作offset page;
圖4為本發(fā)明所提供的一種基于集群文件系統(tǒng)的sanlock優(yōu)化裝置的結構示意圖。
具體實施方式
本發(fā)明的核心是提供一種基于集群文件系統(tǒng)的sanlock優(yōu)化方法及裝置,以實現(xiàn)優(yōu)化sanlock鎖對于offset值的依賴,解決sanlock鎖的offset值問題。
為了使本技術領域的人員更好地理解本發(fā)明方案,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參考圖1,圖1為本發(fā)明所提供的一種基于集群文件系統(tǒng)的sanlock優(yōu)化方法的流程圖,該方法包括:
S11:在集群文件系統(tǒng)中部署代理agent;
S12:通過agent維護分布式鎖管理器sanlock所需要的offset值,當創(chuàng)建需要加鎖的文件時,通過agent來為需要加鎖的文件申請offset值;
S13:在agent上創(chuàng)建多線程,利用多線程建立agent與sanlock的多個socket通信。
可見,該方法中,通過agent代理完成了offset值的分配機制,如此利用agent代理優(yōu)化掉sanlock分布式鎖所必須的offset值管理,實現(xiàn)優(yōu)化sanlock鎖對于offset值的依賴,解決sanlock鎖的offset值問題。并且,通過多線程創(chuàng)建agent與sanlock的多個socket通信,保證并發(fā)對sanlock操作時的業(yè)務繁忙。
基于上述方法,進一步的,所述通過agent來為需要加鎖的文件申請offset值之后,還包括:將offset值記錄在集群文件系統(tǒng)上的offset值文件上。
進一步的,在agent上創(chuàng)建多線程,利用多線程建立agent與sanlock的多個socket通信之前,還包括:在agent上設置排隊機制和并發(fā)機制。
進一步的,所述在agent上創(chuàng)建多線程,利用多線程建立agent與sanlock的多個socket通信之后,通過agent代理獲取offset文件對應的鎖資源,利用鎖資源執(zhí)行offset值文件的互斥操作。
基于集群文件系統(tǒng)的目的是為了讓集群中所有的主機都能夠正常的訪問該共享存儲,以便能夠共同的維護sanlock所必須的offset列表。
基于本方法,詳細的,通過agent來維護sanlock所需要的offset值,每一次創(chuàng)建需要加鎖的文件時候,通過agent來幫該文件申請一個offset值,并且將該offset值記錄在集群文件系統(tǒng)上的一個文件上。
其中,通過agent來申請一個offset值,并將該值記錄在文件系統(tǒng)上屬于并發(fā)操作,集群文件系統(tǒng)需要支持多節(jié)點并發(fā)操作,因此需要保護蓋公共文件的讀寫性。
其中,為了保證該文件的并發(fā)讀寫,需要借助sanlock鎖來保證文件的讀寫互斥,并且需要通過agent來保證并發(fā)讀寫時候的成功和sanlock管理多個存儲池并發(fā)操作時候的互斥操作。
其中,通過agent來保證并發(fā)讀寫時候的成功和sanlock管理多個存儲池并發(fā)操作時候的互斥操作,那么agent需要提供排隊機制和并發(fā)機制,與sanlock的交互時候也能出現(xiàn)并發(fā)操作,因此agent需要與sanlock開啟多個socket通信接口,每一次與sanlock的交互使用不同的socket通信接口。
其中,agent需要提供并發(fā)機制,并發(fā)機制需要通過多線程實現(xiàn),使用線程池來進行處理。
其中,sanlock管理多個存儲池時候需要并發(fā)執(zhí)行,維護公共的文件的uuid對應的offset值得文件時候需要互斥操作,多個存儲池時候需要線程池分別處理每一個存儲池中的文件操作同時需要對每一個存儲池的操作進行排隊。
本方法中,優(yōu)化了sanlock鎖對于offset值的依賴和管理多個存儲池時的并發(fā)操作,通過agent代理,優(yōu)化掉sanlock分布式鎖所必須的offset值管理,完成了offset值的分配和重試機制,并且通過agent代理,完成了多個存儲池的優(yōu)化管理操作,優(yōu)化了分布式鎖sanlock的使用并管理多個存儲池,同時還可以通過agent代理執(zhí)行多級fence機制。本方法解決了sanlock鎖的offset值問題和優(yōu)化多個存儲池管理操作。圖2為存儲池包含的基礎的信息。圖3為agent通過sanlock獲取leases上的資源所之后操作offset page。
詳細的,Sanlock是通過對于共享存儲上的文件讀寫來保證集群的鎖信息的互斥,同時根據(jù)時間戳的更新來判斷該主機的存活性,因此可以借助sanlock鎖的性能來保證文件的互斥讀寫操作。
其中,通過集群文件系統(tǒng),保證offset值文件都能被每臺主機訪問。通過agent代理,利用sanlock鎖資源管理,通過獲取該文件對應的鎖資源,達到offset值文件的互斥操作。由于一個計算節(jié)點可以掛載多個存儲池,因此多個存儲池有可能并發(fā)操作,因襲需要通過線程池保證多個存儲池并發(fā)操作。
其中,當互斥資源繁忙時候,進行重試操作,但是多個存儲池可以并發(fā)操作,因此通過二維隊列,保證多個存儲池并發(fā)操作正常。一個進程對于sanlock鎖的操作一般來說并不能達到并發(fā)操作,并發(fā)時候會造成sanlock busy,因此通過多線程創(chuàng)建與sanlock的多個socket通信,保證并發(fā)對sanlock操作時的業(yè)務繁忙。
基于本方法,具體實施過程中,編寫agent代碼,實現(xiàn)如上功能,在每一個節(jié)點上部署該agent,啟動agent;部署sanlock鎖在每一臺主機上;通過qemu-img在每一個集群春初上創(chuàng)建ids空間和leases空間,并通過sanlock進行初始化;調用創(chuàng)卷命令之后調用agent,通過agent分配該卷的uuid,獲取該資源鎖的時候調用agent的獲取接口,不需要傳遞offset值,釋放時候同樣調用agent接口,執(zhí)行釋放操作;對于鎖的操作除查詢外,統(tǒng)一通過agent執(zhí)行。
請參考圖4,圖4為本發(fā)明所提供的一種基于集群文件系統(tǒng)的sanlock優(yōu)化裝置的結構示意圖,用于實現(xiàn)上述基于集群文件系統(tǒng)的sanlock優(yōu)化方法,該裝置包括:
部署模塊101,用于在集群文件系統(tǒng)中部署代理模塊agent;
維護模塊102,用于通過agent維護分布式鎖管理器sanlock所需要的offset值,當創(chuàng)建需要加鎖的文件時,通過agent來為需要加鎖的文件申請offset值;
創(chuàng)建模塊103,用于在agent上創(chuàng)建多線程,利用多線程建立agent與sanlock的多個socket通信。
可見,該裝置中,通過agent代理完成了offset值的分配機制,如此利用agent代理優(yōu)化掉sanlock分布式鎖所必須的offset值管理,實現(xiàn)優(yōu)化sanlock鎖對于offset值的依賴,解決sanlock鎖的offset值問題。并且,通過多線程創(chuàng)建agent與sanlock的多個socket通信,保證并發(fā)對sanlock操作時的業(yè)務繁忙。
基于上述裝置,具體的,所述維護模塊還包括:記錄單元,用于將offset值記錄在集群文件系統(tǒng)上的offset值文件上。
進一步的,所述裝置還包括:設置模塊,用于在agent上設置排隊機制和并發(fā)機制。
進一步的,所述裝置還包括:獲取模塊,用于通過agent代理獲取offset文件對應的鎖資源,利用鎖資源執(zhí)行offset值文件的互斥操作
以上對本發(fā)明所提供的一種基于集群文件系統(tǒng)的sanlock優(yōu)化方法及裝置進行了詳細介紹。本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想。應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進行若干改進和修飾,這些改進和修飾也落入本發(fā)明權利要求的保護范圍內。