亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于固態(tài)盤陣列的數(shù)據(jù)處理方法及系統(tǒng)與流程

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

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



背景技術(shù):

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

附圖說明

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

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

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

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

圖5為本發(fā)明實(shí)施例提供的頁的訪問類型判斷方法和調(diào)節(jié)頁讀寫代價(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í)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(f)讀請求到達(dá)成員盤時,首先通過鑒別模塊130判斷當(dāng)前訪問請求的類型,然后動態(tài)調(diào)節(jié)訪問的代價(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ì)算出對應(yīng)的條帶。

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

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

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

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

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

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

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

(2.4)跳至步驟(2.1)。

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

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

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

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

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

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

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