鬼佬大哥大
  • / 14
  • 下載費用:30 金幣  

一種固態盤陣列的數據布局方法.pdf

摘要
申請專利號:

CN201510540940.4

申請日:

2015.08.28

公開號:

CN105045540A

公開日:

2015.11.11

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||實質審查的生效IPC(主分類):G06F 3/06申請日:20150828|||公開
IPC分類號: G06F3/06 主分類號: G06F3/06
申請人: 廈門大學
發明人: 吳素貞; 毛波; 楊偉健; 陳驍; 林燕萍
地址: 361005福建省廈門市思明南路422號
優先權:
專利代理機構: 廈門南強之路專利事務所(普通合伙)35200 代理人: 馬應森
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201510540940.4

授權公告號:

||||||

法律狀態公告日:

2017.10.17|||2015.12.09|||2015.11.11

法律狀態類型:

授權|||實質審查的生效|||公開

摘要

一種固態盤陣列的數據布局方法,涉及計算機存儲領域。固態盤陣列上設置四個功能模塊即主控模塊、請求處理模塊、數據映射模塊、數據讀寫模塊和一致性維護模塊,并設置一個數據映射表和多分塊存儲區域。包括初始化步驟、請求處理步驟、數據映射步驟、數據讀/寫步驟、一致性維護步驟和結束步驟。充分利用固態盤陣列的多種不同分塊大小在讀寫操作和請求大小上的優勢,綜合使用多個分塊大小而非單一地使用某一種分塊大小,以提高固態盤陣列的整體性能。能夠和固態盤陣列功能模塊協同工作,并且可以被嵌入到現有的固態盤陣列系統中,包括硬件和軟件固態盤陣列系統。適用于構造具有高性能、高可用性和高可靠性的固態盤存儲系統。

權利要求書

1.一種固態盤陣列的數據布局方法,其特征在于包括以下步驟:
(1)初始化步驟,具體過程如下:
(1.1)主控模塊打開已有的固態盤陣列或創建新的固態盤陣列,判斷該固態盤陣列是否
為新創建的固態盤陣列,若是,則轉過程(1.2),否則轉過程(1.3);
(1.2)主控模塊根據用戶指令,將新創建的固態盤陣列劃分為3個分區,容量比例設置
為2∶1∶1,分區號分別設置為0、1和2,按照4KB、8KB和32KB的分塊大小對這3個分區
重新進行固態盤陣列的條帶化并新建數據映射表,轉步驟(2);
(1.3)主控模塊讀取保存在固態盤陣列的成員固態盤超級塊中的數據映射表和分區信
息,轉步驟(2);
(2)請求處理步驟,具體過程如下:
(2.1)請求處理模塊判斷固態盤陣列的請求等待隊列中是否有請求,若有,則獲取一個
請求并轉過程(2.2),否則轉過程(2.3);
(2.2)請求處理模塊獲取該請求的偏移量、請求大小和請求類型,轉步驟(3);
(2.3)記錄超時時間,若超時時間低于系統設置的閾值(如10s)時,則轉過程(2.1),
否則說明此時系統處于空閑狀態,轉步驟(5);
(3)數據映射步驟,具體過程如下:
(3.1)數據映射模塊判斷該請求是否是讀請求,若是,則轉過程(3.5),否則轉過程(3.2);
(3.2)數據映射模塊根據請求的偏移量及請求大小,判斷該請求的數據塊是否在當前數
據映射表中,若是,則轉過程(3.4),否則,從分區大小為4KB的分區中獲取一個內部塊偏
移,轉過程(3.3);
(3.3)數據映射模塊向數據映射表中寫入新數據項,數據項中分區號置為0、時間戳設
置為當前系統時間、計數器初始化為0;判斷請求大小,若請求大小大于16KB,則將該數據
項放入待維護隊列;操作類型設置為“寫入”,轉步驟(4);
(3.4)數據映射模塊根據請求偏移量檢索數據映射表,獲取對應的數據項,并設置操作
類型為“更新”,轉步驟(4);
(3.5)數據映射模塊根據請求偏移量檢索數據映射表,獲取對應的數據項,并設置操作
類型為“讀取”,轉步驟(4);
(4)數據讀寫步驟,具體過程如下:
(4.1)數據讀寫模塊判斷操作類型是否是“寫入”,若是,則轉過程(4.2),否則判斷
數據類型是否是“讀取”,若是,則轉過程(4.3),否則轉過程(4.4);
(4.2)數據讀寫模塊根據數據項中的“內部塊偏移量”寫入數據,轉步驟(2);
(4.3)數據讀寫模塊判斷該數據項是否正在進行一致性維護,若是,則從緩沖區讀出數
據,否則根據該數據項所在分區的“內部塊偏移量”從固態盤陣列讀出數據,轉步驟(2);
(4.4)數據讀寫模塊判斷該數據項是否正在進行一致性維護,若是,則更新緩沖區中大
小為“請求大小”的數據為待寫入的數據;否則根據該數據項所在分區的“內部塊偏移量”
向固態盤陣列寫入數據,并判斷該數據項的時間戳與當前系統時間的差值是否小于系統設置
的超時時間(如2000ms),若是,則更新該數據項的計數器即遞增1,否則將計數器重置為0;
更新該數據項的時間戳為當前系統時間,轉步驟(2);
(5)一致性維護步驟,具體過程如下:
(5.1)一致性維護模塊判斷一致性維護隊列中是否有待維護的項目,若有,則從一致性
維護隊列中獲取一個待維護項目,轉過程(5.2),否則轉步驟(2);
(5.2)一致性維護模塊判斷待維護項目的計數器值是否大于系統設置的閾值(如20),
若是,則表明該項目近期被頻繁更新,無需遷移至其他分塊大小的區域,轉過程(5.4),否
則表明該項目為不經常更新的項,需要將以該項目的分區號下的“內部塊偏移量”為起始地
址、“請求大小”為長度的數據遷移至其他分塊大小的區域,轉過程(5.3);
(5.3)一致性維護模塊把以該維護項目所在“分區號”的“內部塊偏移量”為起始地址、
“請求大小”為長度的數據寫入緩沖區中,判斷該項目的數據大小是否小于80KB,若是,則
從8KB大小的分區中獲取一個內部塊偏移并設置分區號為1,否則從32KB大小的分區中獲取
一個內部塊偏移量并設置分區號為2;然后將該數據項對應的數據遷移到以“內部塊偏移量”
為起始地址的位置并更新數據映射表,轉過程(5.1);
(5.4)一致性維護模塊將該維護項目的計數器置為0,時間戳更新為當前系統時間,轉
過程(5.1);
(6)結束步驟,當用戶發出指令關閉固態盤陣列時,具體過程如下:
主控模塊將數據映射表保存到固態盤陣列的超級塊中,關閉固態盤陣列設備,釋放相關
的資源。
2.如權利要求1所述一種固態盤陣列的數據布局方法,其特征在于在步驟(1)過程(1.1)
中,所述固態盤陣列上設有主控模塊、請求處理模塊、數據映射模塊、數據讀寫模塊和一致
性維護模塊,并設置一個數據映射表和多分塊存儲區域。
3.如權利要求1所述一種固態盤陣列的數據布局方法,其特征在于在步驟(1)過程(1.2)
中,所述數據映射表包括M條映射信息,每條映射信息由6個數據項構成,各數據項依次為
請求偏移量rq_Offset、內部塊偏移量in_Offset、請求大小Size、分區號md_Num、時間戳
TS和計數器UC;M為大于等于0的自然數。

說明書

一種固態盤陣列的數據布局方法

技術領域

本發明涉及計算機存儲領域,尤其是涉及一種固態盤陣列的數據布局方法。

背景技術

磁盤是目前主流的存儲介質,廣泛應用于個人電腦、互聯網和企業級數據存儲等領域,
但是由于其機械特性的限制,讀寫性能無法進一步獲得更高的提升,基于磁盤的存儲設備逐
步成為存儲系統的性能瓶頸。近年來,固態盤由于其讀寫性能高、能耗低、防震性好以及日
漸低廉的價格等優點,逐漸成為磁盤的有力替代品。與磁盤相比,基于閃存的固態盤沒有機
械部件(如磁頭、轉軸等),其內部由半導體器件組成,因此固態盤對外服務時無需尋道時間
等由機械運動引發的延時,固態盤的性能相對于磁盤有極大的提升,具體表現為高隨機讀寫
性能、高可靠性和高能效。但是由于固態盤內部閃存芯片的特性,固態盤也存在著局限性,
在寫入數據時,若原數據頁中存在著有效數據,無法在原位置中覆蓋寫入新數據。固態盤采
取的是異地更新的策略,即首先將原數據置為無效,把待更新的數據寫入其它空閑頁中;當
固態盤中無效頁越來越多、空閑頁數量低于系統所設置閾值時,會觸發垃圾回收操作,將待
擦除塊中的有效數據拷貝到空閑頁后擦除該閃存塊,從而釋放更多的空間來保存新的數據。
然而,閃存芯片的擦除次數是有限的,影響了固態盤的使用壽命與可靠性,在企業級服務器
的應用場景下將威脅到存儲系統的可靠性。

在企業級服務器的應用場景下,磁盤陣列技術被廣泛用于提升磁盤存儲系統的性能和可
靠性。相應地,將磁盤陣列技術應用于固態盤,可以構建大容量、高性能、高可靠的固態盤
存儲系統。在固態盤陣列中,數據分布在不同固態盤上,實現了同步化的存取操作,增加了
讀寫操作的并行性,提高了固態盤存儲系統的性能;另外,由于固態盤陣列引入了數據冗余,
也提高了固態盤存儲系統的可靠性。而固態盤陣列的分塊大小作為固態盤陣列性能的重要影
響因素之一,決定著固態盤陣列中數據的分割粒度。目前,關于固態盤陣列中最優分塊大小
的研究尚處于探索階段,如果直接采用基于磁盤陣列的最優分塊大小,由于沒有考慮到固態
盤與磁盤內部結構的差異,固態盤陣列的性能將受到限制。

FarzanehRajaeiSalmasi,HosseinAsadi,andMajidGhasemiGol.ImpactofStripe
UnitSizeonPerformanceandEnduranceofSSD-BasedRAIDArrays.ScientiaIranica,
TransactionsD,2013.20(6):1978-1998.

發明內容

本發明的目的在于提供可綜合固態盤陣列的不同分塊大小在讀寫操作和請求大小上的優
勢,以發揮固態盤陣列最優性能的一種固態盤陣列的數據布局方法。

本發明包括以下步驟:

(1)初始化步驟,具體過程如下:

(1.1)主控模塊打開已有的固態盤陣列或創建新的固態盤陣列,判斷該固態盤陣列是否
為新創建的固態盤陣列,若是,則轉過程(1.2),否則轉過程(1.3);

(1.2)主控模塊根據用戶指令,將新創建的固態盤陣列劃分為3個分區,容量比例設置
為2∶1∶1,分區號分別設置為0、1和2,按照4KB、8KB和32KB的分塊大小對這3個分區
重新進行固態盤陣列的條帶化并新建數據映射表,轉步驟(2);

(1.3)主控模塊讀取保存在固態盤陣列的成員固態盤超級塊中的數據映射表和分區信
息,轉步驟(2);

(2)請求處理步驟,具體過程如下:

(2.1)請求處理模塊判斷固態盤陣列的請求等待隊列中是否有請求,若有,則獲取一個
請求并轉過程(2.2),否則轉過程(2.3);

(2.2)請求處理模塊獲取該請求的偏移量、請求大小和請求類型,轉步驟(3);

(2.3)記錄超時時間,若超時時間低于系統設置的閾值(如10s)時,則轉過程(2.1),
否則說明此時系統處于空閑狀態,轉步驟(5);

(3)數據映射步驟,具體過程如下:

(3.1)數據映射模塊判斷該請求是否是讀請求,若是,則轉過程(3.5),否則轉過程(3.2);

(3.2)數據映射模塊根據請求的偏移量及請求大小,判斷該請求的數據塊是否在當前數
據映射表中,若是,則轉過程(3.4),否則,從分區大小為4KB的分區中獲取一個內部塊偏
移,轉過程(3.3);

(3.3)數據映射模塊向數據映射表中寫入新數據項,數據項中分區號置為0、時間戳設
置為當前系統時間、計數器初始化為0;判斷請求大小,若請求大小大于16KB,則將該數據
項放入待維護隊列;操作類型設置為“寫入”,轉步驟(4);

(3.4)數據映射模塊根據請求偏移量檢索數據映射表,獲取對應的數據項,并設置操作
類型為“更新”,轉步驟(4);

(3.5)數據映射模塊根據請求偏移量檢索數據映射表,獲取對應的數據項,并設置操作
類型為“讀取”,轉步驟(4);

(4)數據讀寫步驟,具體過程如下:

(4.1)數據讀寫模塊判斷操作類型是否是“寫入”,若是,則轉過程(4.2),否則判斷
數據類型是否是“讀取”,若是,則轉過程(4.3),否則轉過程(4.4);

(4.2)數據讀寫模塊根據數據項中的“內部塊偏移量”寫入數據,轉步驟(2);

(4.3)數據讀寫模塊判斷該數據項是否正在進行一致性維護,若是,則從緩沖區讀出數
據,否則根據該數據項所在分區的“內部塊偏移量”從固態盤陣列讀出數據,轉步驟(2);

(4.4)數據讀寫模塊判斷該數據項是否正在進行一致性維護,若是,則更新緩沖區中大
小為“請求大小”的數據為待寫入的數據;否則根據該數據項所在分區的“內部塊偏移量”
向固態盤陣列寫入數據,并判斷該數據項的時間戳與當前系統時間的差值是否小于系統設置
的超時時間(如2000ms),若是,則更新該數據項的計數器即遞增1,否則將計數器重置為0;
更新該數據項的時間戳為當前系統時間,轉步驟(2);

(5)一致性維護步驟,具體過程如下:

(5.1)一致性維護模塊判斷一致性維護隊列中是否有待維護的項目,若有,則從一致性
維護隊列中獲取一個待維護項目,轉過程(5.2),否則轉步驟(2);

(5.2)一致性維護模塊判斷待維護項目的計數器值是否大于系統設置的閾值(如20),
若是,則表明該項目近期被頻繁更新,無需遷移至其他分塊大小的區域,轉過程(5.4),否
則表明該項目為不經常更新的項,需要將以該項目的分區號下的“內部塊偏移量”為起始地
址、“請求大小”為長度的數據遷移至其他分塊大小的區域,轉過程(5.3);

(5.3)一致性維護模塊把以該維護項目所在“分區號”的“內部塊偏移量”為起始地址、
“請求大小”為長度的數據寫入緩沖區中,判斷該項目的數據大小是否小于80KB,若是,則
從8KB大小的分區中獲取一個內部塊偏移并設置分區號為1,否則從32KB大小的分區中獲取
一個內部塊偏移量并設置分區號為2;然后將該數據項對應的數據遷移到以“內部塊偏移量”
為起始地址的位置并更新數據映射表,轉過程(5.1);

(5.4)一致性維護模塊將該維護項目的計數器置為0,時間戳更新為當前系統時間,轉
過程(5.1);

(6)結束步驟,當用戶發出指令關閉固態盤陣列時,具體過程如下:

主控模塊將數據映射表保存到固態盤陣列的超級塊中,關閉固態盤陣列設備,釋放相關
的資源。

在步驟(1)過程(1.1)中,所述固態盤陣列上設有主控模塊、請求處理模塊、數據映
射模塊、數據讀寫模塊和一致性維護模塊,并設置一個數據映射表和多分塊存儲區域。

在步驟(1)過程(1.2)中,所述數據映射表包括M條映射信息,每條映射信息由6個
數據項構成,各數據項依次為請求偏移量rq_Offset、內部塊偏移量in_Offset、請求大小
Size、分區號md_Num、時間戳TS和計數器UC;M為大于等于0的自然數。

本發明包括初始化步驟、請求處理步驟、數據映射步驟、數據讀寫步驟、一致性維護步
驟和結束步驟。基于充分利用固態盤陣列的多種不同分塊大小的優勢,并根據讀寫請求實時
特性的不同,將數據塊布局于性能最優的存儲區域。對于讀請求而言,最優分塊大小可以充
分發揮固態盤陣列的最佳并行性,而對于寫請求而言,最優分塊大小可以在最大程度上減少
寫入請求引發的固態盤陣列的校驗塊更新。本發明綜合了多個分塊大小的優勢而不是單一地
使用一種分塊大小,從而提高了固態盤陣列的性能。

另外,本發明所述的一種固態盤陣列的數據布局方法能夠和固態盤陣列功能模塊協同工
作,并且可以被嵌入到現有的固態盤陣列系統中,包括硬件和軟件固態盤陣列系統。適用于
構造具有高性能、高可用性和高可靠性的固態盤存儲系統。

附圖說明

圖1為本發明的示意圖;

圖2為本發明的數據映射表中一條映射信息的數據項示意圖;

圖3為本發明初始化步驟的過程示意圖;

圖4為本發明請求處理步驟的過程示意圖;

圖5為本發明數據映射步驟的過程示意圖;

圖6為本發明數據讀寫步驟的過程示意圖;

圖7為本發明一致性維護步驟的過程示意圖;

圖8為本發明結束步驟的過程示意圖。

具體實施方式

下面以4塊固態盤組成的陣列級別5為例,結合附圖對本發明作進一步說明。

圖1為本發明的示意圖:初始化步驟完成后進入請求處理步驟,然后進入順序的數據映
射步驟與數據讀寫步驟或者進入一致性維護步驟,當用戶發出關閉指令時,進入結束步驟。

圖2為本發明的數據映射表中一條映射信息的數據項示意圖:數據映射表中,每條映射
信息由6個數據項構成,分別為請求偏移量rq_Offset、內部塊偏移量in_Offset、請求大小
Size、分區號md_Num、時間戳TS和計數器UC。

圖3為本發明初始化步驟的過程示意圖:主控模塊根據用戶指令打開已有的固態盤陣列
或者創建新的固態盤陣列,判斷固態盤陣列是否是新創建的,若是,則主控模塊根據用戶指
令,將新創建的固態盤陣列劃分為3個分區,容量比例設置為2∶1∶1,分區號分別設置為0、
1和2,按照4KB、8KB和32KB的分塊大小對這3個分區重新進行固態盤陣列的條帶化并新建
數據映射表;否則讀取保存在固態盤陣列的成員固態盤超級塊中的數據映射表和分區信息。

圖4為本發明請求處理步驟的過程示意圖:請求處理模塊判斷固態盤陣列的請求等待隊
列中是否有請求,若有則獲取一個請求并獲取該請求的偏移量、請求大小和請求類型,進入
數據映射步驟;否則記錄超時時間并判斷超時時間是否低于系統設置的閾值(如10s),若是,
則繼續判斷固態盤陣列的請求等待隊列中是否有請求,否則說明此時系統處于空閑狀態,進
入一致性維護步驟;

圖5為本發明數據映射步驟的過程示意圖:數據映射模塊判斷該請求是否是讀請求,若
是,則根據請求偏移量檢索數據映射表,獲取對應的數據項,并設置操作類型為“讀取”,進
入數據讀寫步驟;否則根據請求的偏移量及請求大小,判斷該請求的數據塊是否在當前數據
映射表中,若是,則根據請求偏移量檢索數據映射表獲取對應的數據項,設置操作類型為“更
新”,進入數據讀寫步驟;否則從分區大小為4KB的分區中獲取一個內部塊偏移,向數據映射
表中寫入新數據項,數據項中分區號置為0、時間戳設置為當前系統時間、計數器初始化為0;
判斷請求大小,若請求大小大于16KB,則將該數據項放入待維護隊列;設置操作類型為“寫
入”,進入數據讀寫步驟;

圖6為本發明數據讀寫步驟的過程示意圖:數據讀寫模塊判斷操作類型是否是“寫入”,
若是,則根據數據項中的“內部塊偏移量”寫入數據,返回請求處理步驟;否則判斷數據類
型是否是“讀取”,若是,則判斷該數據項是否正在進行一致性維護,若是,則從緩沖區讀出
數據,否則根據該數據項所在分區的“內部塊偏移量”從固態盤陣列讀出數據,返回請求處
理步驟;否則若操作類型不是“讀取”則判斷該數據項是否正在進行一致性維護,若是,則
更新緩沖區中大小為“請求大小”的數據為待寫入的數據,否則根據該數據項所在分區的“內
部塊偏移量”向固態盤陣列寫入數據,并判斷該數據項的時間戳與當前系統時間的差值是否
小于系統設置的超時時間(如2000ms),若是,則更新該數據項的計數器即遞增1,否則將計
數器重置為0;更新該數據項的時間戳為當前系統時間,返回請求處理步驟;

圖7為本發明一致性維護步驟的過程示意圖:一致性維護模塊判斷一致性維護隊列中是
否有待維護的項目,若沒有則返回請求處理步驟,否則從一致性維護隊列中獲取一個待維護
項目,判斷該項目的計數器值是否大于系統設置的閾值(如20),若是,則表明該項目近期
被頻繁更新,無需遷移至其他分塊大小的區域,一致性維護模塊將該維護項目的計數器置為
0、時間戳更新為當前系統時間;否則表明該項目為不經常更新的項,需要將以該項目的分區
號下的“內部塊偏移量”為起始地址、“請求大小”為長度的數據遷移至其他分塊大小的區域,
一致性維護模塊把以該維護項目所在“分區號”的“內部塊偏移量”為起始地址、“請求大小”
為長度的數據寫入緩沖區中,判斷該項目的數據大小是否小于80KB,若是,則從8KB大小的
分區中獲取一個內部塊偏移并設置分區號為1,否則從32KB大小的分區中獲取一個內部塊偏
移量并設置分區號為2;然后將該數據項對應的數據遷移到以“內部塊偏移量”為起始地址
的位置并更新數據映射表;

圖8為本發明結束步驟的過程示意圖:主控模塊將數據映射表保存到固態盤陣列各成員
固態盤的超級塊中,然后關閉該固態盤陣列設備,釋放相關的資源。

關 鍵 詞:
一種 固態 陣列 數據 布局 方法
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:一種固態盤陣列的數據布局方法.pdf
鏈接地址:http://www.wwszu.club/p-6401451.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
鬼佬大哥大