控制存儲(chǔ)設(shè)備陣列中的數(shù)據(jù)存儲(chǔ)的制作方法
【專利摘要】公開了控制存儲(chǔ)設(shè)備陣列中的數(shù)據(jù)存儲(chǔ)的方法、數(shù)據(jù)存儲(chǔ)控制器和系統(tǒng)。已經(jīng)提供用于減輕從存儲(chǔ)設(shè)備故障的非最優(yōu)恢復(fù)問(wèn)題的方法、裝置和計(jì)算機(jī)程序。一種方法包括:至少部分基于在數(shù)據(jù)重建時(shí)存儲(chǔ)設(shè)備的潛在讀取性能來(lái)確定用于重建出故障的設(shè)備的數(shù)據(jù)的所需寫入性能;并且分配在可用存儲(chǔ)內(nèi)的虛擬存儲(chǔ)區(qū)域,該虛擬存儲(chǔ)的分配至少部分基于所需寫入性能。通過(guò)向分配的虛擬存儲(chǔ)區(qū)域?qū)懭雭?lái)重建數(shù)據(jù),并且通過(guò)向至少一個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備、比如陣列內(nèi)的備用物理存儲(chǔ)設(shè)備遷移這一重建的數(shù)據(jù)來(lái)完成數(shù)據(jù)恢復(fù)。
【專利說(shuō)明】控制存儲(chǔ)設(shè)備陣列中的數(shù)據(jù)存儲(chǔ)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及控制在提供冗余性的存儲(chǔ)設(shè)備陣列中的數(shù)據(jù)存儲(chǔ),以便實(shí)現(xiàn)重建由于 陣列的設(shè)備的故障而丟失的數(shù)據(jù)。具體而言,本發(fā)明的至少一個(gè)方面涉及在設(shè)備陣列內(nèi)重 建數(shù)據(jù),對(duì)于這些設(shè)備,讀取和寫入速度由于固有地不同讀取和寫入速度或者由于從許多 設(shè)備讀取的數(shù)據(jù)被寫入到單個(gè)備用設(shè)備而不同。
[0002] 在本文說(shuō)明書中,用詞數(shù)據(jù)"復(fù)原"、數(shù)據(jù)"重構(gòu)"、數(shù)據(jù)"重建"或者數(shù)據(jù)"恢復(fù)"可 互換地用來(lái)表示重建由于數(shù)據(jù)存儲(chǔ)設(shè)備、比如固態(tài)存儲(chǔ)設(shè)備的故障而丟失的數(shù)據(jù)的活動(dòng)。 可互換地使用對(duì)"盤"或者"驅(qū)動(dòng)"或者"設(shè)備"故障的引用,但是很好理解并非所有存儲(chǔ)驅(qū) 動(dòng)使用旋轉(zhuǎn)盤。可以例如使用固態(tài)驅(qū)動(dòng)(SSD)設(shè)備來(lái)實(shí)施RAID陣列。本發(fā)明無(wú)論在存儲(chǔ) 設(shè)備陣列內(nèi)的設(shè)備之一的故障原因如何都支持?jǐn)?shù)據(jù)恢復(fù)。
【背景技術(shù)】
[0003] RAID存儲(chǔ)架構(gòu)是一種組合連接到陣列控制器的多個(gè)物理盤的架構(gòu),該陣列控制器 經(jīng)由一個(gè)或者多個(gè)高帶寬總線連接到一個(gè)或者多個(gè)主機(jī)計(jì)算機(jī)。
[0004] RAID代表"獨(dú)立盤冗余陣列"或者"廉價(jià)盤冗余陣列"。在控制器與陣列中的每個(gè) 存儲(chǔ)設(shè)備之間的鏈接可以包括小型計(jì)算機(jī)系統(tǒng)接口(SCSI)鏈路。陣列控制器通常負(fù)責(zé)控 制個(gè)體盤或者固態(tài)驅(qū)動(dòng)、維護(hù)冗余信息、執(zhí)行請(qǐng)求的傳送和從盤故障恢復(fù)。陣列按照邏輯單 元組合多個(gè)存儲(chǔ)設(shè)備,從而陣列對(duì)于該主機(jī)計(jì)算機(jī)或者每個(gè)主機(jī)計(jì)算機(jī)表現(xiàn)為編號(hào)例如為 1到N. B的數(shù)據(jù)單元的線性序列,其中N是陣列中的設(shè)備數(shù)目并且B是每個(gè)設(shè)備上的用戶數(shù) 據(jù)單元數(shù)目。
[0005] 所有RAID陣列的基本原理是跨越陣列的設(shè)備來(lái)?xiàng)l帶化(striping)連續(xù)數(shù)據(jù)單元 的概念。如 William V. Courtright II 在 1996 年 8 月的"RAIDFrame a Rapid Prototyping Tool for RAID systems"中介紹的那樣,條帶化被定義為將陣列控制器導(dǎo)出的線性地址空 間分解成某個(gè)尺寸的塊并且向連續(xù)設(shè)備指派連續(xù)塊而不是在向下一個(gè)切換之前向每個(gè)設(shè) 備填充連續(xù)數(shù)據(jù)??刂破髟O(shè)置的條帶化單元或者條帶單元是向單個(gè)設(shè)備指派的連續(xù)數(shù)據(jù)的 最大數(shù)量。條帶化單元可以例如是單個(gè)比特或者字節(jié)或者比物理設(shè)備的整個(gè)存儲(chǔ)容量更小 的某個(gè)其它數(shù)據(jù)尺寸。條帶化具有兩個(gè)主要益處:并發(fā)工作量中的自動(dòng)負(fù)荷平衡和用于單 個(gè)過(guò)程的大量順序傳送的高帶寬。N盤粗粒度條帶化陣列可以并行地服務(wù)于數(shù)目為N的1/ 〇 (輸入/輸出)請(qǐng)求。
[0006] David Patterson、Garth A. Gibson 和 Randy Katz 于 1987 年引入在"A case for Redundant Arrays of Inexpensive Disks(RAID)" 中定義的 RAID 陣列。作者原先已經(jīng)設(shè) 想稱為RAID級(jí)1至5的五個(gè)標(biāo)準(zhǔn)方案。多得多的變化、例如嵌套級(jí)已經(jīng)在標(biāo)準(zhǔn)中或者作為 專有解決方案演變。存儲(chǔ)聯(lián)網(wǎng)工業(yè)協(xié)會(huì)(SNIA)在公共RAID盤驅(qū)動(dòng)格式(DDF)標(biāo)準(zhǔn)中標(biāo)準(zhǔn) 化RAID級(jí)及其關(guān)聯(lián)數(shù)據(jù)格式。每個(gè)方案提供在三個(gè)關(guān)鍵目標(biāo)之間的不同平衡:彈性、性能 和容量。
[0007] 例如在RAID級(jí)4中,跨越多個(gè)設(shè)備分布數(shù)據(jù),并且用于防范數(shù)據(jù)丟失的奇偶校驗(yàn) 數(shù)據(jù)限于單個(gè)專用奇偶校驗(yàn)盤或者等效設(shè)備。陣列中的每個(gè)設(shè)備獨(dú)立操作,允許并行執(zhí)行 I/O請(qǐng)求。然而使用專用奇偶校驗(yàn)盤可能產(chǎn)生性能瓶頸。由于必須向用于每個(gè)非奇偶校驗(yàn) 數(shù)據(jù)塊的單個(gè)專用奇偶校驗(yàn)盤寫入奇偶校驗(yàn)數(shù)據(jù),所以總體寫入性能可能大量依賴于這一 奇偶校驗(yàn)盤的性能。
[0008] 在RAID級(jí)5中,存在用于布局?jǐn)?shù)據(jù)和奇偶校驗(yàn)使得奇偶校驗(yàn)均勻地分布于盤的多 種方式。圖1用圖形圖示示例RAID級(jí)5陣列10,該陣列具有在該圖中標(biāo)注為盤1到5的5 個(gè)獨(dú)立盤。圖1中所示左對(duì)稱組織是典型RAID級(jí)5布局的示例。每個(gè)盤具有5個(gè)塊。通 過(guò)沿著對(duì)角線放置奇偶校驗(yàn)單元、然后在每個(gè)盤上的最低可用偏移處在連續(xù)盤上放置連續(xù) 用戶數(shù)據(jù)單元來(lái)形成RAID級(jí)5陣列10。在RAID級(jí)5中,奇偶校驗(yàn)塊分布于整個(gè)陣列而不 是集中于單個(gè)盤上。這避免由于僅有一個(gè)奇偶校驗(yàn)盤而遇到的吞吐量損失。單個(gè)驅(qū)動(dòng)故障 不會(huì)破壞陣列的數(shù)據(jù)完整性。在驅(qū)動(dòng)故障時(shí),可以使用分布式奇偶校驗(yàn)來(lái)計(jì)算出故障的驅(qū) 動(dòng)中丟失的任何數(shù)據(jù),從而驅(qū)動(dòng)故障對(duì)終端用戶不可見(jiàn)。
[0009] 在圖1中,"塊i"(其中i是在1與20之間并且包括1和20的整數(shù))代表非指 定大小的用戶數(shù)據(jù)塊,并且"奇偶校驗(yàn)i-j"代表對(duì)數(shù)據(jù)塊i至j計(jì)算的奇偶校驗(yàn)塊。代表 用于恢復(fù)數(shù)據(jù)塊的冗余信息的奇偶校驗(yàn)塊保持對(duì)對(duì)應(yīng)數(shù)據(jù)單元的累計(jì)X0R。例如奇偶校驗(yàn) 1-4=塊1X0R塊2X0R塊3X0R塊4。在單驅(qū)動(dòng)故障之后,替換出故障的驅(qū)動(dòng)并且重建關(guān)聯(lián)數(shù) 據(jù)。如圖2中所示,如果盤2出故障,則將丟失塊2。然后從在剩余工作盤上可用的冗余數(shù) 據(jù)重構(gòu)塊2。例如恢復(fù)塊2為塊2=奇偶校驗(yàn)1-4X0R塊1X0R塊3X0R塊4??梢栽趯S矛F(xiàn) 有備用驅(qū)動(dòng)23上重建或者跨越陣列的剩余驅(qū)動(dòng)分布恢復(fù)的數(shù)據(jù)。一些存儲(chǔ)系統(tǒng)實(shí)施交換 動(dòng)作以用另一驅(qū)動(dòng)替換出故障的驅(qū)動(dòng),并且可以在替換出故障的驅(qū)動(dòng)之后重建出故障的驅(qū) 動(dòng)上的數(shù)據(jù),但是許多應(yīng)用要求不能等待驅(qū)動(dòng)替換的非??焖俚闹亟?。
[0010] RAID級(jí)5的一個(gè)實(shí)現(xiàn)方式是具有內(nèi)置備用盤的RAID級(jí)5增強(qiáng)(或者RAID5E)。這 一 RAID實(shí)現(xiàn)方式跨越陣列中的所有盤條帶化數(shù)據(jù)和奇偶校驗(yàn)。然而在具有熱備用或者專 用備用盤23的傳統(tǒng)RAID5配置中,備用盤23處于陣列旁邊等待驅(qū)動(dòng)出故障,在這一點(diǎn)使備 用盤23可用并且陣列用此新硬件來(lái)重建數(shù)據(jù)集。在RAID級(jí)5E中,備用盤實(shí)際上是RAID 級(jí)5E陣列的部分。
[0011] 圖3示出RAID級(jí)5E邏輯驅(qū)動(dòng)的示例。RAID5E陣列包括五個(gè)物理盤(盤1至5)。 在這5個(gè)物理盤之上創(chuàng)建邏輯盤。跨越盤條帶化數(shù)據(jù)從而在邏輯盤中創(chuàng)建塊(塊1到16)。 應(yīng)當(dāng)注意在這一幅圖中在陣列的結(jié)束處示出"空白"空間(即每個(gè)盤的結(jié)束塊)。"空白"空 間是與分布式備用盤對(duì)應(yīng)的空閑空間。條帶化數(shù)據(jù)奇偶校驗(yàn)(由"奇偶校驗(yàn)"表示)的存儲(chǔ), 并且其如在RAID級(jí)5中一樣逐個(gè)盤地移位。
[0012] 參照?qǐng)D4,在RAID5E陣列中的盤42出故障時(shí),通過(guò)使用在陣列的結(jié)束處的空白空 間將在出故障的盤上的數(shù)據(jù)重構(gòu)到剩余盤中。陣列經(jīng)歷壓縮,并且分布式備用盤變成陣列 的部分。邏輯盤保持RAID級(jí)5E而跨越盤分布奇偶校驗(yàn)塊。在替換出故障的盤時(shí),再次擴(kuò) 展陣列以使陣列回到原有條帶化方案(在圖4上未示出)。
[0013] RAID級(jí)6稱為具有雙分布式奇偶校驗(yàn)的塊級(jí)條帶化并且提供兩個(gè)驅(qū)動(dòng)故障的容 錯(cuò)性,從而陣列在具有至多兩個(gè)出故障的驅(qū)動(dòng)的情況下繼續(xù)操作。
[0014] 轉(zhuǎn)向可以在RAID中提供的實(shí)際存儲(chǔ)盤類型,固態(tài)驅(qū)動(dòng)(SSD)設(shè)備是使用非易失 性閃存以持久地存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)設(shè)備。相比于傳統(tǒng)磁盤、比如硬盤驅(qū)動(dòng)(HDD)或者軟 盤--這些磁盤是包含旋轉(zhuǎn)盤和可移動(dòng)讀取/寫入頭的機(jī)電設(shè)備--SSD未運(yùn)用任何移動(dòng) 機(jī)械部件并且具有比旋轉(zhuǎn)硬盤更低的延時(shí)。如果硬盤必須從多個(gè)位置讀取數(shù)據(jù),則要求驅(qū) 動(dòng)頭在軌道之間移動(dòng),然后通常必須等待一些毫秒以讓正確塊在它們下面旋轉(zhuǎn)以被讀取。
[0015] 現(xiàn)代固態(tài)驅(qū)動(dòng)快得多地執(zhí)行,因?yàn)樗怯蒒AND(N0T AND)閃存匯集構(gòu)成的硬驅(qū)動(dòng)。 固態(tài)驅(qū)動(dòng)不具有移動(dòng)頭和旋轉(zhuǎn)盤片(platter)。每個(gè)閃存塊可以以與每個(gè)其它閃存塊相同 的速度而訪問(wèn),無(wú)論塊是否恰好存儲(chǔ)于彼此旁邊或者存儲(chǔ)在不同物理NAND芯片中。作為結(jié) 果,SSD與機(jī)電盤相比提供低得多的延時(shí)和快得多的數(shù)據(jù)訪問(wèn)時(shí)間。例如在HDD取回大文 件時(shí),以上描述的對(duì)于文件的搜索可以造成l〇-15ms的訪問(wèn)時(shí)間,而SSD可以如0. lms-樣 快地取回相同文件。SSD通常比HDD中的旋轉(zhuǎn)盤約快10倍。在每秒輸入/輸出操作方面, SSD可以用來(lái)替換多個(gè)旋轉(zhuǎn)盤。除了更低訪問(wèn)時(shí)間之外,SSD可以有效地更快讀取和寫入數(shù) 據(jù)從而提供更快響應(yīng)和更快傳送速度從而造成更高吞吐量。SSD技術(shù)因此適合于具有高性 能要求的應(yīng)用。這使得SSD服務(wù)器對(duì)于其中吞吐量重要的應(yīng)用、比如視頻分發(fā)或者財(cái)務(wù)應(yīng) 用而言很理想。
[0016] 可以在服務(wù)器中安裝若干固態(tài)驅(qū)動(dòng)設(shè)備以形成RAID??梢栽谌舾煞?wù)器(例如都 是從IBM公司可用的System X和IBM iDataPlex?服務(wù)器以及BladeCenter?'和IBM Flex SystemTM服務(wù)器)上安裝SSD和支持的RAID控制器。由SSD構(gòu)成的RAID陣列組合 了 RAID存儲(chǔ)陣列的益處和SSD設(shè)備的益處二者,主要為容錯(cuò)性和非??斓臄?shù)據(jù)存儲(chǔ)。如在 RAID級(jí)5和5E的以上示例中所示,通過(guò)備用盤上的典型數(shù)據(jù)重構(gòu)機(jī)制在SSD RAID陣列中 提供容錯(cuò)性。
[0017] 一般而言,SSD的固有速度允許SSD RAID陣列在SSD盤出故障時(shí)的快速數(shù)據(jù)重構(gòu)。 然而SSD表現(xiàn)出一些限制:通常SSD盤讀取可以比寫入SSD盤快許多倍。作為示例,目前從 IBM?公司可用的SSD驅(qū)動(dòng)具有為1/4或者3/20的寫入速度與讀取速度之比。
[0018] SSD可以基于SLC (單級(jí)單元)或者M(jìn)LC (多級(jí)單元)NAND閃存技術(shù)。SLC閃存在 浮柵晶體管或者單元陣列中存儲(chǔ)數(shù)據(jù),向每個(gè)單元存儲(chǔ)1比特?cái)?shù)據(jù)。與SLC閃存相比,MLC 閃存每單元存儲(chǔ)兩比特?cái)?shù)據(jù)??梢詫LC閃存進(jìn)一步描繪為兩類:在消費(fèi)者(單用戶)設(shè)備 中使用的消費(fèi)者等級(jí)MLC (cMLC);以及被具體設(shè)計(jì)用于在企業(yè)環(huán)境(多用戶)中使用的企業(yè) 等級(jí)MLC (eMLC)。SLC、cMLC和eMLC中的每項(xiàng)具有不同特性讀取和寫入速度以及在讀取與 寫入速度之間的不同比率。例如對(duì)于讀取和寫入4kB數(shù)據(jù)塊的SLC設(shè)備,讀取速度為每秒 4, 000并且寫入速度為1,600ps (即讀取是寫入速度的2. 5倍)。這與HDD比較,對(duì)于HDD, 典型讀取速度為320ps并且典型寫入速度為180ps (比率為1. 77)。這一讀取速度和寫入 速度的不對(duì)稱性對(duì)于cMLC和eMLC技術(shù)甚至更高,這些技術(shù)通常實(shí)現(xiàn)針對(duì)4kB數(shù)據(jù)塊的讀 取速度20, OOOps和針對(duì)相同大小的塊的寫入速度3, OOOps -比率為6. 6。因此,在使用當(dāng) 前SSD時(shí)寫入操作比讀取操作慢得多。
[0019] 在一些RAID實(shí)現(xiàn)方式中,在陣列重構(gòu)期間在讀取速度與寫入速度之間的差異部 分歸因于將讀取的數(shù)據(jù)跨越若干盤被條帶化并且數(shù)據(jù)在一個(gè)專用備用盤上重建這樣的事 實(shí)。從多個(gè)盤并行讀取數(shù)據(jù)比向一個(gè)專用備用盤上寫入重建的數(shù)據(jù)更快。例如在RAID5中, 在RAID陣列重構(gòu)期間,從若干剩余盤讀取數(shù)據(jù)同時(shí)恢復(fù)的數(shù)據(jù)被寫入到僅一個(gè)備用盤。
[0020] 如本領(lǐng)域技術(shù)人員將理解的那樣,分布式備用不受同級(jí)讀取/寫入速度不對(duì)稱性 的困擾。這是因?yàn)榉植际絺溆脵C(jī)制、比如在RAID5E存儲(chǔ)系統(tǒng)中的分布式備用機(jī)制,涉及到 在陣列的盤之中分布的備用存儲(chǔ)空間(見(jiàn)圖3和4)。因此跨越剩余工作盤擴(kuò)展重建所需要 的輸入/輸出操作,從而減少讀取和寫入操作速度的不對(duì)稱性。然而讀取/寫入速度的不對(duì) 稱性在使用分布式備用機(jī)制的RAID陣列中并不消失,因?yàn)樵诂F(xiàn)有技術(shù)中,從其讀取的盤數(shù) 目一般等于向其寫入的盤數(shù)目,因?yàn)榉植际絺溆每臻g在正在讀取的相同盤集合上。應(yīng)當(dāng)注 意分布式備用方案、比如RAID5E尚未變得普及,因?yàn)樗鼈兙哂兴鼈冏约旱膹?fù)雜性和缺點(diǎn)。 例如從同一存儲(chǔ)設(shè)備讀取和寫入可能有問(wèn)題。其中單個(gè)盤用作備用的專用備用仍然是用于 組織備用存儲(chǔ)空間的最廣泛使用的選項(xiàng)。
[0021] 在這一背景中,向備用盤寫入數(shù)據(jù)的速度是在重建RAID陣列期間的瓶頸。用于重 建RAID陣列的時(shí)間是關(guān)鍵的,因?yàn)樵诒P出故障時(shí)有以密集盤處理為特征的脆弱時(shí)段。在這 一時(shí)間期間,陣列重構(gòu)對(duì)于第二故障是脆弱的。重建陣列花費(fèi)的時(shí)間越長(zhǎng),這一脆弱時(shí)段就 持續(xù)越長(zhǎng)。陣列重構(gòu)的速度因此在盤出故障時(shí)是關(guān)鍵的。
[0022] 重構(gòu)速度對(duì)于SSD RAID陣列也是關(guān)鍵的,因?yàn)橐话愣?,SSD技術(shù)被用于的應(yīng)用 是不容許高延時(shí)的關(guān)鍵應(yīng)用(例如視頻分發(fā)和財(cái)務(wù)分析)。SSD的當(dāng)前帶寬是限制寫入操作 速度的瓶頸并且因此妨礙SSD RAID陣列重構(gòu)速度。因此需要在盤故障的情況下最小化用 于包括高速SSD陣列的存儲(chǔ)陣列的重構(gòu)時(shí)間。SSD設(shè)備也具有在訪問(wèn)次數(shù)方面的有限壽命, 因此預(yù)計(jì)在SSD用于長(zhǎng)期持久數(shù)據(jù)存儲(chǔ)時(shí)需要數(shù)據(jù)重構(gòu)。
【發(fā)明內(nèi)容】
[0023] 本發(fā)明的第一方面提供一種數(shù)據(jù)恢復(fù)方法,用于對(duì)在存儲(chǔ)設(shè)備陣列中的存儲(chǔ)設(shè)備 的故障做出響應(yīng),該方法包括:
[0024] 至少部分基于在數(shù)據(jù)重建時(shí)存儲(chǔ)設(shè)備的潛在讀取性能來(lái)確定用于重建出故障的 設(shè)備的數(shù)據(jù)的所需寫入性能;
[0025] 分配在可用存儲(chǔ)內(nèi)的虛擬存儲(chǔ)區(qū)域,該虛擬存儲(chǔ)的分配至少部分基于所需寫入性 能;
[0026] 通過(guò)向分配的虛擬存儲(chǔ)區(qū)域?qū)懭雭?lái)重建出故障的設(shè)備的數(shù)據(jù);以及
[0027] 向至少一個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備遷移重建的數(shù)據(jù)以完成數(shù)據(jù)恢復(fù)。
[0028] 在本發(fā)明的一個(gè)實(shí)施例中,通過(guò)參考將在數(shù)據(jù)重建期間讀取的數(shù)據(jù)存儲(chǔ)設(shè)備的每 秒輸入/輸出操作(I〇PS)的潛在讀取數(shù)目和/或在每個(gè)讀取操作中讀取的潛在數(shù)據(jù)量來(lái) 確定潛在讀取性能。
[0029] 在一個(gè)實(shí)施例中,確定所需寫入性能包括計(jì)算用于重建出故障的設(shè)備的數(shù)據(jù)的所 需虛擬存儲(chǔ)區(qū)域大小和/或所需寫入速度。
[0030] 在一個(gè)實(shí)施例中,確定所需寫入性能包括確定所需數(shù)據(jù)存儲(chǔ)區(qū)域大小并且確定所 需寫入速度以匹配預(yù)計(jì)每秒讀取操作數(shù)目和正在讀取的數(shù)據(jù)塊大小,以用于重建出故障的 設(shè)備的數(shù)據(jù)。這可以根據(jù)在陣列內(nèi)剩余的設(shè)備數(shù)目和那些設(shè)備的固有速度以及重新計(jì)算數(shù) 據(jù)所需要的時(shí)間而變化。然后分配虛擬存儲(chǔ)區(qū)域("V盤")以實(shí)現(xiàn)確定的匹配寫入速度或者 在系統(tǒng)的約束內(nèi)盡可能近似該速度。
[0031] 在一個(gè)備選實(shí)施例中,確定寫入性能基于哪個(gè)設(shè)備已經(jīng)出故障來(lái)確定所需數(shù)據(jù)容 量,然后做出關(guān)于分配適當(dāng)大小的存儲(chǔ)的請(qǐng)求。然后,存儲(chǔ)控制器考慮用于數(shù)據(jù)重建的預(yù)計(jì) 讀取操作速度來(lái)分配在陣列內(nèi)的存儲(chǔ)以在陣列內(nèi)的可用設(shè)備的約束內(nèi)近似最優(yōu)寫入速度。
[0032] 在一個(gè)實(shí)施例中,分配虛擬存儲(chǔ)區(qū)域包括分配v盤以實(shí)現(xiàn)在v盤的寫入性能(容量 和寫入速度)與陣列的剩余設(shè)備的預(yù)計(jì)讀取性能(每秒讀取操作數(shù)目及其數(shù)據(jù)大小)之間的 最好可能匹配,以重建由于設(shè)備的故障而丟失的數(shù)據(jù)。實(shí)現(xiàn)這一最優(yōu)分配可以涉及選擇用 于v盤數(shù)據(jù)分布跨越的多個(gè)設(shè)備(以允許并行寫入數(shù)據(jù)條帶)并且選擇在混合能力設(shè)備陣列 內(nèi)的特定設(shè)備,從而最優(yōu)地使用快速設(shè)備(即可以在需要時(shí)在恢復(fù)中使用所有剩余設(shè)備或 者快速設(shè)備子集;但是不是所有設(shè)備在所有環(huán)境中將被需要并且分配太多存儲(chǔ)用于恢復(fù)并 不是最優(yōu)的)。一旦已經(jīng)向備用存儲(chǔ)設(shè)備遷移數(shù)據(jù)就可以釋放分配的v盤存儲(chǔ)。
[0033] 通常將跨越陣列的多個(gè)可用存儲(chǔ)設(shè)備分布所分配的虛擬存儲(chǔ)區(qū)域,而不是依賴于 單個(gè)物理備用存儲(chǔ)設(shè)備。這具有如下優(yōu)點(diǎn),該優(yōu)點(diǎn)為減輕原本可能由于從多個(gè)設(shè)備并行讀 取并且然后向單個(gè)設(shè)備寫入而造成的不匹配。歸因于在SSD RAID陣列中的快速讀取和更 慢寫入速度之間的顯著差異,本發(fā)明對(duì)于包括SSD設(shè)備陣列的RAID陣列是有利的。
[0034] 在向v盤重建之后將數(shù)據(jù)遷移到的備用存儲(chǔ)設(shè)備可以是選擇的備用SSD設(shè)備或者 在陣列內(nèi)的另一類型的設(shè)備、比如更低成本的HDD。在本發(fā)明的一個(gè)實(shí)施例中,備用存儲(chǔ)設(shè) 備可以是分布式虛擬存儲(chǔ)設(shè)備,而本發(fā)明對(duì)于快速恢復(fù)仍然有利,因?yàn)槭褂靡呀?jīng)被確定具 有所需寫入容量的最優(yōu)虛擬存儲(chǔ)區(qū)域來(lái)執(zhí)行遷移前重建步驟以減輕寫入瓶頸。例如可以使 用在多個(gè)高性能設(shè)備、比如SSD上的分配的虛擬存儲(chǔ)來(lái)執(zhí)行重建,以最小化脆弱時(shí)段,并且 然后可以向HDD存儲(chǔ)遷移重建的數(shù)據(jù)。
[0035] 在一個(gè)實(shí)施例中,遷移步驟包括向?qū)S脗溆迷O(shè)備的批量復(fù)制操作而無(wú)需跨越多個(gè) 設(shè)備將塊條帶化。
[0036] 在一個(gè)實(shí)施例中,在向調(diào)配的虛擬存儲(chǔ)區(qū)域的重建完成時(shí)執(zhí)行遷移步驟,但是在 一個(gè)備選實(shí)施例中,如果在重建完成之前開始遷移步驟將加速數(shù)據(jù)恢復(fù)過(guò)程的過(guò)程,則可 以這樣做。
【專利附圖】
【附圖說(shuō)明】
[0037] 以下參照以下附圖僅通過(guò)示例更具體描述本發(fā)明的實(shí)施例:
[0038] 圖1圖示具有旋轉(zhuǎn)塊交織奇偶校驗(yàn)(左對(duì)稱)的RAID5陣列。
[0039] 圖2圖示在盤故障之后的重構(gòu)RAID5。
[0040] 圖3圖示RAID5E陣列。
[0041] 圖4圖示在盤故障之后的重構(gòu)RAID5E陣列。
[0042] 圖5圖示分配分層存儲(chǔ)分配地概念。
[0043] 圖6是圖示不同步驟的流程圖,這些步驟描述根據(jù)本發(fā)明的第一實(shí)施例的方法。
[0044] 圖7是圖示不同步驟的流程圖,這些步驟描述根據(jù)本發(fā)明的第二實(shí)施例的方法。
[0045] 圖8是圖示不同步驟的流程圖,這些步驟描述根據(jù)本發(fā)明的第三實(shí)施例的方法。
【具體實(shí)施方式】
[0046] 如本領(lǐng)域技術(shù)人員將理解的那樣,本發(fā)明的諸方面可以體現(xiàn)為一種系統(tǒng)、方法、計(jì) 算機(jī)程序產(chǎn)品或者計(jì)算機(jī)程序。因而,可以完全在硬件中實(shí)施本發(fā)明,可以完全在軟件(包 括固件、常駐軟件、微代碼等)中實(shí)施根據(jù)本發(fā)明的存儲(chǔ)控制器,或者一個(gè)實(shí)施例可以組合 軟件和硬件方面,這些方面一般都可以在這里稱為"系統(tǒng)"或者系統(tǒng)的部件。另外,本發(fā)明 的方面可以采用包括一個(gè)或者多個(gè)計(jì)算機(jī)可讀介質(zhì)的計(jì)算機(jī)程序產(chǎn)品這一形式,該一個(gè)或 者多個(gè)計(jì)算機(jī)可讀介質(zhì)具有在其上體現(xiàn)的計(jì)算機(jī)可讀程序代碼。
[0047] 可以采用一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)的任意組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算 機(jī)可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是--但不限 于--電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計(jì) 算機(jī)可讀介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜 式計(jì)算機(jī)盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器 (EPROM或閃存)、光纖、便攜式緊湊盤只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者 上述的任意合適的組合。在本文件中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的 有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0048] 計(jì)算機(jī)可讀的信號(hào)介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號(hào), 其中承載了計(jì)算機(jī)可讀的程序代碼。這種傳播的數(shù)據(jù)信號(hào)可以采用多種形式,包括--但 不限于--電磁信號(hào)、光信號(hào)或上述的任意合適的組合。計(jì)算機(jī)可讀的信號(hào)介質(zhì)還可以是 計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)以外的任何計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者 傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
[0049] 計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括--但不限 于--無(wú)線、有線、光纜、RF等等,或者上述的任意合適的組合。
[0050] 可以以一種或多種程序設(shè)計(jì)語(yǔ)言的任意組合來(lái)編寫用于執(zhí)行本發(fā)明操作的計(jì)算 機(jī)程序代碼,所述程序設(shè)計(jì)語(yǔ)言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言一諸如Java、Smalltalk、C++ 等,還包括常規(guī)的過(guò)程式程序設(shè)計(jì)語(yǔ)言一諸如"C"語(yǔ)言或類似的程序設(shè)計(jì)語(yǔ)言。程序代碼可 以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、 部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。 在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)任意種類的網(wǎng)絡(luò)--包括局域網(wǎng)(LAN) 或廣域網(wǎng)(WAN)-連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù) 提供商來(lái)通過(guò)因特網(wǎng)連接)。Java和所有基于Java的商標(biāo)和標(biāo)志是Oracle的注冊(cè)商標(biāo)。
[0051] 下面將參照根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和 /或框圖描述本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中 各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算 機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得這些計(jì)算 機(jī)程序指令在通過(guò)計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時(shí),產(chǎn)生了實(shí)現(xiàn)流程圖 和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的裝置。
[0052] 也可以把這些計(jì)算機(jī)程序指令存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中,這些指令使得計(jì)算機(jī)、 其它可編程數(shù)據(jù)處理裝置、或其他設(shè)備以特定方式工作,從而,存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的 指令就產(chǎn)生出包括實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的指令 的制造品(article of manufacture)〇
[0053] 也可以把計(jì)算機(jī)程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備 上,使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì) 算機(jī)實(shí)現(xiàn)的過(guò)程,從而使得在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令提供實(shí)現(xiàn)流程圖和/ 或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的過(guò)程。
[0054] 附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程 序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以 代表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè) 用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所 標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以 基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的 是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行 規(guī)定的功能或動(dòng)作的專用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的 組合來(lái)實(shí)現(xiàn)。
[0055] 為了避免疑惑,術(shù)語(yǔ)"包括"如這里在說(shuō)明書和權(quán)利要求書中所用不會(huì)狹義地解釋 為意味著"僅由……構(gòu)成"。
[0056] 在本說(shuō)明書中引用"一個(gè)實(shí)施例"或者"這一實(shí)施例"等意味著在本發(fā)明的至少一 個(gè)實(shí)施例中包括正在描述的特定特征、結(jié)構(gòu)或者特性。這樣的短語(yǔ)在本說(shuō)明書中的出現(xiàn)未 必是指相同實(shí)施例,它們也并不必然互斥。
[0057] 本發(fā)明的實(shí)施例提供向被調(diào)配用于足夠快以免成為瓶頸的虛擬盤("V盤")上重建 丟失的數(shù)據(jù)。在實(shí)施例中,v盤是如下臨時(shí)重構(gòu)目標(biāo)空間,該臨時(shí)重構(gòu)目標(biāo)空間具有充足的 寫入容量和速度以使輸入/輸出操作能夠滿足SSD RAID陣列重構(gòu)的高速度要求。當(dāng)在臨 時(shí)v盤上完成重構(gòu)時(shí),可以將所述v盤遷移到選擇的物理備用盤上的映像模式(即按照非條 帶化格式寫入)。
[0058] SSD RAID陣列可以由軟件實(shí)施的控制器、比如IBM? SAN卷控制器(SVC)產(chǎn)品 或者IBM Storwize V7000系統(tǒng)或者由其它類型的控制器來(lái)控制。可以配置某些存儲(chǔ)系統(tǒng)、 比如IBM Storwize V7000系統(tǒng)為由至少一個(gè)SSD和/或至少一個(gè)HDD和/或至少一個(gè)不 同類型的驅(qū)動(dòng)構(gòu)成的陣列。在那些驅(qū)動(dòng)之中,至少一個(gè)驅(qū)動(dòng)可以被配置成為備用驅(qū)動(dòng)。在 其中用來(lái)存儲(chǔ)用戶數(shù)據(jù)的驅(qū)動(dòng)為SSD的配置中,陣列的該或者每個(gè)備用驅(qū)動(dòng)可以是SSD或 者HDD或者不同類型的驅(qū)動(dòng)。某些存儲(chǔ)控制器提供每秒輸入/輸出操作(I0PS)能力比個(gè) 體物理盤能力更好的虛擬存儲(chǔ)。
[0059] 存儲(chǔ)控制器、比如IBM Storwize V7000Easy Tier ?控制器引入向存儲(chǔ)設(shè)備 的不同'層'分配數(shù)據(jù)的特征??刂破魈峁┮环N用于基于讀取/寫入活動(dòng)水平在IBM Storwize V7000解決方案內(nèi)向最適當(dāng)?shù)膶舆w移或者移動(dòng)數(shù)據(jù)的機(jī)制。例如IBM Storwize V7000Easy Tier ?控制器實(shí)現(xiàn)具有高1/0密度和低響應(yīng)時(shí)間要求的"熱數(shù)據(jù)"在高性能層 (例如SSD)上的數(shù)據(jù)遷移,而向更低性能的層(例如HDD)遷移以更低速率訪問(wèn)的"更冷數(shù) 據(jù)"。
[0060] 圖5圖示比如在IBM Storwize V7000Easy Tier ?控制器中使用的分層存儲(chǔ)分配 的概念。IBM Storwize V7000向各種存儲(chǔ)池中分配若干受管理盤(M盤)。受管理盤(M盤) 是指IBM Storwize V7000控制器虛擬化的存儲(chǔ)單元。Easy Tier ?性能功能監(jiān)視所有卷上 的主機(jī)1/0活動(dòng)和延時(shí)并且向存儲(chǔ)池內(nèi)的更高層設(shè)備(例如SSD)遷移或者移動(dòng)高活動(dòng)數(shù)據(jù) (或者"熱"數(shù)據(jù))。它也從高分層Μ盤向更低分層Μ盤(例如HDD)移回活動(dòng)已經(jīng)下降(或者 "冷卻")的數(shù)據(jù)。因此,Easy Tier⑧特征使得有可能在正常使用期間良好利用SSD的輸入 /輸出性能,并且IBM Storwize V7000系統(tǒng)的驅(qū)動(dòng)(例如SSD)可以被配置成用于高性能冗 余存儲(chǔ)解決方案的RAID陣列。IBM Storwize V7000系統(tǒng)使用IBM存儲(chǔ)系統(tǒng)Easy Tier特 征以在更好性能的存儲(chǔ)上自動(dòng)放置"熱"數(shù)據(jù)卷。
[0061] 然而,當(dāng)前解決方案未優(yōu)化重建性能。本發(fā)明在恢復(fù)期間添加附加靈活性和控制, 以在減少的脆弱時(shí)段的情況下實(shí)現(xiàn)快速重建,在該脆弱時(shí)段期間,陣列處于來(lái)自第二故障 的風(fēng)險(xiǎn)。這增加整個(gè)存儲(chǔ)系統(tǒng)的可靠性。
[0062] 本發(fā)明的一個(gè)實(shí)施例使用包括高性能SSD存儲(chǔ)設(shè)備的RAID陣列,并且實(shí)現(xiàn)向在陣 列內(nèi)的臨時(shí)虛擬存儲(chǔ)重建,該虛擬存儲(chǔ)被分配用于實(shí)現(xiàn)響應(yīng)于陣列內(nèi)的存儲(chǔ)設(shè)備的故障的 快速重建。與依賴于向單個(gè)專用備用存儲(chǔ)設(shè)備上直接重建數(shù)據(jù)的系統(tǒng)比較,適當(dāng)分布式虛 擬存儲(chǔ)區(qū)域的分配和使用以及向備用存儲(chǔ)設(shè)備的后續(xù)遷移實(shí)現(xiàn)減少在RAID陣列內(nèi)重建數(shù) 據(jù)所花費(fèi)的時(shí)間。
[0063] 在具有單個(gè)物理備用驅(qū)動(dòng)的SSD RAID陣列的背景中描述本發(fā)明的實(shí)施例,并且本 發(fā)明在這一背景中高度地有利。然而本領(lǐng)域技術(shù)人員將理解本發(fā)明的范圍不限于SSD存儲(chǔ) 并且不限于包括僅一個(gè)物理備用設(shè)備的RAID陣列,因?yàn)榭梢杂卸鄠€(gè)備用或者分布式備用。 [0064] 在本發(fā)明的實(shí)施例中,提供具有適當(dāng)輸入/輸出能力的快速寫入性能虛擬盤以減 少在RAID陣列的存儲(chǔ)設(shè)備出故障時(shí)的數(shù)據(jù)重構(gòu)時(shí)間。
[0065] 在第一實(shí)施例中,分配虛擬存儲(chǔ)區(qū)域以用于重建從SSD設(shè)備陣列的出故障的設(shè)備 丟失的數(shù)據(jù)。分配虛擬空間需要評(píng)估或者計(jì)算所需存儲(chǔ)容量和寫入I0PS以及每操作數(shù)據(jù) 大小,從而寫入操作不構(gòu)成瓶頸,然后分配實(shí)現(xiàn)或者接近要求的虛擬存儲(chǔ)。
[0066] 現(xiàn)在參照?qǐng)D6描述第一實(shí)施例。在步驟1中,識(shí)別需要SSD RAID陣列重構(gòu)。這樣 的識(shí)別可以是如下指示的結(jié)果,該指示為預(yù)計(jì)陣列的一個(gè)設(shè)備出故障或者正在出故障。備 選地,可以在設(shè)備之一已經(jīng)出故障之后獲得需要SSD RAID陣列重構(gòu)這樣的指示。
[0067] 在步驟2中,計(jì)算目標(biāo)虛擬存儲(chǔ)區(qū)域的每秒輸入/輸出操作(I0PS)的可能所需寫 入數(shù)目,從而寫入操作不產(chǎn)生帶寬瓶頸。這考慮在陣列中剩余的設(shè)備數(shù)目和這些下層物理 設(shè)備的速度,因?yàn)檫@些參數(shù)確定可以預(yù)計(jì)并且如果要避免瓶頸則需要寫入操作匹配的每秒 潛在讀取操作數(shù)目。以下更具體描述示例實(shí)現(xiàn)方式。
[0068] 在步驟3中,請(qǐng)求分配適當(dāng)大小和寫入輸入/輸出操作能力的虛擬盤(V盤)用于 重建陣列的目的。可以請(qǐng)求虛擬盤調(diào)配系統(tǒng)、比如SAN卷控制器(SVC)的虛擬盤調(diào)配系統(tǒng), 以分配和配置正確大小和寫入輸入/輸出操作能力的虛擬盤。以下更具體描述這一點(diǎn)。在 一個(gè)實(shí)施例中,分配與出故障的設(shè)備的總存儲(chǔ)容量對(duì)應(yīng)的虛擬存儲(chǔ)區(qū)域,以保證對(duì)于因故 障而丟失的所有數(shù)據(jù)有充足分配的存儲(chǔ)。
[0069] 隨后在步驟4中,虛擬盤調(diào)配系統(tǒng)分配具有所需存儲(chǔ)性能的v盤,該存儲(chǔ)性能主要 為大小和輸入/輸出操作能力。所需v盤存儲(chǔ)性能將依賴于下層物理設(shè)備的物理特性、t匕 如剩余物理設(shè)備的速度、出故障的設(shè)備的存儲(chǔ)容量、RAID陣列大小并且尤其是陣列中的設(shè) 備數(shù)目以及可能的其它參數(shù)。可以優(yōu)選地跨越在剩余工作物理SSD設(shè)備之中的多個(gè)設(shè)備分 布所分配的v盤,以使多個(gè)寫入能夠并行執(zhí)行(在從多個(gè)設(shè)備的并行讀取之后)。也可以從 RAID陣列存儲(chǔ)系統(tǒng)以外的物理設(shè)備分配v盤。應(yīng)當(dāng)注意如果使用若干陣列,則陣列數(shù)目將 影響存儲(chǔ)性能。分配的v盤在v盤存儲(chǔ)性能等于或者接近在步驟2中計(jì)算的所需性能時(shí)最 優(yōu)。應(yīng)當(dāng)注意虛擬備用空間的最優(yōu)分配避免了過(guò)度分配虛擬備用空間。
[0070] 在步驟5中,開始RAID陣列重構(gòu),從而向由此分配的快速v盤上恢復(fù)丟失的數(shù)據(jù)。 通常從跨越剩余設(shè)備而條帶化的數(shù)據(jù)和從奇偶校驗(yàn)信息重建在RAID陣列的一個(gè)設(shè)備的故 障中丟失的數(shù)據(jù)。在本發(fā)明的一個(gè)實(shí)施例中,針對(duì)相對(duì)短時(shí)間和為了避免寫入瓶頸而需要 的分配的v盤包括在選擇的最終目標(biāo)物理設(shè)備上的存儲(chǔ)空間以及在其它設(shè)備上的一些存 儲(chǔ)空間。這避免必須在其它設(shè)備上分配比必需更多的存儲(chǔ)空間,但其仍然實(shí)現(xiàn)減輕在重建 步驟期間的延遲的目標(biāo)。
[0071] 可以借助在存儲(chǔ)器中運(yùn)行的計(jì)算機(jī)程序來(lái)完成執(zhí)行用于恢復(fù)數(shù)據(jù)的指令。根據(jù)本 發(fā)明的實(shí)施例,向分配的v盤寫入作為這些指令的執(zhí)行結(jié)果而恢復(fù)的數(shù)據(jù)。在需要時(shí)動(dòng)態(tài) 分配的v盤的特性、主要為v盤的大小及其I0PS/帶寬能力,使得最小化在向v盤上寫入重 建的數(shù)據(jù)時(shí)所花費(fèi)的時(shí)間。因此提高RAID陣列重構(gòu)的性能??梢酝ㄟ^(guò)使用如下分層存儲(chǔ) 分配來(lái)使這樣的提高成為可能,該分層存儲(chǔ)分配考慮所需寫入I0PS性能和所需存儲(chǔ)區(qū)域 大小。在本發(fā)明的一個(gè)實(shí)施例中,來(lái)自分層存儲(chǔ)系統(tǒng)的相對(duì)慢的層的物理存儲(chǔ)設(shè)備可以被 恢復(fù)到更快層內(nèi)的虛擬盤以實(shí)現(xiàn)快速恢復(fù)。這一速度差異可以歸因于下層存儲(chǔ)設(shè)備比如在 較慢速度的設(shè)備的故障的情況下具有不同速度,該故障通過(guò)在可用存儲(chǔ)設(shè)備的高性能層中 的設(shè)備、比如SSD上初始地重建數(shù)據(jù)、繼而向另一設(shè)備遷移數(shù)據(jù)來(lái)恢復(fù)。如果將不同層的設(shè) 備附著到控制器的網(wǎng)絡(luò)鏈路具有不同帶寬,則速度差異也可能發(fā)生。如果用于出故障的存 儲(chǔ)單元的最終替換將無(wú)法實(shí)現(xiàn)快速數(shù)據(jù)重建,比如如果由云存儲(chǔ)提供方遠(yuǎn)程提供,則本發(fā) 明可以在這一背景中非常有利。
[0072] 在本發(fā)明的一個(gè)實(shí)施例中,在與需要讀取的設(shè)備不同的(例如在存儲(chǔ)層上的)設(shè)備 上分配v盤。這具有如下優(yōu)勢(shì):在重建步驟期間從需要讀取的設(shè)備去除任何寫入負(fù)擔(dān),從而 減輕由于帶寬約束所致的潛在延遲。
[0073] 在步驟6中,分配物理備用存儲(chǔ)設(shè)備。物理備用可以是盤或者其它設(shè)備,該盤或者 其它設(shè)備在物理上是包含RAID陣列的存儲(chǔ)系統(tǒng)的部分,或者它可以是在RAID陣列以外的 設(shè)備。
[0074] 最后在步驟7中,向在分配的物理備用設(shè)備上的映像模式遷移(即在未跨越多個(gè) 設(shè)備條帶化的情況下存儲(chǔ))被寫入到分配的虛擬存儲(chǔ)區(qū)域(V盤)的數(shù)據(jù)。
[0075] 在開始向物理備用上的映像模式遷移之前在v盤上完成RAID陣列重構(gòu)有利地減 少在與向物理備用設(shè)備遷移同時(shí)進(jìn)行向v盤上重建時(shí)可能出現(xiàn)的失敗風(fēng)險(xiǎn)。向物理備用設(shè) 備上的映像模式遷移v盤導(dǎo)致在物理備用上獲得v盤的內(nèi)容的副本。
[0076] 在這一第一實(shí)施例中,可以在v盤上的RAID陣列重構(gòu)與開始從v盤向物理備用設(shè) 備遷移的時(shí)間之間設(shè)置最小時(shí)間間隔。這一時(shí)間間隔可以被配置成足夠大以防止在脆弱時(shí) 段內(nèi)之時(shí)開始物理備用設(shè)備遷移,從而初始聚焦于完成向v盤重建而不是遷移。"脆弱"時(shí) 段對(duì)應(yīng)于在初始需要重構(gòu)與完成這一重構(gòu)之間的時(shí)段。在這一時(shí)段期間,尤其是如果處理 活動(dòng)性很高,則有雙故障的風(fēng)險(xiǎn);因此希望最小化脆弱時(shí)段。
[0077] 在一個(gè)實(shí)施例中,配置在向物理備用遷移之前的最小時(shí)間間隔,從而僅當(dāng)"脆弱時(shí) 段"結(jié)束才開始分配備用盤和向所述物理備用上存儲(chǔ)v盤內(nèi)容。這一時(shí)間間隔可以例如被 配置成任何適當(dāng)間隔,比如不到一秒或者幾分鐘。時(shí)間間隔可以對(duì)應(yīng)于在v盤上重構(gòu)RAID 陣列并且備用設(shè)備可用之后流逝的時(shí)間段。
[0078] 如果在完成向v盤上重構(gòu)時(shí)沒(méi)有專用物理備用設(shè)備可用或者專用物理備用設(shè)備 空間不足;則復(fù)制v盤將等待物理備用可用。在該情況下,將v盤遷移到物理備用上的映像 模式可以僅在已經(jīng)在一個(gè)或者多個(gè)設(shè)備上釋放和分配物理空間時(shí)或者在指示物理備用已 經(jīng)變得可用時(shí)開始??梢栽跈z測(cè)到盤上的可用空間不足以用于存儲(chǔ)重構(gòu)的數(shù)據(jù)時(shí)釋放設(shè)備 上的一些可用空間。在結(jié)合RAID陣列新關(guān)聯(lián)或者安裝物理盤時(shí),專用物理備用設(shè)備的可用 性例如可以通過(guò)來(lái)自更低層(例如物理或者鏈路)之一的中斷來(lái)指示。這需要比如本領(lǐng)域已 知的在較低層與較高層之間的互通機(jī)制,本發(fā)明的重建raid陣列的方法在這些層上實(shí)施。 當(dāng)物理備用在故障出現(xiàn)時(shí)仍未可用時(shí),向快速v盤重建并且隨后向物理備用遷移數(shù)據(jù)在減 少針對(duì)其它故障的脆弱時(shí)段時(shí)可以非常有利。
[0079] 在本發(fā)明的一個(gè)實(shí)施例中,一旦數(shù)據(jù)段可用于從v盤遷移就向備用物理盤遷移數(shù) 據(jù)段??梢赃x擇v盤以便能夠支持這一活動(dòng)而不降低v盤的性能,從而保證v盤在重建過(guò) 程中沒(méi)有變成瓶頸。
[0080] 維持v盤直至備用物理盤可用有利地允許系統(tǒng)管理員選擇一種有效的替換解決 方案。例如可以出于備用盤的大小和/或它的價(jià)格而決定選擇備用盤。系統(tǒng)管理員或者控 制器可以例如決定選擇HDD,或者與大小要求匹配的另一相對(duì)廉價(jià)驅(qū)動(dòng)作為備用驅(qū)動(dòng),而不 是使用更昂貴的SSD作為備用驅(qū)動(dòng)。如以上描述的這樣的特征在存儲(chǔ)控制器、比如丨BM? V7000系統(tǒng)控制器內(nèi)是可實(shí)施的。
[0081] 在另一實(shí)施例中,跨越剩余工作盤分布備用盤空間而不是作為專用物理盤。在這 一實(shí)施例中,在完成v盤上的數(shù)據(jù)恢復(fù)之后分配物理盤空間,并且可能不太可能立即分配 剩余盤上的必需物理空間。將v盤映像到物理盤上將在所需物理空間可用時(shí)開始。必需物 理空間的可用性可能例如受制于釋放剩余盤上的一些空間。
[0082] 在圖8中所示一個(gè)不同實(shí)施例中,步驟1至4與第一實(shí)施例的步驟1至4相同。在 步驟5中,向分配的快速v盤上開始恢復(fù)出故障的驅(qū)動(dòng)。在步驟6中,在重建操作期間分配 物理備用。在這一實(shí)施例中,在完成v盤上的數(shù)據(jù)恢復(fù)之前可能已經(jīng)完成物理備用的分配。 根據(jù)這一實(shí)施例的恢復(fù)數(shù)據(jù)可能由于分配物理空間所需的附加任務(wù),所以需要更多處理功 率并且尤其需要更多帶寬。結(jié)果,根據(jù)這一實(shí)施例的重建RAID陣列可能需要比根據(jù)第一實(shí) 施例的方法花費(fèi)更長(zhǎng)的時(shí)間。根據(jù)步驟7,一旦完成物理備用的分配,發(fā)生向物理備用上的 映像模式遷移分配的虛擬存儲(chǔ)區(qū)域上的數(shù)據(jù)。
[0083] 在圖9所示又一實(shí)施例中,在向v盤開始數(shù)據(jù)恢復(fù)之前已經(jīng)分配物理備用(步驟 1)。如在先前實(shí)施例中一樣執(zhí)行其它步驟。這一實(shí)施例可以對(duì)應(yīng)于存儲(chǔ)系統(tǒng)上的物理備用 盤的靜態(tài)配置場(chǎng)景。這一物理備用可以是RAID陣列的專用于復(fù)原從出故障的盤丟失的數(shù) 據(jù)的物理驅(qū)動(dòng)。它也可以是在RAID陣列以外的物理驅(qū)動(dòng)。備選地,它可以是在盤故障之前 跨越陣列的盤而分配的分布式備用。物理備用應(yīng)當(dāng)具有大到足以能夠存儲(chǔ)重建的數(shù)據(jù)的存 儲(chǔ)空間。在這一實(shí)施例中,在向v盤上實(shí)際完成重構(gòu)之前可以向備用物理盤上復(fù)制正在v盤 上重建的數(shù)據(jù)。注意,在完成重建之前向物理備用上映像可能增加由于競(jìng)爭(zhēng)通向現(xiàn)在正在 從其讀取以及向其寫入的源設(shè)備的數(shù)據(jù)路徑所致的失敗風(fēng)險(xiǎn)。也可能存在對(duì)如下順序讀取 的流暢序列的擾動(dòng),這些順序讀取對(duì)于利用旋轉(zhuǎn)盤的盤上高速緩存和盤頭移動(dòng)是最優(yōu)的。 在開始用于將v盤映像到物理備用空間上的操作之前完成向v盤上重建丟失的數(shù)據(jù)時(shí),這 一風(fēng)險(xiǎn)顯著降低。
[0084] 在以上實(shí)施例中的任何實(shí)施例中,注意系統(tǒng)對(duì)于第二盤故障仍然脆弱,直至已經(jīng) 向虛擬存儲(chǔ)區(qū)域或者備用物理盤恢復(fù)盤陣列。本發(fā)明的實(shí)施例尋求減少持續(xù)直至安全存儲(chǔ) 恢復(fù)的數(shù)據(jù)的脆弱時(shí)段。
[0085] 在以上實(shí)施例中的任何實(shí)施例中,可以在向物理備用上遷移數(shù)據(jù)之后,從v盤去 除從v盤向備用物理盤復(fù)制的數(shù)據(jù)以用于釋放附加虛擬空間。
[0086] 注意在以上實(shí)施例中的任何實(shí)施例中,重構(gòu)的數(shù)據(jù)被最終存儲(chǔ)到其上的物理盤可 以是SSD或者HDD或者能夠持久保持?jǐn)?shù)據(jù)的任何種類的物理驅(qū)動(dòng)或者存儲(chǔ)器。本領(lǐng)域技術(shù) 人員將清楚,有可能將使用下層SSD技術(shù)的v盤映像到HDD或者甚至更慢設(shè)備。選擇HDD 或者更慢設(shè)備作為物理備用盤而不是更昂貴SSD可以導(dǎo)致顯著的成本節(jié)省。備用盤可以是 作為備用盤專用的若干物理盤中的分配的物理盤。這些物理盤也可以分配自未作為備用盤 專用的空白盤,或者可以分配自專用備用盤和另一物理盤的空白部分的匯集。例如備用可 以由兩個(gè)SSD、一個(gè)HDD和另一使用的HDD的部分構(gòu)成而不是單個(gè)物理備用。本領(lǐng)域技術(shù)人 員將清楚,其它組合也在本發(fā)明的范圍內(nèi)。這樣的分配可以是靜態(tài)或者動(dòng)態(tài)的。在根據(jù)前 述實(shí)施例中的任何實(shí)施例向v盤上重構(gòu)SSD RAID陣列時(shí),可以在備用物理盤上進(jìn)行對(duì)v盤 的映像,該備用物理盤是RAID陣列的部分。在完成重構(gòu)之后或者在v盤上開始重構(gòu)之前分 配物理備用盤時(shí),可以理解能夠持久存儲(chǔ)數(shù)據(jù)的任何物理盤可以用作物理備用盤。這是因 為當(dāng)已經(jīng)向v盤上重建RAID陣列時(shí),在物理備用上存儲(chǔ)的速度并非如此關(guān)鍵。
[0087] 下文指示一種用于計(jì)算對(duì)于分配虛擬備用盤的性能和容量要求的示例方法。如已 經(jīng)指示的那樣,可以在RAID陣列的剩余工作驅(qū)動(dòng)之中的多個(gè)物理驅(qū)動(dòng)上分布虛擬備用空 間。如將理解的那樣,對(duì)于包括N個(gè)驅(qū)動(dòng)的RAID陣列,在一個(gè)驅(qū)動(dòng)出故障時(shí),可以跨越N-1 個(gè)剩余物理驅(qū)動(dòng)的全部或者子集來(lái)分配虛擬備用空間。這一分布式虛擬存儲(chǔ)有助于避免如 果向單個(gè)專用盤寫入則原本可能出現(xiàn)的寫入瓶頸,因?yàn)榭梢钥缭绞S郚-1個(gè)物理驅(qū)動(dòng)將為 了恢復(fù)而需要讀取的冗余數(shù)據(jù)條帶化(即從N-1個(gè)設(shè)備并行讀取并且向單個(gè)設(shè)備順序?qū)懭?可能引起瓶頸)。
[0088] 因此,通過(guò)考慮可能需要從其讀取數(shù)據(jù)的驅(qū)動(dòng)數(shù)目(N-1)和那些驅(qū)動(dòng)的讀取I0PS 性能以及盤技術(shù)類型的讀取速度與寫入速度之比來(lái)給出對(duì)于根據(jù)本發(fā)明的實(shí)施例為虛擬 備用盤分配存儲(chǔ)空間的估計(jì)要求。除了這一寫入速度要求之外,還希望為所有丟失的數(shù)據(jù) 分配足夠的存儲(chǔ)、但是未過(guò)度分配存儲(chǔ)。
[0089] 為了分配正確大小和輸入/輸出能力的v盤,可以向存儲(chǔ)系統(tǒng)的控制器、比如 IBM?公司的SAN卷控制器和Storwize V7000系統(tǒng)添加功能。這樣的系統(tǒng)通??梢岳?命令行、比如:
[0090] mkvdisk - size X - write_iops_qos Z〇
[0091] 其中命令'mkvdisk'創(chuàng)建虛擬盤(v盤),并且size X'指定分配的v盤的容量 或者大小,'write_iops_qos Z'意味著用于在恢復(fù)期間避免瓶頸的、在帶寬方面(即每單位 時(shí)間可以處理的數(shù)據(jù)量)和在每單位時(shí)間的個(gè)體請(qǐng)求數(shù)目(iops)方面的服務(wù)質(zhì)量;并且其 中Z= (N-1) *驅(qū)動(dòng)上的讀取I0PS。具體而言,希望實(shí)現(xiàn)提高的每秒寫入操作數(shù)目,其中重建 帶寬是IP0S與寫入的大小的乘積。可以以128千比特的條帶來(lái)重建數(shù)據(jù)(其中條帶是向奇 偶校驗(yàn)塊貢獻(xiàn)的數(shù)據(jù)組塊之一)。
[0092] 為了考慮其它瓶頸、包括陣列的驅(qū)動(dòng)的計(jì)算速度和帶寬限制,用于Z的適配值可 以是:
[0093] Z=min (
[0094] min(sequential_read_speed_of_arraydrives, single_drive_read_bandw
[0095] idth_ceiling) *
[0096] number_of_remaining_drives_in_array),
[0097] whole_array_read_bandwidth_ceiling,
[0098] CPU_X0R_b andwidth_ceiling)
[0099] )
[0100] 其中'min'是返回小于或者等于函數(shù)的參數(shù)中所指定的所有其它值的值的函數(shù);
[0101] ' sequential_read_speed_of_arraydrives' 是陣列驅(qū)動(dòng)可以每秒對(duì)多少 IP0S (請(qǐng) 求)做出響應(yīng);
[0102] 'single_drive_read_bandwidth_ceiling'是每秒可以從全速運(yùn)行的單個(gè)驅(qū)動(dòng)讀 取的最大數(shù)據(jù)量;并且
[0103] 一般而言'帶寬=(I0PS*每個(gè)請(qǐng)求的大?。?,在重建中,I0PS都是相同大小(一個(gè) 條帶-比如128K),因此可以通過(guò)如下來(lái)考慮誰(shuí)將成為瓶頸:取得I0PS并且乘以128K來(lái) 查看它是否大于最大帶寬--如果是,則僅使用帶寬上限并且反之亦然。
[0104] 'number_of_remaining_drives_in_array' 定義正在從多少驅(qū)動(dòng)讀取。
[0105] 'whole_array_read_bandwidth_ceiling'是所有陣列驅(qū)動(dòng)與存儲(chǔ)控制器之間的 瓶頸。例如在驅(qū)動(dòng)包括在驅(qū)動(dòng)機(jī)柜中的系統(tǒng)中,這可以是通向該機(jī)柜的線纜的帶寬。對(duì)于 在云存儲(chǔ)區(qū)域中的驅(qū)動(dòng)集合,則可以是可以跨越以太網(wǎng)線纜讀取的數(shù)據(jù)速率。
[0106] 'CPU_XOR_bandwidth_ceiling'指示可以使用CPU、在X0R公式中使用奇偶校驗(yàn)和 剩余數(shù)據(jù)來(lái)進(jìn)行多少處理以重構(gòu)遺漏數(shù)據(jù)。在單驅(qū)動(dòng)重建中,CPU僅被使用大約5%,這在現(xiàn) 代系統(tǒng)中是很罕見(jiàn)的因子。
[0107] 推導(dǎo)這一公式以確定v盤的如下最小性能,需要該最小性能以使得v盤具有充足 的讀取和寫入性能以便重建操作不會(huì)被向存儲(chǔ)介質(zhì)寫入重構(gòu)的數(shù)據(jù)而減緩。因此,根據(jù)本 發(fā)明的一個(gè)示例的一種數(shù)據(jù)存儲(chǔ)系統(tǒng)可以充分利用陣列的在數(shù)據(jù)重建期間正在從其讀取 的剩余存儲(chǔ)設(shè)備的可用讀取性能。
[0108] 在本發(fā)明的另一實(shí)施例中,存儲(chǔ)控制器可以被配置用于實(shí)施存儲(chǔ)策略,從而(1)用 戶發(fā)起的讀取優(yōu)先,從而它們不會(huì)受恢復(fù)處理嚴(yán)重影響,或者(2)數(shù)據(jù)重建操作優(yōu)先以最小 化脆弱時(shí)段。
[0109] 雖然已經(jīng)主要針對(duì)由SSD構(gòu)成的RAID陣列描述以上實(shí)施例,但是應(yīng)當(dāng)理解本發(fā)明 不限于具體類型的存儲(chǔ)設(shè)備。本領(lǐng)域技術(shù)人員將清楚本發(fā)明可適用于由HDD或者其它盤構(gòu) 成的RAID陣列。它同樣適用于由不同類型的設(shè)備的組合和跨越網(wǎng)絡(luò)、比如在基于因特網(wǎng)云 存儲(chǔ)的系統(tǒng)中提供的存儲(chǔ)容量的組合而構(gòu)成的RAID陣列。
[0110] 例如需要重構(gòu)的RAID陣列可以由HDD驅(qū)動(dòng)構(gòu)成。在這一情況下,在盤故障之后需 要陣列重構(gòu)時(shí),在剩余HDD驅(qū)動(dòng)上分配虛擬備用盤(v盤)。在從下層HDD分配的v盤上重 建RAID陣列。最終根據(jù)任何先前實(shí)施例向在物理備用上的映像模式遷移v盤。物理備用 可以是HDD驅(qū)動(dòng)或者SDD驅(qū)動(dòng)或者如以上已經(jīng)提到的任何其它類型的驅(qū)動(dòng)。
[0111] 在另一示例中,RAID陣列由HDD驅(qū)動(dòng)和SDD驅(qū)動(dòng)構(gòu)成。在這一示例中,HDD驅(qū)動(dòng)出 故障并且在可用物理SSD驅(qū)動(dòng)上分配虛擬備用盤(v盤)。在分布式SSD驅(qū)動(dòng)上分配v盤有 利地提供從下層SSD的高性能受益的虛擬盤。最后根據(jù)任何先前實(shí)施例向在物理備用上的 映像模式遷移v盤。
【權(quán)利要求】
1. 一種數(shù)據(jù)恢復(fù)方法,用于對(duì)在存儲(chǔ)設(shè)備陣列中的存儲(chǔ)設(shè)備的故障做出響應(yīng),所述方 法包括: 至少部分基于在數(shù)據(jù)重建時(shí)存儲(chǔ)設(shè)備的潛在讀取性能來(lái)確定用于重建出故障的設(shè)備 的數(shù)據(jù)的所需寫入性能; 分配可用存儲(chǔ)內(nèi)的虛擬存儲(chǔ)區(qū)域,所述虛擬存儲(chǔ)的分配至少部分基于所述所需寫入性 能; 通過(guò)向所述分配的虛擬存儲(chǔ)區(qū)域?qū)懭雭?lái)重建出故障的設(shè)備的數(shù)據(jù);以及 向至少一個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備遷移所述重建的數(shù)據(jù)以完成所述數(shù)據(jù)恢復(fù)。
2. 根據(jù)權(quán)利要求1所述的方法,其中通過(guò)參考將在數(shù)據(jù)重建期間讀取的數(shù)據(jù)存儲(chǔ)設(shè)備 的每秒輸入/輸出操作(IOPS)的潛在讀取數(shù)目和/或在每個(gè)讀取操作中讀取的潛在數(shù)據(jù) 量來(lái)確定所述潛在讀取性能。
3. 根據(jù)權(quán)利要求1或者權(quán)利要求2所述的方法,其中確定所需寫入性能包括計(jì)算用于 重建出故障的設(shè)備的數(shù)據(jù)的所需虛擬存儲(chǔ)區(qū)域大小和/或所需寫入速度。
4. 根據(jù)任一前述權(quán)利要求所述的方法,其中所述分配包括從所述陣列內(nèi)的可用數(shù)據(jù)存 儲(chǔ)設(shè)備選擇最優(yōu)數(shù)目的設(shè)備。
5. 根據(jù)任一前述權(quán)利要求所述的方法,其中所述分配包括從所述陣列內(nèi)的可用類型的 數(shù)據(jù)存儲(chǔ)設(shè)備選擇最優(yōu)類型的設(shè)備。
6. 根據(jù)任一前述權(quán)利要求所述的方法,用于在數(shù)據(jù)存儲(chǔ)陣列中使用,所述數(shù)據(jù)存儲(chǔ)陣 列在所述數(shù)據(jù)存儲(chǔ)陣列中具有相應(yīng)高性能和低性能數(shù)據(jù)存儲(chǔ)設(shè)備層,其中所述分配包括從 所述陣列的高性能層選擇至少一個(gè)設(shè)備。
7. 根據(jù)權(quán)利要求5或者權(quán)利要求6所述的方法,其中所述分配包括選擇至少一個(gè)SSD 設(shè)備。
8. 根據(jù)任一前述權(quán)利要求所述的方法,其中向單個(gè)物理存儲(chǔ)設(shè)備遷移向所述分配的虛 擬存儲(chǔ)區(qū)域上重建的所述數(shù)據(jù)以完成所述數(shù)據(jù)恢復(fù)。
9. 根據(jù)任一前述權(quán)利要求所述的方法,其中在開始向所述虛擬存儲(chǔ)區(qū)域上重建丟失的 數(shù)據(jù)之前分配在恢復(fù)期間向其遷移數(shù)據(jù)的所述至少一個(gè)存儲(chǔ)設(shè)備以用于在所述恢復(fù)中使 用。
10. 根據(jù)權(quán)利要求1至8中的任一權(quán)利要求所述的方法,其中在向所述虛擬存儲(chǔ)區(qū)域上 重建丟失的數(shù)據(jù)期間或者之后分配在恢復(fù)期間向其遷移數(shù)據(jù)的所述至少一個(gè)存儲(chǔ)設(shè)備以 用于在所述恢復(fù)中使用。
11. 根據(jù)任一前述權(quán)利要求所述的方法,其中在開始向所述虛擬存儲(chǔ)區(qū)域上重建丟失 的數(shù)據(jù)之后一預(yù)定時(shí)間段到期時(shí)開始所述遷移。
12. 根據(jù)權(quán)利要求1至10中的任一權(quán)利要求所述的方法,其中在開始向所述虛擬存儲(chǔ) 區(qū)域上重建丟失的數(shù)據(jù)之后檢測(cè)到所述至少一個(gè)存儲(chǔ)設(shè)備可用時(shí)開始所述遷移。
13. 根據(jù)權(quán)利要求1至10中的任一權(quán)利要求所述的方法,其中在完成向所述虛擬存儲(chǔ) 區(qū)域上重建數(shù)據(jù)時(shí)開始所述遷移。
14. 根據(jù)權(quán)利要求1至10中的任一權(quán)利要求所述的方法,其中在完成向所述虛擬存儲(chǔ) 區(qū)域上的數(shù)據(jù)重建的預(yù)定義部分時(shí)開始所述遷移。
15. 根據(jù)任一前述權(quán)利要求所述的方法,其中所述驅(qū)動(dòng)陣列是獨(dú)立盤冗余陣列。
16. 根據(jù)任一前述權(quán)利要求所述的方法,其中所述存儲(chǔ)陣列包括至少一個(gè)固態(tài)驅(qū)動(dòng)。
17. 根據(jù)任一前述權(quán)利要求所述的方法,其中所述存儲(chǔ)陣列包括經(jīng)由網(wǎng)絡(luò)訪問(wèn)的至少 一個(gè)遠(yuǎn)程存儲(chǔ)區(qū)域。
18. -種數(shù)據(jù)存儲(chǔ)控制器,用于響應(yīng)于存儲(chǔ)陣列的存儲(chǔ)設(shè)備的故障進(jìn)行數(shù)據(jù)恢復(fù),所述 控制器可操作用于: 至少部分基于在數(shù)據(jù)重建時(shí)存儲(chǔ)設(shè)備的潛在讀取性能來(lái)確定用于重建出故障的設(shè)備 的數(shù)據(jù)的所需寫入性能; 分配可用存儲(chǔ)內(nèi)的虛擬存儲(chǔ)區(qū)域,所述虛擬存儲(chǔ)的分配至少部分基于所述所需寫入性 能; 通過(guò)向所述分配的虛擬存儲(chǔ)區(qū)域?qū)懭雭?lái)重建出故障的設(shè)備的數(shù)據(jù);以及 向至少一個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備遷移所述重建的數(shù)據(jù)以完成所述數(shù)據(jù)恢復(fù)。
19. 根據(jù)權(quán)利要求18所述的數(shù)據(jù)存儲(chǔ)控制器,其中通過(guò)參考從所述陣列的可用存儲(chǔ)設(shè) 備每秒讀取的潛在字節(jié)數(shù)目來(lái)確定所述潛在讀取性能。
20. 根據(jù)權(quán)利要求18或者權(quán)利要求19所述的數(shù)據(jù)存儲(chǔ)控制器,其中通過(guò)參考將在數(shù)據(jù) 重建期間讀取的存儲(chǔ)設(shè)備的每秒輸入/輸出操作的潛在讀取數(shù)目和/或在每個(gè)讀取操作中 讀取的潛在數(shù)據(jù)量來(lái)確定所述潛在讀取性能。
21. 根據(jù)權(quán)利要求18至20中的任一權(quán)利要求所述的數(shù)據(jù)存儲(chǔ)控制器,其中確定所需寫 入性能包括確定所需數(shù)據(jù)容量和寫入速度。
22. 根據(jù)權(quán)利要求18至21中的任一權(quán)利要求所述的數(shù)據(jù)存儲(chǔ)控制器,其中所述分配包 括從所述陣列內(nèi)的可用數(shù)據(jù)存儲(chǔ)設(shè)備選擇最優(yōu)數(shù)目的設(shè)備。
23. 根據(jù)權(quán)利要求18至22中的任一權(quán)利要求所述的數(shù)據(jù)存儲(chǔ)控制器,其中所述分配包 括從所述陣列內(nèi)的可用類型的數(shù)據(jù)存儲(chǔ)設(shè)備選擇最優(yōu)類型的設(shè)備。
24. 根據(jù)權(quán)利要求23所述的數(shù)據(jù)存儲(chǔ)控制器,其中所述分配包括選擇至少一個(gè)SSD設(shè) 備。
25. 根據(jù)權(quán)利要求18至24中的任一權(quán)利要求所述的數(shù)據(jù)存儲(chǔ)控制器,其中向單個(gè)物理 存儲(chǔ)設(shè)備遷移向所述分配的虛擬存儲(chǔ)區(qū)域上重建的所述數(shù)據(jù)以完成所述數(shù)據(jù)恢復(fù)。
26. 根據(jù)權(quán)利要求18所述的數(shù)據(jù)存儲(chǔ)控制器,其中在開始向所述虛擬存儲(chǔ)區(qū)域上重建 丟失的數(shù)據(jù)之前分配向其遷移數(shù)據(jù)的所述至少一個(gè)存儲(chǔ)設(shè)備以用于在恢復(fù)中使用。
27. 根據(jù)權(quán)利要求18所述的數(shù)據(jù)存儲(chǔ)控制器,其中在向所述虛擬存儲(chǔ)區(qū)域上重建丟失 的數(shù)據(jù)期間或者之后、在預(yù)定時(shí)間段到期時(shí)、在檢測(cè)到所述物理存儲(chǔ)裝置可用時(shí)或者在檢 測(cè)到所述重建完成時(shí),分配向其遷移數(shù)據(jù)的所述至少一個(gè)存儲(chǔ)設(shè)備以用于在恢復(fù)中使用。
28. 根據(jù)權(quán)利要求18所述的數(shù)據(jù)存儲(chǔ)控制器,其中在以下各項(xiàng)時(shí)開始所述遷移: (a) 在開始向所述虛擬存儲(chǔ)區(qū)域上重建丟失的數(shù)據(jù)之后一預(yù)定時(shí)間段到期時(shí);或者 (b) 在開始向所述虛擬存儲(chǔ)區(qū)域上重建丟失的數(shù)據(jù)之后檢測(cè)到所述至少一個(gè)存儲(chǔ)設(shè)備 可用時(shí);或者 (c) 在完成向所述虛擬存儲(chǔ)區(qū)域上重建數(shù)據(jù)時(shí);或者 (d) 在完成向所述虛擬存儲(chǔ)區(qū)域上的數(shù)據(jù)重建的預(yù)定義部分時(shí)。
29. 根據(jù)權(quán)利要求18至28中的任一權(quán)利要求所述的數(shù)據(jù)存儲(chǔ)控制器,其中所述陣列是 獨(dú)立盤冗余陣列。
30. 根據(jù)權(quán)利要求18至29中的任一權(quán)利要求所述的數(shù)據(jù)存儲(chǔ)控制器,其中所述存儲(chǔ)陣 列包括至少一個(gè)固態(tài)驅(qū)動(dòng)。
31. -種用于存儲(chǔ)數(shù)據(jù)的系統(tǒng),包括數(shù)據(jù)存儲(chǔ)設(shè)備陣列和根據(jù)權(quán)利要求18至30中的任 一權(quán)利要求所述的控制器。
【文檔編號(hào)】G06F11/10GK104123100SQ201410161516
【公開日】2014年10月29日 申請(qǐng)日期:2014年4月22日 優(yōu)先權(quán)日:2013年4月25日
【發(fā)明者】G·D·哈奇森, A·庫(kù)珀 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司