一種基于固態(tài)硬盤的讀緩存管理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機領(lǐng)域,尤其涉及一種基于固態(tài)硬盤的讀緩存管理方法及裝置。
【背景技術(shù)】
[0002]目前為了改進磁盤系統(tǒng)的輸入/輸出性能,例如減小請求響應(yīng)時間、提高吞吐率等,在大多數(shù)存儲系統(tǒng)中,在磁盤系統(tǒng)的上層采用緩存技術(shù)來滿足性能提升的需求。
[0003]傳統(tǒng)的存儲系統(tǒng)中,數(shù)據(jù)庫系統(tǒng)一般以DRAM(Dynamic Random Access Memory,動態(tài)隨機存取存儲器)作為緩存介質(zhì),DRAM具有讀寫平衡和寫入耐久性好的優(yōu)點,不需要考慮DRAM寫入量,可以頻繁的將數(shù)據(jù)寫入DRAM中。
[0004]為了降低緩存介質(zhì)的成本,越來越多的存儲系統(tǒng)中采用SSD(Solid StateDrives,固態(tài)硬盤)作為緩存介質(zhì),SSD具有容量更大、成本更低和非易失性的優(yōu)點,但是SSD具有可擦寫次數(shù)限制的問題。運用傳統(tǒng)緩存替換算法(例如LRU等)管理SSD時,由于緩存介質(zhì)缺失驅(qū)動數(shù)據(jù)更新,新來的讀請求未命中時會導(dǎo)致SSD中有數(shù)據(jù)塊被刪除,如果不斷有新來的讀請求未命中,SSD中就會有數(shù)據(jù)塊不斷的被踢出,SSD中的數(shù)據(jù)塊的停留時間會很短,然而這些被踢出的數(shù)據(jù)塊可能在一定時間之后有被重新寫入SSD,這樣頻繁的數(shù)據(jù)擦寫操作會減少SSD的使用壽命,增加成本和維護難度。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實施例所要解決的技術(shù)問題在于,提供一種基于SSD的讀緩存管理方法和裝置??蓽p少SSD的擦寫次數(shù),延長SSD的使用壽命。
[0006]為了解決上述技術(shù)問題,本發(fā)明實施例第一方面提供了一種基于SSD的讀緩存管理方法,包括:
[0007]接收讀請求,并判斷所述讀請求是否命中所述第一隊列和所述第二隊列;
[0008]若二者均未命中,根據(jù)緩存替換算法選擇并刪除所述第一隊列中的淘汰數(shù)據(jù)塊;其中,所述淘汰數(shù)據(jù)塊為已存儲狀態(tài);
[0009]若所述淘汰數(shù)據(jù)塊為已存儲狀態(tài),將所述淘汰數(shù)據(jù)塊插入所述第二隊列中;
[0010]從下級存儲介質(zhì)中確定所述讀請求對應(yīng)的目標(biāo)數(shù)據(jù)塊,將所述目標(biāo)數(shù)據(jù)塊插入所述第一隊列中;其中,所述目標(biāo)數(shù)據(jù)塊為未存儲狀態(tài)。
[0011]結(jié)合第一方面,在第一種可能的實現(xiàn)方式中,還包括:
[0012]若所述淘汰數(shù)據(jù)塊為未存儲狀態(tài),將所述淘汰數(shù)據(jù)塊從第一隊列中刪除,并從所述SSD中刪除。
[0013]結(jié)合第一方面,在第二種可能的實現(xiàn)方式中,還包括:
[0014]若所述讀請求未命中所述第一隊列但命中所述第二隊列,刪除所述第二隊列中所述讀請求對應(yīng)的命中數(shù)據(jù)塊;
[0015]將所述命中數(shù)據(jù)塊插入所述第一隊列中。
[0016]結(jié)合第一方面的第一種或第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,還包括:
[0017]計算所述第二隊列中的待處理數(shù)據(jù)塊的空閑時間;其中,所述待處理數(shù)據(jù)塊為所述第二隊列中的數(shù)據(jù)塊的任意一個;
[0018]當(dāng)所述待處理數(shù)據(jù)塊持續(xù)未訪問的時間大于所述待處理數(shù)據(jù)塊的空閑時間時,將所述待處理數(shù)據(jù)塊從所述第二隊列中刪除;
[0019]獲取所述待處理數(shù)據(jù)塊的身份標(biāo)識,并將所述待處理數(shù)據(jù)塊的身份標(biāo)識插入到第三隊列中。
[0020]結(jié)合第一方面的第二種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,述計算所述所述第二隊列中的待處理數(shù)據(jù)塊的空閑時間包括:
[0021]統(tǒng)計所述待處理數(shù)據(jù)塊在所述第一隊列中的命中次數(shù)M和所述第二隊列中的命中次數(shù)N ;
[0022]根據(jù)所述命中次數(shù)M和所述命中次數(shù)N計算所述待處理數(shù)據(jù)塊的空閑時間。
[0023]結(jié)合第一方面的第二種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,所述將所述淘汰數(shù)據(jù)塊插入所述第二隊列中包括:
[0024]獲取所述淘汰數(shù)據(jù)塊的身份信息;
[0025]若所述淘汰數(shù)據(jù)塊的身份信息不在所述第三隊列中,將所述淘汰數(shù)據(jù)塊插入所述第二隊列中;
[0026]若所述淘汰數(shù)據(jù)塊的身份信息在所述第三隊列中,判斷所述淘汰數(shù)據(jù)塊的淘汰時長是否大于預(yù)設(shè)時間閾值,若為是,將所述淘汰數(shù)據(jù)塊插入所述第二隊列中。
[0027]結(jié)合第一方面至第五種可能的實現(xiàn)方式中的任意一種,在第六種可能的實現(xiàn)方式中,所述當(dāng)所述待處理數(shù)據(jù)塊持續(xù)未訪問的時間大于所述待處理數(shù)據(jù)塊的空閑時間時,將所述待處理數(shù)據(jù)塊從所述第二隊列中刪除之后,還包括:
[0028]搜索所述第一隊列中首個未存儲狀態(tài)的數(shù)據(jù)塊;
[0029]將所述首個未存儲狀態(tài)的數(shù)據(jù)塊寫入所述SSD中,并在寫入操作完成后將該數(shù)據(jù)塊設(shè)置為已存儲狀態(tài);或者
[0030]確定所述第一隊列中前K位未存儲狀態(tài)的數(shù)據(jù)塊;其中K為大于O的整數(shù);
[0031]將所述K個數(shù)據(jù)塊中訪問量最大的數(shù)據(jù)塊寫入所述SSD,并在寫入操作完成后將所述訪問量最大的數(shù)據(jù)塊設(shè)置為已存儲狀態(tài)。
[0032]相應(yīng)地,本發(fā)明實施例第二方面還提供了一種基于SSD的讀緩存管理裝置,包括:
[0033]SSD中包括第一隊列和第二隊列,所述裝置包括:
[0034]第一刪除模塊,用于若二者均未命中,若二者均未命中,根據(jù)緩存替換算法選擇并刪除所述第一隊列中的淘汰數(shù)據(jù)塊;
[0035]第一插入模塊,用于,若所述淘汰數(shù)據(jù)塊為已存儲狀態(tài),將所述淘汰數(shù)據(jù)塊插入所述第二隊列中;
[0036]確定模塊,用于從下級存儲介質(zhì)中確定所述讀請求對應(yīng)的目標(biāo)數(shù)據(jù)塊,將所述目標(biāo)數(shù)據(jù)塊插入所述第一隊列中;其中,所述目標(biāo)數(shù)據(jù)塊為未存儲狀態(tài)。
[0037]結(jié)合第二方面,在第一種可能的實現(xiàn)方式中,還包括:
[0038]第二刪除模塊,用于若所述淘汰數(shù)據(jù)塊為未存儲狀態(tài),將所述淘汰數(shù)據(jù)塊從第一隊列中刪除,并從所述SSD中刪除。
[0039]結(jié)合第二方面的第一種可能的,在第二種可能的實現(xiàn)方式中,還包括:
[0040]第三刪除模塊,用于若所述讀請求未命中所述第一隊列但命中所述第二隊列,刪除所述第二隊列中所述讀請求對應(yīng)的命中數(shù)據(jù)塊;
[0041]第二插入模塊,用于將所述命中數(shù)據(jù)塊插入所述第一隊列中。
[0042]結(jié)合第二方面的第一種或第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,還包括:
[0043]計算模塊,用于計算所述第二隊列中的待處理數(shù)據(jù)塊的空閑時間;其中,所述待處理數(shù)據(jù)塊為所述第二隊列中的數(shù)據(jù)塊的任意一個;
[0044]第三刪除模塊,用于當(dāng)所述待處理數(shù)據(jù)塊持續(xù)未訪問的時間大于所述待處理數(shù)據(jù)塊的空閑時間時,將所述待處理數(shù)據(jù)塊從所述第二隊列中刪除;
[0045]第三插入模塊,用于獲取所述待處理數(shù)據(jù)塊的身份標(biāo)識,并將所述待處理數(shù)據(jù)塊的身份標(biāo)識插入到第三隊列中。
[0046]結(jié)合第二方面的第三種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述計算豐吳塊包括:
[0047]統(tǒng)計單元,用于統(tǒng)計所述待處理數(shù)據(jù)塊在所述第一隊列中的命中次數(shù)M和所述第二隊列中的命中次數(shù)N ;
[0048]計算單元,用于根據(jù)所述命中次數(shù)M和所述命中次數(shù)N計算所述待處理數(shù)據(jù)塊的空閑時間。
[0049]結(jié)合第二方面的第二種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述第一插入模塊用于獲取所述淘汰數(shù)據(jù)塊的身份信息;
[0050]若所述淘汰數(shù)據(jù)塊的身份信息不在所述第三隊列中,將所述淘汰數(shù)據(jù)塊插入所述第二隊列中;
[0051]若所述淘汰數(shù)據(jù)塊的身份信息在所述第三隊列中,判斷所述淘汰數(shù)據(jù)塊的淘汰時長是否大于預(yù)設(shè)時間閾值,若為是,將所述淘汰數(shù)據(jù)塊插入所述第二隊列中。
[0052]結(jié)合第二方面至第五種可能的實現(xiàn)方式中的任意一種,在第五種可能的實現(xiàn)方式中,還包括:
[0053]寫入模塊,用于搜索所述第一隊列中首個未存儲狀態(tài)的數(shù)據(jù)塊;
[0054]將所述首個未存儲狀態(tài)的數(shù)據(jù)塊寫入所述SSD中,并在寫入操作完成后將該數(shù)據(jù)塊設(shè)置為已存儲狀態(tài);或者
[0055]確定所述第一隊列中前K位的未存儲狀態(tài)的數(shù)據(jù)塊;其中K為大于O的整數(shù);
[0056]將所述K個數(shù)據(jù)塊中訪問量最大的數(shù)據(jù)塊寫入所述SSD,并在寫入完成后將所述訪問量最大的數(shù)據(jù)塊設(shè)置為已存儲狀態(tài)。
[0057]實施本發(fā)明實施例,具有如下有益效果:
[0058]針對SSD擦寫次數(shù)存在限制的缺點,與現(xiàn)有的緩存替換算法結(jié)合,將第一隊列中淘汰出來的數(shù)據(jù)塊插入到設(shè)置的第二隊列中,并沒有直接從SSD中直接刪除,增加淘汰數(shù)據(jù)塊在SSD中停留時間,從而提高SSD的讀命中率,同時當(dāng)SDD未命中時,將元數(shù)據(jù)寫入第一隊列中,又可以減少SDD寫入量,延長了 SSD的使用壽命。
【附圖說明】
[0059]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0060]圖1是本發(fā)明實施例提供的一種基于SSD的讀緩存管理方法的流程示意圖;
[0061]圖2是本發(fā)明實施例提供的一種基于SSD的讀緩存管理方法的另一流程示意圖;
[0062]圖3是本發(fā)明實施例提供的一種基于SSD的讀緩存管理方法的實例示意圖;
[0063]圖4是本發(fā)明實施例提供的一種基于SSD的讀緩存管理裝置的結(jié)構(gòu)示意圖;
[0064]圖5是本發(fā)明實施例提供的一種基于SSD的讀緩存管理裝置的另一結(jié)構(gòu)示意圖。
【具體實施方式】
[0065]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒