欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

存儲系統(tǒng)、從存儲系統(tǒng)讀取數(shù)據(jù)的方法及寫入數(shù)據(jù)的方法

文檔序號:6575655閱讀:176來源:國知局
專利名稱:存儲系統(tǒng)、從存儲系統(tǒng)讀取數(shù)據(jù)的方法及寫入數(shù)據(jù)的方法
技術(shù)領(lǐng)域
本發(fā)明涉及存儲技術(shù)領(lǐng)域,尤其涉及一種存儲系統(tǒng)、從存儲系統(tǒng)讀取數(shù)據(jù)的方 法及寫入數(shù)據(jù)的方法。
背景技術(shù)
廉價(jià)磁盤陣列(RedundantArraysoHnexpensive Disks,RAID)通過把多塊獨(dú)立的硬盤(物理硬盤)按不同的方式組合起來形成一個(gè)硬盤組(邏輯硬盤),以提供比單個(gè)硬 盤更高的存儲性能以及提供數(shù)據(jù)備份功能。
隨著RAID技術(shù)的不斷發(fā)展,出現(xiàn)了按RAID5級別模式構(gòu)建的硬盤組,即將數(shù) 據(jù)和校驗(yàn)位都以間隔分布的方式存儲在所有的硬盤上,從而取得更好的負(fù)載平衡。該 硬盤組也即一個(gè)邏輯硬盤,為便于描述,這里按構(gòu)建級別對邏輯硬盤進(jìn)行命名,如按 RAID5級別構(gòu)建得到的邏輯硬盤稱為RAID5硬盤。按RAIDl級別構(gòu)建得到的邏輯硬盤 稱為RAIDl硬盤等。為了提高RAID5級別模式下磁盤陣列即RAID5硬盤的響應(yīng)能力, 存儲系統(tǒng)一般會采用緩存(CACHE)技術(shù)。
現(xiàn)有技術(shù)中,一種方法是在存儲系統(tǒng)中采用隨機(jī)訪問存儲器(RandomAccess Memory, RAM)作為高速緩存,但是RAM屬于易失性儲存介質(zhì),所以采用緩存寫回方 式的存儲系統(tǒng)必須具有備用電池,以保證掉電時(shí)RAM中的數(shù)據(jù)能夠完整地寫回磁盤陣 列。但是,采用RAM作為高速緩存限制了緩存空間的大小,同時(shí)備用電池的使用增加了 成本及設(shè)備體積。而且,對于雙控系統(tǒng),兩個(gè)控制器都必須為對端準(zhǔn)備一個(gè)鏡像緩存。 無論哪個(gè)控制器,只要往本端的緩存中寫數(shù)據(jù),都必須同時(shí)啟動鏡像通道將更新數(shù)據(jù)寫 入對端的鏡像緩存,以保證控制器出現(xiàn)故障需要切換時(shí),另一控制器可以完全獲得故障 發(fā)生時(shí)緩存中的數(shù)據(jù)。這樣,主機(jī)的每次寫IO操作的數(shù)據(jù)都必須鏡像,從而降低了雙控 系統(tǒng)的性能,并使得兩個(gè)控制器耦合性很強(qiáng)不利于存儲系統(tǒng)的擴(kuò)展。
另一種方法將固態(tài)硬盤MolidStateDisk,SSD)配置為磁盤陣列即存儲系統(tǒng)的緩 存。但是,將SSD配置為緩存的存儲系統(tǒng),復(fù)雜度較高。發(fā)明內(nèi)容
本發(fā)明實(shí)施例提出一種存儲系統(tǒng)、從存儲系統(tǒng)讀取數(shù)據(jù)的方法及寫入數(shù)據(jù)的方 法,以降低存儲系統(tǒng)的復(fù)雜度。
本發(fā)明實(shí)施例提供了一種存儲系統(tǒng),包括控制器及劃分有廉價(jià)磁盤陣列條帶的 第一硬盤,其中,還包括
固態(tài)硬盤組,所述固態(tài)硬盤組被分配給所述第一硬盤的邏輯單元編號對應(yīng)的存 儲空間;所述固態(tài)硬盤組被劃分為廉價(jià)磁盤陣列條帶的集合;所述固態(tài)硬盤組的廉價(jià)磁 盤陣列條帶與所述第一硬盤的廉價(jià)磁盤陣列條帶具有相同的條帶深度及條帶尺寸;
所述控制器保存有用于表示所述存儲空間與所述固態(tài)硬盤組映射關(guān)系的哈希映 射表;所述哈希映射表的表項(xiàng)包含索引、指針域及位圖域;
所述控制器還保存有解析函數(shù),所述解析函數(shù)用于將讀寫請求中的起始地址解 析為所述哈希映射表的索引。
本發(fā)明實(shí)施例還提供了一種從存儲系統(tǒng)讀取數(shù)據(jù)的方法,包括
接收讀請求;
以第一硬盤的廉價(jià)磁盤陣列條帶為單位對所述讀請求中的地址進(jìn)行劃分,得到 廉價(jià)磁盤陣列條帶地址;
解析所述廉價(jià)磁盤陣列條帶地址中的起始地址,獲得相應(yīng)的哈希映射表的表項(xiàng) 的索引;所述哈希映射表的表項(xiàng)包含索引、指針域及位圖域;
當(dāng)所述索引所在的哈希映射表的表項(xiàng)中的指針域非空時(shí),將所述起始地址與所 述表項(xiàng)中的指針域的值進(jìn)行比較;
當(dāng)所述起始地址與所述表項(xiàng)中指針域的值之差小于所述廉價(jià)磁盤陣列條帶的尺 寸時(shí),從所述表項(xiàng)的位圖域?qū)?yīng)的固態(tài)硬盤組的條帶單元中讀出數(shù)據(jù);所述固態(tài)硬盤組 被分配給所述第一硬盤的邏輯單元編號對應(yīng)的存儲空間。
本發(fā)明實(shí)施例還提供了一種向存儲系統(tǒng)寫入數(shù)據(jù)的方法,包括
接收寫請求;
以第一硬盤的廉價(jià)磁盤陣列條帶為單位對所述寫請求中的地址進(jìn)行劃分,得到 廉價(jià)磁盤陣列條帶地址;
解析所述廉價(jià)磁盤陣列條帶地址中的起始地址,得到相應(yīng)的哈希映射表的表項(xiàng) 的索引,所述哈希映射表的表項(xiàng)包含索引、指針域及位圖域;
將所述廉價(jià)磁盤陣列條帶地址對應(yīng)的數(shù)據(jù)寫入所述索引所在表項(xiàng)對應(yīng)的固態(tài)硬 盤組的條帶單元;所述固態(tài)硬盤組被分配給所述第一硬盤的邏輯單元編號對應(yīng)的存儲空 間;
更新所述哈希映射表的表項(xiàng)。
上述實(shí)施例中,存儲系統(tǒng)通過哈希映射表將SSD組作為緩存,使得存儲系統(tǒng)對 于訪問請求的處理無需考慮所訪問數(shù)據(jù)的冷熱情況,降低了存儲系統(tǒng)的復(fù)雜度。并且, 對于一段時(shí)間內(nèi)頻繁訪問和更新的數(shù)據(jù)能夠直接命中硬盤緩存(DISK CACHE)即SSD 組,提高了存儲系統(tǒng)的響應(yīng)能力。同時(shí),由于硬盤緩存是非易失性存儲介質(zhì),掉電后數(shù) 據(jù)不會丟失,因而存儲系統(tǒng)不用再具備備用電池,節(jié)約了成本。且由于硬盤緩存的有效 空間比RAM大很多,進(jìn)一步增加了訪問數(shù)據(jù)在緩存中的停留時(shí)間,增大了合并的可能 性。
下面通過附圖和實(shí)施例,對本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。


為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對本發(fā)明實(shí)施例描述中所 需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí) 施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些 附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的存儲系統(tǒng)的結(jié)構(gòu)示意圖2為本發(fā)明實(shí)施例提供的存儲系統(tǒng)中按RAID 5級別構(gòu)建的磁盤陣列示意圖3為本發(fā) 明實(shí)施例提供的存儲系統(tǒng)中SSD按RAID1+0級別構(gòu)建的磁盤陣列示 意圖;圖4為本發(fā)明實(shí)施例提供的存儲系統(tǒng)中哈希映射表的映射示意圖;圖5為本發(fā)明實(shí)施例提供的一種從存儲系統(tǒng)讀取數(shù)據(jù)的方法的流程圖;圖6為本發(fā)明實(shí)施例提供的一種向存儲系統(tǒng)寫入數(shù)據(jù)的方法的流程圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、 完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施 例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得 的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。圖1為本發(fā)明實(shí)施例提供的存儲系統(tǒng)的結(jié)構(gòu)示意圖。該系統(tǒng)可包括控制器 11、第一硬盤12及為第一硬盤12的LUN對應(yīng)的存儲空間分配的固態(tài)硬盤即SSD組13。 第一硬盤12可為RAID 5硬盤、RAIDO硬盤、RAIDl硬盤等。假設(shè)第一硬盤12被分區(qū), 則每個(gè)分區(qū)都有自己的LUN,LUN對應(yīng)的存儲空間也即LUN分區(qū)。如為第一硬盤12中 的某一個(gè)分區(qū)分配SSD組13,作為第一硬盤12的緩存。則SSD組13被劃分為RAID條 帶如RAID1+0條帶、RAIDO條帶的集合;且SSD組13的RAID條帶與所述第一硬盤12 的RAID條帶具有相同的條帶深度及條帶尺寸。當(dāng)SSD組13被劃分為RAID1+0條 帶時(shí),SSD組13的RAID1+0條帶中還可包含預(yù)留的校驗(yàn)數(shù)據(jù)的條帶單元即校驗(yàn)單元,以 及各條帶單元的鏡像。則校驗(yàn)單元及其鏡像統(tǒng)稱為校驗(yàn)單元鏡像對,其他條帶單元及其 鏡像統(tǒng)稱為條帶單元鏡像對??刂破?1保存有用于表示所述存儲空間也即第一硬盤12中的某一 LUN分區(qū) 與所述SSD組13映射關(guān)系的哈希映射表。所述哈希映射表的表項(xiàng)包含索引、指針域及 位圖域;所述索引用于區(qū)分所述哈希映射表的不同表項(xiàng);所述指針域指向所述磁盤中的 RAID條帶;所述位圖域用于表示SSD組13中對應(yīng)的條帶單元是否存儲有所述指針域指 向的RAID條帶。例如,當(dāng)從RAID5硬盤中創(chuàng)建一個(gè)LUN分區(qū)時(shí),為該LUN分區(qū)分配由SSD構(gòu)
建的磁盤陣列即SSD組作為緩存。其中,RAID5硬盤可以采用左對齊等格式設(shè)置校驗(yàn)單元。該SSD組可按RAID1+0級別構(gòu)建,即可被劃分為RAID1+0條帶,成為RAID1+0 條帶的集合。這些RAID1+0條帶與LUN中的RAID5條帶具有相同的分條深度和條帶尺 寸。并且每個(gè)RAID1+0條帶包含一個(gè)預(yù)留的校驗(yàn)單元鏡像對,用于解決寫洞(write-hole) 問題。如圖2、圖3所示。圖2為本發(fā)明實(shí)施例提供的存儲系統(tǒng)中按RAID 5級別構(gòu)建的 磁盤陣列示意圖。圖3為本發(fā)明實(shí)施例提供的存儲系統(tǒng)中SSD按RAID1+0級別構(gòu)建的磁 盤陣列示意圖。圖2中第一硬盤由硬盤0 硬盤3按RAID5級別構(gòu)建而成,RAID5條帶 格式為3D+1P。對應(yīng)地,圖3中LUN分區(qū)的SSD組由SSDO、SSDl及SSD2按RAID 1+0 級別構(gòu)建而成,各RAID1+0條帶包含3個(gè)條帶單元鏡像對。各RAID1+0條帶還可進(jìn)一 步包含一個(gè)校驗(yàn)單元鏡像對(Pre-P)。圖4為本發(fā)明實(shí)施例提供的存儲系統(tǒng)中哈希映射表的映射示意圖。如圖4所示,每個(gè)哈希映射表表項(xiàng)對應(yīng)一個(gè)RAID1+0物理?xiàng)l帶。哈 希映射表表項(xiàng)中的指針域指向當(dāng)前被緩存的RAID5條帶,另一個(gè)域是用于指示RAID5條 帶中被緩存的條帶單元的位圖。如索引為O的哈希映射表表項(xiàng)對應(yīng)O號RAID1+0物理?xiàng)l 帶。由于圖3中映射表表項(xiàng)的位圖域?yàn)?6bit,因此,每個(gè)哈希映射表表項(xiàng)中的位圖最多 可描述SSD組中的16個(gè)條帶單元。讀寫RAID5條帶時(shí),利用哈希映射表找到該RAID5 條帶的緩存RAID1+0條帶。當(dāng)磁盤陣列中創(chuàng) 建有多個(gè)LUN分區(qū)時(shí),可為每個(gè)LUN分區(qū)的關(guān)聯(lián)SSD組緩存分 配一個(gè)哈希映射表。哈希映射表里的內(nèi)容對磁盤陣列控制器是可見的,所以在更新SSD 組RAID條帶中的數(shù)據(jù)時(shí),必須同步進(jìn)行哈希映射表數(shù)據(jù)的更新。所述控制器11還保存有解析函數(shù),所述解析函數(shù)用于將讀寫請求中的起始地址 解析為所述哈希映射表索引。該解析函數(shù)可為哈希函數(shù),將主機(jī)的讀寫請求的起始地址 解析為哈希映射表表項(xiàng)的索引,比如可以使用求余數(shù)的方法。主機(jī)向磁盤陣列控制器發(fā)出讀寫請求時(shí),控制器通過輸入輸出(IO)模塊接收該 讀寫請求,并將該讀寫請求的數(shù)據(jù)讀出或?qū)懭肷鲜龇椒▽?shí)施例實(shí)現(xiàn)的緩存中。本實(shí)施例中,存儲系統(tǒng)通過哈希映射表將SSD組作為緩存,使得存儲系統(tǒng)對于 訪問請求的處理無需考慮所訪問數(shù)據(jù)的冷熱情況,降低了存儲系統(tǒng)的復(fù)雜度。進(jìn)一步 地,對于RAID5硬盤存儲系統(tǒng),能夠直接利用哈希表決定每個(gè)RAID5條帶在SSD組中 的緩存位置,并利用哈希表緩存于SSD組中的條帶寫回RAID5硬盤或陣列中,而不需 要統(tǒng)計(jì)數(shù)據(jù)的冷熱程度,對于一段時(shí)間內(nèi)頻繁訪問和更新的數(shù)據(jù)能夠直接命中硬盤緩存 (DISK CACHE)即SSD組,從而提高了存儲系統(tǒng)的響應(yīng)能力。同時(shí),由于硬盤緩存是非 易失性存儲介質(zhì),掉電后數(shù)據(jù)不會丟失,所以存儲系統(tǒng)不用再具備備用電池。并且,由 于硬盤緩存的有效空間比RAM大很多,進(jìn)一步增加了訪問數(shù)據(jù)在緩存中的停留時(shí)間,增 大了合并的可能性。圖5為本發(fā)明實(shí)施例提供的一種從存儲系統(tǒng)讀取數(shù)據(jù)的方法的流程圖。本實(shí)施 例中,上述存儲系統(tǒng)采用SSD組作為硬盤緩存的讀操作過程包括步驟51、接收讀請求;該動作可由控制器執(zhí)行??刂破鹘邮罩鳈C(jī)發(fā)送的讀請 求。步驟52、以第一硬盤的RAID條帶為單位對讀請求中的地址進(jìn)行劃分,得到的 RAID條帶地址。如對以RAID5級別構(gòu)建的第一硬盤,則以RAID5條帶為單位對讀請 求中的地址進(jìn)行劃分,得到的RAID5條帶地址。當(dāng)讀請求中的起始地址與末尾地址與第 一硬盤RAID條帶尺寸邊界沒有對齊時(shí),劃分得到的第一個(gè)RAID5條帶地址和最后一個(gè) RAID5條帶地址不足一個(gè)條帶尺寸,則系統(tǒng)將其視作讀滿一個(gè)條帶,進(jìn)行讀操作預(yù)取。 讀操作時(shí),讀取的每個(gè)RAID5條帶地址所在的RIAD5條帶的起始地址與條帶尺寸邊界對 齊,并且每個(gè)RAID5條帶的長度都為一個(gè)條帶尺寸,即對讀請求劃分得到的RAID5條帶 長度與LUN分區(qū)中的RAID 5條帶長度相同。假設(shè)讀請求要求讀取地址4 25中的數(shù) 據(jù),且一個(gè)RAID5條帶尺寸為8,則對地址4 25劃分后,得到四個(gè)RAID5條帶地址。 其中,第一個(gè)RAID5條帶地址包括地址4 7,第二個(gè)RAID5條帶地址包括地址8 15,第三個(gè)RAID5條帶地址包括地址16 23,第四個(gè)RAID5條帶地址包括地址24 25。此時(shí),將第一個(gè)RAID5條帶地址視為地址0 7,將第四個(gè)RAID5條帶地址為地址24 31。第一個(gè)RAID5條帶地址的起始地址為地址4,第一個(gè)RAID5條帶地址所在的 RAID5條帶的起始地址為O。而第二個(gè)RAID5條帶地址、第三個(gè)RAID5條帶地址及第 四個(gè)RAID5條帶地址的起始地址與各自所在的RAID5條帶地址的起始地址相同,分別為 地址8、地址16、地址24。步驟53、利用所述RAID條帶地址中的起始地址得到相應(yīng)的哈希映射表表項(xiàng)的 索引。該動作可由控制器11通過解析函數(shù)對各個(gè)RAID條帶地址中的起始地址進(jìn)行解析 得到相應(yīng)的哈希映射表表項(xiàng)的索引。假設(shè)上述第一個(gè)RAID5條帶地址的首地址4經(jīng)解析 函數(shù)解析得到哈希映射表表項(xiàng)的索引為0,上述第一個(gè)RAID5條帶地址的起始地址經(jīng)解 析函數(shù)解析得到哈希映射表表項(xiàng)的索引為0 ;上述第二個(gè)RAID5條帶地址的起始地址8 經(jīng)解析函數(shù)解析得到哈希映射表表項(xiàng)的索引為1 ;上述第三個(gè)RAID5條帶地址的起始地 址16經(jīng)解析函數(shù)解析得到哈希映射表表項(xiàng)的索引為2,上述第四個(gè)RAID5條帶地址的起 始地址24經(jīng)解析函數(shù)解析得到哈希映射表表項(xiàng)的索引為3。從而得到哈希映射表表項(xiàng) 0、1、2、3分別對應(yīng)第一個(gè)RAID5條帶地址所在的RAID5條帶、第二個(gè)RAID5條帶地 址所在的RAID5條帶、第三個(gè)RAID5條帶地址所在的RAID5條帶、第四個(gè)RAID5條帶 地址所在的RAID5條帶。假設(shè)SSD組按RAID1+0構(gòu)建,則同時(shí)也表示哈希映射表表項(xiàng) 0、1、2、3分別對應(yīng)SSD組中的第一個(gè)RAID 1+0條帶、第二個(gè)RAID1+0條帶、第三個(gè) RAID1+0條帶、第四個(gè)RAID1+0條帶。這樣,通過表項(xiàng)0中的指針域便可獲知地址4 7上的數(shù)據(jù)在RAID5硬盤中的物理位置,通過表項(xiàng)0中的位圖域便可獲知地址4 7上的 數(shù)據(jù)是否被緩存在SSD組的對應(yīng)條帶單元中。類似地,也可獲知地址8 25上的數(shù)據(jù) 的存儲情況。步驟54、在得到的索引所在的表項(xiàng)中的指針域非空的情況下,將所述起始地址 與所述表項(xiàng)中的指針域的值進(jìn)行比較,判斷比較結(jié)果即所述起始地址與所述表項(xiàng)中的指 針域的值之差是否小于條帶尺寸。該動作可由控制器執(zhí)行。當(dāng)?shù)玫降乃饕诘谋眄?xiàng)中的指針域?yàn)榭諘r(shí),說明未 命中SSD組中的RAID條帶,控制器可執(zhí)行步驟56。若劃分讀請求地址得到的所有RAID 條帶地址均未命中SSD組中的RAID條帶,則控制器通過執(zhí)行步驟56讀取所有RAID條 帶地址上的數(shù)據(jù)。假設(shè)上述表項(xiàng)1中的指針域非空,則控制器將上述第二個(gè)RAID5條帶地址中 的起始地址8與表項(xiàng)1中的指針域的值進(jìn)行比較。若比較結(jié)果小于RAID5條帶的尺寸 8,說明第二個(gè)RAID5條帶地址上的數(shù)據(jù)正被緩存在SSD組中,也即命中了 SSD組中的 RAID1+0條帶,則執(zhí)行步驟55;否則,執(zhí)行步驟56。若劃分讀請求地址得到的所有RAID條帶地址均命中SSD組中的RAID條帶, 則控制器通過執(zhí)行步驟55讀取所有RAID條帶地址上的數(shù)據(jù)。例如,控制器對第一個(gè) RAID5條帶地址、第二個(gè)RAID5條帶地址、第三個(gè)RAID5條帶地址、第四個(gè)RAID5條 帶地址分別執(zhí)行步驟55讀取數(shù)據(jù)。步驟55、當(dāng)所述起始地址與所述表項(xiàng)中指針域的值之差小于所述第一硬盤的 RAID條帶尺寸時(shí),從所述表項(xiàng)的位圖域?qū)?yīng)的條帶單元中讀出數(shù)據(jù);所述對應(yīng)的條帶單 元位于SSD組中。 該動作可由控制器執(zhí)行。具體地,控制器可根據(jù)哈希映射表表項(xiàng)中的已緩存條帶單元位圖,決定是否需要從LUN分區(qū)中獲取數(shù)據(jù)。
如果位圖中相應(yīng)的比特位均為“1”,則將該RAID5條帶緩存于SSD組中的條 帶單元數(shù)據(jù)直接從SSD的相應(yīng)地址中讀出,執(zhí)行步驟57。
如果位圖中相應(yīng)的比特位部分為“1”,則將該RAID5條帶緩存于SSD組中的 條帶單元數(shù)據(jù)直接從與比特位為“1”的對應(yīng)SSD組條帶單元中讀出,再將剩下的條帶 單元即在位圖中的比特位為“0”的對應(yīng)條帶單元數(shù)據(jù)從LUN分區(qū)中讀出,然后執(zhí)行步 驟57,用合并后的數(shù)據(jù)響應(yīng)主機(jī)請求,最后將從LUN分區(qū)中讀出的數(shù)據(jù)寫入SSD組中 RAID1+0條帶對應(yīng)條帶單元鏡像對中,即將從LUN分區(qū)中讀出的數(shù)據(jù)寫入SSD組中與位 圖中比特位為“0”對應(yīng)的條帶單元中,其中位圖與該RAID5條帶對應(yīng),并且更新內(nèi)存 中哈希映射表相應(yīng)表項(xiàng)中的位圖域,即,將SSD組中新寫入的條帶單元鏡像對對應(yīng)的比 特位置1。
若存儲系統(tǒng)為雙控系統(tǒng),還需要通過鏡像空間的方式將哈希映射表的更新備份 于另一個(gè)控制器的鏡像緩存中。當(dāng)存儲系統(tǒng)為雙控系統(tǒng)時(shí),只有LUN分區(qū)的歸屬控制器 可以修改該映射表;存儲系統(tǒng)掉電后,可將該哈希映射表寫入保險(xiǎn)箱。
步驟56、從第一硬盤的LUN分區(qū)中將數(shù)據(jù)讀出。
步驟57、直至讀出所有RAID條帶地址上的數(shù)據(jù)后,響應(yīng)主機(jī)的讀請求,完成 數(shù)據(jù)讀取。
本實(shí)施例中,存儲系統(tǒng)直接通過哈希映射表命中讀請求所要獲得的數(shù)據(jù),提高 了讀取數(shù)據(jù)的處理速度。
圖6為本發(fā)明實(shí)施例提供的一種向存儲系統(tǒng)寫入數(shù)據(jù)的方法的流程圖。本實(shí)施 例中,采用SSD組作為硬盤緩存的寫操作過程包括
步驟61、接收寫請求。該動作可由控制器執(zhí)行??刂破鹘邮罩鳈C(jī)發(fā)送的寫請 求。
步驟62、以第一硬盤的RAID條帶為單位對讀請求中的地址進(jìn)行劃分,得到的 RAID條帶地址。詳見上述步驟52的說明。
步驟63、利用所述RAID條帶地址中的起始地址得到相應(yīng)的哈希映射表表項(xiàng) 的索引;哈希映射表的指針域指向第一硬盤中的LUN分區(qū),位圖域?qū)?yīng)SSD組中的 RAID 1+0條帶,具體詳見上述步驟53的說明。
步驟64、將所述RAID條帶地址對應(yīng)的數(shù)據(jù)寫入所述索引所在的表項(xiàng)對應(yīng)的條 帶單元;所述對應(yīng)的條帶單元位于SSD組中,詳見上述系統(tǒng)實(shí)施例的說明。
該動作可由控制器執(zhí)行。控制器利用求出的哈希映射表索引獲得對應(yīng)表項(xiàng)中 的正被緩存RAID條帶指針域的值。如果該指針域的值為空,說明目前SSD組中相應(yīng) RAIDO或RAID1+0條帶并沒有緩存第一硬盤中的條帶,因此,可直接將當(dāng)前RAID條帶 地址的數(shù)據(jù)寫入SSD組中。如,假設(shè)利用上述第一個(gè)RAID5條帶地址的起始地址得到的 哈希映射表索引0所在的表項(xiàng)中,指針域的值為空,則說明SSD組中對應(yīng)的RAID條帶沒 有存儲數(shù)據(jù),因而,可直接將上述第一個(gè)RAID5條帶地址即地址4 7的數(shù)據(jù)寫入SSD 組中對應(yīng)的RAID條帶。具體可執(zhí)行步驟67 ;否則,執(zhí)行步驟65。
步驟65、將正被緩存RAID條帶指針域的值與條帶地址中的起始地址作比較。 假設(shè)利用上述第二個(gè)RAID5條帶地址計(jì)算得到表項(xiàng)1的索引,則此時(shí)將表項(xiàng)1的指針域的值與上述第二個(gè)RAID5條帶地址的起始地址8進(jìn)行比較。如果兩者之差小于條帶尺寸, 則說明命中了 SSD組中的RAID條帶,即SSD組中對應(yīng)RAIDO或RAID1+0條帶緩存的 條帶與當(dāng)前RAID條帶地址所在的RAID條帶一致,這時(shí)直接將當(dāng)前條帶地址的數(shù)據(jù)寫入 SSD組對應(yīng)的條帶中。假設(shè)上述第二個(gè)RAID5條帶地址的起始地址與表項(xiàng)1的指針域的 值之差小于RAID5條帶尺寸,說明SSD組中對應(yīng)的RAIDO或RAID1+0條帶正緩存著第 二個(gè)RAID5條帶地址所在的RAID5條帶,也即第二個(gè)RAID5條帶地址8 15的數(shù)據(jù)緩 存在SSD組中對應(yīng)的RAIDO或RAID1+0條帶中,則直接將第二個(gè)RAID5條帶地址8 15的數(shù)據(jù)寫入表項(xiàng)1對應(yīng)的RAIDO或RAID1+0條帶。具體可執(zhí)行步驟67。如果兩者 間的差距大于一個(gè)條帶尺寸即跨越了條帶,則 說明此時(shí)哈希映射表表項(xiàng)對應(yīng)的RAIDO或 RAID1+0條帶正緩存著另外一個(gè)條帶的數(shù)據(jù),這時(shí)在寫入當(dāng)前RAID條帶地址上的數(shù)據(jù) 之前,必須觸發(fā)正緩存的另外一個(gè)條帶數(shù)據(jù)搬移到第一硬盤的條帶中,搬移操作完成后 才可將當(dāng)前RAID條帶地址上的數(shù)據(jù)寫入SSD組中,并根據(jù)當(dāng)前RAID條帶地址更新位圖 域和指針域。假設(shè)利用上述第三個(gè)RAID5條帶地址計(jì)算得到表項(xiàng)2的索引,且表項(xiàng)2中 指針域的值與上述第三個(gè)RAID5條帶地址的起始地址之差大于1個(gè)RAID5條帶尺寸,貝Ij 說明SSD組中對應(yīng)的RAIDO或RAID1+0條帶正緩存著另外一個(gè)條帶的數(shù)據(jù),為便于描 述,這里稱之為舊緩存條帶數(shù)據(jù),則將該舊緩存條帶數(shù)據(jù)寫到第一硬盤后,再將上述第 三個(gè)RAID5條帶地址的數(shù)據(jù)寫入SSD組中對應(yīng)的RAIDO或RAID1+0條帶。具體可執(zhí)行 步驟66。步驟66、觸發(fā)舊緩存條帶數(shù)據(jù)的寫回操作,在哈希映射表表項(xiàng)對應(yīng)的RAIDO或 RAID1+0條帶寫入當(dāng)前RAID條帶地址上的數(shù)據(jù),并更新相應(yīng)的表項(xiàng)。假設(shè)利用上述第三個(gè)RAID5條帶地址計(jì)算得到表項(xiàng)2的索引,而表項(xiàng)2對應(yīng)的 RAIDO或RAID1+0條帶寫入了其他條帶數(shù)據(jù),即舊緩存條帶數(shù)據(jù),則將該舊緩存條帶數(shù) 據(jù)寫回表項(xiàng)2中的指針域指向第一硬盤中的條帶,然后將第三個(gè)RAID5條帶地址16 23 的數(shù)據(jù)寫入表項(xiàng)2對應(yīng)的RAIDO或RAID1+0條帶。從表項(xiàng)2對應(yīng)的RAIDO或RAID1+0 條帶讀取舊緩存條帶數(shù)據(jù)時(shí),根據(jù)表項(xiàng)2中的位圖域的比特位進(jìn)行讀取,如,當(dāng)比特位 為1時(shí),說明對應(yīng)的RAIDO或RAID1+0條帶單元中存儲有數(shù)據(jù);當(dāng)比特位為0時(shí),說明 對應(yīng)的RAIDO或RAID 1+0條帶單元為空,未存儲數(shù)據(jù)。將第三個(gè)RAID5條帶地址16 23的數(shù)據(jù)寫入表項(xiàng)2對應(yīng)的RAIDO或RAID1+0 條帶后,更新表項(xiàng)2,即將表項(xiàng)2指針域的值指向第三個(gè)RAID5條帶地址所在的RAID5 條帶的起始地址16。假若表項(xiàng)2指針域的值是指向第一個(gè)RAID5條帶地址所在的RAID5 條帶的起始地址,則指向地址0。如果對應(yīng)的RAIDO或RAID1+0條帶單元在為空的情況 下被寫入了數(shù)據(jù),則表項(xiàng)2位圖域?qū)?yīng)的比特位的值也要更新,如由0更新為1。若SSD組中對應(yīng)的是RAID1+0條帶,則哈希映射表表項(xiàng)對應(yīng)的RAID1+0條帶 中還包含校驗(yàn)單元。在哈希映射表表項(xiàng)對應(yīng)的RAID1+0條帶中寫入新數(shù)據(jù)之前,可進(jìn)一 步通過對新舊數(shù)據(jù)進(jìn)行異或運(yùn)算計(jì)算出校驗(yàn)數(shù)據(jù)。如根據(jù)舊緩存條帶數(shù)據(jù)的讀出方式從 第一硬盤中讀出表項(xiàng)2指向的條帶數(shù)據(jù),并將從第一硬盤中讀出的條帶數(shù)據(jù)與上述第三 RAID5條帶地址16 23的數(shù)據(jù)進(jìn)行異或運(yùn)算,得到校驗(yàn)數(shù)據(jù)。將得到的校驗(yàn)數(shù)據(jù)存放 于表項(xiàng)2對應(yīng)的RAID1+0條帶的預(yù)留的校驗(yàn)條帶單元鏡像對中,同時(shí)將該預(yù)留的校驗(yàn)單 元鏡像對在位圖中的比特位置1。
當(dāng)存儲系統(tǒng)為雙控系統(tǒng)時(shí),還可通過鏡像空間的方式將哈希映射表的更新備份 于另一個(gè)控制器的鏡像緩存中。在寫回的過程中,如果某一控制器出現(xiàn)故障,切換到另 一控制器后,根據(jù)哈希映射表重新寫回該條帶在SSD組中的數(shù)據(jù)。此時(shí),校驗(yàn)數(shù)據(jù)已保 存在預(yù)留校驗(yàn)條帶單元鏡像對中,且位圖中的比特位也標(biāo)識了該校驗(yàn)單元已計(jì)算出。這 樣,就可以在切換控制器后,從SSD組中將待寫回?cái)?shù)據(jù)和校驗(yàn)數(shù)據(jù)一起讀出,然后下發(fā) 到第一硬盤的LUN分區(qū)中,而不用重新計(jì)算校驗(yàn)數(shù)據(jù),從而解決了寫洞導(dǎo)致的數(shù)據(jù)不一 致問題。
步驟67、將寫請求劃分得到的RAID條帶地址上的數(shù)據(jù)寫入相應(yīng)表項(xiàng)對應(yīng)的 RAIDO或RAID 1+0條帶,更新當(dāng)前哈希映射表表項(xiàng)的RAID條帶指針域的值,使其指向 RAID條帶地址所在的RAID條帶的起始地址,根據(jù)當(dāng)前緩存的條帶單元更新條帶單元位 圖。
假設(shè)利用上述第一個(gè)RAID5條帶地址的起始地址得到的哈希映射表表項(xiàng)0所在 的索引,且表項(xiàng)0中的指針域的值為空,此時(shí),可直接將第一個(gè)RAID5條帶地址上的數(shù) 據(jù)寫入表項(xiàng)0對應(yīng)的RAIDO或RAID1+0條帶。由于第一個(gè)RAID5條帶地址的尺寸小于 RAID5條帶尺寸,因此必須根據(jù)第一個(gè)RAID5條帶地址覆蓋的條帶單元來更新表項(xiàng)0中 的位圖域,從而指示目前有哪些條帶單元的數(shù)據(jù)被緩存于SSD組中,最后更新指針域讓 其指向第一個(gè)RAID5條帶地址所在RAID5條帶的起始地址。
如果待寫條帶地址上的數(shù)據(jù)第一次寫入RAIDO或RAID1+0條帶中,且無法完全 填滿該條帶中的某一個(gè)或多個(gè)條帶單元,則觸發(fā)后臺線程將舊數(shù)據(jù)從LUN分區(qū)的對應(yīng)位 置讀出,并填滿該條帶單元。
假設(shè)利用上述第二個(gè)RAID5條帶地址計(jì)算得到表項(xiàng)1的索引,且第二個(gè)RAID5 條帶地址的起始地址與表項(xiàng)1的指針域的值之差小于RAID5條帶尺寸。第二個(gè)RAID5條 帶地址上的數(shù)據(jù)寫入表項(xiàng)1對應(yīng)的RAIDO或RAID1+0條帶時(shí),若第二個(gè)RAID5條帶地 址上的數(shù)據(jù)沒有占滿其中某個(gè)條帶單元,且該條帶單元對應(yīng)比特位為0(說明之前該條帶 單元沒有緩存數(shù)據(jù)),則從第一硬盤中將數(shù)據(jù)讀出填滿SSD中的對應(yīng)條帶單元,并將對應(yīng) 比特位置1,指示該條帶單元現(xiàn)在已經(jīng)緩存數(shù)據(jù)。
由于存儲系統(tǒng)為讀操作配置了讀緩存(READ RAM CACTffi),所以在當(dāng)前劃分后條帶寫入SSD組后,還應(yīng)判斷當(dāng)前劃分后條帶是否命中讀緩存;若命中讀緩存,為了 保證讀寫數(shù)據(jù)的一致性,這里需要將劃分后的條帶的寫數(shù)據(jù)寫入讀緩存中進(jìn)行更新。
當(dāng)存儲系統(tǒng)為雙控系統(tǒng)時(shí),當(dāng)前控制器還可通過鏡像通道將更新后的哈希映射 表傳送到另一個(gè)控制器的鏡像緩存中,然后,響應(yīng)主機(jī)的寫請求。
利用上述方法,對各個(gè)RAID條帶地址中的數(shù)據(jù)進(jìn)行寫入處理,直至完成所有 RAID條帶地址中數(shù)據(jù)的寫入操作。
本實(shí)施例中,存儲系統(tǒng)直接通過哈希映射表將寫請求中的數(shù)據(jù)放入SSD組中, 提高了寫入數(shù)據(jù)的處理速度。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以 通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計(jì)算機(jī)可讀取存儲介質(zhì)中, 該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲介質(zhì)包括ROM、 RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
最后應(yīng)說明的是以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制; 盡管參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其 依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等 同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方 案的精神和范圍。
權(quán)利要求
1.一種存儲系統(tǒng),包括控制器及劃分有廉價(jià)磁盤陣列條帶的第一硬盤,其特征在 于,還包括固態(tài)硬盤組,所述固態(tài)硬盤組被分配給所述第一硬盤的邏輯單元編號對應(yīng)的存儲空 間;所述固態(tài)硬盤組被劃分為廉價(jià)磁盤陣列條帶的集合;所述固態(tài)硬盤組的廉價(jià)磁盤陣 列條帶與所述第一硬盤的廉價(jià)磁盤陣列條帶具有相同的條帶深度及條帶尺寸;所述控制器保存有用于表示所述存儲空間與所述固態(tài)硬盤組映射關(guān)系的哈希映射 表;所述哈希映射表的表項(xiàng)包含索引、指針域及位圖域;所述控制器還保存有解析函數(shù),所述解析函數(shù)用于將讀寫請求中的起始地址解析為 所述哈希映射表的索引。
2.根據(jù)權(quán)利要求1所述的存儲系統(tǒng),其特征在于,所述固態(tài)硬盤組的廉價(jià)磁盤陣列條 帶為RAID O或RAID 1+0條帶。
3.根據(jù)權(quán)利要求1或2所述的存儲系統(tǒng),其特征在于,所述固態(tài)硬盤組的廉價(jià)磁盤陣 列條帶中包含預(yù)留的鏡像校驗(yàn)單元。
4.一種從存儲系統(tǒng)讀取數(shù)據(jù)的方法,其特征在于,包括 接收讀請求;以第一硬盤的廉價(jià)磁盤陣列條帶為單位對所述讀請求中的地址進(jìn)行劃分,得到廉價(jià) 磁盤陣列條帶地址;解析所述廉價(jià)磁盤陣列條帶地址中的起始地址,獲得相應(yīng)的哈希映射表的表項(xiàng)的索 引;所述哈希映射表的表項(xiàng)包含索引、指針域及位圖域;當(dāng)所述索引所在的哈希映射表的表項(xiàng)中的指針域非空時(shí),將所述起始地址與所述表 項(xiàng)中的指針域的值進(jìn)行比較;當(dāng)所述起始地址與所述表項(xiàng)中指針域的值之差小于所述廉價(jià)磁盤陣列條帶的尺寸 時(shí),從所述表項(xiàng)的位圖域?qū)?yīng)的固態(tài)硬盤組的條帶單元中讀出數(shù)據(jù);所述固態(tài)硬盤組被 分配給所述第一硬盤的邏輯單元編號對應(yīng)的存儲空間。
5.根據(jù)權(quán)利要求4所述的讀取數(shù)據(jù)的方法,其特征在于,還包括當(dāng)所述表項(xiàng)的位圖域中的比特位表示對應(yīng)的固態(tài)硬盤組的條帶單元為空時(shí),從所述 第一硬盤中讀取所述表示所述條帶單元為空的比特位對應(yīng)的數(shù)據(jù)。
6.根據(jù)權(quán)利要求5所述的讀取數(shù)據(jù)的方法,其特征在于,響應(yīng)所述讀請求之前還包括將從所述第一硬盤讀取的數(shù)據(jù)與從所述表項(xiàng)的位圖域?qū)?yīng)的固態(tài)硬盤組的條帶單元 讀取的數(shù)據(jù)合并;將從所述第一硬盤讀取的數(shù)據(jù)寫入所述表項(xiàng)的位圖域?qū)?yīng)的條帶單元中。
7 一種向存儲系統(tǒng)寫入數(shù)據(jù)的方法,其特征在于,包括 接收寫請求;以第一硬盤的廉價(jià)磁盤陣列條帶為單位對所述寫請求中的地址進(jìn)行劃分,得到廉價(jià) 磁盤陣列條帶地址;解析所述廉價(jià)磁盤陣列條帶地址中的起始地址,得到相應(yīng)的哈希映射表的表項(xiàng)的索 弓丨,所述哈希映射表的表項(xiàng)包含索引、指針域及位圖域;將所述廉價(jià)磁盤陣列條帶地址對應(yīng)的數(shù)據(jù)寫入所述索引所在表項(xiàng)對應(yīng)的固態(tài)硬盤組的條帶單元;所述固態(tài)硬盤組被分配給所述第一硬盤的邏輯單元編號對應(yīng)的存儲空間;更新所述哈希映射表的表項(xiàng)。
8.根據(jù)權(quán)利要求7所述的寫入數(shù)據(jù)的方法,其特征在于,還包括在所述表項(xiàng)中的指針 域非空時(shí),將所述起始地址與所述表項(xiàng)中的指針域的值進(jìn)行比較。
9.根據(jù)權(quán)利要求7或8所述的寫入數(shù)據(jù)的方法,其特征在于,還包括從所述第一硬盤的相應(yīng)位置讀出數(shù)據(jù),寫入所述表項(xiàng)對應(yīng)的固態(tài)硬盤的條帶單元 中;所述第一硬盤的相應(yīng)位置與所述表項(xiàng)對應(yīng)的固態(tài)硬盤的條帶單元中無數(shù)據(jù)的位置對 應(yīng)。
10.根據(jù)權(quán)利要求7或8所述的寫入數(shù)據(jù)的方法,其特征在于,還包括通過鏡像通道發(fā)送哈希映射表,該哈希映射表的表項(xiàng)經(jīng)過更新。
11.根據(jù)權(quán)利要求8所述的寫入數(shù)據(jù)的方法,其特征在于,還包括當(dāng)所述比較得到 所述起始地址與所述表項(xiàng)中的指針域的值之差大于所述廉價(jià)磁盤陣列條帶的尺寸時(shí),對 所述表項(xiàng)對應(yīng)的固態(tài)硬盤的條帶單元執(zhí)行寫回操作;從所述第一硬盤中讀出所述表項(xiàng)中的指針域指向的條帶數(shù)據(jù),并根據(jù)所述讀出的數(shù) 據(jù)與所述寫請求中的待寫入的數(shù)據(jù)計(jì)算校驗(yàn)數(shù)據(jù);將所述校驗(yàn)數(shù)據(jù)寫入所述表項(xiàng)中位圖域?qū)?yīng)的所述固態(tài)硬盤組的校驗(yàn)單元,更新所 述表項(xiàng)中位圖域中的比特位;將所述寫請求中的待寫入的數(shù)據(jù)寫入所述表項(xiàng)對應(yīng)的固態(tài)硬盤組的條帶單元。
全文摘要
本發(fā)明實(shí)施例涉及一種存儲系統(tǒng)、從存儲系統(tǒng)讀取數(shù)據(jù)的方法及寫入數(shù)據(jù)的方法,系統(tǒng)包括控制器及劃分有廉價(jià)磁盤陣列條帶的第一硬盤,還包括固態(tài)硬盤組,所述固態(tài)硬盤組被分配給所述第一硬盤的邏輯單元編號對應(yīng)的存儲空間;所述固態(tài)硬盤組被劃分為廉價(jià)磁盤陣列條帶的集合;所述固態(tài)硬盤組的廉價(jià)磁盤陣列條帶與所述第一硬盤的廉價(jià)磁盤陣列條帶具有相同的條帶深度及條帶尺寸;所述控制器保存有用于表示所述存儲空間與所述固態(tài)硬盤組映射關(guān)系的哈希映射表;所述哈希映射表的表項(xiàng)包含索引、指針域及位圖域;所述控制器還保存有解析函數(shù),所述解析函數(shù)用于將讀寫請求中的起始地址解析為所述哈希映射表的索引。
文檔編號G06F3/06GK102023809SQ200910093830
公開日2011年4月20日 申請日期2009年9月21日 優(yōu)先權(quán)日2009年9月21日
發(fā)明者張巍, 林宇 申請人:成都市華為賽門鐵克科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
开阳县| 祥云县| 罗源县| 盐边县| 鄂尔多斯市| 辽阳市| 桂林市| 沙田区| 砀山县| 岳阳市| 康定县| 左权县| 镇巴县| 囊谦县| 泰安市| 磴口县| 玉环县| 渭源县| 中牟县| 库车县| 钦州市| 依安县| 连州市| 扎赉特旗| 房山区| 土默特左旗| 左权县| 盘锦市| 库伦旗| 隆子县| 板桥市| 梓潼县| 汉阴县| 宁都县| 包头市| 黄陵县| 顺昌县| 长岛县| 福泉市| 军事| 和龙市|