国产精品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)盤陣列的數(shù)據(jù)處理方法及系統(tǒng)與流程

      文檔序號(hào):11773930閱讀:297來(lái)源:國(guó)知局
      一種基于固態(tài)盤陣列的數(shù)據(jù)處理方法及系統(tǒng)與流程

      本發(fā)明屬于計(jì)算機(jī)存儲(chǔ)技術(shù)領(lǐng)域,更具體地,涉及一種基于固態(tài)盤陣列的數(shù)據(jù)處理方法及系統(tǒng)。



      背景技術(shù):

      磁盤陣列(redundantarrayofindependentdisks,raid)可以給用戶提供大容量、高性能和高可靠性服務(wù)。raid根據(jù)容錯(cuò)能力和數(shù)據(jù)布局的不同可以分為不同的陣列級(jí)別(raidlevels)。raid5是raidlevels中最常用的一種級(jí)別。隨著固態(tài)盤技術(shù)越來(lái)越成熟,價(jià)格越來(lái)越低,更多的存儲(chǔ)廠商使用raid技術(shù),把多個(gè)固態(tài)盤組建成固態(tài)盤陣列(redundantarrayofindependentssds,rais)作為高端的存儲(chǔ)產(chǎn)品。

      陣列存儲(chǔ)系統(tǒng)可以提供大容量、高性能和高可靠性服務(wù),但是它的小寫性能很差。針對(duì)這一問(wèn)題,很多研究采用日志技術(shù)延遲校驗(yàn)塊更新來(lái)提升陣列的小寫性能。但是傳統(tǒng)日志技術(shù)是針對(duì)磁盤的特性進(jìn)行設(shè)計(jì)的,而固態(tài)盤有很多不同于磁盤的特性。固態(tài)盤采用異地更新策略寫數(shù)據(jù),因此固態(tài)盤中存在很多“無(wú)效”的數(shù)據(jù)塊。傳統(tǒng)日志技術(shù)并沒(méi)有充分利用這些“無(wú)效”的數(shù)據(jù)塊,需要預(yù)讀取陣列中一些舊的數(shù)據(jù)塊,將這些數(shù)據(jù)和要寫入的新數(shù)據(jù)一起順序地寫到日志盤中,以便當(dāng)存儲(chǔ)器失效時(shí)根據(jù)預(yù)讀數(shù)據(jù)計(jì)算對(duì)應(yīng)的校驗(yàn)塊用于數(shù)據(jù)恢復(fù)。這些預(yù)讀操作帶來(lái)的額外讀請(qǐng)求會(huì)破壞訪問(wèn)負(fù)載原本的訪問(wèn)特性。



      技術(shù)實(shí)現(xiàn)要素:

      針對(duì)現(xiàn)有技術(shù)的缺陷,本發(fā)明的目的在于解決現(xiàn)有技術(shù)頻繁的預(yù)讀會(huì)破壞訪問(wèn)負(fù)載的原本訪問(wèn)特性的技術(shù)問(wèn)題。

      為實(shí)現(xiàn)上述目的,第一方面,本發(fā)明提供了一種基于固態(tài)盤陣列的數(shù)據(jù)處理方法,包括:接收寫請(qǐng)求,指示固態(tài)盤陣列和日志盤寫入所述寫請(qǐng)求對(duì)應(yīng)的數(shù)據(jù);所述固態(tài)盤陣列包括n個(gè)成員盤,所述n個(gè)成員盤中任意兩個(gè)成員盤的邏輯地址范圍相同,所述n個(gè)成員盤采用異地更新策略寫入數(shù)據(jù),所述異地更新策略為前后兩次寫入的相同邏輯地址的數(shù)據(jù)的物理地址不同,n為正整數(shù);通過(guò)哈希(hash)表指示所述日志盤中對(duì)應(yīng)的每個(gè)成員盤中最后一次寫入的數(shù)據(jù);在空閑時(shí)間、所述日志盤失效、所述日志盤的剩余空間低于第一閾值或有成員盤的剩余空間低于第二閾值時(shí),指示所述固態(tài)盤陣列根據(jù)每個(gè)邏輯地址對(duì)應(yīng)的n-1個(gè)成員盤上的數(shù)據(jù)更新每個(gè)邏輯地址對(duì)應(yīng)的校驗(yàn)信息,并將每個(gè)邏輯地址對(duì)應(yīng)的校驗(yàn)信息寫入對(duì)應(yīng)邏輯地址的成員盤中;當(dāng)有成員盤失效時(shí),通過(guò)所述哈希表指示的日志盤中的數(shù)據(jù)恢復(fù)失效成員盤中最后一次寫入的數(shù)據(jù),以及通過(guò)未失效成員盤中的數(shù)據(jù)和對(duì)應(yīng)邏輯地址的校驗(yàn)信息恢復(fù)失效成員盤中相應(yīng)邏輯地址上的數(shù)據(jù)。

      具體地,第一閾值可以為日志盤總空間的20%,第二閾值可以為成員盤總空間的20%。另外,第一閾值和第二閾值也可根據(jù)實(shí)際需要設(shè)置,本發(fā)明實(shí)施例不對(duì)此做任何限定。

      本發(fā)明利用日志技術(shù)和固態(tài)盤的異地更新策略將更新的數(shù)據(jù)塊同時(shí)寫到日志盤和固態(tài)盤陣列中,由于固態(tài)盤采用異地更新,原始數(shù)據(jù)還保存在固態(tài)盤中,故可延遲校驗(yàn)塊的更新,提升了固態(tài)盤的小寫性能,減少對(duì)校驗(yàn)塊的擦寫次數(shù),提升了訪問(wèn)負(fù)載的性能。

      可選地,本發(fā)明實(shí)施例提供的數(shù)據(jù)處理方法還包括:接收讀請(qǐng)求,在成員盤對(duì)應(yīng)的數(shù)據(jù)頁(yè)讀取數(shù)據(jù);根據(jù)所述成員盤中包括的數(shù)據(jù)頁(yè)的讀寫請(qǐng)求信息,確定所述數(shù)據(jù)頁(yè)為只讀頁(yè)、只寫頁(yè)或交叉頁(yè)中的一種;當(dāng)接收寫請(qǐng)求時(shí),若所述寫請(qǐng)求訪問(wèn)的數(shù)據(jù)頁(yè)為只寫頁(yè),則使用低代價(jià)處理所述寫請(qǐng)求;若所述寫請(qǐng)求訪問(wèn)的數(shù)據(jù)頁(yè)為交叉頁(yè),則使用中等代價(jià)處理所述寫請(qǐng)求;當(dāng)接收讀請(qǐng)求時(shí),若所述讀請(qǐng)求訪問(wèn)的數(shù)據(jù)頁(yè)為只讀頁(yè),則確定對(duì)所述數(shù)據(jù)頁(yè)的前一次讀請(qǐng)求是否為低代價(jià),當(dāng)不是低代價(jià)的讀時(shí),在系統(tǒng)空閑且所述讀請(qǐng)求處理之前在所述數(shù)據(jù)頁(yè)插入一個(gè)高代價(jià)的寫請(qǐng)求。

      本發(fā)明在減少預(yù)讀操作后,使得數(shù)據(jù)頁(yè)為只寫頁(yè)的幾率增加,在此基礎(chǔ)上結(jié)合調(diào)節(jié)讀寫代價(jià)的技術(shù),進(jìn)一步提升固態(tài)盤陣列的讀寫性能。

      可選地,接收寫請(qǐng)求,指示固態(tài)盤陣列和日志盤寫入所述寫請(qǐng)求對(duì)應(yīng)的數(shù)據(jù),包括:(a)將用戶請(qǐng)求按照條帶進(jìn)行分解后,掛載到對(duì)應(yīng)的條帶上;用lba表示成員盤中的邏輯地址,log_lba表示日志盤中的邏輯地址;所述條帶的編號(hào)對(duì)應(yīng)lba;(b)對(duì)有請(qǐng)求的條帶進(jìn)行處理,如果是讀請(qǐng)求,則執(zhí)行步驟(f),否則執(zhí)行步驟(c);(c)查找哈希表中是否有對(duì)應(yīng)的條目,所述條目包括lba和log_lba信息,若哈希表中有對(duì)應(yīng)的條目,則更改log_lba,若哈希表中沒(méi)有對(duì)應(yīng)的條目,則創(chuàng)建一個(gè)條目,將對(duì)應(yīng)的lba和log_lba信息填充到所述創(chuàng)建的條目中;(d)判斷所述寫請(qǐng)求要寫的數(shù)據(jù)頁(yè)所屬類型并作標(biāo)記,將所述寫請(qǐng)求克隆后,同時(shí)分發(fā)到成員盤和日志盤;(e)寫請(qǐng)求到達(dá)成員盤時(shí),根據(jù)所述寫請(qǐng)求要寫的數(shù)據(jù)頁(yè)所屬類型動(dòng)態(tài)調(diào)節(jié)訪問(wèn)的代價(jià),接著判斷地址映射表中所述寫請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)頁(yè)的old_ppn是否為空,如果為空則將old_ppn的值設(shè)置為所述寫請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)頁(yè)的物理頁(yè)號(hào),所述地址映射表用于記錄數(shù)據(jù)頁(yè)的邏輯頁(yè)號(hào)lpn、物理頁(yè)號(hào)ppn以及該數(shù)據(jù)頁(yè)對(duì)應(yīng)的無(wú)效數(shù)據(jù)頁(yè)的物理頁(yè)號(hào)old_ppn;(f)讀請(qǐng)求到達(dá)成員盤時(shí),根據(jù)所述讀請(qǐng)求要讀的數(shù)據(jù)頁(yè)所屬類型動(dòng)態(tài)調(diào)節(jié)訪問(wèn)的代價(jià)。

      需要說(shuō)明的是,條帶(strip)是把連續(xù)的數(shù)據(jù)分割成相同大小的數(shù)據(jù)塊,把每段數(shù)據(jù)分別寫入到陣列中的不同磁盤上的方法。簡(jiǎn)單的說(shuō),條帶是一種將多個(gè)磁盤驅(qū)動(dòng)器合并為一個(gè)卷的方法。一個(gè)條帶上的數(shù)據(jù)塊在不同磁盤(成員盤)的邏輯地址相同。

      本發(fā)明通過(guò)修改地址映射表,通過(guò)old_ppn記錄“無(wú)效”的數(shù)據(jù)塊,去除預(yù)讀操作,從而保證了真實(shí)負(fù)載的訪問(wèn)特性。

      可選地,所述在空閑時(shí)間、所述日志盤失效、所述日志盤的剩余空間低于第一閾值或有成員盤的剩余空間低于第二閾值時(shí),指示所述固態(tài)盤陣列根據(jù)每個(gè)邏輯地址對(duì)應(yīng)的n-1個(gè)成員盤上的數(shù)據(jù)更新每個(gè)邏輯地址對(duì)應(yīng)的校驗(yàn)信息,包括:依次取出所述哈希表的節(jié)點(diǎn),確定對(duì)應(yīng)的條帶,讀出成員盤中對(duì)應(yīng)條帶上所有的數(shù)據(jù)塊,計(jì)算出對(duì)應(yīng)的校驗(yàn)塊并在成員盤對(duì)應(yīng)條帶寫入所述校驗(yàn)塊,刪除該條帶上被更新過(guò)的數(shù)據(jù)塊在哈希表中的對(duì)應(yīng)條目,重復(fù)計(jì)算校驗(yàn)塊以及刪除哈希表中對(duì)應(yīng)的條目直到哈希表為空。

      可選地,當(dāng)有成員盤失效時(shí),通過(guò)所述哈希表指示的日志盤中的數(shù)據(jù)恢復(fù)失效成員盤中最后一次寫入的數(shù)據(jù),以及通過(guò)未失效成員盤中的數(shù)據(jù)和對(duì)應(yīng)邏輯地址的校驗(yàn)信息恢復(fù)失效成員盤中相應(yīng)邏輯地址上的數(shù)據(jù),包括:如果失效數(shù)據(jù)塊在哈希表中有對(duì)應(yīng)的條目,則直接從日志盤中讀取對(duì)應(yīng)的數(shù)據(jù)塊作為恢復(fù)數(shù)據(jù);如果失效數(shù)據(jù)塊在哈希表中沒(méi)有對(duì)應(yīng)的條目,則使用未失效成員盤中對(duì)應(yīng)邏輯地址的數(shù)據(jù)塊和校驗(yàn)塊的舊數(shù)據(jù)進(jìn)行異或確定恢復(fù)數(shù)據(jù),當(dāng)未失效成員盤中對(duì)應(yīng)邏輯地址的數(shù)據(jù)塊或校驗(yàn)塊被更新過(guò)的,通過(guò)地址映射表中old_ppn域所指的位置讀取對(duì)應(yīng)的舊數(shù)據(jù)。

      可選地,處理寫請(qǐng)求時(shí),通過(guò)成員盤的異地更新策略和日志盤的日志技術(shù)延遲了校驗(yàn)塊的更新,減少了為計(jì)算校驗(yàn)塊所需的預(yù)讀操作,保證了訪問(wèn)負(fù)載的原始特性。

      第二方面,本發(fā)明實(shí)施例提供了一種基于固態(tài)盤陣列的數(shù)據(jù)處理系統(tǒng),包括:固態(tài)盤陣列、日志盤、請(qǐng)求處理模塊、數(shù)據(jù)記錄模塊、校驗(yàn)同步模塊以及數(shù)據(jù)恢復(fù)模塊;所述固態(tài)盤陣列包括n個(gè)成員盤,所述n個(gè)成員盤中任意兩個(gè)成員盤的邏輯地址范圍相同,所述n個(gè)成員盤采用異地更新策略寫入數(shù)據(jù),所述異地更新策略為前后兩次寫入的相同邏輯地址數(shù)據(jù)的物理地址不同,n為正整數(shù);所述請(qǐng)求處理模塊,用于接收寫請(qǐng)求,指示所述固態(tài)盤陣列和日志盤寫入所述寫請(qǐng)求對(duì)應(yīng)的數(shù)據(jù);數(shù)據(jù)記錄模塊,用于通過(guò)哈希表指示所述日志盤中記錄的每個(gè)成員盤中最后一次寫入的數(shù)據(jù);校驗(yàn)同步模塊,用于在空閑時(shí)間、所述日志盤失效、所述日志盤的剩余空間低于第一閾值或有成員盤的剩余空間低于第二閾值時(shí),指示所述固態(tài)盤陣列根據(jù)每個(gè)邏輯地址對(duì)應(yīng)的n-1個(gè)成員盤上的數(shù)據(jù)更新每個(gè)邏輯地址對(duì)應(yīng)的校驗(yàn)信息,并將每個(gè)邏輯地址對(duì)應(yīng)的校驗(yàn)信息寫入對(duì)應(yīng)邏輯地址的成員盤中;數(shù)據(jù)恢復(fù)模塊,用于當(dāng)有成員盤失效時(shí),通過(guò)所述哈希表恢復(fù)失效成員盤中最后一次寫入的數(shù)據(jù),以及通過(guò)未失效成員盤中的數(shù)據(jù)和對(duì)應(yīng)邏輯地址的校驗(yàn)信息恢復(fù)失效成員盤中相應(yīng)邏輯地址上的數(shù)據(jù)。

      可選地,本發(fā)明實(shí)施例提供的數(shù)據(jù)處理系統(tǒng)還包括:鑒別模塊和訪問(wèn)調(diào)節(jié)模塊;所述鑒別模塊,用于根據(jù)所述成員盤中包括的數(shù)據(jù)頁(yè)的讀寫請(qǐng)求信息,確定所述數(shù)據(jù)頁(yè)為只讀頁(yè)、只寫頁(yè)或交叉頁(yè)中的一種;所述訪問(wèn)調(diào)節(jié)模塊,用于當(dāng)所述請(qǐng)求處理模塊接收寫請(qǐng)求時(shí),若所述寫請(qǐng)求訪問(wèn)的數(shù)據(jù)頁(yè)為只寫頁(yè),則使用低代價(jià)處理所述寫請(qǐng)求;若所述寫請(qǐng)求訪問(wèn)的數(shù)據(jù)頁(yè)為交叉頁(yè),則使用中等代價(jià)處理所述寫請(qǐng)求;當(dāng)所述請(qǐng)求處理模塊接收讀請(qǐng)求時(shí),若所述讀請(qǐng)求訪問(wèn)的數(shù)據(jù)頁(yè)為只讀頁(yè),則確定對(duì)所述數(shù)據(jù)頁(yè)的前一次讀請(qǐng)求是否為低代價(jià),當(dāng)不是低代價(jià)的讀時(shí),在系統(tǒng)空閑且所述讀請(qǐng)求處理之前在所述數(shù)據(jù)頁(yè)插入一個(gè)高代價(jià)的寫請(qǐng)求。

      可選地,用lba表示成員盤中的邏輯地址,log_lba表示日志盤中的邏輯地址;所述請(qǐng)求處理模塊,用于將請(qǐng)求按照條帶進(jìn)行分解后,掛載到對(duì)應(yīng)的條帶上,所述條帶的編號(hào)對(duì)應(yīng)lba;若所述請(qǐng)求為寫請(qǐng)求,查找哈希表中是否有對(duì)應(yīng)的條目,所述條目包括lba和log_lba信息,若哈希表中有對(duì)應(yīng)的條目,則更改log_lba,若哈希表中沒(méi)有對(duì)應(yīng)的條目,則創(chuàng)建一個(gè)條目,將對(duì)應(yīng)的lba和log_lba信息填充到所述創(chuàng)建的條目中;所述鑒別模塊,用于判斷所述寫請(qǐng)求要寫的數(shù)據(jù)頁(yè)所屬類型并作標(biāo)記,所述請(qǐng)求處理模塊,用于將所述寫請(qǐng)求克隆后,同時(shí)分發(fā)到成員盤和日志盤;所述訪問(wèn)調(diào)節(jié)模塊,用于當(dāng)所述寫請(qǐng)求到達(dá)成員盤時(shí),根據(jù)所述寫請(qǐng)求要寫的數(shù)據(jù)頁(yè)所屬類型動(dòng)態(tài)調(diào)節(jié)訪問(wèn)的代價(jià)。

      可選地,校驗(yàn)同步模塊,用于在空閑時(shí)間、所述日志盤失效、所述日志盤的剩余空間低于第一閾值或有成員盤的剩余空間低于第二閾值時(shí),依次取出所述哈希表的節(jié)點(diǎn),確定出對(duì)應(yīng)的條帶,讀出成員盤中條帶上所有的數(shù)據(jù)塊,計(jì)算出對(duì)應(yīng)的校驗(yàn)塊并在成員盤對(duì)應(yīng)條帶寫入所述校驗(yàn)塊,刪除該條帶上被更新過(guò)的數(shù)據(jù)塊在哈希表中的對(duì)應(yīng)條目,重復(fù)計(jì)算校驗(yàn)塊以及刪除哈希表中對(duì)應(yīng)的條目直到哈希表為空。

      總體而言,通過(guò)本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,具有以下有益效果:

      (1)本發(fā)明利用日志技術(shù)和固態(tài)盤的異地更新策略將更新的數(shù)據(jù)塊同時(shí)寫到日志盤和固態(tài)盤陣列中,通過(guò)延遲校驗(yàn)塊更新提升小寫性能,減少對(duì)校驗(yàn)塊的擦寫次數(shù)。

      (2)本發(fā)明通過(guò)修改地址映射表,記錄“無(wú)效”的數(shù)據(jù)塊,減少了為計(jì)算校驗(yàn)塊所需的預(yù)讀操作,從而保證了真實(shí)負(fù)載的訪問(wèn)特性。

      (3)本發(fā)明在減少預(yù)讀操作后,使得數(shù)據(jù)頁(yè)為只寫頁(yè)的幾率增加,在此基礎(chǔ)上結(jié)合調(diào)節(jié)讀寫代價(jià)的技術(shù),進(jìn)一步提升固態(tài)盤陣列的讀寫性能。

      附圖說(shuō)明

      圖1為本發(fā)明實(shí)施例提供的基于固態(tài)盤陣列的數(shù)據(jù)處理方法流程示意圖;

      圖2為本發(fā)明實(shí)施例提供的基于固態(tài)盤陣列的數(shù)據(jù)處理系統(tǒng)架構(gòu)示意圖;

      圖3為本發(fā)明實(shí)施例提供的用戶請(qǐng)求處理流程示意圖;

      圖4為本發(fā)明實(shí)施例提供的數(shù)據(jù)恢復(fù)流程示意圖;

      圖5為本發(fā)明實(shí)施例提供的頁(yè)的訪問(wèn)類型判斷方法和調(diào)節(jié)頁(yè)讀寫代價(jià)的實(shí)例圖;

      圖6為本發(fā)明實(shí)施例提供的日志hash表數(shù)據(jù)結(jié)構(gòu)示意圖;

      圖7為本發(fā)明實(shí)施例提供的固態(tài)盤陣列成員盤的擴(kuò)展地址映射表示意圖。

      具體實(shí)施方式

      為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

      圖1為本發(fā)明實(shí)施例提供的基于固態(tài)盤陣列的數(shù)據(jù)處理方法流程示意圖,如圖1所示,包括步驟s10至步驟s40。

      s10,接收寫請(qǐng)求,指示固態(tài)盤陣列和日志盤寫入所述寫請(qǐng)求對(duì)應(yīng)的數(shù)據(jù);所述固態(tài)盤陣列包括n個(gè)成員盤,所述n個(gè)成員盤中任意兩個(gè)成員盤的邏輯地址范圍相同,所述n個(gè)成員盤采用異地更新策略寫入數(shù)據(jù),所述異地更新策略為前后兩次寫入的相同邏輯地址數(shù)據(jù)的物理地址不同,n為正整數(shù)。

      s20,通過(guò)哈希表指示所述日志盤中對(duì)應(yīng)的每個(gè)成員盤中最后一次寫入的數(shù)據(jù)。

      s30,在空閑時(shí)間、所述日志盤失效、所述日志盤的剩余空間低于第一閾值或有成員盤的剩余空間低于第二閾值時(shí),指示所述固態(tài)盤陣列根據(jù)每個(gè)邏輯地址對(duì)應(yīng)的n-1個(gè)成員盤上的數(shù)據(jù)更新每個(gè)邏輯地址對(duì)應(yīng)的校驗(yàn)信息,并將每個(gè)邏輯地址對(duì)應(yīng)的校驗(yàn)信息寫入對(duì)應(yīng)邏輯地址的成員盤中。

      s40,當(dāng)有成員盤失效時(shí),通過(guò)所述哈希表指示的日志盤中的數(shù)據(jù)恢復(fù)失效成員盤中最后一次寫入的數(shù)據(jù),以及通過(guò)未失效成員盤中不同邏輯地址上的數(shù)據(jù)和對(duì)應(yīng)邏輯地址的校驗(yàn)信息恢復(fù)失效成員盤中相應(yīng)邏輯地址上的數(shù)據(jù)。

      具體可參照下述圖2-圖7中的詳細(xì)介紹,在此不做贅述。

      圖2是本發(fā)明實(shí)施例提供的基于固態(tài)盤陣列的數(shù)據(jù)處理系統(tǒng)架構(gòu)示意圖,如圖2所示,存儲(chǔ)系統(tǒng)由固態(tài)盤陣列210、日志盤220和功能模塊100組成。固態(tài)盤陣列210由成員盤2101、2102、2013…210n組成raid5級(jí)別陣列,日志盤220包含一個(gè)固態(tài)盤2201,功能模塊100包括管理模塊110、監(jiān)控模塊120、鑒別模塊130、數(shù)據(jù)恢復(fù)模塊140、校驗(yàn)同步模塊150、請(qǐng)求處理模塊160和數(shù)據(jù)分發(fā)模塊170,其中n為正整數(shù)。

      管理模塊110為系統(tǒng)管理員提供一個(gè)配置參數(shù)的接口,以便設(shè)置日志盤空間使用閾值和系統(tǒng)其它參數(shù)。監(jiān)控模塊120負(fù)責(zé)監(jiān)控固態(tài)盤組200中各個(gè)固態(tài)盤空間使用情況,以及是否存在失效固態(tài)盤。鑒別模塊130可以鑒別出用戶訪問(wèn)的數(shù)據(jù)頁(yè)屬于只讀頁(yè)、只寫頁(yè)和交叉頁(yè)中的哪一種類型。數(shù)據(jù)恢復(fù)模塊140在固態(tài)盤陣列中出現(xiàn)固態(tài)盤失效時(shí)進(jìn)行數(shù)據(jù)恢復(fù)處理。校驗(yàn)同步模塊150在日志盤失效、或者使用空間達(dá)到閾值、或者系統(tǒng)空閑時(shí)對(duì)固態(tài)盤陣列進(jìn)行校驗(yàn)同步處理。請(qǐng)求處理模塊160負(fù)責(zé)處理用戶的請(qǐng)求。數(shù)據(jù)分發(fā)模塊170將請(qǐng)求發(fā)送到固態(tài)盤陣列和日志盤中。

      數(shù)據(jù)恢復(fù)模塊140、校驗(yàn)同步模塊150和請(qǐng)求處理模塊160都需要查詢和更新hash表180。hash表180用來(lái)記錄日志盤220中數(shù)據(jù)塊與固態(tài)盤陣列210之間的位置映射關(guān)系,該hash表保存在非易失性內(nèi)存中。

      圖2所示的數(shù)據(jù)處理系統(tǒng)還可包括更多或更少的部件,例如可包括訪問(wèn)調(diào)節(jié)模塊和校驗(yàn)同步模塊等其他部件,訪問(wèn)調(diào)節(jié)模塊用于當(dāng)所述請(qǐng)求處理模塊接收寫請(qǐng)求時(shí),若所述寫請(qǐng)求訪問(wèn)的數(shù)據(jù)頁(yè)為只寫頁(yè),則使用低代價(jià)處理所述寫請(qǐng)求;若所述寫請(qǐng)求訪問(wèn)的數(shù)據(jù)頁(yè)為交叉頁(yè),則使用中等代價(jià)處理所述寫請(qǐng)求;當(dāng)所述請(qǐng)求處理模塊接收讀請(qǐng)求時(shí),若所述讀請(qǐng)求訪問(wèn)的數(shù)據(jù)頁(yè)為只讀頁(yè),則確定對(duì)所述數(shù)據(jù)頁(yè)的前一次讀請(qǐng)求是否為低代價(jià),當(dāng)不是低代價(jià)的讀時(shí),在系統(tǒng)空閑且所述讀請(qǐng)求處理之前在所述數(shù)據(jù)頁(yè)插入一個(gè)高代價(jià)的寫請(qǐng)求。校驗(yàn)同步模塊,用于在空閑時(shí)間、日志盤失效、日志盤的剩余空間低于第一閾值或有成員盤的剩余空間低于第二閾值時(shí),依次取出哈希表的節(jié)點(diǎn),確定出對(duì)應(yīng)的條帶,讀出成員盤中條帶上所有的數(shù)據(jù)塊,計(jì)算出對(duì)應(yīng)的校驗(yàn)塊并在成員盤對(duì)應(yīng)條帶寫入校驗(yàn)塊,刪除該條帶上被更新過(guò)的數(shù)據(jù)塊在哈希表中的對(duì)應(yīng)條目,重復(fù)計(jì)算校驗(yàn)塊以及刪除哈希表中對(duì)應(yīng)的條目直到哈希表為空。

      如圖3所示,本發(fā)明實(shí)施例提供的用戶請(qǐng)求處理流程示意圖,包括以下步驟:

      (a)將用戶請(qǐng)求按照條帶進(jìn)行分解后,掛載到對(duì)應(yīng)的條帶上。

      (b)對(duì)有請(qǐng)求的條帶進(jìn)行處理,如果是讀請(qǐng)求,則跳轉(zhuǎn)到(f),否則繼續(xù)步驟(c)。

      (c)查找hash表180中是否有對(duì)應(yīng)的條目,如果沒(méi)有就創(chuàng)建一個(gè)新的條目,填充lba和log_lba后加入到hash表中,否則更改log_lba即可。

      (d)判斷要寫的數(shù)據(jù)頁(yè)所屬類型并作標(biāo)記,然后將寫請(qǐng)求克隆后,同時(shí)分發(fā)到固態(tài)盤陣列210的成員盤和日志盤220。

      (e)寫請(qǐng)求到達(dá)成員盤時(shí),首先通過(guò)鑒別模塊130判斷當(dāng)前訪問(wèn)請(qǐng)求的類型,然后動(dòng)態(tài)調(diào)節(jié)訪問(wèn)的代價(jià),接著判斷地址映射表230中對(duì)應(yīng)條目的old_ppn是否為空,如果為空則需要記錄被更新前的數(shù)據(jù)塊的物理位置,即將old_ppn的值設(shè)置為該寫請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)頁(yè)的物理頁(yè)號(hào)。

      (f)讀請(qǐng)求到達(dá)成員盤時(shí),首先通過(guò)鑒別模塊130判斷當(dāng)前訪問(wèn)請(qǐng)求的類型,然后動(dòng)態(tài)調(diào)節(jié)訪問(wèn)的代價(jià)。

      另外,檢驗(yàn)同步操作可能發(fā)生在以下幾種情況:日志盤220失效、日志盤220剩余空間達(dá)到閾值、固態(tài)盤陣列210的成員盤剩余空間達(dá)到閾值或系統(tǒng)空閑,本發(fā)明實(shí)施例提供的檢驗(yàn)同步操作具體步驟如下:

      (1.1)取出hash表180的頭節(jié)點(diǎn),計(jì)算出對(duì)應(yīng)的條帶。

      (1.2)讀出條帶上所有的數(shù)據(jù)塊,計(jì)算出新的校驗(yàn)塊,然后寫入新的校驗(yàn)塊。

      (1.3)刪除該條帶上被更新過(guò)的數(shù)據(jù)塊在hash表180中的對(duì)應(yīng)條目。

      (1.4)跳至步驟(1.1),直到hash表為空。

      另外,本發(fā)明實(shí)施例提供的固態(tài)盤陣列成員盤失效后的數(shù)據(jù)恢復(fù)步驟如圖4所示,固態(tài)盤陣列210成員盤失效后的數(shù)據(jù)恢復(fù)步驟具體如下:

      (2.1)對(duì)失效成員盤中的每個(gè)數(shù)據(jù)塊進(jìn)行恢復(fù),直到所有數(shù)據(jù)恢復(fù)完成。

      (2.2)如果失效數(shù)據(jù)塊在hash表180中有對(duì)應(yīng)的條目,則直接從日志盤中讀取對(duì)應(yīng)的數(shù)據(jù)塊作為恢復(fù)數(shù)據(jù)。

      (2.3)如果失效數(shù)據(jù)塊在hash表180中沒(méi)有對(duì)應(yīng)的條目,則使用條帶中其它數(shù)據(jù)塊和校驗(yàn)塊的舊數(shù)據(jù)進(jìn)行異或獲取。如果條帶中其它數(shù)據(jù)塊被更新過(guò)的,它們對(duì)應(yīng)的舊數(shù)據(jù)可以通過(guò)地址映射表230中增加的old_ppn域所指的位置讀取出來(lái)。

      (2.4)跳至步驟(2.1)。

      圖5為本發(fā)明實(shí)施例提供的頁(yè)的訪問(wèn)類型判斷方法和調(diào)節(jié)頁(yè)讀寫代價(jià)的一個(gè)實(shí)例250。

      研究表明,微軟研究院(microsoftresearch,msr)公開的很多真實(shí)負(fù)載都是由隨機(jī)小寫請(qǐng)求組成,并且這些負(fù)載還具有一些訪問(wèn)特性。如果我們規(guī)定超過(guò)95%的請(qǐng)求對(duì)一個(gè)頁(yè)的訪問(wèn)都是讀請(qǐng)求,那么這個(gè)頁(yè)是只讀頁(yè);超過(guò)95%的請(qǐng)求對(duì)一個(gè)頁(yè)的訪問(wèn)都是寫請(qǐng)求,那么這個(gè)頁(yè)是只寫頁(yè);如果一個(gè)頁(yè)既不是只讀頁(yè),也不是只寫頁(yè),那么這個(gè)頁(yè)是交叉頁(yè)。統(tǒng)計(jì)結(jié)果顯示,這些msr真實(shí)負(fù)載大部分請(qǐng)求訪問(wèn)的是只讀頁(yè)和只寫頁(yè),只有小部分請(qǐng)求訪問(wèn)交叉頁(yè)。組成固態(tài)盤的flash芯片讀寫代價(jià)(訪問(wèn)延遲)之間有一個(gè)相互關(guān)系,如果對(duì)一個(gè)頁(yè)使用高代價(jià)(高延遲)進(jìn)行寫,那么隨后對(duì)這個(gè)頁(yè)的讀延遲都是低代價(jià);如果對(duì)一個(gè)頁(yè)使用低代價(jià)(低延遲)進(jìn)行寫,那么隨后對(duì)這個(gè)頁(yè)的讀延遲都是高代價(jià);如果對(duì)一個(gè)頁(yè)使用中等代價(jià)(中等延遲)進(jìn)行寫,那么隨后對(duì)這個(gè)頁(yè)的度延遲就是中等代價(jià)。有些研究結(jié)合訪問(wèn)負(fù)載上述特性調(diào)節(jié)flash芯片的讀寫代價(jià)來(lái)提升單個(gè)固態(tài)盤的讀寫性能。

      實(shí)例250的窗口2501中當(dāng)前訪問(wèn)請(qǐng)求為w(寫請(qǐng)求),記錄的前一個(gè)訪問(wèn)請(qǐng)求也為w,因此該頁(yè)是一個(gè)只寫頁(yè),用一個(gè)l代價(jià)(低延遲)的寫來(lái)完成該請(qǐng)求。實(shí)例250的窗口2502中當(dāng)前訪問(wèn)請(qǐng)求為r(寫請(qǐng)求),記錄的前一個(gè)訪問(wèn)請(qǐng)求也是r,因此該頁(yè)是一個(gè)只讀頁(yè),而且前一個(gè)讀請(qǐng)求的延遲是l代價(jià)(低延遲),那么該讀請(qǐng)求代價(jià)不需要進(jìn)行調(diào)節(jié),也是一個(gè)l代價(jià)。實(shí)例250中有一個(gè)加粗和加下劃線的h代價(jià)和m代價(jià)(中等代價(jià)),表示的是該頁(yè)是只讀頁(yè),但是對(duì)應(yīng)的讀請(qǐng)求代價(jià)不是l(低代價(jià)),需要在系統(tǒng)空閑且這個(gè)讀請(qǐng)求完成之前,插入并執(zhí)行一個(gè)h代價(jià)(高代價(jià))的寫,這樣可以使得隨后只讀頁(yè)的讀請(qǐng)求的代價(jià)都是l代價(jià)(低延遲)。實(shí)例250的窗口2503和窗口2504的當(dāng)前請(qǐng)求和記錄的請(qǐng)求不一致,可以判斷出該頁(yè)是交叉頁(yè),讀寫當(dāng)前不需要進(jìn)行調(diào)節(jié)。窗口2503中的頁(yè)上次寫請(qǐng)求是一個(gè)低延遲的寫,隨后的讀請(qǐng)求就是高延遲。窗口2504中的頁(yè)上次寫請(qǐng)求是一個(gè)中等延遲的寫,隨后的讀請(qǐng)求就是中等延遲。

      圖6為本發(fā)明實(shí)施例提供的日志hash表180數(shù)據(jù)結(jié)構(gòu)示意圖。日志hash表180由若干個(gè)條目1801、1802、1803…180n組成,每個(gè)條目指向一個(gè)數(shù)據(jù)塊鏈表,以條目1801指向的第一個(gè)數(shù)據(jù)塊(每個(gè)數(shù)據(jù)塊大小為4kb)為例:lba18011表示數(shù)據(jù)塊在固態(tài)盤陣列210中的邏輯塊地址(logicalblockaddress,lba);log_lba18012表示數(shù)據(jù)塊在日志盤220中的邏輯塊地址;next18013指向下一個(gè)數(shù)據(jù)塊。

      圖7所示為固態(tài)盤陣列210中的成員盤的地址映射表230主要數(shù)據(jù)結(jié)構(gòu)示意圖。地址映射表230主要由3個(gè)域lpn2301、ppn2302和old_ppn2303組成。lpn2301為數(shù)據(jù)頁(yè)的邏輯頁(yè)號(hào)(logicalpagenumber,lpn),ppn2302為數(shù)據(jù)頁(yè)的物理頁(yè)號(hào)(physicalpagenumber,ppn),old_ppn2303為該數(shù)據(jù)頁(yè)對(duì)應(yīng)的無(wú)效數(shù)據(jù)頁(yè)的物理頁(yè)號(hào)。

      本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

      當(dāng)前第1頁(yè)1 2 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1