閃存陣列中的邏輯扇區(qū)映射的制作方法
【專利摘要】對包括多臺固態(tài)存儲設(shè)備的存儲系統(tǒng)中存儲的數(shù)據(jù)高效地執(zhí)行用戶存儲器虛擬化的系統(tǒng)和方法。數(shù)據(jù)存儲子系統(tǒng)支持多個映射表。在映射表內(nèi)的記錄被安排在多個等級中。每個等級都存儲著關(guān)鍵字值與指針值的配對。等級按時間分選。新記錄被插入在創(chuàng)建的最新的(最年輕的)等級中。不執(zhí)行原地編輯。全部等級除最年輕等級外可以是只讀的。系統(tǒng)可以進(jìn)一步包括覆蓋表,它標(biāo)識映射表內(nèi)無效的關(guān)鍵字。
【專利說明】閃存陣列中的邏輯扇區(qū)映射
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機(jī)網(wǎng)絡(luò),更確切地說,涉及對于多臺固態(tài)存儲設(shè)備當(dāng)中存儲的數(shù)據(jù)高效地執(zhí)行用戶存儲器虛擬化。
【背景技術(shù)】
[0002]隨著計算機(jī)內(nèi)存存儲和數(shù)據(jù)帶寬的增加,商家日常管理的數(shù)據(jù)的量和復(fù)雜度也在增加。大規(guī)模的分布式存儲系統(tǒng),比如數(shù)據(jù)中心,典型情況下運(yùn)行許多商務(wù)操作。數(shù)據(jù)中心也可以被稱為服務(wù)器機(jī)房,是中心化的儲存庫,或者是物理的或者是虛擬的,用于對屬于一個或多個商家的數(shù)據(jù)進(jìn)行存儲、管理和傳播。分布式存儲系統(tǒng)可以連接到由一個或多個網(wǎng)絡(luò)互連的客戶計算機(jī)。如果分布式存儲系統(tǒng)的任何部分性能不佳,公司運(yùn)轉(zhuǎn)就可能受損。所以分布式存儲系統(tǒng)對于數(shù)據(jù)可用性和高性能功能保持高標(biāo)準(zhǔn)。
[0003]分布式存儲系統(tǒng)包括若干物理卷,它們可以是硬盤、固態(tài)設(shè)備、使用另一種存儲技術(shù)的存儲設(shè)備或存儲設(shè)備的分區(qū)。軟件應(yīng)用程序,比如邏輯卷管理器或磁盤陣列管理器,提供了對海量存儲陣列分配空間的工具。此外,這種軟件允許系統(tǒng)管理員創(chuàng)建存儲組的單元,包括邏輯卷。存儲器虛擬化實(shí)現(xiàn)了從物理存儲器抽象(分離)出邏輯存儲器,以便訪問邏輯存儲器而終端用戶不必識別物理存儲器。
[0004]為了支持存儲器虛擬化,卷管理器執(zhí)行輸入/輸出(I/O)重定向,方式為把終端用戶使用邏輯地址送來的I/o請求轉(zhuǎn)換為使用與存儲設(shè)備中物理位置相關(guān)聯(lián)的地址的新請求。由于某些存儲設(shè)備可以包括附加的地址轉(zhuǎn)換機(jī)制,比如可用于固態(tài)存儲設(shè)備的地址轉(zhuǎn)換層,所以上述從邏輯地址到另一種地址的轉(zhuǎn)換可能不表示唯一或最后的地址轉(zhuǎn)換。重定向利用了在一個或多個映射表中存儲的元數(shù)據(jù)。此外,在一個或多個映射表中存儲的信息可用于存儲器去重復(fù)以及把特定快照級的虛擬扇區(qū)映射到物理位置。卷管理器可以保持虛擬化存儲器的映射信息視圖一致。不過,所支持的地址空間可能受限于保持映射表所用的存儲容量。
[0005]與選中的存儲磁盤相關(guān)聯(lián)的技術(shù)和機(jī)制確定了卷管理器使用的方法。例如,提供硬盤、硬盤分區(qū)或外部存儲設(shè)備的邏輯單元號(LUN)粒度級映射的卷管理器受限于大塊數(shù)據(jù)的重定向、定位、去除重復(fù)數(shù)據(jù)等。另一種類型存儲盤的一個實(shí)例是固態(tài)盤(SSD)。SSD可以仿真HDD接口,但是SSD利用固態(tài)內(nèi)存存儲永久數(shù)據(jù)而不是HDD中發(fā)現(xiàn)的機(jī)電設(shè)備。例如,SSD可以包括閃存的存儲體。所以,在包括SSD存儲器同時使用為HDD開發(fā)的映射表分配算法的系統(tǒng)中可能實(shí)現(xiàn)不了由一個或多個映射表支持的大地址空間。
[0006]考慮以上情況,期望的是對多臺固態(tài)存儲設(shè)備當(dāng)中存儲的數(shù)據(jù)高效地執(zhí)行存儲器虛擬化的系統(tǒng)和方法。
【發(fā)明內(nèi)容】
[0007]公開了對多臺固態(tài)存儲設(shè)備當(dāng)中存儲的數(shù)據(jù)高效地執(zhí)行用戶存儲器虛擬化的計算機(jī)系統(tǒng)和方法的多個實(shí)施例。[0008]在一個實(shí)施例中,連接到網(wǎng)絡(luò)的數(shù)據(jù)存儲子系統(tǒng)在網(wǎng)絡(luò)上接收來自客戶計算機(jī)的讀寫請求。數(shù)據(jù)存儲子系統(tǒng)包括多個數(shù)據(jù)存儲位置,在包含多臺存儲設(shè)備的設(shè)備組上。數(shù)據(jù)存儲子系統(tǒng)進(jìn)一步包括至少一個映射表,包括按時間分選的多個等級。在一個實(shí)施例中,每個等級都存儲一個或多個元組,每個元組都包括一個或多個值,它們可用作查找關(guān)鍵字。此夕卜,每個元組都可以包括若干數(shù)據(jù)值,與這些關(guān)鍵字值相關(guān)聯(lián)。在一個實(shí)施例中,映射表是虛擬至物理地址轉(zhuǎn)換表。在另一個實(shí)施例中,映射表是去重復(fù)表。數(shù)據(jù)存儲子系統(tǒng)進(jìn)一步包括數(shù)據(jù)存儲控制器,被配置為響應(yīng)檢測到把一個或多個新元組插入到映射表中的條件,創(chuàng)建要向多個等級添加的新的最高等級(最年輕等級)。每個元組都可以被存儲在映射表內(nèi)分開的記錄即條目中。這些記錄可以按關(guān)鍵字值分選。
[0009]在也預(yù)期的實(shí)施例中,系統(tǒng)包括一個或多個“覆蓋”表。覆蓋表可用于修改由映射表回答的對若干查詢的響應(yīng)。修改后的響應(yīng)可以包括標(biāo)注響應(yīng)無效或者修改響應(yīng)對映射表的查詢而提供的元組中若干字段值。對覆蓋表的訪問可以以相對快的方式判定給定關(guān)鍵字不是有效的。在也預(yù)期的實(shí)施例中,映射表的全部等級除了最年輕的都是只讀的。
[0010]在考慮了以下說明和附圖后,這些和其他實(shí)施例將變得顯而易見。
[0011]附圖簡要說明
[0012]圖1是廣義框圖,展示了網(wǎng)絡(luò)架構(gòu)的一個實(shí)施例;
[0013]圖2是映射表的一個實(shí)施例的廣義框圖;
[0014]圖3A是訪問映射表所用的初級索引的一個實(shí)施例的廣義框圖;
[0015]圖3B是訪問映射表所用的初級索引的另一個實(shí)施例的廣義框圖;
[0016]圖4是初級索引和映射表的另一個實(shí)施例的廣義框圖;
[0017]圖5A是廣義流程圖,展示了執(zhí)行讀訪問的方法的一個實(shí)施例;
[0018]圖5B是廣義流程圖,展示了執(zhí)行寫操作的方法的一個實(shí)施例;
[0019]圖6是具有共享映射表的多節(jié)點(diǎn)網(wǎng)絡(luò)的一個實(shí)施例的廣義框圖;
[0020]圖7是訪問映射表所用的次級索引的一個實(shí)施例的廣義框圖;
[0021]圖8是訪問映射表的三級索引的一個實(shí)施例的廣義框圖;
[0022]圖9展示了利用覆蓋表方法的一個實(shí)施例;
[0023]圖10是對映射表內(nèi)若干等級進(jìn)行展平操作的一個實(shí)施例的廣義框圖;
[0024]圖11是對映射表內(nèi)若干等級進(jìn)行展平操作的另一個實(shí)施例的廣義框圖;
[0025]圖12是廣義流程圖,展示了映射表內(nèi)等級展平方法的一個實(shí)施例;
[0026]圖13是廣義流程圖,展示了映射表內(nèi)批量陣列任務(wù)高效處理方法的一個實(shí)施例;
[0027]圖14是廣義框圖,展示了存儲設(shè)備內(nèi)數(shù)據(jù)布局架構(gòu)的實(shí)施例。
[0028]雖然本發(fā)明允許多種修改和替代形式,但是在附圖中舉例顯示并且本文詳細(xì)介紹了若干特定實(shí)施例。不過應(yīng)當(dāng)理解,附圖及其詳細(xì)說明并非旨在使本發(fā)明限于所公開的具體形式,而是相反,本發(fā)明要覆蓋落入由附帶權(quán)利要求書定義的本發(fā)明的精神和范圍內(nèi)的一切修改、等價和替代。
【具體實(shí)施方式】
[0029]為了徹底理解本發(fā)明,在以下說明中闡述了眾多特定細(xì)節(jié)。不過,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)認(rèn)識到,沒有這些特定的細(xì)節(jié),也能夠?qū)嵤┍景l(fā)明。在某些實(shí)例中,為了避免模糊本發(fā)明,未詳細(xì)顯示眾所周知的電路、結(jié)構(gòu)、信號、計算機(jī)程序指令和技術(shù)。
[0030]參考圖1,顯示了網(wǎng)絡(luò)架構(gòu)100的一個實(shí)施例的廣義框圖。正如以下進(jìn)一步介紹,網(wǎng)絡(luò)架構(gòu)100的一個實(shí)施例包括客戶計算機(jī)系統(tǒng)IlOa-1lOb,通過網(wǎng)絡(luò)180彼此互連并連接到數(shù)據(jù)存儲器陣列120a-120b。網(wǎng)絡(luò)180可以通過交換機(jī)140連接到第二個網(wǎng)絡(luò)190??蛻粲嬎銠C(jī)系統(tǒng)IOOc經(jīng)由網(wǎng)絡(luò)190連接到客戶計算機(jī)系統(tǒng)IlOa-1lOb和數(shù)據(jù)存儲器陣列120a-120b。此外,網(wǎng)絡(luò)190還可以通過交換機(jī)150連接到因特網(wǎng)160或網(wǎng)絡(luò)之外別處。
[0031]應(yīng)當(dāng)在意,在替代實(shí)施例中,客戶計算機(jī)和服務(wù)器、交換機(jī)、網(wǎng)絡(luò)、數(shù)據(jù)存儲器陣列以及數(shù)據(jù)存儲設(shè)備的數(shù)量和類型不限于圖1所示的這些。在多個時間一臺或多臺客戶機(jī)可以離線運(yùn)行。此外,在運(yùn)行期間,隨著用戶連接、斷開以及重新連接到網(wǎng)絡(luò)架構(gòu)100,各個客戶計算機(jī)連接類型可以改變。另外,雖然本說明一般地討論了網(wǎng)絡(luò)附屬存儲,但是本文介紹的系統(tǒng)和方法也適用于直接附屬存儲系統(tǒng),并且可以包括被配置為執(zhí)行所介紹方法的一個或多個方面的主機(jī)操作系統(tǒng)。眾多這樣的替代是可能的并被預(yù)期。簡短地提供了圖1所示的每個組件的進(jìn)一步說明。首先介紹由數(shù)據(jù)存儲器陣列120a-120b提供的某些特征的概況。
[0032]在網(wǎng)絡(luò)架構(gòu)100中,每個數(shù)據(jù)存儲器陣列120a_120b都可用于共享不同服務(wù)器和計算機(jī)當(dāng)中的數(shù)據(jù),比如客戶計算機(jī)系統(tǒng)llOa-llOc。此外,數(shù)據(jù)存儲器陣列120a-120b可用于進(jìn)行磁盤鏡像、備份和恢復(fù)、存檔數(shù)據(jù)的存檔和檢索以及從一臺存儲設(shè)備到另一臺存儲設(shè)備的數(shù)據(jù)遷移。在替代實(shí)施例中,一個或多個客戶計算機(jī)系統(tǒng)IlOa-1lOc可以通過快速局域網(wǎng)(LAN)彼此鏈接以便形成集群。這樣的客戶機(jī)可以共享存儲器資源,比如在數(shù)據(jù)存儲器陣列120a-120b之一內(nèi)駐留的集群共享卷。
[0033]數(shù)據(jù)存儲器陣列120a_120b的每一個都包括存儲子系統(tǒng)170用于數(shù)據(jù)存儲。存儲子系統(tǒng)170可以包括多臺存儲設(shè)備176a-176m。這些存儲設(shè)備176a_176m可以向客戶計算機(jī)系統(tǒng)IlOa-1lOc提供數(shù)據(jù)存儲服務(wù)。存儲設(shè)備176a-176m的每一臺都使用具體的技術(shù)和機(jī)構(gòu)執(zhí)行數(shù)據(jù)存儲。每臺存儲設(shè)備176a-176m內(nèi)所用技術(shù)和機(jī)構(gòu)的類型可以至少部分地被用于確定若干算法,用于控制和調(diào)度進(jìn)出每臺存儲設(shè)備176a-176m的讀寫操作。例如,這些算法可以定位這些操作對應(yīng)的具體物理位置。此外,這些算法還可以執(zhí)行用于這些操作的輸入/輸出(I/O)重定向、去除存儲子系統(tǒng)170中的重復(fù)數(shù)據(jù)以及支持地址重定向和去重復(fù)的一個或多個映射表。
[0034]在以上算法中所用的邏輯可以被包括在基本操作系統(tǒng)(OS) 132、卷管理器134、存儲子系統(tǒng)控制器174內(nèi)、每臺存儲設(shè)備176a-176m內(nèi)的控制邏輯或其他方面的一個或多個中。此外,本文介紹的邏輯、算法和控制機(jī)構(gòu)可以包括硬件和/或軟件。
[0035]每臺存儲設(shè)備176a_176m都可以被配置為接收讀寫請求并包括多個數(shù)據(jù)存儲位置,每個數(shù)據(jù)存儲位置都可尋址為陣列中的行和列。在一個實(shí)施例中,在存儲設(shè)備176a-176m內(nèi)的數(shù)據(jù)存儲位置可以安排為邏輯的冗余存儲容器或RAID陣列(非昂貴/獨(dú)立磁盤冗余陣列)。
[0036]在某些實(shí)施例中,每臺存儲設(shè)備176a_176m都可以利用與常規(guī)硬盤驅(qū)動器(HDD)不同的數(shù)據(jù)存儲技術(shù)。例如,一臺或多臺存儲設(shè)備176a-176m可以包括或進(jìn)一步連接到含有固態(tài)內(nèi)存的存儲器以存儲永久數(shù)據(jù)。在其他實(shí)施例中,一臺或多臺存儲設(shè)備176a-176m可以包括或進(jìn)一步連接到使用其他技術(shù)的存儲器,比如自旋力矩轉(zhuǎn)移技術(shù)、磁阻性隨機(jī)存取存儲器(MRAM)技術(shù)、遮板式磁盤、memri stors、相變存儲器或其他存儲器技術(shù)。這些不同的存儲器技術(shù)可以導(dǎo)致存儲設(shè)備之間不同的I/O特征。
[0037]在一個實(shí)施例中,含有的固態(tài)內(nèi)存包括固態(tài)驅(qū)動器(SSD)技術(shù)。HDD技術(shù)與SDD技術(shù)之間技術(shù)和機(jī)制的差異可以導(dǎo)致數(shù)據(jù)存儲設(shè)備176a-176m的輸入/輸出(I/O)特征的差異。固態(tài)盤(SSD)也可以稱為固態(tài)驅(qū)動器。SSD沒有移動部件或機(jī)械延遲,可以具有比HDD更短的讀取訪問時間和等待時間。不過,SSD的寫入性能一般低于讀出性能,并且可能由SSD內(nèi)空閑可編程塊的可用性顯著地影響。
[0038]通過在存儲設(shè)備176a_176m內(nèi)的用戶存儲器與物理位置之間創(chuàng)建存儲器虛擬化層可以改進(jìn)存儲器陣列效率。在一個實(shí)施例中,卷管理器的虛擬層被放置在操作系統(tǒng)(OS)的設(shè)備-驅(qū)動器棧中,而不是在存儲設(shè)備內(nèi)或網(wǎng)絡(luò)中。許多存儲器陣列以粗粒度級執(zhí)行存儲器虛擬化以允許完全在內(nèi)存中存儲虛擬至物理的映射表。不過,這樣的存儲器陣列不能夠集成諸如數(shù)據(jù)壓縮、去重復(fù)和修改后復(fù)制操作的特征。許多文件系統(tǒng)支持細(xì)粒度的虛擬至物理的映射表,但是它們不支持大的存儲器陣列,比如設(shè)備組173a-173m。而是使用卷管理器或磁盤陣列管理器支持設(shè)備組173a-173m。
[0039]在一個實(shí)施例中,一個或多個映射表可以存儲在存儲設(shè)備176a_176m,而不是內(nèi)存,比如RAM172、內(nèi)存介質(zhì)130或處理器122內(nèi)的高速緩存。存儲設(shè)備176a_176m可以是利用閃存的SSD。SSD的短讀取訪問時間和等待時間可以允許在服務(wù)于來自客戶計算機(jī)的存儲器訪問請求的同時發(fā)生少量的相關(guān)讀取操作。在存儲器訪問請求的服務(wù)期間,這些相關(guān)讀取操作可以用于訪問一個或多個索引、一個或多個映射表以及用戶數(shù)據(jù)。
[0040]在一個實(shí)施例中,通過相關(guān)讀取操作可以執(zhí)行I/O重定向。在另一個實(shí)施例中,通過相關(guān)讀取操作可以執(zhí)行內(nèi)聯(lián)去重復(fù)。在又一個實(shí)施例中,批量陣列任務(wù)比如大的復(fù)制、移動或清零操作可以整體在映射表內(nèi)執(zhí)行,而不是訪問持有用戶數(shù)據(jù)的存儲器位置。這樣的直接映射操作可以大幅降低I/o流量和存儲設(shè)備176a-176m內(nèi)的數(shù)據(jù)移動。既服務(wù)于存儲器訪問請求又執(zhí)行從SSD的相關(guān)讀取操作的合并時間可以少于服務(wù)于來自自旋HDD的存儲器訪問請求。
[0041]此外,映射表內(nèi)的信息可以壓縮??梢赃x擇具體的壓縮算法以允許對各個成分的識別,比如多個記錄當(dāng)中某記錄內(nèi)的關(guān)鍵字。所以,可以發(fā)生對多個壓縮記錄當(dāng)中給定關(guān)鍵字的搜索。如果發(fā)現(xiàn)了匹配,可以僅僅對匹配的記錄解壓縮。對映射表記錄內(nèi)的元組進(jìn)行壓縮可以進(jìn)一步實(shí)現(xiàn)細(xì)粒度級的映射。這種細(xì)粒度級的映射可以允許直接映射操作,作為普通批量陣列任務(wù)的替代。以下將討論涉及高效存儲器虛擬化的進(jìn)一步細(xì)節(jié)。
[0042]同樣如圖所示,網(wǎng)絡(luò)架構(gòu)100包括客戶計算機(jī)系統(tǒng)IlOa-1lOc,通過網(wǎng)絡(luò)180和190彼此互連并連接到數(shù)據(jù)存儲器陣列120a-120b。網(wǎng)絡(luò)180和190可以包括各種各樣的技術(shù),包括無線連接、直接局域網(wǎng)(LAN)連接、廣域網(wǎng)(WAN)連接,比如因特網(wǎng)、路由器、存儲器區(qū)域網(wǎng)絡(luò)、以太網(wǎng)和其他。網(wǎng)絡(luò)180和190可以包括一個或多個LAN,它們也可以是無線的。網(wǎng)絡(luò)180和190可以進(jìn)一步包括遠(yuǎn)程直接存儲器存取(RDMA)硬件和/或軟件、傳輸控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP)硬件和/或軟件、路由器、中繼器、交換機(jī)、網(wǎng)格和/或其他。在網(wǎng)絡(luò)180和190中可以使用諸如光纖信道、以太網(wǎng)光纖信道(FCoE)、iSCSI等協(xié)議。交換機(jī)140可以利用與網(wǎng)絡(luò)180和190都相關(guān)聯(lián)的協(xié)議。網(wǎng)絡(luò)190可以與因特網(wǎng)160所用的一組通信協(xié)議接合,比如傳輸控制協(xié)議(TCP)和因特網(wǎng)協(xié)議(IP)即TCP/IP。交換機(jī)150可以是TCP/IP交換機(jī)。
[0043]客戶計算機(jī)系統(tǒng)IlOa-1lOc是任何數(shù)量的固定或移動計算機(jī)的代表,比如臺式個人計算機(jī)(PC)、服務(wù)器、服務(wù)器群、工作站、便攜式電腦、手持計算機(jī)、服務(wù)器、個人數(shù)字助理(PDA)、智能電話等。一般來說,客戶計算機(jī)系統(tǒng)IlOa-1lOc包括一個或多個處理器,內(nèi)含一個或多個處理器核。每個處理器核都包括電路,根據(jù)預(yù)定義的通用指令集執(zhí)行指令。例如
可以選擇χ86指令集架構(gòu)。作為替代,可以選擇Alpha?、PowerPC?、SPARC⑩'
或任何其他通用指令集架構(gòu)。處理器核可以訪問高速緩存內(nèi)存子系統(tǒng)存取數(shù)據(jù)和計算機(jī)程序指令。高速緩存子系統(tǒng)可以連接到存儲器層次,內(nèi)含隨機(jī)存取存儲器(RAM)和存儲設(shè)備。
[0044]客戶計算機(jī)系統(tǒng)內(nèi)的每個處理器核和存儲器層次都可以連接到網(wǎng)絡(luò)接口。除了硬件組件,每個客戶計算機(jī)系統(tǒng)IlOa-1lOc還可以包括在存儲器層次內(nèi)存儲的基本操作系統(tǒng)(OS)?;綩S可以各種各樣操作系統(tǒng)的任何一種的代表,例如MS-DOS?、MS-WINDOWS?、 OS/2?、UNIX?、Linux⑩、Solaris⑩、ADC?、
DART或其他。因此,基本OS可以可用于向終端用戶提供多種服務(wù)以及提供可用于支持多個程序執(zhí)行的軟件框架。此外,每個客戶計算機(jī)系統(tǒng)IlOa-1lOc都可以包括系統(tǒng)管理程序,用于支持虛擬機(jī)(VM)。正如本領(lǐng)域技術(shù)人員熟知,虛擬化可用于臺式計算機(jī)和服務(wù)器中以便完全或部分地把軟件比如OS與系統(tǒng)的硬件分離。虛擬化可以向終端用戶提供多個OS運(yùn)行在同一機(jī)器上的錯覺,每個都具有其自己的資源和對每個數(shù)據(jù)存儲器陣列120a-120b內(nèi)的存儲設(shè)備176a-176m上創(chuàng)建的邏輯存儲實(shí)體(如LUN)的訪問權(quán)限。
[0045]每個數(shù)據(jù)存儲器陣列120a_120b都可用于在不同的服務(wù)器當(dāng)中共享數(shù)據(jù),比如客戶計算機(jī)系統(tǒng)llOa-llOc。每個數(shù)據(jù)存儲器陣列120a-120b都包括用于數(shù)據(jù)存儲的存儲子系統(tǒng)170。存儲子系統(tǒng)170可以包括多臺存儲設(shè)備176a-176m。這些存儲設(shè)備176a_176m的每一臺都可以是SSD??刂破?74可以包括用于處理收到的讀/寫請求的邏輯。隨機(jī)存取存儲器(RAM)可用于批量操作,比如收到的寫請求。在多個實(shí)施例中,進(jìn)行批量寫操作時(或其他操作)可以使用非易失性存儲器(如NVRAM)。
[0046]內(nèi)存介質(zhì)130中存儲的基本0S132、卷管理器134 (或磁盤陣列管理器134)、任何OS驅(qū)動程序(未顯示)和其他軟件可以提供對文件的訪問的功能以及對這些功能的管理?;?S132可以是存儲器操作系統(tǒng)比如NetApp Data ONTAP?或其他操作系統(tǒng)。基本0S132和OS驅(qū)動程序可以包括在內(nèi)存介質(zhì)130上存儲的并由處理器122可執(zhí)行的程序指令以執(zhí)行存儲子系統(tǒng)170中的一項(xiàng)或多項(xiàng)內(nèi)存訪問操作,它們對應(yīng)于收到的請求。圖1所示的系統(tǒng)通??梢园ㄒ粋€或多個文件服務(wù)器和/或塊服務(wù)器。
[0047]每個數(shù)據(jù)存儲器陣列120a_120b都可以使用網(wǎng)絡(luò)接口 124連接到網(wǎng)絡(luò)180。類似于客戶計算機(jī)系統(tǒng)llOa-llOc,在一個實(shí)施例中,網(wǎng)絡(luò)接口 124的功能可以包括在網(wǎng)絡(luò)適配器卡上。實(shí)施網(wǎng)絡(luò)接口 124的功能時可以硬件和軟件都使用。隨機(jī)存取存儲器(RAM)和只讀存儲器(ROM)都可以包括在網(wǎng)絡(luò)接口 124的網(wǎng)卡實(shí)施上??梢允褂靡粋€或多個專用集成電路(ASIC)提供網(wǎng)絡(luò)接口 124的功能。
[0048]除了以上情況,數(shù)據(jù)存儲器陣列120a_120b內(nèi)的每個存儲器控制器174都可以支持若干存儲器陣列功能,比如快照、復(fù)制和高可用性。此外,每個存儲器控制器174都可以支持虛擬機(jī)環(huán)境,包括多個卷,每個卷都包括多個快照。在一個實(shí)例中,存儲器控制器174可以支持幾十萬個卷,其中每個卷都包括幾千個快照。在一個實(shí)施例中,卷可以以固定尺寸的扇區(qū)映射,比如在存儲設(shè)備176a-176m內(nèi)4千字節(jié)(KB)頁面。在另一個實(shí)施例中,卷可以以可變尺寸的扇區(qū)映射,比如用于寫請求??梢允褂镁鞩D、快照ID和扇區(qū)號標(biāo)識給定的卷。
[0049]地址轉(zhuǎn)換表可以包括多個條目,其中每個條目都保持著對應(yīng)數(shù)據(jù)成分的虛擬至物理的映射。這個映射表可用于把來自每個客戶計算機(jī)系統(tǒng)IlOa-1lOc的邏輯讀/寫請求映射到存儲設(shè)備176a-176m中的物理位置。在收到的讀/寫請求對應(yīng)的查找操作期間,可以從映射表中讀取“物理”指針值。然后可以使用這個物理指針值定位存儲設(shè)備176a-176m內(nèi)的物理位置。應(yīng)當(dāng)注意,可以使用物理指針值訪問存儲設(shè)備176a-176m的給定存儲設(shè)備內(nèi)的另一個映射表。從而在物理指針值與目標(biāo)存儲位置之間可以存在一個或多個等級的間接。
[0050]在另一個實(shí)施例中,映射表可以包括去重復(fù)所用的信息(去重復(fù)表相關(guān)信息)。去重復(fù)表中存儲的信息可以包括對于給定數(shù)據(jù)成分算出的一個或多個哈希值與到保持著給定數(shù)據(jù)成分的存儲設(shè)備176a-176m之一中物理位置的物理指針之間的映射。此外,給定數(shù)據(jù)成分的長度和對應(yīng)條目的狀態(tài)信息也可以存儲在去重復(fù)表中。
[0051]現(xiàn)在轉(zhuǎn)向圖2,顯示了映射表的一個實(shí)施例的廣義框圖。如早先討論,一個或多個映射表可以用于I/o重定向或變換、用戶數(shù)據(jù)的重復(fù)副本的去重復(fù)、卷快照映射等。映射表可以存儲在存儲設(shè)備176a-176m中。圖2所示的框圖表示映射表的組織和存儲的一個實(shí)施例的邏輯表達(dá)。所示的每級都可以包括不同時段對應(yīng)的映射表?xiàng)l目。例如,“I”級包括的信息可以早于“2”級中存儲的信息。同樣,“2”級包括的信息可以早于“3”級中存儲的信息。在圖2所示的記錄、頁面和級中存儲的信息可以在存儲設(shè)備176a-176m內(nèi)以隨機(jī)存取的方式存儲。另外,給定映射表?xiàng)l目的部分或全部副本可以存儲在RAM172中、控制器174內(nèi)的緩沖區(qū)中、內(nèi)存介質(zhì)130中以及處理器122內(nèi)或連接的一個或多個高速緩存中。在多個實(shí)施例中,對應(yīng)的索引可以包括在每級映射中,它們是該級的一部分(如后面圖4的描述)。這樣的索引可以包括該級內(nèi)映射表?xiàng)l目的標(biāo)識以及它們存儲之處的標(biāo)識(如該頁面的標(biāo)識)。在其他實(shí)施例中,與映射表?xiàng)l目相關(guān)聯(lián)的索引可以是截然不同的實(shí)體或若干實(shí)體,邏輯上它們不是級本身的一部分。
[0052]一般來說,每個映射表都包括一組行和列。單個記錄可以存儲在映射表中作為行。記錄也可以被稱為條目。在一個實(shí)施例中,記錄存儲了至少一個元組,包括關(guān)鍵字。元組還可以(或可以不)包括數(shù)據(jù)字段,包括若干數(shù)據(jù),比如識別或定位在存儲子系統(tǒng)170中存儲的數(shù)據(jù)成分所用的指針。應(yīng)當(dāng)注意,在多個實(shí)施例中,存儲子系統(tǒng)可以包括具有內(nèi)部映射機(jī)構(gòu)的存儲設(shè)備(如SSD)。在這樣的實(shí)施例中,元組中的指針本質(zhì)上可以不是實(shí)際的物理地址。相反,指針可以是該存儲設(shè)備映射到該設(shè)備內(nèi)物理位置的邏輯地址。邏輯地址與物理位置之間的這種內(nèi)部映射可以隨著時間而改變。在其他實(shí)施例中,映射表中的記錄可以僅僅包含關(guān)鍵字字段,沒有另外的相關(guān)聯(lián)的數(shù)據(jù)字段。與給定記錄所對應(yīng)數(shù)據(jù)成分相關(guān)聯(lián)的屬性可以存儲在表中的若干列即字段中。狀態(tài)信息比如有效指示符、數(shù)據(jù)年齡、數(shù)據(jù)尺寸等都可以存儲在字段中,比如圖2所示的字段O至字段N。在多個實(shí)施例中,每列都存儲著給定類型所對應(yīng)的信息。在某些實(shí)施例中,可以對選定的字段使用壓縮技術(shù),在某些情況下可以產(chǎn)生其壓縮后表達(dá)為零位長度的字段。[0053]關(guān)鍵字是映射表中的實(shí)體,可以區(qū)分?jǐn)?shù)據(jù)的一行與另一行。每行也可以稱為條目或記錄。關(guān)鍵字可以是單列,它也可以由識別記錄所用的一組列組成。在一個實(shí)例中,地址轉(zhuǎn)換映射表可以利用包括卷標(biāo)識符(ID)、邏輯或虛擬地址、快照ID、扇區(qū)號等的關(guān)鍵字。給定收到的讀/寫存儲訪問請求可以識別具體卷、扇區(qū)和長度。扇區(qū)可以是卷中存儲數(shù)據(jù)的邏輯塊。在不同卷上扇區(qū)可以具有不同的尺寸。地址轉(zhuǎn)換映射表可以以扇區(qū)尺寸為單位映射卷。
[0054]卷標(biāo)識符(ID)可以用于訪問卷表格,它傳達(dá)了卷ID和對應(yīng)的當(dāng)前快照ID。這條信息連同收到的扇區(qū)號可用于訪問地址轉(zhuǎn)換映射表。所以,在這樣的實(shí)施例中,用于訪問地址轉(zhuǎn)換映射表的關(guān)鍵字值是卷ID、快照ID和收到的扇區(qū)號的結(jié)合。在一個實(shí)施例中,分選地址轉(zhuǎn)換映射表內(nèi)的記錄時,依據(jù)卷ID,繼之以扇區(qū)號然后是快照ID。這種排序可以把不同快照中的數(shù)據(jù)成分的不同版本組合在一起。所以,在查找存儲器訪問讀請求期間,以對存儲設(shè)備176a-176m更少的讀取操作就可以找到對應(yīng)的數(shù)據(jù)成分。
[0055]地址轉(zhuǎn)換映射表可以傳達(dá)物理指針值,它指示了存儲著收到的數(shù)據(jù)存儲器訪問請求所對應(yīng)的數(shù)據(jù)成分的數(shù)據(jù)存儲子系統(tǒng)170內(nèi)的位置。關(guān)鍵字值可以與映射表中存儲的一個或多個關(guān)鍵字值進(jìn)行比較。在展示實(shí)例中,為了易于展示,顯示了更簡單的關(guān)鍵字值,t匕如“0”、“2”、“12”等。物理指針值可以存儲在對應(yīng)記錄的一個或多個字段中。
[0056]物理指針值可以包括區(qū)段標(biāo)識符(ID)和標(biāo)識存儲器位置的地址。區(qū)段可以是在每臺存儲設(shè)備176a-176m中分配的基本單元。區(qū)段可以具有獨(dú)立冗余磁盤陣列(RAID)級和數(shù)據(jù)類型。在分配期間,區(qū)段可以具有為對應(yīng)的存儲所選擇的一臺或多臺存儲設(shè)備176a-176m。在一個實(shí)施例中,在存儲設(shè)備176a_176m中一臺或多臺選定的存儲設(shè)備的每臺上可以給區(qū)段分配等量的存儲空間。數(shù)據(jù)存儲訪問請求可以對應(yīng)于多個扇區(qū),它們可能引起多個并行的查找。寫請求可以被放置在NVRAM緩沖區(qū),比如RAM172,并且可以把寫完成應(yīng)答發(fā)送到客戶計算機(jī)IlOa-1lOc中對應(yīng)的客戶計算機(jī)。在隨后時間,異步過程可以把緩沖的寫請求刷新到存儲設(shè)備176a-176m。
[0057]在另一個實(shí)例中,圖2所示的映射表可以是去重復(fù)表。去重復(fù)表利用的關(guān)鍵字可以包括從與存儲訪問請求相關(guān)聯(lián)的數(shù)據(jù)成分確定的哈希值。去重復(fù)操作的初始步驟可以與其他操作并發(fā)地執(zhí)行,比如讀/寫請求、垃圾收集操作、剪裁操作等。對于給定的寫請求,從客戶計算機(jī)系統(tǒng)IlOa-1lOc之一發(fā)送的數(shù)據(jù)可以是數(shù)據(jù)流,比如字節(jié)流。正如本領(lǐng)域技術(shù)人員熟知,可以把數(shù)據(jù)流劃分為固定長度或可變長度組塊的序列。組塊算法可以執(zhí)行把數(shù)據(jù)流劃分為離散數(shù)據(jù)成分,它們可以被稱為“組塊”。組塊可以是亞文件、內(nèi)容可尋址的數(shù)據(jù)單位。在多個實(shí)施例中,表格或其他結(jié)構(gòu)可以用于確定具體組塊算法用于給定文件類型或數(shù)據(jù)類型。確定文件的類型時可以通過參考其文件名擴(kuò)展名、分開的標(biāo)識信息、數(shù)據(jù)自身的內(nèi)容或其他方面。產(chǎn)生的組塊然后可以存儲在數(shù)據(jù)存儲器陣列120a_120b之一中,以便允許這些組塊的共享。這樣的組塊可以分開存儲或以多種方式分組在一起。
[0058]在多個實(shí)施例中,組塊可以由數(shù)據(jù)結(jié)構(gòu)表示,它允許從其組塊重構(gòu)更大的數(shù)據(jù)成分(如根據(jù)所存儲數(shù)據(jù)的一個或多個更小組塊可以重構(gòu)某具體文件)。對應(yīng)的數(shù)據(jù)結(jié)構(gòu)可以記錄其對應(yīng)的組塊,包括算出的相關(guān)聯(lián)哈希值、指向在數(shù)據(jù)存儲器陣列120a-120b之一中其位置的指針以及其長度。對于每個數(shù)據(jù)成分,都可以使用去重復(fù)應(yīng)用程序計算對應(yīng)的哈希值。例如,哈希函數(shù)比如Message-Digest算法5 (MD5)、Secure Hash算法(SHA)或其他算法可用于計算對應(yīng)的哈希值。為了知曉所收到的寫請求所對應(yīng)的給定數(shù)據(jù)成分是否已經(jīng)存儲在數(shù)據(jù)存儲器陣列120a-120b之一中,對給定的數(shù)據(jù)成分算出的哈希值的若干位(或哈希值若干位的子集)可以與在一個或多個數(shù)據(jù)存儲器陣列120a-120b中存儲的數(shù)據(jù)成分的哈希值中的若干位進(jìn)行對比。
[0059]映射表可以包括一個或多個等級,如圖2所示。映射表可以包括16至64個等級,盡管在映射表內(nèi)支持的另一數(shù)量的等級有可能并被預(yù)期。在圖2中,為了易于展示,顯示了標(biāo)注為“I”級、“2”級和“N”級的三個等級。映射表內(nèi)的每個等級都可以包括一個或多個分區(qū)。在一個實(shí)施例中,每個分區(qū)是4千字節(jié)(KB)的頁面。例如,“N”級被顯示為包括頁面210a至210g、“2”級包括頁面2IOh至210j而“I”級包括頁面210k至210η。有可能并預(yù)期其他分區(qū)尺寸也可以選擇為用于映射表內(nèi)的每個等級。此外,有可能一個或多個等級具有單一分區(qū),它是該等級自身。
[0060]在一個實(shí)施例中,映射表內(nèi)的多個等級按時間分選。例如,在圖2中,“I”級可以早于“2”級。同樣,“2”級可以早于“N”級。在一個實(shí)施例中,檢測到在映射表中插入一個或多個新記錄的條件時,就可以創(chuàng)建新的等級。在多個實(shí)施例中,創(chuàng)建新等級時,給予新等級的編號/標(biāo)記大于給予時間上先于新等級的等級的編號。例如,如果最近創(chuàng)建的等級被分配了值8,那么新創(chuàng)建的等級可以被分配值9。以這種方式,可以建立或確定等級之間的時間關(guān)系。正如可以認(rèn)識到,數(shù)字值不必嚴(yán)格為順序的。此外,替代實(shí)施例可以顛倒該編號模式,使得更新等級具有更小的數(shù)字標(biāo)記。另外,其他實(shí)施例可以利用非數(shù)字標(biāo)記在等級之間區(qū)分。許多這樣的實(shí)施例是可能的并被預(yù)期。每個下一個更早的等級具有從先前更新等級的標(biāo)簽整數(shù)值中減去一的標(biāo)簽。未顯示的分開表格可以用于在邏輯上描述該映射表。例如,分開表格的每個條目都可以包括給定的等級ID和在給定的等級ID內(nèi)存儲的頁面ID的列表。
[0061]通過為插入新記錄而創(chuàng)建新的最高等級,通過添加新記錄更新了映射表。在一個實(shí)施例中,單一等級被創(chuàng)建為新的最聞等級并且每個新記錄都被插入到單一等級中。在另一個實(shí)施例中,先對新記錄搜索重復(fù)關(guān)鍵字,再插入到映射表中。單一等級可以被創(chuàng)建為新的最高等級。找到存儲著重復(fù)關(guān)鍵字的給定記錄時,在給定記錄前面已緩沖的每個記錄都可以被插入到單一等級中。新記錄可以以保持內(nèi)存次序的方式被緩沖,比如以請求完成的次序。然后可以創(chuàng)建另一個單一等級并可以把新記錄的剩余部分插入到這另一個單一等級中,除非找到了存儲著重復(fù)關(guān)鍵字的另一個記錄。如果找到了這樣的記錄,那么重復(fù)這些步驟。把相同關(guān)鍵字值作為新記錄之一存儲的映射表內(nèi)的現(xiàn)有記錄不被新記錄的插入在原地被編輯或蓋寫。
[0062]盡管等級尺寸被展示為更低等級的增加大于更新等級,但是更高等級可能在比相鄰等級更大或更小之間交替。插入到映射表中的更新記錄的數(shù)量可以隨著時間而改變并創(chuàng)建了波動的等級尺寸。由于更低等級的波動,更低等級可以大于更新等級。檢測到若干具體條件時,兩個或更多更低的等級可以被展平為單一等級。后面提供了進(jìn)一步的細(xì)節(jié)。
[0063]由于對映射表中存儲的記錄沒有原地編輯,所以在更高等級中放置的更新記錄可以推翻位于更低等級中存儲著同樣關(guān)鍵字值的記錄。例如,通過給定關(guān)鍵字值訪問映射表時,可以找到一個或多個等級存儲的記錄保持著與該給定關(guān)鍵字值匹配的關(guān)鍵字值。在這樣的情況下,可以選擇這一個或多個等級中的最高等級把其對應(yīng)的記錄中存儲的信息提供為訪問的結(jié)果。后面提供了進(jìn)一步的細(xì)節(jié)。此外,后面提供了關(guān)于把一個或多個新記錄插入到映射表中和存儲信息的檢測條件的進(jìn)一步細(xì)節(jié)。
[0064]在一個實(shí)施例中,給定頁面內(nèi)的條目可以按關(guān)鍵字分選。例如,可以根據(jù)條目中包括的關(guān)鍵字以上升的次序?qū)l目分選。此外,在多個實(shí)施例中,等級內(nèi)的頁面可以根據(jù)期望的任何分選次序分選。在多個實(shí)施例中,也可以對等級內(nèi)的頁面分選(如根據(jù)關(guān)鍵字或其他方面)。在圖2的實(shí)例中,N級的頁面210a包括根據(jù)上升次序的關(guān)鍵字值所分選的記錄。在多個實(shí)施例中,可以使用一列或多列存儲關(guān)鍵字值。在圖2的實(shí)例中,在用于存儲關(guān)鍵字值的每個元組中顯示了兩列或字段。利用這樣的關(guān)鍵字值,就可以以期望次序分選記錄。進(jìn)行分選時可以根據(jù)記錄的任何關(guān)鍵字值或記錄關(guān)鍵字值的任何組合。在所示實(shí)例中,第一個記錄存儲的關(guān)鍵字值包括在兩列中存儲的O和8。而最后一個記錄存儲的關(guān)鍵字值包括12和33。在這個展示實(shí)例中,頁面210a中第一個與最后一個記錄之間的每個分選后記錄都在第一列中存儲了 O與12之間的關(guān)鍵字值,并且以(至少部分地)根據(jù)對第一列從O至12上升次序存儲關(guān)鍵字值的方式安排這些記錄。同樣,頁面210b包括分選后的記錄,其中第一個記錄存儲了關(guān)鍵字值12和39,而最后一個記錄存儲了關(guān)鍵字值31和19。在這個展示實(shí)例中,頁面210b中第一個與最后一個記錄之間的每個分選后記錄都在第一列中存儲了 12與31之間的關(guān)鍵字值,并且以從12至31上升次序存儲關(guān)鍵字值的方式安排這些記錄。
[0065]除了以上情況,N級內(nèi)頁面根據(jù)期望的次序分選。在多個實(shí)施例中,級內(nèi)頁面分選的方式可以反映頁面內(nèi)條目被分選的次序。例如,級內(nèi)頁面可以根據(jù)關(guān)鍵字值上升次序分選。由于頁面210b中的第一個關(guān)鍵字值大于頁面210a中的最后一個關(guān)鍵字,所以在分選次序中頁面210b跟隨頁面210a。頁面210g然后將可能包括其關(guān)鍵字值大于在頁面210a至210f (未顯示)中包括的關(guān)鍵字值的條目。以這種方式,級內(nèi)全部條目都根據(jù)共同模式分選。條目被簡單地細(xì)分為頁面或其他的尺寸單元。正如可以認(rèn)識到,可以按期望使用其他分選模式。
[0066]現(xiàn)在參考圖3A,顯示了訪問映射表所用的初級索引的一個實(shí)施例的廣義框圖。關(guān)鍵字發(fā)生器304可以接收一個或多個請求者數(shù)據(jù)輸入302。在一個實(shí)施例中,映射表是地址轉(zhuǎn)換目錄表。給出的所收到讀/寫請求可以識別具體的卷、扇區(qū)和長度。關(guān)鍵字發(fā)生器304可以產(chǎn)生查詢關(guān)鍵字值306,包括卷標(biāo)識符(ID)、邏輯即虛擬地址、快照ID和扇區(qū)號。其他組合是可能的并且也可以利用其他或附加值。查詢關(guān)鍵字值306的不同部分可以與映射表內(nèi)可以相鄰也可以不相鄰的列中存儲的值進(jìn)行對比。在所示實(shí)例中,為了易于展示,使用關(guān)鍵字值“22”。
[0067]正如早先介紹,與關(guān)鍵字發(fā)生器304相關(guān)聯(lián)的組塊算法和/或分段算法都可以接收存儲訪問請求對應(yīng)的數(shù)據(jù)302。這些算法可以產(chǎn)生一個或多個數(shù)據(jù)成分并選擇哈希函數(shù)計算每個數(shù)據(jù)成分的對應(yīng)哈希值或查詢關(guān)鍵字值306??梢允褂卯a(chǎn)生的哈希值檢索去重復(fù)表。
[0068]正如圖3A所示,初級索引310可以對存儲設(shè)備176a_176m中存儲的數(shù)據(jù)提供位置識別信息。例如,再次參考圖2,對應(yīng)的初級索引310 (或其部分)可以被邏輯地包括在“I”級、“2”級和“N”級的每級中。同樣,每級和每個對應(yīng)的初級索引都可以以隨機(jī)存取方式被物理地存儲在存儲設(shè)備176a-176m內(nèi)。
[0069]在一個實(shí)施例中,初級索引310可以被劃分為若干分區(qū),比如分區(qū)312a至312b。在一個實(shí)施例中,分區(qū)的尺寸可以從4千字節(jié)(KB)頁面到256KB,盡管其他尺寸是可能的并被預(yù)期。初級索引310的每個條目都可以存儲關(guān)鍵字值。此外,每個條目都可以存儲該關(guān)鍵字值所對應(yīng)的對應(yīng)唯一虛擬頁面標(biāo)識符(ID)以及等級ID。每個條目都可以存儲對應(yīng)的狀態(tài)信息比如有效性信息。以查詢關(guān)鍵字值訪問初級索引310時,可以在索引310內(nèi)條目中搜索與該關(guān)鍵字值匹配或以其他方式對應(yīng)的一個或多個條目。然后可以使用匹配條目的信息定位和檢索某映射,它標(biāo)識的存儲位置是收到的讀寫請求的目標(biāo)。換言之,索引310標(biāo)識映射的位置。在一個實(shí)施例中,索引中的擊中提供的對應(yīng)頁面ID標(biāo)識了在存儲設(shè)備176a-176m內(nèi)既存儲著關(guān)鍵字值又存儲著對應(yīng)物理指針值的頁面??梢杂迷撽P(guān)鍵字值搜索由對應(yīng)頁面ID標(biāo)識的頁面以找到物理指針值。
[0070]在圖3A的實(shí)例中,收到的請求對應(yīng)于關(guān)鍵字“22”。這個關(guān)鍵字然后被用于訪問索引310。對索引310的搜索產(chǎn)生了對分區(qū)312b內(nèi)某條目的擊中。匹配的條目在這種情況下包括諸如頁面20和3級的信息。根據(jù)這個結(jié)果,在映射表3級內(nèi)被標(biāo)識為頁面28的頁面中找到了對該請求所期望的映射。使用這條信息,就可以對映射表進(jìn)行訪問以檢索所期望的映射。如果對初級索引310的訪問要求對存儲器的訪問,那么為了獲得所期望的映射將需要至少兩次存儲器存取。所以,如以下介紹在多個實(shí)施例中,初級索引的若干部分可以高速緩存或以其他方式存儲在相對快速存取的內(nèi)存中,以便消除對存儲設(shè)備的一次存取。在多個實(shí)施例中,映射表的全部初級索引被高速緩存。在某些實(shí)施例中,在初級索引已經(jīng)變得大到無法將其全部高速緩存或者在其他方面大于所期望時,可以在高速緩存中使用次級、三級或其他索引部分以減小其尺寸。下面討論了次級類型索引。除了以上情況,在多個實(shí)施例中,最近擊中所對應(yīng)的映射頁面至少在某段時間也被高速緩存。以這種方式,展現(xiàn)了以時間局部性訪問的過程能夠更快地得到服務(wù)(即最近訪問的位置將使其映射被高速緩存并易于獲得)。
[0071]現(xiàn)在參考圖3B,顯示了訪問映射表所用的被高速緩存的初級索引的一個實(shí)施例的廣義框圖。圖3A的電路和邏輯部分的對應(yīng)者一致地編號。被高速緩存的初級索引314可以包括在映射表中的多個等級的每個初級索引310中存儲的信息的副本。初級索引314可以存儲在RAM172、控制器174內(nèi)的緩沖區(qū)、內(nèi)存介質(zhì)130和處理器122內(nèi)的高速緩存的一個或多個中。在一個實(shí)施例中,初級索引314可以按關(guān)鍵字值分選,盡管以其他方式分選是可能的。初級索引314還可以被劃分為若干分區(qū),比如分區(qū)316a至316b。在一個實(shí)施例中,分區(qū)316a至316b的尺寸可以與初級索引310內(nèi)分區(qū)312a至312b的尺寸相同。
[0072]類似于初級索引310,初級索引314的每個條目都可以存儲關(guān)鍵字值、對應(yīng)的唯一虛擬頁面標(biāo)識符(ID)、關(guān)鍵字值所對應(yīng)的等級ID以及諸如有效信息的狀態(tài)信息中的一個或多個。以查詢關(guān)鍵字值訪問初級索引314時,它可以傳達(dá)的對應(yīng)頁面ID標(biāo)識在存儲設(shè)備176a-176m內(nèi)既存儲著關(guān)鍵字值又存儲著對應(yīng)指針值的頁面。由對應(yīng)的頁面ID所標(biāo)識的頁面可以用關(guān)鍵字值搜索以找到該指針值。如圖所示,初級索引314可以具有多個記錄存儲著相同的關(guān)鍵字值。所以,多次擊中可以從搜索給定關(guān)鍵字值中產(chǎn)生。在一個實(shí)施例中,可以選擇具有等級ID (或者用于識別最年輕等級或最新近條目的無論何種指示器)的最高值的擊中。這種從多次擊中里選擇一個擊中可以由這里未顯示的合并邏輯實(shí)施。后面提供了對合并邏輯的進(jìn)一步說明。
[0073]現(xiàn)在轉(zhuǎn)向圖4,顯示了映射表和訪問映射表所用的初級索引的另一個實(shí)施例的廣義框圖。圖3A的電路和邏輯部分的對應(yīng)者一致地編號。映射表340可以具有與圖2所示的映射表類似的結(jié)構(gòu)。不過,現(xiàn)在顯示了每個等級的對應(yīng)初級索引310的存儲。初級索引310a至310i的一個或多個的副本可以包括在索引副本330中(如高速緩存的副本)。副本330 —般可以對應(yīng)于圖3B中描述的高速緩存中的索引。索引副本330中的信息可以存儲在RAM172、控制器174內(nèi)的緩沖區(qū)、內(nèi)存介質(zhì)130和處理器122的高速緩存中。在所示的實(shí)施例中,初級索引310a至310i中的信息可以用映射頁面存儲在存儲設(shè)備176a-176m中。同樣所示的是次級索引320,可以用于訪問初級索引,比如以圖表所示的初級索引310i。同樣,訪問和更新映射表340可以如早先介紹的那樣發(fā)生。
[0074]映射表340包括多個等級,比如“I”級至“N”級。在展示的實(shí)例中,每級都包括多個頁面?!癗”級被顯示為包括頁面“O”至“D”,“N-1”級包括頁面“E”至“G”,等等。同樣映射表340內(nèi)的等級可以按時間分選。“N”級可以年輕于“N-1”級,等等。映射表340可以按至少某關(guān)鍵字值訪問。在展示的實(shí)例中,映射表340按關(guān)鍵字值“27”和頁面ID “32”訪問。例如,在一個實(shí)施例中,等級ID “8”可用于標(biāo)識映射表340中要搜索的特定等級(或“子表”)。識別了所期望的子表,然后頁面ID可以用于識別子表內(nèi)的期望頁面。最后,可以使用關(guān)鍵字識別期望頁面內(nèi)的期望條目。
[0075]正如以上討論,對高速緩存中索引330的訪問可以產(chǎn)生多次擊中。在一個實(shí)施例中,這多次擊中的結(jié)果被提供給了合并邏輯350,它識別出哪次擊中被用于訪問映射表340。合并邏輯350可以表示存儲控制器內(nèi)包括的硬件和/或軟件。在一個實(shí)施例中,合并邏輯350被配置為識別最新近(最新的)映射所對應(yīng)的擊中。這樣的識別有可能根據(jù)對某條目的對應(yīng)等級的識別或其他方面。在所示實(shí)例中,收到了 8級、頁面32、關(guān)鍵字27所對應(yīng)的查詢。響應(yīng)該查詢,訪問了 8級的頁面32。如果在頁面32內(nèi)找到了關(guān)鍵字27 (擊中),就返回對應(yīng)結(jié)果(如在所示實(shí)例中的指針XF3209B24)。如果在頁面32內(nèi)未找到關(guān)鍵字27,就返回未擊中的指示。這個物理指針值可以從映射表340輸出以服務(wù)于關(guān)鍵字值“27”所對應(yīng)的存儲訪問請求。
[0076]在一個實(shí)施例中,映射表340支持內(nèi)聯(lián)映射。例如,被檢測為具有足夠小的目標(biāo)的映射可能被表示為在存儲設(shè)備176a-176m內(nèi)沒有存儲用戶數(shù)據(jù)的實(shí)際物理扇區(qū)。一個實(shí)例可以是用戶數(shù)據(jù)內(nèi)的重復(fù)模式。不是在存儲設(shè)備176a-176m內(nèi)實(shí)際存儲重復(fù)模式(如一串零)的多個副本作為用戶數(shù)據(jù),對應(yīng)的映射可以具有以狀態(tài)信息標(biāo)注的指示,比如在映射表中字段O至字段N的字段之一內(nèi),它指示了對于讀取請求要返回什么數(shù)據(jù)。不過,在存儲設(shè)備176a-176m內(nèi)的目標(biāo)位置沒有實(shí)際存儲這個用戶數(shù)據(jù)。此外,指示可以存儲在初級索引310以及可以使用的任何附加索引(未顯示)的狀態(tài)信息內(nèi)。
[0077]除了以上情況,在多個實(shí)施例中,存儲系統(tǒng)可以同時支持?jǐn)?shù)據(jù)組織、存儲模式等的多個版本。例如隨著系統(tǒng)硬件和軟件演變,新的特征可以加入或以其他方式提供。(例如)更新的數(shù)據(jù)、索引和映射可以利用這些新特征。在圖4的實(shí)例中,新的N級可以對應(yīng)于系統(tǒng)的一個版本,而舊些的N-1級可以對應(yīng)于先前版本。為了容納這些不同版本,可以把元數(shù)據(jù)與每個等級相關(guān)聯(lián)地存儲,它表明哪個版本、哪些特征、壓縮模式等被該等級使用。這個元數(shù)據(jù)可以存儲為索引的以部分、頁面自身或雙方。進(jìn)行訪問時,這個元數(shù)據(jù)就指明數(shù)據(jù)應(yīng)當(dāng)如何恰當(dāng)?shù)靥幚?。此外,新模式和特征可以動態(tài)地應(yīng)用而不需要停頓系統(tǒng)。以這種方式,系統(tǒng)升級更靈活并且沒有必要重建陳舊的數(shù)據(jù)以反映更新的模式和方法。[0078]現(xiàn)在轉(zhuǎn)向圖5A,顯示了服務(wù)讀訪問的方法的一個實(shí)施例。一般來說,以上介紹的在網(wǎng)絡(luò)架構(gòu)100和映射表340中實(shí)施的組件可以根據(jù)方法500運(yùn)行。為了討論目的,在這個實(shí)施例中的步驟以連續(xù)的次序顯示。不過,某些步驟可以以不同于所示的次序出現(xiàn),某些步驟可以并發(fā)地進(jìn)行,某些步驟可以與其他步驟結(jié)合,而某些步驟在另一個實(shí)施例中可以不出現(xiàn)。
[0079]讀和存儲(寫)請求可以從客戶機(jī)IlOa-1lOc之一傳達(dá)到數(shù)據(jù)存儲器陣列120a-120b之一。在所示實(shí)例中,收到了讀請求500,并且在方框502中可以產(chǎn)生對應(yīng)的查詢關(guān)鍵字值。在某些實(shí)施例中,請求自身可以包括訪問該索引所用的關(guān)鍵字并且不要求“產(chǎn)生”關(guān)鍵字502。正如早先介紹,查詢關(guān)鍵字值可以是虛擬地址索引,包括卷ID、與收到請求相關(guān)聯(lián)的邏輯地址即虛擬地址、快照ID、扇區(qū)號等。在用于去重復(fù)的實(shí)施例中,查詢關(guān)鍵字值可以使用哈希函數(shù)或其他函數(shù)產(chǎn)生。用于查詢關(guān)鍵字值的其他值也是可能的并被預(yù)期,它被用于訪問映射表。
[0080]在方框504中,查詢關(guān)鍵字值可用于訪問高速緩存中的一個或多個索引以識別映射表的一個或多個部分,它們可能存儲著該關(guān)鍵字值對應(yīng)的映射。此外,也可以搜索已經(jīng)被高速緩存的最近使用的映射。如果檢測到在高速緩存中映射上的擊中(方框505),就可以使用高速緩存中映射執(zhí)行所請求的訪問(方框512)。如果在高速緩存中映射上沒有擊中,對在高速緩存中索引上是否存在著擊中可以做出判斷(方框506)。如果是這樣,就使用該擊中所對應(yīng)的結(jié)果識別和訪問該映射表(方框508)。例如,利用初級索引310,存儲查詢關(guān)鍵字值的條目也可以存儲唯一的虛擬頁面ID,它標(biāo)識映射表內(nèi)特定的單一頁面。查詢關(guān)鍵字值和相關(guān)聯(lián)的物理指針值都可以存儲在這個特定單一頁面。在方框508中,可以使用該查詢關(guān)鍵字值訪問映射表的被識別部分并執(zhí)行搜索。然后可以返回映射表結(jié)果(方框510)并用于執(zhí)行存儲器訪問(方框512),它對應(yīng)于原始讀請求的目標(biāo)位置。
[0081]在某些實(shí)施例中,響應(yīng)讀請求的索引查詢可能導(dǎo)致未擊中。這樣的未擊中可能由于只有一部分索引在高速緩存中或由于錯誤條件(如對不存在位置的讀取訪問、地址訛誤等)。在這樣的情況下,可以執(zhí)行對所存儲的索引的訪問。如果對所存儲的索引的訪問產(chǎn)生擊中(方框520),那么可以返回結(jié)果(方框522),它被用于訪問映射表(方框508)。相反,如果對所存儲的索引的訪問導(dǎo)致未擊中,就可以檢測錯誤條件??梢砸愿鞣N各樣期望方式的任何一種完成錯誤條件的處理。在一個實(shí)施例中,可以產(chǎn)生異常(方框524)然后按照期望進(jìn)行處理。在一個實(shí)施例中,在方框510中返回了一部分映射表。在多個實(shí)施例中,這個部分是頁面,它可以為4KB頁面或其他尺寸。正如先前討論,可以分選頁面內(nèi)的記錄以便利對其中包括的內(nèi)容進(jìn)行更快的搜索。
[0082]在一個實(shí)施例中,映射表把傳統(tǒng)數(shù)據(jù)庫系統(tǒng)的方法用于每個頁面中的信息存儲。例如,映射表內(nèi)的每個記錄(或行或條目)一個緊跟一個地存儲。這種方式可用在面向行的或行存儲的數(shù)據(jù)庫中并且另外用于相關(guān)數(shù)據(jù)庫。這些類型的數(shù)據(jù)庫利用了基于值的存儲結(jié)果?;谥档拇鎯?VBS)架構(gòu)存儲唯一數(shù)據(jù)值僅僅一次而且自動生成的索引系統(tǒng)保持著全部值的上下文。在多個實(shí)施例中,數(shù)據(jù)可以按行存儲并且可以在行內(nèi)的若干列(字段)上使用壓縮。在某些實(shí)施例中,所用的技術(shù)可以包括存儲基值并具有更小的字段尺寸用于偏移量,以及/或者具有一組基值,而行中的列包括基值選擇器和與這個基值的偏移量。在兩種情況下,壓縮信息都可以存儲在分區(qū)內(nèi)(如在開始處)[0083]在某些實(shí)施例中,映射表對于每個頁面中的信息存儲利用了面向列的數(shù)據(jù)庫系統(tǒng)(列存儲)方法。列存儲分開地存儲數(shù)據(jù)庫表的每列。此外,屬于同列的屬性值可以相鄰地存儲、壓縮和稠密地包裝。所以,讀取表中若干列的子集,比如在頁面內(nèi),可以相對快地執(zhí)行。列數(shù)據(jù)可以具有一致的類型并可以允許使用存儲器尺寸最優(yōu)化,在面向行的數(shù)據(jù)中可能不可用。某些壓縮模式,比如Lempel-Ziv-Welch (LZ)和行程編碼(RLE),利用了相鄰數(shù)據(jù)檢測的相似性進(jìn)行壓縮??梢赃x擇的壓縮算法允許對頁面內(nèi)的各個記錄進(jìn)行識別和索引。壓縮映射表內(nèi)的記錄可以實(shí)現(xiàn)細(xì)粒度的映射。在多個實(shí)施例中,特定數(shù)據(jù)部分所用的壓縮類型可以與數(shù)據(jù)相關(guān)聯(lián)地存儲。例如,壓縮類型有可能存儲在索引中,作為與壓縮后數(shù)據(jù)同一頁面的一部分(如在某種類型的頭部)或其他方式。以這種方式,在存儲系統(tǒng)內(nèi)可以并行地使用多種壓縮技術(shù)和算法。此外,在多個實(shí)施例中,在存儲數(shù)據(jù)之時可以動態(tài)地確定用于存儲頁面數(shù)據(jù)的壓縮類型。在一個實(shí)施例中,至少部分地根據(jù)被壓縮數(shù)據(jù)的性質(zhì)和類型,可以選擇各種各樣壓縮技術(shù)之一。在某些實(shí)施例中,將執(zhí)行多種壓縮技術(shù),然后展示最佳壓縮的一種將被選為在壓縮該數(shù)據(jù)時使用。許多這樣的方式都是可能的并被預(yù)期。
[0084]如果在映射表的任何等級中找到了查詢關(guān)鍵字值306的匹配(方框508),那么在方框510,可以向合并邏輯350傳達(dá)某擊中的一個或多個指示。例如,可以把一個或多個擊中指示從“I”級傳達(dá)到“J”級,如圖4所示。合并邏輯350可以選擇傳達(dá)擊中指示的“I”級至“J”級中的最高等級,它也可以是最年輕等級。選中的等級可以把對應(yīng)記錄中存儲的信息提供為訪問的結(jié)果。
[0085]在方框512中,為了處理對應(yīng)的請求,可以讀取被選中頁面的匹配記錄內(nèi)的一個或多個對應(yīng)字段。在一個實(shí)施例中,當(dāng)該頁面內(nèi)的數(shù)據(jù)以壓縮格式存儲時,該頁面被解壓縮并且對應(yīng)的物理指針值被讀出。在另一個實(shí)施例中,只有匹配的記錄被解壓縮并且對應(yīng)的物理指針值被讀出。在一個實(shí)施例中,完整的物理指針值可以在映射表與對應(yīng)的目標(biāo)物理位置之間分離。所以,為了完成數(shù)據(jù)存儲訪問請求,可以訪問存儲用戶數(shù)據(jù)的多個物理位置。
[0086]現(xiàn)在轉(zhuǎn)向圖5B,顯示了收到的寫請求對應(yīng)的方法的一個實(shí)施例。響應(yīng)收到的寫請求(方框530),可以創(chuàng)建該請求所對應(yīng)的新的映射表?xiàng)l目(方框532)。在一個實(shí)施例中,新的虛擬至物理地址映射可以被添加(方框534)到映射表,它使寫請求的虛擬地址與存儲對應(yīng)數(shù)據(jù)成分的物理位置配對。在多個實(shí)施例中,新映射可以與其他新映射一起高速緩存,并且被添加到映射表?xiàng)l目的新的最高等級。然后可以執(zhí)行寫入到永久存儲器的操作(方框536)。在多個實(shí)施例中,可以到被認(rèn)為更高效的稍后時間點(diǎn)才執(zhí)行把新的映射表?xiàng)l目寫入到永久存儲器中的映射表(方框538)。正如先前討論,在使用固態(tài)存儲設(shè)備的存儲系統(tǒng)中,寫入到存儲器比從存儲器讀出慢得多。所以,調(diào)度寫入到存儲器的方式為使它們對整個系統(tǒng)性能的影響最小。在某些實(shí)施例中,把新記錄插入到映射表中可以與其他更大的數(shù)據(jù)更新合并。以這種方式合并更新可以提供更高效的寫操作。應(yīng)當(dāng)注意,以圖5B的方法,正如以本文介紹的每一種方法,為了易于討論若干操作被描述為以特定次序出現(xiàn)。不過,這些操作事實(shí)上可以以不同次序出現(xiàn),并且在某些情況下這些操作的多個操作可以同時出現(xiàn)。一切這樣的實(shí)施例都被預(yù)期。
[0087]除了以上情況,在某些實(shí)施例中可以使用去重復(fù)。圖5B描述的操作550 —般可以對應(yīng)于去重復(fù)的系統(tǒng)和方法。在所示實(shí)例中,可以產(chǎn)生所收到的寫請求對應(yīng)的哈希值(方框540),用于訪問去重復(fù)表(方框542)。如果在去重復(fù)表中存在著擊中(方框544)(即該數(shù)據(jù)的副本已經(jīng)存在于系統(tǒng)內(nèi)),那么可以把新條目添加到去重復(fù)表(方框548)以反映新的寫入。在這樣的情況下,無需把數(shù)據(jù)本身寫入到存儲器并且可以丟棄所收到的寫入數(shù)據(jù)。作為替代,如果在去重復(fù)表中存在著未擊中,那么為新數(shù)據(jù)創(chuàng)建新條目并存儲在去重復(fù)表中(方框546)。此外,執(zhí)行向存儲器寫入該數(shù)據(jù)(方框536)。另外,在索引中可以創(chuàng)建新條目以反映新數(shù)據(jù)(方框538)。在某些實(shí)施例中,如果在內(nèi)聯(lián)去重復(fù)操作期間出現(xiàn)未擊中,在此時就不進(jìn)行去重復(fù)表中的插入。相反,在內(nèi)聯(lián)去重復(fù)操作期間,對整個去重復(fù)表的僅僅一部分(如去重復(fù)表的高速緩存中部分)才可能出現(xiàn)以哈希值的查詢。如果出現(xiàn)未擊中,可以創(chuàng)建新條目并存儲在高速緩存中。隨后,在去重復(fù)操作的后處理期間,比如收集垃圾期間出現(xiàn)的操作,對整個去重復(fù)表可能出現(xiàn)以哈希值的查詢。未擊中可以表明該哈希值是唯一的哈希值。所以,新條目比如哈希至物理指針的映射可以被插入到去重復(fù)表中。作為替代,如果在去重復(fù)的后處理期間檢測到擊中(即檢測到重復(fù)),可以執(zhí)行去重復(fù)以消除一個或多個檢測到的副本。
[0088]現(xiàn)在參考圖6,顯示了具有共享映射表的多節(jié)點(diǎn)網(wǎng)絡(luò)一個實(shí)施例的廣義框圖。在所示實(shí)例中,使用三個節(jié)點(diǎn)236a至360c形成映射節(jié)點(diǎn)的集群。在一個實(shí)施例中,每個節(jié)點(diǎn)236a至360c都可以負(fù)責(zé)一個或多個邏輯單元號(LUN)。在描述的實(shí)施例中,顯示了許多映射表等級,I至N級。I級可以對應(yīng)于最老的等級,而N級可以對應(yīng)于最新的等級。對于由特定節(jié)點(diǎn)管理的LUN的映射表?xiàng)l目,這個特定節(jié)點(diǎn)自身就可以具有更新的條目存儲在節(jié)點(diǎn)自身上。例如,節(jié)點(diǎn)360a被顯示為存儲了映射子表362a和364a。這些子表362a和364a可以對應(yīng)于節(jié)點(diǎn)360a通常負(fù)責(zé)的若干LUN。同樣,節(jié)點(diǎn)360b包括子表362b和364b,它們可以對應(yīng)于由該節(jié)點(diǎn)管理的若干LUN,而節(jié)點(diǎn)360c包括子表362c和364c,它們可以對應(yīng)于由該節(jié)點(diǎn)管理的若干LUN。在這樣的實(shí)施例中,這些“更新”等級的映射表?xiàng)l目僅僅由其對應(yīng)的管理節(jié)點(diǎn)保存,并且通常在其他節(jié)點(diǎn)上找不到。
[0089]與以上討論的相對更新的等級相反,更老的等級(即N-2級下至I級)表示的映射表?xiàng)l目在節(jié)點(diǎn)360a至360c中任何節(jié)點(diǎn)都可以存儲著這些條目的副本的意義上可以由全部節(jié)點(diǎn)360a至360c所共享。在所示實(shí)例中,這些更老等級370、372和374被共同標(biāo)識為共享表380。此外,正如先前討論,在多個實(shí)施例中,這些更老等級是靜態(tài)的——除了后面討論的合并或類似操作以外。一般來說,靜態(tài)層是不承受修改的層(即它是“固定的”)。假設(shè)這樣的等級在這個意義上是固定的,可以對這些更低等級的任何副本進(jìn)行訪問而不必考慮另一個副本是否已經(jīng)或正在被修改。因此,任何節(jié)點(diǎn)都可以安全地存儲共享表380的副本,并且以能夠恰當(dāng)?shù)胤?wù)以下請求的置信度,對這些表的請求進(jìn)行服務(wù)。使共享表380的若干副本存儲在多個節(jié)點(diǎn)360上,當(dāng)執(zhí)行查找和以其他請求服務(wù)請求時可以允許使用多個負(fù)載平衡模式。
[0090]除了以上情況,在多個實(shí)施例中,可以被共享的等級380的組織方式可以反映若干節(jié)點(diǎn)360自身。例如,節(jié)點(diǎn)360a可以對LUNl和2負(fù)責(zé),節(jié)點(diǎn)360b可以對LUN3和4負(fù)責(zé),而節(jié)點(diǎn)360c可以對LUN5和6負(fù)責(zé)。在多個實(shí)施例中,映射表?xiàng)l目可以包括若干元組,它們本身標(biāo)識對應(yīng)的LUN。在這樣的實(shí)施例中,根據(jù)關(guān)鍵字值、存儲空間的絕對寬度或量或者其他方面可以分選共享的映射表380。如果等級380中映射表?xiàng)l目的分選部分基于LUN,那么條目370a可以對應(yīng)于LUNl和2,條目370b可以對應(yīng)于LUN3和4,而條目370c可以對應(yīng)于LUN5和6。這樣的組織可以加速由給定節(jié)點(diǎn)對目標(biāo)為特定LUN的請求的查找,方式為有效地降低需要被搜索的數(shù)據(jù)量、允許協(xié)調(diào)程序直接選擇對特定LUN負(fù)責(zé)的節(jié)點(diǎn)作為請求的目標(biāo)。這些和其他組織和分選模式是可能的并被預(yù)期。此外,如果期望把對某LUN的責(zé)任從一個節(jié)點(diǎn)移動到另一個節(jié)點(diǎn),對該節(jié)點(diǎn)的原始節(jié)點(diǎn)映射可以被刷新到共享的等級(如以及合并)。然后對該LUN的責(zé)任被傳遞到新的節(jié)點(diǎn),然后它開始服務(wù)該LUN。
[0091]現(xiàn)在參考圖7,顯示了訪問映射表所用的次級索引的一個實(shí)施例的廣義框圖。正如早先介紹,請求者數(shù)據(jù)輸入302可以由關(guān)鍵字發(fā)生器304接收,它產(chǎn)生查詢關(guān)鍵字值306。查詢關(guān)鍵字值306用于訪問映射表。在某些實(shí)施例中,圖3所示的初級索引310可能大到無法存儲在RAM172或內(nèi)存介質(zhì)130中(或大于期望規(guī)模)。例如,索引的更老等級由于后面圖10和圖11中介紹的合并和展平操作可能增長到非常龐大。所以對于至少一部分初級索弓丨,可以高速緩存次級索引320,從而代替初級索引310的對應(yīng)部分。次級索引320對存儲設(shè)備176a-176m中存儲的數(shù)據(jù)的位置標(biāo)識可以提供更粗略的粒度等級。所以,次級索引320可以小于它對應(yīng)的初級索引310的部分。所以,次級索引320可以存儲在RAM172或內(nèi)存介質(zhì)130中。
[0092]在一個實(shí)施例中,次級索引320被劃分為若干分區(qū),比如分區(qū)322a至322b。此外,次級索引可以根據(jù)等級組織,更新近的等級首先出現(xiàn)。在一個實(shí)施例中,更老等級具有更低的號碼而更年輕等級具有更高的號碼(如等級ID可以隨每個新等級增加)。次級索引320的每個條目都可以標(biāo)識關(guān)鍵字值的某個范圍。例如實(shí)例中所示的第一個條目可以標(biāo)識22級中關(guān)鍵字值從O至12的范圍。這些關(guān)鍵字值可以對應(yīng)于與初級索引310的給定頁面內(nèi)第一個記錄和最后一個記錄相關(guān)聯(lián)的關(guān)鍵字值。換言之,次級索引中的條目可以僅僅存儲關(guān)鍵字O的標(biāo)識和關(guān)鍵字12的標(biāo)識,以表明對應(yīng)的頁面包括該范圍內(nèi)的若干條目。再次參考圖3A,分區(qū)312a可以是頁面而其第一個記錄及其最后一個記錄的關(guān)鍵字值分別是O和12。所以,次級索引320內(nèi)某條目存儲著范圍O至12,如圖7所示。由于在映射表內(nèi)若干等級中保持著再映射,所以關(guān)鍵字值的范圍可以對應(yīng)于多個頁面和相關(guān)聯(lián)的等級。次級索引320內(nèi)的若干字段可以存儲這種信息,如圖7所示。每個條目都可以存儲該關(guān)鍵字值范圍對應(yīng)的一個或多個對應(yīng)的唯一虛擬頁面標(biāo)識符(ID)和相關(guān)聯(lián)的等級ID。每個條目還可以存儲對應(yīng)的狀態(tài)信息比如有效性信息。保持的頁面ID和相關(guān)聯(lián)的等級ID的列表可以指示給定查詢關(guān)鍵字值有可能被存儲之處,但是不確認(rèn)該關(guān)鍵字值在該頁面和等級中出現(xiàn)。次級索引320小于初級索引310,但是也具有存儲設(shè)備176a-176m中存儲的數(shù)據(jù)的位置標(biāo)識的粗等級的粒度。次級索引320可以小到足以存儲在RAM172中或內(nèi)存介質(zhì)130中。
[0093]以查詢關(guān)鍵字值306訪問次級索引320時,它可以傳達(dá)一個或多個對應(yīng)的頁面ID和相關(guān)聯(lián)的等級ID。這些結(jié)果然后被用于訪問和檢索已存儲的初級索引的若干部分。然后可以用查詢關(guān)鍵字值搜索一個或多個已識別的頁面以發(fā)現(xiàn)物理指針值。在一個實(shí)施例中,等級ID可以用于判定已識別的也存儲著查詢關(guān)鍵字值306的一個或多個等級中最年輕的等級。然后可以檢索對應(yīng)頁面內(nèi)的記錄并且可以讀取物理指針值,用于處理存儲訪問請求。在展示的實(shí)例中,查詢關(guān)鍵字值27在關(guān)鍵字16至31的范圍內(nèi)。對應(yīng)的條目中存儲的頁面ID和等級ID以查詢關(guān)鍵字值向映射表傳達(dá)。
[0094]現(xiàn)在參考圖8,顯不了訪問映射表所用的二級索引的一個實(shí)施例的廣義框圖。圖4的電路和邏輯部分的對應(yīng)者一致地編號。正如早先介紹,圖3所示的初級索引310可能大到無法存儲在RAM172或內(nèi)存介質(zhì)130中。此外,隨著映射表340增長,次級索引320也可能變得大到無法存儲在這些內(nèi)存中。所以,可以在次級索引320前訪問三級索引330,這仍然可以比訪問初級索引310更快。
[0095]對于存儲設(shè)備176a_176m中存儲的數(shù)據(jù)的位置標(biāo)識,三級索引330可以提供比次級索引320更粗等級的粒度。所以,三級索引330可以小于它對應(yīng)的次級索引320的部分。應(yīng)當(dāng)注意,初級索引310、次級索引320、三級索引330等的每一個都可以以壓縮格式存儲。選擇的壓縮格式可以與在映射表340內(nèi)存儲信息所用的壓縮格式相同。
[0096]在一個實(shí)施例中,三級索引330可以包括多個分區(qū),比如分區(qū)332a、332b等??梢杂貌樵冴P(guān)鍵字值306訪問三級索引330。在展示的實(shí)例中,在從O至78的關(guān)鍵字值范圍之間發(fā)現(xiàn)了“27”的查詢關(guān)鍵字值306。三級索引330中的第一個條目對應(yīng)于這個關(guān)鍵字值范圍。三級索引330中的列可以指示在次級索引320內(nèi)要訪問哪個分區(qū)。在展示的實(shí)例中,O至78的關(guān)鍵字值范圍對應(yīng)于次級索引320內(nèi)的分區(qū)O。
[0097]還應(yīng)當(dāng)注意,可以訪問某過濾器(未顯示)以判斷查詢關(guān)鍵字值是否在索引310至330的任何一個之內(nèi)。這個過濾器可以是判斷某元素是不是集合成員的概率性數(shù)據(jù)結(jié)構(gòu)。假陽性是有可能的,但是假陰性是不可能的。這樣的過濾器的一個實(shí)例是Bloom過濾器。如果這樣的過濾器的訪問判定某特定值不在全索引142中,那么不向存儲器發(fā)送查詢。如果過濾器的訪問判定查詢關(guān)鍵字值在對應(yīng)的索引中,那么可能不知道對應(yīng)的物理指針值是否被存儲在存儲設(shè)備176a-176m中。
[0098]除了以上情況,在多個實(shí)施例中,一個或多個覆蓋表可以用于修改或取消由映射表響應(yīng)查詢所提供的元組。這樣的覆蓋表可以用于施加過濾條件,在響應(yīng)對映射表的訪問時或創(chuàng)建新等級時的展平操作期間使用。在多個實(shí)施例中,其他硬件和/或軟件可以用于施加過濾條件。在某些實(shí)施例中,以類似于以上介紹的映射表的方式,覆蓋表可以被組織為按時間排序的等級。在其他實(shí)施例中,它們以不同方式組織。用于覆蓋表的關(guān)鍵字不必與用于基本映射表的關(guān)鍵字匹配。例如,覆蓋表可以包含單一條目,聲明某特定卷已經(jīng)被刪除或因其他原因不可訪問(如不存在查詢這個元組的自然訪問路徑),以及對引用該卷標(biāo)識符的元組對應(yīng)的查詢的的響應(yīng)轉(zhuǎn)而是無效的。在另一個實(shí)例中,覆蓋表中的條目可以指示某存儲位置已經(jīng)被釋放,所以引用該存儲位置的任何元組都是無效的,從而使查找的結(jié)果而不是由映射表所用的關(guān)鍵字無效。在某些實(shí)施例中,覆蓋表可以修改若干字段以響應(yīng)對基本映射表的查詢。在某些實(shí)施例中,關(guān)鍵字范圍(關(guān)鍵字值的范圍)可以用于高效地標(biāo)識要應(yīng)用相同操作(取消或修改)的多個值。以這種方式,通過在覆蓋表中創(chuàng)建“取消”條目而不修改映射表,可以(高效地)從映射表中“刪除”若干元組。在這種情況下,覆蓋表可以包括與非關(guān)鍵字?jǐn)?shù)據(jù)字段不相關(guān)聯(lián)的關(guān)鍵字。
[0099]現(xiàn)在轉(zhuǎn)向圖9,顯示了在包括映射和覆蓋表的系統(tǒng)中處理讀請求的方法的一個實(shí)施例。為了響應(yīng)正被接收的讀請求(方框900),產(chǎn)生該請求對應(yīng)的映射表的關(guān)鍵字(方框908)和第一個覆蓋表的關(guān)鍵字(方框902)。在這個實(shí)例中,對覆蓋和映射表的訪問被顯示為并發(fā)地出現(xiàn)。不過,在其他實(shí)施例中,對這些表的訪問可以以任何期望的次序非并發(fā)地(如順序地或以其他方式在時間上分開地)執(zhí)行。使用為映射表產(chǎn)生的關(guān)鍵字,可以從映射表中檢索對應(yīng)的元組(方框910)。如果第一個覆蓋表包含覆蓋表關(guān)鍵字對應(yīng)的“取消”條目(條件框906),在映射表中發(fā)現(xiàn)的任何元組都被視為無效并且可以向請求者返回對這個結(jié)果的指示。相反,如果該覆蓋表包含覆蓋表關(guān)鍵字對應(yīng)的“修改”條目(條件框912),在第一個覆蓋表?xiàng)l目中的值可以用于修改從映射表中檢索的元組中的一個或多個字段(方框922)。一旦完成了這個過程,便根據(jù)來自映射表的元組(無論是否修改過)產(chǎn)生第二個覆蓋表的關(guān)鍵字(方框914),并且在第二個覆蓋表中完成第二次查找(方框916),它可以是與第一個覆蓋表相同的表也可以是不同的表。如果在第二個覆蓋表中發(fā)現(xiàn)了 “取消”條目(條件框920),來自映射表的元組就被視為無效(方框918)。如果在第二個覆蓋表中發(fā)現(xiàn)了 “修改”條目(條件框924),來自映射表的元組的一個或多個字段可以被修改(方框926)。這樣的修改可以包括撤消元組、規(guī)格化元組或其他。修改后的元組然后可以返回給請求者。如果第二個覆蓋表不包含修改條目(條件框924),可以不修改地向請求者返回元組。在某些實(shí)施例中,覆蓋表的至少某些部分可以被高速緩存以提供對其內(nèi)容更快的存取。在多個實(shí)施例中,在第一個覆蓋表中檢測出的取消條目可以用來使任何其他對應(yīng)的查找(如方框914、916等)短路。在其他實(shí)施例中,可以并行和“競爭”地執(zhí)行訪問。眾多這樣的實(shí)施例都是可能并被預(yù)期。
[0100]現(xiàn)在轉(zhuǎn)向圖10,顯示了對映射表內(nèi)若干等級的展平操作的一個實(shí)施例的廣義框圖。在多個實(shí)施例中,響應(yīng)檢測到一個或多個條件可以執(zhí)行展平操作。例如,隨著時間過去,由于插入新記錄,映射表340在增長并積聚若干等級,對查詢關(guān)鍵字值搜索更多等級的成本可能變得不合意地高。為了限制要搜索的等級數(shù)量,可以把多個等級展平為單一新等級。例如,在邏輯上接近或在時間順序上相鄰的兩個或更多等級可以選為進(jìn)行展平操作。在兩個或更多記錄對應(yīng)于同一關(guān)鍵字值時,最年輕的記錄可以保留而其他記錄不包括在新的“展平的”等級中。在這樣的實(shí)施例中,對于給定關(guān)鍵字的搜索,新展平的等級將返回與由對應(yīng)的多個等級的搜索提供的相同的結(jié)果。由于在新展平的等級中搜索的結(jié)果與其取代的兩個或更多等級相比不改變,所以展平操作不需要與對映射表的更新操作同步。換言之,對表的展平操作可以關(guān)于對該表的更新異步地執(zhí)行。
[0101]正如先前注意,更老的等級在其映射不被修改的意義上是固定的(即從A至B的映射保持不變)。結(jié)果,對正在被展平等級的修改不進(jìn)行(如由于用戶的寫入)并且不要求對這些等級的同步鎖定。此外,在基于節(jié)點(diǎn)的集群環(huán)境中,其中每個節(jié)點(diǎn)都可以存儲索引的更老等級的副本(如關(guān)于圖6的討論),可以在一個節(jié)點(diǎn)上采取展平操作而不需要鎖定其他節(jié)點(diǎn)中的對應(yīng)等級。結(jié)果,處理可以在全部節(jié)點(diǎn)中繼續(xù)同時展平以異步方式發(fā)生在任何節(jié)點(diǎn)上。在后面的時間點(diǎn),其他節(jié)點(diǎn)可以展平等級或使用已經(jīng)展平的等級。在一個實(shí)施例中,已經(jīng)被用于形成展平后等級的兩個或更多等級可以被保留用于故障恢復(fù)、鏡像法或其他目的。除了以上情況,在多個實(shí)施例中,已經(jīng)被取消的記錄不可以被重新插入到新等級中。例如可以執(zhí)行以上介紹的展平以響應(yīng)檢測到映射表中的等級數(shù)量已經(jīng)達(dá)到了給定閾值。作為替代,可以執(zhí)行展平以響應(yīng)檢測到一個或多個等級的尺寸已經(jīng)超過了某閾值??梢钥紤]的又一個條件是系統(tǒng)上的負(fù)載。是否展平這些等級的決策除單獨(dú)考慮這些條件外還可以考慮它們的組合。是否展平的決策也可以對該條件的當(dāng)前值以及該條件將來的預(yù)測值都進(jìn)行考慮??梢詧?zhí)行展平的其他條件也是可能的并被預(yù)期。
[0102]在展示的實(shí)例中,若干記錄被簡單顯示為關(guān)鍵字和指針對。為了易于展示,頁面被顯示為包括四個記錄?!癋”級及其下一個相鄰的邏輯鄰居,“F-1”級可以被考慮用于展平操作?!癋”級可以年輕于“F-1”級。盡管這里顯示了兩個等級要被展平,但是有可能并預(yù)期了可以選擇三個或更多等級進(jìn)行展平。在所示實(shí)例中“F-1”級具有的記錄可以存儲與“F”級中發(fā)現(xiàn)的關(guān)鍵字值相同。使用雙向箭頭標(biāo)識出存儲著橫跨兩個相鄰等級的相同關(guān)鍵字值的記錄。
[0103]新的“新F”級包括在“F”級和“F-1 ”級中發(fā)現(xiàn)的重復(fù)關(guān)鍵字值所對應(yīng)的關(guān)鍵字。此外,新的“新F”級包括存儲著重復(fù)關(guān)鍵字值的若干記錄中最年輕(或在這種情況下更年輕)記錄所對應(yīng)的指針值。例如,“F”級和“F-1”級每級都包括存儲著關(guān)鍵字值4的記錄。更年輕的記錄在“F”級中并且這個記錄還存儲了指針值512。所以,“F”級包括的記錄存儲著關(guān)鍵字值4也存儲著指針值512,而不是在更老的“F-1”級中發(fā)現(xiàn)的指針值656。此外,新的“新F”級包括具有唯一在“F”級和“F-1”級之間發(fā)現(xiàn)的關(guān)鍵字值的記錄。例如,新的“新F”級包括的記錄具有在“F”級中發(fā)現(xiàn)的關(guān)鍵字和指針對6和246,以及在“F-1”級中發(fā)現(xiàn)的關(guān)鍵字和指針對2和398。如圖所不,等級內(nèi)的每個頁面按關(guān)鍵字值分選。
[0104]正如以上注意,在多個實(shí)施例中,覆蓋表可以用于修改或取消基本映射表中若干關(guān)鍵字值所對應(yīng)的元組。這樣的覆蓋表可以以類似于映射表的方式管理。例如,可以展平覆蓋表并且把相鄰條目合并在一起以節(jié)省空間。作為替代,管理覆蓋表的方式可以與管理映射表所用的方式不同。在某些實(shí)施例中,覆蓋表可以包含單一條目,它引用覆蓋表關(guān)鍵字的某范圍。以這種方式,能夠限制覆蓋表的尺寸。例如,如果覆蓋表包含k個有效條目,覆蓋表(展平后)需要包含不多于k+Ι個條目,把若干范圍標(biāo)注為無效,對應(yīng)于映射表中有效條目之間的間隙。所以,覆蓋表可以用于以相對高效的方式標(biāo)識出可以從映射表撤消的元組。除了以上情況,雖然先前的討論介紹了使用覆蓋表取消或修改對來自映射表的若干請求的響應(yīng),但是覆蓋表也可用于在映射表的展平操作期間取消或修改若干值。所以,在映射表的展平操作期間創(chuàng)建新等級時,可以取消否則有可能被插入到新等級中的關(guān)鍵字值。作為替代,可以先修改某值再插入到新等級中。這樣的修改可以引起映射表中給定范圍關(guān)鍵字值所對應(yīng)的單一記錄,(在新等級中)以多個記錄取代——每個都對應(yīng)原始記錄的一個子范圍。此外,某記錄可以用對應(yīng)于更小范圍的新記錄取代,多個記錄也有可能由單一記錄取代,其范圍覆蓋了原始記錄的全部范圍。一切這樣的實(shí)施例都被預(yù)期。
[0105]現(xiàn)在參考圖11,顯示了對映射表內(nèi)若干等級的展平操作實(shí)施例的廣義框圖。正如先前討論,等級可以按時間排序。在展示的實(shí)例中,“F”級包括一個或多個索引并且對應(yīng)的映射在邏輯上位于更老的“F-1”級之上。同樣,“F”級在邏輯上位于更年輕的“F+1”級之下。同樣,“F-2”級在邏輯上位于更年輕的“F-1”級之下而“F+2”級在邏輯上位于更老的“F+1”級之上。在一個實(shí)例中,“F”和“F-1”級可以被視為用于展平操作。使用雙向箭頭展示有若干記錄存儲著橫跨兩個相鄰等級的相同關(guān)鍵字值。
[0106]正如早先介紹,新的“新F”級包括在“F”級和“F-1 ”級中發(fā)現(xiàn)的重復(fù)關(guān)鍵字值所對應(yīng)的關(guān)鍵字值。此外,新的“新F”級包括存儲著重復(fù)關(guān)鍵字值的若干記錄中最年輕(或在這種情況下更年輕)的記錄所對應(yīng)的指針值。在完成展平操作后,“F”級和“F-1”級可能尚未從映射表中去除。同樣,在基于節(jié)點(diǎn)的集群中,每個節(jié)點(diǎn)都可以驗(yàn)證其準(zhǔn)備好采用新的單一等級,比如“新F”級。并且不再使用它取代的兩個或更多的等級(比如“F”級和“F-1”級)??梢韵冗M(jìn)行這種驗(yàn)證再使新等級變?yōu)槿〈?。在一個實(shí)施例中,兩個或更多的被取代的等級比如“F”級和“F-1”級可以被保留在存儲器中,用于故障恢復(fù)、鏡像法或其他目的。為了保持等級及其映射的時間順序,新展平的F級在邏輯上被放置更年輕的等級(如F+1級)之下以及它取代的原始等級(如“F”級和“F-1”級)之上。
[0107]現(xiàn)在轉(zhuǎn)向圖12,顯示了展平映射表內(nèi)若干等級的方法1000的一個實(shí)施例。在以上介紹的網(wǎng)絡(luò)架構(gòu)100和映射表340中實(shí)施的組件一般可以根據(jù)方法1000操作。為了討論目的,在這個實(shí)施例中的步驟以連續(xù)的次序顯示。不過,某些步驟可以以不同于所示的次序出現(xiàn),某些步驟可以并發(fā)地進(jìn)行,某些步驟可以與其他步驟結(jié)合,而某些步驟在另一個實(shí)施例中可以不出現(xiàn)。
[0108]在方框1002,為映射表和對應(yīng)的索引分配了存儲空間。在方框1004,為展平映射表內(nèi)兩個或更多等級判斷一個或多個條件。例如,搜索映射表內(nèi)當(dāng)前數(shù)量的等級的成本可能大于執(zhí)行展平操作的成本。此外,成本可以基于以下各項(xiàng)至少其一:要展平的結(jié)構(gòu)中等級的當(dāng)前(或預(yù)測)數(shù)量、一個或多個等級中條目的數(shù)量、會被取消或修改的映射條目的數(shù)量以及系統(tǒng)上的負(fù)載。成本還可以包括執(zhí)行對應(yīng)操作的時間、一條或多條總線的占用、對應(yīng)操作期間使用的存儲空間、一組等級中重復(fù)條目的數(shù)量已經(jīng)達(dá)到了某個閾值等。此外,每個等級內(nèi)許多記錄的計數(shù)可用于估算對兩個相鄰等級執(zhí)行的展平操作何時可以產(chǎn)生記錄數(shù)量等于前一個等級內(nèi)的記錄數(shù)量兩倍的新的單一等級。單獨(dú)地或以任何組合地取得的這些條件以及其他條件是可能的并被預(yù)期。
[0109]在方框1006,由于存儲了數(shù)據(jù)并發(fā)現(xiàn)了新映射,所以訪問并更新了索引和映射表。映射表內(nèi)的許多等級隨著把新記錄插入到映射表中而增加。如果檢測出展平映射表內(nèi)兩個或更多等級的條件(條件框1008),那么在方框1010,標(biāo)識出要展平的一組或多組等級。一組等級可以包括兩個或更多等級。在一個實(shí)施例中,兩個或更多等級是相鄰的等級。盡管最低等級即最老等級可以是進(jìn)行展平的最優(yōu)候選,也可以選擇更年輕的組。
[0110]在方框1012,對每組產(chǎn)生新的單一等級,包括對應(yīng)的組內(nèi)最新的記錄。在更早的實(shí)例中,新的單一 “新F”級包括“F”級和“F+1 ”級當(dāng)中最年輕的記錄。在方框1014,在基于節(jié)點(diǎn)的集群中,可以從集群內(nèi)每個節(jié)點(diǎn)中請求應(yīng)答以表明各自節(jié)點(diǎn)準(zhǔn)備好采用由展平操作所產(chǎn)生的新等級。當(dāng)每個節(jié)點(diǎn)應(yīng)答它可以采用新等級時,在方框1016,用新等級取代已標(biāo)識組內(nèi)的當(dāng)前等級。在其他實(shí)施例中,不需要橫跨節(jié)點(diǎn)的同步。在這樣的實(shí)施例中,某些節(jié)點(diǎn)可以先于其他節(jié)點(diǎn)開始使用新等級。另外,即使在新展平的等級可用之后,某些節(jié)點(diǎn)也可以繼續(xù)使用原始等級。例如,某特定節(jié)點(diǎn)可以使原始等級數(shù)據(jù)被高速緩存并使用,而不使用新展平等級的非高速緩存的數(shù)據(jù)。眾多這樣的實(shí)施例是可能的并被預(yù)期。
[0111]現(xiàn)在轉(zhuǎn)向圖13,顯示了高效處理映射表內(nèi)批量陣列任務(wù)的方法1100的一個實(shí)施例。類似于介紹的其他方法,在以上介紹的網(wǎng)絡(luò)架構(gòu)100和映射表340中實(shí)施的組件一般可以根據(jù)方法1100操作。此外,在這個實(shí)施例中的步驟以連續(xù)的次序顯示。不過,某些步驟可以以不同于所示的次序出現(xiàn),某些步驟可以并發(fā)地進(jìn)行,某些步驟可以與其他步驟結(jié)合,而某些步驟在另一個實(shí)施例中可以不出現(xiàn)。
[0112]在映射表內(nèi)以壓縮格式存儲信息可以實(shí)現(xiàn)細(xì)粒度映射,它可以允許直接操作映射表內(nèi)的映射信息,作為普通的批量陣列任務(wù)的替代。直接映射操作可以降低I/O網(wǎng)絡(luò)和總線的通信量。正如早先介紹,閃存的“查找時間”短,這允許許多相關(guān)讀操作以短于自旋磁盤單次操作的時間發(fā)生。這些相關(guān)讀取可以用于執(zhí)行聯(lián)機(jī)的細(xì)粒度映射以集成節(jié)省空間的特征象壓縮和去重復(fù)。此外,這些相關(guān)讀取操作可以允許存儲器控制器174完全在映射表內(nèi)執(zhí)行批量陣列任務(wù),而不是訪問(讀取和寫入)存儲設(shè)備176a-176m內(nèi)存儲的用戶數(shù)據(jù)。[0113]在方框1102,接收大型即批量陣列任務(wù)。例如,批量復(fù)制或移動請求可以對應(yīng)于幾十個或幾百個虛擬機(jī)的備份,再加上由這些虛擬機(jī)執(zhí)行和更新的企業(yè)應(yīng)用數(shù)據(jù)。收到的請求與全部這種數(shù)據(jù)的移動、分支、克隆或復(fù)制相關(guān)聯(lián),與收到的請求相關(guān)聯(lián)的數(shù)據(jù)量可能大到16吉字節(jié)(GB)或更大。要是為了處理這個請求而訪問用戶數(shù)據(jù),大量處理時間可能要花費(fèi)在該請求上因而系統(tǒng)性能要降低。此外,典型情況下,虛擬化環(huán)境具有的輸入/輸出(I/O)總資源小于物理環(huán)境。
[0114]在方框1104,存儲器控制器174可以存儲所收到請求所對應(yīng)的指示,它使新關(guān)鍵字的范圍與老關(guān)鍵字的范圍相關(guān),其中關(guān)鍵字的兩個范圍都對應(yīng)于收到的請求。例如,如果收到請求是16GB數(shù)據(jù)的復(fù)制,就可以存儲16GB數(shù)據(jù)所對應(yīng)的開始關(guān)鍵字值和結(jié)束關(guān)鍵字值。同樣,開始和結(jié)束關(guān)鍵字值的每一個都可以包括卷ID、收到請求內(nèi)的邏輯或虛擬地址、快照ID、扇區(qū)號等。在一個實(shí)施例中,這種信息可以與索引中存儲的信息分開存儲,比如初級索引310、次級索引320、三級索引330等。不過,當(dāng)處理后面請求期間訪問索引時可以訪問這種信息。
[0115]在方框1106,數(shù)據(jù)存儲器控制器174可以向客戶計算機(jī)系統(tǒng)IlOa-1lOc的對應(yīng)客戶機(jī)傳達(dá)響應(yīng),表明完成了收到的請求而不預(yù)先訪問用戶數(shù)據(jù)。所以,存儲器控制器174處理收到的請求時處理器122上可以停機(jī)時間很短或沒有以及沒有負(fù)載。
[0116]在方框1108,存儲器控制器174可以設(shè)置條件、指示或旗標(biāo),或者緩沖區(qū)更新操作,用于更新映射表中的一個或多個記錄,對應(yīng)于取代映射表中老關(guān)鍵字的新關(guān)鍵字。對于移動請求和復(fù)制請求,都可以把新關(guān)鍵字所對應(yīng)的一個或多個新記錄插入映射表。關(guān)鍵字可以被插入到所創(chuàng)建的新的最高等級,正如早先介紹。對于移動請求,在新記錄已經(jīng)被插入到映射表后可以從映射表中去除對應(yīng)的一個或多個老記錄。映射表中的記錄或者立即或者在更晚時間實(shí)際地更新。
[0117]對于清零或擦除請求,可以存儲某范圍的關(guān)鍵字值現(xiàn)在對應(yīng)于一串二進(jìn)制零的指示。另外,如以上討論,覆蓋表可以用于標(biāo)識不是(或不再)有效的關(guān)鍵字值。用戶數(shù)據(jù)可以不被蓋寫。對于擦除請求,用戶數(shù)據(jù)可以在更晚時間被蓋寫,此時“釋放的”存儲位置被分配給后續(xù)存儲(寫入)請求的新數(shù)據(jù)。對于外面導(dǎo)向的碎片整理請求,可以選擇相鄰的地址用于扇區(qū)重新組織,它可以有助于在客戶計算機(jī)系統(tǒng)IlOa-1lOc的客戶機(jī)上執(zhí)行的應(yīng)用程序。
[0118]如果存儲器控制器174收到了新關(guān)鍵字之一所對應(yīng)的數(shù)據(jù)存儲訪問請求(方框1110),并且新關(guān)鍵字已經(jīng)被插入映射表(條件框1112),那么在方框1114,可以用新關(guān)鍵字訪問索引和映射表。例如,可以用新關(guān)鍵字訪問初級索引310、次級索引320或三級索引330中任一個。當(dāng)映射表的一個或多個頁面由索引識別出時,然后就訪問這些已識別的頁面。在方框1116,可以用映射表中找到的與新關(guān)鍵字相關(guān)聯(lián)的物理指針值服務(wù)存儲訪問請求。
[0119]如果存儲器控制器174收到了新關(guān)鍵字之一所對應(yīng)的數(shù)據(jù)存儲訪問請求(方框1110),并且新關(guān)鍵字尚未被插入映射表(條件框1112),那么在方框1118,可以用對應(yīng)的老關(guān)鍵字訪問索引和映射表??梢栽L問保持著老關(guān)鍵字范圍和新關(guān)鍵字范圍的存儲器以確定對應(yīng)的老關(guān)鍵字值。當(dāng)映射表的一個或多個頁面由索引識別出時,然后就訪問這些已識別的頁面。在方框1120,可以用映射表中找到的與老關(guān)鍵字相關(guān)聯(lián)的物理指針值服務(wù)存儲訪問請求。[0120]現(xiàn)在轉(zhuǎn)向圖14,顯示了存儲設(shè)備內(nèi)數(shù)據(jù)布局架構(gòu)實(shí)施例的廣義框圖。在一個實(shí)施例中,存儲設(shè)備176a-176m內(nèi)的數(shù)據(jù)存儲位置可以被安排到獨(dú)立冗余磁盤陣列(RAID)中。如圖所示,不同類型的數(shù)據(jù)可以根據(jù)數(shù)據(jù)布局架構(gòu)存儲在存儲設(shè)備176a-176k中。在一個實(shí)施例中,存儲設(shè)備176a-176k的每臺都是SSD。SSD內(nèi)的分配單位可以包括SSD內(nèi)的一個或多個擦除塊。
[0121]用戶數(shù)據(jù)1230可以存儲在一臺或多臺存儲設(shè)備176a_176k內(nèi)包括的一個或多個頁面內(nèi)。在RAID條帶與存儲設(shè)備176a-176k之一的每個交集內(nèi),存儲的信息可以被格式化為一系列邏輯頁面。每個邏輯頁面又可以包括頁面頭以及對頁面中數(shù)據(jù)的校驗(yàn)和。發(fā)出讀取時它可以為了一個或多個邏輯頁面并且在每個頁面中的數(shù)據(jù)都可以用校驗(yàn)和驗(yàn)證。由于每個邏輯頁面可以包括頁面頭,它包含用于該頁面的校驗(yàn)和(它可以被稱為“介質(zhì)”校驗(yàn)和),所以用于數(shù)據(jù)的實(shí)際頁面尺寸可能小于一個邏輯頁面。在某些實(shí)施例中,對于存儲設(shè)備間恢復(fù)數(shù)據(jù)1250比如RAID奇偶校驗(yàn)信息的頁面,頁面頭可以更小,使得奇偶校驗(yàn)頁面保護(hù)該數(shù)據(jù)頁面中的頁面校驗(yàn)和。在其他實(shí)施例中,可以計算存儲著設(shè)備間恢復(fù)數(shù)據(jù)1250的奇偶校驗(yàn)頁面中的校驗(yàn)和,使得該數(shù)據(jù)頁面校驗(yàn)和的校驗(yàn)和與覆蓋對應(yīng)數(shù)據(jù)頁面的奇偶校驗(yàn)頁面的校驗(yàn)和相同。在這樣的實(shí)施例中,奇偶校驗(yàn)頁面頭不需要小于數(shù)據(jù)頁面頭。
[0122]設(shè)備間ECC數(shù)據(jù)1250可以是從保留用戶數(shù)據(jù)的其他存儲設(shè)備上的一個或多個頁面產(chǎn)生的奇偶校驗(yàn)信息。例如,設(shè)備間ECC數(shù)據(jù)1250可以是在RAID數(shù)據(jù)布局架構(gòu)中所用的奇偶校驗(yàn)信息。盡管存儲的信息被顯示為存儲設(shè)備176a-176k中的相鄰邏輯頁面,但是在本領(lǐng)域眾所周知邏輯頁面可以以隨機(jī)次序安排,其中每臺存儲設(shè)備176a-176k都是SSD。
[0123]設(shè)備內(nèi)ECC數(shù)據(jù)1240可以包括由設(shè)備內(nèi)冗余模式使用的信息。設(shè)備內(nèi)冗余模式利用了給定存儲設(shè)備內(nèi)的ECC信息,比如奇偶校驗(yàn)信息。這種設(shè)備內(nèi)冗余模式及其ECC信息對應(yīng)于給定設(shè)備并可以被保留在給定設(shè)備之內(nèi),但是與可以被內(nèi)部產(chǎn)生并由設(shè)備自身保留的ECC截然不同。一般來說,設(shè)備的內(nèi)部產(chǎn)生并保留的ECC對于包括該設(shè)備在內(nèi)的系統(tǒng)是不可見的。
[0124]設(shè)備內(nèi)ECC數(shù)據(jù)1240還可以被稱為設(shè)備內(nèi)故障恢復(fù)數(shù)據(jù)1240。設(shè)備內(nèi)故障恢復(fù)數(shù)據(jù)1240可以用于保護(hù)給定存儲設(shè)備免于隱藏的扇區(qū)故障(LSE)。LSE是訪問給定扇區(qū)時才被發(fā)現(xiàn)的故障。所以,先前存儲在給定扇區(qū)中的任何數(shù)據(jù)都可能丟失。在存儲設(shè)備故障后RAID重建期間遇到時,單一 LSE就可能導(dǎo)致數(shù)據(jù)丟失。術(shù)語“扇區(qū)”典型情況下是指HDD上的存儲器基本單位,比如磁盤上給定磁軌內(nèi)的區(qū)段。這里,術(shù)語“扇區(qū)”也可以指在SSD上分配的基本單位。當(dāng)存儲設(shè)備內(nèi)的給定扇區(qū)或其他存儲單位不可訪問時就發(fā)生了隱藏的扇區(qū)故障(LSE)。對于該給定扇區(qū)的讀或?qū)懖僮骺赡軣o法完成。此外,可能存在著無法糾正的糾錯碼(EDD)故障。
[0125]給定存儲設(shè)備內(nèi)包括的設(shè)備內(nèi)故障恢復(fù)數(shù)據(jù)1240可以用于提高給定存儲設(shè)備內(nèi)的數(shù)據(jù)存儲可靠性。設(shè)備內(nèi)故障恢復(fù)數(shù)據(jù)1240是增加到另一臺存儲設(shè)備內(nèi)可以包括的其他ECC信息,比如在RAID數(shù)據(jù)布局架構(gòu)中采用的奇偶校驗(yàn)信息。
[0126]在每臺存儲設(shè)備內(nèi),設(shè)備內(nèi)故障恢復(fù)數(shù)據(jù)1240可以被存儲在一個或多個頁面中。正如本領(lǐng)域技術(shù)人員熟知,通過對用戶數(shù)據(jù)1230內(nèi)的選定信息位執(zhí)行某函數(shù)可以得到設(shè)備內(nèi)故障恢復(fù)數(shù)據(jù)1240?;赬OR的運(yùn)算可以用于導(dǎo)出奇偶校驗(yàn)信息以存儲在設(shè)備內(nèi)故障恢復(fù)數(shù)據(jù)1240中。設(shè)備內(nèi)冗余模式的其他實(shí)例包括單奇偶校驗(yàn)檢查(SPC)、最大距離可分(MDS)擦除碼、交錯奇偶校驗(yàn)檢查碼(IPC)、混合SPC和MDS碼(MDS+SPC),以及列對角奇偶校驗(yàn)(⑶P)。這些模式根據(jù)傳遞的可靠性而改變并且計算了依賴于模式的開銷。
[0127]除了以上介紹的故障恢復(fù)信息以外,系統(tǒng)還可以被配置為對設(shè)備上區(qū)域計算校驗(yàn)和值。例如,向設(shè)備寫入信息時可以計算校驗(yàn)和。這種校驗(yàn)和由系統(tǒng)存儲。從設(shè)備讀回信息時,系統(tǒng)可以再次計算校驗(yàn)和并將其與原始被存儲的值進(jìn)行對比。如果兩個校驗(yàn)和不同,該信息不是恰當(dāng)?shù)刈x取,所以系統(tǒng)可以使用其他模式恢復(fù)數(shù)據(jù)。校驗(yàn)和函數(shù)的實(shí)例包括循環(huán)冗余檢查(CRC)、MD5和SHA-1。
[0128]SSD內(nèi)的擦除塊可以包括幾個頁面。一個頁面可以包括4KB的數(shù)據(jù)存儲空間。擦除塊可以包括64個頁面即256KB。在其他實(shí)施例中,擦除塊可以大到I兆字節(jié)(MB)并包括256個頁面。為了降低跟蹤分配單位的開銷,可以以提供尺寸足夠大而數(shù)量又相對少的單位的方式選擇分配單位的尺寸。在一個實(shí)施例中,一個或多個狀態(tài)表可以保持分配單元的狀態(tài)(已分配、空閑、已擦除、有故障)、磨損等級以及在分配單元內(nèi)已經(jīng)發(fā)生的(可糾正和/或不可糾正)故障數(shù)量的計數(shù)。在一個實(shí)施例中,分配單位與SSD的總存儲容量相比相對小。用于頁面、擦除塊和其他單位配置的數(shù)據(jù)存儲空間的其他量也是可能的并被預(yù)期。
[0129]元數(shù)據(jù)1260可以包括頁面頭信息、RAID條帶識別信息、用于一個或多個RAID條帶的日志數(shù)據(jù)等。在多個實(shí)施例中,每個條帶開始處的單一元數(shù)據(jù)頁面都可以從其他條帶頭重建。作為替代,這個頁面可以處于奇偶校驗(yàn)碎片中的不同偏移量處,使得數(shù)據(jù)能夠由設(shè)備間的奇偶校驗(yàn)保護(hù)。在一個實(shí)施例中,元數(shù)據(jù)1260可以存儲著表明這份數(shù)據(jù)不要去重復(fù)的特定旗標(biāo)值或與其相關(guān)聯(lián)。
[0130]除了設(shè)備間的奇偶校驗(yàn)保護(hù)和設(shè)備內(nèi)的奇偶校驗(yàn)保護(hù)以外,存儲設(shè)備176a_176k中的每個頁面都可以包括附加保護(hù),比如每個給定頁面內(nèi)存儲的校驗(yàn)和。校驗(yàn)和(8字節(jié)、4字節(jié)或其他)可以被放置在頁面內(nèi)部,頁面頭后以及對應(yīng)的數(shù)據(jù)前,它可以被壓縮。對于又一個等級的保護(hù),數(shù)據(jù)位置信息可以被包括在校驗(yàn)和值中。每個頁面中的數(shù)據(jù)可以包括這種信息。虛擬地址和物理地址都可以包括在這種信息中。扇區(qū)號、數(shù)據(jù)塊和偏移量號、磁軌號、平面號等也可以包括在這種信息中。如果地址轉(zhuǎn)換映射表的內(nèi)容丟失,這種映射信息也可以用于重建該表。
[0131]在一個實(shí)施例中,存儲設(shè)備176a_176k中的每個頁面都存儲著特定類型的數(shù)據(jù),比如數(shù)據(jù)類型1230-1260。作為替代,頁面可以存儲不止一種類型的數(shù)據(jù)。頁面頭可以存儲對于對應(yīng)頁面的數(shù)據(jù)類型進(jìn)行識別的信息。在一個實(shí)施例中,設(shè)備內(nèi)冗余模式把設(shè)備劃分為用于存儲用戶數(shù)據(jù)的位置組。例如,劃分可以是RAID布局內(nèi)的條帶對應(yīng)的設(shè)備內(nèi)的一組位置。在所示實(shí)例中,為了易于展示,僅僅顯示了兩個條帶1270a和1270b。
[0132]在一個實(shí)施例中,存儲器控制器174內(nèi)的RAID引擎可以判斷對存儲設(shè)備176a-176k使用的保護(hù)等級。例如,RAID引擎可以判定對存儲設(shè)備176a_176k采用RAID雙重奇偶校驗(yàn)。設(shè)備間冗余數(shù)據(jù)1250可以表示從對應(yīng)的用戶數(shù)據(jù)產(chǎn)生的RAID雙重奇偶校驗(yàn)值。在一個實(shí)施例中,存儲設(shè)備176j和176k可以存儲雙重奇偶校驗(yàn)信息。應(yīng)當(dāng)理解,其他等級的RAID奇偶校驗(yàn)保護(hù)也是可能的并被預(yù)期。此外,在其他實(shí)施例中,雙重奇偶校驗(yàn)信息的存儲可以在若干存儲設(shè)備之間循環(huán)而不是被存儲在每個RAID條帶的存儲設(shè)備176j和176k之內(nèi)。為了易于展示和說明,雙重奇偶校驗(yàn)信息的存儲被顯示為存儲在存儲設(shè)備176j和176k中。盡管每臺存儲設(shè)備176a-176k都包括多個頁面,但是為了易于展示僅僅標(biāo)注了頁面1212和頁面1220。
[0133]應(yīng)當(dāng)注意,以上介紹的實(shí)施例可以包括軟件。在這樣的實(shí)施例中,實(shí)施本方法和/或機(jī)制的程序指令可以在計算機(jī)可讀介質(zhì)上傳送或存儲。被配置為存儲程序指令的眾多類型的介質(zhì)是可用的并包括硬盤、軟盤、CDROM、DVD、閃存、可編程ROM (PR0M)、隨機(jī)存取存儲器(RAM)以及多種其他形式的易失性或非易失性存儲器。
[0134]在多個實(shí)施例中,本文介紹的方法和機(jī)制的一個或多個部分可以形成云計算環(huán)境的一部分。在這樣的實(shí)施例中,若干資源可以在因特網(wǎng)上提供為根據(jù)一個或多個不同模型的服務(wù)。這樣的模型可以包括基礎(chǔ)設(shè)施即服務(wù)(IaaS)、平臺即服務(wù)(PaaS)以及軟件即服務(wù)(SaaS)0在IaaS中,計算機(jī)基礎(chǔ)設(shè)施被交付為服務(wù)。在這樣的情況下,計算裝備一般由服務(wù)供應(yīng)商擁有和運(yùn)行。在PaaS模型中,由開發(fā)商開發(fā)軟件解決方案所用的軟件工具和基本裝備可以提供為服務(wù)并由服務(wù)供應(yīng)商主辦。典型情況下,SaaS包括服務(wù)供應(yīng)商把軟件特許為按需服務(wù)。以上模型的眾多組合是可能的并被預(yù)期。
[0135]盡管已經(jīng)相當(dāng)詳細(xì)地介紹了上面的若干實(shí)施例,但是一旦以上公開內(nèi)容被全面認(rèn)識到,眾多變種和修改對于本領(lǐng)域技術(shù)人員將變得顯而易見。以下權(quán)利要求書意在被解釋為包含一切這樣的變種和修改。
【權(quán)利要求】
1.一種計算機(jī)系統(tǒng),包括: 數(shù)據(jù)存儲介質(zhì); 數(shù)據(jù)存儲控制器,連接到數(shù)據(jù)存儲介質(zhì);以及 映射表,包括多個條目,每個映射表?xiàng)l目都包含元組,內(nèi)含關(guān)鍵字; 其中,映射表被組織為多個按時間排序的等級,每個等級都包括一個或多個映射表?xiàng)l目。
2.根據(jù)權(quán)利要求1的計算機(jī)系統(tǒng),進(jìn)一步包括高速緩存,被配置為存儲映射表的至少一部分的高速緩存副本。
3.根據(jù)權(quán)利要求1的計算機(jī)系統(tǒng),其中,為了響應(yīng)收到的請求,數(shù)據(jù)存儲控制器被進(jìn)一步配置為: 以請求對應(yīng)的至少給定關(guān)鍵字訪問映射表; 識別一個或多個條目,它們對應(yīng)于給定關(guān)鍵字; 判斷一個或多個條目中哪一個對應(yīng)于按時間排序等級中最年輕的等級;以及 返回按時間排序等級中最年輕的等級對應(yīng)的條目以滿足請求。
4.根據(jù)權(quán)利要求3的計算機(jī)系統(tǒng),其中,控制器被配置為根據(jù)元組的關(guān)鍵字值分選每個等級。
5.根據(jù)權(quán)利要求4的計算機(jī)系統(tǒng),其中,存儲介質(zhì)中存儲的映射表的條目被分組為若干頁面,以及查詢的結(jié)果被用于檢索這些頁面中的特定頁面。
6.根據(jù)權(quán)利要求1的計算機(jī)系統(tǒng),其中,為了響應(yīng)收到的特定頁面,控制器被配置為使用給定關(guān)鍵字識別特定頁面內(nèi)的映射,映射包括在存儲介質(zhì)中存儲的、給定關(guān)鍵字對應(yīng)的數(shù)據(jù)項(xiàng)的位置的標(biāo)識。
7.根據(jù)權(quán)利要求1的計算機(jī)系統(tǒng),其中,數(shù)據(jù)存儲控制器被進(jìn)一步配置為: 響應(yīng)檢測到把一個或多個新條目插入到映射表中的條件,創(chuàng)建要被加入到多個等級的新等級;以及 把一個或多個新條目插入到新等級中。
8.根據(jù)權(quán)利要求1的計算機(jī)系統(tǒng),其中,每個映射表?xiàng)l目進(jìn)一步包括給定關(guān)鍵字對應(yīng)的用戶數(shù)據(jù)在數(shù)據(jù)存儲介質(zhì)上的存儲位置的指示。
9.根據(jù)權(quán)利要求8的計算機(jī)系統(tǒng),其中,數(shù)據(jù)存儲介質(zhì)包括一臺或多臺固態(tài)存儲設(shè)備。
10.根據(jù)權(quán)利要求1的計算機(jī)系統(tǒng),其中,多個按時間排序等級的全部等級除最年輕等級外都是只讀的。
11.根據(jù)權(quán)利要求1的計算機(jī)系統(tǒng),進(jìn)一步包括覆蓋映射表的覆蓋表,其中,覆蓋表和映射表由不同的關(guān)鍵字索引。
12.根據(jù)權(quán)利要求11的計算機(jī)系統(tǒng),其中,覆蓋表標(biāo)識映射表中無效的一個或多個元組。
13.根據(jù)權(quán)利要求11的計算機(jī)系統(tǒng),其中,覆蓋表包含某數(shù)值范圍對應(yīng)的一個或多個條目。
14.根據(jù)權(quán)利要求11的計算機(jī)系統(tǒng),其中,覆蓋表中的條目能夠被用于修改從映射表返回的元組中的一個或多個字段以響應(yīng)查詢。
15.根據(jù)權(quán)利要求11的計算機(jī)系統(tǒng),其中,索引覆蓋表所用的關(guān)鍵字從訪問映射表所用的關(guān)鍵字的字段中產(chǎn)生。
16.根據(jù)權(quán)利要求11的計算機(jī)系統(tǒng),其中,索引覆蓋表所用的關(guān)鍵字從訪問映射表產(chǎn)生的元組中的字段中產(chǎn)生。
17.根據(jù)權(quán)利要求11的計算機(jī)系統(tǒng),進(jìn)一步包括高速緩存,被配置為存儲覆蓋表的至少一部分的高速緩存副本。
18.根據(jù)權(quán)利要求11的計算機(jī)系統(tǒng),其中,覆蓋表被組織為多個按時間排序的等級,每個等級都包括一個或多個覆蓋表?xiàng)l目。
19.一種在存儲系統(tǒng)中使用的方法,所述方法包括: 存儲映射表,包括多個條目,每個映射表?xiàng)l目都包含元組,內(nèi)含關(guān)鍵字;以及 存儲映射表索引,它包括多個條目; 其中,映射表被組織為多個按時間排序的等級,每個等級都包括一個或多個映射表?xiàng)l目。
20.根據(jù)權(quán)利要求19的方法,其中,為了響應(yīng)收到的特定頁面,方法進(jìn)一步包括使用給定關(guān)鍵字識別特定頁面內(nèi)的映射,映射包括在存儲介質(zhì)中存儲的、給定關(guān)鍵字對應(yīng)的數(shù)據(jù)項(xiàng)的位置的標(biāo)識。
21.根據(jù)權(quán)利要求2 0的方法,進(jìn)一步包括存儲映射表的至少一部分的高速緩存副本。
22.根據(jù)權(quán)利要求20的方法,其中,為了響應(yīng)收到的請求,方法進(jìn)一步包括: 以請求對應(yīng)的至少給定關(guān)鍵字訪問映射表; 識別一個或多個條目,它們對應(yīng)于給定關(guān)鍵字; 判斷一個或多個條目中哪一個對應(yīng)于按時間排序等級中最年輕的等級;以及 返回按時間排序等級中最年輕的等級對應(yīng)的條目以滿足請求。
23.根據(jù)權(quán)利要求22的方法,其中,進(jìn)一步包括根據(jù)元組的關(guān)鍵字值分選每個等級。
24.根據(jù)權(quán)利要求23的方法,其中,存儲介質(zhì)中存儲的映射表的條目被分組為若干頁面,以及查詢的結(jié)果被用于檢索這些頁面中的特定頁面。
25.根據(jù)權(quán)利要求19的方法,進(jìn)一步包括: 響應(yīng)檢測到把一個或多個新條目插入到映射表中的條件,創(chuàng)建要被加入到多個等級的新等級;以及 把一個或多個新條目插入到新等級中。
26.根據(jù)權(quán)利要求19的方法,其中,每個映射表?xiàng)l目進(jìn)一步包括給定關(guān)鍵字對應(yīng)的用戶數(shù)據(jù)在數(shù)據(jù)存儲介質(zhì)上的存儲位置的指示。
27.根據(jù)權(quán)利要求26的方法,其中,數(shù)據(jù)存儲介質(zhì)包括一臺或多臺固態(tài)存儲設(shè)備。
28.根據(jù)權(quán)利要求19的方法,其中,多個按時間排序等級的全部等級除最年輕等級外都是只讀的。
29.根據(jù)權(quán)利要求19的方法,進(jìn)一步包括覆蓋映射表的覆蓋表,其中,覆蓋表和映射表由不同的關(guān)鍵字索引。
30.根據(jù)權(quán)利要求29的方法,其中,覆蓋表標(biāo)識映射表中無效的一個或多個兀組。
31.根據(jù)權(quán)利要求29的方法,其中,覆蓋表包含某數(shù)值范圍對應(yīng)的一個或多個條目。
32.根據(jù)權(quán)利要求29的方法,進(jìn)一步包括使用覆蓋表中的條目修改從映射表返回的元組中的一個或多個字段以響應(yīng)查詢。
33.根據(jù)權(quán)利要求29的方法,其中,索引覆蓋表所用的關(guān)鍵字從訪問映射表所用的關(guān)鍵字的字段中產(chǎn)生。
34.根據(jù)權(quán)利要求29的方法,其中,索引覆蓋表所用的關(guān)鍵字從訪問映射表產(chǎn)生的元組中的字段中產(chǎn)生。
35.一種非短暫的計算機(jī)可讀存儲介質(zhì),存儲著由處理器可執(zhí)行的程序指令,用于: 存儲映射表,包括多個條目,每個映射表?xiàng)l目都包含元組,內(nèi)含關(guān)鍵字;以及 存儲映射表索引,它包括多個條目; 其中,映射表被組織為多個按時間排序的等級,每個等級都包括多個映射表?xiàng)l目。
36.根據(jù)權(quán)利要求35的計算機(jī)可讀存儲介質(zhì),其中,程序指令進(jìn)一步可執(zhí)行為在高速緩存中存儲映射表的至少一部分的高速緩存副本。
37.根據(jù)權(quán)利要求35的計算機(jī)可讀存儲介質(zhì),其中,程序指令進(jìn)一步可執(zhí)行為根據(jù)元組的關(guān)鍵字值分選高速緩存副本。`
【文檔編號】G06F11/14GK103827806SQ201280046541
【公開日】2014年5月28日 申請日期:2012年8月11日 優(yōu)先權(quán)日:2011年8月11日
【發(fā)明者】J·科爾格洛夫, J·海斯, E·米勒, 王 鋒 申請人:凈睿存儲股份有限公司