次數(shù),即被引用的頻率,而并非指從目標(biāo)時(shí)間點(diǎn)開始總的被引用次數(shù)。
[0033]下面介紹基于上述存儲(chǔ)裝置的存儲(chǔ)方法。
[0034]圖2為本發(fā)明提供的一種存儲(chǔ)方法的實(shí)施例的流程示意圖。如圖所示,本發(fā)明提供的一種存儲(chǔ)方法包括:
[0035]SI,緩存處理模塊3獲取數(shù)據(jù)提升命令,所述數(shù)據(jù)提升命令包括數(shù)據(jù)老化時(shí)間;
[0036]S2,緩存處理模塊3根據(jù)數(shù)據(jù)提升命令,控制低速存儲(chǔ)模塊2將目標(biāo)冷數(shù)據(jù)提升為目標(biāo)熱數(shù)據(jù),并發(fā)送到高速存儲(chǔ)模塊I ;
[0037]S3,緩存處理模塊3啟動(dòng)所述目標(biāo)熱數(shù)據(jù)對(duì)應(yīng)的老化定時(shí)器;
[0038]S4,所述老化定時(shí)器經(jīng)歷所述老化時(shí)間后到期,所述老化定時(shí)器到期后,所述緩存處理模塊判斷所述目標(biāo)熱數(shù)據(jù)的被引用數(shù),若所述目標(biāo)熱數(shù)據(jù)的被引用數(shù)低于其他全部熱數(shù)據(jù)被引用數(shù)的平均值,則將所述熱數(shù)據(jù)移出所述高速存儲(chǔ)模塊I。具體的,步驟S4包括以下子步驟:
[0039]S41,老化定時(shí)器到期后,啟動(dòng)數(shù)據(jù)回調(diào)函數(shù)。
[0040]S42,緩存處理模塊判斷目標(biāo)熱數(shù)據(jù)熱度,若所述目標(biāo)熱數(shù)據(jù)的被引用數(shù)低于其他全部熱數(shù)據(jù)被引用數(shù)的平均值,執(zhí)行步驟S43 ;否則執(zhí)行步驟S44。
[0041]S43,將所述目標(biāo)熱數(shù)據(jù)移出所述高速存儲(chǔ)模塊1,被移出的所述目標(biāo)熱數(shù)據(jù)被降級(jí)至慢速存儲(chǔ)模塊或被刪除。
[0042]S44,將所述目標(biāo)熱數(shù)據(jù)繼續(xù)保存在高速存儲(chǔ)模塊I。
[0043]步驟SI中的所述數(shù)據(jù)提升命令是指,用戶在可計(jì)劃性、可預(yù)期性的I/O訪問(wèn)量增加之前,發(fā)出的用于提前將“冷數(shù)據(jù)” “預(yù)熱”(將即將被大量引用以滿足用戶訪問(wèn)所需虛擬機(jī)啟動(dòng)需求的數(shù)據(jù),提前由低速存儲(chǔ)模塊發(fā)送至高速存儲(chǔ)模塊)的命令。首先對(duì)“冷數(shù)據(jù)” “熱數(shù)據(jù)”和“預(yù)熱”進(jìn)行說(shuō)明冷數(shù)據(jù)”和“熱數(shù)據(jù)”是相對(duì)概念,“冷數(shù)據(jù)”是指被引用次數(shù)較少的數(shù)據(jù),而“熱數(shù)據(jù)”是指被引用次數(shù)較多的數(shù)據(jù);在本實(shí)施例中,存儲(chǔ)于低速存儲(chǔ)單元中的數(shù)據(jù)均稱為冷數(shù)據(jù),而存儲(chǔ)于高速存儲(chǔ)單元中的熱數(shù)據(jù),在經(jīng)過(guò)一段時(shí)間后,也可能因不再被引用而變?yōu)槔鋽?shù)據(jù);在本實(shí)施例中,判定高速存儲(chǔ)數(shù)據(jù)冷熱的方法是,將該數(shù)據(jù)的被引用次數(shù)與其他存儲(chǔ)于高速存儲(chǔ)介質(zhì)中的數(shù)據(jù)的平均被引用次數(shù)對(duì)比,若該數(shù)據(jù)的被引用次數(shù)小于其他數(shù)據(jù)的平均被引用次數(shù),則判定該數(shù)據(jù)為冷數(shù)據(jù),否則判定其為熱數(shù)據(jù)。
[0044]步驟SI中的所述數(shù)據(jù)提升命令的內(nèi)容包括:命令類型、數(shù)據(jù)原路徑、數(shù)據(jù)目標(biāo)路徑,數(shù)據(jù)老化時(shí)間等。具體命令格式如下:
[0045]pb_cache message"[cahce_virtual_device][new_promote_device][begain_sector] [end_sector] [old_time] [cmd_type] 〃,cahce_virtual_device 為用戶可見的虛擬緩存設(shè)備ID,也即上文中的數(shù)據(jù)目標(biāo)路徑,此處的虛擬緩存設(shè)備是指建立在高速存儲(chǔ)模塊中的數(shù)據(jù)分區(qū);new_promote_device為數(shù)據(jù)原路徑,即數(shù)據(jù)所在低速存儲(chǔ)模塊的ID,begain_sector為待提升數(shù)據(jù)所在低速存儲(chǔ)模塊的數(shù)據(jù)起始扇區(qū)(默認(rèn)值_1代表為整個(gè)低速存儲(chǔ)模塊的開始地址),encLsector為提升數(shù)數(shù)據(jù)所在低速存儲(chǔ)模塊的數(shù)據(jù)結(jié)束扇區(qū)(默認(rèn)值-1代表為整個(gè)低速存儲(chǔ)模塊的結(jié)束地址),old_time為數(shù)據(jù)老化時(shí)間(指成功執(zhí)行命令后多久時(shí)間對(duì)數(shù)據(jù)熱度進(jìn)行判斷,單位為秒,下文會(huì)對(duì)此進(jìn)行詳述),cmd_type為命令類型(具體值可以是promote數(shù)據(jù)提升或demote數(shù)據(jù)降級(jí),在此處的數(shù)據(jù)提升命令中為promote數(shù)據(jù)提升)。
[0046]上述數(shù)據(jù)提升命令由用戶預(yù)先制定,并在指定時(shí)間點(diǎn)發(fā)送至緩存處理模塊3 ;緩存處理模塊3按照數(shù)據(jù)提升命令,將制定低速存儲(chǔ)模塊中的指定冷數(shù)據(jù)發(fā)送至高速存儲(chǔ)單元中的虛擬緩存設(shè)備中,提升為熱數(shù)據(jù)。
[0047]可見,本發(fā)明可以根據(jù)用戶主動(dòng)給出的數(shù)據(jù)提升命令,有計(jì)劃地在可預(yù)期的I/O訪問(wèn)量增加之前,把即將被大量引用的冷數(shù)據(jù)預(yù)熱,提前將存儲(chǔ)于低速存儲(chǔ)模塊中的冷數(shù)據(jù)提升至高速存儲(chǔ)模塊,可以避免現(xiàn)有技術(shù)中通過(guò)引用次數(shù)增加提升冷數(shù)據(jù)時(shí),存在的延遲問(wèn)題,可以滿足虛擬機(jī)快速啟動(dòng)的條件。當(dāng)然,本發(fā)明提供的存儲(chǔ)方法并不限于僅使用上述步驟SI中的、采用數(shù)據(jù)提升命令的方式進(jìn)行數(shù)據(jù)提升,步驟SI針對(duì)的是有計(jì)劃的、可預(yù)期的I/o事件的爆發(fā)式增加,而對(duì)于I/O事件數(shù)量起伏較為平穩(wěn)的時(shí)期,通過(guò)緩存處理模塊3獲取低速存儲(chǔ)模塊2中的冷數(shù)據(jù)被引用次數(shù),并將被引用次數(shù)達(dá)到預(yù)設(shè)閾值的數(shù)據(jù)發(fā)送至高速存儲(chǔ)模塊1,提升為熱數(shù)據(jù),即可滿足業(yè)務(wù)需求。通過(guò)將數(shù)據(jù)提升命令和判斷被引用數(shù)的方式結(jié)合進(jìn)行冷數(shù)據(jù)預(yù)熱,既可以保證常規(guī)的業(yè)務(wù)需求,又具備對(duì)有計(jì)劃的、可預(yù)期的I/o事件的爆發(fā)式增加的處理能力。
[0048]執(zhí)行完步驟SI后,執(zhí)行步驟S2,緩存處理模塊3根據(jù)數(shù)據(jù)提升命令,控制低速存儲(chǔ)模塊2將目標(biāo)冷數(shù)據(jù)提升為目標(biāo)熱數(shù)據(jù),并發(fā)送到高速存儲(chǔ)模塊I。
[0049]執(zhí)行完步驟S2后,執(zhí)行步驟S3,緩存處理模塊3啟動(dòng)所述目標(biāo)熱數(shù)據(jù)對(duì)應(yīng)的老化定時(shí)器,即對(duì)每項(xiàng)被新提升進(jìn)入高速存儲(chǔ)模塊I中熱數(shù)據(jù)都配置一個(gè)特定的老化定時(shí)器,緩存處理模塊3調(diào)用內(nèi)核API啟動(dòng)老化定時(shí)器,老化定時(shí)器的超時(shí)時(shí)長(zhǎng)為上述數(shù)據(jù)提升命令中由用戶設(shè)置的數(shù)據(jù)老化時(shí)間。
[0050]執(zhí)行完步驟S3后,執(zhí)行步驟S4。具體的,步驟S4包括以下子步驟:
[0051]S41,老化定時(shí)器到期后,啟動(dòng)數(shù)據(jù)回調(diào)函數(shù)。
[0052]S42,緩存處理模塊判斷目標(biāo)熱數(shù)據(jù)熱度,若所述目標(biāo)熱數(shù)據(jù)的被引用數(shù)低于其他全部熱數(shù)據(jù)被引用數(shù)的平均值,執(zhí)行步驟S43 ;否則執(zhí)行步驟S44。
[0053]S43,將所述目標(biāo)熱數(shù)據(jù)移出所述高速存儲(chǔ)模塊1,被移出的所述目標(biāo)熱數(shù)據(jù)被降級(jí)至慢速存儲(chǔ)模塊或被刪除。
[0054]S44,將所述目標(biāo)熱數(shù)據(jù)繼續(xù)保存在高速存儲(chǔ)模塊I。
[0055]事實(shí)上在完成步驟S2后,冷數(shù)據(jù)已經(jīng)被提升為熱數(shù)據(jù),在數(shù)據(jù)提升完畢之后,再批量啟動(dòng)虛擬機(jī),此時(shí)虛擬機(jī)啟動(dòng)所需要的熱數(shù)據(jù)已經(jīng)存在高速存儲(chǔ)模塊I中,不需要再經(jīng)過(guò)緩慢的提升過(guò)程,批量虛擬機(jī)的啟動(dòng)過(guò)程快速,啟動(dòng)響應(yīng)時(shí)間縮短。在虛擬機(jī)啟動(dòng)之后,部分位于高速存儲(chǔ)模塊I中的熱數(shù)據(jù)(例如系統(tǒng)鏡像文件等)很少被頻繁訪問(wèn),熱度不斷降低,當(dāng)目標(biāo)老化定時(shí)器超時(shí)后,啟動(dòng)老化定時(shí)器的超時(shí)回調(diào)函數(shù),此函數(shù)遍歷之前提升的所有熱數(shù)據(jù)的被引用計(jì)數(shù)信息,將該目標(biāo)老化定時(shí)器所對(duì)應(yīng)的目標(biāo)熱數(shù)據(jù)的被引用數(shù)與其他全部熱數(shù)據(jù)被引用數(shù)的平均值進(jìn)行對(duì)比,若該目標(biāo)熱數(shù)據(jù)的被引用數(shù)大于其他全部熱數(shù)據(jù)被引用數(shù)的平均值,則仍將該目標(biāo)熱數(shù)據(jù)保留在高速存儲(chǔ)模塊I中,并定時(shí)采用上述同樣的方法對(duì)其熱度進(jìn)行判定;若該目標(biāo)熱數(shù)據(jù)的被引用數(shù)小于其他全部熱數(shù)據(jù)被引用數(shù)的平均值,則將該目標(biāo)熱數(shù)據(jù)移出高速存儲(chǔ)模塊I。
[0056]在本實(shí)施例的子步驟S43中,所述緩存處理模塊3將被移出所述高速存儲(chǔ)模塊I的所述目標(biāo)熱數(shù)據(jù),和與其對(duì)應(yīng)的所述目標(biāo)冷數(shù)據(jù)(及該熱數(shù)據(jù)被提升前在低速存儲(chǔ)模塊中的源文件)對(duì)比,若二者內(nèi)容完全一致,則所述高速存儲(chǔ)模塊I刪除被移出的所述目標(biāo)熱數(shù)據(jù),若二者內(nèi)容不同,則所述緩存處理模塊3用被移出的所述目標(biāo)熱數(shù)據(jù)替換原本與其對(duì)應(yīng)的所述目標(biāo)冷數(shù)據(jù),生成新的冷數(shù)據(jù)并存儲(chǔ)于所述低速存儲(chǔ)模塊中。
[0057]在高速存儲(chǔ)模塊I中,因熱數(shù)據(jù)被移出而空出的存儲(chǔ)空間可以繼續(xù)用來(lái)存儲(chǔ)用戶業(yè)務(wù)的熱點(diǎn)數(shù)據(jù)。在本實(shí)施例中,當(dāng)高速存儲(chǔ)模塊I中的數(shù)據(jù)總量大于或等于容量閾值時(shí),