緩存的處理方法和裝置制造方法
【專利摘要】本發(fā)明實(shí)施例提供一種緩存的處理方法和裝置,包括:接收讀輸入輸出IO請(qǐng)求,并根據(jù)所述讀IO請(qǐng)求,從父鏡像中讀取小數(shù)據(jù)塊;若包含所述小數(shù)據(jù)塊的第一大數(shù)據(jù)塊不在緩存鏡像中,則檢查所述緩存鏡像的存儲(chǔ)空間是否已滿或者所述存儲(chǔ)空間的占用比例是否大于或者等于預(yù)設(shè)比例閾值;若所述緩存鏡像的存儲(chǔ)空間已滿或者所述存儲(chǔ)空間的占用比例大于或者等于所述預(yù)設(shè)比例閾值,則將所述第一大數(shù)據(jù)塊替換所述緩存鏡像中的第二大數(shù)據(jù)塊,并將所述小數(shù)據(jù)塊寫入所述緩存鏡像中所述第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間,用新的第一大數(shù)據(jù)塊替換老化的第二大數(shù)據(jù)塊,然后將需要寫入的小數(shù)據(jù)塊寫入緩存鏡像中,有效提高了存儲(chǔ)空間的利用率。
【專利說明】緩存的處理方法和裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明實(shí)施例設(shè)及存儲(chǔ)技術(shù),尤其設(shè)及一種緩存的處理方法和裝置。
【背景技術(shù)】
[0002] 桌面云是將個(gè)人計(jì)算機(jī)桌面環(huán)境通過云計(jì)算模式從物理機(jī)分離出來(lái),成為一種可 W對(duì)外提供桌面的服務(wù)。
[0003] 圖1為現(xiàn)有技術(shù)中一種桌面云的應(yīng)用場(chǎng)景示意圖。如圖1所示,該應(yīng)用場(chǎng)景包括 父鏡像1、緩存鏡像2、子鏡像3和虛擬機(jī)4,其中,緩存鏡像2鏈接克隆于父鏡像1,子鏡像 3鏈接克隆于緩存鏡像2。在該場(chǎng)景下,如圖1所示,針對(duì)虛擬機(jī)4中的讀寫10,寫10直接 將數(shù)據(jù)塊寫入到子鏡像3中;讀10先到子鏡像中讀取數(shù)據(jù)塊,如果數(shù)據(jù)塊存在于子鏡像中, 則在子鏡像中讀??;如果數(shù)據(jù)塊不存在于子鏡像中,再到緩存鏡像中讀取;如果數(shù)據(jù)塊不 存在于緩存鏡像中,則到父鏡像中讀取,并將讀取到的數(shù)據(jù)塊寫入到緩存鏡像中,W便下一 次讀取相同數(shù)據(jù)塊時(shí)可W從緩存鏡像中讀取該數(shù)據(jù)塊。
[0004] 但是,父鏡像、緩存鏡像、子鏡像都采用虛擬硬盤文件格式(Virtual Hard Disk 化rmat,簡(jiǎn)稱VHD),VHD文件的最大容量不超過本地存儲(chǔ)文件系統(tǒng)的大小,并且,VHD無(wú)法進(jìn) 行數(shù)據(jù)塊的替換功能,例如,從父鏡像中讀取到的數(shù)據(jù)塊只能通過追加的方式依次寫入緩 存鏡像中,當(dāng)緩存鏡像所在的本地存儲(chǔ)文件系統(tǒng)空間用完后,就無(wú)法再將新的數(shù)據(jù)塊寫入 緩存鏡像中,而緩存鏡像中部分?jǐn)?shù)據(jù)可能后續(xù)不會(huì)或很少再被讀取,因此,導(dǎo)致緩存鏡像中 的有用數(shù)據(jù)塊比例變少,從而導(dǎo)致緩存空間的浪費(fèi)。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實(shí)施例提供一種緩存的處理方法和裝置,用新的第一大數(shù)據(jù)塊替換老化的 第二大數(shù)據(jù)塊,然后將需要寫入的小數(shù)據(jù)塊寫入緩存鏡像中,有效提高了存儲(chǔ)空間的利用 率。
[0006] 本發(fā)明實(shí)施例第一方面提供一種緩存的處理方法,包括:
[0007] 接收讀輸入輸出10請(qǐng)求,并根據(jù)所述讀10請(qǐng)求,從父鏡像中讀取小數(shù)據(jù)塊;
[000引若包含所述小數(shù)據(jù)塊的第一大數(shù)據(jù)塊不在緩存鏡像中,則檢查所述緩存鏡像的存 儲(chǔ)空間是否已滿或者所述存儲(chǔ)空間的占用比例是否大于或者等于預(yù)設(shè)比例闊值;
[0009] 若所述緩存鏡像的存儲(chǔ)空間已滿或者所述存儲(chǔ)空間的占用比例大于或者等于所 述預(yù)設(shè)比例闊值,則將所述第一大數(shù)據(jù)塊替換所述緩存鏡像中的第二大數(shù)據(jù)塊,并將所述 小數(shù)據(jù)塊寫入所述緩存鏡像中所述第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間。
[0010] 在第一方面的第一種可能實(shí)現(xiàn)方式中,所述從父鏡像中讀取小數(shù)據(jù)塊之后,所述 方法還包括:
[0011] 將包含所述小數(shù)據(jù)塊的第一大數(shù)據(jù)塊的訪問計(jì)數(shù)值加1;
[0012] 則在所述若包含所述小數(shù)據(jù)塊的第一大數(shù)據(jù)塊不在緩存鏡像中,則檢查所述緩存 鏡像的存儲(chǔ)空間是否已滿或者所述存儲(chǔ)空間的占用比例是否大于或者等于預(yù)設(shè)比例闊值 之前,所述方法還包括:
[0013] 將所述第一大數(shù)據(jù)塊的標(biāo)識(shí)和對(duì)應(yīng)的訪問計(jì)數(shù)值寫入管理鏈表。
[0014] 結(jié)合第一方面的第一種可能實(shí)現(xiàn)方式,在第一方面的第二種可能實(shí)現(xiàn)方式中,還 包括:
[0015] 若所述緩存鏡像的存儲(chǔ)空間未滿或者所述存儲(chǔ)空間的占用比例小于所述預(yù)設(shè)比 例闊值,則將所述第一大數(shù)據(jù)塊加入所述緩存鏡像,并將所述小數(shù)據(jù)塊寫入所述緩存鏡像 中所述第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間。
[0016] 結(jié)合第一方面的第一種可能實(shí)現(xiàn)方式,在第一方面的第=種可能實(shí)現(xiàn)方式中,所 述將所述第一大數(shù)據(jù)塊替換所述緩存鏡像中的第二大數(shù)據(jù)塊,并將所述小數(shù)據(jù)塊寫入所述 緩存鏡像中所述第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間,具體包括:
[0017] 根據(jù)所述第一大數(shù)據(jù)塊的訪問計(jì)數(shù)值,從所述管理鏈表的表頭位置開始依次查 找,獲取所述第二大數(shù)據(jù)塊,將所述第二大數(shù)據(jù)塊的標(biāo)識(shí)和訪問計(jì)數(shù)值從所述管理鏈表中 移除,并將所述第一大數(shù)據(jù)塊的標(biāo)識(shí)和訪問計(jì)數(shù)值寫入所述管理鏈表中第=個(gè)大數(shù)據(jù)塊的 標(biāo)識(shí)之前;其中,所述第二大數(shù)據(jù)塊為在所述管理鏈表中,訪問計(jì)數(shù)值小于或者等于第一大 數(shù)據(jù)塊的訪問計(jì)數(shù)值的第一個(gè)數(shù)據(jù)塊;所述第=大數(shù)據(jù)塊為刪除了所述第二大數(shù)據(jù)塊的標(biāo) 識(shí)后的管理鏈表中,訪問計(jì)數(shù)值大于或者等于所述第一大數(shù)據(jù)塊的訪問計(jì)數(shù)值的第一個(gè)數(shù) 據(jù)塊;
[001引在塊分配表BAT中將第二大數(shù)據(jù)塊對(duì)應(yīng)的位置標(biāo)記失效,并將所述第一大數(shù)據(jù)塊 的起始偏移位置存儲(chǔ)到BAT中的第一大數(shù)據(jù)塊對(duì)應(yīng)的位置;其中,所述第一大數(shù)據(jù)塊的起 始偏移位置為所述第二大數(shù)據(jù)塊的起始偏移位置;
[0019] 將所述小數(shù)據(jù)塊寫入所述緩存鏡像中所述第一大數(shù)據(jù)塊的起始偏移位置對(duì)應(yīng)的 存儲(chǔ)空間。
[0020] 結(jié)合第一方面的第二種可能實(shí)現(xiàn)方式,在第一方面的第四種可能實(shí)現(xiàn)方式中,所 述將所述第一大數(shù)據(jù)塊加入所述緩存鏡像,并將所述小數(shù)據(jù)塊寫入所述緩存鏡像中所述第 一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間,具體包括:
[0021] 根據(jù)所述第一大數(shù)據(jù)塊的訪問計(jì)數(shù)值,將所述第一大數(shù)據(jù)塊的標(biāo)識(shí)和訪問計(jì)數(shù)值 寫入所述管理鏈表中;
[0022] 在所述緩存鏡像中查找到一個(gè)空閑塊,并將所述小數(shù)據(jù)塊寫入所述空閑塊;其中, 所述空閑塊為所述第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間;
[0023] 將所述空閑塊的起始偏移位置寫入BAT中所述空閑塊對(duì)應(yīng)的位置。
[0024] 結(jié)合第一方面的第一種可能實(shí)現(xiàn)方式,在第一方面的第五種可能實(shí)現(xiàn)方式中,若 所述第一大數(shù)據(jù)塊在緩存鏡像中,則根據(jù)所述訪問計(jì)數(shù)值,在所述管理鏈表中更新所述第 一大數(shù)據(jù)塊的標(biāo)識(shí)所在的位置和所述訪問計(jì)數(shù)值,并將所述小數(shù)據(jù)塊寫入所述緩存鏡像中 第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間。
[0025] 本發(fā)明實(shí)施例第二方面提供一種緩存的處理裝置,包括:
[0026] 讀取模塊,用于接收讀輸入輸出10請(qǐng)求,并根據(jù)所述讀10請(qǐng)求,從父鏡像中讀取 小數(shù)據(jù)塊;
[0027] 檢查模塊,用于若包含所述小數(shù)據(jù)塊的第一大數(shù)據(jù)塊不在緩存鏡像中,則檢查所 述緩存鏡像的存儲(chǔ)空間是否已滿或者所述存儲(chǔ)空間的占用比例是否大于或者等于預(yù)設(shè)比 例闊值;
[002引處理模塊,用于若所述緩存鏡像的存儲(chǔ)空間已滿或者所述存儲(chǔ)空間的占用比例大 于或者等于所述預(yù)設(shè)比例闊值,則將所述第一大數(shù)據(jù)塊替換所述緩存鏡像中的第二大數(shù)據(jù) 塊,并將所述小數(shù)據(jù)塊寫入所述緩存鏡像中所述第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間。
[0029] 在第二方面的第一種可能實(shí)現(xiàn)方式中,所述讀取模塊還用于將包含所述小數(shù)據(jù)塊 的第一大數(shù)據(jù)塊的訪問計(jì)數(shù)值加1 ;
[0030] 所述處理模塊還用于將所述第一大數(shù)據(jù)塊的標(biāo)識(shí)和對(duì)應(yīng)的訪問計(jì)數(shù)值寫入管理 鏈表。
[0031] 結(jié)合第二方面的第一種可能實(shí)現(xiàn)方式,在第二方面的第二中可能實(shí)現(xiàn)方式中,所 述處理模塊還用于若所述緩存鏡像的存儲(chǔ)空間未滿或者所述存儲(chǔ)空間的占用比例小于所 述預(yù)設(shè)比例闊值,則將所述第一大數(shù)據(jù)塊加入所述緩存鏡像,并將所述小數(shù)據(jù)塊寫入所述 緩存鏡像中所述第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間。
[0032] 結(jié)合第二方面的第一種可能實(shí)現(xiàn)方式,在第二方面的第=種可能實(shí)現(xiàn)方式中,所 述處理模塊包括:
[0033] 第二大數(shù)據(jù)塊獲取單元,用于根據(jù)所述第一大數(shù)據(jù)塊的訪問計(jì)數(shù)值,從所述管理 鏈表的表頭位置開始依次查找,獲取所述第二大數(shù)據(jù)塊,將所述第二大數(shù)據(jù)塊的標(biāo)識(shí)和訪 問計(jì)數(shù)值從所述管理鏈表中移除,并將所述第一大數(shù)據(jù)塊的標(biāo)識(shí)和訪問計(jì)數(shù)值寫入所述管 理鏈表中第=個(gè)大數(shù)據(jù)塊的標(biāo)識(shí)之前;其中,所述第二大數(shù)據(jù)塊為在所述管理鏈表中,訪問 計(jì)數(shù)值小于或者等于第一大數(shù)據(jù)塊的訪問計(jì)數(shù)值的第一個(gè)數(shù)據(jù)塊;所述第=大數(shù)據(jù)塊為刪 除了所述第二大數(shù)據(jù)塊的標(biāo)識(shí)后的管理鏈表中,訪問計(jì)數(shù)值大于或者等于所述第一大數(shù)據(jù) 塊的訪問計(jì)數(shù)值的第一個(gè)數(shù)據(jù)塊;
[0034] 位置標(biāo)記單元,用于在BAT中將第二大數(shù)據(jù)塊對(duì)應(yīng)的位置標(biāo)記失效,并將所述第 一大數(shù)據(jù)塊的起始偏移位置存儲(chǔ)到BAT中的第一大數(shù)據(jù)塊對(duì)應(yīng)的位置;其中,所述第一大 數(shù)據(jù)塊的起始偏移位置為所述第二大數(shù)據(jù)塊的起始偏移位置;
[0035] 小數(shù)據(jù)塊寫入單元,用于將所述小數(shù)據(jù)塊寫入所述緩存鏡像中所述第一大數(shù)據(jù)塊 的起始偏移位置對(duì)應(yīng)的存儲(chǔ)空間。
[0036] 結(jié)合第二方面的第二種可能實(shí)現(xiàn)方式,在第二方面的第四種可能實(shí)現(xiàn)方式中,所 述處理模塊包括:
[0037] 標(biāo)識(shí)寫入單元,用于根據(jù)所述第一大數(shù)據(jù)塊的訪問計(jì)數(shù)值,將所述第一大數(shù)據(jù)塊 的標(biāo)識(shí)和訪問計(jì)數(shù)值寫入所述管理鏈表中;
[003引空閑塊獲取單元,用于在所述緩存鏡像中查找到一個(gè)空閑塊,并將所述小數(shù)據(jù)塊 寫入所述空閑塊;其中,所述空閑塊為所述第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間;
[0039] 位置寫入單元,用于將所述空閑塊的起始偏移位置寫入BAT中所述空閑塊對(duì)應(yīng)的 位置。
[0040] 結(jié)合第二方面的第一種可能實(shí)現(xiàn)方式,在第二方面的第五種可能實(shí)現(xiàn)方式中,所 述處理模塊包括:
[0041] 更新單元,用于若所述第一大數(shù)據(jù)塊在緩存鏡像中,則根據(jù)所述訪問計(jì)數(shù)值,在所 述管理鏈表中更新所述第一大數(shù)據(jù)塊的標(biāo)識(shí)所在的位置和所述訪問計(jì)數(shù)值,并將所述小數(shù) 據(jù)塊寫入所述緩存鏡像中第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間。
[0042] 本實(shí)施例提供的緩存的處理方法,接收讀輸入輸出10請(qǐng)求,并根據(jù)讀10請(qǐng)求,從 父鏡像中讀取小數(shù)據(jù)塊,若包含小數(shù)據(jù)塊的第一大數(shù)據(jù)塊不在緩存鏡像中,則檢查緩存鏡 像的存儲(chǔ)空間是否已滿或者存儲(chǔ)空間的占用比例是否大于或者等于預(yù)設(shè)比例闊值,若緩存 鏡像的存儲(chǔ)空間已滿或者存儲(chǔ)空間的占用比例大于或者等于預(yù)設(shè)比例闊值,則將第一大數(shù) 據(jù)塊替換緩存鏡像中的第二大數(shù)據(jù)塊,并將小數(shù)據(jù)塊寫入緩存鏡像中第一大數(shù)據(jù)塊對(duì)應(yīng)的 存儲(chǔ)空間。相較于現(xiàn)有技術(shù)中當(dāng)緩存鏡像的存儲(chǔ)空間用完后,就無(wú)法再將新的數(shù)據(jù)塊寫入 緩存鏡像的現(xiàn)象而言,本實(shí)施例中,當(dāng)檢查到緩存鏡像中的存儲(chǔ)空間已滿或者存儲(chǔ)空間的 占用比例大于或者等于預(yù)設(shè)比例闊值時(shí),用第一大數(shù)據(jù)塊替換緩存鏡像中的第二大數(shù)據(jù) 塊,并將小數(shù)據(jù)塊寫入緩存鏡像中第二大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間,即用新的第一大數(shù)據(jù)塊 替換老化的第二大數(shù)據(jù)塊,然后將需要寫入的小數(shù)據(jù)塊寫入緩存鏡像中,有效提高了存儲(chǔ) 空間的利用率。
【專利附圖】
【附圖說明】
[0043] 為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖是本發(fā) 明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可W 根據(jù)該些附圖獲得其他的附圖。
[0044] 圖1為現(xiàn)有技術(shù)中一種桌面云的應(yīng)用場(chǎng)景示意圖;
[0045] 圖2為本發(fā)明實(shí)施例一提供的緩存的處理方法流程圖;
[0046] 圖3為本發(fā)明實(shí)施例二提供的緩存的處理方法流程圖;
[0047] 圖4為第一大數(shù)據(jù)塊的標(biāo)識(shí)移動(dòng)前的管理鏈表示意圖;
[0048] 圖5為第一大數(shù)據(jù)塊的標(biāo)識(shí)移動(dòng)后的管理鏈表示意圖;
[0049] 圖6為位圖表管理示意圖;
[0化日]圖7為本發(fā)明實(shí)施例=提供的緩存的處理方法流程圖;
[0化1] 圖8為實(shí)施例=中第一大數(shù)據(jù)塊進(jìn)入緩存鏡像前的管理鏈表示意圖;
[0化2]圖9為實(shí)施例=中第一大數(shù)據(jù)塊進(jìn)入緩存鏡像后的管理鏈表示意圖;
[0化3] 圖10為本發(fā)明實(shí)施例四提供的緩存的處理方法流程圖;
[0化4]圖11為實(shí)施例四中第一大數(shù)據(jù)塊進(jìn)入緩存鏡像前的管理鏈表示意圖;
[0化5] 圖12為實(shí)施例四中第一大數(shù)據(jù)塊進(jìn)入緩存鏡像后的管理鏈表示意圖;
[0化6] 圖13為本發(fā)明實(shí)施例五提供的緩存的處理裝置的結(jié)構(gòu)示意圖;
[0化7] 圖14為本發(fā)明實(shí)施例六提供的緩存的處理裝置的結(jié)構(gòu)示意圖;
[0化引圖15為本發(fā)明實(shí)施例走提供的緩存的處理裝置的結(jié)構(gòu)示意圖;
[0化9] 圖16為本發(fā)明實(shí)施例八提供的緩存的處理裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0060] 為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例 中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是 本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員 在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0061] 圖2為本發(fā)明實(shí)施例一提供的緩存的處理方法流程圖。在本實(shí)施例中,執(zhí)行主體 可W為中央處理器(Central Processing化it,簡(jiǎn)稱CPU)、服務(wù)器、物理主機(jī)、終端設(shè)備等, 本發(fā)明中并不W此為限。如圖1所示,該方法包括W下步驟:
[0062] 步驟101、接收讀輸入輸出(Input and Ou化ut,簡(jiǎn)稱10)請(qǐng)求,并根據(jù)讀10請(qǐng)求, 從父鏡像中讀取小數(shù)據(jù)塊。
[0063] 在本實(shí)施例中,當(dāng)接收到讀10請(qǐng)求,且根據(jù)讀10在子鏡像和緩存鏡像中都未命中 時(shí),即根據(jù)讀10在子鏡像和緩存鏡像中都沒有讀取到小數(shù)據(jù)塊,則需要根據(jù)該讀10請(qǐng)求, 從父鏡像中讀取小數(shù)據(jù)塊。其中,讀10請(qǐng)求中可W包括小數(shù)據(jù)塊的標(biāo)識(shí),例如,小數(shù)據(jù)塊的 編號(hào)或者小數(shù)據(jù)塊存儲(chǔ)的起始偏移地址等。一個(gè)大數(shù)據(jù)塊可分為多個(gè)小數(shù)據(jù)塊,例如,可W 將512B作為小數(shù)據(jù)塊,2MB作為大數(shù)據(jù)塊;也可W將2MB的數(shù)據(jù)塊作為小數(shù)據(jù)塊,將20GB的 數(shù)據(jù)塊作為一個(gè)大數(shù)據(jù)塊,可根據(jù)實(shí)際情況來(lái)設(shè)定,本發(fā)明中不做限制。
[0064] 步驟102、若包含小數(shù)據(jù)塊的第一大數(shù)據(jù)塊不在緩存鏡像中,則檢查緩存鏡像的存 儲(chǔ)空間是否已滿或者存儲(chǔ)空間的占用比例是否大于或者等于預(yù)設(shè)比例闊值。
[0065] 在本實(shí)施例中,包含小數(shù)據(jù)塊的第一大數(shù)據(jù)塊不在緩存鏡像中,則說明該第一大 數(shù)據(jù)塊中沒有任何小數(shù)據(jù)塊存儲(chǔ)在緩存鏡像的存儲(chǔ)空間中,若該第一大數(shù)據(jù)塊中有至少 一個(gè)小數(shù)據(jù)塊存儲(chǔ)在緩存鏡像的存儲(chǔ)空間中,則該第一大數(shù)據(jù)塊在該緩存鏡像中。緩存 鏡像的存儲(chǔ)空間可采用本地的高速存儲(chǔ)設(shè)備,如存儲(chǔ)速度和每秒輸入輸出量(Input and Ou化ut Per Second,簡(jiǎn)稱lOP巧遠(yuǎn)大于普通硬盤的存儲(chǔ)設(shè)備,可W是內(nèi)存,也可W是固態(tài)硬 盤(Solid State Disk,簡(jiǎn)稱SSD)等可W進(jìn)行高速交互操作的存儲(chǔ)設(shè)備,可W從成本、性能 及生命周期的角度考慮選擇適合的存儲(chǔ)設(shè)備來(lái)做緩存。
[0066] 步驟103、若緩存鏡像的存儲(chǔ)空間已滿或者存儲(chǔ)空間的占用比例大于或者等于預(yù) 設(shè)比例闊值,則將第一大數(shù)據(jù)塊替換緩存鏡像中的第二大數(shù)據(jù)塊,并將小數(shù)據(jù)塊寫入緩存 鏡像中第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間。
[0067] 在本實(shí)施例中,若緩存鏡像的存儲(chǔ)空間已滿,即存儲(chǔ)空間中不能再W追加的方式 存儲(chǔ)任何方式,或者,若緩存鏡像的存儲(chǔ)空間的占用比例大于或者等于預(yù)設(shè)比例闊值,例 如,存儲(chǔ)空間的占用比例超過80%時(shí),將第一大數(shù)據(jù)塊替換緩存鏡像中的第二大數(shù)據(jù)塊,并 將小數(shù)據(jù)塊寫入緩存鏡像中第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間。第二大數(shù)據(jù)塊為緩存鏡像中, 被訪問的次數(shù)相對(duì)較小的大數(shù)據(jù)塊,或者是在預(yù)設(shè)時(shí)間段內(nèi)沒有被訪問的大數(shù)據(jù)塊,或者 也可W是被訪問的次數(shù)小于或者等于第一大數(shù)據(jù)塊被訪問的次數(shù)的大數(shù)據(jù)塊。
[0068] 可選地,在本實(shí)施例中,可W采用預(yù)先設(shè)定的緩存替換策略,用第一大數(shù)據(jù)塊替換 緩存鏡像中的第二大數(shù)據(jù)塊。例如,緩存替換策略可W為最近最少使用(Least Recently Used,簡(jiǎn)稱LRU)策略,也可W為最近最不常用(Least化equently Used,簡(jiǎn)稱LFU)策略,或 者是其它的策略,本領(lǐng)域技術(shù)人員可W根據(jù)文件特性和使用場(chǎng)景角度考慮,選擇適當(dāng)?shù)木?存替換策略,本發(fā)明中并不W此為限。
[0069] 需要說明的是,本實(shí)施例中,并不是用第一大數(shù)據(jù)塊中的數(shù)據(jù)替換緩存鏡像中的 第二大數(shù)據(jù)塊,而是在緩存鏡像中找到一個(gè)被訪問的次數(shù)相對(duì)較少的老化的大數(shù)據(jù)塊后, 將該老化的大數(shù)據(jù)塊作為第二大數(shù)據(jù)塊,將緩存鏡像中第二大數(shù)據(jù)塊的存儲(chǔ)空間預(yù)留給第 一大數(shù)據(jù)塊,當(dāng)?shù)谝淮髷?shù)據(jù)塊中的小數(shù)據(jù)塊被讀取后,將該小數(shù)據(jù)塊寫入到緩存鏡像中原 來(lái)的第二大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間上。
[0070] 本實(shí)施例提供的緩存的處理方法,接收讀輸入輸出10請(qǐng)求,并根據(jù)讀10請(qǐng)求,從 父鏡像中讀取小數(shù)據(jù)塊,若包含小數(shù)據(jù)塊的第一大數(shù)據(jù)塊不在緩存鏡像中,則檢查緩存鏡 像的存儲(chǔ)空間是否已滿或者存儲(chǔ)空間的占用比例是否大于或者等于預(yù)設(shè)比例闊值,若緩存 鏡像的存儲(chǔ)空間已滿或者存儲(chǔ)空間的占用比例大于或者等于預(yù)設(shè)比例闊值,則將第一大數(shù) 據(jù)塊替換緩存鏡像中的第二大數(shù)據(jù)塊,并將小數(shù)據(jù)塊寫入緩存鏡像中第一大數(shù)據(jù)塊對(duì)應(yīng)的 存儲(chǔ)空間。相較于現(xiàn)有技術(shù)中當(dāng)緩存鏡像的存儲(chǔ)空間用完后,就無(wú)法再將新的數(shù)據(jù)塊寫入 緩存鏡像的現(xiàn)象而言,本實(shí)施例中,當(dāng)檢查到緩存鏡像中的存儲(chǔ)空間已滿或者存儲(chǔ)空間的 占用比例大于或者等于預(yù)設(shè)比例闊值時(shí),用第一大數(shù)據(jù)塊替換緩存鏡像中的第二大數(shù)據(jù) 塊,并將小數(shù)據(jù)塊寫入緩存鏡像中第二大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間,即用新的第一大數(shù)據(jù)塊 替換老化的第二大數(shù)據(jù)塊,然后將需要寫入的小數(shù)據(jù)塊寫入緩存鏡像中,有效提高了存儲(chǔ) 空間的利用率。
[0071] 圖3為本發(fā)明實(shí)施例二提供的緩存的處理方法流程圖。如圖3所示,該方法包括 W下步驟:
[0072] 步驟201、接收讀輸入輸出10請(qǐng)求,并根據(jù)讀10請(qǐng)求,從父鏡像中讀取小數(shù)據(jù)塊。
[0073] 步驟202、將包含小數(shù)據(jù)塊的第一大數(shù)據(jù)塊的訪問計(jì)數(shù)值加1。
[0074] 在本實(shí)施例中,訪問計(jì)數(shù)值用于記錄第一大數(shù)據(jù)塊被訪問的次數(shù),當(dāng)?shù)谝淮髷?shù)據(jù) 塊中有小數(shù)據(jù)塊被訪問時(shí),無(wú)論第一大數(shù)據(jù)塊是否在緩存鏡像中,都將第一大數(shù)據(jù)塊的訪 問計(jì)數(shù)值加1。
[0075] 步驟203、判斷包含小數(shù)據(jù)塊的第一大數(shù)據(jù)塊是否在緩存鏡像中,若是,即包含小 數(shù)據(jù)塊的第一大數(shù)據(jù)塊在緩存鏡像中,則執(zhí)行步驟208 ;若否,即包含小數(shù)據(jù)塊的第一大數(shù) 據(jù)塊不在緩存鏡像中,則執(zhí)行步驟204。
[0076] 步驟204、將第一大數(shù)據(jù)塊的標(biāo)識(shí)和對(duì)應(yīng)的訪問計(jì)數(shù)值寫入管理鏈表。
[0077] 在本實(shí)施例中,管理鏈表用于管理緩存鏡像中的大數(shù)據(jù)塊,存儲(chǔ)了大數(shù)據(jù)塊的標(biāo) 識(shí)和大數(shù)據(jù)塊的訪問計(jì)數(shù)值,該管理鏈表具體可W為L(zhǎng)即鏈表。在管理鏈表中,頭結(jié)點(diǎn) 化ead)指向最新加入而且訪問計(jì)數(shù)最小的大數(shù)據(jù)塊,尾結(jié)點(diǎn)(tail)指向最早加入而且訪 問計(jì)數(shù)最大的大數(shù)據(jù)塊。若管理鏈表中存在第一大數(shù)據(jù)塊的標(biāo)識(shí),則該第一數(shù)據(jù)塊在緩存 鏡像中,即該第一大數(shù)據(jù)塊中有小數(shù)據(jù)塊存儲(chǔ)在緩存鏡像的存儲(chǔ)空間中,若管理鏈表中沒 有第一大數(shù)據(jù)塊的標(biāo)識(shí),則該第一數(shù)據(jù)塊不在緩存鏡像中,即該第一大數(shù)據(jù)塊中沒有小數(shù) 據(jù)塊存儲(chǔ)在緩存鏡像的存儲(chǔ)空間中。
[007引當(dāng)?shù)谝淮髷?shù)據(jù)塊中的小數(shù)據(jù)塊被訪問,且該第一大數(shù)據(jù)塊不在緩存鏡像中,將第 一大數(shù)據(jù)塊的標(biāo)識(shí)和對(duì)應(yīng)的訪問計(jì)數(shù)值寫入管理鏈表,表示該第一大數(shù)據(jù)塊在緩存鏡像 中。初始狀態(tài)時(shí),將所有大數(shù)據(jù)塊的訪問計(jì)數(shù)值置0,并用管理鏈表來(lái)管理該些大數(shù)據(jù)塊,如 果大數(shù)據(jù)塊中有小數(shù)據(jù)塊進(jìn)入緩存鏡像,即第一大數(shù)據(jù)塊包含的小數(shù)據(jù)塊被讀取后需要存 儲(chǔ)到緩存鏡像的存儲(chǔ)空間時(shí),則將第一大數(shù)據(jù)塊標(biāo)識(shí)和訪問計(jì)數(shù)值加入管理鏈表中。
[0079] 步驟205、檢查緩存鏡像的存儲(chǔ)空間是否已滿或者存儲(chǔ)空間的占用比例是否大于 或者等于預(yù)設(shè)比例闊值,若是,即緩存鏡像的存儲(chǔ)空間已滿或者存儲(chǔ)空間的占用比例大于 或者等于預(yù)設(shè)比例闊值,則執(zhí)行步驟206 ;若否,即緩存鏡像的存儲(chǔ)空間未滿或者存儲(chǔ)空間 的占用比例小于預(yù)設(shè)比例闊值,則執(zhí)行步驟207。
[0080] 步驟206、將第一大數(shù)據(jù)塊替換緩存鏡像中的第二大數(shù)據(jù)塊,并將小數(shù)據(jù)塊寫入緩 存鏡像中第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間。
[0081] 步驟207、將第一大數(shù)據(jù)塊加入緩存鏡像,并將小數(shù)據(jù)塊寫入緩存鏡像中第一大數(shù) 據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間。結(jié)束。
[0082] 在本實(shí)施例中,將第一大數(shù)據(jù)塊加入緩存鏡像可采用兩種方法,一種是提前預(yù)占, 一種是動(dòng)態(tài)分配。提前預(yù)占方法是在緩存第一大數(shù)據(jù)塊加入緩存時(shí),不論第一大數(shù)據(jù)塊中 的小數(shù)據(jù)塊是否都能有機(jī)會(huì)被訪問而存儲(chǔ)到緩存鏡像的存儲(chǔ)空間中,就提前占用了緩存空 間中第一大數(shù)據(jù)塊整體所需的空間(如2MB);動(dòng)態(tài)分配方法在第一大數(shù)據(jù)塊加入緩存鏡像 時(shí),只分配存儲(chǔ)空間中小數(shù)據(jù)塊所需的空間(如若干個(gè)512B),該種方式可W使更多有用的 小數(shù)據(jù)塊進(jìn)入緩存鏡像中。
[0083] 步驟208、根據(jù)訪問計(jì)數(shù)值,在管理鏈表中更新第一大數(shù)據(jù)塊的標(biāo)識(shí)所在的位置和 訪問計(jì)數(shù)值,并將小數(shù)據(jù)塊寫入緩存鏡像中第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間。
[0084] 在本實(shí)施例中,當(dāng)?shù)谝淮髷?shù)據(jù)塊在緩存鏡像中時(shí),即管理鏈表中有第一大數(shù)據(jù)塊 的標(biāo)識(shí)和訪問計(jì)數(shù)值,根據(jù)訪問計(jì)數(shù)值,在管理鏈表中,從第一大數(shù)據(jù)塊的標(biāo)識(shí)的位置開 始,找到訪問計(jì)數(shù)值小于或者等于第一大數(shù)據(jù)塊的訪問計(jì)數(shù)值的第一個(gè)大數(shù)據(jù)塊,將第一 大數(shù)據(jù)塊的標(biāo)識(shí)和訪問計(jì)數(shù)值寫入該第一個(gè)大數(shù)據(jù)塊之前。
[0085] 圖4為第一大數(shù)據(jù)塊的標(biāo)識(shí)移動(dòng)前的管理鏈表示意圖,圖5為第一大數(shù)據(jù)塊的標(biāo) 識(shí)移動(dòng)后的管理鏈表示意圖。如圖4和圖5所示,緩存鏡像中有3個(gè)大數(shù)據(jù)塊;大數(shù)據(jù)塊 1 @L0CK1),大數(shù)據(jù)塊6炬LOCK6),大數(shù)據(jù)塊8炬LOCKS),它們的訪問計(jì)數(shù)值分別是化OCK1的 訪問計(jì)數(shù)值為3, BL0CK6的訪問計(jì)數(shù)值為2, BLOCKS的訪問計(jì)數(shù)值為2。當(dāng)化0CK8再次被 訪問時(shí),其訪問計(jì)數(shù)值加1變?yōu)?,此時(shí)化0CK8的訪問計(jì)數(shù)值已經(jīng)大于化0CK6,而在管理鏈 表中,BLOCKS還在化0CK6前,則需要在管理鏈表中將化0CK8進(jìn)行移動(dòng)。在化0CK8當(dāng)前位 置處,往后查找,找到第一個(gè)訪問計(jì)數(shù)值大于或者等于3的數(shù)據(jù)塊,此例中為化0CK1,如圖5 所示,把化0CK8移動(dòng)到管理鏈表中化0CK1前。
[0086] 可選地,本實(shí)施例中,還可使用位圖表管理大數(shù)據(jù)塊中的小數(shù)據(jù)塊,例如,將2MB 的數(shù)據(jù)塊作為大數(shù)據(jù)塊,將512B的數(shù)據(jù)塊作為小數(shù)據(jù)塊,則在每一個(gè)2MB大數(shù)據(jù)塊內(nèi)部又 可W分為4096個(gè)512B小數(shù)據(jù)塊,可W使用位圖表來(lái)管理該些512B數(shù)據(jù)塊,位圖表中每一 個(gè)512B使用1個(gè)位來(lái)管理。圖6為位圖表管理不意圖,如圖6所不,該位圖表中不出了兩 個(gè)2MB的數(shù)據(jù)塊的管理示意圖,如果對(duì)應(yīng)位值為0,則代表對(duì)應(yīng)的512B不在緩存鏡像的存儲(chǔ) 空間中;反之,如果對(duì)應(yīng)位值為1,則代表對(duì)應(yīng)的512B在緩存鏡像的存儲(chǔ)空間中。需要說明 的是,圖6僅示出了 8個(gè)512B數(shù)據(jù)塊,并未將一個(gè)2MB數(shù)據(jù)塊內(nèi)的所有的512B數(shù)據(jù)塊,具 體操作中W實(shí)際情況為準(zhǔn)。
[0087] 在本實(shí)施例中,小數(shù)據(jù)塊未寫入緩存鏡像的存儲(chǔ)空間之前,位圖表中的對(duì)應(yīng)位置 為0,當(dāng)小數(shù)據(jù)塊寫入緩存鏡像中第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間后,需要將位圖表中小數(shù)據(jù) 塊對(duì)應(yīng)的位置更新為1。
[008引本實(shí)施例提供的緩存的處理方法,接收讀輸入輸出10請(qǐng)求,并根據(jù)讀10請(qǐng)求,從 父鏡像中讀取小數(shù)據(jù)塊,并將第一大數(shù)據(jù)塊的訪問計(jì)數(shù)值加1,若第一大數(shù)據(jù)塊在緩存鏡像 中,則根據(jù)訪問計(jì)數(shù)值,在管理鏈表中更新第一大數(shù)據(jù)塊的標(biāo)識(shí)所在的位置和訪問計(jì)數(shù)值, 并將小數(shù)據(jù)塊寫入緩存鏡像中第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間,若第一大數(shù)據(jù)塊不在緩存鏡 像中,則將第一大數(shù)據(jù)塊的標(biāo)識(shí)和對(duì)應(yīng)的訪問計(jì)數(shù)值寫入管理鏈表,并檢查緩存鏡像的存 儲(chǔ)空間是否已滿或者存儲(chǔ)空間的占用比例是否大于或者等于預(yù)設(shè)比例闊值,若緩存鏡像的 存儲(chǔ)空間已滿或者存儲(chǔ)空間的占用比例大于或者等于預(yù)設(shè)比例闊值,則將第一大數(shù)據(jù)塊替 換緩存鏡像中的第二大數(shù)據(jù)塊,并將小數(shù)據(jù)塊寫入緩存鏡像中第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空 間,若緩存鏡像的存儲(chǔ)空間未滿或者存儲(chǔ)空間的占用比例小于預(yù)設(shè)比例闊值,若否,即緩存 鏡像的存儲(chǔ)空間未滿或者存儲(chǔ)空間的占用比例小于預(yù)設(shè)比例闊值。相較于現(xiàn)有技術(shù)中當(dāng)緩 存鏡像的存儲(chǔ)空間用完后,就無(wú)法再將新的數(shù)據(jù)塊寫入緩存鏡像的現(xiàn)象而言,本實(shí)施例中, 不僅可W實(shí)現(xiàn)用新的第一大數(shù)據(jù)塊替換老化的第二大數(shù)據(jù)塊,然后將需要寫入的小數(shù)據(jù)塊 寫入緩存鏡像中,有效提高了存儲(chǔ)空間的利用率,而且,使用管理鏈表管理緩存鏡像中的大 數(shù)據(jù)塊,根據(jù)大數(shù)據(jù)塊的訪問計(jì)數(shù)值可W方便快速的找到老化的數(shù)據(jù)塊,提高了大數(shù)據(jù)塊 的替換、加入和數(shù)據(jù)塊標(biāo)識(shí)在鏈表中移動(dòng)的效率。
[0089] 圖7為本發(fā)明實(shí)施例=提供的緩存的處理方法流程圖。在上述實(shí)施例二的基礎(chǔ) 上,步驟"將第一大數(shù)據(jù)塊替換緩存鏡像中的第二大數(shù)據(jù)塊,并將小數(shù)據(jù)塊寫入緩存鏡像中 第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間"的具體實(shí)現(xiàn)方式包括W下步驟:
[0090] 步驟301、根據(jù)第一大數(shù)據(jù)塊的訪問計(jì)數(shù)值,從管理鏈表的表頭位置開始依次查 找,獲取第二大數(shù)據(jù)塊,將第二大數(shù)據(jù)塊的標(biāo)識(shí)和訪問計(jì)數(shù)值從管理鏈表中移除,并將第一 大數(shù)據(jù)塊的標(biāo)識(shí)和訪問計(jì)數(shù)值寫入管理鏈表中第=個(gè)大數(shù)據(jù)塊的標(biāo)識(shí)之前。
[0091] 其中,第二大數(shù)據(jù)塊為在管理鏈表中,訪問計(jì)數(shù)值小于或者等于第一大數(shù)據(jù)塊的 訪問計(jì)數(shù)值的第一個(gè)數(shù)據(jù)塊;第=大數(shù)據(jù)塊為刪除了第二大數(shù)據(jù)塊的標(biāo)識(shí)后的管理鏈表 中,訪問計(jì)數(shù)值大于或者等于第一大數(shù)據(jù)塊的訪問計(jì)數(shù)值的第一個(gè)數(shù)據(jù)塊。
[0092] 在本實(shí)施例中,在管理鏈表中,根據(jù)第一大數(shù)據(jù)塊的訪問計(jì)數(shù)值,從表頭的位置開 始,查找到第一個(gè)訪問計(jì)數(shù)值小于或者等于第二數(shù)據(jù)的訪問計(jì)數(shù)值的數(shù)據(jù)塊,將該數(shù)據(jù)塊 作為第二大數(shù)據(jù)塊,將第二大數(shù)據(jù)塊的標(biāo)識(shí)和訪問計(jì)數(shù)值從管理鏈表中移除,表示該第二 大數(shù)據(jù)塊不存在于緩存鏡像中,將第一大數(shù)據(jù)塊的標(biāo)識(shí)和訪問計(jì)數(shù)值寫入管理鏈表中,表 示第一大數(shù)據(jù)塊存在于緩存鏡像中。
[0093] 圖8為實(shí)施例=中第一大數(shù)據(jù)塊進(jìn)入緩存鏡像前的管理鏈表示意圖,圖9為實(shí)施 例=中第一大數(shù)據(jù)塊進(jìn)入緩存鏡像后的管理鏈表示意圖。如圖8所示,該管理鏈表中包括 數(shù)據(jù)塊3炬LOCK3)、數(shù)據(jù)塊6炬LOCK6)、數(shù)據(jù)塊1 @L0CK1)和數(shù)據(jù)塊8炬LOCKS),BLOCK3的訪 問計(jì)數(shù)值為5,化0CK6的訪問計(jì)數(shù)值為7,化0CK1的訪問計(jì)數(shù)值為7, BLOCKS的訪問計(jì)數(shù)值 為8 ;在緩存鏡像外其它的數(shù)據(jù)塊中,即第一大數(shù)據(jù)塊為化0CK5,訪問計(jì)數(shù)值為5。當(dāng)化0CK5 再次被訪問時(shí),其訪問計(jì)數(shù)值加1變?yōu)?,此時(shí)化0CK5的訪問計(jì)數(shù)值已經(jīng)大于化0CK3,即 BL0CK3為第一個(gè)訪問計(jì)數(shù)值小于化0CK5的數(shù)據(jù)塊,則將化0CK3作為第二大數(shù)據(jù)塊,而在 管理鏈表中,BLOCKS不在鏈表中,即第一大數(shù)據(jù)塊不在緩存鏡像中,則需要在管理鏈表中進(jìn) 行替換,如圖9所示,將BLOCKS從鏈表中移除,并將BLOCKS加入管理鏈表。在將BLOCKS力口 入管理鏈表時(shí),從頭往后查找,找到第一個(gè)訪問計(jì)數(shù)值大于或者等于6的數(shù)據(jù)塊,此例中為 BL0CK6,即化0CK6為第四數(shù)據(jù)塊,則把化0CK5加入到管理鏈表中化0CK6前。
[0094] 需要說明的是,本實(shí)施例中,管理鏈表中可W包括更多的數(shù)據(jù)塊的標(biāo)識(shí)的訪問計(jì) 數(shù)值,并不W圖8和圖9為限。
[0095] 步驟302、在BAT中將第二大數(shù)據(jù)塊對(duì)應(yīng)的位置標(biāo)記失效,并將第一大數(shù)據(jù)塊的起 始偏移位置存儲(chǔ)到BAT中的第一大數(shù)據(jù)塊對(duì)應(yīng)的位置。
[0096] 其中,第一大數(shù)據(jù)塊的起始偏移位置為第二大數(shù)據(jù)塊的起始偏移位置。
[0097] 在本實(shí)施例中,將2MB的數(shù)據(jù)塊作為大數(shù)據(jù)塊,將512B的數(shù)據(jù)塊作為小數(shù)據(jù)塊,使 用BAT來(lái)管理該些2MB塊,BAT中存儲(chǔ)了每一個(gè)2MB數(shù)據(jù)塊在存儲(chǔ)空間中的起始偏移位置。 例如,對(duì)于一個(gè)容量為20GB的VHD虛擬硬盤文件,其BAT項(xiàng)數(shù)量為10240個(gè),如果第5個(gè) 2MB數(shù)據(jù)塊存儲(chǔ)在VHD虛擬硬盤文件偏移地址為100M的位置處,則在BAT中第5個(gè)表項(xiàng)處 的值就是100M,若BAT中的某一項(xiàng)為0XFFFFFFFF,則表示該數(shù)據(jù)塊不存在于緩存鏡像中。 [009引表1為實(shí)施例S中第一大數(shù)據(jù)塊加入緩存鏡像前的BAT,表2為實(shí)施例S中第一大 數(shù)據(jù)塊加入緩存鏡像后的BAT。如表1所示,該BAT中存儲(chǔ)了S個(gè)數(shù)據(jù)塊的起始位置偏移 地址,分別為6M+1. 5K,4M+化,2M+512,0M表示的為該BAT對(duì)應(yīng)的存儲(chǔ)空間中的相對(duì)起始偏 移位置,并不是存儲(chǔ)空間中實(shí)際的起始偏移位置。在本實(shí)施例中,第二大數(shù)據(jù)塊的起始偏移 位置為6M+1. 5K,則將BAT中第S個(gè)表項(xiàng)中標(biāo)記為0XFFFFFFFF,則說明該第S數(shù)據(jù)不在緩存 鏡像中,再將起始偏移位置寫入6M+1. 5K寫入BAT的第五個(gè)表項(xiàng)中,如表2所示,BAT中第 五個(gè)表項(xiàng)對(duì)應(yīng)的為第一大數(shù)據(jù)塊的起始偏移位置,則說明該第一大數(shù)據(jù)塊存在于緩存鏡像 中,并且,該第一大數(shù)據(jù)塊的存儲(chǔ)空間為原來(lái)的第二大數(shù)據(jù)塊的存數(shù)空間。
[0099] 表 1
[0100]
【權(quán)利要求】
1. 一種緩存的處理方法,其特征在于,包括: 接收讀輸入輸出10請(qǐng)求,并根據(jù)所述讀10請(qǐng)求,從父鏡像中讀取小數(shù)據(jù)塊; 若包含所述小數(shù)據(jù)塊的第一大數(shù)據(jù)塊不在緩存鏡像中,則檢查所述緩存鏡像的存儲(chǔ)空 間是否已滿或者所述存儲(chǔ)空間的占用比例是否大于或者等于預(yù)設(shè)比例閾值; 若所述緩存鏡像的存儲(chǔ)空間已滿或者所述存儲(chǔ)空間的占用比例大于或者等于所述預(yù) 設(shè)比例閾值,則將所述第一大數(shù)據(jù)塊替換所述緩存鏡像中的第二大數(shù)據(jù)塊,并將所述小數(shù) 據(jù)塊寫入所述緩存鏡像中所述第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述從父鏡像中讀取小數(shù)據(jù)塊之后,所述 方法還包括: 將包含所述小數(shù)據(jù)塊的第一大數(shù)據(jù)塊的訪問計(jì)數(shù)值加1 ; 則在所述若包含所述小數(shù)據(jù)塊的第一大數(shù)據(jù)塊不在緩存鏡像中,則檢查所述緩存鏡像 的存儲(chǔ)空間是否已滿或者所述存儲(chǔ)空間的占用比例是否大于或者等于預(yù)設(shè)比例閾值之前, 所述方法還包括: 將所述第一大數(shù)據(jù)塊的標(biāo)識(shí)和對(duì)應(yīng)的訪問計(jì)數(shù)值寫入管理鏈表。
3. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,還包括: 若所述緩存鏡像的存儲(chǔ)空間未滿或者所述存儲(chǔ)空間的占用比例小于所述預(yù)設(shè)比例閾 值,則將所述第一大數(shù)據(jù)塊加入所述緩存鏡像,并將所述小數(shù)據(jù)塊寫入所述緩存鏡像中所 述第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間。
4. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述將所述第一大數(shù)據(jù)塊替換所述緩存 鏡像中的第二大數(shù)據(jù)塊,并將所述小數(shù)據(jù)塊寫入所述緩存鏡像中所述第一大數(shù)據(jù)塊對(duì)應(yīng)的 存儲(chǔ)空間,具體包括: 根據(jù)所述第一大數(shù)據(jù)塊的訪問計(jì)數(shù)值,從所述管理鏈表的表頭位置開始依次查找,獲 取所述第二大數(shù)據(jù)塊,將所述第二大數(shù)據(jù)塊的標(biāo)識(shí)和訪問計(jì)數(shù)值從所述管理鏈表中移除, 并將所述第一大數(shù)據(jù)塊的標(biāo)識(shí)和訪問計(jì)數(shù)值寫入所述管理鏈表中第三個(gè)大數(shù)據(jù)塊的標(biāo)識(shí) 之前;其中,所述第二大數(shù)據(jù)塊為在所述管理鏈表中,訪問計(jì)數(shù)值小于或者等于第一大數(shù)據(jù) 塊的訪問計(jì)數(shù)值的第一個(gè)數(shù)據(jù)塊;所述第三大數(shù)據(jù)塊為刪除了所述第二大數(shù)據(jù)塊的標(biāo)識(shí) 后的管理鏈表中,訪問計(jì)數(shù)值大于或者等于所述第一大數(shù)據(jù)塊的訪問計(jì)數(shù)值的第一個(gè)數(shù)據(jù) 塊; 在塊分配表BAT中將第二大數(shù)據(jù)塊對(duì)應(yīng)的位置標(biāo)記失效,并將所述第一大數(shù)據(jù)塊的起 始偏移位置存儲(chǔ)到BAT中的第一大數(shù)據(jù)塊對(duì)應(yīng)的位置;其中,所述第一大數(shù)據(jù)塊的起始偏 移位置為所述第二大數(shù)據(jù)塊的起始偏移位置; 將所述小數(shù)據(jù)塊寫入所述緩存鏡像中所述第一大數(shù)據(jù)塊的起始偏移位置對(duì)應(yīng)的存儲(chǔ) 空間。
5. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述將所述第一大數(shù)據(jù)塊加入所述緩存 鏡像,并將所述小數(shù)據(jù)塊寫入所述緩存鏡像中所述第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間,具體包 括: 根據(jù)所述第一大數(shù)據(jù)塊的訪問計(jì)數(shù)值,將所述第一大數(shù)據(jù)塊的標(biāo)識(shí)和訪問計(jì)數(shù)值寫入 所述管理鏈表中; 在所述緩存鏡像中查找到一個(gè)空閑塊,并將所述小數(shù)據(jù)塊寫入所述空閑塊;其中,所述 空閑塊為所述第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間; 將所述空閑塊的起始偏移位置寫入BAT中所述空閑塊對(duì)應(yīng)的位置。
6. 根據(jù)權(quán)利要求2所述的方法,其特征在于,若所述第一大數(shù)據(jù)塊在緩存鏡像中,則根 據(jù)所述訪問計(jì)數(shù)值,在所述管理鏈表中更新所述第一大數(shù)據(jù)塊的標(biāo)識(shí)所在的位置和所述訪 問計(jì)數(shù)值,并將所述小數(shù)據(jù)塊寫入所述緩存鏡像中第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間。
7. -種緩存的處理裝置,其特征在于,包括: 讀取模塊,用于接收讀輸入輸出10請(qǐng)求,并根據(jù)所述讀10請(qǐng)求,從父鏡像中讀取小數(shù) 據(jù)塊; 檢查模塊,用于若包含所述小數(shù)據(jù)塊的第一大數(shù)據(jù)塊不在緩存鏡像中,則檢查所述緩 存鏡像的存儲(chǔ)空間是否已滿或者所述存儲(chǔ)空間的占用比例是否大于或者等于預(yù)設(shè)比例閾 值; 處理模塊,用于若所述緩存鏡像的存儲(chǔ)空間已滿或者所述存儲(chǔ)空間的占用比例大于或 者等于所述預(yù)設(shè)比例閾值,則將所述第一大數(shù)據(jù)塊替換所述緩存鏡像中的第二大數(shù)據(jù)塊, 并將所述小數(shù)據(jù)塊寫入所述緩存鏡像中所述第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間。
8. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述讀取模塊還用于將包含所述小數(shù)據(jù) 塊的第一大數(shù)據(jù)塊的訪問計(jì)數(shù)值加1 ; 所述處理模塊還用于將所述第一大數(shù)據(jù)塊的標(biāo)識(shí)和對(duì)應(yīng)的訪問計(jì)數(shù)值寫入管理鏈表。
9. 根據(jù)權(quán)利要求7或8所述的裝置,其特征在于,所述處理模塊還用于若所述緩存鏡像 的存儲(chǔ)空間未滿或者所述存儲(chǔ)空間的占用比例小于所述預(yù)設(shè)比例閾值,則將所述第一大數(shù) 據(jù)塊加入所述緩存鏡像,并將所述小數(shù)據(jù)塊寫入所述緩存鏡像中所述第一大數(shù)據(jù)塊對(duì)應(yīng)的 存儲(chǔ)空間。
10. 根權(quán)利要求8所述的裝置,其特征在于,所述處理模塊包括: 第二大數(shù)據(jù)塊獲取單元,用于根據(jù)所述第一大數(shù)據(jù)塊的訪問計(jì)數(shù)值,從所述管理鏈表 的表頭位置開始依次查找,獲取所述第二大數(shù)據(jù)塊,將所述第二大數(shù)據(jù)塊的標(biāo)識(shí)和訪問計(jì) 數(shù)值從所述管理鏈表中移除,并將所述第一大數(shù)據(jù)塊的標(biāo)識(shí)和訪問計(jì)數(shù)值寫入所述管理鏈 表中第三個(gè)大數(shù)據(jù)塊的標(biāo)識(shí)之前;其中,所述第二大數(shù)據(jù)塊為在所述管理鏈表中,訪問計(jì)數(shù) 值小于或者等于第一大數(shù)據(jù)塊的訪問計(jì)數(shù)值的第一個(gè)數(shù)據(jù)塊;所述第三大數(shù)據(jù)塊為刪除了 所述第二大數(shù)據(jù)塊的標(biāo)識(shí)后的管理鏈表中,訪問計(jì)數(shù)值大于或者等于所述第一大數(shù)據(jù)塊的 訪問計(jì)數(shù)值的第一個(gè)數(shù)據(jù)塊; 位置標(biāo)記單元,用于在BAT中將第二大數(shù)據(jù)塊對(duì)應(yīng)的位置標(biāo)記失效,并將所述第一大 數(shù)據(jù)塊的起始偏移位置存儲(chǔ)到BAT中的第一大數(shù)據(jù)塊對(duì)應(yīng)的位置;其中,所述第一大數(shù)據(jù) 塊的起始偏移位置為所述第二大數(shù)據(jù)塊的起始偏移位置; 小數(shù)據(jù)塊寫入單元,用于將所述小數(shù)據(jù)塊寫入所述緩存鏡像中所述第一大數(shù)據(jù)塊的起 始偏移位置對(duì)應(yīng)的存儲(chǔ)空間。
11. 根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述處理模塊包括: 標(biāo)識(shí)寫入單元,用于根據(jù)所述第一大數(shù)據(jù)塊的訪問計(jì)數(shù)值,將所述第一大數(shù)據(jù)塊的標(biāo) 識(shí)和訪問計(jì)數(shù)值寫入所述管理鏈表中; 空閑塊獲取單元,用于在所述緩存鏡像中查找到一個(gè)空閑塊,并將所述小數(shù)據(jù)塊寫入 所述空閑塊;其中,所述空閑塊為所述第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間; 位置寫入單元,用于將所述空閑塊的起始偏移位置寫入BAT中所述空閑塊對(duì)應(yīng)的位 置。
12.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述處理模塊還包括: 更新單元,用于若所述第一大數(shù)據(jù)塊在緩存鏡像中,則根據(jù)所述訪問計(jì)數(shù)值,在所述管 理鏈表中更新所述第一大數(shù)據(jù)塊的標(biāo)識(shí)所在的位置和所述訪問計(jì)數(shù)值,并將所述小數(shù)據(jù)塊 寫入所述緩存鏡像中第一大數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)空間。
【文檔編號(hào)】G06F11/14GK104503703SQ201410784834
【公開日】2015年4月8日 申請(qǐng)日期:2014年12月16日 優(yōu)先權(quán)日:2014年12月16日
【發(fā)明者】李明君 申請(qǐng)人:華為技術(shù)有限公司