麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

SSDCache填充方法及裝置制造方法

文檔序號:6621856閱讀:491來源:國知局
SSD Cache填充方法及裝置制造方法
【專利摘要】本發明提供一種SSD?Cache填充方法及裝置,應用于存儲設備上,該方法包括:將SSD?Cache劃分成若干不同大小的塊Block;根據待填充數據塊大小,選擇與所述待填充數據塊大小最接近的Block進行填充,所述待填充數據塊大小小于或者等于所述Block大小。本發明根據業務命令大小選擇需要填充的Block大小,盡量減少磁盤的回讀次數,提高SSD?Cache的填充速度。
【專利說明】SSD Cache填充方法及裝置

【技術領域】
[0001]本發明涉及存儲【技術領域】,尤其涉及一種SSD Cache填充方法及裝置。

【背景技術】
[0002]目前通用的存儲產品中,使用SSD (Solid State Disk,固態硬盤)硬盤作為系統的二級讀緩存,來提高陣列的隨機讀性能,通常將此處的SSD硬盤叫做SSD Cache (高速緩沖存儲器)。由于存儲設備自身的讀緩存通常都比較小,一般只有幾百MB到IGB之間,而SSDCache的空間已經達到了 1TB,因此,如果將數據提前讀出并填充到SSD Cache,那么,數據被訪問時,直接從SSD Cache讀取,可以明顯縮短響應時間,提高讀取性能。
[0003]現有技術方案如圖1所示,當數據進入讀緩存并且讀緩存用盡后,開始填充SSDCache,這提高了 SSD Cache的填充門檻。如圖2所示,在填充SSD Cache時,SSD Cache的Block(塊,Cache的最小分配單位)大小通常設置為同讀緩存的Block大小一致。數據從磁盤寫入讀緩存,再從讀緩存填充到SSD Cache中(圖中實線為填充方向示意)。由于上層業務讀取的數據塊大小不等,所以讀緩存的Block中經常存在空洞(即讀緩存的某些Block實際填充大小小于N),而填充SSD Cache時則要求數據大小必須為N才能填充成功。因此,在將數據從讀緩存填充到SSD Cache時,對于小于N的數據,需要從磁盤回讀(圖中虛線為回讀方向示意),將不足的部分數據補齊,然后填充到SSD Cache。由于SSD Cache的Block大小固定且相同,而業務命令大小不等,必然導致填充SSD Cache時的回讀次數增加,增加了磁盤的隨機命令數,影響業務性能和填充速度。


【發明內容】

[0004]有鑒于此,本發明提供了一種SSD Cache填充方法,應用于存儲設備上,該方法包括:
[0005]將SSD Cache劃分成若干不同大小的塊Block ;
[0006]根據待填充數據塊大小,選擇與所述待填充數據塊大小最接近的Block進行填充,所述待填充數據塊大小小于或者等于所述Block大小。
[0007]本發明還提供了一種SSD Cache填充裝置,應用于存儲設備上,該裝置包括:
[0008]Block配置單兀,用于將SSD Cache劃分成若干不同大小的塊Block ;
[0009]Block填充單元,用于根據待填充數據塊大小,選擇與所述待填充數據塊大小最接近的Block進行填充,所述待填充數據塊大小小于或者等于所述Block大小。
[0010]本發明根據業務命令大小選擇需要填充的Block大小,盡量減少磁盤的回讀次數,提高SSD Cache的填充速度。同時,根據業務命令大小的分布趨勢,動態調整SSD Cache的不同Block的分配空間,進一步降低了對磁盤的隨機命令請求,提高了 SSD Cache的填充速度,達到提高隨機讀取性能的目的。

【專利附圖】

【附圖說明】
[0011]圖1是現有技術中SSD Cache啟動示意圖。
[0012]圖2是現有技術中SSD Cache填充示意圖。
[0013]圖3是本發明一種實施方式中SSD Cache填充裝置的邏輯結構及其基礎硬件環境的示意圖。
[0014]圖4是本發明一種實施方式中SSD Cache填充方法的流程圖。
[0015]圖5是本發明一種實施方式中SSD Cache啟動不意圖。
[0016]圖6是本發明一種實施方式中SSD Cache首次填充不意圖。
[0017]圖7是本發明一種實施方式中SSD Cache 二次填充示意圖。
[0018]圖8是本發明一種實施方式中SSD Cache動態分配空間不意圖。

【具體實施方式】
[0019]以下結合附圖對本發明進行詳細說明。
[0020]本發明提供一種虛擬化環境下SSD Cache填充裝置,以下以軟件在計算機中實現為例進行說明,但是本發明并不排除諸如硬件或者邏輯器件等其他實現方式。如圖3所示,該裝置運行的計算機硬件環境包括CPU、內存、非易失性存儲器以及其他硬件。該裝置作為計算機上一個邏輯層面的虛擬裝置,其通過計算機上的CPU來運行。該裝置包括Block配置單元和Block填充單元。請參考圖4,該裝置的使用和運行過程包括以下步驟:
[0021]步驟101,Block配置單元將SSD Cache劃分成若干不同大小的塊Block ;
[0022]步驟102,Block填充單元根據待填充數據塊大小,選擇與所述待填充數據塊大小最接近的Block進行填充,所述待填充數據塊大小小于或者等于所述Block大小。
[0023]本發明通過將SSD Cache劃分為多個不同大小的Block,再根據上層業務命令選擇與其大小最接近的Block進行填充,以減少對磁盤的隨機命令請求,提高了 SSD Cache的填充速度,達到提高隨機讀取性能的目的。具體實施過程如下。
[0024]如圖5所示,在上層業務發送讀請求時,若需從磁盤讀取數據,則將該數據寫入讀緩存的同時,啟動SSD Cache的填充進程,將數據填充到SSD Cache中。由于讀緩存的容量有限,讀緩存中始終保存的是上層業務需要用到的最新數據,而數據在寫入讀緩存的同時,都會寫入到SSD Cache中,這里可理解為對讀緩存中數據的備份,由于SSD Cache的容量相對比較大,因此,保存了最近上層業務用到的數據(保存的數量取決于SSD Cache的容量),其中,包括當前讀緩存中的數據。當上層業務需要讀取最近使用過的數據,而該數據不在讀緩存中時,向SSD Cache中查找,若SSD Cache有該數據,則從SSD Cache中直接讀取。從上述過程可知,寫入讀緩存的數據必將寫入SSD Cache中,而且SSD Cache寫入速度比讀緩存要慢,因此,本發明將對SSD Cache的填充過程提前,只要開始寫入讀緩存就啟動SSD Cache填充進程,避免了現有技術中必須在讀緩存用盡后才能啟動SSD Cache,并且需要從讀緩存中將數據填充到SSD Cache中的問題,節約了時間,在一定程度上提高了填充速度。
[0025]由于SSD Cache數據填充必須滿足待填充數據塊大小與Block大小一致的條件,因此,本發明通過將SSD 0&(*6劃分成不同大小的趴001^(例如,41(、81(、161(、321(和641(),增加待填充數據塊與Block匹配的機率,進而減少從磁盤回讀數據的次數,提高填充速度。
[0026]在對SSD Cache進行數據填充時,根據待填充數據塊大小選擇與該數據塊大小最接近的Block進行填充。結合圖6介紹SSD Cache數據填充過程。本實施例中,SSD Cache劃分的Block大小分別為4K、8K、16K、32K和64Κ。對于大于64K(SSD Cache中劃分的最大Block)的數據塊,將該數據塊按照64K進行分割,選擇多個64K Block進行填充,當最后一個Block填充不滿時,從磁盤回讀;對于小于64K的數據塊,則依次判斷與其數據塊大小最接近的Block進行填充,例如:數據塊大小小于等于4K,則將該數據塊填充到4K大小的Block中;數據塊大小大于4K小于等于8K,則將該數據塊填充到8K大小的Block中;以此類推,找到與每一個數據塊大小對應的最匹配的Block進行填充。在填充過程中,若數據塊大小等于Block大小,則無需從磁盤回讀數據;若數據塊大小小于Block大小,則Block中剩余空間需從磁盤中回讀數據進行填充。例如:數據塊大小為12K,則將該數據塊填充到16K大小的Block中,剩余4K空間從磁盤回讀數據進行填充。
[0027]在具體實現過程中,可通過設置回讀標識位記錄對應Block是否需要回讀,每一個二進制位bit代表一個Block。bit等于O,表示對應Block未填充或已填充不回讀;bit等于1,表示對應Block已填充待回讀。假設使用一個ITB的SSD Cache,按照極限情況計算,假設8K大小的Block占據了整個SSD Cache空間,并且全部需要回讀,則回讀標識位占用內存大小為:((1*1024*1024*1024)/8)/(8*1024*1024) = 16MB,所以,在 SSD Cache 初始化時,需預先劃定16MB的空間給回讀標識位,這些標志位并不會明顯占用很大內存空間。
[0028]上述過程為SSD Cache被首次填充的處理過程,同讀緩存一樣,SSD Cache也存在二次填充的情況,畢竟SSD Cache空間有限,總會被用盡,或者讀取的數據塊命中現有的Block空間,需要進行二次填充。如圖7所示,假設上層業務讀取的數據大小為20K,其中一部分數據已存在于16K的Block空間中,這時需要把16K的Block空間釋放出來,將20K數據寫入32K的Block中,并記錄該32K的Block需要回讀,從磁盤中回讀12K數據填充到32K 的 Block 中。如果 SSD Cache 中的 32K 的 Block 已用完,則使用 LRU(Least RecentlyUsed,近期最少使用算法)進行替換,將最近不用的數據塊從Block中移出,填充新的數據塊。
[0029]為了進一步提高填充速度,本發明可根據SSD Cache中不同大小Block的使用情況,動態分配存儲空間。例如,初始化時,默認按照平均分配的原則,為4K、8K、16K、32K和64Κ的Block分配相同的空間容量。假設SSD Cache的存儲空間總容量為Q,則每種Block大小的容量均為Q/5。設置一個定時器,每隔一定時間(比如Is)進行一次填充Block個數的統計。假設當前到達統計時間點,統計4K、8K、16K、32K和64Κ的Block填充個數分別為DX、EX、FX、GX、HX,現以 8KBlock 為例,計算 8K Block 的填充比率為 Zx = Ex/(Dx+Ex+Fx+Gx+Hx),即當前8K Block填充個數占所有Block填充個數的百分比。由于上層應用在不斷變化,其讀取的數據長度也會不同,導致每一個統計時刻的Block填充比率不同。本發明通過對m次的Block填充比率取平均值,作為計算當前Block存儲空間的依據。假設8K Block m次的統計結果分別為:m次統計中有nl次得到的填充比率為Z1,有n2次得到的填充比率為Z2,……,有ni次得到的填充比率為Zi,其中m= (nl+n2+…+ni),則實際填充比率4 =(Zfnl+Z#!^+....+Zwni)/m。根據該填充比率重新為8K大小的Block分配存儲空間,存儲空間容量為Qy = Q*Zy。同理,計算4K、16K、32K和64Κ的Block填充比率,從而計算出對應的存儲空間。可見,當某一種上層業務命令增多時,占用對應Block的數量也會增多,則統計的填充比率增加,從而為該類業務命令分配更多的Block空間。
[0030]在上述填充比率統計過程中,可能存在某一種Block始終未被使用或極少使用的情況,也要為其保留一定比例(例如1% )的空間備用。
[0031]具體的分配策略如圖8所示。假設某一時刻統計的各Block的填充比率為:4K為30%,8Κ為30%,16Κ為30%,32Κ為5%,64Κ為5% ; 10秒鐘后統計的填充比率為:4Κ為40%,8Κ為50%,16Κ為10%,32Κ為0%,64Κ為0%,則應增加4Κ和8Κ Block的空間,減少16K、32K和64K Block的存儲空間。在此段時間內,雖然32K和64K Block未被使用,但仍需預留一部分空間(例如,各1%),在剩余空間中為41(、81(和16K按比例分配。同時,在減少某種Block的空間之前,需檢查該Block的空間是否已被全部填充,若某種Block空間已被用完,則按照LRU方式提取需要釋放的空間,將里面的數據置為無效,然后再重新劃給需要多分配空間的Block。
[0032]本發明根據業務命令大小選擇需要填充的Block大小,盡量減少磁盤的回讀次數,提高SSD Cache的填充速度。同時,根據業務命令大小的分布趨勢,動態調整SSD Cache的不同Block的分配空間,進一步降低了對磁盤的隨機命令請求,提高了 SSD Cache的填充速度,達到提高隨機讀取性能的目的。
[0033]以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發明保護的范圍之內。
【權利要求】
1.一種SSD Cache填充方法,應用于存儲設備上,其特征在于,該方法包括: 將SSD Cache劃分成若干不同大小的塊Block ; 根據待填充數據塊大小,選擇與所述待填充數據塊大小最接近的Block進行填充,所述待填充數據塊大小小于或者等于所述Block大小。
2.如權利要求1所述的方法,其特征在于: 為所述不同大小的Block動態分配存儲空間。
3.如權利要求2所述的方法,其特征在于: 每一種類型Block的存儲空間計算方法相同,具體為:
Qy = Q*Zy
其中, Q為SSD Cache的存儲空間總容量; Zy為m次Block填充個數百分比的平均值; Qy為分配的Block存儲空間容量; 所述大小相同的Block為同一類型Block ; 所述Block填充個數百分比為預設時間段內當前類型Block的填充個數占所有類型Block填充個數的百分比。
4.如權利要求3所述的方法,其特征在于: 當某類型Block計算得到的Qy為O時,將預設大小的空間容量分配給該類型的Block。
5.如權利要求1所述的方法,其特征在于:在進行Block填充之前,還包括: 在接收到上層業務的讀請求,將磁盤中數據寫入讀緩存時,啟動SSD Cache填充。
6.一種SSD Cache填充裝置,應用于存儲設備上,其特征在于,該裝置包括: Block配置單元,用于將SSD Cache劃分成若干不同大小的塊Block ; Block填充單元,用于根據待填充數據塊大小,選擇與所述待填充數據塊大小最接近的Block進行填充,所述待填充數據塊大小小于或者等于所述Block大小。
7.如權利要求6所述的裝置,其特征在于: 所述Block配置單元進一步用于為所述不同大小的Block動態分配存儲空間。
8.如權利要求7所述的裝置,其特征在于: 每一種類型Block的存儲空間計算方法相同,具體為:
Qy = Q*Zy
其中, Q為SSD Cache的存儲空間總容量; Zy為m次Block填充個數百分比的平均值; Qy為分配的Block存儲空間容量; 所述大小相同的Block為同一類型Block ; 所述Block填充個數百分比為預設時間段內當前類型Block的填充個數占所有類型Block填充個數的百分比。
9.如權利要求8所述的裝置,其特征在于: 當某類型Block計算得到的Qy為O時,將預設大小的空間容量分配給該類型的Block。
10.如權利要求6所述的裝置,其特征在于,在所述Block填充單元之前,還包括: 填充啟動單元,用于在接收到上層業務的讀請求,將磁盤中數據寫入讀緩存時,啟動SSD Cache 填充。
【文檔編號】G06F3/06GK104133642SQ201410367728
【公開日】2014年11月5日 申請日期:2014年7月29日 優先權日:2014年7月29日
【發明者】吳會堂, 石巖, 姚婷 申請人:浙江宇視科技有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 鹤峰县| 万盛区| 习水县| 营口市| 崇义县| 雷山县| 荣昌县| 阳山县| 上蔡县| 康保县| 陈巴尔虎旗| 青神县| 湖北省| 沅江市| 左贡县| 香港 | 关岭| 盐池县| 锦屏县| 新泰市| 游戏| 河源市| 宁晋县| 龙州县| 柳林县| 武鸣县| 巩留县| 瑞安市| 武功县| 军事| 蒙城县| 化隆| 靖安县| 岗巴县| 大田县| 米林县| 克拉玛依市| 偏关县| 凤山市| 灌阳县| 象山县|