本發(fā)明涉及計算機,具體涉及一種內(nèi)存管理方法、裝置、計算機設備及存儲介質(zhì)。
背景技術(shù):
1、多控集群是指有兩臺及以上存儲設備組建的集群,整個集群擁有一個共同的csm(control?state?machine,控制狀態(tài)機),csm為多控集群各個模塊的控制狀態(tài)機,來控制集群的管理信息。多控集群的存儲設備中有多個控制器節(jié)點,每個控制器節(jié)點上都有一個agent模塊(管理模塊),agent模塊為控制器節(jié)點的模塊終端,用來控制存儲設備中各個業(yè)務模塊,例如:內(nèi)存申請、io(input/output,輸入/輸出)處理等。
2、業(yè)務模塊例如卷壓縮模塊使用的內(nèi)存是動態(tài)內(nèi)存管理模塊(dynamic?memorymanagement,dmm)按照配置分配的,當創(chuàng)建壓縮卷時,壓縮卷模塊根據(jù)業(yè)務邏輯需求從動態(tài)內(nèi)存管理模塊申請內(nèi)存,并進行io處理。業(yè)務模塊例如卷壓縮模塊在工作過程中可能申請了較多的內(nèi)存,導致其他業(yè)務模塊可使用的內(nèi)存較少。
3、因此,相關(guān)技術(shù)存在部分業(yè)務模塊在工作過程中申請了較多的內(nèi)存,導致其他業(yè)務模塊可使用的內(nèi)存較少的問題。
技術(shù)實現(xiàn)思路
1、有鑒于此,本發(fā)明提供了一種內(nèi)存管理方法、裝置、計算機設備及存儲介質(zhì),以解決部分業(yè)務模塊在工作過程中申請了較多的內(nèi)存,導致其他業(yè)務模塊可使用的內(nèi)存較少的問題。
2、第一方面,本發(fā)明提供了一種內(nèi)存管理方法,包括:
3、獲取升級版本信息;
4、在多個存儲節(jié)點中確定目標節(jié)點,獲取目標節(jié)點的配置信息和目標節(jié)點中業(yè)務模塊的已申請內(nèi)存,并根據(jù)升級版本信息對目標節(jié)點進行版本升級,其中,多個存儲節(jié)點包含于存儲設備;
5、根據(jù)配置信息對升級后的目標節(jié)點中業(yè)務模塊進行配置恢復,得到目標業(yè)務模塊;
6、確定目標業(yè)務模塊的可分配內(nèi)存,并將已申請內(nèi)存和可分配內(nèi)存中大小較小的內(nèi)存作為目標業(yè)務模塊的目標占用內(nèi)存;
7、為目標業(yè)務模塊申請目標占用內(nèi)存。
8、本實施例提供的內(nèi)存管理方法,在多個存儲節(jié)點中確定目標節(jié)點,獲取目標節(jié)點的配置信息和目標節(jié)點中業(yè)務模塊的已申請內(nèi)存,并根據(jù)升級版本信息對目標節(jié)點進行版本升級,通過在線升級的方式減少業(yè)務模塊使用的內(nèi)存。將已申請內(nèi)存和可分配內(nèi)存中大小較小的內(nèi)存作為目標業(yè)務模塊的目標占用內(nèi)存,并為目標業(yè)務模塊申請目標占用內(nèi)存,增加與當前系統(tǒng)支持的業(yè)務模塊所能使用的內(nèi)存信息的比對,以便于正確的進行內(nèi)存分配。能夠節(jié)省更多的內(nèi)存,給其他消耗內(nèi)存更多的模塊使用,提高業(yè)務處理能力,提高io性能。解決了部分業(yè)務模塊在工作過程中申請了較多的內(nèi)存,導致其他業(yè)務模塊可使用的內(nèi)存較少的問題。
9、在一些可選的實施方式中,在為目標業(yè)務模塊申請目標占用內(nèi)存之后,方法還包括:
10、在目標業(yè)務模塊不再執(zhí)行目標業(yè)務的情況下,根據(jù)目標占用內(nèi)存生成第一內(nèi)存釋放信息,并將第一內(nèi)存釋放信息寫入目標節(jié)點的控制模塊,其中,第一內(nèi)存釋放信息用于將目標占用內(nèi)存進行釋放,控制模塊用于為目標業(yè)務模塊申請目標占用內(nèi)存或釋放目標占用內(nèi)存;
11、根據(jù)已申請內(nèi)存生成第二內(nèi)存釋放信息,并將第二內(nèi)存釋放信息寫入多控集群的控制狀態(tài)機,指示控制狀態(tài)機進行內(nèi)存釋放。
12、在本實施方式中,在目標業(yè)務模塊不再執(zhí)行目標業(yè)務的情況下,及時將目標業(yè)務模塊占用的內(nèi)存進行釋放,節(jié)省多控集群的內(nèi)存資源。另外,在對業(yè)務模塊占用的內(nèi)存進行釋放時,不單以csm端保存的配置信息為依據(jù),進行節(jié)點的業(yè)務模塊內(nèi)存釋放,而是依據(jù)目標節(jié)點的業(yè)務模塊真實申請的內(nèi)存配置信息進行釋放,以防止釋放內(nèi)存時出現(xiàn)釋放的內(nèi)存比當前所申請的內(nèi)存大的錯誤。
13、在一些可選的實施方式中,確定目標業(yè)務模塊的可分配內(nèi)存,并將已申請內(nèi)存和可分配內(nèi)存中大小較小的內(nèi)存作為目標業(yè)務模塊的目標占用內(nèi)存,包括:
14、判斷目標業(yè)務模塊是否配置目標業(yè)務;
15、在目標業(yè)務模塊未配置目標業(yè)務的情況下,將可分配內(nèi)存的大小設置為預設數(shù)值,其中,預設數(shù)值小于已申請內(nèi)存的大??;
16、將可分配內(nèi)存作為目標占用內(nèi)存;
17、在目標業(yè)務模塊配置目標業(yè)務的情況下,根據(jù)控制模塊確定目標業(yè)務模塊能使用的內(nèi)存最大值,根據(jù)內(nèi)存最大值確定可分配內(nèi)存;
18、將已申請內(nèi)存的大小和可分配內(nèi)存的大小進行比較;
19、如果已申請內(nèi)存的大小和可分配內(nèi)存的大小相等,將已申請內(nèi)存或可分配內(nèi)存作為目標占用內(nèi)存;
20、如果可分配內(nèi)存的大小小于已申請內(nèi)存的大小,將可分配內(nèi)存作為目標占用內(nèi)存。
21、在本實施方式中,如果目標業(yè)務模塊未配置目標業(yè)務,將數(shù)值小于已申請內(nèi)存的可分配內(nèi)存作為目標占用內(nèi)存,縮減目標業(yè)務模塊的內(nèi)存,節(jié)省系統(tǒng)內(nèi)存資源。如果目標業(yè)務模塊已配置目標業(yè)務,將已申請內(nèi)存和可分配內(nèi)存中大小較小的內(nèi)存作為目標業(yè)務模塊的目標占用內(nèi)存,并為目標業(yè)務模塊申請目標占用內(nèi)存,增加與當前系統(tǒng)支持的業(yè)務模塊所能使用的內(nèi)存信息的比對,以便于正確的進行內(nèi)存分配。
22、在一些可選的實施方式中,在多個存儲節(jié)點中確定目標節(jié)點,獲取目標節(jié)點的配置信息和目標節(jié)點中業(yè)務模塊的已申請內(nèi)存,并根據(jù)升級版本信息對目標節(jié)點進行版本升級,包括:
23、在多個存儲節(jié)點中將不執(zhí)行配置類操作的存儲節(jié)點作為目標節(jié)點;
24、獲取目標節(jié)點的配置信息和業(yè)務模塊的已申請內(nèi)存,生成非易失性數(shù)據(jù),并將非易失性數(shù)據(jù)保存到存儲設備中的系統(tǒng)硬盤,其中,非易失性數(shù)據(jù)包含配置信息和已申請內(nèi)存的第一內(nèi)存信息;
25、啟動目標節(jié)點的控制模塊,利用控制模塊根據(jù)升級版本信息對目標節(jié)點進行版本升級。
26、在一些可選的實施方式中,根據(jù)配置信息對升級后的目標節(jié)點中業(yè)務模塊進行配置恢復,得到目標業(yè)務模塊,包括:
27、在對目標節(jié)點進行版本升級之后,指示控制模塊從系統(tǒng)硬盤的非易失性數(shù)據(jù)中獲取配置信息;
28、對升級后的目標節(jié)點進行初始化,并根據(jù)配置信息對升級后的目標節(jié)點中業(yè)務模塊進行配置恢復,得到目標業(yè)務模塊。
29、在本實施方式中,控制模塊從系統(tǒng)硬盤的非易失性數(shù)據(jù)中獲取配置信息,對目標節(jié)點進行初始化,并根據(jù)配置信息對升級后的目標節(jié)點中業(yè)務模塊進行配置恢復,使得升級前后,業(yè)務模塊的配置相同,不更改用戶使用習慣。
30、在一些可選的實施方式中,在根據(jù)升級版本信息對目標節(jié)點進行版本升級之后,方法還包括:
31、將升級版本信息發(fā)送至控制狀態(tài)機,指示控制狀態(tài)機進行升級;
32、在控制狀態(tài)機升級完成后,將配置信息和已申請內(nèi)存的第一內(nèi)存信息保存到升級后的控制狀態(tài)機。
33、在本實施方式中,將升級版本信息發(fā)送至控制狀態(tài)機,指示控制狀態(tài)機進行升級,完成整個多控集群的在線升級,使得既縮減了多控集群中業(yè)務模塊的內(nèi)存,又不影響多控集群性能。另外,將配置信息和已申請內(nèi)存的第一內(nèi)存信息保存到升級后的控制狀態(tài)機,便于后續(xù)縮減業(yè)務模塊內(nèi)存時與新的可分配內(nèi)存進行比較,便于正確的進行內(nèi)存分配。
34、在一些可選的實施方式中,方法還包括:
35、在釋放目標占用內(nèi)存之后,如果目標業(yè)務模塊再次執(zhí)行目標業(yè)務,指示控制模塊再次為目標業(yè)務模塊申請目標占用內(nèi)存,并將控制模塊保存的目標占用內(nèi)存的第二內(nèi)存信息發(fā)送至控制狀態(tài)機;
36、控制狀態(tài)機被配置為:在接收到第二內(nèi)存信息之后,為目標業(yè)務模塊分配目標占用內(nèi)存。
37、在本實施方式中,在釋放目標占用內(nèi)存之后,如果目標業(yè)務模塊再次執(zhí)行目標業(yè)務,重新為目標業(yè)務模塊分配目標占用內(nèi)存,不影響目標業(yè)務模塊執(zhí)行目標業(yè)務,并且避免為目標業(yè)務模塊分配過大內(nèi)存,導致其他業(yè)務模塊可使用的內(nèi)存較少。
38、第二方面,本發(fā)明提供了一種內(nèi)存管理裝置,包括:
39、獲取單元,用于獲取升級版本信息;
40、版本升級單元,用于在多個存儲節(jié)點中確定目標節(jié)點,獲取目標節(jié)點的配置信息和目標節(jié)點中業(yè)務模塊的已申請內(nèi)存,并根據(jù)升級版本信息對目標節(jié)點進行版本升級,其中,多個存儲節(jié)點包含于存儲設備;
41、配置恢復單元,用于根據(jù)配置信息對升級后的目標節(jié)點中業(yè)務模塊進行配置恢復,得到目標業(yè)務模塊;
42、確定單元,用于確定目標業(yè)務模塊的可分配內(nèi)存,并將已申請內(nèi)存和可分配內(nèi)存中大小較小的內(nèi)存作為目標業(yè)務模塊的目標占用內(nèi)存;
43、申請單元,用于為目標業(yè)務模塊申請目標占用內(nèi)存。
44、第三方面,本發(fā)明提供了一種計算機設備,包括:存儲器和處理器,存儲器和處理器之間互相通信連接,存儲器中存儲有計算機指令,處理器通過執(zhí)行計算機指令,從而執(zhí)行上述第一方面或其對應的任一實施方式的內(nèi)存管理方法。
45、第四方面,本發(fā)明提供了一種計算機可讀存儲介質(zhì),該計算機可讀存儲介質(zhì)上存儲有計算機指令,計算機指令用于使計算機執(zhí)行上述第一方面或其對應的任一實施方式的內(nèi)存管理方法。
46、第五方面,本發(fā)明提供了一種計算機程序產(chǎn)品,包括計算機指令,計算機指令用于使計算機執(zhí)行上述第一方面或其對應的任一實施方式的內(nèi)存管理方法。