件平均存儲(chǔ)到每個(gè)⑶V節(jié)點(diǎn)上,負(fù)載均衡效果比較理想。而且,當(dāng)⑶V節(jié)點(diǎn)的目錄空間已經(jīng)被寫滿時(shí),通過在每個(gè)CDV節(jié)點(diǎn)上刪除一個(gè)文件,從而可以在一輪文件存儲(chǔ)過程中,仍然可以在每個(gè)CDV節(jié)點(diǎn)上存儲(chǔ)大小相同的一個(gè)文件,即在每個(gè)CDV節(jié)點(diǎn)上均進(jìn)行存儲(chǔ),解決在滿覆蓋情況下的各CDV節(jié)點(diǎn)的負(fù)載均衡問題。
[0058]本發(fā)明實(shí)施例中,當(dāng)新增加一個(gè)為監(jiān)控設(shè)備分配目錄空間的CDV節(jié)點(diǎn)時(shí),則CDM服務(wù)器獲得已經(jīng)存在的CDV節(jié)點(diǎn)上為該監(jiān)控設(shè)備分配的目錄空間的大小,并在新增加的CDV節(jié)點(diǎn)上為該監(jiān)控設(shè)備分配與該大小相同的目錄空間,并將多個(gè)CDV節(jié)點(diǎn)和新增加的CDV節(jié)點(diǎn)添加到一個(gè)組中。進(jìn)一步的,針對該監(jiān)控設(shè)備的每輪文件存儲(chǔ)過程,CDM服務(wù)器基于該組中的所有CDV節(jié)點(diǎn),執(zhí)行步驟301-步驟303,一直到新增加的CDV節(jié)點(diǎn)的目錄空間的文件存儲(chǔ)容量已經(jīng)達(dá)到該目錄空間的預(yù)設(shè)數(shù)值,則:CDM服務(wù)器獲得調(diào)整后的目錄空間大小為存儲(chǔ)空間大小(即該監(jiān)控設(shè)備需要的存儲(chǔ)空間大小)除以該組中的CDV節(jié)點(diǎn)的數(shù)量,并利用調(diào)整后的目錄空間大小,在該組中的每個(gè)CDV節(jié)點(diǎn)上,調(diào)整為該監(jiān)控設(shè)備分配的目錄空間的大小。
[0059]其中,在視頻監(jiān)控系統(tǒng)中,經(jīng)常會(huì)遇到擴(kuò)展監(jiān)控設(shè)備的留存期的情況,如將監(jiān)控設(shè)備的文件從保留I個(gè)月變更為保留2個(gè)月,因此需要擴(kuò)容監(jiān)控設(shè)備的存儲(chǔ)空間?;诖?,可以橫向擴(kuò)展一個(gè)⑶V節(jié)點(diǎn),且新增加的⑶V節(jié)點(diǎn)可以為監(jiān)控設(shè)備分配目錄空間,假設(shè)新增加一個(gè)CDV節(jié)點(diǎn)7。
[0060]如圖2所示,CDM服務(wù)器獲得已經(jīng)存在的⑶V節(jié)點(diǎn)(CDV節(jié)點(diǎn)1、⑶V節(jié)點(diǎn)2和⑶V節(jié)點(diǎn)3)上為監(jiān)控設(shè)備I分配的目錄空間的大小為10G,因此在⑶V節(jié)點(diǎn)7上為監(jiān)控設(shè)備I分配1G的目錄空間I。同理,在⑶V節(jié)點(diǎn)7上為監(jiān)控設(shè)備2分配30G的目錄空間2,在⑶V節(jié)點(diǎn)7上為監(jiān)控設(shè)備3分配15G的目錄空間3。為監(jiān)控設(shè)備分配目錄空間的示意圖可以如圖4所示。
[0061 ] CDM服務(wù)器將⑶V節(jié)點(diǎn)1、⑶V節(jié)點(diǎn)2、⑶V節(jié)點(diǎn)3、⑶V節(jié)點(diǎn)7添加到一個(gè)組中,如將⑶V節(jié)點(diǎn)7添加到組I中。針對監(jiān)控設(shè)備I的每輪文件存儲(chǔ)過程,CDM服務(wù)器將基于⑶V節(jié)點(diǎn)1、⑶V節(jié)點(diǎn)2、⑶V節(jié)點(diǎn)3、⑶V節(jié)點(diǎn)7,執(zhí)行步驟301-步驟303,即每輪文件存儲(chǔ)過程中,會(huì)依次選擇出⑶V節(jié)點(diǎn)1、⑶V節(jié)點(diǎn)2、⑶V節(jié)點(diǎn)3、⑶V節(jié)點(diǎn)7中的一個(gè)⑶V節(jié)點(diǎn)。
[0062]假設(shè)增加CDV節(jié)點(diǎn)7時(shí),針對監(jiān)控設(shè)備I已經(jīng)執(zhí)行了十五輪文件存儲(chǔ)過程,則針對監(jiān)控設(shè)備I的第十六、十七、十八、十九、二十輪文件存儲(chǔ)過程,CDV節(jié)點(diǎn)7的目錄空間I的文件存儲(chǔ)容量未達(dá)到目錄空間I的預(yù)設(shè)數(shù)值。針對監(jiān)控設(shè)備I的第二十一輪文件存儲(chǔ)過程,⑶V節(jié)點(diǎn)7的目錄空間I已經(jīng)被寫滿,因此,針對監(jiān)控設(shè)備I,CDM服務(wù)器獲得調(diào)整后的目錄空間大小為7.5G(30G除以4),因此在⑶V節(jié)點(diǎn)IXDV節(jié)點(diǎn)2、⑶V節(jié)點(diǎn)3、⑶V節(jié)點(diǎn)7上,將為監(jiān)控設(shè)備I分配的目錄空間I的大小由1G調(diào)整為7.5G。同理,CDM服務(wù)器將為監(jiān)控設(shè)備2分配的目錄空間2的大小由30G調(diào)整為22.5G,CDM服務(wù)器將為監(jiān)控設(shè)備3分配的目錄空間3的大小由15G調(diào)整為11.25G,CDM服務(wù)器為監(jiān)控設(shè)備分配目錄空間的示意圖可以如圖5所示。
[0063]其中,CDM服務(wù)器將為監(jiān)控設(shè)備I分配的目錄空間I的大小由1G調(diào)整為7.5G的過程中,分別從⑶V節(jié)點(diǎn)1、⑶V節(jié)點(diǎn)2、⑶V節(jié)點(diǎn)3、⑶V節(jié)點(diǎn)7的目錄空間I中,刪除2.5G大小的文件。在后續(xù)過程中,監(jiān)控設(shè)備I可以在各CDV節(jié)點(diǎn)的目錄空間I的7.5G空間中存儲(chǔ)文件。
[0064]經(jīng)過上述擴(kuò)容處理,各⑶V節(jié)點(diǎn)上均會(huì)騰出部分存儲(chǔ)空間,如各⑶V節(jié)點(diǎn)上騰出的存儲(chǔ)空間大小為(10G+30G+15G)-(7.5G+22.5G+11.25G),即13.75G。假設(shè)需要擴(kuò)容監(jiān)控設(shè)備I的存儲(chǔ)空間,則可以在每個(gè)⑶V節(jié)點(diǎn)上為監(jiān)控設(shè)備I分配大小為21.25G(13.75G+7.5G)的目錄空間1,此時(shí)監(jiān)控設(shè)備I 一共分配到85G的目錄空間,顯著提升了監(jiān)控設(shè)備I的目錄空間。
[0065]本發(fā)明實(shí)施例中,在CDM服務(wù)器在新增加的CDV節(jié)點(diǎn)上為監(jiān)控設(shè)備分配與該大小相同的目錄空間之后,在基于組中的所有CDV節(jié)點(diǎn)執(zhí)行步驟301-步驟303之前,還可以將多個(gè)CDV節(jié)點(diǎn)中的任意一個(gè)CDV節(jié)點(diǎn)的文件索引信息復(fù)制到新增加的CDV節(jié)點(diǎn),并標(biāo)記文件索引信息為不可訪問。
[0066]其中,考慮到在增加⑶V節(jié)點(diǎn)7時(shí),針對監(jiān)控設(shè)備I已經(jīng)執(zhí)行了多輪文件存儲(chǔ)過程,即⑶V節(jié)點(diǎn)IXDV節(jié)點(diǎn)2、⑶V節(jié)點(diǎn)3的目錄空間I均已經(jīng)被寫滿,此時(shí)每輪的文件存儲(chǔ)過程是先從每個(gè)CDV節(jié)點(diǎn)的目錄空間I中刪除一個(gè)文件,然后執(zhí)行監(jiān)控設(shè)備I的文件存儲(chǔ)過程。在此情況下,由于⑶V節(jié)點(diǎn)7還沒有存儲(chǔ)文件,因此將⑶V節(jié)點(diǎn)7加入到組I之后,無法先從⑶V節(jié)點(diǎn)IXDV節(jié)點(diǎn)2 XDV節(jié)點(diǎn)3 XDV節(jié)點(diǎn)7的目錄空間I中刪除一個(gè)文件?;诖?,本發(fā)明實(shí)施例中,CDM服務(wù)器會(huì)將多個(gè)CDV節(jié)點(diǎn)中的任意一個(gè)CDV節(jié)點(diǎn)I的文件索引信息復(fù)制到⑶V節(jié)點(diǎn)7,由于⑶V節(jié)點(diǎn)I的目錄空間I已經(jīng)被寫滿,基于⑶V節(jié)點(diǎn)I的文件索引信息,CDM服務(wù)器會(huì)認(rèn)為⑶V節(jié)點(diǎn)7的目錄空間I已經(jīng)被寫滿,從而可以從⑶V節(jié)點(diǎn)1、⑶V節(jié)點(diǎn)2、⑶V節(jié)點(diǎn)3、⑶V節(jié)點(diǎn)7的目錄空間I中刪除一個(gè)文件。
[0067]其中,文件索引信息包括文件標(biāo)識(shí)和文件位置(CDV節(jié)點(diǎn)上存儲(chǔ)文件的位置),在將CDV節(jié)點(diǎn)I的文件索引信息(如文件標(biāo)識(shí)I和文件位置I)復(fù)制到CDV節(jié)點(diǎn)7后,如果有訪問文件標(biāo)識(shí)I對應(yīng)文件的需求,由于CDV節(jié)點(diǎn)7的文件索引信息包括文件標(biāo)識(shí)1,因此會(huì)在CDV節(jié)點(diǎn)7中檢索相應(yīng)的文件,實(shí)際上CDV節(jié)點(diǎn)7中并未存儲(chǔ)任何文件,導(dǎo)致文件檢索失敗。基于此,本發(fā)明實(shí)施例中,標(biāo)記復(fù)制到CDV節(jié)點(diǎn)7的文件索引信息為不可訪問,針對訪問文件標(biāo)識(shí)I對應(yīng)文件的需求,不會(huì)在CDV節(jié)點(diǎn)7中檢索相應(yīng)的文件。
[0068]基于與上述方法同樣的發(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了一種文件存儲(chǔ)的裝置,應(yīng)用于包括監(jiān)控設(shè)備、CDM服務(wù)器和多個(gè)CDV節(jié)點(diǎn)的系統(tǒng)中,該文件存儲(chǔ)的裝置應(yīng)用在CDM服務(wù)器上。其中,該文件存儲(chǔ)的裝置可以通過軟件實(shí)現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實(shí)現(xiàn)。以軟件實(shí)現(xiàn)為例,作為一個(gè)邏輯意義上的裝置,是通過文件存儲(chǔ)的裝置所在的CDM服務(wù)器的處理器,將非易失性存儲(chǔ)器中對應(yīng)的計(jì)算機(jī)程序指令讀取到內(nèi)存中運(yùn)行形成的。從硬件層面而言,如圖6所示,為本發(fā)明提出的文件存儲(chǔ)的裝置所在的CDM服務(wù)器的一種硬件結(jié)構(gòu)圖,除了圖6所示的處理器、網(wǎng)絡(luò)接口、內(nèi)存以及非易失性存儲(chǔ)器外,CDM服務(wù)器還可以包括其他硬件,如負(fù)責(zé)處理報(bào)文的轉(zhuǎn)發(fā)芯片等;從硬件結(jié)構(gòu)上來講,該CDM服務(wù)器還可能是分布式設(shè)備,可能包括多個(gè)接口卡,以便在硬件層面進(jìn)行報(bào)文處理的擴(kuò)展。
[0069]如圖7所示,為本發(fā)明提出的文件存儲(chǔ)的裝置的結(jié)構(gòu)圖,所述文件存儲(chǔ)的裝置應(yīng)用在CDM服務(wù)器上,且所述文件存儲(chǔ)的裝置具體包括:
[0070]分配模塊11,用于獲得所述監(jiān)控設(shè)備需要的存儲(chǔ)空間大小以及所述多個(gè)CDV節(jié)點(diǎn)的數(shù)量,并在所述多個(gè)CDV節(jié)點(diǎn)中的每個(gè)CDV節(jié)點(diǎn)上,為所述監(jiān)控設(shè)備分配大小為所述存儲(chǔ)空間大小除以所述數(shù)量的目錄空間;
[0071]處理模塊12,用于針對所述監(jiān)控設(shè)備的每輪文件存儲(chǔ)過程,在接收到來自所述監(jiān)控設(shè)備的存儲(chǔ)請求時(shí),判斷本輪文件存儲(chǔ)過程中是否存在未選擇過的CDV節(jié)點(diǎn);如果是,則從未選擇過的CDV節(jié)點(diǎn)中選擇一個(gè)CDV節(jié)點(diǎn),將當(dāng)前選擇的CDV節(jié)點(diǎn)標(biāo)記為已經(jīng)選擇過,并將當(dāng)前選擇的CDV節(jié)點(diǎn)上為所述監(jiān)控設(shè)備分配的目錄空間的信息發(fā)送給所述監(jiān)控設(shè)備,以使所述監(jiān)控設(shè)備利用所述目錄空間的信息在當(dāng)前選擇的CDV節(jié)點(diǎn)的所述目錄空間中存儲(chǔ)指定大小的一個(gè)文件,并重新向所述CDM服務(wù)器發(fā)送存儲(chǔ)請求;
[0072]如果否,則將所述多個(gè)CDV節(jié)點(diǎn)中的每個(gè)CDV節(jié)點(diǎn)均標(biāo)記為未選擇過,由所述處理模塊12執(zhí)行所述監(jiān)控設(shè)備的下一輪文件存儲(chǔ)過程。
[0073]所述處理模塊12,具體用于在從未選擇過的⑶V節(jié)點(diǎn)中選擇一個(gè)⑶V節(jié)點(diǎn)的過程中,獲得未選擇過的各CDV節(jié)點(diǎn)的任務(wù)執(zhí)行數(shù)量,并從未選擇過的各CDV節(jié)點(diǎn)中選擇一個(gè)任務(wù)執(zhí)行數(shù)量最少的CDV節(jié)點(diǎn)。
[0074]所述處理模塊12,進(jìn)一步用于在執(zhí)行所述監(jiān)控設(shè)備的每輪文件存儲(chǔ)過程之前,判斷所述多個(gè)CDV節(jié)點(diǎn)中是否有CDV節(jié)點(diǎn),在所述目錄空間的文件存儲(chǔ)容量已經(jīng)達(dá)到所述目錄空間的預(yù)設(shè)數(shù)值;如果是,則從所述多個(gè)CDV節(jié)點(diǎn)中的每個(gè)CDV節(jié)點(diǎn)的所述目錄空間中刪除一個(gè)文件,并執(zhí)行所述監(jiān)控設(shè)備的文件存儲(chǔ)過程;如果否,則直接執(zhí)行所述監(jiān)控設(shè)備的文件存儲(chǔ)過程。
[0075]所述處理模塊12,進(jìn)一步用于當(dāng)新增加一個(gè)為所述監(jiān)控設(shè)備分配目錄空間的⑶V節(jié)點(diǎn)時(shí),獲得已經(jīng)存在的CDV節(jié)點(diǎn)上為所述監(jiān)控設(shè)備分配的目錄空間的大小,在新增加的CDV節(jié)點(diǎn)上為所述監(jiān)控設(shè)備分配與該大小相同的目錄空間,并將所述多個(gè)CDV節(jié)點(diǎn)和新增加的CDV節(jié)點(diǎn)添加到一個(gè)組中;
[0076]針對所述監(jiān)控設(shè)備的每輪文件存儲(chǔ)過程,基于所述組中的所有CDV節(jié)點(diǎn),在接收到來自所述監(jiān)控設(shè)備的存儲(chǔ)請求時(shí),判斷本輪文件存儲(chǔ)過程中是否存在未選擇過的CDV節(jié)點(diǎn);如果是,則從未選擇過的CDV節(jié)點(diǎn)中選擇一個(gè)CDV節(jié)點(diǎn),將當(dāng)前選擇的CDV節(jié)點(diǎn)標(biāo)記為已經(jīng)選擇過,并將當(dāng)前選擇的CDV節(jié)點(diǎn)上為所述監(jiān)控設(shè)備分配的目錄空間的信息發(fā)送給所述監(jiān)控設(shè)備,以使所述監(jiān)控設(shè)備利用所述目錄空間的信息在當(dāng)前選擇的CDV節(jié)點(diǎn)的所述目錄空間中存儲(chǔ)指定大小的一個(gè)文件,并重新向所述CDM服務(wù)器發(fā)送存儲(chǔ)請求;如果否,則將所述多個(gè)CDV節(jié)點(diǎn)中的每個(gè)CDV節(jié)點(diǎn)均標(biāo)記為未選擇過,由所述處理模塊12執(zhí)行所述監(jiān)控設(shè)備的下一輪文件存儲(chǔ)過程;
[0077]當(dāng)新增