国产精品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ài)盤的磁盤緩存系統(tǒng)的制作方法

      文檔序號(hào):6543151閱讀:209來(lái)源:國(guó)知局
      一種基于固態(tài)盤的磁盤緩存系統(tǒng)的制作方法
      【專利摘要】本發(fā)明公開(kāi)了一種基于固態(tài)盤的磁盤緩存系統(tǒng),屬于計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)系統(tǒng)中緩存系統(tǒng)【技術(shù)領(lǐng)域】,本發(fā)明所述磁盤緩存系統(tǒng)包括數(shù)據(jù)塊元數(shù)據(jù)維護(hù)模塊、固態(tài)盤數(shù)據(jù)塊替換模塊和臟數(shù)據(jù)塊寫回磁盤模塊。本發(fā)明利用固態(tài)盤緩存提高了在大規(guī)模存儲(chǔ)環(huán)境下磁盤數(shù)據(jù)的讀寫性能,具有較高的數(shù)據(jù)塊讀寫命中率和緩存空間利用率,同時(shí)保證了在宕機(jī)重啟情況下緩存的數(shù)據(jù)塊是非易失的,減少了固態(tài)盤緩存設(shè)備由冷到熱的收斂時(shí)間,能夠解決現(xiàn)有計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)系統(tǒng)中緩存空間大小受限、緩存數(shù)據(jù)易失、緩存空間利用不充分的問(wèn)題。
      【專利說(shuō)明】一種基于固態(tài)盤的磁盤緩存系統(tǒng)
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明屬于計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)領(lǐng)域,更具體地,涉及一種基于固態(tài)盤的磁盤緩存系統(tǒng),用于提升磁盤的讀寫性能。
      【背景技術(shù)】
      [0002]固態(tài)盤(Solid State Disk,簡(jiǎn)稱SSD)雖然在性能、能耗、可靠性等方面優(yōu)于傳統(tǒng)的機(jī)械式磁盤(HDD),然而它除了具有成本高的缺點(diǎn)外,其有限容量和壽命等缺點(diǎn)是影響它被廣泛采用的主要障礙。
      [0003]機(jī)械式磁盤(HDD)雖然其機(jī)械尋道操作導(dǎo)致其性能,特別是隨機(jī)訪問(wèn)性能受到嚴(yán)重限制,但其低成本、高容量、無(wú)限長(zhǎng)壽命等優(yōu)點(diǎn)仍然將保證其在現(xiàn)代存儲(chǔ)系統(tǒng)中的重要作用。
      [0004]基于這兩類存儲(chǔ)設(shè)備互補(bǔ)的優(yōu)缺點(diǎn),構(gòu)建由固態(tài)盤和機(jī)械式磁盤組成的混合式存儲(chǔ)系統(tǒng)將是近期乃至未來(lái)一段時(shí)期內(nèi)利用固態(tài)盤的主要形式。
      [0005]現(xiàn)有的基于固態(tài)盤的存儲(chǔ)系統(tǒng),要么是使用固態(tài)盤構(gòu)建一個(gè)分層的存儲(chǔ)系統(tǒng),將熱點(diǎn)數(shù)據(jù)存儲(chǔ)在固態(tài)盤上,以加快上層應(yīng)用訪問(wèn)數(shù)據(jù)的速度,但是使用這種方法熱點(diǎn)數(shù)據(jù)的大小受限于固態(tài)盤存儲(chǔ)空間的大小,所以對(duì)于存儲(chǔ)系統(tǒng)讀寫性能的提升是有限的。要么是設(shè)計(jì)一個(gè)基于固態(tài)盤緩存的混合存儲(chǔ)系統(tǒng),而傳統(tǒng)的使用固態(tài)盤作為緩存所構(gòu)建的存儲(chǔ)系統(tǒng),在單機(jī)情況下?lián)碛斜容^好的性能提升,但是應(yīng)用在分布式系統(tǒng)中就會(huì)造成固態(tài)盤存儲(chǔ)空間的浪費(fèi)。
      [0006]固態(tài)盤在現(xiàn)有的計(jì)算機(jī)存儲(chǔ)系統(tǒng)中是一種比較稀缺的資源,大數(shù)據(jù)時(shí)代的到來(lái)使得分布式存儲(chǔ)架構(gòu)將得到更為廣泛的應(yīng)用,如何在不影響存儲(chǔ)系統(tǒng)讀寫性能的情況下充分提升固態(tài)盤的利用率是一個(gè)值得研究的問(wèn)題。

      【發(fā)明內(nèi)容】

      [0007]本發(fā)明提供了一種基于固態(tài)盤的磁盤緩存系統(tǒng),其目的在于將分布式系統(tǒng)中多臺(tái)物理機(jī)磁盤上的熱點(diǎn)數(shù)據(jù)進(jìn)行分塊,并對(duì)數(shù)據(jù)塊進(jìn)行哈希以獲得數(shù)據(jù)塊的指紋,該指紋能唯一地標(biāo)識(shí)一個(gè)數(shù)據(jù)塊,然后將這些數(shù)據(jù)塊通過(guò)LRU緩存替換算法緩存到固態(tài)盤中,最終達(dá)到提升磁盤設(shè)備的讀寫性能并提高固態(tài)盤緩存的利用率的技術(shù)效果。
      [0008]本發(fā)明所提供的一種基于固態(tài)盤的磁盤緩存系統(tǒng),包括數(shù)據(jù)塊元數(shù)據(jù)維護(hù)模塊、固態(tài)盤數(shù)據(jù)塊替換模塊和臟數(shù)據(jù)塊寫回磁盤模塊,其中:
      [0009]所述數(shù)據(jù)塊元數(shù)據(jù)維護(hù)模塊,用于在使用固態(tài)盤作為磁盤緩存之前,在固態(tài)盤存儲(chǔ)空間的頭部開(kāi)辟出一塊固定大小的元數(shù)據(jù)存儲(chǔ)區(qū)域,以保存各數(shù)據(jù)塊的元數(shù)據(jù);當(dāng)把一個(gè)新數(shù)據(jù)塊寫入到緩存中時(shí),用于生成該數(shù)據(jù)塊所對(duì)應(yīng)的元數(shù)據(jù),并將該元數(shù)據(jù)寫入到固態(tài)盤上的元數(shù)據(jù)存儲(chǔ)區(qū)域中,同時(shí)用于在有需要時(shí)從元數(shù)據(jù)存儲(chǔ)區(qū)域中讀取任意數(shù)據(jù)塊的元數(shù)據(jù);
      [0010]所述固態(tài)盤數(shù)據(jù)塊替換模塊,用于判斷緩存中是否有空閑數(shù)據(jù)塊存儲(chǔ)區(qū)域可以用來(lái)緩存新的數(shù)據(jù)塊,如有則直接將新的數(shù)據(jù)塊寫入緩存中,如沒(méi)有則需要根據(jù)替換算法將緩存中現(xiàn)有的一個(gè)數(shù)據(jù)塊替換出去;如果被替換出緩存的數(shù)據(jù)塊是一個(gè)臟塊,在替換之前需要將臟塊寫回磁盤,避免出現(xiàn)數(shù)據(jù)的不一致性,最后將新的數(shù)據(jù)塊寫入緩存中的對(duì)應(yīng)位置;
      [0011]所述臟數(shù)據(jù)塊寫回磁盤模塊,用于定期將固態(tài)盤中的臟塊寫回磁盤,其中寫回磁盤的時(shí)機(jī)基于兩點(diǎn):緩存內(nèi)臟塊數(shù)量是否超過(guò)臟塊數(shù)閾值,以及各臟塊的寫回延時(shí)時(shí)間是否超過(guò)設(shè)定時(shí)間。如果緩存內(nèi)臟塊數(shù)量超過(guò)臟塊數(shù)閾值,或者某些臟塊的寫回延時(shí)時(shí)間超過(guò)設(shè)定時(shí)間,則將緩存內(nèi)的臟塊集中寫回磁盤,并更新各臟塊的元數(shù)據(jù)信息。
      [0012]進(jìn)一步地,所述數(shù)據(jù)塊元數(shù)據(jù)維護(hù)模塊包括初始化數(shù)據(jù)塊元數(shù)據(jù)存儲(chǔ)區(qū)域子模塊、生成數(shù)據(jù)塊元數(shù)據(jù)子模塊、寫數(shù)據(jù)塊元數(shù)據(jù)子模塊、讀數(shù)據(jù)塊元數(shù)據(jù)子模塊和更新數(shù)據(jù)塊元數(shù)據(jù)子模塊,其中:
      [0013]所述初始化數(shù)據(jù)塊元數(shù)據(jù)存儲(chǔ)區(qū)域子模塊:用于將固態(tài)盤緩存存儲(chǔ)空間分割成定長(zhǎng)大小的數(shù)據(jù)塊,根據(jù)緩存空間大小計(jì)算所需元數(shù)據(jù)存儲(chǔ)空間的大小,再求出所需的數(shù)據(jù)塊的數(shù)量,在緩存空間的頭部開(kāi)辟出相應(yīng)數(shù)量數(shù)據(jù)塊的元數(shù)據(jù)存儲(chǔ)區(qū)域;
      [0014]所述生成數(shù)據(jù)塊元數(shù)據(jù)子模塊:用于在一個(gè)不在固態(tài)盤緩存中的數(shù)據(jù)塊需要被寫入固態(tài)盤時(shí),生成新的數(shù)據(jù)塊元數(shù)據(jù),新的數(shù)據(jù)塊元數(shù)據(jù)包括數(shù)據(jù)塊的指紋、數(shù)據(jù)塊的大小、數(shù)據(jù)塊的狀態(tài)、數(shù)據(jù)塊的生成時(shí)間、數(shù)據(jù)塊的元數(shù)據(jù)在數(shù)據(jù)塊元數(shù)據(jù)存儲(chǔ)區(qū)域的索引號(hào)和數(shù)據(jù)塊的存儲(chǔ)地址,并轉(zhuǎn)寫數(shù)據(jù)塊元數(shù)據(jù)子模塊;
      [0015]所述寫數(shù)據(jù)塊元數(shù)據(jù)子模塊:用于將新生成的數(shù)據(jù)塊元數(shù)據(jù)寫入到數(shù)據(jù)塊元數(shù)據(jù)存儲(chǔ)區(qū)域的空閑數(shù)據(jù)塊中,同時(shí)將該數(shù)據(jù)塊元數(shù)據(jù)添加到內(nèi)存中的LRU棧的棧頂;
      [0016]所述讀數(shù)據(jù)塊元數(shù)據(jù)子模塊:用于根據(jù)數(shù)據(jù)塊的元數(shù)據(jù)在數(shù)據(jù)塊元數(shù)據(jù)存儲(chǔ)區(qū)域的索引號(hào)讀取數(shù)據(jù)塊的元數(shù)據(jù),并轉(zhuǎn)更新數(shù)據(jù)塊元數(shù)據(jù)子模塊;
      [0017]所述更新數(shù)據(jù)塊元數(shù)據(jù)子模塊:用于修改讀取出的數(shù)據(jù)塊元數(shù)據(jù)中的相應(yīng)項(xiàng),并將修改的結(jié)果寫回固態(tài)盤的數(shù)據(jù)塊元數(shù)據(jù)存儲(chǔ)區(qū)域和內(nèi)存中的LRU棧中對(duì)應(yīng)的存儲(chǔ)位置。
      [0018]進(jìn)一步地,所述固態(tài)盤數(shù)據(jù)塊替換模塊包括固態(tài)盤緩存空閑數(shù)據(jù)塊判斷子模塊、棧底數(shù)據(jù)塊元數(shù)據(jù)讀取子模塊、臟數(shù)據(jù)塊判斷子模塊、臟數(shù)據(jù)塊寫回磁盤子模塊,以及新數(shù)據(jù)塊和元數(shù)據(jù)寫入緩存子模塊,其中:
      [0019]所述固態(tài)盤緩存空閑數(shù)據(jù)塊判斷子模塊:用于根據(jù)內(nèi)存中的空閑數(shù)據(jù)塊位圖,判斷固態(tài)盤緩存中是否有空閑數(shù)據(jù)塊,是則表明不需要將緩存中的某個(gè)數(shù)據(jù)塊替換出去,轉(zhuǎn)新數(shù)據(jù)塊和元數(shù)據(jù)寫入緩存子模塊;否則轉(zhuǎn)棧底數(shù)據(jù)塊元數(shù)據(jù)讀取子模塊;
      [0020]所述棧底數(shù)據(jù)塊元數(shù)據(jù)讀取子模塊:用于讀取內(nèi)存中LRU棧棧底的數(shù)據(jù)塊元數(shù)據(jù),其中該數(shù)據(jù)塊元數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)塊是最近最久沒(méi)有訪問(wèn)的,根據(jù)LRU算法原理,在緩存空間不足時(shí),理應(yīng)最先被替換出去;
      [0021]所述臟數(shù)據(jù)塊判斷子模塊:用于判斷被替換數(shù)據(jù)塊是否為臟數(shù)據(jù)塊,是則轉(zhuǎn)臟數(shù)據(jù)塊寫回磁盤子模塊;否則說(shuō)明該被替換的數(shù)據(jù)塊不需要寫回磁盤,轉(zhuǎn)新數(shù)據(jù)塊和元數(shù)據(jù)寫入緩存子模塊;
      [0022]所述臟數(shù)據(jù)塊寫回磁盤子模塊:用于將臟數(shù)據(jù)塊判斷子模塊判斷為臟的數(shù)據(jù)塊寫回磁盤,并清除LRU棧中對(duì)應(yīng)的數(shù)據(jù)塊的元數(shù)據(jù)信息;
      [0023]所述新數(shù)據(jù)塊和元數(shù)據(jù)寫入緩存子模塊:用于為新的數(shù)據(jù)塊生成元數(shù)據(jù)信息,并將其添加到LRU棧的棧頂,然后將新數(shù)據(jù)塊寫入到被替換數(shù)據(jù)塊在緩存中的對(duì)應(yīng)存儲(chǔ)位置。
      [0024]進(jìn)一步地,所述臟數(shù)據(jù)塊寫回磁盤模塊包括緩存內(nèi)臟數(shù)據(jù)塊數(shù)量計(jì)算子模塊、臟數(shù)據(jù)塊數(shù)閾值判斷子模塊、各臟數(shù)據(jù)塊寫回延時(shí)判斷子模塊、臟數(shù)據(jù)塊集中寫回子模塊,以及臟數(shù)據(jù)塊元數(shù)據(jù)更新子模塊,其中:
      [0025]所述臟數(shù)據(jù)塊寫回磁盤模塊:用于根據(jù)位于內(nèi)存的LRU棧中各數(shù)據(jù)塊的元數(shù)據(jù)信息,統(tǒng)計(jì)緩存中總的臟塊數(shù)量;其中所述元數(shù)據(jù)信息包括數(shù)據(jù)塊的狀態(tài)信息;
      [0026]所述臟數(shù)據(jù)塊數(shù)閾值判斷子模塊:用于判斷緩存中臟數(shù)據(jù)塊的數(shù)量是否超過(guò)臟數(shù)據(jù)塊閾值,是則說(shuō)明緩存中有過(guò)多的臟塊,可能會(huì)造成數(shù)據(jù)的不一致,則需要集中把緩存中的臟塊寫回到磁盤,轉(zhuǎn)臟數(shù)據(jù)塊集中寫回子模塊;
      [0027]所述各臟數(shù)據(jù)塊寫回延時(shí)判斷子模塊:用于根據(jù)各數(shù)據(jù)塊中的狀態(tài)信息和數(shù)據(jù)塊生成時(shí)間信息,求得各臟數(shù)據(jù)塊上一次訪問(wèn)距離現(xiàn)在的時(shí)延,并判斷這個(gè)時(shí)延是否超過(guò)了臟數(shù)據(jù)塊寫回延時(shí),是則轉(zhuǎn)臟數(shù)據(jù)塊集中寫回子模塊;
      [0028]所述臟數(shù)據(jù)塊集中寫回子模塊:用于把需要寫回磁盤的臟數(shù)據(jù)塊分類集中寫回到磁盤,并轉(zhuǎn)臟數(shù)據(jù)塊元數(shù)據(jù)更新子模塊;
      [0029]所述臟數(shù)據(jù)塊元數(shù)據(jù)更新子模塊:用于在臟數(shù)據(jù)塊被寫回磁盤后,需要更新自己的狀態(tài)為非臟塊,以保證元數(shù)據(jù)的一致性,將內(nèi)存中的LRU棧的元數(shù)據(jù)和固態(tài)盤上元數(shù)據(jù)存儲(chǔ)區(qū)域中的元數(shù)據(jù)都更新為非臟塊狀態(tài)。
      [0030]總體而言,通過(guò)本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,能夠取得下列有益效果:
      [0031]1、提升了磁盤設(shè)備的讀寫性能:機(jī)械式磁盤(HDD)由于其機(jī)械尋道操作導(dǎo)致其性能,特別是隨機(jī)訪問(wèn)性能,受到嚴(yán)重限制,而固態(tài)硬盤沒(méi)有磁頭,采用快速隨機(jī)讀取,讀延遲小,在寫入數(shù)據(jù)的情況下也不需要磁頭定位的過(guò)程,所以如果將磁盤上的部分熱點(diǎn)數(shù)據(jù)緩存在固態(tài)盤上,那么無(wú)論是在寫命中還是讀命中的情況下都能大大提升磁盤的讀取和寫入的性能。
      [0032]2、大幅提高了緩存空間的容量,節(jié)省了內(nèi)存資源:通常的磁盤緩存系統(tǒng)是使用內(nèi)存中開(kāi)辟出的一小部分空間作為緩存空間,而計(jì)算機(jī)中內(nèi)存空間是極為寶貴的,是保證操作系統(tǒng)和用戶程序執(zhí)行的基本保證,而使用固態(tài)盤作為磁盤的緩存空間在保證提升磁盤讀寫性能的基礎(chǔ)上,節(jié)省了可用的內(nèi)存空間,而固態(tài)盤存儲(chǔ)空間通常相對(duì)于內(nèi)存存儲(chǔ)空間來(lái)說(shuō),要大的多,是內(nèi)存空間的幾十到幾百倍,可以緩存更多的熱點(diǎn)數(shù)據(jù),從而提高數(shù)據(jù)塊的命中率,進(jìn)而提升磁盤設(shè)備的讀寫性能。
      [0033]3、提升固態(tài)盤緩存空間的利用率:傳統(tǒng)基于固態(tài)盤的磁盤緩存系統(tǒng)是給每臺(tái)物理機(jī)單獨(dú)配置固態(tài)盤緩存,而在分布式環(huán)境下,熱點(diǎn)數(shù)據(jù)在物理機(jī)上的分布是不均勻的,必然會(huì)造成某些物理機(jī)上固態(tài)盤緩存空間的極大浪費(fèi),本發(fā)明考慮將各物理機(jī)上的固態(tài)盤集中提取出來(lái)作為所有物理機(jī)的磁盤緩存空間,熱點(diǎn)數(shù)據(jù)少的物理機(jī)必然占用更少的固態(tài)盤緩存空間,熱點(diǎn)數(shù)據(jù)多的物理機(jī)必然占用更多的固態(tài)盤緩存空間,從而做到按需分配,提高固態(tài)盤緩存空間的利用率。
      【專利附圖】

      【附圖說(shuō)明】[0034]圖1是本發(fā)明一種基于固態(tài)盤的磁盤緩存系統(tǒng)的應(yīng)用環(huán)境圖;
      [0035]圖2是本發(fā)明一種基于固態(tài)盤的磁盤緩存系統(tǒng)的結(jié)構(gòu)示意圖;
      [0036]圖3是本發(fā)明一種基于固態(tài)盤的磁盤緩存系統(tǒng)的工作原理圖。
      【具體實(shí)施方式】
      [0037]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個(gè)實(shí)施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
      [0038]首先對(duì)本發(fā)明中的術(shù)語(yǔ)進(jìn)行解釋:
      [0039]磁盤緩存系統(tǒng):為了加快磁盤訪問(wèn)速度而設(shè)計(jì)的一種緩存系統(tǒng),通過(guò)把熱點(diǎn)數(shù)據(jù)緩存在訪問(wèn)速度更快,容量更小的存儲(chǔ)設(shè)備中以提升磁盤的讀寫性能,本發(fā)明使用固態(tài)盤作為緩存設(shè)備。
      [0040]空閑數(shù)據(jù)塊:將固態(tài)盤存儲(chǔ)空間劃分為定長(zhǎng)大小的數(shù)據(jù)塊,如果某一數(shù)據(jù)塊沒(méi)有緩存磁盤上的數(shù)據(jù),那么這個(gè)數(shù)據(jù)塊稱為空閑數(shù)據(jù)塊。
      [0041]臟數(shù)據(jù)塊:將數(shù)據(jù)塊緩存到固態(tài)盤后,如果該數(shù)據(jù)塊發(fā)生寫命中,那么這個(gè)數(shù)據(jù)塊就成為了一個(gè)臟數(shù)據(jù)塊,需要在合適的時(shí)候?qū)懟卮疟P。
      [0042]LRU:最近最少使用(Least Recently Used)算法,一種基于數(shù)據(jù)局部性的緩存數(shù)據(jù)塊的替換算法,根據(jù)每個(gè)數(shù)據(jù)塊的新近訪問(wèn)時(shí)間,淘汰掉最近最少使用的數(shù)據(jù)塊。
      [0043]LRU棧:存在于內(nèi)存中的用來(lái)描述LRU算法的一種數(shù)據(jù)結(jié)構(gòu),記錄當(dāng)前緩存中所有數(shù)據(jù)塊的訪問(wèn)時(shí)間,最近最少使用的數(shù)據(jù)塊存在于棧底。
      [0044]空閑數(shù)據(jù)塊位圖:在計(jì)算機(jī)內(nèi)存中根據(jù)每個(gè)數(shù)據(jù)塊的編號(hào)為每個(gè)數(shù)據(jù)塊使用對(duì)應(yīng)位來(lái)表示它的使用狀態(tài),為O表示該數(shù)據(jù)塊沒(méi)有被使用,屬于空閑數(shù)據(jù)塊,為I表示該數(shù)據(jù)塊正在被使用,數(shù)據(jù)非空閑數(shù)據(jù)塊。
      [0045]臟數(shù)據(jù)塊數(shù)閾值:判斷當(dāng)前緩存內(nèi)的數(shù)據(jù)塊是否需要被清理的標(biāo)志值,如果當(dāng)前緩存內(nèi)的數(shù)據(jù)塊的數(shù)量超過(guò)該閾值,那么所有的臟數(shù)據(jù)塊均要被寫回磁盤。
      [0046]數(shù)據(jù)塊寫回延時(shí):判斷當(dāng)前臟數(shù)據(jù)塊是否需要被寫回磁盤的標(biāo)志值,如果某臟數(shù)據(jù)塊上次被訪問(wèn)的時(shí)間和當(dāng)前時(shí)刻的時(shí)間差大于該寫回延時(shí),那么該臟數(shù)據(jù)塊需要被寫回磁盤。
      [0047]數(shù)據(jù)塊元數(shù)據(jù):包括數(shù)據(jù)塊的指紋、數(shù)據(jù)塊的大小、數(shù)據(jù)塊的狀態(tài)、數(shù)據(jù)塊的生成時(shí)間、數(shù)據(jù)塊的元數(shù)據(jù)在數(shù)據(jù)塊元數(shù)據(jù)存儲(chǔ)區(qū)域的索引號(hào)和數(shù)據(jù)塊的存儲(chǔ)地址
      [0048]數(shù)據(jù)塊指紋:用于唯一標(biāo)識(shí)一個(gè)數(shù)據(jù)塊的數(shù)據(jù)塊標(biāo)識(shí),是由上層應(yīng)用通過(guò)某種哈希算法生成的。
      [0049]如圖1所示,為本發(fā)明的應(yīng)用環(huán)境圖。用傳統(tǒng)的硬盤作為主要的外部存儲(chǔ)設(shè)備,以高速的固態(tài)盤存儲(chǔ)空間作為大容量硬盤的緩存,根據(jù)緩存替換算法,將訪問(wèn)最為頻繁的數(shù)據(jù)遷移到固態(tài)盤中,從而達(dá)到提升整個(gè)系統(tǒng)性能的目的。
      [0050]本發(fā)明的總體思路在于,根據(jù)固態(tài)盤和機(jī)械硬盤的特性,結(jié)合二者的優(yōu)點(diǎn)和缺點(diǎn),將性能高、容量小、價(jià)格高的固態(tài)盤用作性能低、容量大、價(jià)格低的機(jī)械硬盤的緩存,將硬盤上經(jīng)常訪問(wèn)的熱點(diǎn)數(shù)據(jù)緩存在固態(tài)硬盤上,在讀命中時(shí),加快數(shù)據(jù)的讀取速度,在寫命中時(shí),采用寫回策略,加快數(shù)據(jù)的寫入速度,同時(shí)定期將臟數(shù)據(jù)塊寫回磁盤以維持?jǐn)?shù)據(jù)的一致性。對(duì)于每一個(gè)數(shù)據(jù)塊都將維護(hù)其對(duì)應(yīng)的元數(shù)據(jù),通過(guò)數(shù)據(jù)塊的元數(shù)據(jù)和替換算法決定在需要將緩存中的數(shù)據(jù)塊替換出去時(shí),應(yīng)該選擇哪個(gè)數(shù)據(jù)塊進(jìn)行替換,同時(shí)決定了被替換的數(shù)據(jù)塊是否需要寫回磁盤。
      [0051]如圖2所示,為本發(fā)明一種基于固態(tài)盤的磁盤緩存系統(tǒng),包括以下模塊:
      [0052](I)數(shù)據(jù)塊元數(shù)據(jù)維護(hù)模塊,用于在使用固態(tài)盤作為磁盤緩存之前,在固態(tài)盤存儲(chǔ)空間的頭部開(kāi)辟出一塊固定大小的元數(shù)據(jù)存儲(chǔ)區(qū)域,以保存各數(shù)據(jù)塊的元數(shù)據(jù);當(dāng)把一個(gè)新數(shù)據(jù)塊寫入到緩存中時(shí),用于生成該數(shù)據(jù)塊所對(duì)應(yīng)的元數(shù)據(jù),并將該元數(shù)據(jù)寫入到固態(tài)盤上的元數(shù)據(jù)存儲(chǔ)區(qū)域中,同時(shí)用于在有需要時(shí)從元數(shù)據(jù)存儲(chǔ)區(qū)域中讀取任意數(shù)據(jù)塊的元數(shù)據(jù)。
      [0053](2)固態(tài)盤數(shù)據(jù)塊替換模塊,用于判斷緩存中是否有空閑數(shù)據(jù)塊存儲(chǔ)區(qū)域可以用來(lái)緩存新的數(shù)據(jù)塊,如有則直接將新的數(shù)據(jù)塊寫入緩存中,如沒(méi)有則需要根據(jù)替換算法將緩存中現(xiàn)有的一個(gè)數(shù)據(jù)塊替換出去;如果被替換出緩存的數(shù)據(jù)塊是一個(gè)臟塊,在替換之前需要將臟塊寫回磁盤,避免出現(xiàn)數(shù)據(jù)的不一致性,最后將新的數(shù)據(jù)塊寫入緩存中的對(duì)應(yīng)位置。
      [0054](3)臟數(shù)據(jù)塊寫回磁盤模塊:用于定期將固態(tài)盤中的臟塊寫回磁盤,其中寫回磁盤的時(shí)機(jī)基于兩點(diǎn):緩存內(nèi)臟塊數(shù)量是否超過(guò)臟塊數(shù)閾值,以及各臟塊的寫回延時(shí)時(shí)間是否超過(guò)設(shè)定時(shí)間;如果緩存內(nèi)臟塊數(shù)量超過(guò)臟塊數(shù)閾值,或者某些臟塊的寫回延時(shí)間超過(guò)設(shè)定時(shí)間,則將緩存內(nèi)的臟塊集中寫回磁盤,并更新各臟塊的元數(shù)據(jù)信息。
      [0055]進(jìn)一步地,所述數(shù)據(jù)塊元數(shù)據(jù)維護(hù)模塊(I)包括以下子模塊:
      [0056](1-1)初始化數(shù)據(jù)塊元數(shù)據(jù)存儲(chǔ)區(qū)域子模塊:用于將固態(tài)盤緩存存儲(chǔ)空間分割成定長(zhǎng)大小的數(shù)據(jù)塊,根據(jù)緩存空間大小計(jì)算所需元數(shù)據(jù)存儲(chǔ)空間的大小,再求出所需的數(shù)據(jù)塊的數(shù)量,在緩存空間的頭部開(kāi)辟出相應(yīng)數(shù)量數(shù)據(jù)塊的元數(shù)據(jù)存儲(chǔ)區(qū)域。
      [0057]本模塊的優(yōu)點(diǎn)在于提前開(kāi)辟出數(shù)據(jù)塊元數(shù)據(jù)存儲(chǔ)空間,每個(gè)緩存空間的數(shù)據(jù)塊在元數(shù)據(jù)存儲(chǔ)區(qū)域中都有對(duì)應(yīng)固定的元數(shù)據(jù)存儲(chǔ)位置,在生成新的數(shù)據(jù)塊元數(shù)據(jù)時(shí),不需要?jiǎng)討B(tài)的為其分配存儲(chǔ)空間,減少了計(jì)算開(kāi)銷。
      [0058](1-2)生成數(shù)據(jù)塊元數(shù)據(jù)子模塊:用于在一個(gè)不在固態(tài)盤緩存中的數(shù)據(jù)塊需要被寫入固態(tài)盤時(shí),生成新的數(shù)據(jù)塊元數(shù)據(jù),新的數(shù)據(jù)塊元數(shù)據(jù)包括數(shù)據(jù)塊的指紋、數(shù)據(jù)塊的大小、數(shù)據(jù)塊的狀態(tài)、數(shù)據(jù)塊的生成時(shí)間、數(shù)據(jù)塊的元數(shù)據(jù)在數(shù)據(jù)塊元數(shù)據(jù)存儲(chǔ)區(qū)域的索引號(hào)和數(shù)據(jù)塊的存儲(chǔ)地址,并轉(zhuǎn)寫數(shù)據(jù)塊元數(shù)據(jù)子模塊。
      [0059]本模塊的優(yōu)點(diǎn)在于為每個(gè)數(shù)據(jù)塊給定一個(gè)數(shù)據(jù)塊指紋以唯一地標(biāo)識(shí)一個(gè)數(shù)據(jù)塊,這樣可以把多個(gè)物理機(jī)的磁盤數(shù)據(jù)塊緩存在同一個(gè)固態(tài)盤緩存系統(tǒng)中,根據(jù)LRU數(shù)據(jù)塊替換算法,數(shù)據(jù)訪問(wèn)頻繁的物理機(jī)就會(huì)有更多的數(shù)據(jù)塊被緩存在固態(tài)盤中,從而避免了數(shù)據(jù)訪問(wèn)不太頻繁的物理機(jī)上的數(shù)據(jù)塊占用了過(guò)多的固態(tài)盤緩存空間,從而提高固態(tài)盤緩存空間的利用率。
      [0060](1-3)寫數(shù)據(jù)塊元數(shù)據(jù)子模塊:用于將新生成的數(shù)據(jù)塊元數(shù)據(jù)寫入到數(shù)據(jù)塊元數(shù)據(jù)存儲(chǔ)區(qū)域的空閑數(shù)據(jù)塊中,同時(shí)將該數(shù)據(jù)塊元數(shù)據(jù)添加到內(nèi)存中的LRU棧的棧頂。
      [0061]本模塊的優(yōu)點(diǎn)在于在將數(shù)據(jù)塊元數(shù)據(jù)寫到固態(tài)盤緩存的同時(shí),還將其寫入到位于內(nèi)存的LRU棧的棧頂位置,既保證了新寫入的數(shù)據(jù)塊不會(huì)很快就被替換出去,與數(shù)據(jù)的局部性原理相一致,又保證了數(shù)據(jù)塊元數(shù)據(jù)在內(nèi)存和固態(tài)盤緩存中的一致性。
      [0062](1-4)讀數(shù)據(jù)塊元數(shù)據(jù)子模塊:用于根據(jù)數(shù)據(jù)塊的元數(shù)據(jù)在數(shù)據(jù)塊元數(shù)據(jù)存儲(chǔ)區(qū)域的索引號(hào)讀取數(shù)據(jù)塊的元數(shù)據(jù),并轉(zhuǎn)更新數(shù)據(jù)塊元數(shù)據(jù)子模塊。
      [0063](1-5)更新數(shù)據(jù)塊元數(shù)據(jù)子模塊:用于修改讀取出的數(shù)據(jù)塊元數(shù)據(jù)中的相應(yīng)項(xiàng),并將修改的結(jié)果寫回固態(tài)盤的數(shù)據(jù)塊元數(shù)據(jù)存儲(chǔ)區(qū)域和內(nèi)存中的LRU棧中對(duì)應(yīng)的存儲(chǔ)位置。
      [0064]所述固態(tài)盤數(shù)據(jù)塊替換模塊(2)包括以下子模塊:
      [0065](2-1)固態(tài)盤緩存空閑數(shù)據(jù)塊判斷子模塊:用于根據(jù)內(nèi)存中的空閑數(shù)據(jù)塊位圖,判斷固態(tài)盤緩存中是否有空閑數(shù)據(jù)塊,是則表明不需要將緩存中的某個(gè)數(shù)據(jù)塊替換出去,轉(zhuǎn)新數(shù)據(jù)塊和元數(shù)據(jù)寫入緩存子模塊;否則轉(zhuǎn)棧底數(shù)據(jù)塊元數(shù)據(jù)讀取子模塊。
      [0066]本模塊的優(yōu)點(diǎn)在于使用位圖法能夠迅速的判斷當(dāng)前緩存中是否有空閑數(shù)據(jù)塊可用,減少了磁盤數(shù)據(jù)塊寫入到緩存中的時(shí)間。
      [0067](2-2)棧底數(shù)據(jù)塊元數(shù)據(jù)讀取子模塊:用于讀取內(nèi)存中LRU棧棧底的數(shù)據(jù)塊元數(shù)據(jù),其中該數(shù)據(jù)塊元數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)塊是最近最久沒(méi)有訪問(wèn)的,根據(jù)LRU算法原理,在緩存空間不足時(shí),理應(yīng)最先被替換出去。
      [0068](2-3)臟數(shù)據(jù)塊判斷子模塊:用于判斷被替換數(shù)據(jù)塊是否為臟數(shù)據(jù)塊,是則轉(zhuǎn)臟數(shù)據(jù)塊寫回磁盤子模塊;否則說(shuō)明該被替換的數(shù)據(jù)塊不需要寫回磁盤,轉(zhuǎn)新數(shù)據(jù)塊和元數(shù)據(jù)寫入緩存子模塊。
      [0069](2-4)臟數(shù)據(jù)塊寫回磁盤子模塊:用于將臟數(shù)據(jù)塊判斷子模塊判斷為臟的數(shù)據(jù)塊寫回磁盤,并清除LRU棧中對(duì)應(yīng)的數(shù)據(jù)塊的元數(shù)據(jù)信息。
      [0070]本模塊的優(yōu)點(diǎn)在于保證了磁盤上數(shù)據(jù)的正確性,緩存中臟數(shù)據(jù)塊的修改時(shí)間比磁盤上對(duì)應(yīng)數(shù)據(jù)塊的修改時(shí)間要新的,當(dāng)一個(gè)臟數(shù)據(jù)塊被替換出緩存時(shí),應(yīng)該將修改的數(shù)據(jù)塊寫回磁盤以維護(hù)數(shù)據(jù)的一致性。
      [0071](2-5)新數(shù)據(jù)塊和元數(shù)據(jù)寫入緩存子模塊:用于為新的數(shù)據(jù)塊生成元數(shù)據(jù)信息,并將其添加到LRU棧的棧頂,然后將新數(shù)據(jù)塊寫入到被替換數(shù)據(jù)塊在緩存中的對(duì)應(yīng)存儲(chǔ)位置。
      [0072]所述臟數(shù)據(jù)塊寫回磁盤模塊(3)包括以下子模塊:
      [0073](3-1)臟數(shù)據(jù)塊寫回磁盤模塊:用于根據(jù)位于內(nèi)存的LRU棧中各數(shù)據(jù)塊的元數(shù)據(jù)信息,統(tǒng)計(jì)緩存中總的臟塊數(shù)量;其中所述元數(shù)據(jù)信息包括數(shù)據(jù)塊的狀態(tài)信息。
      [0074](3-2)臟數(shù)據(jù)塊數(shù)閾值判斷子模塊:用于判斷緩存中臟數(shù)據(jù)塊的數(shù)量是否超過(guò)臟數(shù)據(jù)塊閾值,是則說(shuō)明緩存中有過(guò)多的臟塊,可能會(huì)造成數(shù)據(jù)的不一致,則需要集中把緩存中的臟塊寫回到磁盤,轉(zhuǎn)臟數(shù)據(jù)塊集中寫回子模塊。
      [0075]本模塊的優(yōu)點(diǎn)在于從整體上保證了整個(gè)緩存空間數(shù)據(jù)塊的一致性,當(dāng)緩存中包含了過(guò)多的臟數(shù)據(jù)塊時(shí),如果出現(xiàn)系統(tǒng)錯(cuò)誤等意外情況,就會(huì)有大量緩存的數(shù)據(jù)塊和磁盤上的數(shù)據(jù)塊出現(xiàn)不一致的情況,通過(guò)為整個(gè)緩存空間設(shè)定一個(gè)合理的臟數(shù)據(jù)塊閾值,當(dāng)臟數(shù)據(jù)塊的數(shù)量達(dá)到這個(gè)閾值時(shí),數(shù)據(jù)塊會(huì)被集中寫回磁盤,避免了這種情況的出現(xiàn)。
      [0076](3-3)各臟數(shù)據(jù)塊寫回延時(shí)判斷子模塊:用于根據(jù)各數(shù)據(jù)塊中的狀態(tài)信息和數(shù)據(jù)塊生成時(shí)間信息,求得各臟數(shù)據(jù)塊上一次訪問(wèn)距離現(xiàn)在的時(shí)延,并判斷這個(gè)時(shí)延是否超過(guò)了臟數(shù)據(jù)塊寫回延時(shí),是則轉(zhuǎn)臟數(shù)據(jù)塊集中寫回子模塊。
      [0077]本模塊的優(yōu)點(diǎn)在于減少了將緩存中數(shù)據(jù)塊替換出磁盤所產(chǎn)生的開(kāi)銷,當(dāng)一個(gè)數(shù)據(jù)塊的寫回延時(shí)過(guò)高時(shí),超過(guò)了系統(tǒng)所設(shè)定的時(shí)間,則說(shuō)明在比較長(zhǎng)的時(shí)間內(nèi)該數(shù)據(jù)塊沒(méi)有被訪問(wèn)過(guò),根據(jù)LRU算法的假設(shè),那么該數(shù)據(jù)塊在未來(lái)比較長(zhǎng)的一段時(shí)間內(nèi)也不會(huì)被訪問(wèn),所以會(huì)在比較短的時(shí)間內(nèi)被替換出緩存。如果數(shù)據(jù)塊寫回延時(shí)超時(shí),就將該臟數(shù)據(jù)塊寫回磁盤,當(dāng)在不久的將來(lái)該數(shù)據(jù)塊被替換出磁盤時(shí),就可以直接將新的數(shù)據(jù)塊寫入緩存中對(duì)應(yīng)位置,而不需要再將被替換數(shù)據(jù)塊寫回磁盤,從而減少數(shù)據(jù)塊的替換開(kāi)銷。
      [0078](3-4)臟數(shù)據(jù)塊集中寫回子模塊:用于把需要寫回磁盤的臟數(shù)據(jù)塊分類集中寫回到磁盤,并轉(zhuǎn)臟數(shù)據(jù)塊元數(shù)據(jù)更新子模塊。
      [0079]本模塊的優(yōu)點(diǎn)在于提高了臟數(shù)據(jù)塊寫回磁盤的效率,把臟數(shù)據(jù)塊集中寫回磁盤,利用了數(shù)據(jù)的局部性原理,通過(guò)對(duì)寫回的數(shù)據(jù)塊進(jìn)行排序,使得連續(xù)的數(shù)據(jù)塊被一起寫回磁盤,利用了磁盤在連續(xù)寫情況下具有較高寫性能的特點(diǎn),進(jìn)而提高了臟數(shù)據(jù)塊寫回磁盤的效率。
      [0080]( 3-5)臟數(shù)據(jù)塊元數(shù)據(jù)更新子模塊:用于在臟數(shù)據(jù)塊被寫回磁盤后,需要更新自己的狀態(tài)為非臟塊,以保證元數(shù)據(jù)的一致性,將內(nèi)存中的LRU棧的元數(shù)據(jù)和固態(tài)盤上元數(shù)據(jù)存儲(chǔ)區(qū)域中的元數(shù)據(jù)都更新為非臟塊狀態(tài)。
      [0081]如圖3所示,為本發(fā)明的基于固態(tài)盤的磁盤緩存系統(tǒng)的工作原理圖,具體地:
      [0082]圖中描述的緩存系統(tǒng),在進(jìn)行初次運(yùn)行時(shí),對(duì)數(shù)據(jù)塊原時(shí)間存儲(chǔ)區(qū)域進(jìn)行初始化。將固態(tài)盤緩存存儲(chǔ)空間分割成定長(zhǎng)大小的數(shù)據(jù)塊,根據(jù)緩存空間大小計(jì)算所需元數(shù)據(jù)存儲(chǔ)空間的大小,再求出所需的數(shù)據(jù)塊的數(shù)量,在緩存空間的頭部開(kāi)辟出相應(yīng)數(shù)量數(shù)據(jù)塊的元數(shù)據(jù)存儲(chǔ)區(qū)域。
      [0083]當(dāng)接收到上層讀寫請(qǐng)求時(shí),判斷是讀請(qǐng)求還是寫請(qǐng)求:
      [0084]1、如果是讀請(qǐng)求,在緩存中查找數(shù)據(jù)塊元數(shù)據(jù)。如果命中,就根據(jù)元數(shù)據(jù)訪問(wèn)固態(tài)盤緩存空間,讀取對(duì)于的數(shù)據(jù)塊;并將元數(shù)據(jù)信息移到LRU棧的棧頂。如果不命中,只能通過(guò)訪問(wèn)磁盤來(lái)讀取數(shù)據(jù)塊。生成對(duì)應(yīng)的數(shù)據(jù)塊元數(shù)據(jù),再通過(guò)數(shù)據(jù)塊元數(shù)據(jù)維護(hù)模塊中的生成數(shù)據(jù)塊元數(shù)據(jù)子模塊和寫數(shù)據(jù)塊元數(shù)據(jù)子模塊來(lái)對(duì)新的元數(shù)據(jù)進(jìn)行處理。
      [0085]2、如果是寫請(qǐng)求,先在緩存中查找數(shù)據(jù)塊元數(shù)據(jù),查看是否寫命中。如果命中,訪問(wèn)固態(tài)盤緩存并寫入對(duì)應(yīng)的數(shù)據(jù)塊,將該數(shù)據(jù)塊的狀態(tài)改為臟塊,并將對(duì)應(yīng)的元數(shù)據(jù)信息移到LRU棧的棧頂。如果不命中,只能通過(guò)訪問(wèn)磁盤來(lái)讀取數(shù)據(jù)塊。生成對(duì)應(yīng)的數(shù)據(jù)塊元數(shù)據(jù),再通過(guò)數(shù)據(jù)塊元數(shù)據(jù)維護(hù)模塊中的生成數(shù)據(jù)塊元數(shù)據(jù)子模塊和寫數(shù)據(jù)塊元數(shù)據(jù)子模塊來(lái)對(duì)新的元數(shù)據(jù)進(jìn)行處理。在這個(gè)過(guò)程中,要更新數(shù)據(jù)塊的狀態(tài)為臟塊。
      [0086]本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
      【權(quán)利要求】
      1.一種基于固態(tài)盤的磁盤緩存系統(tǒng),其特征在于,所述系統(tǒng)包括數(shù)據(jù)塊元數(shù)據(jù)維護(hù)模塊、固態(tài)盤數(shù)據(jù)塊替換模塊和臟數(shù)據(jù)塊寫回磁盤模塊,其中: 所述數(shù)據(jù)塊元數(shù)據(jù)維護(hù)模塊,用于在使用固態(tài)盤作為磁盤緩存之前,在固態(tài)盤存儲(chǔ)空間的頭部開(kāi)辟出一塊固定大小的元數(shù)據(jù)存儲(chǔ)區(qū)域,以保存各數(shù)據(jù)塊的元數(shù)據(jù);當(dāng)把一個(gè)新數(shù)據(jù)塊寫入到緩存中時(shí),用于生成該數(shù)據(jù)塊所對(duì)應(yīng)的元數(shù)據(jù),并將該元數(shù)據(jù)寫入到固態(tài)盤上的元數(shù)據(jù)存儲(chǔ)區(qū)域中,同時(shí)用于在有需要時(shí)從元數(shù)據(jù)存儲(chǔ)區(qū)域中讀取任意數(shù)據(jù)塊的元數(shù)據(jù); 所述固態(tài)盤數(shù)據(jù)塊替換模塊,用于判斷緩存中是否有空閑數(shù)據(jù)塊存儲(chǔ)區(qū)域可以用來(lái)緩存新的數(shù)據(jù)塊,如有則直接將新的數(shù)據(jù)塊寫入緩存中,如沒(méi)有則需要根據(jù)替換算法將緩存中現(xiàn)有的一個(gè)數(shù)據(jù)塊替換出去;如果被替換出緩存的數(shù)據(jù)塊是一個(gè)臟塊,在替換之前需要將臟塊寫回磁盤,避免出現(xiàn)數(shù)據(jù)的不一致性,最后將新的數(shù)據(jù)塊寫入緩存中的對(duì)應(yīng)位置;所述臟數(shù)據(jù)塊寫回磁盤模塊,用于定期將固態(tài)盤中的臟塊寫回磁盤,其中寫回磁盤的時(shí)機(jī)基于兩點(diǎn):緩存內(nèi)臟塊數(shù)量是否超過(guò)臟塊數(shù)閾值,以及各臟塊的寫回延時(shí)時(shí)間是否超過(guò)設(shè)定時(shí)間;如果緩存內(nèi)臟塊數(shù)量超過(guò)臟塊數(shù)閾值,或者某些臟塊的寫回延時(shí)時(shí)間超過(guò)設(shè)定時(shí)間,則將緩存內(nèi)的臟塊集中寫回磁盤,并更新各臟塊的元數(shù)據(jù)信息。
      2.如權(quán)利要求1所述的磁盤緩存系統(tǒng),其特征在于,所述數(shù)據(jù)塊元數(shù)據(jù)維護(hù)模塊包括初始化數(shù)據(jù)塊元數(shù)據(jù)存儲(chǔ)區(qū)域子模塊、生成數(shù)據(jù)塊元數(shù)據(jù)子模塊、寫數(shù)據(jù)塊元數(shù)據(jù)子模塊、讀數(shù)據(jù)塊元數(shù)據(jù)子模塊和更新數(shù)據(jù)塊元數(shù)據(jù)子模塊,其中: 所述初始化數(shù)據(jù)塊元數(shù)據(jù)存儲(chǔ)區(qū)域子模塊:用于將固態(tài)盤緩存存儲(chǔ)空間分割成定長(zhǎng)大小的數(shù)據(jù)塊,根據(jù)緩存空間大小計(jì)算所需元數(shù)據(jù)存儲(chǔ)空間的大小,再求出所需的數(shù)據(jù)塊的數(shù)量,在緩存空間的頭部開(kāi)辟出相應(yīng)數(shù)量數(shù)據(jù)塊的元數(shù)據(jù)存儲(chǔ)區(qū)域; 所述生成數(shù)據(jù)塊元數(shù)據(jù)子模塊:用于在一個(gè)不在固態(tài)盤緩存中的數(shù)據(jù)塊需要被寫入固態(tài)盤時(shí),生成新的數(shù)據(jù)塊元數(shù)據(jù),新的數(shù)據(jù)塊元數(shù)據(jù)包括數(shù)據(jù)塊的指紋、數(shù)據(jù)塊的大小、數(shù)據(jù)塊的狀態(tài)、數(shù)據(jù)塊的生成時(shí)間、數(shù)據(jù)塊的元數(shù)據(jù)在數(shù)據(jù)塊元數(shù)據(jù)存儲(chǔ)區(qū)域的索引號(hào)和數(shù)據(jù)塊的存儲(chǔ)地址,并轉(zhuǎn)寫數(shù)據(jù)塊元數(shù)據(jù)子模塊; 所述寫數(shù)據(jù)塊元數(shù)據(jù)子模塊:用于將新生成的數(shù)據(jù)塊元數(shù)據(jù)寫入到數(shù)據(jù)塊元數(shù)據(jù)存儲(chǔ)區(qū)域的空閑數(shù)據(jù)塊中,同時(shí)將該數(shù)據(jù)塊元數(shù)據(jù)添加到內(nèi)存中的LRU棧的棧頂; 所述讀數(shù)據(jù)塊元數(shù)據(jù)子模塊:用于根據(jù)數(shù)據(jù)塊的元數(shù)據(jù)在數(shù)據(jù)塊元數(shù)據(jù)存儲(chǔ)區(qū)域的索引號(hào)讀取數(shù)據(jù)塊的元數(shù)據(jù),并轉(zhuǎn)更新數(shù)據(jù)塊元數(shù)據(jù)子模塊; 所述更新數(shù)據(jù)塊元數(shù)據(jù)子模塊:用于修改讀取出的數(shù)據(jù)塊元數(shù)據(jù)中的相應(yīng)項(xiàng),并將修改的結(jié)果寫回固態(tài)盤的數(shù)據(jù)塊元數(shù)據(jù)存儲(chǔ)區(qū)域和內(nèi)存中的LRU棧中對(duì)應(yīng)的存儲(chǔ)位置。
      3.如權(quán)利要求1或2所述的磁盤緩存系統(tǒng),其特征在于,所述固態(tài)盤數(shù)據(jù)塊替換模塊包括固態(tài)盤緩存空閑數(shù)據(jù)塊判斷子模塊、棧底數(shù)據(jù)塊元數(shù)據(jù)讀取子模塊、臟數(shù)據(jù)塊判斷子模塊、臟數(shù)據(jù)塊寫回磁盤子模塊,以及新數(shù)據(jù)塊和元數(shù)據(jù)寫入緩存子模塊,其中: 所述固態(tài)盤緩存空閑數(shù)據(jù)塊判斷子模塊:用于根據(jù)內(nèi)存中的空閑數(shù)據(jù)塊位圖,判斷固態(tài)盤緩存中是否有空閑數(shù)據(jù)塊,是則表明不需要將緩存中的某個(gè)數(shù)據(jù)塊替換出去,轉(zhuǎn)新數(shù)據(jù)塊和元數(shù)據(jù)寫入緩存子模塊;否則轉(zhuǎn)棧底數(shù)據(jù)塊元數(shù)據(jù)讀取子模塊; 所述棧底數(shù)據(jù)塊元數(shù)據(jù)讀取 子模塊:用于讀取內(nèi)存中LRU棧棧底的數(shù)據(jù)塊元數(shù)據(jù),其中該數(shù)據(jù)塊元數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)塊是最近最久沒(méi)有訪問(wèn)的,根據(jù)LRU算法原理,在緩存空間不足時(shí),理應(yīng)最先被替換出去; 所述臟數(shù)據(jù)塊判斷子模塊:用于判斷被替換數(shù)據(jù)塊是否為臟數(shù)據(jù)塊,是則轉(zhuǎn)臟數(shù)據(jù)塊寫回磁盤子模塊;否則說(shuō)明該被替換的數(shù)據(jù)塊不需要寫回磁盤,轉(zhuǎn)新數(shù)據(jù)塊和元數(shù)據(jù)寫入緩存子模塊; 所述臟數(shù)據(jù)塊寫回磁盤子模塊:用于將臟數(shù)據(jù)塊判斷子模塊判斷為臟的數(shù)據(jù)塊寫回磁盤,并清除LRU棧中對(duì)應(yīng)的數(shù)據(jù)塊的元數(shù)據(jù)信息; 所述新數(shù)據(jù)塊和元數(shù)據(jù)寫入緩存子模塊:用于為新的數(shù)據(jù)塊生成元數(shù)據(jù)信息,并將其添加到LRU棧的棧頂,然后將新數(shù)據(jù)塊寫入到被替換數(shù)據(jù)塊在緩存中的對(duì)應(yīng)存儲(chǔ)位置。
      4.如權(quán)利要求1至3任一項(xiàng)所述的磁盤緩存系統(tǒng),其特征在于,所述臟數(shù)據(jù)塊寫回磁盤模塊包括緩存內(nèi)臟數(shù)據(jù)塊數(shù)量計(jì)算子模塊、臟數(shù)據(jù)塊數(shù)閾值判斷子模塊、各臟數(shù)據(jù)塊寫回延時(shí)判斷子模塊、臟數(shù)據(jù)塊集中寫回子模塊,以及臟數(shù)據(jù)塊元數(shù)據(jù)更新子模塊,其中: 所述臟數(shù)據(jù)塊寫回磁盤模塊:用于根據(jù)位于內(nèi)存的LRU棧中各數(shù)據(jù)塊的元數(shù)據(jù)信息,統(tǒng)計(jì)緩存中總的臟塊數(shù)量;其中所述元數(shù)據(jù)信息包括數(shù)據(jù)塊的狀態(tài)信息; 所述臟數(shù)據(jù)塊數(shù)閾值判斷子模塊:用于判斷緩存中臟數(shù)據(jù)塊的數(shù)量是否超過(guò)臟數(shù)據(jù)塊閾值,是則說(shuō)明緩存中有過(guò)多的臟塊,可能會(huì)造成數(shù)據(jù)的不一致,則需要集中把緩存中的臟塊寫回到磁盤,轉(zhuǎn)臟數(shù)據(jù)塊集中寫回子模塊; 所述各臟數(shù)據(jù)塊寫回延時(shí)判斷子模塊:用于根據(jù)各數(shù)據(jù)塊中的狀態(tài)信息和數(shù)據(jù)塊生成時(shí)間信息,求得各臟數(shù)據(jù)塊上一次訪問(wèn)距離現(xiàn)在的時(shí)延,并判斷這個(gè)時(shí)延是否超過(guò)了臟數(shù)據(jù)塊寫回延時(shí),是則轉(zhuǎn)臟數(shù)據(jù)塊集中寫回子模塊; 所述臟數(shù)據(jù)塊集中寫回子模塊:用于把需要寫回磁盤的臟數(shù)據(jù)塊分類集中寫回到磁盤,并轉(zhuǎn)臟數(shù)據(jù)塊元數(shù)據(jù)更新子模塊; 所述臟數(shù)據(jù)塊元數(shù)據(jù)更新子模塊:用于在臟數(shù)據(jù)塊被寫回磁盤后,需要更新自己的狀態(tài)為非臟塊,以保證元數(shù)據(jù) 的一致性,將內(nèi)存中的LRU棧的元數(shù)據(jù)和固態(tài)盤上元數(shù)據(jù)存儲(chǔ)區(qū)域中的元數(shù)據(jù)都更新為非臟塊狀態(tài)。
      【文檔編號(hào)】G06F3/06GK103885728SQ201410138635
      【公開(kāi)日】2014年6月25日 申請(qǐng)日期:2014年4月4日 優(yōu)先權(quán)日:2014年4月4日
      【發(fā)明者】周可, 王樺, 夏德軍, 饒琦 申請(qǐng)人:華中科技大學(xué)
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1