專利名稱:Ssd技術(shù)協(xié)助的存儲系統(tǒng)快照的制作方法
SSD技術(shù)協(xié)助的存儲系統(tǒng)快照相關(guān)申請的交叉引用無
背景技術(shù):
1.發(fā)明領(lǐng)域本發(fā)明通常涉及基于固態(tài)存儲器的閃存技術(shù)。2.相關(guān)技術(shù)說明RAID (獨立冗余磁盤陣列)是用來提高性能并提供容錯的存儲系統(tǒng)。RAID是兩個或多個硬盤和包括該RAID功能的專用磁盤控制器的集合。RAID通過磁盤條帶化來改善性能,其橫越多個驅(qū)動器插入字節(jié)或字節(jié)組,因而同時讀寫超過一個磁盤(如,RAID 0)。通過鏡像或奇偶校驗實現(xiàn)容錯。鏡像是對在兩個驅(qū)動器上的數(shù)據(jù)100%的復(fù)制(如,RAID 1)。RAID存儲系統(tǒng)的卷是虛擬磁盤驅(qū)動器。該卷表現(xiàn)為附屬于RAID存儲系統(tǒng)的計算機系統(tǒng)的磁盤驅(qū)動器。RAID系統(tǒng)中的卷可分布在數(shù)個物理硬盤中,可完全被包含作為單個物理驅(qū)動器的一部分,或可被映射在該RAID系統(tǒng)中其它虛擬驅(qū)動器范圍內(nèi)。外殼是容納一個或多個物理磁盤驅(qū)動器的物理結(jié)構(gòu)殼體。該外殼可同樣包括RAID控制器或可包括存儲器連接硬件以能使附屬的計算機和RAID控制器來與容納在該外殼中的物理硬盤通信。邏輯單元(LU)是SCSI術(shù)語,用于在SCSI外圍設(shè)備內(nèi)的可尋址實體。在通過該SCSI協(xié)議可外部尋址的RAID存儲系統(tǒng)內(nèi)的卷,通常被尋址作為邏輯單元并分配了邏輯單元號(LUN)指定器。RAID系統(tǒng)內(nèi)的卷因此有時被稱為LUNs。存儲區(qū)域網(wǎng)(SAN)通常將多個服務(wù)器連接到多個存儲裝置和存儲系統(tǒng)。在一些 SAN中,存儲裝置自己能夠?qū)?shù)據(jù)復(fù)制到其它存儲裝置用來備份而沒有任何計算機處理花費。SAN網(wǎng)絡(luò)允許數(shù)據(jù)在計算機和存儲系統(tǒng)之間以高外圍通道速度傳送。主機適配器,也稱為“控制器”或“主機總線適配器”,是將一個或多個外部單元連接到計算機的裝置。主機適配器同樣能夠?qū)⒃撚嬎銠C連接到SAN。其通常是插入總線的擴展卡。SCSI、SAS、光纖通道,iSCSI和無限帶寬是將它們的控制器稱為主機適配器的外部接口的示例。主機可以是計算機,該計算機運行應(yīng)用程序并訪問附屬于該計算機或通過SAN 附屬的存儲系統(tǒng)和裝置。閃存(NAND和NOR兩種類型)是非易失性存儲器。閃存的一個限制在于盡管可對其以隨機訪問方式每次一字節(jié)或字(NOR)或每次一頁(NAND)讀出或編程,其必須每次擦除一“塊”。閃存(特別是NOR閃存)給予了隨機訪問讀和編程操作,但不能給予任意隨機訪問的重寫或擦除操作。另一個限制在于閃存具有有限數(shù)量的擦寫周期。大多商業(yè)上可獲得的閃存產(chǎn)品,特別是NOR類型,肯定承受大約100,000次寫擦周期。NAND閃存出現(xiàn)兩種類型單層單元(SLC)和多層單元(MLC)。SLC NAND閃存每層存儲了一比特,而MLC NAND閃存能夠每層存儲超過一比特。SLC NAND閃存具有等同于NOR閃存的寫壽命,100, 000次寫擦周期,而MLC閃存寫壽命是10,000次寫擦周期或更少。NAND閃存比NOR省錢,擦寫上NAND 快于NOR。
NAND閃存頁是存儲器的最小單元,存儲器可被寫或讀,通常大小為2048字節(jié)。該閃存的最小可擦除單元為塊。典型的塊包括64頁或128K字節(jié)。NAND閃存架構(gòu)由東芝 (Toshiba)于1989年引入。這些存儲器的訪問非常類似于塊裝置,如硬盤或存儲卡。每一個塊由多個頁構(gòu)成。該頁通常為512或2,048或4,096字節(jié)大小。與每一個頁相關(guān)的為較少字節(jié)(通常為12-16字節(jié)),其應(yīng)用作誤差檢測和糾錯校驗和的存儲。典型的塊大小包括32個512字節(jié)的頁,每一個用于16kiB大小的塊;64個2,048字節(jié)的頁,每一個用于 128kiB大小的塊;64個4,096字節(jié)的頁,每一個用于25^dB大小的塊;1 個4,096字節(jié)的頁,每一個用于5UkiB大小的塊。當(dāng)以頁為基礎(chǔ)執(zhí)行讀和編程時,只能以塊為基礎(chǔ)執(zhí)行擦除。固態(tài)磁盤或裝置(SSD)是使用固態(tài)技術(shù)用來將其信息存儲并提供經(jīng)過存儲接口訪問該已存儲信息的裝置。SSD快于使用旋轉(zhuǎn)盤的硬盤驅(qū)動器,因為不存在機械延遲,在沒有讀/寫頭移動以及沒有旋轉(zhuǎn)盤等待時,當(dāng)處于傳統(tǒng)驅(qū)動器中時。SSD比硬盤更凸凹不平。 SSD可使用非易失性存儲器;或SSD可使用易失性DRAM或SRAM存儲器,其在電源故障時由磁盤驅(qū)動器或UPS系統(tǒng)進(jìn)行備份,所有這些是該SSD系統(tǒng)的一部分。傳統(tǒng)存儲系統(tǒng)能夠執(zhí)行在存儲系統(tǒng)和子系統(tǒng)中數(shù)據(jù)的時間點(point-in-time) 拷貝,被稱為時間拷貝或快照。該快照的一個目的是允許備份操作運行,當(dāng)該應(yīng)用程序繼續(xù)使用該數(shù)據(jù)的當(dāng)前拷貝時。該快照的另一個用處是允許在該數(shù)據(jù)的拷貝上進(jìn)行數(shù)據(jù)挖掘而沒有影響該激活數(shù)據(jù)集正進(jìn)行的使用。進(jìn)行快照的技術(shù)是“寫時拷貝”和“寫時重定向”,這里進(jìn)一步進(jìn)行解釋?;陂W存的SSD將數(shù)據(jù)放在它們的內(nèi)部物理裝置上,根據(jù)為如性能和耗損均衡的參數(shù)優(yōu)化數(shù)據(jù)放置的算法。這些SSD保留了映射或查找表,該表將數(shù)據(jù)地址在它們的邏輯驅(qū)動器或單元和該SSD內(nèi)的物理裝置之間進(jìn)行相關(guān)和轉(zhuǎn)換。類似于RAID系統(tǒng),SSD保留了映射或查找表,該表將數(shù)據(jù)地址在它們的邏輯驅(qū)動器或單元和該SSD內(nèi)的物理裝置之間進(jìn)行相關(guān)和轉(zhuǎn)換。在SSD中,在非易失性存儲器中的數(shù)據(jù)被分段成頁,通常為128K的數(shù)據(jù)塊, 其中存在多個數(shù)據(jù)段,每一個保持了大約2K數(shù)據(jù)。在數(shù)據(jù)(如,數(shù)據(jù)段)、頁和閃存塊(非易失性存儲器的區(qū)域,X,Y,Z等)之間的對應(yīng)關(guān)系被保留在一個或多個映射表中,其可由硬件使用以查找該數(shù)據(jù)的正確地址。但是,在與本發(fā)明比較時,這些映射表僅僅指向該數(shù)據(jù)的當(dāng)前拷貝,其不用來創(chuàng)建快照。現(xiàn)有技術(shù)中所缺少的是一種為固態(tài)裝置(SSD)實施時間拷貝或快照的改進(jìn)系統(tǒng)的方法和設(shè)備,如本發(fā)明中所述。
發(fā)明內(nèi)容
相應(yīng)地,本發(fā)明的一個方面是一種用于固態(tài)裝置(SSD)的改進(jìn)時間拷貝或快照的方法和設(shè)備。本發(fā)明的一個方面是提供使用SSD最佳能力的時間拷貝或快照。本發(fā)明的另一個方面是將更新機制結(jié)合在存儲系統(tǒng)中發(fā)現(xiàn)的具有快照特征的基于閃存的固態(tài)存儲器中。本發(fā)明的又一個方面是公開該非易失性存儲器與查找表一起使用,用來得到實施時間點拷貝或快照的改進(jìn)方法。
本發(fā)明的進(jìn)一步的方面是使用基于閃存的SSD在寫時重定向時展現(xiàn)的功能并將該功能擴展以包括附加使用合適的查找表,做出該SSD驅(qū)動器的較早狀態(tài)的時間點快照的能力。本發(fā)明的再一個方面是公開在一個或多個SSD上存儲數(shù)據(jù)的存儲系統(tǒng),其能夠使用基于SSD的快照機制實施并使用系統(tǒng)等級數(shù)據(jù)快照,在被存儲在一個或多個SSD上的數(shù)據(jù)集上。該系統(tǒng)等級數(shù)據(jù)快照可能是本領(lǐng)域所公知的整體上與存儲系統(tǒng)相關(guān)的任意數(shù)據(jù)。上述所有優(yōu)點的總和,與此處所述發(fā)明所公開和原有的眾多其它優(yōu)點一起,創(chuàng)建了與現(xiàn)有技術(shù)比較的改進(jìn)。從與附圖一起考慮時的下列具體說明的思考中,本發(fā)明的上述和許多其它特征和附屬優(yōu)點將變得清楚。
參考附圖將對本發(fā)明的優(yōu)選實施方案進(jìn)行具體描述。此處公開的是實現(xiàn)本發(fā)明的最佳當(dāng)前已知模式的具體描述。本說明書并沒有以限制意義被使用,而是僅僅用作描述本發(fā)明一般原理的目的。該具體描述的分段標(biāo)題和整體組織僅為方便目的而不是要限制本發(fā)明。圖1示出諸如本發(fā)明的閃存裝置內(nèi)部的兩個閃存塊在數(shù)據(jù)被寫入之前示意圖。圖2是如本發(fā)明中所發(fā)現(xiàn)的閃存地址轉(zhuǎn)換的查找表。圖3示出諸如本發(fā)明的閃存裝置內(nèi)部的兩個閃存塊在新數(shù)據(jù)被寫入時示意圖。圖4示出諸如本發(fā)明的閃存裝置內(nèi)部的兩個閃存塊在寫操作完成后示意圖。圖5是本發(fā)明所述的如本發(fā)明中所發(fā)現(xiàn)的閃存地址轉(zhuǎn)換的查找表在寫操作后的查找表。圖6a和6b示出為寫之前的當(dāng)前值和時間點拷貝在本發(fā)明中的閃存地址轉(zhuǎn)換的兩個查找表的使用。圖7是本發(fā)明的頂層流程圖。圖8是本發(fā)明進(jìn)行快照的更具體的流程圖。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,使用本發(fā)明的教導(dǎo),在附圖中所示的變化的實施方案沒有背離此處本發(fā)明的精神。在這些圖中,在不同圖內(nèi)具有相同編號的參考標(biāo)記的元件指示了先前定義的等同元件的出現(xiàn)。
具體實施例方式本發(fā)明優(yōu)選為運行在專用集成電路或ASIC中的固件。本發(fā)明可位于固件、軟件、 硬件或其中任意組合中;在控制器芯片、ASIC或母板卡中,以及優(yōu)選地位于SSD自身中;在包括具有SSD的本發(fā)明的任意情況的任意SSD系統(tǒng)中,無論該系統(tǒng)是否封裝為一個單元或數(shù)個單元。本發(fā)明所提供的功能將更可能是硬件和軟件的組合。硬件和軟件的類型將取決于該實施方式。通過實例而不限制的方式,使用固件、磁盤控制器芯片、ASIC和卡的邏輯單元實施方式是可能的,當(dāng)是內(nèi)建于具有軟件驅(qū)動和主機總線適配器的Linux系統(tǒng)中邏輯單元時。另外,可使用任意軟件工具用來編寫和編譯本發(fā)明,可以任意計算機語言來對其編寫,如C,包括面向?qū)ο笳Z言如C++。進(jìn)一步地,可由通用計算機系統(tǒng)來替換該固件,如具有主和輔助存儲器儲存的計算機。通常,基于用來構(gòu)建并實施本發(fā)明軟件的語言,該軟件可以具有任意數(shù)量的類、功能、子程序、對象、變量、模板、模塊、代碼行、代碼部分和結(jié)構(gòu)(共同地和一般地,由此處的流程圖所示出,“處理步驟”,“步驟”,“指令”,“過程”,“塊”,“塊步驟”,“應(yīng)用軟件”,“模塊”或“軟件模塊”)用來以此處所述和所教的連續(xù)過程實現(xiàn)本發(fā)明,以及可能是獨立的軟件應(yīng)用程序或在另一軟件應(yīng)用程序內(nèi)所使用或由另一軟件應(yīng)用程序所調(diào)用??蓸?gòu)建該軟件過程或軟件模塊使得在該應(yīng)用程序中代碼的一部分實施了多個功能, 當(dāng)例如在面向?qū)ο缶幊虝r(如,重載允許過程)。該轉(zhuǎn)換同樣實現(xiàn)為多個軟件模塊或處理步驟可被構(gòu)建以實施此處所述單個處理步驟的功能,而不失去本發(fā)明的普遍性。在本發(fā)明的處理步驟的任意階段,中間值、變量和數(shù)據(jù)可被存入為以后由該程序使用。通常,本發(fā)明的方法和設(shè)備可使用任意類型的硬件以運行實現(xiàn)本發(fā)明的軟件,不僅是在集成電路芯片中的固件,也包括但不限于個人計算機、ARM處理器、XScale處理器、DSP、ASIC或可編程平臺 ASIC、FPGA、GPP、微處理器、大型機、具有存儲器的專業(yè)電路,或任意其它硬件的兼容件或虛擬機?;貋碜⒁鈭D1,該圖示出諸如本發(fā)明的閃存裝置內(nèi)部的兩個閃存塊在數(shù)據(jù)被寫入之前示意圖。使用NAND技術(shù)的固態(tài)驅(qū)動器通常不將最新寫入的數(shù)據(jù)置于該數(shù)據(jù)的先前拷貝上。使用當(dāng)前技術(shù),可被擦除的數(shù)據(jù)最少數(shù)量是128K的用戶數(shù)據(jù)。該128K的塊被分段成觀頁,其是操作中可寫入的用戶數(shù)據(jù)的最少數(shù)量。SSD通常將最新寫入的數(shù)據(jù)置于不同于該相同數(shù)據(jù)的先前寫入拷貝的位置。圖1示出了簡化的示例。已將多個數(shù)據(jù)段寫入了閃存塊X。閃存塊Y被擦除并準(zhǔn)備被寫入。這些在圖1中示出,在數(shù)據(jù)被寫入之前。圖2是如本發(fā)明中所發(fā)現(xiàn)的閃存地址轉(zhuǎn)換的映射或查找表。為了 SSD內(nèi)部的SSD 控制器的便利,該表將與圖2的行頭內(nèi)發(fā)現(xiàn)的數(shù)個片段信息相關(guān),包括在什么閃存塊(如, 閃存塊X或Y)中發(fā)現(xiàn)了哪一個特定數(shù)據(jù)(如,數(shù)據(jù)段),以及在該閃存塊(對應(yīng)于該SSD中的邏輯塊)內(nèi)發(fā)現(xiàn)的數(shù)據(jù)在什么頁。其它類型信息,如,版本號,也可被展現(xiàn),當(dāng)該示意圖是簡化示例時。表可包括指針。從軟件的角度來看,“地址”可以是“指針”。因此地址表是指針表。等同表將是任意實施相同功能的類似結(jié)構(gòu);和/或任意包括保持另一變量地址的變量的等同數(shù)據(jù)構(gòu)成。進(jìn)一步地,可能有在同時保持多個快照的若干對表?;貋碜⒁鈭D3,示出了在新數(shù)據(jù)被寫入時諸如本發(fā)明的SSD的閃存裝置內(nèi)部的兩個閃存塊X,Y的示意圖。該閃存裝置接收了來自程序的寫命令,該程序由外部硬件為數(shù)據(jù)段210和211所驅(qū)動,如由箭頭301,302指示的標(biāo)記為“新數(shù)據(jù)段210”和“新數(shù)據(jù)段211”。 該閃存裝置接收了該段210和211的新數(shù)據(jù)并將它們寫入如圖3所示的閃存塊Y的預(yù)先擦除區(qū)域,如在所示的頁1和頁2的區(qū)域。閃存塊X未改變。在寫入閃存塊Y后,修改圖3中閃存塊X的頁以顯示在閃存塊X中的塊210和211的數(shù)據(jù)現(xiàn)在是舊數(shù)據(jù)。其通過標(biāo)志“舊數(shù)據(jù)”在圖3中指出,當(dāng)在圖3的閃存塊X中的“舊數(shù)據(jù)段210”和“舊數(shù)據(jù)段211”中,在頁 1和頁6處時。圖4示出了諸如本發(fā)明的閃存裝置的內(nèi)部兩個閃存塊在先前所述的寫操作完成后的示意圖。在此點閃存裝置將把其數(shù)據(jù)映射表更新為指向閃存塊Y,作為數(shù)據(jù)段210和 211的位置。該數(shù)據(jù)段的舊拷貝將保留在閃存塊X中直到整個閃存塊X被重新請求并擦除以準(zhǔn)備再次使用。在該閃存裝置中的地址轉(zhuǎn)換表隨后被更新為數(shù)據(jù)段210和211的新地址, 如圖5中所示。如本身所公知的一樣,磁盤陣列子系統(tǒng)支持稱為時間點拷貝或快照的特征。為了完成數(shù)據(jù)快照,該陣列將使用“寫時拷貝(copy on write) ”或“寫時重定向(redirect on write) ”快照機制以將該用戶數(shù)據(jù)的最初和最新寫入備份都預(yù)留。兩種方法都使用指針指向與該閃存裝置地址轉(zhuǎn)換表類似的數(shù)據(jù)。典型的快照方法將未變數(shù)據(jù)的普通拷貝保留在其最初位置用于該存儲卷和其快照二者。該存儲系統(tǒng)將把舊數(shù)據(jù)拷貝到新位置當(dāng)接收到寫操作時(寫時拷貝方法)或該存儲系統(tǒng)將把該新數(shù)據(jù)寫入該新位置(寫時重定向方法)。在二種情況中,該存儲系統(tǒng)管理該數(shù)據(jù)集使得對于該存儲系統(tǒng)的用戶,顯現(xiàn)出存在該卷的時間點拷貝,與該卷的最新版本一起。在存儲系統(tǒng)等級實施快照的當(dāng)前方法具有的一個問題是對性能的較大負(fù)面影響。 例如,當(dāng)使用寫時拷貝方法時,對于從主機接收到的每一寫命令,存儲系統(tǒng)必須從最初位置讀出舊的數(shù)據(jù),將該舊數(shù)據(jù)拷貝到該快照位置,并隨后將新數(shù)據(jù)寫入最初位置。在該點處的寫時重定向快照的情況中,當(dāng)終止快照時,必須將該快照位置上的新數(shù)據(jù)拷貝回最初位置中。在本發(fā)明中,由于SSD固有地留下了用戶數(shù)據(jù)的先前拷貝,可根據(jù)該發(fā)明的教導(dǎo)來使用它以將當(dāng)前數(shù)據(jù)和快照數(shù)據(jù)都存儲,至少不損失實施該快照的性能。當(dāng)根據(jù)本發(fā)明的教導(dǎo)來修改時,SSD實質(zhì)上為每一個接收到的寫命令執(zhí)行寫時重定向。通過增加附加的地址轉(zhuǎn)換表,其中該表能指向具有多個映射表的閃存裝置中的數(shù)據(jù)的先前版本,閃存裝置能提供到在該裝置所存儲的數(shù)據(jù)的多個時間點拷貝的訪問。因此,對于本發(fā)明,參照這些圖,閃存裝置接收命令以存儲早于寫操作210和211 的時間點拷貝的數(shù)據(jù)。閃存裝置保留圖2的查找表所示的地址查找表的拷貝,當(dāng)該指針指向時間點拷貝的地址時。在更新卷時,保留了該數(shù)據(jù)的當(dāng)前值(SSD的當(dāng)前狀態(tài),包括響應(yīng)寫命令將數(shù)據(jù)寫在SSD上的結(jié)果),如圖5的閃存地址轉(zhuǎn)換表所示。修改SSD以包括兩個查找表閃存裝置保留二個表的備份,只要其具有該快照的空間,以及該快照不通過一些其它動作來結(jié)束。其在圖6的兩個表中示出,其顯示了用于本發(fā)明中閃存地址轉(zhuǎn)換的兩個查找表的使用,用于當(dāng)前值和用于時間點拷貝(SSD的較早狀態(tài)的快照),在寫之前。圖6(a)示出了在該寫操作后的該地址轉(zhuǎn)換表,相似于先前所述的圖5,而6 (b)示出了早于該寫動作的該地址轉(zhuǎn)換表,該快照或時間點拷貝,相似于先前所述的圖2。圖7本發(fā)明的方法的高層流程圖。該發(fā)明可實施該方法通過控制SSD的硬件,軟件和/或固件的任意組合,并根據(jù)此處概述的步驟和指令來動作。在步驟700處,標(biāo)記為“開始”,本發(fā)明的程序啟動。流程進(jìn)行到標(biāo)記為“接收命令”的塊702,其中閃存裝置接收到命令,如寫命令、快照命令或其它類型的命令,并觸發(fā)電路或指令運行,和/或存儲結(jié)果,或一般地設(shè)置標(biāo)志或設(shè)置數(shù)據(jù)標(biāo)記。該命令可以是寫命令、或其可以是快照命令以將時間點拷貝(快照)的數(shù)據(jù)存入存儲裝置。如果接收到這樣的快照命令,則設(shè)置標(biāo)志、數(shù)據(jù)或其它數(shù)據(jù)標(biāo)記以指示將要進(jìn)行快照;這些被設(shè)置的數(shù)據(jù)可包括提供給硬件的信號或指令以觸發(fā)快照事件??煺詹幌駥懨钅菢宇l繁;通常在存儲系統(tǒng)中,在任意某一時刻單個快照或少數(shù)快照可以是激活的。流程進(jìn)行到標(biāo)記為“寫命令? ”的菱形步驟704。在SSD接收命令后,如在決定菱形步驟704中所示,如果該命令不是寫命令,則該程序的流程進(jìn)行到沿著“否”分支到達(dá)標(biāo)記為“處理其它命令”的步驟塊706,或者,如果該命令是寫命令,則沿著“是”分支到達(dá)標(biāo)記為“在進(jìn)行快照? ”的塊708。在決定菱形708,標(biāo)記為“在進(jìn)行快照? ”,可啟動快照,如接續(xù)的圖8所進(jìn)一步描述的一樣。如果未進(jìn)行快照,S卩,尚未接收到任何快照命令,流程繼續(xù)沿著該“否”分支到達(dá)標(biāo)記為“處理寫命令”的步驟塊710,其中處理任意普通寫命令(缺少快照),以及隨后流程繼續(xù)到標(biāo)記為“更新當(dāng)前視圖數(shù)據(jù)指針”的步驟塊712,其中更新了該SSD當(dāng)前值的數(shù)據(jù)指針, 如本領(lǐng)域本身所公知的一樣。但是,如果在進(jìn)行快照,流程繼續(xù)沿著該“是”分支進(jìn)行到標(biāo)記為“預(yù)留當(dāng)前數(shù)據(jù)和指針”的步驟塊714,其中閃存裝置保留該閃存中地址的查找表的拷貝,沿著圖2或圖6(b) 的路線,使用該指針指向該時間點(快照)的地址。隨后處理該寫命令,如標(biāo)記為“處理寫命令”的步驟塊716中所示,以及流程進(jìn)行到標(biāo)記為“更新當(dāng)前視圖和快照拷貝表”的步驟塊718,其中存儲器中的卷被更新以反映該當(dāng)前值(在寫之后),沿著圖5或圖6 (a)的路線。 使用本發(fā)明,由于SSD操作的固有方式,按照該SSD所做的寫命令進(jìn)行快照,如果參照性能方面的任意更多昂貴開銷,其沒有那么多。通過使用兩個表,可能使用該SSD裝置的固有能力來為每一個接收到的寫命令實現(xiàn)寫時重定向,以及,用來將該寫時重定向定向到以構(gòu)建快照,無論何時需要時,以僅僅使用兩個表的開銷,如圖6(a)和(b)中所示并來自此處的教導(dǎo)。因此當(dāng)更新該兩個表時,以及接收到該快照并將流程控制返回到正常情況,到該開始處,步驟塊700。此時回來注意圖8,其中示出了根據(jù)本發(fā)明進(jìn)行快照的方法的更具體但仍高層的流程圖。在啟動快照過程之前,SSD保留指向如圖2所示數(shù)據(jù)的當(dāng)前指針的一個表。該方法開始于標(biāo)記為“開始”的步驟800并進(jìn)行到標(biāo)記為“接收命令”的步驟塊802,其中檢查快照命令,以及,如果已經(jīng)收到了這樣的命令,流程進(jìn)行到標(biāo)記為“啟動快照命令”的步驟塊804, 其中本發(fā)明的系統(tǒng)從設(shè)置標(biāo)記(如,標(biāo)識或指令)以指示是否將進(jìn)行快照的合適裝置處檢查已接收到了快照命令。如果將進(jìn)行快照,流程隨后沿著“是”分支進(jìn)行到標(biāo)記為“建立快照指針表。設(shè)置快照進(jìn)度標(biāo)識”的步驟塊806,其中在圖7中概述了這些步驟,實施塊714, 716和718,其能夠包括建立第二個表(圖6(b))作為該當(dāng)前值表(如圖6(a))的補充。該第二個表(圖6b)將保留指向在處理該快照命令時刻的數(shù)據(jù)的視圖的指針。另外,該SSD 控制器將不會重新使用在該快照表中記錄的頁。如果未啟動任意快照命令,流程進(jìn)行到步驟決定菱形808,標(biāo)記為“終止快照命令? ”,其中可接收命令用來處理另一個命令,如跟隨該“否”分支到的標(biāo)記為“處理其它命令”的步驟塊810,或,如果已經(jīng)進(jìn)行了先前的快照但其期望終止或擦除它,則流程沿著該 “是”分支進(jìn)行到標(biāo)記為“丟棄快照指針表。清除快照進(jìn)度標(biāo)識”的步驟塊812,其中通過丟棄與該快照相關(guān)的任意表能夠終止快照,如丟棄快照指針的表,以及清除任意快照在進(jìn)行中或?qū)⑦M(jìn)行快照的進(jìn)度標(biāo)識、數(shù)據(jù)或標(biāo)記。丟棄圖6(b)中的表,以及不在圖6(a)中的圖 6(b)中的舊數(shù)據(jù),如在閃存塊X中的塊210和211的舊拷貝,準(zhǔn)許被丟棄在擦除閃存塊X用來重新使用時。這樣的步驟被認(rèn)作終止該快照命令。在圖8中所示的所有路徑中,流程能夠隨后返回到該開始處,塊800。
關(guān)于本發(fā)明的訪問,為獲得采用此處所述方式的兩個表,可通過多種裝置來提高訪問。例如,該閃存裝置能夠通過其裝置端口上的SSD中第二邏輯單元或通過SSD上附加端口訪問時間點拷貝。在另一實施方案中,SSD能夠經(jīng)過唯一命令集來提供訪問。可使用當(dāng)主機提供特定命令時將觸發(fā)快照的軟件或固件來提供RAID系統(tǒng)或主機適配器。本發(fā)明的又一個方面是在存儲系統(tǒng)中利用本發(fā)明將數(shù)據(jù)存儲在一個或多個SSD 上,以使用本發(fā)明的基于SSD的快照機制來實施和使用存儲在一個或多個SSD上的數(shù)據(jù)集上的系統(tǒng)等級數(shù)據(jù)快照。該系統(tǒng)等級數(shù)據(jù)快照可能是整體上與存儲系統(tǒng)相關(guān)的任意數(shù)據(jù), 如本領(lǐng)域本身公知的一樣。盡管已根據(jù)上述優(yōu)選實施方案來描述了本發(fā)明,上述優(yōu)選實施方案的眾多修改和 /或補充從此處的教導(dǎo)處對于一個本領(lǐng)域技術(shù)人員來說將是顯而易見的。例如,當(dāng)清楚地提及SSDs時,任意與SSD相同方式運行的存儲裝置能夠用來替換以取代SSD。進(jìn)一步地, 普通技術(shù)人員能夠進(jìn)行對寫時拷貝的存儲介質(zhì)的適合修改,如果該裝置按此處每一個教導(dǎo)來運行。使用此處教導(dǎo)的普通技術(shù)人員甚至能夠修改常用旋轉(zhuǎn)盤的硬盤驅(qū)動器(HDD),其使用寫時拷貝以實施類似于本發(fā)明的功能;這將比使用幾何運算的常用HDD需要更多的工作,不是用表替換數(shù)據(jù),而是一個能夠?qū)⒂成浔砣萘恐糜谒鼈冎?,與此處教導(dǎo)一起來創(chuàng)建本發(fā)明的實施方案。既然這樣,該HDD控制器將功能上等同于SSD控制器,以及因此能夠被稱作如為權(quán)利要求的目的,具有的不同是,其運行在替換固態(tài)存儲器的旋轉(zhuǎn)磁盤上。期望的是將本發(fā)明的范圍擴展到所有這樣的修改和/或補充,以及本發(fā)明的范圍為以下所述的權(quán)利要求獨自進(jìn)行限定。
權(quán)利要求
1.一種用于存儲裝置的快照的系統(tǒng),包括一存儲裝置,其包括用于地址轉(zhuǎn)換的一第一映射表,在一寫動作之前由該存儲裝置保留數(shù)據(jù),和用于地址轉(zhuǎn)換的一第二映射表,在一寫動作之后由該存儲裝置保留數(shù)據(jù);其中該存儲裝置能夠通過該第一和第二映射表保留的所述數(shù)據(jù)進(jìn)行該存儲裝置的時間點拷貝。
2.如權(quán)利要求1所述的本發(fā)明,其中 該存儲裝置是一固態(tài)磁盤(SSD);該第一映射表保留與該SSD的一快照相關(guān)的數(shù)據(jù),以及該第二映射表保留與該SSD當(dāng)前值相關(guān)的數(shù)據(jù),其中該SSD使用該第一和第二映射表以構(gòu)建該SSD的一快照。
3.如權(quán)利要求2所述的本發(fā)明,其中該SSD響應(yīng)接收的一寫命令執(zhí)行一寫入并響應(yīng)執(zhí)行寫命令使用數(shù)據(jù)更新該第一和第二映射表。
4.如權(quán)利要求3所述的本發(fā)明,其中該SSD為接收到的該寫命令執(zhí)行一寫時重定向,并使用指示該SSD當(dāng)前值的數(shù)據(jù)更新該第二映射表。
5.如權(quán)利要求4所述的本發(fā)明,其中該SSD使用指示該寫命令之前的該SSD的時間點拷貝的數(shù)據(jù)更新該第一映射表,和提供多個第一和第二映射表用以創(chuàng)建多個快照。
6.如權(quán)利要求3所述的本發(fā)明,其中該SSD設(shè)置數(shù)據(jù)以指示將要創(chuàng)建的快照;和該SSD為接收到的該寫命令執(zhí)行一寫時重定向。
7.如權(quán)利要求6所述的本發(fā)明,其中該SSD響應(yīng)該SSD設(shè)置的指示將要創(chuàng)建的快照的數(shù)據(jù)更新該第一和第二映射表。
8.如權(quán)利要求7所述的本發(fā)明,其中駐留在該SSD中的固件,該固件用于更新該第一和第二映射表;和多個SSD,其用于在存儲系統(tǒng)上將數(shù)據(jù)存儲在至少一個該SSD上,以使能夠在該SSD中存儲的數(shù)據(jù)集上實現(xiàn)系統(tǒng)等級數(shù)據(jù)快照的創(chuàng)建。
9.如權(quán)利要求4所述的本發(fā)明,其中用于設(shè)置數(shù)據(jù)標(biāo)記的裝置被展現(xiàn)以觸發(fā)快照;該SSD使用指示該寫時重定向之前的該SSD的時間點拷貝的數(shù)據(jù)更新該第一映射表;和,該SSD使用指示該SSD的該當(dāng)前值的數(shù)據(jù)更新該第二映射表。
10.如權(quán)利要求9所述的本發(fā)明,進(jìn)一步包括能夠?qū)崿F(xiàn)多個快照的創(chuàng)建的多個第一和第二映射表; 用于建立具有指向數(shù)據(jù)的指針的該第一和第二映射表的裝置,和用于終止一快照的裝置,包括用于丟棄一快照表的裝置;和多個SSD,其用于在存儲系統(tǒng)上將數(shù)據(jù)存儲在至少一個該SSD上,以使能夠在該SSD中存儲的數(shù)據(jù)集上實現(xiàn)系統(tǒng)等級數(shù)據(jù)快照的創(chuàng)建。
11.如權(quán)利要求3所述的本發(fā)明,進(jìn)一步包括多個SSD,其用于在存儲系統(tǒng)上將數(shù)據(jù)存儲在至少一個該SSD上,以使能夠在該SSD中存儲的數(shù)據(jù)集上實現(xiàn)系統(tǒng)等級數(shù)據(jù)快照的創(chuàng)建。
12.一種用于固態(tài)磁盤快照的方法,包括步驟 將數(shù)據(jù)存儲在一固態(tài)磁盤(SSD)上;為該SSD的地址轉(zhuǎn)換提供一第一映射表;和, 為該SSD的地址轉(zhuǎn)換提供一第二映射表;其中所述SSD能夠通過保留在該第一和第二映射表中的數(shù)據(jù)進(jìn)行該SSD的時間點拷貝。
13.如權(quán)利要求12所述的方法,包括步驟 將與該SSD的快照相關(guān)的數(shù)據(jù)存入該第一映射表; 將與該SSD當(dāng)前值相關(guān)的數(shù)據(jù)存入該第二映射表;使用該第一和第二映射表中的所述數(shù)據(jù)創(chuàng)建該SSD的快照。
14.如權(quán)利要求13所述的方法,包括步驟 執(zhí)行一寫命令;檢查一快照命令,并在接收到一快照命令后實施該快照的構(gòu)建。
15.如權(quán)利要求14所述的方法,包括步驟 為該寫命令執(zhí)行一寫時重定向;使用指示該寫時重定向之前該SSD的一時間點拷貝的數(shù)據(jù)更新該第一映射表; 提供多個快照的創(chuàng)建,用于將數(shù)據(jù)存儲在至少一個該SSD上的存儲系統(tǒng)上;和, 能夠在至少一個該多個SSD上在存儲在該SSD中的數(shù)據(jù)集上實現(xiàn)系統(tǒng)等級數(shù)據(jù)快照的創(chuàng)建。
16.如權(quán)利要求15所述的方法,包括步驟 檢查該寫命令之前的快照命令;終止該快照命令;和,提供多個第一和第二映射表以能夠?qū)崿F(xiàn)同時多個快照的創(chuàng)建。
17.如權(quán)利要求13所述的方法,包括步驟 檢查一快照命令;檢查一寫命令,并為該寫命令執(zhí)行一寫時重定向;檢查是否響應(yīng)該快照命令啟動一時間點拷貝,以及如果接收到該快照命令,則實施該啟動時間點拷貝,而如果未接收到該快照命令,則終止該快照命令。
18.如權(quán)利要求17所述的方法,包括步驟如果該快照命令被終止,則清除來自該第一映射表的數(shù)據(jù); 提供多個第一和第二映射表以能夠?qū)崿F(xiàn)同時多個快照的創(chuàng)建;和, 使用與當(dāng)前值相關(guān)的數(shù)據(jù)更新該第二映射表。
19.如權(quán)利要求13所述的方法,包括步驟 檢查一快照命令;檢查一寫命令,并為該寫命令執(zhí)行一寫時重定向;檢查是否響應(yīng)該快照命令啟動一時間點拷貝,如果接收到該快照命令,則實施該啟動時間點拷貝;使用指示早于該寫時重定向的SSD時間點拷貝的數(shù)據(jù)更新該第一映射表; 如果接收到一快照備份,則使用與該當(dāng)前值相關(guān)的數(shù)據(jù)更新該第二映射表;和, 提供多個第一和第二映射表以能夠?qū)崿F(xiàn)同時多個快照的創(chuàng)建。
20. 一種用于創(chuàng)建SSD存儲系統(tǒng)的時間點拷貝的系統(tǒng),包括 包括一 SSD的裝置,其用于存儲數(shù)據(jù);所述SSD存儲裝置具有包括一第一查找表的地址轉(zhuǎn)換裝置,所述第一查找表保留與該 SSD的時間點拷貝相關(guān)的數(shù)據(jù);所述SSD存儲裝置具有包括一第二查找表的地址轉(zhuǎn)換裝置,所述第二查找表保留與該 SSD當(dāng)前值相關(guān)的數(shù)據(jù);數(shù)據(jù)寫入裝置,所述數(shù)據(jù)寫入裝置包括執(zhí)行一寫時重定向的裝置; 其中,所述SSD使用該第一和第二查找表以構(gòu)建該SSD的一快照; 設(shè)置數(shù)據(jù)標(biāo)記以指示是否創(chuàng)建快照的裝置;響應(yīng)指示創(chuàng)建快照的所述設(shè)置數(shù)據(jù)標(biāo)記裝置,使用數(shù)據(jù)指針更新所述第一和第二查找表的裝置;在多個SSD上提供多個第一和第二查找表,以能夠?qū)崿F(xiàn)多個快照的創(chuàng)建; 能夠在至少一個該多個SSD上在存儲在該SSD中的數(shù)據(jù)集上創(chuàng)建系統(tǒng)等級數(shù)據(jù)快照的裝置;和,響應(yīng)終止快照的命令終止快照數(shù)據(jù)的裝置。
全文摘要
一種用于創(chuàng)建使用固態(tài)磁盤(SSD)的存儲系統(tǒng)的快照的方法和設(shè)備。SSD中的多個映射表存儲需要創(chuàng)建SSD的一個或多個時間點快照和當(dāng)前值的數(shù)據(jù)。響應(yīng)寫命令,SSD執(zhí)行其正常寫處理并將其映射表更新以指示該SSD當(dāng)前值,以及附加地將最初數(shù)據(jù)保留在指向該最初數(shù)據(jù)的指針表中,作為該SSD的較早狀態(tài)的快照。在優(yōu)選實施方案中,使用將數(shù)據(jù)寫入新位置的SSD固有能力來實施時間點拷貝,在實施快照中帶來沒有或很少的性能損耗。
文檔編號G06F13/00GK102239480SQ200980148791
公開日2011年11月9日 申請日期2009年3月30日 優(yōu)先權(quán)日2008年12月17日
發(fā)明者布萊恩·馬卡基, 布雷特·S·韋伯, 杰夫·韋林, 約翰·迪特里奇, 蒂莫西·E·霍格倫德, 默罕默德·厄爾-巴塔爾 申請人:Lsi公司