專利名稱:虛擬存儲系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息存儲技術(shù)領(lǐng)域,尤其涉及虛擬存儲系統(tǒng)和方法。
背景技術(shù):
隨著虛擬存儲技術(shù)的不斷發(fā)展,存儲系統(tǒng)逐漸成為網(wǎng)絡(luò)服務(wù)器系統(tǒng)的主 要瓶頸。網(wǎng)絡(luò)存儲系統(tǒng)主要通過虛擬存儲技術(shù)向外部提供高性能的數(shù)據(jù)服務(wù)。 傳統(tǒng)的系統(tǒng)通過對應(yīng)用負(fù)載進(jìn)行分析,在線根據(jù)負(fù)載的變化對系統(tǒng)狀態(tài)進(jìn)行 相應(yīng)調(diào)整進(jìn)行性能優(yōu)化。對負(fù)載特征的描述包括區(qū)分讀寫操作、訪問頻率、 應(yīng)用需要的帶寬和響應(yīng)延遲、訪問區(qū)域等。根據(jù)獲取的負(fù)載特征可以對數(shù)據(jù) 通路上的數(shù)據(jù)傳輸和存放策略進(jìn)行設(shè)計(jì),如緩存和磁盤調(diào)度,從而優(yōu)化存儲 系統(tǒng)的性能。
但是,傳統(tǒng)的虛擬存儲系統(tǒng)的分析僅局限于簡單特征描述或性能需求描 述,存在以下問題
存儲系統(tǒng)的應(yīng)用具有多樣性、復(fù)雜性和不穩(wěn)定性,使用簡單負(fù)載特征難 以對其進(jìn)行精確持久有效的描述,無法進(jìn)一步發(fā)現(xiàn)應(yīng)用負(fù)載的潛在語義特征, 限制了存儲系統(tǒng)的優(yōu)化潛力。
分析簡單負(fù)載特征所使用的統(tǒng)計(jì)方法對復(fù)雜語義特征進(jìn)行分析的開銷難 以被實(shí)際系統(tǒng)接受。分析過程所占用的系統(tǒng)資源和造成的開銷遠(yuǎn)遠(yuǎn)超過優(yōu)化 帶來的好處。
發(fā)明內(nèi)容
本發(fā)明的目的在于,提供一種虛擬存儲系統(tǒng)和方法,能夠?qū)?fù)雜應(yīng)用環(huán)
境自適應(yīng),根據(jù)應(yīng)用負(fù)載的變化而調(diào)整。
本發(fā)明公開了一種虛擬存儲系統(tǒng),所述系統(tǒng)包括主緩存和預(yù)取緩存, 負(fù)載分析模塊,用于收集到達(dá)所述系統(tǒng)的應(yīng)用負(fù)載,分析得出所述應(yīng)用
負(fù)載的數(shù)據(jù)塊關(guān)系信息,發(fā)送所述數(shù)據(jù)塊關(guān)系信息;數(shù)據(jù)預(yù)取模塊,用于接收所述數(shù)據(jù)塊關(guān)系信息,根據(jù)所述數(shù)據(jù)塊關(guān)系信 息預(yù)測將被應(yīng)用程序訪問的數(shù)據(jù),該數(shù)據(jù)為待訪問的數(shù)據(jù),將所述待訪問的
數(shù)據(jù)從低速存儲設(shè)備預(yù)取到預(yù)取緩存;
緩存替換模塊,用于接收所述數(shù)據(jù)塊關(guān)系信息,接收應(yīng)用層的輸入輸出 請求,在主緩存、所述預(yù)取緩存和所述低速存儲設(shè)備中査找并讀取對應(yīng)數(shù)據(jù), 并根據(jù)所述數(shù)據(jù)塊關(guān)系信息預(yù)測數(shù)據(jù)塊被預(yù)取的概率,按所述概率將所述數(shù) 據(jù)塊存儲到所述主緩存的對應(yīng)位置。
所述低速存儲設(shè)備為磁盤,所述系統(tǒng)還包括,數(shù)據(jù)分布模塊,用于接收 所述數(shù)據(jù)塊關(guān)系信息,將同一數(shù)據(jù)塊關(guān)系的數(shù)據(jù)塊存放到磁盤上同一個(gè)磁道 的相鄰扇區(qū)。
所述負(fù)載分析模塊進(jìn)一步用于接收應(yīng)用層的輸入輸出請求,以收集到達(dá) 所述系統(tǒng)的應(yīng)用負(fù)載;并對預(yù)設(shè)時(shí)長內(nèi)的應(yīng)用負(fù)載進(jìn)行挖掘,獲取所述數(shù)據(jù) 塊關(guān)系信息。
所述負(fù)載分析模塊在對預(yù)設(shè)時(shí)長內(nèi)的應(yīng)用負(fù)載進(jìn)行挖掘,獲取所述數(shù)據(jù) 塊關(guān)系信息時(shí)進(jìn)一步用于采用支持噪音過濾的數(shù)據(jù)塊關(guān)系挖掘方法對預(yù)設(shè)時(shí) 長內(nèi)的應(yīng)用負(fù)載進(jìn)行挖掘,生成頻繁模式樹,所述頻繁模式樹為所述數(shù)據(jù)塊 關(guān)系信息的集合。
所述數(shù)據(jù)預(yù)取模塊進(jìn)一步用于在應(yīng)用層的一個(gè)輸入輸出請求到達(dá)時(shí),將 當(dāng)前應(yīng)用負(fù)載中出現(xiàn)的請求序列和頻繁模式樹中的所有前綴進(jìn)行匹配,對同 所述請求序列相同的前綴在所述頻繁模式樹中的后繼數(shù)據(jù)塊進(jìn)行預(yù)取。
所述緩存替換模塊進(jìn)一步用于當(dāng)應(yīng)用層的一個(gè)輸入輸出請求到達(dá)時(shí),根 據(jù)所述輸入輸出請求的地址在所述主緩存中查找請求對應(yīng)數(shù)據(jù)塊,如果查找 到,則將對應(yīng)的數(shù)據(jù)塊返回所述應(yīng)用;如果未査找到對應(yīng)的數(shù)據(jù)塊,則從所 述預(yù)取緩存或者通過所述數(shù)據(jù)分布模塊從磁盤中讀入對應(yīng)數(shù)據(jù)塊,并根據(jù)所 述數(shù)據(jù)塊關(guān)系信息預(yù)測數(shù)據(jù)塊被預(yù)取的概率,按所述概率將所述數(shù)據(jù)塊存儲 到主緩存的對應(yīng)位置。
所述緩存替換模塊在根據(jù)所述數(shù)據(jù)塊關(guān)系信息預(yù)測數(shù)據(jù)塊被預(yù)取的概 率,按所述概率將所述數(shù)據(jù)塊存儲到主緩存的對應(yīng)位置時(shí)進(jìn)一步用于將訪問 所述數(shù)據(jù)塊的請求中出現(xiàn)在符合數(shù)據(jù)塊關(guān)系的請求序列中的請求的數(shù)量占請 求總數(shù)量的比例作為被預(yù)取的概率,如果所述概率超過第一閥值,則將所述數(shù)據(jù)塊存放到最近最少使用端;如果所述概率小于第二閥值,則將所述數(shù)據(jù) 塊存放到最近最多使用端;如果所述概率在所述第一閥值和所述第二閥值之 間,則判斷當(dāng)前對所述數(shù)據(jù)塊的請求是否出現(xiàn)在符合數(shù)據(jù)塊關(guān)系的請求序列 的前綴中,如果是,則被存放到最近最少使用端,否則,存放到最近最多使 用端;所述第一閥值大于所述第二闊值。
所述數(shù)據(jù)分布模塊還用于對于在多個(gè)數(shù)據(jù)塊關(guān)系中存在的數(shù)據(jù)塊,在磁 盤上存放所述數(shù)據(jù)塊多個(gè)副本;當(dāng)接收到所述緩存替換模塊或所述數(shù)據(jù)預(yù)取 模塊發(fā)送的對所述數(shù)據(jù)塊的輸入輸出請求時(shí),選擇距離磁頭最近的副本進(jìn)行 訪問。
所述負(fù)載分析模塊還用于在生成頻繁模式樹時(shí),對所述頻繁模式樹中具 有相同或滿足相似條件的請求集合的結(jié)點(diǎn)進(jìn)行合并。
本發(fā)明還公開了一種虛擬存儲方法,所述方法包括
步驟100,收集到達(dá)的應(yīng)用負(fù)載,分析得出所述應(yīng)用負(fù)載的數(shù)據(jù)塊關(guān)系 信息,發(fā)送所述數(shù)據(jù)塊關(guān)系信息;
步驟200,接收所述數(shù)據(jù)塊關(guān)系信息,根據(jù)所述數(shù)據(jù)塊關(guān)系信息預(yù)測將 被應(yīng)用程序訪問的數(shù)據(jù),該數(shù)據(jù)為待訪問的數(shù)據(jù),將所述待訪問的數(shù)據(jù)從低 速存儲設(shè)備預(yù)取到預(yù)取緩存;
步驟300,接收所述數(shù)據(jù)塊關(guān)系信息,接收應(yīng)用層的輸入輸出請求,在 主緩存、所述預(yù)取緩存和所述低速存儲設(shè)備中查找并讀取對應(yīng)數(shù)據(jù),并根據(jù) 所述數(shù)據(jù)塊關(guān)系信息預(yù)測數(shù)據(jù)塊被預(yù)取的概率,按所述概率將所述數(shù)據(jù)塊存 儲到主緩存的對應(yīng)位置。
所述低速存儲設(shè)備為磁盤,
所述方法還包括
步驟400,接收所述數(shù)據(jù)塊關(guān)系信息,將一個(gè)數(shù)據(jù)塊關(guān)系的數(shù)據(jù)塊存放 到磁盤上同一個(gè)磁道的相鄰扇區(qū)。 所述步驟100進(jìn)一步為,
步驟IIO,接收應(yīng)用層的輸入輸出請求,以收集到達(dá)的應(yīng)用負(fù)載;
步驟120,對預(yù)設(shè)時(shí)長內(nèi)的應(yīng)用負(fù)載進(jìn)行挖掘,獲取所述數(shù)據(jù)塊關(guān)系信
必o
所述步驟120進(jìn)一步為,步驟121,采用支持噪音過濾的數(shù)據(jù)塊關(guān)系挖掘方法對預(yù)設(shè)時(shí)長內(nèi)的應(yīng) 用負(fù)載進(jìn)行挖掘,生成頻繁模式樹,所述頻繁模式樹為所述數(shù)據(jù)塊關(guān)系信息 的集合。
所述步驟200進(jìn)一步為,
步驟210,在應(yīng)用的一個(gè)輸入輸出請求到達(dá)時(shí),將當(dāng)前應(yīng)用負(fù)載中出現(xiàn) 的請求序列和頻繁模式樹中的所有前綴進(jìn)行匹配,對同所述請求序列相同的 前綴在所述頻繁模式樹中的后繼數(shù)據(jù)塊進(jìn)行預(yù)取。
所述步驟300進(jìn)一步為,
步驟310,當(dāng)應(yīng)用的一個(gè)輸入輸出請求到達(dá)時(shí),根據(jù)所述輸入輸出請求 的地址在緩存中査找,如果查找到,則將對應(yīng)的數(shù)據(jù)塊返回所述應(yīng)用;如果 未査找到對應(yīng)的數(shù)據(jù)塊,則執(zhí)行步驟320;
步驟320,從預(yù)取緩存或者從磁盤中讀入對應(yīng)數(shù)據(jù)塊,并根據(jù)所述數(shù)據(jù) 塊關(guān)系信息預(yù)測數(shù)據(jù)塊被預(yù)取的概率,按所述概率將所述數(shù)據(jù)塊存儲到主緩 存的對應(yīng)位置。
所述步驟320進(jìn)一步為,
步驟321,將訪問所述數(shù)據(jù)塊的請求中出現(xiàn)在符合數(shù)據(jù)塊關(guān)系的請求序 列中的請求的數(shù)量占請求總數(shù)量的比例作為被預(yù)取的概率;
步驟322,如果所述概率超過第一閥值,則將所述數(shù)據(jù)塊存放到最近最 少使用端;
步驟323,如果所述概率小于第二閥值,則將所述數(shù)據(jù)塊存放到最近最 多使用端;
步驟324,如果所述概率在所述第一閥值和所述第二閥值之間,則判斷 當(dāng)前對所述數(shù)據(jù)塊的請求是否出現(xiàn)在符合數(shù)據(jù)塊關(guān)系的請求序列的前綴中, 如果是,則被存放到最近最少使用端,否則,存放到最近最多使用端;
所述第一閥值大于所述第二閥值。
所述步驟400還包括,
步驟410,對于在多個(gè)數(shù)據(jù)塊關(guān)系中存在的數(shù)據(jù)塊,在磁盤上存放所述 數(shù)據(jù)塊多個(gè)副本;
步驟420,當(dāng)接收到所述緩存替換模塊或所述數(shù)據(jù)預(yù)取模塊發(fā)送的對所 述數(shù)據(jù)塊的輸入輸出請求時(shí),選擇距離磁頭最近的副本進(jìn)行訪問。所述歩驟100還包括,
步驟130,在生成頻繁模式樹時(shí),對所述頻繁模式樹中具有相同或滿足 相似條件的請求集合的結(jié)點(diǎn)進(jìn)行合并。
本發(fā)明有益效果在于,通過分析獲得應(yīng)用負(fù)載數(shù)據(jù)塊關(guān)系信息,并根據(jù) 該關(guān)系信息進(jìn)行預(yù)取和存儲,能夠在復(fù)雜應(yīng)用環(huán)境下自適應(yīng)根據(jù)應(yīng)用負(fù)載的 變化對整條數(shù)據(jù)通路進(jìn)行性能優(yōu)化,提升存儲系統(tǒng)的性能;同時(shí)無需任何上
層應(yīng)用或者人為對存儲系統(tǒng)的設(shè)置,也無需對應(yīng)用系統(tǒng)進(jìn)行任何假設(shè),具有 良好的通用性、透明性和可擴(kuò)展性。
圖1是本發(fā)明虛擬存儲系統(tǒng)的結(jié)構(gòu)圖2是本發(fā)明虛擬存儲系統(tǒng)的一個(gè)具體實(shí)施方式
結(jié)構(gòu)圖3是頻繁模式樹結(jié)構(gòu)圖4是有效模式示意圖5是請求干涉噪音示意圖6是請求順序噪音示意圖7是請求缺失噪音示意圖8是通過精確挖掘方法輸出的頻繁模式樹結(jié)構(gòu)圖9是本發(fā)明虛擬存儲方法的流程圖。
具體實(shí)施例方式
下面結(jié)合附圖,對本發(fā)明做進(jìn)一步的詳細(xì)描述。
圖1是本發(fā)明系統(tǒng)的結(jié)構(gòu)圖,本發(fā)明系統(tǒng)包括負(fù)載分析模塊100、數(shù)
據(jù)預(yù)取模塊200、緩存替換模塊300、數(shù)據(jù)分布模塊400、主緩存500和預(yù)取 緩存600。
數(shù)據(jù)塊關(guān)系為應(yīng)用的數(shù)據(jù)語義模式在存儲系統(tǒng)中的表現(xiàn)。在存儲系統(tǒng)中, 多個(gè)數(shù)據(jù)塊之間由于數(shù)據(jù)語義相關(guān)導(dǎo)致被相繼訪問,稱這些數(shù)據(jù)塊之間存在 數(shù)據(jù)塊關(guān)系。相比簡單訪問特征,數(shù)據(jù)塊關(guān)系具有更多的數(shù)據(jù)塊訪問信息和 更好的穩(wěn)定性,而且不需要對數(shù)據(jù)塊的時(shí)空分布做任何假設(shè)。
負(fù)載分析模塊100,用于收集到達(dá)所述系統(tǒng)的應(yīng)用負(fù)載,分析得出所述應(yīng)用負(fù)載的數(shù)據(jù)塊關(guān)系信息,發(fā)送所述數(shù)據(jù)塊關(guān)系信息。
數(shù)據(jù)預(yù)取模塊200,用于接收所述數(shù)據(jù)塊關(guān)系信息,根據(jù)所述數(shù)據(jù)塊關(guān) 系信息預(yù)測將被應(yīng)用程序訪問的數(shù)據(jù),該數(shù)據(jù)為待訪問的數(shù)據(jù),將所述待訪 問的數(shù)據(jù)從低速存儲設(shè)備預(yù)取到預(yù)取緩存600。
緩存替換模塊300,用于接收所述數(shù)據(jù)塊關(guān)系信息,接收應(yīng)用的輸入輸 出請求,在主緩存、所述預(yù)取緩存和所述低速存儲設(shè)備中查找并讀取對應(yīng)數(shù) 據(jù),并根據(jù)所述數(shù)據(jù)塊關(guān)系信息預(yù)測數(shù)據(jù)塊被預(yù)取的概率,按所述概率將所 述數(shù)據(jù)塊存儲到主緩存500的對應(yīng)位置。
所述低速存儲設(shè)備為磁盤,所述系統(tǒng)還包括,數(shù)據(jù)分布模塊400,用于 接收所述數(shù)據(jù)塊關(guān)系信息,將同一數(shù)據(jù)塊關(guān)系的數(shù)據(jù)塊存放到磁盤上同一個(gè) 磁道的相鄰扇區(qū)。
負(fù)載分析模塊100與數(shù)據(jù)預(yù)取模塊200、緩存替換模塊300和數(shù)據(jù)分布 模塊400連接,對輸入的數(shù)據(jù)流,將負(fù)載分析模塊100的輸出作為數(shù)據(jù)預(yù)取 模塊200、緩存替換模塊300和數(shù)據(jù)分布模塊400的輸入。數(shù)據(jù)預(yù)取模塊200 和數(shù)據(jù)分布模塊400連接,對輸入的數(shù)據(jù)流,將數(shù)據(jù)預(yù)取模塊200的輸出作 為數(shù)據(jù)分布模塊400的輸入;對輸出的數(shù)據(jù)流,將數(shù)據(jù)分布模塊400的輸出 作為數(shù)據(jù)預(yù)取模塊200的輸入。緩存替換模塊300和數(shù)據(jù)分布模塊400連接, 對輸入的數(shù)據(jù)流,將緩存替換模塊300的輸出作為數(shù)據(jù)分布模塊400的輸入; 對輸出的數(shù)據(jù)流,將數(shù)據(jù)分布模塊400的輸出作為緩存替換模塊300的輸入。
數(shù)據(jù)分布模塊400在輸入輸出的情況下,負(fù)責(zé)將訪問的邏輯地址映射為 實(shí)際存放數(shù)據(jù)塊的磁盤物理地址。負(fù)載分析模塊100在每一個(gè)分析周期,對 負(fù)載進(jìn)行分析之后,數(shù)據(jù)分布模塊400根據(jù)分析得到的數(shù)據(jù)塊關(guān)系,將同一 數(shù)據(jù)塊關(guān)系中出現(xiàn)的數(shù)據(jù)塊在磁盤上存放在相鄰的位置。
圖2為本發(fā)明的系統(tǒng)具體實(shí)施方式
的結(jié)構(gòu)。
虛擬存儲系統(tǒng)包括負(fù)載分析模塊100、數(shù)據(jù)預(yù)取模塊200、緩存替換模塊 300和數(shù)據(jù)分布模塊400、主緩存500和預(yù)取緩存600。應(yīng)用請求通過標(biāo)準(zhǔn)塊 設(shè)備接口接入系統(tǒng)的負(fù)載分析模塊100、數(shù)據(jù)預(yù)取模塊200和緩存替換模塊 300。
負(fù)載分析模塊100,用于分析應(yīng)用負(fù)載中的數(shù)據(jù)塊關(guān)系信息。 負(fù)載分析模塊100的輸入為上層應(yīng)用的I/0請求(輸入輸出請求),輸出為數(shù)據(jù)塊關(guān)系信息集合,例如一個(gè)頻繁模式樹(FP-Tree)。 例如,對于輸入請求序列
S={abcdef…abcdef…abcdef…acbdef…abcdf…agd…agd〉;
輸出的頻繁模式樹如圖3所示。模式樹中每一條從根結(jié)點(diǎn)到葉子結(jié)點(diǎn)的 路徑均表示一個(gè)頻繁訪問模式,在圖3中,(a,b,cl,dl,el,fl)為一個(gè)頻繁訪 問模式,每個(gè)結(jié)點(diǎn)表示該模式上對應(yīng)數(shù)據(jù)塊的請求序列,如a, cl都為一個(gè)結(jié) 點(diǎn)。從根結(jié)點(diǎn)到任意一個(gè)結(jié)點(diǎn)的路徑為一個(gè)模式前綴,簡稱前綴,如 {a, b,cl,dl)為一個(gè)前綴。
負(fù)載分析模塊100收集到達(dá)存儲系統(tǒng)的應(yīng)用負(fù)載,每隔一段預(yù)設(shè)時(shí)間便 對之前一段時(shí)間內(nèi)的應(yīng)用負(fù)載進(jìn)行挖掘,獲取數(shù)據(jù)塊關(guān)系信息。
現(xiàn)有技術(shù)中進(jìn)行挖掘的方法包含多種,例如,深度優(yōu)先搜索的頻繁訪問 序列挖掘方法,Clospan方法。
Clospan方法通過數(shù)據(jù)庫投影技術(shù),將序列的后綴投影成一系列投影數(shù) 據(jù)庫,在這些投影數(shù)據(jù)庫中找出局部的頻繁模式,生成頻繁模式樹。Clospan 對模式的后綴進(jìn)行有條件的裁剪,在一定程度上避免了對重復(fù)分支的搜索。
在一個(gè)較佳的具體實(shí)施方式
中,采用支持噪音過濾的數(shù)據(jù)塊關(guān)系挖掘方法。
設(shè)0= {、 ^,…,M為所有數(shù)據(jù)塊集合,訪問流的源請求序列S={1,
2,…mh設(shè)ieS,使得b(i)表示S第i個(gè)請求訪問的數(shù)據(jù)塊,bG)eD。設(shè)
S的子序列5 ={ r' , ^ ,…~ },其中, 1 s 。 < 5…~ 且
r"i—r"max—st印,其中max—st印為給定的最大請求間隔。設(shè)B(5 ) = {b。'),
b("2),…,b「'M為一個(gè)有序列表。
最大請求間隔為模式序列相鄰請求間的請求間隔臨界值。
兩個(gè)相距很遠(yuǎn)的請求,即使在源序列中出現(xiàn)多次也不能表現(xiàn)它們存在著
相關(guān)性,也就無法用于指導(dǎo)優(yōu)化。此外,由于多訪問流的聚合,組成模式的
請求不一定能連續(xù)到達(dá)存儲系統(tǒng)。因此,挖掘方法需要限制模式序列相鄰請
求間的最大請求間隔。
假設(shè)頻繁訪問序列中兩個(gè)相鄰數(shù)據(jù)塊a, b的到達(dá)間隔成指數(shù)分布 F(x) = l- 則對任意給定的概率p,存在
、—ln(1 —戶) 附ax—5嘩2-15~
義 使得a出現(xiàn)后,b第一次出現(xiàn)在max—st印之前的概率大于等于p。絕大 多數(shù)情況下兩個(gè)相關(guān)的數(shù)據(jù)塊總出現(xiàn)在一 定的間隔內(nèi)。
頻繁訪問模式^={ W…^,滿足^, \***~為S的子序列, B。')二B。0 -B(勺),且支持度sup(^)^、min—sup,其中min—sup為給 定的最小支持度。
因?yàn)樵谠丛L問序列中, 一個(gè)出現(xiàn)次數(shù)較少的訪問子序列可能是由應(yīng)用隨 機(jī)產(chǎn)生,通常不會再次重現(xiàn),因此該子序列所訪問的數(shù)據(jù)塊存在相關(guān)的可能 性不大。定義源序列中相同子序列出現(xiàn)的次數(shù)為該子序列的支持度。給定最 小支持度,當(dāng)一個(gè)子序列出現(xiàn)的次數(shù)不低于最小支持度時(shí),稱為一個(gè)頻繁訪 問模式。
頻繁訪問模式挖掘?yàn)榻o定源請求序列S、最小支持度min—sup和最大請 求間隔max—st印,求頻繁訪問模式^的集合L。
為了便于表示,下文用B(s)表示s或者s所在的模式P。
由于模式序列訪問的數(shù)據(jù)語義關(guān)系具有傳遞性,現(xiàn)有技術(shù)中頻繁序列模 式挖掘算法中的長模式均由兩數(shù)據(jù)塊相關(guān)集合擴(kuò)展而來,對相鄰請求間隔的 限制,使得長模式能更好地描述數(shù)據(jù)塊相關(guān)性?,F(xiàn)有技術(shù)中頻繁序列模式挖 掘方法不設(shè)置模式序列的間隔,現(xiàn)有技術(shù)的C-Miner算法中設(shè)置了整個(gè)模式 序列在訪問流中所允許的最大間隔,max—gap。但是max—gap對不同長度的模 式挖掘不具有適應(yīng)性,會截?cái)噍^長的模式,而在辨識短模式時(shí)過大的間隔又 會引起大量的冗余搜索,影響挖掘效率。而采用max—st印不會影響長模式的 挖掘,并且在對短模式進(jìn)行挖掘時(shí)避免了冗余的搜索開銷。在較佳實(shí)施方式 中通過設(shè)置最大請求間隔解決上述問題。
在生成頻繁模式樹的過程中,采用模糊挖掘方法,對已經(jīng)挖掘得到的模 式樹結(jié)點(diǎn)請求集合的結(jié)點(diǎn)進(jìn)行合并,減少噪音產(chǎn)生的冗余結(jié)點(diǎn)和模式。
現(xiàn)有技術(shù)中存在多種模糊挖掘方法,例如CloSpan對前綴具有包含關(guān)系的 后綴分枝進(jìn)行合并。ApproxMAP先對序列數(shù)據(jù)庫中的序列進(jìn)行聚類,然后在 每一個(gè)類中分別進(jìn)行挖掘,通過分治的方法減少挖掘的規(guī)模。TSP則只對前k 個(gè)最頻繁的序列模式進(jìn)行挖掘。這些方法可以獲得較好的挖掘性能,但模式 信息的損失也較大。Mining Long Sequential Patterns in a Noisy Environment. , Proceedings of the 2002 ACM SIGM0D internationalconference on Management of data, Madison, Wisconsin, 2002, 406 - 417 中提出了在噪音環(huán)境下進(jìn)行高效挖掘的方法,它通過計(jì)算候選序列集合的兼 容性矩陣,來評估兩個(gè)序列可以連接的可能性,從而減少偶爾出現(xiàn)的噪音的 影響。這種方法同樣需要較大的空間存放矩陣。Mining compressed frequent—pattern sets.Proceedings of the 31st international conference on Very large data bases, Trondheim, Norway, 2005, 709 -720中比較兩個(gè)模式及其交易列表,如果模式之間存在包含關(guān)系并且交易列 表相似則可以對模式進(jìn)行聚類。
在一個(gè)較佳的具體實(shí)施方式
ClosSpan中,采用如下方法進(jìn)行合并。
理想情況下,如果訪問序列中的隨機(jī)請求不產(chǎn)生偶然出現(xiàn)的模式,且應(yīng) 用發(fā)出的符合數(shù)據(jù)語義的請求序列均能在訪問流中完整連續(xù)的出現(xiàn),那么現(xiàn) 有技術(shù)的挖掘方法產(chǎn)生的模式樹,每一條從根結(jié)點(diǎn)到葉子結(jié)點(diǎn)的路徑都表示 一個(gè)完整獨(dú)立的模式,因此可以高效地對其進(jìn)行挖掘,完整體現(xiàn)數(shù)據(jù)語義相 關(guān)的頻繁訪問模式稱為有效模式,如圖4所示。
本發(fā)明根據(jù)產(chǎn)生的原因和對挖掘的影響,噪音可以被分為以下四種類型: 請求間隔噪音,應(yīng)用流的聚合使有效模式的請求間隔增大。由于挖掘算法 需要限制模式序列的最大請求間隔,因此請求間隔的增大會導(dǎo)致有效模式被 截?cái)嗌踔裂蜎],這類噪音稱為請求間隔噪音。例如,有效模式(abcdel被請求 間隔噪音淹沒,而只能挖掘得到數(shù)量更多的有效模式片段仏bh (abcW和 {cde}。
請求干涉噪音,同一個(gè)數(shù)據(jù)塊往往存在多種訪問語義,可能在多個(gè)模式 中出現(xiàn)或者被隨機(jī)地訪問到。對這些數(shù)據(jù)塊的訪問會對模式挖掘產(chǎn)生干擾。 如圖5所示,有效模式序列仏cde)和仏bcd)相互干涉,產(chǎn)生了偽模式(adh 這類偽模式大多是正常模式的子模式。并且,偽模式仏W還會作為候選前綴 被繼續(xù)擴(kuò)展,導(dǎo)致冗余的搜索。
請求順序噪音, 一些數(shù)據(jù)塊之間具有非順序敏感的數(shù)據(jù)塊關(guān)系。有的應(yīng) 用不限制相關(guān)數(shù)據(jù)塊的訪問順序,例如數(shù)據(jù)庫的一個(gè)表可以以不同的索引方 式被遍歷。還有一些應(yīng)用,符合語義相關(guān)的數(shù)據(jù)塊訪問由多個(gè)結(jié)點(diǎn)協(xié)作完成, 使得數(shù)據(jù)塊訪問請求的到達(dá)順序隨機(jī)產(chǎn)生。對相同數(shù)據(jù)塊進(jìn)行不同順序的訪 問,會使挖掘算法認(rèn)為存在多種頻繁訪問模式。如圖6所示,對數(shù)據(jù)塊b和c的請求隨機(jī)到達(dá),產(chǎn)生了相似的模式序列(abcdeh (abdel和(acde)。
請求缺失噪音應(yīng)用系統(tǒng)的緩存對具有時(shí)間局部性的數(shù)據(jù)塊請求進(jìn)行過 濾,同時(shí)也過濾掉有效模式序列中的一些請求,導(dǎo)致同一數(shù)據(jù)塊關(guān)系產(chǎn)生不 同的訪問序列。如圖7所示,由于對數(shù)據(jù)塊C的請求被緩存命中而沒有在第
一個(gè)序列片斷中出現(xiàn),因此在挖掘得到有效模式"bcde)之外,還產(chǎn)生了偽模 式(abdeK這類因個(gè)別元素缺失而產(chǎn)生相似模式的噪音,稱為請求缺失噪音。 由模式挖掘過程可知,請求順序噪音和請求干涉噪音對同一數(shù)據(jù)塊關(guān)系 產(chǎn)生不同的模式前綴,但這些模式前綴具有相同的后綴分支。由于順序噪音 產(chǎn)生的模式前綴序列之間不具有包含關(guān)系,因此無法通過Clospan進(jìn)行分支 裁剪。
較佳的具體實(shí)施方式
中,允許對任意前綴的后綴分支進(jìn)行合并,稱為全 局分支裁剪。
全局分支裁剪在產(chǎn)生一個(gè)新的前綴P時(shí),如果前綴集合中存在P'具有與 P相同的后綴分支,則裁剪^的后綴。
全局分支裁剪不僅可以過濾請求順序噪音產(chǎn)生的偽模式,由于它裁剪所 有相同的后綴分支,因此也可以有效過濾請求干涉噪音產(chǎn)生的偽模式。
對相同后綴分支的判斷需要保存并比較每個(gè)候選前綴的序列集合,增加 了挖掘的時(shí)空開銷。為了減少后綴分支的比較開銷,全局分支裁剪比較每個(gè) 前綴的尾結(jié)點(diǎn)請求集合,使用位圖進(jìn)行優(yōu)化。
負(fù)載分析模塊100為頻繁模式樹的每個(gè)結(jié)點(diǎn)維護(hù)一個(gè)位圖(bitmap)來 表示該結(jié)點(diǎn)的請求集合,其中每一位按順序表示請求序列中出現(xiàn)的對該結(jié)點(diǎn) 代表數(shù)據(jù)塊的訪問請求;l表示該請求出現(xiàn)在該結(jié)點(diǎn)的請求集合中,O表示該 請求沒有出現(xiàn)在該結(jié)點(diǎn)的請求集合中。通過對位圖的比較和聚類可以判斷是 否對結(jié)點(diǎn)進(jìn)行合并,從而進(jìn)一步減少分析所需要的時(shí)間和空間開銷。
請求缺失噪音是產(chǎn)生偽模式簇的重要原因,最壞情況下,"個(gè)請求缺失 可以使一個(gè)有效模式產(chǎn)生規(guī)模為2"的偽模式。例如序列
S2={abcdef.. abcdef. . abcdef.. abcdef. . acdef}
挖掘得到sup(abcdef)二4, sup (acdef) =5。由圖8所示,由于一個(gè)子序 列缺少對數(shù)據(jù)塊b的請求,導(dǎo)致結(jié)點(diǎn)cl和c2的請求集合不同,產(chǎn)生了兩個(gè) 搜索分支。與大多數(shù)請求缺失的情況一樣,缺少訪問數(shù)據(jù)塊b的序列個(gè)數(shù)遠(yuǎn)小于完整序列的個(gè)數(shù),因此cl和c2的請求集合近似,并且后綴分支也近似。 進(jìn)一步,在全局分支裁剪的基礎(chǔ)上進(jìn)行分支聚類算法。對相似的后綴分 支進(jìn)行裁剪,稱為分支聚類。
如果兩個(gè)前綴^和P'的尾結(jié)點(diǎn)請求集合T(P)"T(^'),則挖掘得到的后 綴模式分支也近似。Z-Miner方法采用經(jīng)過修改的Kiedoids方法,根據(jù)尾 結(jié)點(diǎn)請求集合對模式前綴進(jìn)行聚類,被聚類到一個(gè)簇的模式前綴具有相似的 后綴分支,這些后綴分支將被裁剪。
首先,兩個(gè)模式的尾結(jié)點(diǎn)請求集合的相似程度為 IT(力門T(力l/iT(p)UT(p')1。 Z-Miner方法用位圖Bm("來表示P的向量,
定義Count(Bm(")為Bm(P)中1的個(gè)數(shù)。規(guī)定^和P'的距離為
1^麵(;^') = 1-0麵《8一&8一)) Count(Bm的IBm(/ '))
其次,由于請求集合的聚類對距離敏感,大的距離會導(dǎo)致對兩個(gè)差異很 大的后綴分支進(jìn)行了合并。因此Z-Miner方法限制同一簇中向量離中心的最 大距離為聚類距離,max一dist。
最后,在新模式加入到一個(gè)簇時(shí),不改變該簇的中心,以免引起漂移。 對不能合并到其他簇的模式P建立一個(gè)新簇,將^加入該簇并將Bm(P)作為 該簇的中心。為了提高挖掘的效率,當(dāng)一個(gè)模式前綴可以被聚類到多個(gè)簇時(shí), 選擇加入第一個(gè)被找到的簇。
實(shí)施例如下所述。
Z-Miner方法, Z-Miner(S, max一st印,min_sup, L)
輸入訪問流源序列S,最小支持度min—sup,最大請求間隔max—st??;
輸出模式集合L;
L<-0;
獲取S中所有出現(xiàn)的數(shù)據(jù)塊集合D;
對每個(gè)數(shù)據(jù)塊bED do 將込加入L; MINING (込 ,S, min—sup, max_step, U ; end do
其中,込為訪問序列S中數(shù)據(jù)塊b的請求全集込二 UlieS且b(i) =b}, MINING如下所述。MINING(P, S, min_sup, max—step, L)
輸入模式前綴廣訪問流序列S,最小支持度min一sup,最大請求間 隔max—step;
輸出模式集合L;
對所有在S上出現(xiàn)在T("之后max—st印間隔內(nèi)的請求,按數(shù)據(jù)塊分別 產(chǎn)生請求集合^,^…;
對每個(gè)滿足I " I 2min_Sup的數(shù)據(jù)塊b do MATC, L,。; if P、0
將P指向^'的尾結(jié)點(diǎn);
6ls6
將P按^擴(kuò)展為^; 將A加入L;
M皿NG(A, S, min—sup, max—step, L);
end if end do
其中,Match(《、max—dist, L,尸)如下所述。
輸入尾結(jié)點(diǎn)請求集合&,聚類距離max—dist,模式集合L;
輸出模式前綴^;
P〈-0;
if存在P' e L,滿足Distance^ max_dist; end ifQ
數(shù)據(jù)預(yù)取模塊200,用于管理預(yù)取緩存600,接收負(fù)載分析模塊100分析 得到的數(shù)據(jù)塊關(guān)系信息,監(jiān)控當(dāng)前到達(dá)的應(yīng)用負(fù)載流,并根據(jù)數(shù)據(jù)塊關(guān)系信 息預(yù)測將被應(yīng)用程序訪問的數(shù)據(jù),將該數(shù)據(jù)預(yù)取到預(yù)取緩存600中。
數(shù)據(jù)預(yù)取模塊200的輸入為負(fù)載分析模塊100輸出的數(shù)據(jù)塊關(guān)系信息和 當(dāng)前上層應(yīng)用的I/0請求,輸出為進(jìn)行預(yù)取的I/0請求,轉(zhuǎn)發(fā)給數(shù)據(jù)分布模 塊400。
數(shù)據(jù)預(yù)取模塊200在應(yīng)用一個(gè)I/0請求到達(dá)時(shí),將當(dāng)前應(yīng)用負(fù)載中出現(xiàn)的請求序列同頻繁模式樹中的所有前綴進(jìn)行匹配,對同所述請求序列相同的
前綴在頻繁模式樹中的后繼數(shù)據(jù)塊進(jìn)行預(yù)取。如果該前綴的后繼路徑在若干
個(gè)數(shù)據(jù)副本集合中,數(shù)據(jù)預(yù)取部件選擇歷史上在該前綴后出現(xiàn)概率最大的數(shù) 據(jù)副本集合進(jìn)行預(yù)取。
緩存替換部件300,用于管理存儲系統(tǒng)的主緩存500,接收所述負(fù)載分析 模塊分析得到的數(shù)據(jù)塊關(guān)系信息,對不同特征信息的數(shù)據(jù)采用不同的緩存策 略,提高緩存的命中率。
緩存替換模塊300的輸入為應(yīng)用發(fā)送來的I/O請求和負(fù)載分析模塊100 輸出的數(shù)據(jù)塊關(guān)系信息,輸出為對預(yù)取緩存600和數(shù)據(jù)分布模塊400的I/O 請求。
當(dāng)應(yīng)用的一個(gè)I/O請求到達(dá)緩存替換模塊時(shí),根據(jù)I/O請求的地址在緩 存中査找請求對應(yīng)數(shù)據(jù)塊,如果查找到對應(yīng)的數(shù)據(jù)塊則返回給該應(yīng)用;如果 沒有查找到對應(yīng)的數(shù)據(jù)塊,則從預(yù)取緩存600或者通過數(shù)據(jù)分布模塊400從 磁盤中讀入該數(shù)據(jù)塊;同時(shí)根據(jù)被訪問數(shù)據(jù)塊的數(shù)據(jù)塊關(guān)系信息在主緩存 500中存放該數(shù)據(jù)塊。
在另一較佳實(shí)施方式中,讀取對應(yīng)數(shù)據(jù)時(shí),判斷對應(yīng)數(shù)據(jù)是否在主緩存 中,如果是,則從主緩存中讀取所述對應(yīng)數(shù)據(jù);如果不存在,則判斷對應(yīng)數(shù) 據(jù)是否在預(yù)取緩存,如果是則從預(yù)取緩存中讀取所述對應(yīng)數(shù)據(jù),如果不在預(yù) 取緩存中,則從磁盤中讀取對應(yīng)數(shù)據(jù)。
根據(jù)數(shù)據(jù)塊關(guān)系信息預(yù)測數(shù)據(jù)塊被預(yù)取的概率,按所述概率將所述數(shù)據(jù) 塊存儲到對應(yīng)位置。將訪問所述數(shù)據(jù)塊的請求中出現(xiàn)在符合數(shù)據(jù)塊關(guān)系的請 求序列中的請求的數(shù)量占該數(shù)據(jù)塊請求總數(shù)量的比例作為被預(yù)取的概率。
緩存替換模塊300將數(shù)據(jù)塊根據(jù)數(shù)據(jù)塊關(guān)系信息分為通??深A(yù)取數(shù)據(jù) 塊、通常不可預(yù)取數(shù)據(jù)塊和部分可預(yù)取數(shù)據(jù)塊。
如果概率超過第一閥值,則該數(shù)據(jù)塊為通常可預(yù)取數(shù)據(jù)塊,通??梢员?預(yù)??;
如果所述概率小于第二閥值,則該數(shù)據(jù)塊為通常不能被預(yù)取數(shù)據(jù)塊,通 常不能被預(yù)取;
如果所述概率在第一閥值和第二閥值之間,則該數(shù)據(jù)塊為部分可預(yù)取數(shù) 據(jù)塊。緩存替換模塊300將通常可預(yù)取數(shù)據(jù)塊放置到LRU端(最近最少使用端), 將通常不可預(yù)取數(shù)據(jù)塊放置到MRU端(最近最多使用端);對部分可預(yù)取數(shù)
據(jù)塊,如果當(dāng)前對該數(shù)據(jù)塊的請求出現(xiàn)在符合數(shù)據(jù)塊關(guān)系的請求序列的前綴
中,則被放置到LRU端,否則放置到MRU端。
數(shù)據(jù)分布模塊400,管理數(shù)據(jù)在磁盤中的映射關(guān)系,接收所述負(fù)載分析 模塊分析得到的數(shù)據(jù)塊關(guān)系信息,對數(shù)據(jù)進(jìn)行遷移和重映射,或者使具有數(shù) 據(jù)塊關(guān)系而被連續(xù)訪問的數(shù)據(jù)被連續(xù)存放在磁盤的相鄰位置上。
數(shù)據(jù)分布模塊400的輸入為負(fù)載分析模塊100輸出的數(shù)據(jù)塊關(guān)系信息、 數(shù)據(jù)預(yù)取模塊200和緩存替換模塊300輸出的I/O請求。
數(shù)據(jù)分布模塊400根據(jù)數(shù)據(jù)塊關(guān)系信息,負(fù)責(zé)在系統(tǒng)運(yùn)行過程中進(jìn)行數(shù) 據(jù)遷移和資源的重映射,使一個(gè)數(shù)據(jù)塊關(guān)系的數(shù)據(jù)塊,數(shù)據(jù)副本集合,在磁 盤上順序存放。如果一個(gè)數(shù)據(jù)塊在多個(gè)數(shù)據(jù)塊關(guān)系中,則在磁盤上存在多個(gè) 副本。當(dāng)接收到I/0請求時(shí),數(shù)據(jù)分布模塊選擇距離磁頭最近的數(shù)據(jù)副本進(jìn) 行訪問。
本發(fā)明的虛擬設(shè)備系統(tǒng)提供統(tǒng)一的數(shù)據(jù)塊關(guān)系語義,將數(shù)據(jù)通路的管理 分為數(shù)據(jù)預(yù)取、緩存替換和數(shù)據(jù)分布功能,提高數(shù)據(jù)通路的帶寬利用率,降 低訪問延遲。
本發(fā)明的虛擬存儲方法流程如圖9所示。
步驟SIOO,收集到達(dá)的應(yīng)用負(fù)載,分析出所述應(yīng)用負(fù)載的數(shù)據(jù)塊關(guān)系信 息,發(fā)送所述數(shù)據(jù)塊關(guān)系信息。 所述步驟SIOO進(jìn)一步為,
步驟S110,接收應(yīng)用層的輸入輸出請求,以收集到達(dá)的應(yīng)用負(fù)載; 步驟S120,對預(yù)設(shè)時(shí)長內(nèi)的應(yīng)用負(fù)載進(jìn)行挖掘,獲取所述數(shù)據(jù)塊關(guān)系信息。
例如預(yù)設(shè)時(shí)長為24小時(shí),則在每天的0點(diǎn)時(shí)刻對前一天的應(yīng)用負(fù)載進(jìn)行 挖掘。
較佳的,步驟S120為采用支持噪音過濾的數(shù)據(jù)塊關(guān)系挖掘方法對預(yù)設(shè)時(shí) 長內(nèi)的應(yīng)用負(fù)載進(jìn)行挖掘,生成頻繁模式樹,所述頻繁模式樹為所述數(shù)據(jù)塊 關(guān)系信息的集合。
進(jìn)一步,在生成頻繁模式樹時(shí),對所述頻繁模式樹中具有相同或滿足相似條件的請求集合的結(jié)點(diǎn)進(jìn)行合并。
步驟S200,接收所述數(shù)據(jù)塊關(guān)系信息,根據(jù)所述數(shù)據(jù)塊關(guān)系信息預(yù)測將 被應(yīng)用程序訪問的數(shù)據(jù),將所述數(shù)據(jù)預(yù)取到預(yù)取緩存。
較佳的,在應(yīng)用的一個(gè)輸入輸出請求到達(dá)時(shí),將當(dāng)前應(yīng)用負(fù)載中出現(xiàn)的 請求序列和頻繁模式樹中的所有前綴進(jìn)行匹配,對同所述請求序列相同的前 綴在所述頻繁模式樹中的后繼數(shù)據(jù)塊進(jìn)行預(yù)取。
步驟S300,接收所述數(shù)據(jù)塊關(guān)系信息,接收應(yīng)用的輸入輸出請求,在主 緩存、所述預(yù)取緩存和所述磁盤中査找并讀取對應(yīng)數(shù)據(jù),并根據(jù)所述數(shù)據(jù)塊 關(guān)系信息預(yù)測數(shù)據(jù)塊被預(yù)取的概率,按所述概率將所述數(shù)據(jù)塊存儲到主緩存 的對應(yīng)位置。
較佳的,步驟S300進(jìn)一步為,
步驟S310,當(dāng)應(yīng)用的一個(gè)輸入輸出請求到達(dá)時(shí),根據(jù)所述輸入輸出請求 的地址在緩存中査找請求對以數(shù)據(jù)塊,如果查找到,則將對應(yīng)的數(shù)據(jù)塊返回 所述應(yīng)用;如果未査找到對應(yīng)的數(shù)據(jù)塊,則執(zhí)行步驟S320;
步驟S320,從預(yù)取緩存或者磁盤中讀入對應(yīng)數(shù)據(jù)塊,并根據(jù)所述數(shù)據(jù)塊 關(guān)系信息預(yù)測數(shù)據(jù)塊被預(yù)取的概率,按所述概率將所述數(shù)據(jù)塊存儲到主緩存 的對應(yīng)位置。
進(jìn)一步,所述步驟S320為,
步驟S321,將訪問所述數(shù)據(jù)塊的請求中出現(xiàn)在符合數(shù)據(jù)塊關(guān)系的請求序 列中的請求的數(shù)量占請求總數(shù)量的比例作為被預(yù)取的概率;
步驟S322,如果所述概率超過第一閥值,則將所述數(shù)據(jù)塊存放到最近最 少使用端;
步驟S323,如果所述概率小于第二閥值,則將所述數(shù)據(jù)塊存放到最近最 多使用端;
步驟S324,如果所述概率在所述第一閥值和所述第二閥值之間,則判斷 當(dāng)前對所述數(shù)據(jù)塊的請求是否出現(xiàn)在符合數(shù)據(jù)塊關(guān)系的請求序列的前綴中, 如果是,則被存放到最近最少使用端,否則,存放到最近最多使用端;
所述第一閥值大于所述第二閥值。
較佳的,方法還包括
步驟S400,接收所述數(shù)據(jù)塊關(guān)系信息,將一個(gè)數(shù)據(jù)塊關(guān)系的數(shù)據(jù)塊在磁盤上順序存放。
較佳的,所述步驟S400還包括,
步驟S410,對于在多個(gè)數(shù)據(jù)塊關(guān)系中存在的數(shù)據(jù)塊,在磁盤上存放所述 數(shù)據(jù)塊多個(gè)副本;
步驟S420,當(dāng)接收到所述緩存替換模塊或所述數(shù)據(jù)預(yù)取模塊發(fā)送的對所 述數(shù)據(jù)塊的輸入輸出請求時(shí),選擇距離磁頭最近的副本進(jìn)行訪問。
本領(lǐng)域的技術(shù)人員在不脫離權(quán)利要求書確定的本發(fā)明的精神和范圍的條 件下,還可以對以上內(nèi)容進(jìn)行各種各樣的修改。因此本發(fā)明的范圍并不僅限 于以上的說明,而是由權(quán)利要求書的范圍來確定的。
權(quán)利要求
1.一種虛擬存儲系統(tǒng),所述系統(tǒng)包括主緩存和預(yù)取緩存,其特征在于,所述系統(tǒng)還包括負(fù)載分析模塊,用于收集到達(dá)所述系統(tǒng)的應(yīng)用負(fù)載,分析得出所述應(yīng)用負(fù)載的數(shù)據(jù)塊關(guān)系信息,發(fā)送所述數(shù)據(jù)塊關(guān)系信息;數(shù)據(jù)預(yù)取模塊,用于接收所述數(shù)據(jù)塊關(guān)系信息,根據(jù)所述數(shù)據(jù)塊關(guān)系信息預(yù)測將被應(yīng)用程序訪問的數(shù)據(jù),該數(shù)據(jù)為待訪問的數(shù)據(jù),將所述待訪問的數(shù)據(jù)從低速存儲設(shè)備預(yù)取到預(yù)取緩存;緩存替換模塊,用于接收所述數(shù)據(jù)塊關(guān)系信息,接收應(yīng)用層的輸入輸出請求,在主緩存、所述預(yù)取緩存和所述低速存儲設(shè)備中查找并讀取對應(yīng)數(shù)據(jù),并根據(jù)所述數(shù)據(jù)塊關(guān)系信息預(yù)測數(shù)據(jù)塊被預(yù)取的概率,按所述概率將所述數(shù)據(jù)塊存儲到所述主緩存的對應(yīng)位置。
2. 如權(quán)利要求1所述的虛擬存儲系統(tǒng),其特征在于, 所述低速存儲設(shè)備為磁盤,所述系統(tǒng)還包括,數(shù)據(jù)分布模塊,用于接收所述數(shù)據(jù)塊關(guān)系信息,將同一數(shù)據(jù)塊關(guān)系的數(shù)據(jù)塊存放到磁盤上同一個(gè)磁道 的相鄰扇區(qū)。
3. 如權(quán)利要求2所述的虛擬存儲系統(tǒng),其特征在于, 所述負(fù)載分析模塊進(jìn)一步用于接收應(yīng)用層的輸入輸出請求,以收集到達(dá)所述系統(tǒng)的應(yīng)用負(fù)載;并對預(yù)設(shè)時(shí)長內(nèi)的應(yīng)用負(fù)載進(jìn)行挖掘,獲取所述數(shù)據(jù) 塊關(guān)系信息。
4. 如權(quán)利要求3所述的虛擬存儲系統(tǒng),其特征在于, 所述負(fù)載分析模塊在對預(yù)設(shè)時(shí)長內(nèi)的應(yīng)用負(fù)載進(jìn)行挖掘,獲取所述數(shù)據(jù)塊關(guān)系信息時(shí)進(jìn)一步用于采用支持噪音過濾的數(shù)據(jù)塊關(guān)系挖掘方法對預(yù)設(shè)時(shí) 長內(nèi)的應(yīng)用負(fù)載進(jìn)行挖掘,生成頻繁模式樹,所述頻繁模式樹為所述數(shù)據(jù)塊 關(guān)系信息的集合。
5. 如權(quán)利要求4所述的虛擬存儲系統(tǒng),其特征在于, 所述數(shù)據(jù)預(yù)取模塊進(jìn)一步用于在應(yīng)用層的一個(gè)輸入輸出請求到達(dá)時(shí),將當(dāng)前應(yīng)用負(fù)載中出現(xiàn)的請求序列和頻繁模式樹中的所有前綴進(jìn)行匹配,對同 所述請求序列相同的前綴在所述頻繁模式樹中的后繼數(shù)據(jù)塊進(jìn)行預(yù)取。
6. 如權(quán)利要求4所述的虛擬存儲系統(tǒng),其特征在于,所述緩存替換模塊進(jìn)一步用于當(dāng)應(yīng)用層的一個(gè)輸入輸出請求到達(dá)時(shí),根 據(jù)所述輸入輸出請求的地址在所述主緩存中查找請求對應(yīng)數(shù)據(jù)塊,如果査找到,則將對應(yīng)的數(shù)據(jù)塊返回所述應(yīng)用;如果未査找到對應(yīng)的數(shù)據(jù)塊,則從所 述預(yù)取緩存或者通過所述數(shù)據(jù)分布模塊從磁盤中讀入對應(yīng)數(shù)據(jù)塊,并根據(jù)所 述數(shù)據(jù)塊關(guān)系信息預(yù)測數(shù)據(jù)塊被預(yù)取的概率,按所述概率將所述數(shù)據(jù)塊存儲 到主緩存的對應(yīng)位置。
7. 如權(quán)利要求6所述的虛擬存儲系統(tǒng),其特征在于, 所述緩存替換模塊在根據(jù)所述數(shù)據(jù)塊關(guān)系信息預(yù)測數(shù)據(jù)塊被預(yù)取的概率,按所述概率將所述數(shù)據(jù)塊存儲到主緩存的對應(yīng)位置時(shí)進(jìn)一步用于將訪問 所述數(shù)據(jù)塊的請求中出現(xiàn)在符合數(shù)據(jù)塊關(guān)系的請求序列中的請求的數(shù)量占請 求總數(shù)量的比例作為被預(yù)取的概率,如果所述概率超過第一閥值,則將所述 數(shù)據(jù)塊存放到最近最少使用端;如果所述概率小于第二閥值,則將所述數(shù)據(jù) 塊存放到最近最多使用端;如果所述概率在所述第一閥值和所述第二閥值之 間,則判斷當(dāng)前對所述數(shù)據(jù)塊的請求是否出現(xiàn)在符合數(shù)據(jù)塊關(guān)系的請求序列 的前綴中,如果是,則被存放到最近最少使用端,否則,存放到最近最多使 用端;所述第一閥值大于所述第二閥值。
8. 如權(quán)利要求4所述的虛擬存儲系統(tǒng),其特征在于,所述數(shù)據(jù)分布模塊還用于對于在多個(gè)數(shù)據(jù)塊關(guān)系中存在的數(shù)據(jù)塊,在磁 盤上存放所述數(shù)據(jù)塊多個(gè)副本;當(dāng)接收到所述緩存替換模塊或所述數(shù)據(jù)預(yù)取 模塊發(fā)送的對所述數(shù)據(jù)塊的輸入輸出請求時(shí),選擇距離磁頭最近的副本進(jìn)行 訪問。
9. 如權(quán)利要求4所述的虛擬存儲系統(tǒng),其特征在于, 所述負(fù)載分析模塊還用于在生成頻繁模式樹時(shí),對所述頻繁模式樹中具有相同或滿足相似條件的請求集合的結(jié)點(diǎn)進(jìn)行合并。
10. —種虛擬存儲方法,其特征在于,所述方法包括步驟100,收集到達(dá)的應(yīng)用負(fù)載,分析得出所述應(yīng)用負(fù)載的數(shù)據(jù)塊關(guān)系 信息,發(fā)送所述數(shù)據(jù)塊關(guān)系信息;步驟200,接收所述數(shù)據(jù)塊關(guān)系信息,根據(jù)所述數(shù)據(jù)塊關(guān)系信息預(yù)測將 被應(yīng)用程序訪問的數(shù)據(jù),該數(shù)據(jù)為待訪問的數(shù)據(jù),將所述待訪問的數(shù)據(jù)從低速存儲設(shè)備預(yù)取到預(yù)取緩存;步驟300,接收所述數(shù)據(jù)塊關(guān)系信息,接收應(yīng)用層的輸入輸出請求,在 主緩存、所述預(yù)取緩存和所述低速存儲設(shè)備中查找并讀取對應(yīng)數(shù)據(jù),并根據(jù) 所述數(shù)據(jù)塊關(guān)系信息預(yù)測數(shù)據(jù)塊被預(yù)取的概率,按所述概率將所述數(shù)據(jù)塊存 儲到主緩存的對應(yīng)位置。
11. 如權(quán)利要求10所述的虛擬存儲方法,其特征在于, 所述低速存儲設(shè)備為磁盤,所述方法還包括步驟400,接收所述數(shù)據(jù)塊關(guān)系信息,將一個(gè)數(shù)據(jù)塊關(guān)系的數(shù)據(jù)塊存放 到磁盤上同一個(gè)磁道的相鄰扇區(qū)。
12. 如權(quán)利要求ll所述的虛擬存儲方法,其特征在于, 所述步驟100進(jìn)一步為,步驟IIO,接收應(yīng)用層的輸入輸出請求,以收集到達(dá)的應(yīng)用負(fù)載;步驟120,對預(yù)設(shè)時(shí)長內(nèi)的應(yīng)用負(fù)載進(jìn)行挖掘,獲取所述數(shù)據(jù)塊關(guān)系信息。
13. 如權(quán)利要求12所述的虛擬存儲方法,其特征在于, 所述步驟120進(jìn)一步為,步驟121,采用支持噪音過濾的數(shù)據(jù)塊關(guān)系挖掘方法對預(yù)設(shè)時(shí)長內(nèi)的應(yīng) 用負(fù)載進(jìn)行挖掘,生成頻繁模式樹,所述頻繁模式樹為所述數(shù)據(jù)塊關(guān)系信息 的集合。
14. 如權(quán)利要求13所述的虛擬存儲方法,其特征在于, 所述步驟200進(jìn)一步為,步驟210,在應(yīng)用的一個(gè)輸入輸出請求到達(dá)時(shí),將當(dāng)前應(yīng)用負(fù)載中出現(xiàn) 的請求序列和頻繁模式樹中的所有前綴進(jìn)行匹配,對同所述請求序列相同的 前綴在所述頻繁模式樹中的后繼數(shù)據(jù)塊進(jìn)行預(yù)取。
15. 如權(quán)利要求13所述的虛擬存儲方法,其特征在于, 所述步驟300進(jìn)一步為,步驟310,當(dāng)應(yīng)用的一個(gè)輸入輸出請求到達(dá)時(shí),根據(jù)所述輸入輸出請求 的地址在緩存中査找,如果查找到,則將對應(yīng)的數(shù)據(jù)塊返回所述應(yīng)用;如果 未查找到對應(yīng)的數(shù)據(jù)塊,則執(zhí)行步驟320;步驟320,從預(yù)取緩存或者從磁盤中讀入對應(yīng)數(shù)據(jù)塊,并根據(jù)所述數(shù)據(jù)塊關(guān)系信息預(yù)測數(shù)據(jù)塊被預(yù)取的概率,按所述概率將所述數(shù)據(jù)塊存儲到主緩 存的對應(yīng)位置。
16. 如權(quán)利要求15所述的虛擬存儲方法,其特征在于, 所述步驟320進(jìn)一步為,步驟321,將訪問所述數(shù)據(jù)塊的請求中出現(xiàn)在符合數(shù)據(jù)塊關(guān)系的請求序 列中的請求的數(shù)量占請求總數(shù)量的比例作為被預(yù)取的概率;步驟322,如果所述概率超過第一閥值,則將所述數(shù)據(jù)塊存放到最近最 少使用端;步驟323,如果所述概率小于第二閥值,則將所述數(shù)據(jù)塊存放到最近最 多使用端;步驟324,如果所述概率在所述第一閥值和所述第二閥值之間,則判斷 當(dāng)前對所述數(shù)據(jù)塊的請求是否出現(xiàn)在符合數(shù)據(jù)塊關(guān)系的請求序列的前綴中, 如果是,則被存放到最近最少使用端,否則,存放到最近最多使用端;所述第一閥值大于所述第二閥值。
17. 如權(quán)利要求13所述的虛擬存儲方法,其特征在于, 所述步驟400還包括,步驟410,對于在多個(gè)數(shù)據(jù)塊關(guān)系中存在的數(shù)據(jù)塊,在磁盤上存放所述 數(shù)據(jù)塊多個(gè)副本;步驟420,當(dāng)接收到所述緩存替換模塊或所述數(shù)據(jù)預(yù)取模塊發(fā)送的對所 述數(shù)據(jù)塊的輸入輸出請求時(shí),選擇距離磁頭最近的副本進(jìn)行訪問。
18. 如權(quán)利要求13所述的虛擬存儲方法,其特征在于, 所述步驟100還包括,步驟130,在生成頻繁模式樹時(shí),對所述頻繁模式樹中具有相同或滿足 相似條件的請求集合的結(jié)點(diǎn)進(jìn)行合并。
全文摘要
本發(fā)明涉及虛擬存儲系統(tǒng)及方法,系統(tǒng)包括主緩存和預(yù)取緩存,主緩存和預(yù)取緩存,負(fù)載分析模塊,用于收集到達(dá)系統(tǒng)的應(yīng)用負(fù)載,分析得出應(yīng)用負(fù)載的數(shù)據(jù)塊關(guān)系信息,發(fā)送數(shù)據(jù)塊關(guān)系信息;數(shù)據(jù)預(yù)取模塊,用于接收數(shù)據(jù)塊關(guān)系信息,根據(jù)數(shù)據(jù)塊關(guān)系信息預(yù)測將被應(yīng)用程序訪問的數(shù)據(jù),該數(shù)據(jù)為待訪問的數(shù)據(jù),將待訪問的數(shù)據(jù)從低速存儲設(shè)備預(yù)取到預(yù)取緩存;緩存替換模塊,用于接收數(shù)據(jù)塊關(guān)系信息,接收應(yīng)用層的輸入輸出請求,在主緩存、預(yù)取緩存和低速存儲設(shè)備中查找并讀取對應(yīng)數(shù)據(jù),并根據(jù)數(shù)據(jù)塊關(guān)系信息預(yù)測數(shù)據(jù)塊被預(yù)取的概率,按概率將數(shù)據(jù)塊存儲到主緩存的對應(yīng)位置。本發(fā)明能夠?qū)?fù)雜應(yīng)用環(huán)境自適應(yīng),根據(jù)應(yīng)用負(fù)載的變化而調(diào)整。
文檔編號G06F12/08GK101630291SQ20091008918
公開日2010年1月20日 申請日期2009年8月3日 優(yōu)先權(quán)日2009年8月3日
發(fā)明者張建剛, 朱旭東, 石興杰, 魯 許, 韓曉明 申請人:中國科學(xué)院計(jì)算技術(shù)研究所;天津中科藍(lán)鯨信息技術(shù)有限公司