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