組表格的數(shù)據(jù)沖洗的制作方法
【專利說(shuō)明】
【背景技術(shù)】
[0001]由于在固態(tài)存儲(chǔ)技術(shù)中的新近的創(chuàng)新,這樣的技術(shù)正在被集成到數(shù)據(jù)系統(tǒng)中。數(shù)據(jù)系統(tǒng)的服務(wù)器可以尋求將數(shù)據(jù)寫到固態(tài)存儲(chǔ)技術(shù)或者從固態(tài)存儲(chǔ)技術(shù)讀數(shù)據(jù)。將這樣的技術(shù)集成到系統(tǒng)中而又維持原子性(atomicity)可能對(duì)諸如管理員和/或供應(yīng)者之類的用戶構(gòu)成挑戰(zhàn)。
【附圖說(shuō)明】
[0002]以下詳細(xì)描述參考附圖,其中:
圖1是節(jié)點(diǎn)將數(shù)據(jù)沖洗(flush)到非易失性存儲(chǔ)器的示例框圖;
圖2是第一節(jié)點(diǎn)將數(shù)據(jù)沖洗到非易失性存儲(chǔ)器并且將所沖洗的數(shù)據(jù)傳送到第二節(jié)點(diǎn)的示例框圖;
圖3是節(jié)點(diǎn)由應(yīng)用服務(wù)器共享的示例框圖;
圖4是包括用于將數(shù)據(jù)沖洗到非易失性存儲(chǔ)器的指令的計(jì)算設(shè)備的示例框圖;以及圖5是用于沖洗和傳送數(shù)據(jù)的方法的示例流程圖。
【具體實(shí)施方式】
[0003]在以下描述中給出了具體細(xì)節(jié)以提供對(duì)實(shí)施例的徹底理解。然而,應(yīng)理解,可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)行實(shí)施例。例如,可以以框圖示出系統(tǒng)以便不以不必要的細(xì)節(jié)使得實(shí)施例不清楚。在其他實(shí)例中,可以在沒(méi)有不必要的細(xì)節(jié)的情況下示出公知過(guò)程、結(jié)構(gòu)和技術(shù),以便避免使得實(shí)施例不清楚。
[0004]諸如憶阻器(memristor)之類的非易失性存儲(chǔ)器(NVM)技術(shù)可以提供耐久性和存儲(chǔ)器快速訪問(wèn)兩者。該類型的NVM可以被映射到服務(wù)器存儲(chǔ)器空間中用于直接加載/存儲(chǔ)訪問(wèn)。當(dāng)將用于冗余、復(fù)制、備份和歸檔的全方位(full range)豐富數(shù)據(jù)(rich data)服務(wù)應(yīng)用于存儲(chǔ)器映射的存儲(chǔ)時(shí),可能需要建立數(shù)據(jù)的分組,其必須在多個(gè)存儲(chǔ)器系統(tǒng)之內(nèi)保持自相一致并且必須跨多個(gè)存儲(chǔ)器系統(tǒng)保持自相一致。
[0005]存儲(chǔ)器一致性一般由處理器和存儲(chǔ)器控制器本地管理。雖然現(xiàn)有的方法可以強(qiáng)制實(shí)施嚴(yán)格的排序和高速緩存相干性,但是針對(duì)諸如那些可能存在于應(yīng)用服務(wù)器和存儲(chǔ)服務(wù)器之間的群集的、聯(lián)合的、遠(yuǎn)程復(fù)制和/或客戶端/服務(wù)器關(guān)系,這些方法可能不縮放(scale)。這個(gè)的根本原因在于,如在單個(gè)處理器或?qū)ΨQ多處理器(SMP)系統(tǒng)中可見的嚴(yán)格一致性可能對(duì)于在有限的物理范圍之上維持是成本過(guò)高(cost prohibitive)的。
[0006]當(dāng)由處理器使用存儲(chǔ)指令直接寫NVM時(shí),使用同步操作以確保足夠的一致性以保證在故障或突然的電力丟失(power loss)的情況下的可恢復(fù)性。同步操作通常僅指代存儲(chǔ)器位置的單個(gè)相連(contiguous)范圍。一般地,同步操作涉及到NVM的處理器高速緩存的沖洗。沖洗大量的高速緩存可以花費(fèi)時(shí)間并且減少處理器寫性能??梢栽谥T如盤陣列之類的存儲(chǔ)產(chǎn)品之內(nèi)使用一致性組以確保對(duì)塊存儲(chǔ)(block storage)的遠(yuǎn)程復(fù)制和時(shí)間點(diǎn)拷貝操作維持應(yīng)用級(jí)可恢復(fù)性。在存儲(chǔ)產(chǎn)品中,一致性組可以由多個(gè)虛擬卷或邏輯單元編號(hào)(LUN)組成。處理器高速緩存沖洗操作以及存儲(chǔ)器映射和同步操作可以針對(duì)存儲(chǔ)器位置的相連范圍操作。除了通過(guò)沒(méi)有良好地縮放的精細(xì)粒度排序約束的嚴(yán)格跟蹤,這些操作可能不計(jì)及在存儲(chǔ)器位置的不相交(disjoint)范圍之間的應(yīng)用級(jí)一致性關(guān)聯(lián)。
[0007]實(shí)施例可以在不需要通過(guò)在一個(gè)或多個(gè)組中保留存儲(chǔ)器范圍的列表的對(duì)其接口的改變的情況下擴(kuò)展同步操作的范圍。這些組可以由應(yīng)用定義以解決(address)它們的具體一致性要求。例如,節(jié)點(diǎn)可以包括組表格和控制器。所述組表格可以包括一個(gè)或多個(gè)組。組中的每個(gè)可以與組地址范圍相關(guān)聯(lián)。組地址范圍可以被映射到NVM的存儲(chǔ)器位置。控制器可以接收包括同步地址范圍的同步命令并且可以根據(jù)由組表格確定的順序來(lái)將數(shù)據(jù)從高速緩存沖洗到NVM。組表格可以基于同步地址范圍是否被包括在組地址范圍中的一個(gè)中來(lái)確定控制器沖洗數(shù)據(jù)的順序以及控制器沖洗數(shù)據(jù)中的哪個(gè)中的至少一個(gè)。
[0008]在一個(gè)實(shí)施例中,在包含在同步命令中指定的地址的組中的所有臟的(dirty)高速緩存地址在該同步命令期間被用最后被沖洗的同步命令的指定地址沖洗。在某些實(shí)施例中,組可以包含子組。子組中的每個(gè)可以由子組地址范圍的集合組成,所述子組地址范圍的集合是在組中的組地址范圍的子集。當(dāng)駐留在子組之內(nèi)的地址被同步時(shí),在由該子組指定的子組地址范圍中的附加臟地址以及在相同組中、但不在任何子組中的可能的任何其他臟的高速緩存地址也可以被沖洗。因此實(shí)施例可以允許例如使得在子組中的元數(shù)據(jù)在相同組中的其他數(shù)據(jù)之后一致。
[0009]組和子組可以包括跟蹤信息,所述跟蹤信息包括需要被傳送用于復(fù)制的地址范圍的位圖(bit map)ο同步操作可以等待所沖洗的地址的傳送的完成,以便確保冗余并且針對(duì)一致應(yīng)用數(shù)據(jù)鏡像(image)支持豐富數(shù)據(jù)服務(wù)的操作。傳送可以涉及持久的、冗余的日志,其中數(shù)據(jù)在日志中的放置構(gòu)成了傳輸。
[0010]因此,實(shí)施例可以通過(guò)允許應(yīng)用顯式地表示哪些存儲(chǔ)器位置必須被同步在一起作為相同組的一部分來(lái)減輕將被沖洗的數(shù)據(jù)量。組的實(shí)施例可以將結(jié)構(gòu)添加到數(shù)據(jù)從處理器向NVM的沖洗以及在節(jié)點(diǎn)之間的同步數(shù)據(jù)流的創(chuàng)建兩者。這可以使得一致數(shù)據(jù)鏡像或虛擬化的鏡像能夠被建立,其堅(jiān)持(adhere to)應(yīng)用特定規(guī)則。這些鏡像然后可以被投射(cast)為各種類型的數(shù)據(jù)復(fù)制品或者被用于執(zhí)行諸如解復(fù)制(deduplicat1n)或者分類的數(shù)據(jù)分析,所述數(shù)據(jù)分析需要數(shù)據(jù)的一致和可恢復(fù)狀態(tài)。
[0011]現(xiàn)在參考附圖,圖1是節(jié)點(diǎn)100將數(shù)據(jù)沖洗到非易失性存儲(chǔ)器(NVM)HO的示例框圖。節(jié)點(diǎn)100可以是例如存儲(chǔ)設(shè)備、計(jì)算機(jī)、交換機(jī)、外殼(enclosure)、服務(wù)器、控制器和/或連接到網(wǎng)絡(luò)的任何類型的設(shè)備的一部分或者被包括在其中。在圖1的實(shí)施例中,節(jié)點(diǎn)100被示出包括組表格110和控制器120。進(jìn)一步地,節(jié)點(diǎn)100被示出與高速緩存130對(duì)接并經(jīng)由高速緩存130與NVM 140對(duì)接。
[0012]節(jié)點(diǎn)100可以包括例如硬件設(shè)備,其包括用于實(shí)現(xiàn)下文描述的功能的電子電路,諸如控制邏輯和/或存儲(chǔ)器。附加地或者作為替代,節(jié)點(diǎn)100可以被實(shí)現(xiàn)為被編碼在機(jī)器可讀存儲(chǔ)介質(zhì)上并且可被處理器執(zhí)行的一系列指令。高速緩存130可以是任何類型的設(shè)備以存儲(chǔ)將被寫到諸如NVM 140 130的存儲(chǔ)設(shè)備和/或從諸如NVM 140 130的存儲(chǔ)設(shè)備讀的數(shù)據(jù)132,使得可以以比存儲(chǔ)設(shè)備的等待時(shí)間少的等待時(shí)間來(lái)服務(wù)對(duì)寫和/或讀數(shù)據(jù)的請(qǐng)求。
[0013]NVM 140可以包括當(dāng)關(guān)斷電力時(shí)保留其數(shù)據(jù)的任何類型的設(shè)備,諸如只讀存儲(chǔ)器、閃存、鐵電RAM (F-RAM)、大部分類型的磁性計(jì)算機(jī)存儲(chǔ)設(shè)備(例如,硬盤、軟盤和磁帶)和光盤以及基于憶阻器的、自旋轉(zhuǎn)移矩(spin-torque transfer)以及相變隨機(jī)訪問(wèn)存儲(chǔ)器。例如,NVM可以包括以每字節(jié)或者每處理器高速緩存線(line)為基礎(chǔ)讀或?qū)懙拇鎯?chǔ)器。
[0014]返回到節(jié)點(diǎn)100,組表格110包括組112,并且組112包括組地址范圍114。組地址范圍114可以包括被映射到NVM 140的一個(gè)或多個(gè)存儲(chǔ)器位置142的一個(gè)或多個(gè)地址。術(shù)語(yǔ)映射可以指用于將諸如NVM 140的設(shè)備的一個(gè)或多個(gè)存儲(chǔ)器地址并入到諸如節(jié)點(diǎn)100的組表格110的另一設(shè)備的地址表格中的技術(shù)。雖然組表格110被示出包括單個(gè)組112并且組114被示出包括單個(gè)組地址范圍114,但是組表格110的實(shí)施例可以包括多個(gè)組112并且組112的實(shí)施例可以包括多個(gè)地址范圍114。
[0015]控制器120可以接收包括同步地址范圍116的同步命令。例如,應(yīng)用(未示出)可能偶爾生成同步命令以便定義恢復(fù)點(diǎn)??梢岳缃?jīng)由顯式調(diào)用來(lái)生成同步命令,或者在以其編寫應(yīng)用的語(yǔ)言的某些使用中,其可以是隱式的。同步操作可以遍歷(traverse)到NVM140的軟件路徑或硬件路徑。同步地址范圍116可以涉及應(yīng)用希望沖洗或?qū)懟氐絅VM140的一個(gè)或多個(gè)地址,諸如高速緩存130處的地址。應(yīng)用可以創(chuàng)建組112中的一個(gè)或多個(gè)以表示其大規(guī)模的數(shù)據(jù)結(jié)構(gòu),諸如數(shù)據(jù)表格、索引和日志。應(yīng)用然后可以用反映應(yīng)用的整體數(shù)據(jù)結(jié)構(gòu)的組地址范圍114填充(populate)組112。
[0016]同步操作可以包括由處理器(未示出)執(zhí)行的沖洗指令和/或被傳送到NVM 140的同步命令。例如,在同步操作期間,虛擬存儲(chǔ)器表格(未示出)、組表格110和/或子組表格(未示出)可以被用于協(xié)調(diào)除由同步命令的同步地址范圍116初始引用的那些之外的附加地址(或者頁(yè))的沖洗??梢曰谕降刂贩秶?16是否被包括在組表格110的任何組112的組地址范圍114中由組表格110來(lái)確定這些附加地址。
[0017]因此,控制器120可以響應(yīng)于同步命令,根據(jù)由組表格110確定的順序來(lái)將數(shù)據(jù)132從高速緩存130選擇性地沖洗到NVM 140。基于同步地址范圍116是否被包括在組地址范圍114中的一個(gè)中,組表格110可以確定控制器120沖洗數(shù)據(jù)的順序以及控制器120沖洗數(shù)據(jù)中的哪些中的至少一個(gè)。根據(jù)如由組表格110確定的、保留應(yīng)用級(jí)一致性的順序,同步操作也可以將所沖洗的數(shù)據(jù)傳送到諸如另一服務(wù)器的另一節(jié)點(diǎn)。下文將關(guān)于圖2更詳細(xì)地描述組表格110。
[0018]圖2是第一節(jié)點(diǎn)200將數(shù)據(jù)沖洗到NVM 280并且將所沖洗的數(shù)據(jù)傳送到第二節(jié)點(diǎn)290的示例框圖。在圖2中,節(jié)點(diǎn)200包括組表格210、子組表格220、日志230、寫時(shí)復(fù)制(COff)引擎240、控制器250和處理器260。處理器260還包括高速緩存265和虛擬存儲(chǔ)器(VM)表格270。第一節(jié)點(diǎn)200被示出諸如經(jīng)由網(wǎng)絡(luò)連接與第二節(jié)點(diǎn)290對(duì)接。
[0019]圖2的第一和第二節(jié)點(diǎn)200和290可以包括與圖1的節(jié)點(diǎn)100類似的功能和/或硬件。例如,圖2的組表格210