本發(fā)明屬于計(jì)算機(jī)存儲(chǔ)技術(shù)領(lǐng)域,更具體地,涉及一種混合存儲(chǔ)陣列的構(gòu)建方法。
背景技術(shù):
隨著固態(tài)盤技術(shù)的發(fā)展,給整個(gè)存儲(chǔ)領(lǐng)域的應(yīng)用和研究帶來了不小的影響。相對(duì)于機(jī)械磁盤,固態(tài)盤因其不需要磁頭的尋道和旋轉(zhuǎn)定位時(shí)間,有更好的隨機(jī)訪問性能,從而為從根本上解決傳統(tǒng)磁盤低的隨機(jī)訪問性能問題提供了可能。此外作為電子器件的固態(tài)盤還具備功耗低、體積小、重量輕和抗震等優(yōu)勢。然而,由于價(jià)格、容量等方面的原因,在未來很長一段時(shí)間內(nèi)固態(tài)硬盤仍然不可能在存儲(chǔ)應(yīng)用領(lǐng)域完全取代磁盤,因此利用磁盤和固態(tài)硬盤構(gòu)建混合存儲(chǔ)系統(tǒng),充分利用兩者各自的優(yōu)勢來提高存儲(chǔ)系統(tǒng)的整體性能,成為目前主流的研究方向。
磁盤陣列(Redundant Arrays of Independent Disks,RAID),有“獨(dú)立磁盤構(gòu)成的具有冗余能力的陣列”之意。它是由很多價(jià)格較便宜的磁盤,組合成一個(gè)容量巨大的磁盤組,利用個(gè)別磁盤提供數(shù)據(jù)所產(chǎn)生加成效果提升整個(gè)磁盤系統(tǒng)效能。利用這項(xiàng)技術(shù),將數(shù)據(jù)切割成許多區(qū)段,分別存放在各個(gè)硬盤上。
現(xiàn)有的磁盤陣列分為三類:由硬盤驅(qū)動(dòng)器(Hard Disk Drive,HDD)構(gòu)建的傳統(tǒng)RAID、由固態(tài)硬盤(Solid State Disk,SSD)構(gòu)建的RAID以及由HDD和SSD混合的RAID。隨著SSD價(jià)格的降低,由SSD組成大容量的陣列已經(jīng)成為可能,并被越來越多的人所接受。但是正如之前提到的SSD在價(jià)格和容量上仍然和HDD有著較大的差距,況且其自身的擦寫以及壽命問題,使得將SSD和HDD共同組成大容量、高性能、高可靠性的混合陣列成為一種理想的解決思路。
目前主要的混合陣列性能優(yōu)化方法有以下幾種:
HP公司提出了一種混合陣列AutoRAID。不過,AutoRAID做的是基于HDD的RAID1和SSD的RAID5的混合。AutoRAID提出了兩層的存儲(chǔ)架構(gòu),上層組建RAID1來存放active數(shù)據(jù)來保證高性能,而下層組建RAID5來存放inactive數(shù)據(jù)以性能換取冗余度,降低存儲(chǔ)成本。其主要思路是利用active數(shù)據(jù)的規(guī)模小但訪問頻度高對(duì)性能要求高的特點(diǎn),和inactive數(shù)據(jù)規(guī)模大但訪問度低、只要保證可靠性的特點(diǎn),分別采用不同級(jí)別的RAID方式組織數(shù)據(jù),從而兼顧性能和存儲(chǔ)成本,但是僅僅是在HDD級(jí)的混合。
謝濤等人提出了PEARL混合模型,在PEARL中,SSD和HDD一一對(duì)應(yīng)組成混合磁盤對(duì),所有HDD按某一RAID方式組織成陣列。PEARL將數(shù)據(jù)分為三類:讀密集型、寫密集型和讀寫混合型,寫密集型放在HDD中,讀密集型數(shù)據(jù)放在SSD,而讀寫混合型數(shù)據(jù)根據(jù)性能、能耗以及可靠性公式?jīng)Q定放在HDD還是SSD。該方案能夠?qū)π阅?、能耗和可靠性進(jìn)行折衷考慮,但在性能優(yōu)化上和很多方案一樣忽略了SSD更好的隨機(jī)讀寫性能優(yōu)勢。
毛波等人提出的HPDA將若干個(gè)SSD(數(shù)據(jù)盤)和一個(gè)HDD的部分空間(parity盤)組成RAID4,剩余的HDD空間和另一個(gè)HDD組成一個(gè)RAID1作為寫buffer來優(yōu)化對(duì)SSD陣列的小寫。該方案利用HDD緩存一些隨機(jī)小寫請(qǐng)求來提高SSD陣列的寫性能,但是為區(qū)分?jǐn)?shù)據(jù)的冷熱,所有數(shù)據(jù)的寫操作都要進(jìn)行兩次。
因此,采用上述方式在提高混合存儲(chǔ)陣列的性能方面存在一定的局限性。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)的以上缺陷,本發(fā)明提供了一種混合存儲(chǔ)陣列的構(gòu)建方法,其目的在于構(gòu)建一種高性能的基于RAID5的混合陣列。通過將順序讀寫請(qǐng)求數(shù)據(jù)放在zone-Ⅰ(一個(gè)HDD存儲(chǔ)區(qū)域),將熱的隨機(jī)小讀和小寫請(qǐng)求分別放在zone-Ⅱ(SSD隨機(jī)小讀存儲(chǔ)區(qū)域)和zone-Ⅲ(SSD隨機(jī)小寫存儲(chǔ)區(qū)域),充分利用HDD高的順序讀寫性能和SSD的隨機(jī)讀寫性能來提高混合存儲(chǔ)陣列的I/O性能,由此解決現(xiàn)有的提高混合存儲(chǔ)陣列的性能存在一定局限性的技術(shù)問題。
為實(shí)現(xiàn)上述目的,按照本發(fā)明的一個(gè)方面,提供了一種混合存儲(chǔ)陣列的構(gòu)建方法,包括以下步驟:
S1:將混合陣列劃分為三個(gè)區(qū)域zone-Ⅰ、zone-Ⅱ以及zone-Ⅲ,其中,zone-Ⅰ是由RAID5構(gòu)成的一個(gè)HDD存儲(chǔ)區(qū)域、zone-Ⅱ是由RAID0構(gòu)成的一個(gè)SSD隨機(jī)小讀存儲(chǔ)區(qū)域、zone-Ⅲ是由RAID5構(gòu)成的一個(gè)SSD隨機(jī)小寫存儲(chǔ)區(qū)域;
S2:利用參數(shù)request size、frequency以及seek distance計(jì)算出條帶的性能收益值;
S3:計(jì)算條帶在預(yù)設(shè)時(shí)間內(nèi)的讀寫比例,根據(jù)讀寫比例以及條帶的性能收益值將數(shù)據(jù)按條帶分為三類S-Ⅰ、S-Ⅱ以及S-Ⅲ,其中S-Ⅰ表示冷數(shù)據(jù)以及順序讀寫類型的熱數(shù)據(jù)、S-Ⅱ表示隨機(jī)小讀類型的熱數(shù)據(jù)、S-Ⅲ表示隨機(jī)小寫類型的熱數(shù)據(jù);
S4:按條帶動(dòng)態(tài)遷移數(shù)據(jù),將S-Ⅰ類數(shù)據(jù)重定位到zone-Ⅰ,S-Ⅱ類數(shù)據(jù)重定位到zone-Ⅱ,S-Ⅲ重定位到zone-Ⅲ。
優(yōu)選地,步驟S2具體包括以下子步驟:
S2-1:將文件系統(tǒng)下發(fā)的請(qǐng)求分為若干個(gè)物理地址連續(xù)的子請(qǐng)求;
S2-2:獲取各子請(qǐng)求的request size和seek distance,利用公式:△P=(2Lp*[max(0,k-m)/k])*(1+t*S)計(jì)算出各子請(qǐng)求所涉及的條帶的性能收益增量值△P,然后由公式P=P1+F*△P計(jì)算出各子請(qǐng)求所涉及的條帶的性能收益值,其中,m表示request size,S表示seek distance,Lp、k和t分別為預(yù)設(shè)的參數(shù),2Lp表示預(yù)設(shè)的P的最大增量,2k表示預(yù)設(shè)的最大請(qǐng)求大小,t為seek distance的權(quán)重因子,P1表示原始值,F(xiàn)表示訪問頻率frequency;
S2-3:更新各子請(qǐng)求涉及到的所有條帶的性能收益值。
優(yōu)選地,步驟S3具體包括以下子步驟:
S3-1:統(tǒng)計(jì)條帶在預(yù)設(shè)時(shí)間內(nèi)的讀寫比例,若讀寫比例大于預(yù)設(shè)讀操作閾值,則確定該條帶為讀密集型,否則為寫密集型;
S3-2:將性能收益值P低于第一預(yù)設(shè)值的條帶作為S-Ⅰ類數(shù)據(jù),將性能收益值P高于第一預(yù)設(shè)值的讀密集型條帶作為S-Ⅱ類數(shù)據(jù),將性能收益值P高于第二預(yù)設(shè)值的寫密集型條帶作為S-Ⅲ類數(shù)據(jù)。
優(yōu)選地,步驟S4具體包括以下子步驟:
S4-1:將zone-Ⅲ中的S-Ⅰ類和S-Ⅱ類數(shù)據(jù)遷往zone-Ⅰ;
S4-2:將zone-Ⅰ中的S-Ⅱ類數(shù)據(jù)采用拷貝式方式遷往zone-Ⅱ,S-Ⅲ類數(shù)據(jù)采用交換式方式遷往zone-Ⅲ;
S4-3:將zone-Ⅱ中的S-Ⅰ類數(shù)據(jù)遷回zone-Ⅰ,S-Ⅲ類數(shù)據(jù)遷往zone-Ⅲ。
總體而言,通過本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,主要有以下的技術(shù)優(yōu)點(diǎn):
(1)采用request size、frequency和seek distance參數(shù)識(shí)別隨機(jī)小請(qǐng)求數(shù)據(jù),提高了識(shí)別的準(zhǔn)確度,同時(shí)識(shí)別策略充分考慮到數(shù)據(jù)的條帶性,更適合于混合陣列環(huán)境。
(2)通過數(shù)據(jù)分類識(shí)別,根據(jù)設(shè)備自身的性能特性合理對(duì)數(shù)據(jù)進(jìn)行布局,充分利用存儲(chǔ)資源,最大程度地優(yōu)化了系統(tǒng)的I/O性能,做到對(duì)下層物理設(shè)備的感知存儲(chǔ)。
(3)多種RAID模式混合,在保證可靠性的同時(shí)降低存儲(chǔ)開銷。將zone-Ⅰ和zone-Ⅲ上的數(shù)據(jù)按RAID5組織,而zone-Ⅱ按RAID0組織,其條帶數(shù)據(jù)的可靠性需要配合該條帶在zone-Ⅰ上的其他數(shù)據(jù)和parity來保證,因?yàn)閦one-Ⅱ區(qū)域上的I/O多為讀操作,所以很少會(huì)訪問條帶的其他數(shù)據(jù)和parity。
(4)將隨機(jī)小請(qǐng)求數(shù)據(jù)分為讀密集型和寫密集型,并將其分別存放在不同的flash芯片上,既保證了性能和可靠性,又降低了成本。同時(shí)針對(duì)這兩類數(shù)據(jù)的特性采用了不同的數(shù)據(jù)遷移策略,有效降低了遷移的開銷。
附圖說明
圖1是本發(fā)明實(shí)施例公開的一種混合存儲(chǔ)陣列的構(gòu)建方法的流程示意圖;
圖2是本發(fā)明實(shí)施例公開的一種混合存儲(chǔ)陣列的架構(gòu)示意圖;
圖3是本發(fā)明實(shí)施例公開的一種數(shù)據(jù)類型識(shí)別方法的流程示意圖;
圖4是本發(fā)明實(shí)施例公開的一種將zone-Ⅰ中的S-Ⅱ類數(shù)據(jù)以及S-Ⅲ類數(shù)據(jù)進(jìn)行遷移的示意圖;
圖5是本發(fā)明實(shí)施例公開的一種可選的按條帶進(jìn)行動(dòng)態(tài)遷移數(shù)據(jù)的示意圖;
圖6是本發(fā)明實(shí)施例公開的另一種可選的按條帶進(jìn)行動(dòng)態(tài)遷移數(shù)據(jù)的示意圖;
圖7是本發(fā)明實(shí)施例公開的一種數(shù)據(jù)遷移過程的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個(gè)實(shí)施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
圖1為本發(fā)明實(shí)施例公開的一種混合存儲(chǔ)陣列的構(gòu)建方法的流程示意圖,包括以下步驟:
S1:將混合陣列劃分為三個(gè)區(qū)域zone-Ⅰ、zone-Ⅱ以及zone-Ⅲ,其中,zone-Ⅰ是由RAID5構(gòu)成的一個(gè)HDD存儲(chǔ)區(qū)域,zone-Ⅱ是由RAID0構(gòu)成的一個(gè)SSD隨機(jī)小讀存儲(chǔ)區(qū)域,zone-Ⅲ是由RAID5構(gòu)成的一個(gè)SSD隨機(jī)小寫存儲(chǔ)區(qū)域;
S2:利用參數(shù)request size、frequency和seek distance計(jì)算出條帶的性能收益值;
S3:計(jì)算條帶在預(yù)設(shè)時(shí)間內(nèi)的讀寫比例,根據(jù)讀寫比例以及條帶的性能收益值將數(shù)據(jù)按條帶分為三類S-Ⅰ、S-Ⅱ以及S-Ⅲ,其中,S-Ⅰ表示冷數(shù)據(jù)以及順序讀寫類型的熱數(shù)據(jù),S-Ⅱ表示隨機(jī)小讀類型的熱數(shù)據(jù),S-Ⅲ表示隨機(jī)小寫類型的熱數(shù)據(jù);
S4:按條帶動(dòng)態(tài)遷移數(shù)據(jù),將S-Ⅰ類數(shù)據(jù)重定位到zone-Ⅰ,S-Ⅱ類數(shù)據(jù)重定位到zone-Ⅱ,S-Ⅲ重定位到zone-Ⅲ。
上述步驟S1中,區(qū)域的劃分主要是依據(jù)具體存儲(chǔ)設(shè)備的特性和數(shù)據(jù)訪問的特點(diǎn):
A、SSD和HDD在讀寫性能上存在很大差異。相比于HDD,SSD在順序讀寫的情況下并沒有明顯的性能優(yōu)勢,甚至對(duì)于低端的SSD產(chǎn)品而言還沒有HDD的順序性讀寫性能高;但是對(duì)于隨機(jī)訪問負(fù)載而言,SSD比HDD表現(xiàn)出較為明顯的性能優(yōu)勢。因此從I/O性能的角度出發(fā),將隨機(jī)讀寫請(qǐng)求定位到SSD區(qū),將順序讀寫請(qǐng)求定位到HDD區(qū),能夠提高系統(tǒng)的I/O帶寬。
B、同時(shí)考慮到SSD的讀寫不平衡特性,將SSD區(qū)進(jìn)一步分為讀密集型區(qū)(zone-Ⅱ)和寫密集型區(qū)(zone-Ⅲ),zone-Ⅱ由MLC型flash芯片構(gòu)成RAID0,而zone-Ⅲ采用可擦除次數(shù)更高的SLC型flash芯片RAID5,這里zone-Ⅱ采用RAID0以節(jié)省存儲(chǔ)空間,而其條帶數(shù)據(jù)的可靠性需要配合該條帶在zone-Ⅰ上的其他數(shù)據(jù)和奇偶校驗(yàn)位parity來保證。
如圖2所示為本發(fā)明實(shí)施例公開的一種混合存儲(chǔ)陣列的架構(gòu)示意圖,存儲(chǔ)空間劃分為三個(gè)區(qū)域zone-Ⅰ(HDD存儲(chǔ)區(qū)域)、zone-Ⅱ(SSD隨機(jī)小讀存儲(chǔ)區(qū)域)和zone-Ⅲ(SSD隨機(jī)小寫存儲(chǔ)區(qū)域)。需要說明的是,整個(gè)地址空間由zone-Ⅰ和zone-Ⅲ構(gòu)成,zone-Ⅱ作為預(yù)留空間用于存儲(chǔ)遷移過來的隨機(jī)小請(qǐng)求的讀密集型數(shù)據(jù)。
在文件系統(tǒng)下發(fā)請(qǐng)求時(shí),首先按照從低到高的順序分配地址,然后在位圖bitmap上標(biāo)記該地址已經(jīng)分配,同時(shí)完成數(shù)據(jù)項(xiàng)的初始化,記錄從邏輯地址到物理地址的映射,接著向下轉(zhuǎn)發(fā)請(qǐng)求。
該步驟給出的數(shù)據(jù)分布策略是根據(jù)設(shè)備自身的性能特性對(duì)混合陣列中的數(shù)據(jù)進(jìn)行合理布局,充分利用存儲(chǔ)資源最大程度地優(yōu)化了系統(tǒng)的I/O性能,做到對(duì)下層物理設(shè)備的感知存儲(chǔ)。
上述步驟S2中,計(jì)算條帶的性能收益值的步驟如下:
將文件系統(tǒng)下發(fā)的請(qǐng)求按照物理地址,分為若干個(gè)地址連續(xù)的子請(qǐng)求q1,q2,q3…qn。其中每一個(gè)子請(qǐng)求還要滿足只映射到一個(gè)zone。這里每一個(gè)zone可以看做是一個(gè)邏輯設(shè)備;
對(duì)每個(gè)子請(qǐng)求qi(i=1,2,3…n)獲取其request size和seek distance參數(shù),這里的request size以chunk為基本單位計(jì)算,表示請(qǐng)求指令請(qǐng)求訪問的數(shù)據(jù)塊的大小,而seek distance則以stripe為基本單位計(jì)算,表示請(qǐng)求指令訪問的具體的數(shù)據(jù)塊;
將相關(guān)參數(shù)代入公式:△P=(2Lp*[max(0,k-m)/k])*(1+t*S),計(jì)算出各子請(qǐng)求所涉及的條帶的性能收益增量值△P,然后由公式P=P1+F*△P計(jì)算出各子請(qǐng)求所涉及的條帶的性能收益值,其中,m表示request size,S表示seek distance,Lp、k、t分別為預(yù)設(shè)的參數(shù),2Lp表示預(yù)設(shè)的P的最大增量,2k表示預(yù)設(shè)的最大請(qǐng)求大小,t為seek distance的權(quán)重因子,P1表示原始值,F(xiàn)表示相應(yīng)的條帶被訪問的頻率frequency;
需要說明的是,性能收益值P表示將條帶放在SSD上比放在HDD上訪問I/O性能的提升程度。
更新該請(qǐng)求qi涉及到的所有條帶的性能收益值。
例如,若q1=(R,D),其中R表示該請(qǐng)求為讀操作,D代表要讀的數(shù)據(jù)域,D=(chunck0,chunck1,chunck2,chunck3,chunck4),當(dāng)前所在zone的條帶數(shù)據(jù)長度為3個(gè)chunck,則請(qǐng)求q1涉及條帶stripe0和條帶strip1,因此將q1計(jì)算的P加到stripe0和strip1上。
若子請(qǐng)求為讀操作,則所涉及到的所有條帶的read_count值加1;否則write_count值加1。
該步驟給出的條帶性能收益值的分析是以條帶為單位,識(shí)別策略充分考慮到數(shù)據(jù)的條帶性,與以往的分析方法相比,更適合于應(yīng)用在陣列環(huán)境下的I/O行為分析。
上述步驟S3中,數(shù)據(jù)分類按照條帶的性能收益值P以及讀寫比例將條帶分為S-Ⅰ類、S-Ⅱ類和S-Ⅲ類。其中S-Ⅰ類適合于放在容量大、順序訪問性能高的HDD上,S-Ⅱ類和S-Ⅲ類適合于放在容量小、隨機(jī)訪問性能高的SSD上。
如圖3所示為本發(fā)明實(shí)施例公開的一種數(shù)據(jù)類型識(shí)別方法的流程示意圖,包括以下步驟:
301:將文件系統(tǒng)下發(fā)的請(qǐng)求Q分為若干個(gè)物理地址連續(xù)的子請(qǐng)求;
302:獲取各子請(qǐng)求的request size、seek distance以及數(shù)據(jù)塊的訪問頻率frequency;
303:計(jì)算各子請(qǐng)求所涉及的條帶的性能收益值P;
304:統(tǒng)計(jì)條帶在預(yù)設(shè)時(shí)間內(nèi)的讀寫比例Rw,并更新子請(qǐng)求涉及到的條帶的性能收益值;
305:判斷條帶qi的讀寫比例是否大于預(yù)設(shè)讀操作閾值threshold-read,若是,則執(zhí)行步驟306,否則執(zhí)行步驟307;
306:判斷條帶qi的性能收益值P是否高于第一預(yù)設(shè)值Pii;若是,則執(zhí)行步驟308,否則執(zhí)行步驟309;
307:判斷條帶qi的性能收益值是否高于第二預(yù)設(shè)值Piii,若是,則執(zhí)行步驟310,否則執(zhí)行步驟309;
308:將該條帶qi作為S-Ⅱ類數(shù)據(jù);
309:將該條帶qi作為S-Ⅰ類數(shù)據(jù);
310:將該條帶qi作為S-Ⅲ類數(shù)據(jù);
311:檢測是否完成所有條帶的數(shù)據(jù)類型劃分操作,若完成,則結(jié)束流程,否則執(zhí)行步驟305。
上述步驟S4中,根據(jù)對(duì)數(shù)據(jù)分類的結(jié)果以條帶為單位進(jìn)行數(shù)據(jù)重分布。這里,我們重點(diǎn)講將zone-Ⅰ上影響系統(tǒng)性能的數(shù)據(jù)遷到SSD區(qū)域進(jìn)行優(yōu)化。具體的,將zone-Ⅰ中的S-Ⅱ類數(shù)據(jù)采用拷貝式遷往zone-Ⅱ,將zone-Ⅰ中的S-Ⅲ類數(shù)據(jù)采用交換式遷往zone-Ⅲ。之所以采用兩種不同的遷移方式,主要是考慮到了S-Ⅱ和S-Ⅲ類數(shù)據(jù)在訪問特性上的本質(zhì)區(qū)別。如圖4所示,表示將zone-Ⅰ中的S-Ⅱ類數(shù)據(jù)以及S-Ⅲ類數(shù)據(jù)進(jìn)行遷移的示意圖。
圖4的上面部分表示的是將讀密集型S-Ⅱ型數(shù)據(jù)遷往zone-Ⅱ;下面部分表示將寫密集型S-Ⅲ型數(shù)據(jù)遷往zone-Ⅲ。對(duì)于S-Ⅱ型數(shù)據(jù)A來說,將其遷往zone-Ⅱ后,因?yàn)檫M(jìn)行的基本上都是讀操作,數(shù)據(jù)不被修改的可能性很大,當(dāng)數(shù)據(jù)A需要被遷出zone-Ⅱ時(shí)僅僅將臟數(shù)據(jù)部分寫回即可,所以采用拷貝方式遷移數(shù)據(jù),雖然造成了數(shù)據(jù)的冗余,增加了存儲(chǔ)開銷;但有效保存了源數(shù)據(jù)副本,降低了數(shù)據(jù)遷回的I/O開銷。
而對(duì)于S-Ⅲ型數(shù)據(jù)B來說,將其遷往zone-Ⅲ后,因?yàn)镮/O中有很多寫操作,數(shù)據(jù)不被修改的可能性很小,當(dāng)數(shù)據(jù)需要被遷出zone-Ⅲ時(shí),源數(shù)據(jù)等同于無效,此時(shí)數(shù)據(jù)的寫回量等同于遷入的量,所以采用交換式的數(shù)據(jù)遷移方式,即遷移的源地址和目的地址的數(shù)據(jù)進(jìn)行交換,而不保存源數(shù)據(jù)副本以節(jié)約存儲(chǔ)空間。
另外,在數(shù)據(jù)進(jìn)行重分布時(shí),考慮到數(shù)據(jù)的條帶性,遷移操作以條帶為基本單位,也就是說要將整個(gè)條帶的數(shù)據(jù)包括校驗(yàn)部分?jǐn)?shù)據(jù)作為整體進(jìn)行遷移。如圖5所示,表示一種可選的按條帶進(jìn)行動(dòng)態(tài)遷移數(shù)據(jù)的示意圖。
圖5中,條帶stripe0被識(shí)別為S-Ⅱ型遷往zone-Ⅱ,條帶stripe1被識(shí)別為S-Ⅲ型遷往zone-Ⅲ?,F(xiàn)在假設(shè)D0、D1、D3和D4為熱數(shù)據(jù),而其他的為冷數(shù)據(jù),因此對(duì)D2和D5的遷移并不是我們想要的。在圖4的描述中對(duì)于S-Ⅲ型數(shù)據(jù)的遷移采用交換式遷移以節(jié)約存儲(chǔ)空間。如果只遷移D3和D4,為了保證條帶的可靠性,必須要重新計(jì)算P1,因?yàn)榇藭r(shí)stripe1中的數(shù)據(jù)已經(jīng)發(fā)生變化,這與遷移整個(gè)條帶模式相比并不見得減少I/O開銷,反而增加了遷移操作的復(fù)雜度。對(duì)于S-Ⅱ型數(shù)據(jù)的遷移我們可以采用copy-on-write方式解決條帶中冷數(shù)據(jù)的遷移問題。具體來講,可以將D2的遷移推遲到stripe0進(jìn)行寫操作的時(shí)候,在對(duì)條帶進(jìn)行讀操作時(shí)通常并不會(huì)涉及到對(duì)條帶中冷數(shù)據(jù)部分的操作,而只有在對(duì)條帶進(jìn)行寫操作時(shí)才可能需要遷移條帶剩余的冷數(shù)據(jù)部分:1)對(duì)于冷數(shù)據(jù)的寫操作;2)對(duì)于熱數(shù)據(jù)的寫操作采用重構(gòu)寫??紤]到S-Ⅱ型數(shù)據(jù)的讀操作比例很大,在數(shù)據(jù)遷回去之前很可能只會(huì)進(jìn)行讀取條帶熱數(shù)據(jù)的操作,并不需要將冷數(shù)據(jù)部分遷回,該策略可以有效降低了S-Ⅱ型數(shù)據(jù)的遷移開銷,不過仍需要為條帶中的冷數(shù)據(jù)預(yù)留空間,大大降低了zone-Ⅱ空間的利用率。
另一種方法是將zone-Ⅱ按RAID0組織數(shù)據(jù)。如圖6所示,表示另一種可選的按條帶進(jìn)行動(dòng)態(tài)遷移數(shù)據(jù)的示意圖。
圖6中stripe0和stripe2被識(shí)別為S-Ⅱ型,可以只將條帶中的熱數(shù)據(jù)部分D0、D1、D6和D7遷移到zone-Ⅱ,并以RAID0方式組成一個(gè)條帶(條帶內(nèi)數(shù)據(jù)塊的邏輯地址可以不連續(xù))。相對(duì)于copy-on-write方式,該方法大大提高了SSD的空間利用率。由于條帶stripe0的數(shù)據(jù)可靠性需要配合該條帶在zone-Ⅰ上的其他數(shù)據(jù)和parity來保證,也就是說zone-Ⅰ上的D2和P0以及zone-Ⅱ上的D0和D1構(gòu)成了一個(gè)邏輯上的stripe。當(dāng)D0或D1執(zhí)行寫操作時(shí),除了自身數(shù)據(jù)部分的修改,還要更新zone-Ⅰ上stripe0的P0,由于zone-I由HDD組成對(duì)于P0的更新可能會(huì)影響整個(gè)的寫操作,但是考慮到zone-Ⅱ上數(shù)據(jù)為讀密集型并不會(huì)經(jīng)常涉及條帶寫操作,因此并不會(huì)對(duì)系統(tǒng)的寫性能產(chǎn)生明顯的影響。
具體來說,將zone-Ⅰ上的S-Ⅱ型數(shù)據(jù)采用拷貝式遷往zone-Ⅱ(減少遷回的開銷),S-Ⅲ型數(shù)據(jù)采用交換式遷往zone-Ⅲ;將zone-Ⅱ的S-Ⅰ型數(shù)據(jù)遷回zone-Ⅰ,S-Ⅲ型數(shù)據(jù)遷往zone-Ⅲ;將zone-Ⅲ上S-Ⅰ型和S-Ⅱ型數(shù)據(jù)遷往zone-Ⅰ。注意到zone-Ⅲ上的數(shù)據(jù)只能遷往zone-Ⅰ而不能直接遷往zone-Ⅱ,這是為了zone-Ⅱ上的數(shù)據(jù)在zone-Ⅰ上均有副本以保證其可靠性,如圖7所示,表示一種數(shù)據(jù)遷移過程的結(jié)構(gòu)示意圖。
該步驟給出的數(shù)據(jù)重分布策略根據(jù)不同類型數(shù)據(jù)的訪問特性采用針對(duì)性的遷移方式,有效降低了遷移的開銷;依據(jù)S-Ⅱ型數(shù)據(jù)的讀密集型特性將zone-Ⅱ按RAID0組織數(shù)據(jù),并采用部分條帶遷移策略,在保證了性能和可靠性的同時(shí)提高了SSD的空間利用率。
本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。