国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      混合存儲系統(tǒng)及熱點數(shù)據(jù)塊的遷移方法

      文檔序號:6444953閱讀:182來源:國知局
      專利名稱:混合存儲系統(tǒng)及熱點數(shù)據(jù)塊的遷移方法
      技術(shù)領(lǐng)域
      本發(fā)明屬于計算機(jī)存儲技術(shù)領(lǐng)域,具體涉及一種混合存儲系統(tǒng)及熱點數(shù)據(jù)塊的遷移方法。
      背景技術(shù)
      機(jī)械硬盤作為一種傳統(tǒng)普通硬盤,主要由:盤片、磁頭、盤片轉(zhuǎn)軸及控制電機(jī)、磁頭控制器、數(shù)據(jù)轉(zhuǎn)換器和接口等幾個部分組成。機(jī)械硬盤具有的優(yōu)點為成本低廉、容量大;但缺點為:數(shù)據(jù)訪問速度較慢。針對機(jī)械硬盤具有的數(shù)據(jù)訪問速度較慢的缺點,目前,SSD(Solid State Disk,固態(tài)硬盤)作為一種具有快速的數(shù)據(jù)訪問速度的硬盤,已逐漸應(yīng)用于計算機(jī)中。雖然SSD的數(shù)據(jù)訪問速度較快,但與機(jī)械硬盤相比,具有成本高、容量小的缺點,由此限制了 SSD的廣泛推廣使用。因此,如何設(shè)計出一種同時具有機(jī)械硬盤和SSD優(yōu)點的存儲系統(tǒng),從而在降低存儲設(shè)備成本的同時,提高存儲設(shè)備的數(shù)據(jù)訪問速度,是目前亟需解決的問題。

      發(fā)明內(nèi)容
      針對現(xiàn)有技術(shù)存在的缺陷,本發(fā)明提供一種混合存儲系統(tǒng)及熱點數(shù)據(jù)塊的遷移方法,通過SSD緩存機(jī)械硬盤中的熱點數(shù)據(jù)塊,有效提高了 SSD的利用率和混合存儲系統(tǒng)的性能,同時,降低了混合存儲系統(tǒng)的成本。本發(fā)明所采用的技術(shù)方案如下:本發(fā)明提供一種混合存儲系統(tǒng),包括:至少一個固態(tài)硬盤SSD、至少一個機(jī)械硬盤以及控制模塊;所述控制模塊用于將所述機(jī)械硬盤中的熱點數(shù)據(jù)塊遷移到所述SSD,以及,將所述SSD中的非熱點數(shù)據(jù)塊遷移到所述機(jī)械硬盤,其中,所述混合存儲系統(tǒng)中一共有H個數(shù)據(jù)塊,將所述H個數(shù)據(jù)塊按被訪問頻率由高到低排列,所述熱點數(shù)據(jù)塊為被訪問頻率位于前M的數(shù)據(jù)塊,所述非熱點數(shù)據(jù)塊為被訪問頻率位于后N的數(shù)據(jù)塊,其中,H > M,H > N。本發(fā)明還提供一種應(yīng)用上述混合存儲系統(tǒng)的熱點數(shù)據(jù)塊的遷移方法,所述控制模塊包括:熱點數(shù)據(jù)塊區(qū)分模塊、請求分發(fā)模塊、遷移觸發(fā)模塊和數(shù)據(jù)塊遷移模塊,所述熱點數(shù)據(jù)塊的遷移方法包括以下步驟:SI,所述熱點數(shù)據(jù)塊區(qū)分模塊創(chuàng)建并維護(hù)第一映射表和第二映射表,其中,所述第一映射表用于記錄與所述SSD或所述機(jī)械硬盤中每一個數(shù)據(jù)塊對應(yīng)的元素;所述第二映射表用于記錄與所述SSD或所述機(jī)械硬盤中的每一個熱點數(shù)據(jù)塊對應(yīng)的元素;其中,所述元素用于記錄與該元素對應(yīng)的數(shù)據(jù)塊的被訪問信息;所述被訪問信息包括:熱度值;當(dāng)所述熱點數(shù)據(jù)塊區(qū)分模塊每次接收到目標(biāo)數(shù)據(jù)塊的訪問請求時,均更新所述第一映射表和所述第二映射表,然后將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)送給所述請求分發(fā)模塊;S2,所述請求分發(fā)模塊判斷所述SSD中是否已存在所述目標(biāo)數(shù)據(jù)塊,如果判斷結(jié)果為是,則將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)送給所述SSD中的所述目標(biāo)數(shù)據(jù)塊,否則,將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)送給所述機(jī)械硬盤中的所述目標(biāo)數(shù)據(jù)塊;同時,更新與所述目標(biāo)數(shù)據(jù)塊對應(yīng)的失效次數(shù)值,其中,所述失效次數(shù)值為將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)送給所述機(jī)械硬盤中的所述目標(biāo)數(shù)據(jù)塊的次數(shù);S3,所述遷移觸發(fā)模塊獲取SI中與所述目標(biāo)數(shù)據(jù)塊對應(yīng)的所述元素中記錄的熱度值以及S2中所述失效次數(shù)值,判斷是否達(dá)到遷移觸發(fā)條件,如果達(dá)到,則向所述數(shù)據(jù)塊遷移模塊發(fā)出數(shù)據(jù)塊遷移指令;S4,所述數(shù)據(jù)塊遷移模塊接收到所述數(shù)據(jù)塊遷移指令時,將所述SSD中的非熱點數(shù)據(jù)塊遷移到所述機(jī)械硬盤中,或,將所述機(jī)械硬盤中的熱點數(shù)據(jù)塊遷移到所述SSD中。優(yōu)選的,所述第一映射表和所述第二映射表采用索引結(jié)構(gòu)的形式存儲元素;其中,所述第一映射表采用基樹和/或B樹和/或紅黑樹的索引結(jié)構(gòu),其中,其索引關(guān)鍵字為所述元素對應(yīng)的數(shù)據(jù)塊在機(jī)械硬盤上的邏輯地址;所述第二映射表采用B+樹索引結(jié)構(gòu),其索引關(guān)鍵字為所述元素中記錄的所述熱度值。優(yōu)選的,SI中,當(dāng)所述熱點數(shù)據(jù)塊區(qū)分模塊每次接收到目標(biāo)數(shù)據(jù)塊的訪問請求時,均更新所述第一映射表,具體為:當(dāng)接收到所述目標(biāo)數(shù)據(jù)塊的訪問請求時,查找預(yù)先建立的第一映射表,判斷所述第一映射表中是否已記錄與所述目標(biāo)數(shù)據(jù)塊唯一對應(yīng)的目標(biāo)元素,如果判斷結(jié)果為是,則更新所述目標(biāo)元素;如果判斷結(jié)果為否,則向所述第一映射表中增加與所述目標(biāo)數(shù)據(jù)塊唯一對應(yīng)的所述目標(biāo)元素;當(dāng)所述熱點數(shù)據(jù)塊區(qū)分模塊每次接收到目標(biāo)數(shù)據(jù)塊的訪問請求時,均更新所述第二映射表,具體為:當(dāng)接收到所述目標(biāo)數(shù)據(jù)塊的訪問請求時,查找預(yù)先建立的第二映射表,判斷所述第二映射表中是否已記錄與所述目標(biāo)數(shù)據(jù)塊唯一對應(yīng)的目標(biāo)元素,如果判斷結(jié)果為是,則更新所述目標(biāo)元素;如果判斷結(jié)果為否,則進(jìn)一步判斷所述第二映射表是否已滿,如果判斷結(jié)果為否,則向所述第二映射表中增加與所述目標(biāo)數(shù)據(jù)塊唯一對應(yīng)的所述目標(biāo)元素;如果判斷結(jié)果為是,則獲取所述第二映射表中具有最小熱度值的元素,然后,比較所述目標(biāo)數(shù)據(jù)塊的當(dāng)前熱度值是否大于所述最小熱度值,如果判斷結(jié)果為是,則刪除所述第二映射表中所述具有最小熱度值的元素,并向所述第二映射表中增加與所述目標(biāo)數(shù)據(jù)塊對應(yīng)的元素。優(yōu)選的,所述元素中記錄的所述熱度值的計算方法為:Sll,創(chuàng)建并維護(hù)與每一個所述元素唯一對應(yīng)的單元數(shù)組,所述單元數(shù)組由多個單元組成,每個單元對應(yīng)的時間跨度M均相同;每個單元均記錄以下兩項內(nèi)容:該單元的開始時間戳C ;在與該單元對應(yīng)的時間跨度內(nèi),與該元素對應(yīng)的數(shù)據(jù)塊的被訪問的次數(shù)T ;其中,所述單元的開始時間戳為該數(shù)據(jù)塊在與該單元對應(yīng)的時間跨度內(nèi)首次被訪問的時間點,所述單元數(shù)組中的各個單元按C值的先后順序排列;其中,維護(hù)的具體方法為:當(dāng)在時間點D接收到所述目標(biāo)數(shù)據(jù)塊的訪問請求時,查找與所述目標(biāo)數(shù)據(jù)塊對應(yīng)的目標(biāo)單元數(shù)組,獲取該目標(biāo)單元數(shù)組中最后一個有效單元,讀取該有效單元的開始時間戳Cl,如果D小于Cl+Μ,則用T+1更新所述有效單元中記錄的T,獲得新的T值,否則,向所述目標(biāo)單元數(shù)組中申請一個新的單元,且該新的單元的C值即為D值,該新的單元的T值為I ;S12,根據(jù)以下公式計算熱度值:熱度值=Σ (每個單元中記錄的訪問次數(shù)*f (ti)),其中,f (ti) = (C-系統(tǒng)初始化時間)/M,系統(tǒng)初始化時間為將所述控制模塊加載到操作系統(tǒng)的時間。
      優(yōu)選的,所述數(shù)據(jù)塊遷移模塊接收到所述數(shù)據(jù)塊遷移指令時,將所述SSD中的非熱點數(shù)據(jù)塊遷移到所述機(jī)械硬盤中,或,將所述機(jī)械硬盤中的熱點數(shù)據(jù)塊遷移到所述SSD中,具體為:S41,所述數(shù)據(jù)塊遷移模塊創(chuàng)建并維護(hù)SSD映射表,所述SSD映射表用于記錄與所述SSD中所有數(shù)據(jù)塊對應(yīng)的元素;所述SSD映射表中每一個元素對應(yīng)三個屬性:該元素對應(yīng)的數(shù)據(jù)塊在SSD中的邏輯地址、該元素對應(yīng)的數(shù)據(jù)塊在機(jī)械硬盤中的邏輯塊地址、該元素對應(yīng)的數(shù)據(jù)塊在SSD中的狀態(tài),其中,該元素對應(yīng)的數(shù)據(jù)塊在SSD中的狀態(tài)包括:“干凈”狀態(tài)、“臟”狀態(tài)和無效狀態(tài),所述“干凈”狀態(tài)表示該元素對應(yīng)的數(shù)據(jù)塊在SSD中與在機(jī)械硬盤中存儲的內(nèi)容一致,所述“臟”狀態(tài)表示該元素對應(yīng)的數(shù)據(jù)塊在SSD中與在機(jī)械硬盤中存儲的內(nèi)容不一致,所述無效狀態(tài)表明該該元素對應(yīng)的數(shù)據(jù)塊在SSD中為空白數(shù)據(jù)塊;其中,所述SSD映射表維護(hù)的具體方法為:當(dāng)所述SSD中第一數(shù)據(jù)塊被遷移到所述機(jī)械硬盤時,刪除所述SSD中與所述第一數(shù)據(jù)塊對應(yīng)的元素;當(dāng)所述機(jī)械硬盤中的第二數(shù)據(jù)塊被遷移到所述SSD時,向所述SSD映射表中增加與所述第二數(shù)據(jù)塊對應(yīng)的元素;S42,所述數(shù)據(jù)塊遷移模塊將所述第二映射表記錄的元素加入到移入隊列,將所述SSD映射表中記錄的元素加入到移出隊列;判斷所述移入隊列和所述移出隊列中是否存在相同的元素,如果存在,則從所述移入隊列和所述移出隊列中同時刪除所述相同的元素,得到新的移入隊列和新的移出隊列,然后執(zhí)行S43 ;如果不存在,則直接執(zhí)行步驟S43 ;S43,所述數(shù)據(jù)塊遷移模塊遍歷S42得到的所述移入隊列中所有元素,讀取每個元素對應(yīng)的機(jī)械硬盤中的數(shù)據(jù)塊,并將該數(shù)據(jù)塊寫入SSD中,同時在SSD映射表中增加與該數(shù)據(jù)塊對應(yīng)的元素;所述數(shù)據(jù)塊遷移模塊遍歷S42得到的所述移出隊列中所有元素,讀取每個元素對應(yīng)的SSD中的數(shù)據(jù)塊,判斷讀取到的數(shù)據(jù)塊對應(yīng)的元素在SSD映射表中的狀態(tài),如果狀態(tài)為“干凈”,則執(zhí)行S44 ;如果狀態(tài)為“臟”,則執(zhí)行S45 ;S44,將讀取到的數(shù)據(jù)塊對應(yīng)的元素在SSD映射表中的狀態(tài)設(shè)置為所述無效狀態(tài);S45,將讀取到的SSD中的數(shù)據(jù)塊寫回到機(jī)械硬盤中的對應(yīng)數(shù)據(jù)塊中,同時,刪除SSD映射表中與該數(shù)據(jù)塊對應(yīng)的元素。優(yōu)選的,S41之后,還包括:當(dāng)所述請求分發(fā)模塊接收到所述目標(biāo)數(shù)據(jù)塊的訪問請求時,查找所述SSD映射表,判斷所述SSD映射表中是否存在與所述目標(biāo)數(shù)據(jù)塊對應(yīng)的目標(biāo)元素,如果存在,則進(jìn)一步判斷所述目標(biāo)元素的狀態(tài)是否為無效狀態(tài),如果不是,則將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)送給所述SSD中,然后,當(dāng)該目標(biāo)數(shù)據(jù)塊的訪問請求為寫請求時,設(shè)置SSD映射表中與該目標(biāo)數(shù)據(jù)塊對應(yīng)的元素的狀態(tài)為“臟”狀態(tài);如果不存在,則直接將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)送給所述機(jī)械硬盤中。優(yōu)選的,S43之后,還包括:S46,當(dāng)所述請求分發(fā)模塊接收到所述目標(biāo)數(shù)據(jù)塊的訪問請求時,查找所述移入隊列和所述移出隊列,判斷所述目標(biāo)數(shù)據(jù)塊是否正在被所述數(shù)據(jù)塊遷移模塊遷移,如果判斷結(jié)果為否,則執(zhí)行S47,如果判斷結(jié)果為是,則執(zhí)行S48-S51 ;S47,查找所述SSD映射表,判斷該目標(biāo)數(shù)據(jù)塊是否已經(jīng)被映射到SSD中,如果判斷結(jié)果為是,則將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)往至SSD,否則,將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)往至機(jī)械硬盤中,然后結(jié)束流程;S48,比較該目標(biāo)數(shù)據(jù)塊的請求大小和操作系統(tǒng)頁面的大小,如果前者小,則等待所述數(shù)據(jù)塊遷移模塊的遷移過程完成,然后執(zhí)行S47,否則,執(zhí)行S49-S51 ;S49,判斷該目標(biāo)數(shù)據(jù)塊的訪問請求是否為讀請求,如果判斷結(jié)果為是,則執(zhí)行S50 ;如果判斷結(jié)果為否,則執(zhí)行S51 ;S50,查找該目標(biāo)數(shù)據(jù)塊對應(yīng)的元素是否位于所述移出隊列中,如果是,則將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)往SSD,否則,將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)往所述機(jī)械硬盤,并結(jié)束流程;S51,判斷所述目標(biāo)數(shù)據(jù)塊是否位于所述移出隊列中,如果判斷結(jié)果為是,則從所述SSD映射表中刪除與該目標(biāo)數(shù)據(jù)塊對應(yīng)的元素,并將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)往機(jī)械硬盤中;如果判斷結(jié)果為否,則將所述SSD映射表中與所述目標(biāo)數(shù)據(jù)塊對應(yīng)的元素狀態(tài)標(biāo)記為“臟”狀態(tài),并將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)往所述SSD中,結(jié)束流程。本發(fā)明的有益效果如下:本發(fā)明提供的混合存儲系統(tǒng)及熱點數(shù)據(jù)塊的遷移方法,具備以下優(yōu)點:(I)混合存儲系統(tǒng)性價比高。將SSD作為機(jī)械硬盤的緩存,少量的SSD空間被用來緩存大部分訪問頻率高和時間局部性較高的數(shù)據(jù)塊,即:熱點數(shù)據(jù)塊,由于SSD的順序讀寫和隨機(jī)讀性能優(yōu)于機(jī)械硬盤,因此提高了混合存儲系統(tǒng)的整體訪問性能;又由于SSD的數(shù)量遠(yuǎn)少于機(jī)械硬盤的數(shù)量,所以,降低了混合存儲系統(tǒng)的整體成本。(2)區(qū)分熱點數(shù)據(jù)塊的效率高。由于傳統(tǒng)的熱點數(shù)據(jù)塊的區(qū)分方法中,或者僅考慮了最近一次被訪問的時間,導(dǎo)致周期性訪問的數(shù)據(jù)難以駐留在緩存中;或者僅考慮了數(shù)據(jù)塊的被訪問頻率,導(dǎo)致無法區(qū)分被訪問的時間局部性。而本發(fā)明所述的熱點數(shù)據(jù)塊區(qū)分機(jī)制中,綜合了數(shù)據(jù)塊被訪問的時間局部性和頻率局部性的特點,從而提高了緩存數(shù)據(jù)的命中率和系統(tǒng)的整體性能。(3)數(shù)據(jù)塊遷移靈活度高。本發(fā)明通過一個專用的遷移觸發(fā)模塊來啟動數(shù)據(jù)塊遷移,因此可以根據(jù)系統(tǒng)的具體情況,如失效次數(shù)和遷移時間等,自動調(diào)整遷移時機(jī)。而本發(fā)明所述的數(shù)據(jù)塊遷移過程,處理了遷移過程與前端用戶IO請求的沖突,減少了沖突引起的性能降低情況。并且,本發(fā)明所述的數(shù)據(jù)塊遷移過程,無須修改上層文件系統(tǒng)的元數(shù)據(jù),可以透明支持多種文件系統(tǒng)。


      圖1為本發(fā)明實施例提供的混合存儲系統(tǒng)的一種結(jié)構(gòu)示意圖;圖2為本發(fā)明實施例提供的混合存儲系統(tǒng)的另一種結(jié)構(gòu)示意圖;圖3為本發(fā)明實施例提供的當(dāng)?shù)谝挥成浔聿捎没鶚涞乃饕Y(jié)構(gòu)時的索引圖;圖4為本發(fā)明實施例提供的當(dāng)?shù)诙成浔聿捎肂+樹的索引結(jié)構(gòu)時的索引圖;圖5為本發(fā)明實施例提供的SSD映射表的一種不意圖;圖6為本發(fā)明實施例提供的混合存儲系統(tǒng)對目標(biāo)數(shù)據(jù)塊的訪問請求的處理方法的流程示意圖;圖7為本發(fā)明實施例提供的數(shù)據(jù)塊遷移模塊和IO分割模塊對數(shù)據(jù)塊進(jìn)行處理的流程示意圖。
      具體實施例方式以下結(jié)合附圖對本發(fā)明的具體實施方式
      進(jìn)行說明。本發(fā)明實施例提供一種混合存儲系統(tǒng),包括:至少一個固態(tài)硬盤SSD、至少一個機(jī)械硬盤以及控制模塊;所述控制模塊用于將所述機(jī)械硬盤中的熱點數(shù)據(jù)塊遷移到所述SSD,以及,將所述SSD中的非熱點數(shù)據(jù)塊遷移到所述機(jī)械硬盤,其中,所述混合存儲系統(tǒng)中一共有H個數(shù)據(jù)塊,將所述H個數(shù)據(jù)塊按被訪問頻率由高到低排列,所述熱點數(shù)據(jù)塊為被訪問頻率位于前M的數(shù)據(jù)塊,所述非熱點數(shù)據(jù)塊為被訪問頻率位于后N的數(shù)據(jù)塊,其中,H彡M,H彡N。其中,本發(fā)明涉及到的SSD可以基于NAND或者NOR等flash存儲介質(zhì),具有較高的隨機(jī)讀和順序讀寫訪問性能,通過SSD緩存機(jī)械硬盤中的熱點數(shù)據(jù)塊,從而提高存儲系統(tǒng)的性價比。需要說明的是,本發(fā)明實施例提供的混合存儲系統(tǒng)中,可以包含多個SSD和多個機(jī)械硬盤,并且,將多個機(jī)械硬盤分成若干組,每一組的機(jī)械硬盤與一個SSD連接,如圖1所示,其中一組機(jī)械硬盤中包括5個機(jī)械硬盤,I個SSD與5個機(jī)械硬盤連接,通過一個SSD實現(xiàn)對5個機(jī)械硬盤的緩存,從而進(jìn)一步提高存儲系統(tǒng)的性價比。進(jìn)一步的,如圖1所示,SSD與前端主機(jī)相連接,前端主機(jī)的文件系統(tǒng)或者數(shù)據(jù)庫發(fā)送IO請求給混合存儲系統(tǒng),混合存儲系統(tǒng)將一個或者多個機(jī)械硬盤以邏輯卷的方式導(dǎo)出給前端主機(jī),前端主機(jī)利用傳統(tǒng)的塊訪問接口訪問混合存儲系統(tǒng)導(dǎo)出的邏輯卷。其中,本發(fā)明將多個機(jī)械硬盤組織稱為一個邏輯卷,也可以稱為RAID混合存儲系統(tǒng)卷;前端主機(jī)是一組訪問混合存儲系統(tǒng)的計算機(jī),可以是個人電腦、數(shù)據(jù)中心的服務(wù)器等。另外,熱點數(shù)據(jù)塊、非熱點數(shù)據(jù)塊的詳細(xì)定義以及數(shù)據(jù)塊遷移的具體方法將在下面提供的熱點數(shù)據(jù)塊的遷移方法中詳細(xì)介紹,在此不再介紹。

      本發(fā)明還提供一種應(yīng)用上述混合存儲系統(tǒng)的熱點數(shù)據(jù)塊的遷移方法,如圖2所示,控制模塊包括:熱點數(shù)據(jù)塊區(qū)分模塊、請求分發(fā)模塊、遷移觸發(fā)模塊和數(shù)據(jù)塊遷移模塊,所述熱點數(shù)據(jù)塊的遷移方法包括以下步驟:步驟101,熱點數(shù)據(jù)塊區(qū)分模塊創(chuàng)建并維護(hù)第一映射表和第二映射表,其中,所述第一映射表用于記錄與所述SSD或所述機(jī)械硬盤中每一個數(shù)據(jù)塊對應(yīng)的元素;所述第二映射表用于記錄與所述SSD或所述機(jī)械硬盤中的每一個熱點數(shù)據(jù)塊對應(yīng)的元素;其中,所述元素用于記錄與該元素對應(yīng)的數(shù)據(jù)塊的被訪問信息;所述被訪問信息包括:熱度值;當(dāng)所述熱點數(shù)據(jù)塊區(qū)分模塊每次接收到目標(biāo)數(shù)據(jù)塊的訪問請求時,均更新所述第一映射表和所述第二映射表,然后將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)送給所述請求分發(fā)模塊。本步驟中,熱點數(shù)據(jù)塊區(qū)分模塊為每一個被訪問的位于機(jī)械硬盤或者SSD中的數(shù)據(jù)塊均設(shè)置一個元素,該元素用于記錄與該元素對應(yīng)的數(shù)據(jù)塊的被訪問信息,其中,被訪問信息包括但不限于:被訪問的數(shù)據(jù)塊對應(yīng)的元素的熱度值、被訪問的數(shù)據(jù)塊在機(jī)械硬盤上的邏輯地址、被訪問的數(shù)據(jù)塊在一段時間內(nèi)的訪問次數(shù)、被訪問的數(shù)據(jù)塊最近被訪問η次的被訪問時間(η> I)。為使每一個被訪問的數(shù)據(jù)塊對應(yīng)的元素所記錄的被訪問信息具有實時性,每當(dāng)一個數(shù)據(jù)塊被訪問時,需要實時更新與該數(shù)據(jù)塊對應(yīng)的元素。另外,后續(xù)介紹被訪問的數(shù)據(jù)塊對應(yīng)的元素的熱度值的計算方法。
      熱點數(shù)據(jù)塊區(qū)分模塊所設(shè)置的元素可以采用映射表的方式存儲,從而方便查找。具體的,熱點數(shù)據(jù)塊區(qū)分模塊創(chuàng)建并維護(hù)第一映射表和第二映射表,第一映射表和所述第二映射表采用索引結(jié)構(gòu)的形式存儲元素,由于第一映射表記錄與所述SSD或所述機(jī)械硬盤中每一個數(shù)據(jù)塊對應(yīng)的元素,所以,第一映射表采用基樹和/或B樹和/或紅黑樹的索引結(jié)構(gòu),其索引關(guān)鍵字為所述元素對應(yīng)的數(shù)據(jù)塊在機(jī)械硬盤上的邏輯地址;由于第二映射表記錄與所述SSD或所述機(jī)械硬盤中的每一個熱點數(shù)據(jù)塊對應(yīng)的元素,所以第二映射表可以采用B+樹索引結(jié)構(gòu),其索引關(guān)鍵字為所述元素中記錄的所述熱度值。如圖3所示,為當(dāng)?shù)谝挥成浔聿捎没鶚涞乃饕Y(jié)構(gòu)時的索引圖,,該基樹以元素記錄的邏輯地址為索引;如圖4所示,為當(dāng)?shù)诙成浔聿捎肂+樹的索引結(jié)構(gòu)時的索引圖,其采用一棵葉節(jié)點個數(shù)為K的B+樹,索引熱度值最高的K個元素,該B+樹以元素的熱度值為索引,其中,熱度值最高的K個元素所對應(yīng)的數(shù)據(jù)塊即為本發(fā)明所涉及到的熱點數(shù)據(jù)塊。當(dāng)所述熱點數(shù)據(jù)塊區(qū)分模塊每次接收到目標(biāo)數(shù)據(jù)塊的訪問請求時,均更新所述第一映射表,更新的具體方法包括以下步驟:當(dāng)接收到所述目標(biāo)數(shù)據(jù)塊的訪問請求時,查找預(yù)先建立的第一映射表,判斷所述第一映射表中是否已記錄與所述目標(biāo)數(shù)據(jù)塊唯一對應(yīng)的目標(biāo)元素,如果判斷結(jié)果為是,則更新所述目標(biāo)元素;如果判斷結(jié)果為否,則向所述第一映射表中增加與所述目標(biāo)數(shù)據(jù)塊唯一對應(yīng)的所述目標(biāo)元素。當(dāng)所述熱點數(shù)據(jù)塊區(qū)分模塊每次接收到目標(biāo)數(shù)據(jù)塊的訪問請求時,均更新所述第二映射表,更新的具體方法包括以下步驟:當(dāng)接收到所述目標(biāo)數(shù)據(jù)塊的訪問請求時,查找預(yù)先建立的第二映射表,判斷所述第二映射表中是否已記錄與所述目標(biāo)數(shù)據(jù)塊唯一對應(yīng)的目標(biāo)元素,如果判斷結(jié)果為是,則更新所述目標(biāo)元素;如果判斷結(jié)果為否,則進(jìn)一步判斷所述第二映射表是否已滿,如果判斷結(jié)果為否,則向所述第二映射表中增加與所述目標(biāo)數(shù)據(jù)塊唯一對應(yīng)的所述目標(biāo)元素;如果判斷結(jié)果為是,則獲取所述第二映射表中具有最小熱度值的元素,然后,比較所述目標(biāo)數(shù)據(jù)塊的當(dāng)前熱度值是否大于所述最小熱度值,如果判斷結(jié)果為是,則刪除所述第二映射表中所述具有最小熱度值的元素,并向所述第二映射表中增加與所述目標(biāo)數(shù)據(jù)塊對應(yīng)的元素。以圖3和圖4為例,介紹對第一映射表和第二映射表更新的一種具體實現(xiàn)方式:如圖3所示,當(dāng)目標(biāo)數(shù)據(jù)塊訪問請求到達(dá)時,熱點數(shù)據(jù)塊區(qū)分模塊能快速地根據(jù)該目標(biāo)數(shù)據(jù)塊所攜帶的邏輯地址索引基樹,判斷在該基樹中是否存在與該目標(biāo)數(shù)據(jù)塊對應(yīng)的目標(biāo)元素,如果該目標(biāo)數(shù)據(jù)塊所對應(yīng)的目標(biāo)元素沒有在基樹中,那么分配和構(gòu)建一個新的目標(biāo)元素,并插入到基樹中;如果在該基樹中已存在與該目標(biāo)數(shù)據(jù)塊對應(yīng)的目標(biāo)元素,則直接更新該目標(biāo)元素記錄的被訪問信息。根據(jù)這些被訪問信息,熱點數(shù)據(jù)塊區(qū)分模塊計算出目標(biāo)數(shù)據(jù)塊的熱度值,并且統(tǒng)計出熱度值最高的K個數(shù)據(jù)塊,并將這K個數(shù)據(jù)塊所對應(yīng)的元素由一棵B+樹索引。如圖4所示,該B+樹以每個數(shù)據(jù)塊的熱度值為關(guān)鍵字,每個葉節(jié)點是一個元素,因此熱度值在前K位的數(shù)據(jù)塊所對應(yīng)的元素,不僅被基樹索引,同時也被B+樹索引。對B+樹的更新方式為:當(dāng)一個新的數(shù)據(jù)塊請求到達(dá)時,熱數(shù)據(jù)區(qū)分模塊更新該數(shù)據(jù)塊在元素中保存的熱度值,如果更新后的熱度值比B+樹中最小的熱度值要大,并且該元素未被B+樹索引,那么B+樹中熱度值最小的元素被從B+樹中刪除,而剛請求的數(shù)據(jù)塊所對應(yīng)的元素被插入B+樹中。圖4中,N表示節(jié)點,如N25表示節(jié)點25的指針,L表示熱度值,如L702表示葉節(jié)點對應(yīng)的元素的熱度值為702,key表示鍵值。如果機(jī)械硬盤的空間較大,基樹的大小也會相應(yīng)較大,基樹的結(jié)構(gòu)中可以加入一個元素緩存,該元素緩存中存儲的所有元素以數(shù)據(jù)塊的熱度值為序排列,如果一個元素排列在序列隊尾,那么它將被周期性地清理出該序列,直到對應(yīng)的數(shù)據(jù)塊被訪問時,新的元素被重新構(gòu)建,并加入基樹。在具體實現(xiàn)上,每個元素的結(jié)構(gòu)體描述如下:
      typedef struct {
      unsigned int rank; //元素對應(yīng)的數(shù)據(jù)塊的熱度值 unsigned int tmp rank; //臨時存儲值 unsigned short last—acc[HISTORY—SIZE]; //歷史訪問時間 unsigned int fs—lbn; //元素對應(yīng)的數(shù)據(jù)塊的邏輯地址 } element—t;其中,元素對應(yīng)的數(shù)據(jù)塊邏輯地址fs_lbn記錄該元素對應(yīng)的機(jī)械硬盤中的數(shù)據(jù)塊邏輯地址,該地址是唯一的,因此可以用于進(jìn)行元素在基樹中的檢索。元素的歷史訪問時間通過last_acc數(shù)組記錄,每次數(shù)據(jù)塊被訪問時,訪問時間將被記錄到該數(shù)組中。每次訪問時候,元素對應(yīng)的熱度值tmp_rank通過歷史訪問時間數(shù)組計算出來。數(shù)據(jù)塊的歷史訪問時間數(shù)組last_acc的大小HIST0RY_SIZE可以根據(jù)用戶需求調(diào)整。在具體實現(xiàn)上,基樹可以采用以下方式描述:
      struct radix—tree—node {unsigned int height; /* Height from the bottom */unsigned int count;
      void * slots[RADIX_TREE_MAP_SIZE];
      unsignedlong
      tags[RADIX—TREE—MAX—TAGS] [RADIX—TREE—TAG—LONGS];
      };其中,height對應(yīng)基樹的高度,count表示節(jié)點中有效槽的個數(shù),slot表示每個槽的指針地址,而tag表示槽的狀態(tài)。因此通過基樹的根節(jié)點和根節(jié)點中的slot指針,可以從基樹的根節(jié)點開始索引該基樹。另外,元素中記錄的熱度值的計算方法可以包括以下步驟:步驟201,創(chuàng)建并維護(hù)與每一個所述元素唯一對應(yīng)的單元數(shù)組,所述單元數(shù)組由多個單元組成,每個單元對應(yīng)的時間跨度M均相同;每個單元均記錄以下兩項內(nèi)容:該單元的開始時間戳C ;在與該單元對應(yīng)的時間跨度內(nèi),與該元素對應(yīng)的數(shù)據(jù)塊的被訪問的次數(shù)T ;其中,所述單元的開始時間戳 為該數(shù)據(jù)塊在與該單元對應(yīng)的時間跨度內(nèi)首次被訪問的時間點,所述單元數(shù)組中的各個單元按C值的先后順序排列;
      其中,維護(hù)的具體方法為:當(dāng)在時間點D接收到所述目標(biāo)數(shù)據(jù)塊的訪問請求時,查找與所述目標(biāo)數(shù)據(jù)塊對應(yīng)的目標(biāo)單元數(shù)組,獲取該目標(biāo)單元數(shù)組中最后一個有效單元,讀取該有效單元的開始時間戳Cl,如果D小于Cl+Μ,則用T+1更新所述有效單元中記錄的T,獲得新的T值,否則,向所述目標(biāo)單元數(shù)組中申請一個新的單元,且該新的單元的C值即為D值,該新的單元的T值為I。步驟202,根據(jù)以下公式計算熱度值:熱度值=Σ (每個單元中記錄的訪問次數(shù)*f (ti)),其中,f (ti) = (C-系統(tǒng)初始化時間)/M,系統(tǒng)初始化時間為將所述控制模塊加載到操作系統(tǒng)的時間。其中,f(ti)為系統(tǒng)時間的對數(shù),用于計算IO請求的時間局部性。每一個時間值ti對應(yīng)于單元數(shù)據(jù)中的一個單元,其計算方法為:(單元的開始時間戳-系統(tǒng)初始化時間)/時間跨度的長度,而f (ti)則表示為logn(ti),其中η大于I。熱點數(shù)據(jù)塊區(qū)分模塊,根據(jù)系統(tǒng)時間的對數(shù)f(ti),計算IO請求的時間局部性。每一個時間值ti對應(yīng)于單元數(shù)組中的一個單元,同時也考慮數(shù)據(jù)塊的訪問頻率,最終的熱度值計算方法為:Σ (每個單元中記錄的訪問次數(shù)*f(ti)),即所有單元格中記錄的訪問次數(shù)與系統(tǒng)時間對數(shù)函數(shù)的結(jié)果相乘得到的總和。因此,本發(fā)明中,熱度值的計算結(jié)果為單元數(shù)組中所有單元格中記錄的被訪問次數(shù)與系統(tǒng)時間對數(shù)函數(shù)的結(jié)果相乘得到的總和。由于傳統(tǒng)的熱點數(shù)據(jù)塊的區(qū)分方法中,或者僅考慮了最近一次被訪問的時間,導(dǎo)致周期性訪問的數(shù)據(jù)難以駐留在緩存中;或者僅考慮了數(shù)據(jù)塊的被訪問頻率,導(dǎo)致無法區(qū)分被訪問的時間局部性。而本發(fā)明所述的熱點數(shù)據(jù)塊區(qū)分機(jī)制中,綜合了數(shù)據(jù)塊被訪問的時間局部性和頻率局部性的特點,從而提高了緩存數(shù)據(jù)的命中率和系統(tǒng)的整體性能。步驟102,所述請求分發(fā)模塊判斷所述SSD中是否已存在所述目標(biāo)數(shù)據(jù)塊,如果判斷結(jié)果為是,則將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)送給所述SSD中的所述目標(biāo)數(shù)據(jù)塊,否則,將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)送給所述機(jī)械硬盤中的所述目標(biāo)數(shù)據(jù)塊;同時,更新與所述目標(biāo)數(shù)據(jù)塊對應(yīng)的失效次數(shù)值,其中,所述失效次數(shù)值為將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)送給所述機(jī)械硬盤中的所述目標(biāo)數(shù)據(jù)塊的次數(shù);步驟103,所述遷移觸發(fā)模塊獲取步驟101中與所述目標(biāo)數(shù)據(jù)塊對應(yīng)的所述元素中記錄的熱度值以及步驟102中所述失效次數(shù)值,判斷是否達(dá)到遷移觸發(fā)條件,如果達(dá)到,則向所述數(shù)據(jù)塊遷移模塊發(fā)出數(shù)據(jù)塊遷移指令;具體的,遷移觸發(fā)模塊主要負(fù)責(zé)觸發(fā)數(shù)據(jù)塊遷移的過程,它允許系統(tǒng)提供多種遷移策略,減少混合存儲系統(tǒng)在進(jìn)行數(shù)據(jù)塊遷移的過程中對前端主機(jī)IO請求的性能影響。本發(fā)明提供的為一種混合存儲系統(tǒng)中基于熱度值的和失效次數(shù)的混合策略,基于熱度值的策略是,當(dāng)從上次遷移完成到當(dāng)前的時間超過一個閾值時,該數(shù)據(jù)塊對應(yīng)的熱度值會被降低到一個門限值,從而觸發(fā)遷移過程,因此可以提高時間局部性較高的數(shù)據(jù)塊被遷移進(jìn)SSD的概率,而基于失效次數(shù)的方法是,當(dāng)一段時間內(nèi)數(shù)據(jù)塊的請求到達(dá)機(jī)械硬盤的次數(shù)超過閾值時,遷移將被觸發(fā),因此可以降低緩存數(shù)據(jù)不恰當(dāng)?shù)臅r候,前端主機(jī)IO請求性能被影響的概率。步驟104,所述數(shù)據(jù)塊遷移模塊接收到所述數(shù)據(jù)塊遷移指令時,將所述SSD中的非熱點數(shù)據(jù)塊遷移到所述機(jī)械硬盤中,或,將所述機(jī)械硬盤中的熱點數(shù)據(jù)塊遷移到所述SSD中。數(shù)據(jù)塊遷移模塊接收到所述數(shù)據(jù)塊遷移指令時,將所述SSD中的非熱點數(shù)據(jù)塊遷移到所述機(jī)械硬盤中,或,將所述機(jī)械硬盤中的熱點數(shù)據(jù)塊遷移到所述SSD中,具體包括以下步驟:步驟301,所述數(shù)據(jù)塊遷移模塊創(chuàng)建并維護(hù)SSD映射表,所述SSD映射表用于記錄與所述SSD中所有數(shù)據(jù)塊對應(yīng)的元素;如圖5所示,為SSD映射表的一種示意圖,該SSD映射表中每一個元素對應(yīng)三個屬性:該元素對應(yīng)的數(shù)據(jù)塊在SSD中的邏輯地址、該元素對應(yīng)的數(shù)據(jù)塊在機(jī)械硬盤中的邏輯塊地址、該元素對應(yīng)的數(shù)據(jù)塊在SSD中的狀態(tài),其中,該元素對應(yīng)的數(shù)據(jù)塊在SSD中的狀態(tài)包括:“干凈”狀態(tài)、“臟”狀態(tài)和無效狀態(tài),所述“干凈”狀態(tài)表示該元素對應(yīng)的數(shù)據(jù)塊在SSD中與在機(jī)械硬盤中存儲的內(nèi)容一致,所述“臟”狀態(tài)表示該元素對應(yīng)的數(shù)據(jù)塊在SSD中與在機(jī)械硬盤中存儲的內(nèi)容不一致,所述無效狀態(tài)表明該元素對應(yīng)的數(shù)據(jù)塊在SSD中為空白數(shù)據(jù)塊;其中,所述SSD映射表維護(hù)的具體方法為:當(dāng)所述SSD中第一數(shù)據(jù)塊被遷移到所述機(jī)械硬盤時,刪除所述SSD中與所述第一數(shù)據(jù)塊對應(yīng)的元素;當(dāng)所述機(jī)械硬盤中的第二數(shù)據(jù)塊被遷移到所述SSD時,向所述SSD映射表中增加與所述第二數(shù)據(jù)塊對應(yīng)的元素;步驟302,所述數(shù)據(jù)塊遷移模塊將所述第二映射表記錄的元素加入到移入隊列,將所述SSD映射表中記錄的元素加入到移出隊列;判斷所述移入隊列和所述移出隊列中是否存在相同的元素,如果存在,則從所述移入隊列和所述移出隊列中同時刪除所述相同的元素,得到新的移入隊列和新的移出隊列,然后執(zhí)行步驟303 ;如果不存在,則直接執(zhí)行步驟303 ;本步驟中,最終構(gòu)造得到的移出隊列中的元素為:處于SSD映射表中所有的數(shù)據(jù)塊所對應(yīng)的元素,并且該元素未存在于第二映射表中,由于第二映射表中記錄的為熱點數(shù)據(jù)塊對應(yīng)的元素,而SSD映射表中記錄的為SSD中所有數(shù)據(jù)據(jù)塊對應(yīng)的元素,所以,最終構(gòu)造得到的移出隊列中的元素為SSD中非熱點數(shù)據(jù)塊所對應(yīng)的元素,也就是需要從SSD遷移到機(jī)械硬盤的數(shù)據(jù)塊所對應(yīng)的元素。移入隊列則記錄所有需要從機(jī)械硬盤遷移到SSD的數(shù)據(jù)塊所對應(yīng)的所述元素。最終構(gòu)造得到的移入隊列中的元素為:處于第二映射表中所有的數(shù)據(jù)塊所對應(yīng)的元素,并且該元素未存在于SSD映射表中。即,移入隊列中的元素為未存在于SSD中的熱點數(shù)據(jù)塊所對應(yīng)的元素,也就是需要從機(jī)械硬盤遷移到SSD的熱點數(shù)據(jù)塊所對應(yīng)的元素。步驟303,所述數(shù)據(jù)塊遷移模塊遍歷步驟302得到的所述移入隊列中所有元素,讀取每個元素對應(yīng)的機(jī)械硬盤中的數(shù)據(jù)塊,并將該數(shù)據(jù)塊寫入SSD中,同時在SSD映射表中增加與該數(shù)據(jù)塊對應(yīng)的元素;所述數(shù)據(jù)塊遷移模塊遍歷步驟302得到的所述移出隊列中所有元素,讀取每個元素對應(yīng)的SSD中的數(shù)據(jù)塊,判斷讀取到的數(shù)據(jù)塊對應(yīng)的元素在SSD映射表中的狀態(tài),如果狀態(tài)為“干凈”,則執(zhí)行步驟304 ;如果狀態(tài)為“臟”,則執(zhí)行步驟305 ;步驟304,將讀取到的數(shù)據(jù)塊對應(yīng)的元素在SSD映射表中的狀態(tài)設(shè)置為所述無效狀態(tài);步驟305,將讀取到的SSD中的數(shù)據(jù)塊寫回到機(jī)械硬盤中的對應(yīng)數(shù)據(jù)塊中,同時,刪除SSD映射表中與該數(shù)據(jù)塊對應(yīng)的元素;
      由于請求分發(fā)模塊和數(shù)據(jù)塊遷移模塊是兩個并列的進(jìn)程,所以,請求分發(fā)模塊也可以直接對數(shù)據(jù)塊的訪問請求進(jìn)行重定向,具體的,步驟301之后,還包括:當(dāng)所述請求分發(fā)模塊接收到所述目標(biāo)數(shù)據(jù)塊的訪問請求時,查找所述SSD映射表,判斷所述SSD映射表中是否存在與所述目標(biāo)數(shù)據(jù)塊對應(yīng)的目標(biāo)元素,如果存在,則進(jìn)一步判斷所述目標(biāo)元素的狀態(tài)是否為無效狀態(tài),如果不是,則將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)送給所述SSD中,然后,當(dāng)該目標(biāo)數(shù)據(jù)塊的訪問請求為寫請求時,設(shè)置SSD映射表中與該目標(biāo)數(shù)據(jù)塊對應(yīng)的元素的狀態(tài)為“臟”狀態(tài);如果不存在,則直接將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)送給所述機(jī)械硬盤中。另外,步驟303之后,如圖6所示,本發(fā)明提供一種混合存儲系統(tǒng)對目標(biāo)數(shù)據(jù)塊的訪問請求的處理方法,包括:步驟401,當(dāng)所述請求分發(fā)模塊接收到所述目標(biāo)數(shù)據(jù)塊的訪問請求時,查找所述移入隊列和所述移出隊列,判斷所述目標(biāo)數(shù)據(jù)塊是否正在被所述數(shù)據(jù)塊遷移模塊遷移,如果判斷結(jié)果為否,則執(zhí)行步驟402,如果判斷結(jié)果為是,則執(zhí)行步驟403-步驟406 ;步驟402,查找所述SSD映射表,判斷該目標(biāo)數(shù)據(jù)塊是否已經(jīng)被映射到SSD中,如果判斷結(jié)果為是,則將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)往至SSD,否則,將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)往至機(jī)械硬盤中,然后結(jié)束流程;步驟403,比較該目標(biāo)數(shù)據(jù)塊的請求大小和操作系統(tǒng)頁面的大小,如果前者小,則等待所述數(shù)據(jù)塊遷移模塊的遷移過程完成,然后執(zhí)行步驟402,否則,執(zhí)行步驟404-406 ;步驟404,判斷該目標(biāo)數(shù)據(jù)塊的訪問請求是否為讀請求,如果判斷結(jié)果為是,則執(zhí)行步驟405 ;如果判斷結(jié)果為否,則執(zhí)行步驟406 ;步驟405,查找該目標(biāo)數(shù)據(jù)塊對應(yīng)的元素是否位于所述移出隊列中,如果是,則將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)往SSD,否則,將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)往所述機(jī)械硬盤,并結(jié)束流程;步驟406,判斷所述目標(biāo)數(shù)據(jù)塊是否位于所述移出隊列中,如果判斷結(jié)果為是,則從所述SSD映射表中刪除與該目標(biāo)數(shù)據(jù)塊對應(yīng)的元素,并將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)往機(jī)械硬盤中;如果判斷結(jié)果為否,則將所述SSD映射表中與所述目標(biāo)數(shù)據(jù)塊對應(yīng)的元素狀態(tài)標(biāo)記為“臟”狀態(tài),并將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)往所述SSD中,結(jié)束流程。需要說明的是,本發(fā)明實施例是以請求分發(fā)模塊或熱點數(shù)據(jù)塊區(qū)分模塊接收到數(shù)據(jù)塊后,對數(shù)據(jù)塊所作的處理。但本領(lǐng)域技術(shù)人員公知,如果請求分發(fā)模塊或熱點數(shù)據(jù)塊區(qū)分模塊接收到的為前端主機(jī)發(fā)送的IO請求時,還包括:請求分發(fā)模塊或熱點數(shù)據(jù)塊區(qū)分模塊對接收到的IO請求以扇區(qū)為單位進(jìn)行劃分,得到子請求,每一個子請求即為一個數(shù)據(jù)塊的訪問請求。另外,如圖7所示,為數(shù)據(jù)塊遷移模塊和IO分割模塊對數(shù)據(jù)塊進(jìn)行處理的流程示意圖,包括以下步驟:步驟501,數(shù)據(jù)塊遷移模塊判斷遷移進(jìn)程是否正在退出,如果是,則執(zhí)行步驟502,否則,執(zhí)行步驟503-509 ;步驟502,數(shù)據(jù)塊遷移模塊設(shè)置遷移進(jìn)程為退出狀態(tài),并完成剩余的IO操作。步驟503,數(shù)據(jù)塊遷移模塊根據(jù)SSD映射表計算SSD中的空閑塊數(shù);步驟504,數(shù)據(jù)塊遷移模塊基于需要遷移的數(shù)據(jù)塊構(gòu)建遷移隊列;
      其中,構(gòu)建的遷移隊列包括:移入隊列和移出隊列;具體的構(gòu)建方法為:首先將第二映射表中所有元素加入移入隊列,將SSD映射表中每一項元素加入移出隊列。然后,刪除同時位于移入隊列和移出隊列中的元素,得到新的移入隊列和移出隊列,對新的移入隊列和移出隊列中的元素依次進(jìn)行下述處理。步驟505,判斷遷移隊列是否為移出隊列,如果是,則對于移出隊列中的每一個元素,執(zhí)行步驟506,否則,執(zhí)行步驟507-509。步驟506,判斷SSD映射表中與待移出元素對應(yīng)項是否為“臟”狀態(tài),如果是,則刪除SSD映射表中對應(yīng)項,否則,執(zhí)行步驟507-509。步驟507,根據(jù)元素的邏輯地址構(gòu)建一個新的數(shù)據(jù)塊讀請求,并發(fā)往SSD中;步驟508,判斷數(shù)據(jù)塊讀請求是否成功,如果否,則返回失敗消息;否則,執(zhí)行步驟509 ;步驟509,判斷當(dāng)前進(jìn)行的數(shù)據(jù)塊遷移進(jìn)程是否被中斷,如果是,則返回失敗消息;否則,根據(jù)構(gòu)建的數(shù)據(jù)塊讀請求最終獲得的數(shù)據(jù),構(gòu)建一個新的寫請求,并發(fā)送到機(jī)械硬盤中。綜上所述,本發(fā)明提供的混合存儲系統(tǒng),具備以下優(yōu)點:(I)混合存儲系統(tǒng)性價比高。將SSD作為機(jī)械硬盤的緩存,少量的SSD空間被用來緩存大部分訪問頻率高和時間局部性較高的數(shù)據(jù)塊,即:熱點數(shù)據(jù)塊,由于SSD的順序讀寫和隨機(jī)讀性能優(yōu)于機(jī)械硬盤,因此提高了混合存儲系統(tǒng)的整體訪問性能;又由于SSD的數(shù)量遠(yuǎn)少于機(jī)械硬盤的數(shù)量,所以,降低了混合存儲系統(tǒng)的整體成本。(2)區(qū)分熱點數(shù)據(jù)塊的效率高。由于傳統(tǒng)的熱點數(shù)據(jù)塊的區(qū)分方法中,或者僅考慮了最近一次被訪問的時間,導(dǎo)致周期性訪問的數(shù)據(jù)難以駐留在緩存中;或者僅考慮了數(shù)據(jù)塊的被訪問頻率,導(dǎo)致無法區(qū)分被訪問的時間局部性。而本發(fā)明所述的熱點數(shù)據(jù)塊區(qū)分機(jī)制中,綜合了數(shù)據(jù)塊被訪問的時間局部性和頻率局部性的特點,從而提高了緩存數(shù)據(jù)的命中率和系統(tǒng)的整體性能。(3)數(shù)據(jù)塊遷移靈活度高。本發(fā)明通過一個專用的遷移觸發(fā)模塊來啟動數(shù)據(jù)塊遷移,因此可以根據(jù)系統(tǒng)的具體情況,如失效次數(shù)和遷移時間等,自動調(diào)整遷移時機(jī)。而本發(fā)明所述的數(shù)據(jù)塊遷移過程,處理了遷移過程與前端用戶IO請求的沖突,減少了沖突引起的性能降低情況。并且,本發(fā)明所述的數(shù)據(jù)塊遷移過程,無須修改上層文件系統(tǒng)的元數(shù)據(jù),可以透明支持多種文件系統(tǒng)。以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視本發(fā)明的保護(hù)范圍。
      權(quán)利要求
      1.一種混合存儲系統(tǒng),其特征在于,包括:至少一個固態(tài)硬盤SSD、至少一個機(jī)械硬盤以及控制模塊;所述控制模塊用于將所述機(jī)械硬盤中的熱點數(shù)據(jù)塊遷移到所述SSD,以及,將所述SSD中的非熱點數(shù)據(jù)塊遷移到所述機(jī)械硬盤,其中,所述混合存儲系統(tǒng)中一共有H個數(shù)據(jù)塊,將所述H個數(shù)據(jù)塊按被訪問頻率由高到低排列,所述熱點數(shù)據(jù)塊為被訪問頻率位于前M的數(shù)據(jù)塊,所述非熱點數(shù)據(jù)塊為被訪問頻率位于后N的數(shù)據(jù)塊,其中,H > M,H > N。
      2.一種應(yīng)用權(quán)利要求1所述混合存儲系統(tǒng)的熱點數(shù)據(jù)塊的遷移方法,其特征在于,所述控制模塊包括:熱點數(shù)據(jù)塊區(qū)分模塊、請求分發(fā)模塊、遷移觸發(fā)模塊和數(shù)據(jù)塊遷移模塊,所述熱點數(shù)據(jù)塊的遷移方法包括以下步驟: SI,所述熱點數(shù)據(jù)塊區(qū)分模塊創(chuàng)建并維護(hù)第一映射表和第二映射表,其中,所述第一映射表用于記錄與所述SSD或所述機(jī)械硬盤中每一個數(shù)據(jù)塊對應(yīng)的元素;所述第二映射表用于記錄與所述SSD或所述機(jī)械硬盤中的每一個熱點數(shù)據(jù)塊對應(yīng)的元素;其中,所述元素用于記錄與該元素對應(yīng)的數(shù)據(jù)塊的被訪問信息;所述被訪問信息包括:熱度值; 當(dāng)所述熱點數(shù)據(jù)塊區(qū)分模塊每次接收到目標(biāo)數(shù)據(jù)塊的訪問請求時,均更新所述第一映射表和所述第二映射表,然后將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)送給所述請求分發(fā)模塊; S2,所述請求分發(fā)模塊判斷所述SSD中是否已存在所述目標(biāo)數(shù)據(jù)塊,如果判斷結(jié)果為是,則將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)送給所述SSD中的所述目標(biāo)數(shù)據(jù)塊,否則,將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)送給所述機(jī)械硬盤中的所述目標(biāo)數(shù)據(jù)塊;同時,更新與所述目標(biāo)數(shù)據(jù)塊對應(yīng)的失效次數(shù)值,其中,所述失效次數(shù)值為將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)送給所述機(jī)械硬盤中的所述目標(biāo)數(shù)據(jù)塊的次數(shù); S3,所述遷移觸發(fā)模塊獲取SI中與所述目標(biāo)數(shù)據(jù)塊對應(yīng)的所述元素中記錄的熱度值以及S2中所述失效次數(shù)值,判斷是否達(dá)到遷移觸發(fā)條件,如果達(dá)到,則向所述數(shù)據(jù)塊遷移模塊發(fā)出數(shù)據(jù)塊遷移指令; S4,所述數(shù)據(jù)塊遷移模塊接收到所述數(shù)據(jù)塊遷移指令時,將所述SSD中的非熱點數(shù)據(jù)塊遷移到所述機(jī)械硬盤中,或,將所述機(jī)械硬盤中的熱點數(shù)據(jù)塊遷移到所述SSD中。
      3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述第一映射表和所述第二映射表采用索引結(jié)構(gòu)的形式存儲元素;其中,所述第一映射表采用基樹和/或B樹和/或紅黑樹的索引結(jié)構(gòu),其中,其索引關(guān)鍵字為所述元素對應(yīng)的數(shù)據(jù)塊在機(jī)械硬盤上的邏輯地址;所述第二映射表采用B+樹索引結(jié)構(gòu),其索引關(guān)鍵字為所述元素中記錄的所述熱度值。
      4.根據(jù)權(quán)利要求2所述的方法,其特征在于,SI中, 當(dāng)所述熱點數(shù)據(jù)塊區(qū)分模塊每次接收到目標(biāo)數(shù)據(jù)塊的訪問請求時,均更新所述第一映射表,具體為:當(dāng)接收到所述目標(biāo)數(shù)據(jù)塊的訪問請求時,查找預(yù)先建立的第一映射表,判斷所述第一映射表中是否已記錄與所述目標(biāo)數(shù)據(jù)塊唯一對應(yīng)的目標(biāo)元素,如果判斷結(jié)果為是,則更新所述目標(biāo)元素;如果判斷結(jié)果為否,則向所述第一映射表中增加與所述目標(biāo)數(shù)據(jù)塊唯一對應(yīng)的所述目標(biāo)元素; 當(dāng)所述熱點數(shù)據(jù)塊區(qū)分模塊每次接收到目標(biāo)數(shù)據(jù)塊的訪問請求時,均更新所述第二映射表,具體為:當(dāng)接收到所述目標(biāo)數(shù)據(jù)塊的訪問請求時,查找預(yù)先建立的第二映射表,判斷所述第二映射表中 是否已記錄與所述目標(biāo)數(shù)據(jù)塊唯一對應(yīng)的目標(biāo)元素,如果判斷結(jié)果為是,則更新所述目標(biāo)元素;如果判斷結(jié)果為否,則進(jìn)一步判斷所述第二映射表是否已滿,如果判斷結(jié)果為否,則向所述第二映射表中增加與所述目標(biāo)數(shù)據(jù)塊唯一對應(yīng)的所述目標(biāo)元素;如果判斷結(jié)果為是,則獲取所述第二映射表中具有最小熱度值的元素,然后,比較所述目標(biāo)數(shù)據(jù)塊的當(dāng)前熱度值是否大于所述最小熱度值,如果判斷結(jié)果為是,則刪除所述第二映射表中所述具有最小熱度值的元素,并向所述第二映射表中增加與所述目標(biāo)數(shù)據(jù)塊對應(yīng)的元素。
      5.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述元素中記錄的所述熱度值的計算方法為: Sll,創(chuàng)建并維護(hù)與每一個所述元素唯一對應(yīng)的單元數(shù)組,所述單元數(shù)組由多個單元組成,每個單元對應(yīng)的時間跨度M均相同;每個單元均記錄以下兩項內(nèi)容:該單元的開始時間戳C ;在與該單元對應(yīng)的時間跨度內(nèi),與該元素對應(yīng)的數(shù)據(jù)塊的被訪問的次數(shù)T ;其中,所述單元的開始時間戳為該數(shù)據(jù)塊在與該單元對應(yīng)的時間跨度內(nèi)首次被訪問的時間點,所述單元數(shù)組中的各個單元按C值的先后順序排列; 其中,維護(hù)的具體方法為:當(dāng)在時間點D接收到所述目標(biāo)數(shù)據(jù)塊的訪問請求時,查找與所述目標(biāo)數(shù)據(jù)塊對應(yīng)的目標(biāo)單元數(shù)組,獲取該目標(biāo)單元數(shù)組中最后一個有效單元,讀取該有效單元的開始時間戳Cl,如果D小于Cl+Μ,則用T+1更新所述有效單元中記錄的T,獲得新的T值,否則,向所述目標(biāo)單元數(shù)組中申請一個新的單元,且該新的單元的C值即為D值,該新的單元的T值為I ; S12,根據(jù)以下公式計算熱度值: 熱度值=Σ (每個單元中記錄的訪問次數(shù)*f (ti)),其中,f (ti) = (C-系統(tǒng)初始化時間)/M,系統(tǒng)初始化時間為將所述控制模塊加載到操作系統(tǒng)的時間。
      6.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述數(shù)據(jù)塊遷移模塊接收到所述數(shù)據(jù)塊遷移指令時,將所述SSD中的非熱點數(shù)據(jù)塊遷移到所述機(jī)械硬盤中,或,將所述機(jī)械硬盤中的熱點數(shù)據(jù)塊遷移到所述SSD中,具體為: S41,所述數(shù)據(jù)塊遷移模塊創(chuàng)建并維護(hù)SSD映射表,所述SSD映射表用于記錄與所述SSD中所有數(shù)據(jù)塊對應(yīng)的元素;所述SSD映射表中每一個元素對應(yīng)三個屬性:該元素對應(yīng)的數(shù)據(jù)塊在SSD中的邏輯地址、該元素對應(yīng)的數(shù)據(jù)塊在機(jī)械硬盤中的邏輯塊地址、該元素對應(yīng)的數(shù)據(jù)塊在SSD中的狀態(tài),其中,該元素對應(yīng)的數(shù)據(jù)塊在SSD中的狀態(tài)包括:“干凈”狀態(tài)、“臟”狀態(tài)和無效狀態(tài),所述“干凈”狀態(tài)表示該元素對應(yīng)的數(shù)據(jù)塊在SSD中與在機(jī)械硬盤中存儲的內(nèi)容一致,所述“臟”狀態(tài)表示該元素對應(yīng)的數(shù)據(jù)塊在SSD中與在機(jī)械硬盤中存儲的內(nèi)容不一致,所述無效狀態(tài)表明該該元素對應(yīng)的數(shù)據(jù)塊在SSD中為空白數(shù)據(jù)塊; 其中,所述SSD映射表維護(hù)的具體方法為:當(dāng)所述SSD中第一數(shù)據(jù)塊被遷移到所述機(jī)械硬盤時,刪除所述SSD中與所述第一數(shù)據(jù)塊對應(yīng)的元素;當(dāng)所述機(jī)械硬盤中的第二數(shù)據(jù)塊被遷移到所述SSD時,向所述SSD映射表中增加與所述第二數(shù)據(jù)塊對應(yīng)的元素; S42,所述數(shù)據(jù)塊遷移模塊將所述第二映射表記錄的元素加入到移入隊列,將所述SSD映射表中記錄的元素加入到移出隊列;判斷所述移入隊列和所述移出隊列中是否存在相同的元素,如果存在,則從所述移入隊列和所述移出隊列中同時刪除所述相同的元素,得到新的移入隊列和新的移出隊列,然后執(zhí)行S43 ;如果不存在,則直接執(zhí)行步驟S43 ; S43,所述數(shù)據(jù)塊遷移模塊遍歷S42得到的所述移入隊列中所有元素,讀取每個元素對應(yīng)的機(jī)械硬盤中的數(shù)據(jù)塊,并將該數(shù)據(jù)塊寫入SSD中,同時在SSD映射表中增加與該數(shù)據(jù)塊對應(yīng)的元素;所述數(shù)據(jù)塊遷移模塊遍歷S42得到的所述移出隊列中所有元素,讀取每個元素對應(yīng)的SSD中的數(shù)據(jù)塊,判斷讀取到的數(shù)據(jù)塊對應(yīng)的元素在SSD映射表中的狀態(tài),如果狀態(tài)為“干凈”,則執(zhí)行S44 ;如果狀態(tài)為“臟”,則執(zhí)行S45 ; S44,將讀取到的數(shù)據(jù)塊對應(yīng)的元素在SSD映射表中的狀態(tài)設(shè)置為所述無效狀態(tài); S45,將讀取到的SSD中的數(shù)據(jù)塊寫回到機(jī)械硬盤中的對應(yīng)數(shù)據(jù)塊中,同時,刪除SSD映射表中與該數(shù)據(jù)塊對應(yīng)的元素。
      7.根據(jù)權(quán)利要求6所述的方法,其特征在于,S41之后,還包括: 當(dāng)所述請求分發(fā)模塊接收到所述目標(biāo)數(shù)據(jù)塊的訪問請求時,查找所述SSD映射表,判斷所述SSD映射表中是否存在與所述目標(biāo)數(shù)據(jù)塊對應(yīng)的目標(biāo)元素,如果存在,則進(jìn)一步判斷所述目標(biāo)元素的狀態(tài)是否為無效狀態(tài),如果不是,則將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)送給所述SSD中,然后,當(dāng)該目標(biāo)數(shù)據(jù)塊的訪問請求為寫請求時,設(shè)置SSD映射表中與該目標(biāo)數(shù)據(jù)塊對應(yīng)的元素的狀態(tài)為“臟”狀態(tài);如果不存在,則直接將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)送給所述機(jī)械硬盤中。
      8.根據(jù)權(quán)利要求6所述的方法,其特征在于,S43之后,還包括: S46,當(dāng)所述請求分發(fā)模塊接收到所述目標(biāo)數(shù)據(jù)塊的訪問請求時,查找所述移入隊列和所述移出隊列,判斷所述目標(biāo)數(shù)據(jù)塊是否正在被所述數(shù)據(jù)塊遷移模塊遷移,如果判斷結(jié)果為否,則執(zhí)行S47,如果判斷結(jié)果為是,則執(zhí)行S48-S51 ; S47,查找所述SSD映射表,判斷該目標(biāo)數(shù)據(jù)塊是否已經(jīng)被映射到SSD中,如果判斷結(jié)果為是,則將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)往至SSD,否則,將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)往至機(jī)械硬盤中,然后結(jié)束流程; S48,比較該目標(biāo)數(shù)據(jù)塊的請求大小和操作系統(tǒng)頁面的大小,如果前者小,則等待所述數(shù)據(jù)塊遷移模塊的遷移過程完成,然后執(zhí)行S47,否則,執(zhí)行S49-S51 ; S49,判斷該目標(biāo)數(shù)據(jù)塊的訪問請求是否為讀請求,如果判斷結(jié)果為是,則執(zhí)行S50 ;如果判斷結(jié)果為否,則執(zhí)行S51 ; S50,查找該目標(biāo)數(shù)據(jù)塊對應(yīng)的元素是否位于所述移出隊列中,如果是,則將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)往SSD,否則,將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)往所述機(jī)械硬盤,并結(jié)束流程; S51,判斷所述目標(biāo)數(shù)據(jù)塊是否位于所述移出隊列中,如果判斷結(jié)果為是,則從所述SSD映射表中刪除與該目標(biāo)數(shù)據(jù)塊對應(yīng)的元素,并將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)往機(jī)械硬盤中;如果判斷結(jié)果為否,則將所述SSD映射表中與所述目標(biāo)數(shù)據(jù)塊對應(yīng)的元素狀態(tài)標(biāo)記為“臟”狀態(tài), 并將該目標(biāo)數(shù)據(jù)塊的訪問請求發(fā)往所述SSD中,結(jié)束流程。
      全文摘要
      本發(fā)明提供一種混合存儲系統(tǒng),包括至少一個固態(tài)硬盤SSD、至少一個機(jī)械硬盤以及控制模塊;所述控制模塊用于將所述機(jī)械硬盤中的熱點數(shù)據(jù)塊遷移到所述SSD,以及,將所述SSD中的非熱點數(shù)據(jù)塊遷移到所述機(jī)械硬盤,其中,所述熱點數(shù)據(jù)塊為被訪問頻率高于其他數(shù)據(jù)塊的數(shù)據(jù)塊,所述非熱點數(shù)據(jù)塊為被訪問頻率低于其他數(shù)據(jù)塊的數(shù)據(jù)塊。本發(fā)明提供的混合存儲系統(tǒng)及熱點數(shù)據(jù)塊的遷移方法,通過SSD緩存機(jī)械硬盤中的熱點數(shù)據(jù)塊,有效提高了SSD的利用率和混合存儲系統(tǒng)的性能,同時,降低了混合存儲系統(tǒng)的成本。
      文檔編號G06F3/06GK103186350SQ20111046054
      公開日2013年7月3日 申請日期2011年12月31日 優(yōu)先權(quán)日2011年12月31日
      發(fā)明者易樂天, 郝沖, 劉再德 申請人:北京快網(wǎng)科技有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1