TW201520792A - 用於原子儲存作業之系統及方法 - Google Patents

用於原子儲存作業之系統及方法 Download PDF

Info

Publication number
TW201520792A
TW201520792A TW103126178A TW103126178A TW201520792A TW 201520792 A TW201520792 A TW 201520792A TW 103126178 A TW103126178 A TW 103126178A TW 103126178 A TW103126178 A TW 103126178A TW 201520792 A TW201520792 A TW 201520792A
Authority
TW
Taiwan
Prior art keywords
storage
data
identifiers
logical
lid
Prior art date
Application number
TW103126178A
Other languages
English (en)
Other versions
TWI630494B (zh
Inventor
Nisha Talagala
David Flynn
Swaminathan Sundararaman
Sriram Subramanian
David Nellans
Robert Wipfel
John Strasser
Original Assignee
Intelligent Ip Holdings 2 Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intelligent Ip Holdings 2 Llc filed Critical Intelligent Ip Holdings 2 Llc
Publication of TW201520792A publication Critical patent/TW201520792A/zh
Application granted granted Critical
Publication of TWI630494B publication Critical patent/TWI630494B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一原子儲存模組可被配置以參照到一第二不同組的識別符來實施針對一第一組的識別符之原子儲存作業。響應於完成該原子儲存作業,該原子儲存模組可以將該對應的資料移動至該第一目標組的識別符。該移動作業可包括修改該資料的一邏輯介面。該移動作業可進一步包含儲存被配置以將該資料結合至該第一組的識別符的永久性元資料。

Description

用於原子儲存作業之系統及方法
本揭露內容係有關於儲存系統,並且尤其係有關用於維持檔案一致性之系統及方法。
在此揭露的是一種用於實施原子儲存作業之方法的實施例。所揭露的方法的實施例可包含將交易式識別符(transactional identifier)連結到一原子儲存請求的目標識別符、將該原子儲存請求的儲存作業重新導向至該些交易式識別符、及/或響應於完成該原子儲存請求的儲存作業以從該些交易式識別符移動該些經重新導向的儲存作業的資料至該些目標識別符。
該些儲存作業可包括附加具有元資料(metadata)的資料至一 儲存媒體,該元資料係被配置以將該被附加的資料關連到該些交易式識別符中的一或多個。移動該被附加的資料可包括將元資料儲存在該儲存媒體上,該元資料係被配置以將該被附加的資料關連到該些目標識別符。
該些儲存作業係包括儲存具有元資料的資料在一非揮發性儲存媒體上,該元資料係被配置以結合該所儲存的資料與一或多個和個別的交易式識別符相關之中間的識別符。移動該所儲存的資料可包括儲存一永久性附註(note)在該非揮發性儲存媒體上,該附註係被配置以將該一或多個中間的識別符結合到個別的目標識別符。在某些實施例中,該方法進一步包含響應於移動該些經重新導向的儲存作業的該資料來應答(acknowledging)該原子儲存請求的完成。
在此揭露的是一種用於實施原子儲存作業之裝置的實施例。所揭露的裝置可包括一被配置以映射(map)一第二組的識別符至一儲存請求的一第一組的邏輯識別符之重新導向模組、一被配置以在一儲存裝置上,於該第二組的識別符內執行該儲存請求的儲存作業之登錄儲存模組、及/或一被配置以移動該儲存請求的該些儲存作業至該第一組的邏輯識別符之原子儲存模組。該原子儲存模組可被配置以藉由儲存永久性元資料至該儲存裝置來移動該些儲存作業。該永久性元資料可被配置以將儲存在和該第二組的識別符相關的該儲存裝置上的資料區段結合至該第一組的識別符。該原子儲存模組可以進一步被配置以響應於判斷該永久性元資料將會被儲存在該儲存裝置上來應答該儲存請求的完成。該第一組的識別符可包括複數個不相交的組的邏輯識別符,並且該永久性元資料可以是單一永久性附註,該附註係被配置以將該些資料區段結合到在該複數個不相交的組 的邏輯識別符之內的個別的邏輯識別符。
在某些實施例中,該重新導向模組係被配置以將該第二組的識別符配置在一不同於該第一組的識別符的一位址空間的位址空間之內。或者是,該重新導向模組可被配置以將該第二組的識別符配置在該第一組的識別符的一位址空間的一指定的區域之內。該第二組的識別符可以對應於一交易式位址空間,並且該揭露的裝置可進一步包含一被配置以使得和該交易式位址空間的識別符相關的資料區段無效之重建模組。
該原子儲存模組可被配置以響應於移動一被配置以使得該第二組的識別符中的該些識別符中之一的資料無效之儲存作業,以使得在該第一組的識別符之內的該些識別符中之一無效。該登錄儲存模組可被配置以將資料區段附加至在該儲存裝置上的資料區段之一排序的登錄。該登錄儲存模組可以進一步被配置以將一並不相關於該儲存請求之資料區段附加在該儲存請求於資料區段的該排序的登錄內的兩個或多個資料區段之間。
在此揭露的是一種用於實施原子儲存作業之系統的實施例。該系統可包含用於接收一有關於一組目的地邏輯識別符的原子儲存請求之裝置、用於連結一組交易式識別符至該目的地組的邏輯識別符之裝置、用於附加複數個相關於該原子儲存請求的資料封包至一在一儲存裝置上的順序的儲存登錄之裝置,其中該些資料封包係包括被配置以關連該些資料封包與個別的交易式識別符的永久性元資料、及/或用於附加一永久性附註至該儲存登錄之裝置,其中該永久性附註係被配置以將包括被配置以關連該些資料封包與個別的交易式識別符的永久性元資料的該複數個資料 封包關連到個別的目的地邏輯識別符。
所揭露的系統可進一步包含用於映射該組目的地邏輯識別符的邏輯識別符至個別的交易式識別符之裝置。在某些實施例中,該系統係包含用於將該些交易式識別符中的一或多個結合至一和一邏輯識別符相關的儲存位置之裝置,該邏輯識別符係被連結至該個別的一或多個交易式識別符。該所揭露的系統的實施例可進一步包括用於響應於附加該永久性附註以提供對於該些包括該永久性元資料的資料封包的存取之裝置,該永久性元資料係被配置以利用個別的指定(designation)邏輯識別符來關連該些資料封包與個別的交易式識別符。
該些目的地邏輯識別符可以對應於一邏輯位址空間,並且該些交易式識別符可以對應於一不同的交易式位址空間。該系統可進一步包含用於藉由該些資料封包的永久性元資料的使用以重建在該邏輯位址空間的邏輯識別符以及在該儲存裝置上的資料封包之間的映射的一索引之裝置、及/或用於使得和對應於該不同的交易式位址空間之交易式識別符相關的資料封包無效之裝置。
100‧‧‧計算系統
101‧‧‧處理資源
102‧‧‧揮發性記憶體資源
103‧‧‧非揮發性儲存資源
104‧‧‧通訊介面
105‧‧‧網路
106‧‧‧儲存客戶
110‧‧‧封包格式
112‧‧‧資料區段/揮發性記憶體
113‧‧‧順序資訊(指示器)
114‧‧‧永久性元資料
115‧‧‧固態儲存陣列
115A-N‧‧‧儲存陣列
116A-Y‧‧‧固態儲存元件
117‧‧‧列
118‧‧‧行
119A-N‧‧‧庫
127‧‧‧互連
130‧‧‧儲存層
131‧‧‧介面
132‧‧‧邏輯位址空間
134‧‧‧轉換模組
135‧‧‧儲存元資料
136‧‧‧登錄儲存模組
139‧‧‧儲存控制器
140‧‧‧儲存媒體
141‧‧‧儲存裝置
144‧‧‧儲存位址空間
150‧‧‧映射
152‧‧‧邏輯介面
154‧‧‧後端介面
160‧‧‧正向映射
162‧‧‧項目
164A-D‧‧‧LID
166A-D‧‧‧儲存位址
170A-N‧‧‧儲存分區
180‧‧‧附加點
181‧‧‧前進
182-185‧‧‧儲存位置
189‧‧‧儲存位置N
191‧‧‧儲存位置
193‧‧‧儲存位置
200‧‧‧系統
231‧‧‧儲存請求接收器模組
240‧‧‧寫入模組
241‧‧‧資料讀取模組
242‧‧‧寫入處理模組
243‧‧‧讀取處理模組
244‧‧‧寫入緩衝器
245‧‧‧讀取緩衝器
252‧‧‧庫控制器
310‧‧‧資料封包
311A‧‧‧邏輯介面
311B‧‧‧邏輯介面
311C‧‧‧邏輯介面
311D‧‧‧邏輯介面
311E‧‧‧邏輯介面
312‧‧‧資料區段
314‧‧‧永久性元資料
314A‧‧‧永久性元資料
314B‧‧‧永久性元資料
320‧‧‧資料封包
324‧‧‧永久性元資料
334‧‧‧邏輯介面管理模組
340‧‧‧資料封包
342‧‧‧資料區段
344‧‧‧永久性元資料
362‧‧‧項目
364‧‧‧項目
365‧‧‧項目
366‧‧‧永久性附註
366A‧‧‧永久性附註
366B‧‧‧永久性附註
367‧‧‧項目
370‧‧‧媒體管理模組
372‧‧‧項目
373‧‧‧項目
374‧‧‧刪除重複模組
400‧‧‧系統
410A‧‧‧資料封包
410B‧‧‧封包
412‧‧‧資料區段
413A‧‧‧狀態
413B‧‧‧狀態
413C‧‧‧狀態
413D‧‧‧狀態
414A‧‧‧永久性元資料
420‧‧‧資料封包
432‧‧‧虛擬(參照)位址空間
434‧‧‧參照模組
460‧‧‧參照映射
462‧‧‧間接的項目
465‧‧‧本地的項目
472‧‧‧間接的項目
475‧‧‧本地的項目
482‧‧‧參照項目
530‧‧‧聚合層
531‧‧‧介面
532‧‧‧虛擬化的位址空間(VAS)
534‧‧‧VAS轉換模組
535‧‧‧VAS元資料
560‧‧‧VAS正向映射
563A‧‧‧狀態
563B‧‧‧狀態
563C‧‧‧狀態
610‧‧‧封包
612‧‧‧資料區段
662‧‧‧項目
663‧‧‧邏輯介面
665‧‧‧間接的項目
669‧‧‧邏輯介面
672‧‧‧項目
673‧‧‧邏輯介面
675‧‧‧間接的項目
682‧‧‧參照項目
700‧‧‧系統
710‧‧‧資料封包
712‧‧‧資料區段
714‧‧‧永久性元資料
736‧‧‧快照模組
738‧‧‧時序模組
739‧‧‧時期指示器
773A‧‧‧狀態
773B‧‧‧狀態
773C‧‧‧狀態
810A‧‧‧資料封包
812A‧‧‧資料區段
814A‧‧‧永久性元資料
862‧‧‧項目
863‧‧‧邏輯介面
863A‧‧‧邏輯介面
863B‧‧‧邏輯介面
863C‧‧‧邏輯介面
864‧‧‧項目
866‧‧‧間接的項目
882‧‧‧參照項目
900A‧‧‧系統
900F‧‧‧系統
906‧‧‧檔案系統
911A‧‧‧狀態
911B‧‧‧狀態
911C‧‧‧狀態
911D‧‧‧狀態
911E‧‧‧狀態
913A‧‧‧狀態
913C‧‧‧狀態
914‧‧‧識別符範圍
924‧‧‧LID範圍
926A-N‧‧‧檔案系統客戶
934‧‧‧參照識別符(範圍)
941A‧‧‧狀態
941B‧‧‧狀態
941C‧‧‧狀態
941D‧‧‧狀態
941E‧‧‧狀態
941F‧‧‧狀態
941G‧‧‧狀態
943A‧‧‧狀態
943B‧‧‧狀態
943C‧‧‧狀態
944‧‧‧合併策略
947A‧‧‧狀態
947B‧‧‧狀態
947C‧‧‧狀態
947D‧‧‧狀態
950A‧‧‧檔案LID
950B‧‧‧檔案LID(FID)
950C‧‧‧複製的LID(FID)
950D‧‧‧檔案識別符
951A‧‧‧映射
951C‧‧‧映射
952A‧‧‧檔案資料
952B‧‧‧檔案資料
953A‧‧‧狀態
953B‧‧‧狀態
953C‧‧‧狀態
953D‧‧‧狀態
953E‧‧‧狀態
953F‧‧‧狀態
953G‧‧‧狀態
953H‧‧‧狀態
953I‧‧‧狀態
984‧‧‧元資料
994‧‧‧元資料
1000A‧‧‧系統
1000B‧‧‧實施例
1015A‧‧‧狀態
1015B‧‧‧狀態
1015C‧‧‧狀態
1015D‧‧‧狀態
1017A‧‧‧狀態
1017B‧‧‧狀態
1017C‧‧‧狀態
1017D‧‧‧狀態
1017E‧‧‧狀態
1032‧‧‧事務位址空間
1034‧‧‧重新導向模組
1035‧‧‧原子儲存模組
1036‧‧‧事務模組
1037‧‧‧重建模組
1040A‧‧‧向量
1040B‧‧‧向量
1042A‧‧‧向量
1042B‧‧‧向量
1060‧‧‧事務映射
1062A‧‧‧結合
1062B‧‧‧結合
1064A‧‧‧連結
1064B‧‧‧連結
1066A‧‧‧永久性附註
1066B‧‧‧永久性附註
1070‧‧‧中間的映射層
1100‧‧‧方法
1120‧‧‧步驟
1130‧‧‧步驟
1140‧‧‧步驟
1200‧‧‧方法
1220‧‧‧步驟
1230‧‧‧步驟
1240‧‧‧步驟
1250‧‧‧步驟
1300‧‧‧方法
1315‧‧‧步驟
1320‧‧‧步驟
1330‧‧‧步驟
1340‧‧‧步驟
1410‧‧‧步驟
1420‧‧‧步驟
1430‧‧‧步驟
1500‧‧‧方法
1520‧‧‧步驟
1530‧‧‧步驟
1540‧‧‧步驟
1550‧‧‧步驟
1560‧‧‧步驟
1570‧‧‧步驟
1600‧‧‧方法
1610‧‧‧步驟
1620‧‧‧步驟
1630‧‧‧步驟
1640‧‧‧步驟
1650‧‧‧步驟
1700‧‧‧方法
1710‧‧‧步驟
1720‧‧‧步驟
1730‧‧‧步驟
1800‧‧‧方法
1810‧‧‧步驟
1820‧‧‧步驟
1830‧‧‧步驟
1900‧‧‧方法
1910‧‧‧步驟
1920‧‧‧步驟
1930‧‧‧步驟
2136‧‧‧中間的位址空間
A‧‧‧LID
e0‧‧‧時期指示器(時期)
e1-eN‧‧‧時期
FR1‧‧‧LID範圍
P1-P13‧‧‧儲存位址(位置)
P100-102‧‧‧儲存位址(位置)
P64‧‧‧儲存位址
P96‧‧‧儲存位址
X0‧‧‧資料區段
X1‧‧‧資料區段
Z0-3‧‧‧交易式識別符
Z6-8‧‧‧交易式識別符
圖1A是一種用於開啟到關閉的(open-to-close)一致性之系統的一實施例的方塊圖;圖1B係描繪儲存元資料的實施例;圖1C是描繪一儲存陣列的一實施例之方塊圖;圖1D係描繪一資料封包格式的一實施例; 圖1E係描繪一儲存登錄的一實施例;圖2是一種用於開啟到關閉的一致性之系統的另一實施例的方塊圖;圖3A是一種包括一儲存層之系統的一實施例的方塊圖,該儲存層係被配置以有效率地實施範圍複製(clone)、移動、合併以及其它較高階的儲存作業;圖3B係描繪範圍複製作業的實施例;圖3C係描繪範圍複製作業的另外的實施例;圖3D係描繪範圍複製作業的另外的實施例;圖3E係描繪範圍複製作業的另外的實施例;圖4A是一種用於開啟到關閉的一致性之系統的另一實施例之方塊圖;圖4B係描繪藉由一參照映射的使用所實施的範圍複製作業的實施例;圖4C係描繪藉由一參照映射的使用所實施的範圍複製作業之另外的實施例;圖4D係描繪藉由一參照映射的使用所實施的範圍複製作業之另外的實施例;圖4E係描繪藉由一參照映射的使用所實施的範圍複製作業之另外的實施例;圖5A是一種包括一聚合層之系統的一實施例的方塊圖;圖5B係描繪藉由一聚合層的使用所實施的範圍複製作業的實施例;圖6係描繪刪除重複(deduplication)作業的實施例;圖7是描繪一種包括一被配置以有效率地實施快照(snapshot)作業的儲存層之系統的一實施例之方塊圖; 圖8A-E係描繪範圍移動作業的實施例;圖9A是一種包括一被配置以實施有效率的檔案管理作業的儲存層之系統的方塊圖;圖9B係描繪一被配置以實施mmap檢查點的儲存層的一實施例;圖9C係描繪藉由一儲存層所實施的範圍複製及範圍合併作業的實施例;圖9D係描繪範圍複製及範圍合併作業的另外的實施例;圖9E係描繪範圍複製及範圍合併作業的另外的實施例;圖9F是一種包括一被配置以實施有效率的開啟到關閉的檔案一致性的儲存層之系統的一實施例之方塊圖;圖9G係描繪關閉到開啟的檔案一致性的另外的實施例;圖10A係描繪一種包括一被配置以實施原子儲存作業的儲存層之系統的一實施例;圖10B係描繪原子儲存作業的實施例;圖11是一種用於管理在一非揮發性儲存媒體上的具有一上下文格式的資料儲存的一邏輯介面之方法的一實施例的流程圖;圖12是一種用於管理上下文資料的一邏輯介面之方法的一實施例的流程圖;圖13是一種用於管理上下文資料的一邏輯介面之方法的另一實施例的流程圖;圖14是一種用於管理範圍合併作業之方法的一實施例的流程圖;圖15是一種用於管理範圍複製作業之方法的另一實施例的流程圖; 圖16是一種用於管理範圍合併作業之方法的另一實施例的流程圖;圖17是一種原子儲存作業之方法的一實施例的流程圖;圖18是一種用於原子儲存作業之方法的另一實施例的流程圖;以及圖19是一種用於原子儲存作業之方法的另一實施例的流程圖。
圖1A是一種計算系統100的一實施例的方塊圖,其係包括一被配置以提供儲存服務給一或多個儲存客戶106的儲存層130。該儲存層130可被配置以提供開啟到關閉的檔案服務,即如同在此更詳細揭露者。該計算系統100可包括任何適當的計算裝置,其包含但不限於一伺服器、桌上型電腦、膝上型電腦、內嵌式系統、行動裝置、及/或類似者。在某些實施例中,該計算系統100可包含多個計算裝置,例如一叢集的伺服器計算裝置。該計算系統100可包括處理資源101、揮發性記憶體資源102(例如,隨機存取記憶體(RAM))、非揮發性儲存資源103、以及一通訊介面104。該處理資源101可包含但不限於一般用途的中央處理單元(CPU)、特殊應用積體電路(ASIC)、以及可程式化的邏輯元件,例如現場可程式化的閘陣列(FPGA)、可程式化的邏輯陣列(PLG)、與類似者。該非揮發性儲存資源103可包括一非暫態的機器可讀取的儲存媒體,例如一磁性硬碟、固態儲存媒體、光學儲存媒體、及/或類似者。該通訊介面104可被配置以將該計算系統100通訊地耦接至一網路105。該網路105可包括任何適當的通訊網路,其包含但不限於一傳輸控制協定/網際網路協定(TCP/IP)網路、一本地區域網路(LAN)、一廣域網路(WAN)、一虛擬私人網路(VPN)、一儲存區域網路(SAN)、一公眾交換電話網路(PSTN)、網際網路、及/或類似者。
該計算系統100可包括一儲存層130,該儲存層130可被配置以提供儲存服務給一或多個儲存客戶106。該些儲存客戶106可包含但不限於作業系統(包含祼機(bare metal)作業系統、來賓(guest)作業系統、虛擬機器、虛擬化環境、與類似者)、檔案系統、資料庫系統、遠端的儲存客戶(例如,透過該網路105而通訊地耦接至該計算系統100及/或儲存層130的儲存客戶)、及/或類似者。
該儲存層130(及/或其模組)可以用軟體、硬體或是其之組合來加以實施。在某些實施例中,該儲存層130的部分係被體現為例如是電腦程式碼之可執行的指令,其可被儲存在一例如是非揮發性儲存資源103之永久性非暫態的儲存媒體上。該些指令及/或電腦程式碼可被配置以藉由該處理資源101來加以執行。替代或額外的是,該儲存層130的部分可被體現為機器構件,例如是一般用途及/或特殊用途的構件、可程式化的硬體、FPGA、ASIC、硬體控制器、、儲存控制器、及/或類似者。
該儲存層130可被配置以在一儲存媒體140上執行儲存作業。該儲存媒體140可包括任何能夠永久地儲存資料的儲存媒體。如同在此所用的,"永久性(persistent)"資料儲存係指將資訊儲存在一永久性的非揮發性儲存媒體上。該儲存媒體140可包含非揮發性儲存媒體,例如是在一或多個固態儲存裝置或硬碟(SSD)中的固態儲存媒體、硬碟機(例如,整合式電子驅動介面(IDE)硬碟、小型電腦系統介面(SCSI)硬碟、串列連接SCSI(SAS)硬碟、串列AT連接(SATA)硬碟、等等)、磁帶機、可寫入的光碟機(例如、CD光碟機、DVD光碟機、藍光光碟機、等等)、及/或類似者。
在某些實施例中,該儲存媒體140係包括非揮發性固態記憶 體,其可包含但不限於NAND快閃記憶體、NOR快閃記憶體、奈米RAM(NRAM)、磁阻RAM(MRAM)、相變RAM(PRAM)、賽道(Racetrack)記憶體、憶阻(Memristor)記憶體、奈米晶體線為基礎的記憶體、矽氧化物為基礎的次10奈米製程記憶體、石墨烯記憶體、矽氧化氮氧化矽(SONOS)電阻性隨機存取記憶體(RRAM)、可程式化的金屬化單元(PMC)、導電橋接RAM(CBRAM)、及/或類似者。儘管該儲存媒體140的特定實施例係被揭示在此,但是此揭露內容的教示可應用至任何適當形式的記憶體,其包含非揮發性及揮發性兩種形式。於是,儘管該儲存層130的特定實施例是在非揮發性固態儲存裝置140的背景下加以揭示,但是該儲存層130可以和其它儲存裝置及/或儲存媒體來加以利用。
在某些實施例中,該儲存媒體140係包含揮發性記憶體,其可包含但不限於RAM、動態RAM(DRAM)、靜態RAM(SRAM)、同步動態RAM(SDRAM)、等等。該儲存媒體140可對應於該處理資源101的記憶體,例如一CPU快取(例如,L1、L2、L3快取、等等)、圖形記憶體、及/或類似者。在某些實施例中,該儲存媒體140係藉由一互連127的使用來通訊地耦接至該儲存層130。該互連127可包含但不限於週邊元件互連(PCI)、PCIexpress(PCI-e)、串列進階技術連接(串列ATA或SATA)、平行ATA(PATA)、小型電腦系統介面(SCSI)、IEEE 1394(EireWire)、光纖通道、萬用串列匯流排(USB)、及/或類似者。或者是,該儲存媒體140可以是一透過該網路105(及/或其它通訊介面,例如一儲存區域網路(SAN)、一虛擬的儲存區域網路(VSAN)、及/或類似者)來通訊地耦接至該儲存層130之遠端的儲存裝置。因此,該互連127可包括一遠端的匯流排,例如一PCE-e匯流排、一網路連線 (例如,Infiniband)、一儲存網路、光纖通道協定(FCP)網路、HyperSCSI、及/或類似者。
該儲存層130可被配置以尤其是藉由一儲存控制器139的使用來管理在該儲存媒體140上的儲存作業。該儲存控制器139可包括軟體及/或硬體構件,其包含但不限於一或多個操作在該計算系統100上的驅動程式及/或其它的軟體模組,例如是儲存驅動程式、I/O驅動程式、濾波器驅動程式、及/或類似者;硬體構件,例如是硬體控制器、通訊介面、及/或類似者;等等。該儲存媒體140可被體現在一儲存裝置141上。該儲存層130的部分(例如,儲存控制器139)可被實施為該儲存裝置141的硬體及/或軟體構件(例如,韌體)。
該儲存控制器139可被配置以在該儲存媒體140之特定的儲存位置實施儲存作業。如同在此所用的,一儲存位置係指一種能夠永久地儲存資料的儲存資源(例如,一儲存媒體及/或裝置)之一儲存單元;儲存位置可包含但不限於頁、群組的頁(例如,邏輯頁及/或在一邏輯頁內之偏移量)、儲存分區(division)(例如,實體抹除區塊、邏輯抹除區塊、等等)、區段、在一磁碟片上的位置,電池供電的記憶體位置、及/或類似者。該些儲存位置可以是在該儲存媒體140的一儲存位址空間144內可定址的。儲存位址可以對應於實體位址、媒體位址、後端位址、位址偏移量、及/或類似者。儲存位址可以對應於任何適當的儲存位址空間144、儲存定址設計、及/或儲存位置的配置。
該儲存層130可包括一介面131,而儲存客戶106可以透過該介面131來利用由該儲存層130所提供的儲存服務。該儲存介面131可包 含一區塊裝置介面、一虛擬化的儲存介面、一或多個虛擬的儲存單元(VSU)、一物件儲存介面、一資料庫儲存介面、及/或其它適當的介面及/或一應用程式介面(API)中的一或多個。
該儲存層130可以針對於透過一前端儲存介面來參照儲存資源以做準備。如同在此所用的,一"前端儲存介面"係指一介面及/或命名空間(namespace),而儲存客戶106可以透過其來參照到該儲存層130的儲存資源。一儲存介面可以對應於一邏輯位址空間132。該邏輯位址空間132可包括一群組、組、集合、範圍、及/或範疇的識別符(identifier)。如同在此所用的,一"識別符"或"邏輯識別符"(LID)係指一用於參照一來源資源的識別符;LID可包含但不限於名稱(例如,檔案名稱、識別名稱、及/或類似者)、資料識別符、參考、連結、LID、前端識別符、邏輯位址、邏輯區塊位址(LBA)、邏輯單元號碼(LUN)位址、虛擬單元號碼(VUN)位址、虛擬儲存位址、儲存位址、實體位址、媒體位址、後端位址、及/或類似者。
該邏輯位址空間132的邏輯容量可以對應於該邏輯位址空間132中的LID數目及/或藉由該些LID所參照的儲存資源的尺寸及/或精細度。在某些實施例中,該邏輯位址空間132可以是"精簡配置的"。如同在此所用的,一精簡配置的邏輯位址空間132係指一邏輯位址空間132具有一邏輯容量是超出基礎的儲存資源的實體儲存容量(例如,超出該儲存媒體140的儲存容量)。在一實施例中,該儲存層130係被配置以提供一64位元的邏輯位址空間132(例如,一包括2^26唯一的LID的邏輯位址空間),此可能超過該儲存媒體140的實體儲存容量。該大的精簡配置的邏輯位址空間132可以容許儲存客戶106能夠有效率地配置及/或參照連續範圍的LID,此係 降低命名衝突的可能性。
該儲存層130的轉換模組134可被配置以將該邏輯位址空間132的LID映射到儲存資源(例如,儲存在該儲存媒體140的儲存位址空間144內的資料)。該邏輯位址空間132可以是與該後端儲存資源(例如,該儲存媒體140)無關的;於是,在該邏輯位址空間132的LID以及該儲存位址空間144的儲存位址之間可以是沒有設定或預設的映射。在某些實施例中,該邏輯位址空間132是稀疏的、精簡配置的、及/或過度配置的,使得該邏輯位址空間132的尺寸與該儲存媒體140的儲存位址空間144不同。
該儲存層130可被配置以維持有關在該儲存媒體140上執行的儲存作業之儲存元資料135。該儲存元資料135可包含但不限於一包括在該邏輯位址空間132的LID以及在該儲存位址空間144內的儲存位址之間的任意的映射之正向映射(forward map)、一有關於該儲存媒體140的儲存位置的內容之反向映射(reverse map)、有效性點陣圖(bitmap)、可靠度測試及/或狀態元資料、狀態資訊(例如,錯誤率、退役(retirement)狀態、等等)、快取元資料、及/或類似者。該儲存元資料135的部分可以是維持在該計算系統100的揮發性記憶體資源102之內。替代或額外的是,該儲存元資料135的部分可被儲存在非揮發性儲存資源103及/或儲存媒體140上。
圖1B係描繪在該邏輯位址空間132的LID以及在該儲存位址空間144內的後端識別符(例如,儲存位址)之間的任意的映射150的一實施例。該任意的映射150可以維持在該儲存元資料135的一或多個資料結構中。如同在圖1B中所繪,該轉換模組134可被配置以映射任何儲存資源識別符(任何LID)至任何後端儲存位置。如同進一步所描繪的,該邏輯位址空 間132的尺寸可以被製作成與該基礎的儲存位址空間144不同。在圖1B的實施例中,該邏輯位址空間132可以是精簡配置的,並且就此而論,其可包括一比在該儲存位址空間144中的儲存位址的範圍大的LID範圍。
如同以上所揭露的,儲存客戶106可以透過該邏輯位址空間132的LID來參照到儲存資源。於是,該邏輯位址空間132可以對應於該儲存資源的一邏輯介面152,並且在該儲存位址空間144內之特定的儲存位址的映射可以對應於該儲存資源的一後端介面154。
該儲存層130可被配置以將該邏輯介面152以及後端介面154之間的任意的映射150維持在一正向映射160中。該正向映射160可包括任何適當的資料結構,其包含但不限於一索引、一映射、一雜湊映射、一雜湊表、一樹狀結構、一範圍編碼的樹狀結構、一b樹狀結構、及/或類似者。該正向映射160可包括對應於已經被配置用於參照儲存在該儲存媒體140上的資料之LID的項目162。該正向映射160的項目162可以將LID 164A-D關連到該儲存位址空間144內之個別的儲存位址166A-D。該正向映射160可以是項目稀少的,並且就此而論,可以省略對應於目前並未被一儲存客戶106配置且/或目前並未使用來參照儲存在該儲存媒體140上的有效資料之LID的項目。在某些實施例中,該正向映射160係包括一範圍編碼的資料結構,使得該些項目162中的一或多個可以對應於複數個LID(例如,一範圍、範疇、及/或組的LID)。在圖1B的實施例中,該正向映射160係包含一項目162是對應於一被映射到一對應的範圍的儲存位址166A之LID 164A的範圍。該些項目162可以是藉由LID加以索引的。在圖1B的實施例中,該些項目162係被配置成為一種藉由個別的連結之樹狀資料結構。 本揭露內容並非受限於此方面,而是可以適配於使用任何適當的資料結構及/或索引機構。
參照圖1C,在某些實施例中,該儲存媒體140可包括一包括複數個固態儲存元件116A-Y的固態儲存陣列115。如同在此所用的,一固態儲存陣列(或是儲存陣列)115係指一組兩個或多個獨立的行118。一行118可包括一或多個尤其是利用該互連127來平行地通訊耦接至該儲存層130的固態儲存元件116A-Y。該陣列115的列117可包括該些個別的行118的實體儲存單元(固態儲存元件116A-Y)。如同在此所用的,一固態儲存元件116A-Y係包含但不限於被體現為一封裝、晶片、晶粒、平面、印刷電路板、及/或類似者的固態儲存資源。構成該陣列115的固態儲存元件116A-Y可以是能夠獨立的作業。於是,該些固態儲存元件116A的一第一個可以是能夠執行一第一儲存作業,同時一第二固態儲存元件116B係執行一不同的儲存作業。例如,該固態儲存元件116A可被配置以在一第一實體位址讀取資料,而另一固態儲存元件116B係在一不同的實體位址讀取資料。
一固態儲存陣列115亦可被稱為一邏輯儲存元件(LSE)。如同在此更詳細揭露的,該固態儲存陣列115可包括邏輯儲存單元(列117)。如同在此所用的,一"邏輯儲存單元"或列117係指兩個或多個實體儲存單元的組合,每個實體儲存單元是在該陣列115的一個別的行118上。一邏輯抹除區塊係指一組兩個或多個實體抹除區塊,一邏輯頁係指一組兩個或多個頁、等等。在某些實施例中,一邏輯抹除區塊可包括在個別的邏輯儲存元件115及/或庫(bank)之內的抹除區塊。或者是,一邏輯抹除區塊可包括在複數個不同的陣列115之內的抹除區塊,且/或可跨越多個庫的固態儲存元件。
參照回圖1A,該儲存層130可進一步包括一登錄儲存模組136,該登錄儲存模組136係被配置以一登錄結構的儲存組態設定(例如,以一儲存登錄)來儲存資料在該儲存媒體140上。如同在此所用的,一"儲存登錄"或是"登錄結構"係指資料在該儲存媒體140的儲存位址空間144內之一種排序的配置。在該儲存登錄中的資料可包括且/或相關永久性元資料。於是,該儲存層130可被配置以一種上下文(contextual)自我描述的格式來儲存資料。如同在此所用的,一種上下文或是自我描述的格式係指其中資料係和永久性元資料相關地被儲存所用的一種資料格式。在某些實施例中,該永久性元資料可被配置以識別該資料,並且就此而論,其可包括且/或參照到該資料的邏輯介面(例如,其可包括和該資料相關的LID)。該永久性元資料可包含其它資訊,其包含但不限於有關該資料的擁有者的資訊、存取控制、資料類型,該資料的相對位置或偏移、有關和該資料相關的儲存作業(例如,原子儲存作業、事務、及/或類似者)的資訊、登錄順序資訊、資料儲存參數(例如,壓縮演算法、加密、等等)、及/或類似者。
圖1D係描繪一種上下文資料格式的一實施例。圖1D的封包格式110係包括一資料區段112以及永久性元資料114。該資料區段112可以具有任意的長度及/或尺寸。該永久性元資料114可以被體現為該資料封包110的一或多個標頭(header)欄位。如同以上所揭露的,該永久性元資料114可包括該資料區段112的邏輯介面,並且就此而論,其可包含和該資料區段112相關的LID。儘管圖1D係描繪一封包格式110,但本揭露內容並非受限於此方面,並且可以用其它方式來將資料(例如,資料區段112)與上下文元資料關連,其包含但不限於一在該儲存媒體140上的索引、一儲 存分區索引、及/或類似者。資料封包110可以是和順序資訊113相關的。該順序資訊可被用來決定該些資料封包在該儲存登錄之內的相對的順序。在某些實施例中,資料封包係被依序地附加在該儲存媒體140的儲存分區之內。該些儲存分區可以對應於抹除區塊、邏輯抹除區塊、或類似者。每個儲存分區可以是能夠儲存大量的資料封包110。該些資料封包110在一儲存分區內之相對的位置可以決定該些封包在該儲存登錄內的順序。該些儲存分區的順序尤其可藉由儲存分區順序資訊113來加以決定。儲存分區可以在該儲存分區被初始化以供使用(例如,被抹除)、被程式化、被關閉、或類似者的時間點被指定個別的順序資訊113。該儲存分區的順序資訊113可以決定儲存分區在該儲存位址空間144內之一排序的順序。於是,一資料封包110在該儲存登錄內之相對的順序可藉由:a)該資料封包110在一特定的儲存分區內之相對的位置以及b)該儲存分區在該儲存位址空間144中相對於其它儲存分區的順序來加以決定。
在某些實施例中,該儲存層130可被配置以管理一種非對稱的一次寫入的(write-once)儲存媒體140,例如一固態儲存媒體、快閃儲存媒體、或類似者。如同在此所用的,一種"一次寫入的"儲存媒體係指一種每次新的資料被寫入或是被程式化到其上時都被再次初始化(例如,被抹除)的儲存媒體。如同在此所用的,一種"非對稱的"儲存媒體係指一種對於不同類型的儲存作業具有不同的延遲之儲存媒體。在某些實施例中,例如,讀取作業可以是比寫入/程式化作業快的,並且寫入/程式化作業可以是遠快於抹除作業(例如,讀取該媒體可以是比抹除快上數百倍,並且比程式化該儲存媒體快上數十倍)。該儲存媒體140可被劃分成為儲存分區,該些儲存分區可 以一群組(例如,抹除區塊)來加以抹除。就此而論,"原地(in-place)"修改單一資料區段可能會需要抹除包括該資料的整個抹除區塊,並且重新寫入該經修改的資料以及原始不變的資料至該抹除區塊。此可能會導致效率差的"寫入放大",其可能會過度地磨耗該媒體。因此,在某些實施例中,該儲存層130可被配置以"非原地(out-of-place)"寫入資料。如同在此所用的,"非原地"寫入資料係指在不同的儲存位置更新及/或覆寫資料,而不是"原地"覆寫該資料(例如,覆寫該資料之原始的實體儲存位置)。非原地更新及/或覆寫資料可以避免寫入放大,因為在具有待被修改的該資料的抹除區塊上之現有有效的資料並不需要被抹除及重新複製。再者,非原地寫入資料可以從許多儲存作業的延遲路徑除去抹除,使得抹除延遲不是寫入作業的"關鍵(critical)路徑"的部分。
該儲存層130可被配置以尤其是藉由該登錄儲存模組136的使用來執行非原地的儲存作業。該登錄儲存模組136可被配置以用一種維持該儲存層130所執行的儲存作業的相對的順序之方式來將資料附加在該儲存位址空間144內的一目前的附加點,此係在該儲存媒體140上形成一"儲存登錄"。圖1E係描繪被執行在該儲存媒體140的儲存位址空間144內之僅附加的儲存作業的一實施例。如同以上所揭露的,該儲存位址空間144係包括複數個儲存分區170A-N(例如,抹除區塊、邏輯抹除區塊、或類似者),該些儲存分區170A-N的每一個可被初始化(例如,被抹除)以用於儲存資料。如同在此所揭露的,該些儲存分區170A-N可包括個別的儲存位置,其可以對應於頁、邏輯頁、及/或類似者。該些儲存位置可被指定個別的儲存位址(例如,儲存位址0至儲存位址N)。
該登錄儲存模組136可被配置以從在該實體位址空間144之內的一附加點180依序地儲存資料。在圖1E的實施例中,資料可以被附加在儲存分區170A的儲存位置182內之附加點180,並且當該儲存位置182被填入時,該附加點180可以前進181到下一個可供利用的儲存位置。如同在此所用的,一"可供利用的"儲存位置係指一儲存位置已經被初始化而且尚未被程式化(例如,已經被抹除)。如同以上所揭露的,某些類型的儲存媒體只能夠在抹除之後被可靠地程式化。於是,一可供利用的儲存位置可以是指在一儲存分區170A-N內之一儲存於一被初始化(或是被抹除)的狀態之儲存位置。
在圖1E的實施例中,該邏輯抹除區塊170B可能是無法利用於儲存,尤其是因為並非處於一被抹除的狀態(例如,其係包括有效的資料)、由於高的錯誤率而停止服務、或類似者。因此,在填入該儲存位置182之後,該登錄儲存模組136可以跳過該無法利用的儲存分區170B,並且使得該附加點180前進至下一個可供利用的儲存分區170C。該登錄儲存模組136可被配置以繼續附加資料至儲存位置183-185,如同以上所揭露的,該附加點180係在該時點繼續於下一個可供利用的儲存分區170A-N。
在儲存資料於該儲存位址空間144內之"最後的"儲存位置(例如,儲存分區170N的儲存位置N189)之後,該登錄儲存模組136可以藉由繞回到第一儲存分區170A(或是若儲存分區170A是無法利用的,則為下一個可供利用的儲存分區)來前進該附加點180。於是,該登錄儲存模組136可以將該儲存位址空間144視為一迴圈或是循環。
如同以上所揭露的,在該儲存位址空間144內依序地附加資 料可以在該儲存媒體140上產生一儲存登錄。在圖1E的實施例中,該儲存登錄可包括藉由在該儲存位址空間144內從該附加點180依序地儲存資料封包(及/或其它資料結構)所執行的儲存作業之排序的順序。如同以上所揭露的,該僅附加的儲存格式可被用來非原地修改及/或覆寫資料。執行非原地的儲存作業可以避免寫入放大,因為在該些包括正被修改及/或覆寫的資料之儲存分區170A-N上之現有有效的資料並不需要被抹除及/或被重新複製。再者,非原地寫入資料可以從許多儲存作業的延遲路徑除去抹除(該抹除延遲不再是一寫入作業的"關鍵路徑"的部分)。
在圖1E的實施例中,一對應於LID A的資料區段X0可被儲存在儲存位置191。該資料區段X0可以如上所揭露地,以該自我描述的封包格式110來加以儲存。該封包110的資料區段112可包括該資料區段X0,並且該永久性元資料114可包括和該資料區段相關的LID(例如,該LID A)。一儲存客戶106可以請求一作業來修改及/或覆寫和該LID A相關的資料,其可包括以資料區段X1來取代該資料區段X0。該儲存層130可以藉由在該儲存媒體144上將一包括該資料區段X1之新的封包110附加在一不同的儲存位置193來非原地的執行此作業,而不是在儲存位置191原地的修改現有的資料封包110。該儲存作業可進一步包括更新該儲存元資料135以將該LID A關連到儲存位置193的儲存位址,且/或使得在儲存位置191的廢棄的資料X0無效。如同在圖1E中所繪,更新該儲存元資料135可包括更新該正向映射160的一項目以將該LID A 164E關連到該經修改的資料區段X1的儲存位址。
執行非原地的儲存作業(例如,將資料附加至該儲存登錄)可 能會導致廢棄或無效的資料留在該儲存媒體140上(例如,已經非原地被抹除、修改及/或覆寫的資料)。如同在圖1E中所繪,相對於在儲存位置191原地的覆寫及/或取代該資料區段X0,藉由將該資料區段X1附加至該儲存登錄來修改LID A的資料係導致該資料區段X0之廢棄的版本保持在該儲存媒體140上。該資料區段X0之廢棄的版本可能不會立即從該儲存媒體140加以移除(例如,被抹除),因為如同以上所揭露的,抹除該資料區段X0可能會牽涉到抹除一整個儲存分區170A及/或將在該儲存分區170A上之有效的資料重新安置,此係為一耗時的作業並且可能會導致寫入放大。類似地,不再使用(例如,被刪除或是遭受到一TRIM作業)的資料可能不會立即加以移除。因此,隨著時間過去,該儲存媒體140可能會累積一大量的"無效的"資料。
該儲存層130可以藉由該儲存元資料135(例如,該正向映射160)的使用來識別無效的資料,例如在儲存位置191的資料區段X0。該儲存層130可以判斷出在該正向映射160中並不和有效的識別符(LID)相關的儲存位置係包括並不需要被維持在該儲存媒體140上的資料。替代或額外的是,該儲存層130可以維持其它的儲存元資料135,例如是有效性點陣圖、反向映射、及/或類似者,以有效率地識別已經被刪除、已經被TRIM、廢棄的、及/或者是無效的資料。
該儲存層130可被配置以回收被無效的資料所佔用的儲存資源。該儲存層130可以進一步被配置以執行其它的媒體管理作業,其包含但不限於更新儲存在該儲存媒體140上的資料(以避免由於資料劣化、寫入干擾、讀取干擾、及/或類似者所造成的錯誤狀況)、監視媒體可靠度狀況、 及/或類似者。如同在此所用的,回收一例如是一儲存分區170A-N的儲存資源係指抹除該儲存分區170A-N,因而新的資料可被儲存/程式化於其上。回收一儲存分區170A-N可包括重新安置在該儲存分區170A-N上之有效的資料至一新的儲存位置。該儲存層130可以根據一或多個因素來識別出用於回收的儲存分區170A-N,該因素可包含但不限於在該儲存分區170A-N中之無效的資料量、在該儲存分區170A-N中之有效的資料量、磨損程度(例如,程式化/抹除循環的次數)、距離該儲存分區170A-N之前被程式化或是被更新的時間、等等。
該儲存層130可被配置以藉由在該儲存媒體140上的儲存登錄之內容的使用來重建包含該正向映射160的儲存元資料135。在圖1E的實施例中,和LID A相關的資料之目前的版本可以根據該資料封包110分別在儲存位置191及193之相對的登錄順序來加以判斷出。由於在儲存位置193的資料封包在該儲存登錄中是被排序在儲存位置191的資料封包之後,因此該儲存層130可以判斷出儲存位置193係包括對應於LID A的資料之最近且最新的版本。該儲存層130可以重建該正向映射160以將該LID A關連到在儲存位置193的資料封包(而不是在儲存位置191之廢棄的資料)。
圖2係描繪一種包括一儲存層130之系統200的另一實施例。該儲存媒體140可包括複數個獨立的庫119A-N,該些庫119A-N的每一個可包括一或多個儲存陣列115A-N。每個獨立的庫119A-N可經由該互連127來耦接至該儲存控制器139。
該儲存控制器139可包括一被配置以經由一匯流排127來從該儲存層130接收儲存請求的儲存請求接收器模組231。該儲存請求接收器 231可以進一步被配置以傳輸資料往返於該儲存層130及/或儲存客戶106。於是,該儲存請求接收器模組231可包括一或多個直接記憶體存取(DMA)模組、遠端的DMA模組、匯流排控制器、橋接器(bridge)、緩衝器、等等。
該儲存控制器139可包括一被配置以響應於經由該請求模組231接收到的請求來在該儲存媒體140上儲存資料之寫入模組240。該些儲存請求可包括及/或參照到相關於該請求的資料的邏輯介面。該寫入模組240可被配置以用一種自我描述的儲存登錄來儲存該資料,其如同以上所揭露的可包括在該儲存媒體140的儲存位址空間144內依序地附加資料封包110。該些資料封包110可包括及/或參照到該資料的邏輯介面(例如,其可包括和該資料相關的LID)。該寫入模組240可包括一被配置以處理用於儲存的資料之寫入處理模組242。處理用於儲存的資料可包括下列中的一或多個:a)壓縮處理、b)加密處理、c)將資料封入個別的資料封包110(及/或其它容器)內、d)執行錯誤校正碼(ECC)處理、等等。該寫入緩衝器244可被配置以緩衝用於儲存在該儲存媒體140上的資料。在某些實施例中,該寫入緩衝器244可包括一或多個被配置以同步化該儲存控制器139的一時脈域與該儲存媒體140(及/或互連127)的一時脈域之同步緩衝器。
該登錄儲存模組136可被配置以選擇用於資料儲存作業的儲存位置,並且可以提供定址及/或控制資訊至該些獨立的庫119A-N的儲存陣列115A-N。如同在此所揭露的,該登錄儲存模組136可被配置以在該儲存媒體140的儲存位址空間144內,用一種登錄格式依序地附加資料。
用以寫入資料的儲存作業可包括:a)將一或多個資料封包附加至該儲存媒體140上的儲存登錄以及b)更新儲存元資料135以將該資料的 LID關連到該一或多個資料封包的儲存位址。在某些實施例中,該儲存元資料135可被維持在該儲存控制器139的記憶體資源上(例如,在構成該儲存媒體140的儲存裝置141之專用的揮發性記憶體資源上)。替代或額外的是,該儲存元資料135的部分可被維持在該儲存層130內(例如,在圖1A的計算裝置110的一揮發性記憶體112上)。在某些實施例中,該儲存元資料135可藉由該儲存層130而被維持在一揮發性記憶體中,並且可以週期性地被儲存在該儲存媒體140上。
該儲存控制器139可進一步包括一被配置以響應於經由該儲存請求接收器模組231接收到的請求來從在該儲存媒體140上的儲存登錄讀取資料之資料讀取模組241。該些請求可包括該所請求的資料的LID、該所請求的資料的一儲存位址、及/或類似者。該讀取模組241可被配置以:a)尤其是藉由該正向映射160的使用來決定包含該所請求的資料的資料封包110的儲存位址、b)從該被決定出的儲存位址讀取在該儲存媒體140上的資料封包110、以及c)處理資料以供該請求實體使用。從該儲存媒體140讀取出的資料可以經由該讀取緩衝器245串流到該讀取模組241中。該讀取緩衝器245可包括一或多個用於如上所述的時脈域同步之讀取同步緩衝器。該讀取處理模組243可被配置以處理從該儲存媒體144讀取出的資料,其可包含但不限於下列中的一或多個:a)解壓縮處理、b)解密處理、c)從一或多個資料封包110(及/或其它容器)抽取資料、d)執行ECC處理、等等。
該儲存控制器139可進一步包括一被配置以選擇性地指定路由給該寫入模組240及/或讀取模組241的資料及/或命令以往返於特定的獨立的庫119A-N之庫控制器252。在某些實施例中,該儲存控制器139係 被配置以在該些獨立的庫119A-N之間交錯儲存作業。該儲存控制器139例如可以從庫119A的儲存陣列115A讀入該讀取模組241,同時來自該寫入模組240的資料正被程式化到庫119B的儲存陣列115B。多庫的儲存作業的另外的實施例係被揭示在2006年12月12日申請,由David Flynn等人發明的名稱為"用於利用庫交錯來管理用於固態儲存的命令之裝置、系統及方法"之美國專利申請案序號11/952,095中,該申請案係藉此被納入作為參考。
該寫入處理模組242可被配置以將資料封包110編碼成為ECC碼字。如同在此所用的,一ECC碼字係參照到資料以及對應的錯誤偵測及/或校正資訊。該寫入處理模組242可被配置以實施任何適當的ECC演算法且/或產生具有任何適當類型的ECC碼字,其可包含但不限於資料區段以及對應的ECC症候(syndrome)、ECC符號、ECC區塊(chunk)、及/或其它建構及/或未建構的ECC資訊。ECC碼字可包括任何適當的錯誤校正編碼,其包含但不限於塊ECC編碼、摺積(convolutional)ECC編碼、低密度的同位檢查(LDPC)編碼、加拉格爾(Gallager)編碼、里德所羅門(Reed-Solomon)編碼、漢明(Hamming)碼、多維的同位編碼、循環錯誤校正碼、BCH碼、及/或類似者。該寫入處理模組242可被配置以產生具有一預設的尺寸的ECC碼字。於是,單一封包可被編碼成為複數個不同的ECC碼字,且/或單一ECC碼字可包括兩個或多個封包的部分。或者是,該寫入處理模組242可被配置以產生任意尺寸的ECC碼字。錯誤校正碼處理的另外的實施例係被揭示在2013年3月14日申請,由Jeremy Eillingim等人發明的名稱為"用於適應性錯誤校正編碼之系統及方法"的美國專利申請案序號13/830,652中,該專利申請案係藉此被納入作為參考。
在某些實施例中,該儲存層130係利用該邏輯位址空間132以有效率地實施高階的儲存作業。該儲存層130可被配置以實施"複製(clone)"或是"邏輯拷貝(copy)"作業。如同在此所用的,一"複製"或是"邏輯拷貝"係指有效率地拷貝或重製藉由該儲存層130所管理的資料之作業。一複製作業可包括產生一組對應於相同的資料之"複製的"LID,以作為一組"原始的"LID。因此,一複製作業可包括利用兩個(或更多個)不同的邏輯介面(例如,不同組的LID)來參照到相同組的儲存位置。因此,一複製作業可以修改一或多個儲存在該儲存媒體140上的資料封包110的邏輯介面。一"邏輯移動"可以是指一修改藉由該儲存層130所管理的資料的邏輯介面之作業。一邏輯移動作業可包括改變被用來參照到儲存在該儲存媒體140上的資料的LID。一"合併"作業可包括合併該邏輯位址空間132之不同的部分。如同在此更詳細揭露的,複製及/或移動作業可被用來有效率地實施較高階的儲存作業,例如刪除重複、快照、邏輯拷貝、原子作業、事務(transaction)、及/或類似者。
參照圖3A,該儲存層130可包括一邏輯介面管理模組334,該邏輯介面管理模組334係被配置以管理有關藉由該儲存層130所管理的資料之邏輯介面作業,例如是複製作業、移動作業、合併作業、等等。複製LID可包括修改儲存在該儲存媒體140中的資料的邏輯介面,以便於尤其是容許該資料能夠藉由兩個或多個不同組的LID的使用來加以參照。於是,產生一複製可包括:a)在該邏輯位址空間132(或是其之專用的部分)中配置一組LID、以及b)尤其是藉由該儲存元資料135的使用來將該些配置的LID關連到相同的儲存位置以作為一"原始"組的LID。因此,產生一複製可包括 將一或多個項目加到一正向映射160,其係被配置以將該新組的複製的LID關連到一特定組的儲存位置。
該邏輯介面管理模組334可被配置以根據一複製同步策略來實施複製作業。一複製同步策略可被用來決定相關於複數個複製或拷貝的一第一個所執行的作業是如何被傳播到其它的複製或拷貝。例如,複製可以相關配置作業來加以同步化,使得一項擴展該些複製中之一的請求係包括擴展其它的複製及/或拷貝。如同在此所用的,擴展一檔案(或是其它資料區段)係指增加該檔案的一尺寸、範圍及/或範疇,其可包含增加一或多個邏輯識別符至該複製、修改被配置給該複製的邏輯識別符中的一或多個、及/或類似者。該複製同步策略可包括一合併策略,此尤其可決定當該些複製在一合併及/或合攏(fold)作業中加以組合時,在複製之間的差異要如何管理(在以下將用額外的細節來加以揭露)。
圖3A係描繪一藉由該儲存層130所實施的範圍複製作業的一實施例。圖3A的範圍複製作業可以響應於來自一儲存客戶106的一請求來加以實施。在某些實施例中,該儲存層130的介面131可被配置以提供用於執行複製作業的介面及/或API。替代或額外的是,該範圍複製作業可加以執行以作為一例如是原子作業、事務、快照、邏輯拷貝、檔案管理作業、及/或類似者的較高階的作業的部分。
如同在圖3A中所繪,該儲存層130的正向映射160係包括一被配置以將該些LID 1024-2048結合到媒體儲存位置3453-4477之項目362。其它項目係從圖3A加以省略,以避免模糊所描繪的實施例的細節。如同在此所揭露的,該項目362以及其結合可以定義一邏輯介面311A,儲 存客戶106可以透過該邏輯介面311A來參照到對應的資料(例如,資料區段312);儲存客戶106可以透過該儲存層130,藉由該些LID 1024-2048的使用來存取及/或參照到該資料區段312(及/或其部分)。於是,該些LID 1024-2048特別是定義該資料區段312的邏輯介面311A。
如同在此所揭露的,該儲存層130可被配置以用一種上下文格式(例如,封包格式110)來將資料儲存在一儲存媒體140上。在圖3A的實施例中,在儲存位置3453-4477的資料封包310係包括一資料區段312。該資料封包310進一步包含永久性元資料314,該永久性元資料314係指出該資料區段312的邏輯介面(例如,將該資料區段312關連到LID 1024-2048)。如同以上所揭露的,儲存和描述的永久性元資料相關的資料可以使得該儲存層130能夠從該儲存登錄的內容重建該正向映射160(及/或其它儲存元資料135)。在圖3A的實施例中,該項目362可藉由將儲存在儲存位址3453-4477的資料關連到該封包310的永久性元資料314所參照的LID 1024-2048來加以重建。儘管圖3A係描繪單一封包310,本揭露內容並非受限於此方面。在某些實施例中,該項目362的資料可被儲存在多個不同的封包310中,每個封包310係分別包括個別的永久性元資料314(例如,每個儲存位置有一個別的封包、等等)。
該邏輯介面管理模組334可被配置以尤其是藉由配置一對應於待被複製的原始的LID之新的LID組,並且將該些新的LID結合到該些原始的來源LID的儲存位置來複製該項目362。如同在圖3B中所繪,產生該些LID 1024-2048的複製可包括該邏輯介面管理模組334配置一等同組的LID 6144-7168並且將該複製組的識別符結合到該儲存位址3453-4477。因 此,產生該複製可包括修改該儲存元資料135以擴展該資料區段312的邏輯介面311B以包含LID 6144-7168,而不需要該基礎的資料區段312被拷貝及/或重製在該儲存媒體140上。
該資料區段312之經修改的邏輯介面311B可能是和儲存在儲存位置3453-4477之對應的資料封包310的上下文格式不一致的。如同以上所揭露的,該資料封包310的永久性元資料314係參照到LID 1024-2048,但是並不包含及/或參照到該些複製的LID 6144-7168。該資料區段312的上下文格式可被更新以和該經修改的邏輯介面311B一致的(例如,相對於只有關連到LID 1024-2048,其係被更新以將該資料關連到LID 1024-2048以及6144-7168),此可包括以一種將該資料區段關連到兩組LID的封包格式來重新寫入該資料區段。若該儲存裝置141是一種隨機存取的原地寫入的儲存裝置,則該永久性元資料314可以原地被更新。在其它包括一種一次寫入的非對稱的儲存媒體140的實施例中,此種原地更新可能是效率差的。因此,該儲存層130可被配置以維持該資料在該不一致的上下文格式,直到該資料在一例如是儲存恢復、重新安置、及/或類似者的媒體管理作業中(藉由該媒體管理模組370)被重新安置為止。更新該資料區段312的上下文格式可包括在該儲存媒體140上重新安置及/或重新寫入該資料區段312,此可能是一耗時的過程,並且若該資料區段312是大的且/或該複製包括大量的LID時,則此可能是效率特別差的。因此,在某些實施例中,該儲存層130可以推遲更新被複製的資料區段312的上下文格式,且/或可以在一或多個背景作業中更新該上下文格式。在此同時,儘管以該不一致的上下文格式(資料封包310)儲存,該儲存層130可被配置以提供對於該資料區段312的存取。
該儲存層130可被配置以在對應的資料區段312的上下文格式被更新之前應答複製作業的完成。該資料接著可以用該更新後的上下文格式被再次寫入(例如,被重新安置)在該儲存媒體140上。該更新可以發生在該複製作業及/或其它前景儲存作業的"關鍵路徑"之外。在某些實施例中,該資料區段312係藉由該媒體管理模組370來加以重新安置,以作為一儲存恢復過程、資料更新作業、及/或類似者中的一或多個的部分。於是,儲存客戶106可以是能夠透過該經修改的邏輯介面311B(例如,參照到LID 1024-2048及/或6144-7168)來存取該資料區段312,而不須等待該資料區段312的上下文格式根據該經修改的邏輯介面311B來加以更新。
在該資料區段312的上下文格式在該儲存媒體140上被更新之前,該資料區段312之經修改的邏輯介面311B可以只存在於該儲存元資料135(例如,映射160)中。因此,若該正向映射160尤其是因為電源失效或資料毀損而遺失時,該複製作業可能不會被反映在該被重新建構的儲存元資料135中(該複製作業可能不是永久性且/或當機無損的)。如同以上所描繪的,該資料封包310的永久性元資料314係指出該資料區段312只有關連到LID 1024-2048,而不是6144-7168。因此,只有項目362將會被重建(如同在圖3A中),並且項目364將會被省略;因此,後續透過該經修改的邏輯介面311B(例如,透過6144-7168)來存取該資料區段312的嘗試可能會失敗。
在某些實施例中,該複製作業可進一步包括在該儲存媒體140上儲存一永久性附註,以使得一複製作業是永久性且/或當機無損的。如同在此所用的,一"永久性附註"係指儲存在該儲存媒體140上的元資料。如同在此所揭露的,永久性附註366可以對應於一登錄順序且/或可以用一 封包格式加以儲存。該永久性附註366可包括該資料區段312的經修改的邏輯介面311B的一項指示。在圖3B的實施例中,對應於該所描繪的複製作業之永久性附註366可被配置以將儲存在儲存位址3453-4477的資料關連到LID 1024-2048以及6144-7168的兩個範圍。在從該儲存媒體140的內容重建該正向映射160的期間,該永久性附註366可被用來重建兩個項目362及364,以將該資料區段312關連到該更新後的邏輯介面311B的兩個LID範圍。在某些實施例中,該儲存層130可以響應於更新該儲存元資料135(例如,產生該項目364)並且在該儲存媒體140上儲存該永久性附註366來應答該複製作業的完成。可以響應於更新該資料區段312的上下文格式以和該更新後的邏輯介面311B一致(例如,如同以上所揭露的,重新安置且/或重新寫入該資料區段312)而使得該永久性附註366無效且/或被標記以從該儲存媒體140移除。
在某些實施例中,該資料區段312之更新後的上下文格式可包括將該資料區段312關連到兩個LID範圍1024-2048以及6144-7168。圖3C係描繪用於該資料區段312的一經更新的上下文格式(資料封包320)的一實施例。如同在圖3C中所繪,該資料封包320的永久性元資料324係將該資料區段312關連到該更新後的邏輯介面311B的兩個LID範圍1024-2048以及6144-7168。該資料封包320可以非原地被寫入在與該原始的資料封包310不同的儲存位址(64432-65456),此可被反映在該正向映射160的經更新的項目362及364中。響應於該資料封包320附加到該儲存登錄,可以使得該對應的永久性附註366(若有的話)無效(從該儲存媒體140被移除且/或被標記以用於後續的移除)。在某些實施例中,移除該永久性附註366可包括 發出一或多個指出該永久性附註366不再需要被維持在該儲存媒體140上的TRIM訊息。替代或額外的是,該正向映射160的部分可被儲存在一永久性的當機無損的儲存位置(例如,非暫態的儲存資源103及/或該儲存媒體140)中。響應於存留(persisting)該正向映射160(例如,該項目362及364),可以如同以上所揭露地使得該永久性附註366無效,即使是該資料區段312尚未以一經更新的上下文格式被再次寫入。
該邏輯介面管理模組334可被配置以根據包含一"寫入時拷貝模式"的一或多個不同的模式來實施複製作業。圖3D係描繪在一寫入時拷貝模式中,在一複製的範圍內被執行的一儲存作業的一實施例。在一寫入時拷貝模式中,發生在產生一複製之後的儲存作業可能會使得該些複製彼此分歧(例如,該些項目362及364可能會指不同的儲存位址、範圍、及/或範疇)。在圖3D的實施例中,該儲存層130已經以該更新後的上下文資料格式(封包320)來寫入該資料區段312,該更新後的上下文資料格式係被配置以將該資料區段312關連到兩個LID範圍1024-2048以及6144-7168(如同在圖3C中所繪)。一儲存客戶106接著可能發出一或多個儲存請求以修改及/或覆寫對應於該些LID 6657-7168的資料。在圖3D的實施例中,該儲存請求係包括修改及/或覆寫該些LID 6657-7168的資料。作為響應的,該儲存層130可以在該儲存媒體130上儲存該新的且/或修改後的資料,此可如同以上所揭露地包括將一新的資料封包340附加至該儲存登錄。該資料封包340可以將該資料區段342關連到該些LID 6657-7424(例如,藉由該封包340的永久性元資料344的使用)。該正向映射160可被更新以將該些LID 6657-7424關連到該資料區段342,此可包括將該項目364分開成為一被配置以繼續參 照到該資料區段312中的資料的未修改的部分之項目365以及一參照到儲存在儲存位址78512-79024的新的資料區段342之項目367。在圖3D所描繪的寫入時拷貝模式中,對應於該些LID 1024-2048的項目362可以是維持不變的,並且繼續參照到在儲存位址64432-65456的資料區段312。儘管未描繪在圖3D中,在該範圍1024-2048內的修改可能會導致類似的影響該項目362之分歧的改變。再者,該儲存請求並不限於修改及/或覆寫資料。其它的作業可包括擴展該組LID(附加資料)、移除LID(刪除、截斷、及/或修整資料)、及/或類似者。
在某些實施例中,該儲存層130可以支援其它的複製模式,例如一"同步化的複製"模式。在一同步化的複製模式中,在一複製的範圍的LID內所做的改變可被反映在一或多個其它對應的範圍中。在圖3D的實施例中,在一"同步化的複製"模式中實施該所敘述的儲存作業可包括如同在此所揭露地更新該項目362以參照到該新的資料區段342,此尤其可包括將該項目362分開成為一被配置以將LID 1024-1536關連到該原始的資料區段312的部分之項目,並且增加一被配置以將該些LID 1537-2048關連到該新的資料區段342之項目。
參照回圖3D的寫入時拷貝的實施例,該邏輯介面管理模組334可以進一步被配置以管理複製合併作業。如同在此所用的。一"合併"或是"複製合併"係指一結合兩個或多個不同的組及/或範圍的LID之作業。在圖3D的實施例中,一範圍合併作業可包括合併該項目362以及對應的複製的項目365及367。該邏輯介面管理模組334可被配置以根據一合併策略來實施範圍合併作業,例如:一寫入順序的策略,其中越是最近的修改會蓋 過較早的修改;一優先權為基礎的策略,其係根據儲存作業之相對的優先權(例如,根據該儲存客戶106、應用程式、及/或和該些儲存作業相關的使用者的性質);一完成指示器(例如,一原子儲存作業的完成、一原子儲存作業的失敗、或類似者);fadvise參數;ioctrl參數;以及/或類似者。
圖3E係描繪一範圍合併作業的一實施例。圖3E的範圍合併作業可包括將該範圍6144-6656合併到該範圍1024-2048中。於是,該範圍合併作業可包括根據該合併策略來選擇性地將在該LID範圍6144-6656內所做的改變施加到該LID範圍1024-2048。因此,該範圍合併作業可包括更新該LID範圍1024-2048以將LID 1537-2048關連到包括該新的/多改後的資料區段342的儲存位址78512-79024。該更新可包括在該正向映射160中拆開該項目362;該項目372可被配置以將該些LID 1024-1536關連到該原始的資料區段312的部分,並且項目373可被配置以將LID1537-2048關連到該新的資料區段342。如同在此所揭露的,該資料區段312中不再被該些LID 1537-2048所參照的部分可以使其無效。被合併到該原始的來源範圍內的LID範圍6144-7168可以被解除配置,且/或從該正向映射160加以移除。
在圖3E中所描繪的範圍合併作業可能會導致修改該資料的部分的邏輯介面311C。該資料區段342的上下文格式(該資料封包340)可以將該資料區段342關連到LID 6657-7168,而不是該合併後的LID 1537-2048。如同以上所揭露的,該儲存層130可以對於以該不一致的上下文格式儲存的資料區段342提供存取。該儲存層130可被配置以在一或多個背景作業(例如,儲存恢復作業)中,用一更新的上下文格式來儲存該資料區段342,其中該資料區段342係和該些LID 1537-2048相關的。在某些實施例中,該範 圍合併作業可進一步包括在該儲存媒體140上儲存一永久性附註366,以將該資料區段342關連到該更新後的邏輯介面311C(例如,將在儲存位址78512-79024的資料區段342關連到該些LID 1537-2048)。如同以上所揭露的,該永久性附註366可被用來確保該範圍合併作業是永久性而且當機無損的。該永久性附註366可以響應於以一和該邏輯介面311C一致的上下文格式(例如,將該資料區段342關連到該些LID 1537-2048)來重新安置該資料區段342、存留該正向映射160、及/或類似者而被移除。
結合圖3A-E所揭露的複製作業可被用來實施其它邏輯作業,例如一範圍移動作業。參照回圖3A-C,一用以複製該正向映射160的項目362之複製作業可包括修改和該資料區段312相關的邏輯介面,以將該資料區段312關連到該原始組的LID 1024-2048以及(項目364的)一組新的複製的LID 6144-7168。該複製作業可進一步包含儲存一指出該資料區段312的更新後的邏輯介面311B的永久性附註366、及/或在一或多個背景儲存作業中根據該更新後的邏輯介面311B來重新寫入該資料區段312。
該邏輯介面管理模組334可以進一步被配置以實施"範圍移動"作業。如同在此所用的,一"範圍移動"作業係指修改一或多個資料區段的邏輯介面,以將該資料區段關連到不同組的LID。因此,一範圍移動作業可包括更新儲存元資料135(例如,該正向映射160),以將該一或多個資料區段關連到該更新後的邏輯介面、在該儲存媒體140上儲存一指出該資料區段之更新後的邏輯介面的永久性附註366、以及以一種和該更新後的邏輯介面一致的上下文格式(封包格式310)來重新寫入該資料區段,即如同在此所揭露者。於是,該儲存層130可以利用和那些在以上結合圖3A-E所揭露 者相同的機構及/或處理步驟來實施範圍移動作業。
在圖3A-E中所揭露的複製及/或範圍移動作業可能會對於該儲存層130施加某些限制。如同以上所揭露的,以一上下文格式來儲存資料可包括將該資料關連到每個參照該資料的LID。在圖3C的實施例中,該永久性元資料324係包括對於兩個LID範圍1024-2048及6144-7168的參照。因此,增加對於一資料區段的參照數目可能會在該上下文資料格式的負擔(overhead)上施加一對應的增加(例如,增加該永久性元資料324的尺寸)。在某些實施例中,該永久性元資料314的尺寸可能是有限的,此可能會限制到可以參照到一特定的資料區段312的參照及/或複製的數目。再者,包含多個到不同的LID之參照可能會複雜化儲存恢復作業。當一資料區段312被重新安置時,需要被更新的正向映射的項目數目可能會根據參照到該資料區段312的LID數目而變化。參照回圖3C,在一整理(grooming)及/或儲存恢復作業中重新安置該資料區段312可包括更新兩個個別的項目362及364。重新安置一被N個不同的LID(例如,N個不同的複製)所參照的資料區段可包括更新在該正向映射160中的N個不同的項目。類似地,儲存該資料區段可包括寫入N個項目到該永久性元資料314中。此種可變的負擔可能會降低背景儲存恢復作業的效能,並且可能會限制到可支援的同時複製及/或參照的數目。
在某些實施例中,該邏輯介面管理模組334可包括及/或充分利用一中間的映射層,以降低由複製作業所施加的負擔。該中間的映射層可包括被配置以使得有效率的複製作業(以及其它如同在此更詳細揭露的作業)變得容易的"參照項目"。如同在此所用的,一"參照項目"係指一映射資 料結構的一項目,其係被用來參照在該正向映射160(及/或其它儲存元資料135)內之其它項目。一參照項目只能夠在其被該邏輯位址空間132內的一或多個其它項目所參照時才存在。在某些實施例中,參照項目可能是該儲存客戶106無法存取的,且/或可能是不變的。該儲存層130可以充分利用參照項目來容許儲存客戶能夠經由單一參照項目介面,透過多個不同的邏輯介面來參照到相同組的資料。在該儲存媒體140上的資料(被多個LID所參照的資料)的上下文格式可被簡化以將該資料關連到該些參照項目,此於是透過其它永久性元資料(例如,永久性附註366)來和N個其它邏輯介面相關連。因此,重新安置被複製的資料可包括更新在該參照項目以及該資料區段的新的儲存位址之間的單一映射。
圖4A是一種用於有效率的開啟到關閉的一致性之系統400的另一實施例的方塊圖。該系統400係包含一被配置以藉由一中間的映射層的使用來實施範圍複製作業之儲存層130。該儲存元資料135可包括一相關於該邏輯位址空間132的正向映射160。如同以上所揭露的,該正向映射160(及/或其它儲存元資料135)可包含有關於藉由該些儲存客戶106所做的邏輯位址空間的配置、在LID以及該儲存位址空間144內的儲存位址之間的結合、等等的資訊。
在圖4A的實施例中,該邏輯介面管理模組334可包括一被配置以藉由一參照映射460的使用來管理複製作業之參照模組434。該參照映射460可包括對應於正被該邏輯位址空間132的一或多個邏輯介面(例如,一或多組的LID)所參照的資料之參照項目。該參照模組434可被配置以移除不再被用來參照到有效的資料及/或不再被該正向映射160內的項目 所參照的參照項目。如同在圖4A中所繪,參照項目可以和該正向映射160分開地加以維持(例如,在一分開的參照映射460中)。該些參照項目可以藉由參照識別符的使用來加以識別,該些參照識別符可被維持在一和該邏輯位址空間132分開的命名空間中。於是,該些參照項目可以是一中間的"虛擬"或"參照"位址空間432的部分,該虛擬或參照位址空間432係和該些儲存客戶106可透過該儲存層介面131直接存取的邏輯位址空間132分開而且是不同的。或者是,在某些實施例中,參照項目可被指定從該邏輯位址空間132之該些儲存客戶106無法直接存取的預設的範圍及/或部分所選出的LID。
該邏輯介面管理模組334可被配置以藉由該正向映射160中的一或多個LID項目連結至該參照映射460中的參照項目來實施複製作業。該些參照項目可被結合到該複製的資料的儲存位址。於是,和複製的資料相關的LID可以透過該參照映射460以間接參照到該基礎的資料(例如,該LID可以映射至參照項目,而該些參照項目接著映射到儲存位址)。於是,在該正向映射160中對應於複製的資料的項目可被稱為"間接的項目"。如同在此所用的,一"間接的項目"係指一在該正向映射160中參照且/或被連結到一在該參照映射460中的參照項目之項目。間接的項目可被指定一在該邏輯位址空間132內的LID,並且可以是該些儲存客戶106可存取的。
如同以上所揭露的,在複製一特定組的LID之後,該些儲存客戶106可以執行在該些複製的範圍中的一或多個內的儲存作業,此可能會使得該些複製彼此分歧(根據該複製模式而定)。在一"寫入時拷貝"模式中,對於一特定的複製所做的改變可能並未被反映在其它複製的範圍中。 在圖4A的實施例中,對於一複製所做的改變可被反映在和一間接的項目相關的"本地的"項目中。如同在此所用的,一"本地的項目"係指一直接被映射到該儲存媒體140的一或多個儲存位址之間接的項目的一部分。於是,本地的項目可被配置以參照到已經在一特定的複製中改變的資料,且/或與其它複製的內容不同。因此,本地的項目可對應於一特定的複製之獨特的資料。
該轉換模組134可被配置以尤其是藉由該參照映射460及/或參照模組434的使用來存取和複製的資料相關的資料。該轉換模組134可以實施一種級聯查看(cascade lookup),該級聯查看可包括首先掃過本地的項目,並且若目標的前識別符(front-identifier)並未在本地的項目內被找到,則在該間接的項目所連結到的該些參照項目內繼續掃過。
該登錄儲存模組136以及媒體管理模組370可被配置以管理複製的資料的上下文格式。在圖4A的實施例中,複製的資料(在該正向映射160內被兩個或多個LID範圍所參照的資料)可以用一種將該資料關連到該參照映射460的一或多個參照項目的上下文格式來加以儲存。和此種複製的資料區段一起儲存的永久性元資料可以對應於單一參照項目,此係相對於識別每個和該資料區段相關的LID。因此,如同以上所揭露的,產生一複製可包括在一或多個背景作業中,尤其是藉由該媒體管理模組370的使用來更新該複製的資料的上下文格式。
圖4B係描繪一利用一參照映射460的複製作業的一實施例。在狀態413A中,一對應於該邏輯位址空間132中的LID 10的範疇2的項目(在圖4B中被表示為10,2)可以直接參照到該儲存媒體140上的儲存位 址20000的資料。其它的項目係從圖4B被省略,以避免模糊所揭露的實施例的細節。在狀態413B中,該儲存層130係實施一作業以複製該範圍10,2。複製該範圍10,2可包括:a)在該邏輯位址空間中配置一新的範圍的LID(在圖4B中被表示為400,2)、以及b)在該參照映射460中配置參照項目(在圖4B中被表示為100000,2),該些項目10,2及400,2可以透過該參照項目來參照到在儲存位址20000的複製的資料。如同在狀態413C所描繪的,該複製作業可進一步包括將該些項目10,2及400,2關連到該參照項目100000,2。如同以上所揭露的,將該項目10,2以及400,2關連到該參照項目100000,2可包括指出該些項目10,2及400,2是間接的項目。狀態413C可進一步包括在該儲存媒體140上儲存一永久性附註366,以將在儲存位址20000的資料關連到該參照項目100000,2,且/或將該些項目10,2及400,2關連到在該參照映射460中的參照項目100000,2。
該儲存層130可以透過LID 10或400(透過該參照項目100000,2)來提供對於在儲存位址20000的資料區段的存取。響應於一有關於LID 10或400的請求,該轉換模組134可以判斷出在該正向映射160中之對應的項目是一和在該參照映射460中的一項目相關之間接的項目。作為響應的,該參照模組434係執行一級聯以藉由在該正向映射160內之本地的項目(若有的話)以及在該參照映射460中之對應的參照項目(例如,參照項目100000,2)的使用來決定該儲存位址。
在步驟413C產生該複製可包括修改儲存在位址20000的資料區段的邏輯介面,以將該資料關連到兩個LID範圍10,2及400,2。然而,該資料的上下文格式可能只將該資料關連到LID 10,2。如同以上所揭露的, 產生該複製可進一步包括在該儲存媒體140上儲存一永久性附註366,以將該資料區段透過該參照項目100000,2來關連到該些LID 10,2及400,2。該資料區段可以在一或多個藉由該媒體管理模組370所執行的背景作業中,以一更新的上下文格式被再次寫入。該資料可以和永久性元資料314一起被儲存,該永久性元資料314係將該資料區段關連到該參照項目100000,2,而不是該個別的LID範圍10,2及400,2。因此,重新安置該資料區段(如同在狀態413D中所示)可以只需要更新在該參照映射460中的單一項目,而不是多個對應於每個參照到該資料的LID範圍之項目(例如,多個項目10,2及400,2)。再者,在該正向映射160中任意數目的LID範圍都可參照到該資料區段,而不增加在該儲存媒體140上和該資料相關的永久性元資料314的尺寸及/或複雜化該媒體管理模組370的作業。
圖4C係描繪一利用參照項目所實施的複製作業的另一實施例。響應於一項產生該些LID 1024-2048及/或資料區段312的一複製之請求,該邏輯介面管理模組334可被配置以在該參照映射460中配置一參照項目482來代表該資料區段312。在該正向映射160中任意數目的LID都可透過該參照項目482來參照到該資料,而不增加和該資料區段312相關的永久性元資料的負擔及/或複雜化該媒體管理模組370的作業。如同在圖4C中所繪,該參照項目482可被結合到該資料區段312的儲存位址(儲存位址64432-65456)。在該正向映射160中的項目462及472可以透過該參照項目482來間接參照到該儲存位址(例如,其可如同在圖4C中所繪地被連結至該參照項目482)。
在圖4C的實施例中,該參照項目482係被指定識別符 0Z-1024Z。該參照項目482的識別符可以對應於該邏輯位址空間132的一特定部分、或是可以對應於一不同的分開的命名空間。該儲存層130可以尤其是藉由和該項目462及/或472相關的元資料的使用來將該些項目462及472連結至該參照項目482。替代或額外的是,該些間接的項目462及/或472可以利用參照及/或連結至該參照項目482來取代儲存位址元資料。該參照項目482可能是儲存客戶106無法經由該儲存層130直接存取的。
該複製作業可進一步包括修改該資料區段312的邏輯介面311D;該經修改的邏輯介面311D可以容許該資料區段312能夠透過該間接的項目462的LID 1024-2048及/或該間接的項目472的6144-7168而被參照到。儘管該參照項目482可能是該些儲存客戶106無法存取的,但是該參照項目482可藉由該轉換模組134(透過該些間接的項目462及472)而被用來存取該資料,並且就此而論,其可被視為該資料區段312的經修改的邏輯介面311B的部分。
該複製作業可進一步包括在該儲存媒體140上儲存一永久性附註366A。如同以上所揭露的,該永久性附註366A及/或366B的儲存可以確保該複製作業是永久性而且當機無損的。該永久性附註366A可被配置以識別和該資料區段312相關的參照項目482。於是,該永久性附註366A可以將該儲存位址64432-65456關連到該參照項目識別符0Z-1024Z。該複製作業可進一步包括儲存另一被配置以將該些項目462及/或472的LID關連到該參照項目482的永久性附註366B。或者是,相關於在項目462、472及482之間的關連性的元資料可以是內含在單一永久性附註中。該永久性附註366A及/或366B可以被維持在該儲存媒體140上,直到該資料區段312以 一更新的上下文格式而被重新安置及/或該正向映射160(及/或參照映射460)被存留為止。
該資料區段312的經修改的邏輯介面311D可能是和原始資料封包410A的上下文格式不一致的;該永久性元資料314A可能參照到LID 1024-2048,而不是該參照項目482及/或該複製的項目472。該儲存層130可被配置以用一和該經修改的邏輯介面311D一致的更新的上下文格式(封包410B)來儲存該資料區段312;該永久性元資料314B可以將該資料區段312關連到該參照項目482,而不是個別地識別在每個複製的範圍內的LID(例如,項目462及472)。於是,該間接的項目482的使用係容許該資料區段312的邏輯介面311D能夠包括任意數目的LID,而與該永久性元資料314A-B的尺寸限制無關。再者,該參照項目482之額外的複製可以在不更新該資料區段312的上下文格式下加以做成;此種更新可以藉由在該正向映射160中將該新的LID範圍關連到該參照項目482及/或尤其是藉由永久性附註366的使用來加以做成。
如同以上所揭露的,該些間接的項目462及/或472最初可以透過該參照項目482來參照到該資料區段312。在該複製作業之後執行的儲存作業可藉由在該正向映射160內之本地的項目的使用來加以反映。在該複製作業的完成之後,該儲存層130可以修改和該些複製的LID中的一或多個相關的資料。在圖4D的實施例中,一儲存客戶106係修改及/或覆寫對應於該間接的項目462的LID 1024-1052的資料,其可包括將一新的資料區段412附加至該儲存登錄(在儲存位址7823-7851的資料封包420中)。
該資料區段412可以用一包括永久性元資料414A的上下文 格式(資料封包420)來加以儲存,該永久性元資料414A係被配置以將該資料區段412關連到LID 1024-1052。該儲存層130可被配置以在一本地的項目465中將該資料區段412關連到該些LID 1024-1052。該本地的項目465可以直接參照到該更新後的資料,而不是透過該間接的項目462及/或參照項目482來參照到該資料。
響應於一有關資料1024-1052(或是其之子集合)的請求,該邏輯介面管理模組334可以在一級聯查看作業中搜尋對於該所請求的LID之參照,其可包括搜尋對於本地的項目之參照(若可供利用的話),接著是該些參照項目。在圖4D的實施例中,該本地的項目465可被用來滿足相關於該LID範圍1024-1052(儲存位址7823-7851)的請求,而不是根據該參照項目462的64432-64460。對於並未在一本地的項目中找到的LID(例如,LID 1053-2048)之請求可透過該參照項目482而繼續提供服務。因此,相關於該範圍1024-2048的資料的邏輯介面311E可包括一或多個本地的項目465、一或多個間接的項目462、及/或一或多個參照項目482。
在另一描繪於圖4E的實施例中,一儲存層130可以透過該邏輯介面311E的LID中的另一個(例如,LID 6144-6162)來修改該複製的資料;該邏輯介面的分隔符(delimiter)並未顯示在圖4E中,以避免模糊該舉例說明的實施例的細節。如同以上所揭露的,該經修改的資料可以利用一本地的項目475來加以參照。在圖4E的實施例中,該些範圍462及472的每一個係具有其本身先前透過該參照項目482的識別符0Z-52Z所參照的資料之個別的本地的版本。就此而論,項目462或472都沒有包含對於該範圍0Z-52Z的參照。該參照模組434可以判斷出該對應的資料(以及參照識別符) 並不再被參照,並且就此而論,可被標記以用於從該儲存媒體140加以移除(例如,使得其無效)。如同在圖4E中所繪,使得該資料無效可包括尤其是藉由修改該參照項目482以移除該範圍0Z-52Z,以從該參照映射460來移除對於該資料的參照。使得該資料無效可進一步包括更新其它儲存元資料135,例如是一反向映射、有效性點陣圖、及/或類似者(例如,以指出儲存在儲存位址64432-64484的資料並不需要加以維持)。如同以上所揭露的,項目462及472的範圍可以繼續分歧,直到都沒有參照到該參照項目482的任何部分為止,在該時點,該參照項目482可被移除並且所參照到的資料因而可以使得其無效。
儘管圖4D及4E描繪本地的項目465及475包括和對應的間接的項目462及472重疊之LID範圍,但是本揭露內容並非受限於此方面。在某些實施例中,圖4D的儲存作業可藉由產生該本地的項目465並且修改該間接的項目462以只有參照到該些LID 1053-2048來加以反映。類似地,圖4E的作業可包括產生該本地的項目475並且修改該間接的項目472,以參照到一截斷的LID範圍6163-7168。
參照回圖4A,該參照模組434可被配置以管理或"修整(groom)"該參照映射460。在某些實施例中,在該參照映射460中的每個項目係包括元資料,該元資料包含一參照計數。當增加新的參照或連結至該參照項目時,該參照計數可加以增量,並且可以響應於移除對於該項目的參照來加以減量。在某些實施例中,參照計數可以針對於在該參照映射460中的每個參照識別符分別加以維持。或者是,參照計數可以針對於整體參照項目來加以維持。當一參照項目的參照計數到達0時,該參照項目(及/ 或其之一部分)可以從該參照映射460加以移除。移除一參照項目(或是一參照項目的部分)可包括使得在該儲存媒體140上之對應的資料無效,即如同在此所揭露者(此係指出該資料不再需要被維持)。
在另一實施例中,該參照模組434可以利用一種"標記和清除"方法來移除參照項目。該參照模組434(或是其它過程,例如該轉換模組134)可以尤其是藉由從該正向映射160中之間接的項目(或是其它類型的項目)循著連結至該些參照項目,來週期性地檢查到該參照映射460中的項目之參照。在該標記和清除期間未被存取的參照項目可以如同以上所揭露地加以移除。該標記和清除可以運作為一背景過程,並且可以週期性地執行一標記和清除作業來識別及移除不再使用的參照項目。
在某些實施例中,在此揭露的參照映射460可以依據需求(例如,響應於一複製的產生、或是其它間接的資料參照)而被產生。在其它實施例中,所有的資料儲存作業都可以透過中間的映射來加以執行。在此種實施例中,儲存客戶106可以配置一虛擬的位址空間(VAS)之間接虛擬的識別符(VID),其可以透過一中間的映射層而被連結及/或參照到例如是該邏輯位址空間132的儲存位址。該VAS可以在儲存客戶106以及該儲存媒體140之間增加一中間的映射層。儲存客戶106可以利用一虛擬化的位址空間的VID來參照到資料,該些VID係映射到該邏輯位址空間132的邏輯識別符,並且其於是和在個別的儲存裝置141及/或儲存媒體140上之儲存位址相關的。如同在此所用的,一VAS可包含但不限於一邏輯單元號碼(LUN)位址空間、一虛擬的LUN(vLUN)位址空間、及/或類似者。
圖5A係描繪一被配置以尤其是利用一虛擬化的位址空間 532來實施有效率的範圍複製作業之聚合層530的一實施例。該聚合層530可被配置以透過一介面531來將一VAS 532呈現給該些儲存客戶106。像是在此揭露的介面131,該介面531可包括一區塊裝置介面、虛擬的儲存介面、快取介面、及/或類似者中的一或多個。儲存客戶106可以透過該介面531,藉由參照到該VAS 532的VID來執行有關於該聚合層530所管理的儲存資源的儲存作業。
該聚合層530可進一步包括一被配置以透過一或多個中間的儲存層(例如,儲存層130)來將VID映射到儲存資源之VAS轉換模組534。於是,該聚合層530的VAS元資料535可包含一VAS正向映射560,該VAS正向映射560係包括在該VAS 532的VID以及該VAS 532的LID之間的任意的映射。儘管未描繪在圖5A中,該VAS轉換模組534及/或VAS正向映射560可被配置以聚合複數個不同的儲存層130的複數個邏輯位址空間132成為單一VAS 532。於是,在某些實施例中,一VAS 532可以對應於複數個不同的邏輯位址空間132,該些邏輯位址空間132分別包括一個別組的LID,並且分別對應於一個別的儲存層130、儲存裝置141、及/或儲存媒體140。
儘管圖5A係描繪該聚合層530是和該儲存層130分開,但是本揭露內容並非受限於此方面。在某些實施例中,該聚合層530的VAS 532、VAS正向映射560、VAS轉換模組534、及/或其它模組可被實施為該儲存層130的部分。
該聚合層530可被配置以充分利用由該VAS 532所提供之中間的虛擬的位址空間,以尤其是實施有效率的範圍複製、移動、合併、及/或其它高階的作業。替代或額外的是,該中間的映射層可被利用以致能在 例如是硬碟及/或類似者的隨機存取的原地寫入之儲存裝置上的有效率的複製作業。
儲存客戶106可以執行關於該VAS 532的VID之儲存作業。於是,儲存作業可包括兩個(或是更多個)轉換層。該VAS正向映射560可包括一介於該VAS 532的VID以及該儲存層130的邏輯位址空間132的識別符之間的第一轉換層。該儲存層130的正向映射160可實施一介於LID以及該儲存媒體140上的儲存位址之間的第二轉換層。
該聚合層530可被配置以尤其是藉由該VAS元資料535、VAS正向映射560、及/或VAS轉換模組534的使用來管理在該VAS 532內的配置。在某些實施例中,在該VAS 532內配置一VID可包括在該邏輯位址空間132中配置一或多個對應的LID(及/或一或多個其它儲存層的識別符)。於是,每個被配置在該VAS 532內的VID可以對應於該邏輯位址空間132的一或多個LID。如同在此所揭露的,在該聚合層530的VID以及該邏輯位址空間132之間的任意的映射可以是稀疏及/或任意的。再者,在某些實施例中,該聚合層530可被配置以維持在VID以及複數個不同的邏輯位址空間132之間的任意的及/或範圍管理的映射。於是,該聚合層530可以聚合及/或結合藉由不同的個別的儲存層130所管理之複數個不同的儲存裝置141的邏輯位址空間成為單一聚合的VAS 532。
在圖5A的實施例中,該邏輯位址空間132可能不是直接可存取的,並且就此而論,儲存客戶106可以透過該介面531,利用VID來參照到儲存資源。因此,透過該聚合層530來執行一關於一或多個VID的儲存作業可包括:a)識別對應於該些VID的儲存層130、b)藉由該VAS轉換模 組534及/或VAS正向映射560的使用來決定被映射到該些VID的儲存層130的LID;以及c)藉由該儲存層130的使用來實施關於該被決定的LID的儲存作業。
圖5B係描繪一藉由該聚合層530的使用所實施的複製作業的一實施例。如同以上所揭露的,該VAS正向映射560可以對應於一VAS 532,該VAS 532係透過一儲存層130的一邏輯位址空間132而被間接映射到儲存位址。圖5B係描繪被用來透過該聚合層530實施儲存作業的定址層。該VAS 532的VID可包括儲存客戶106尤其是透過該聚合層530的介面531可存取的最高階層的定址層。該儲存層130的邏輯位址空間132可包括一中間的定址層。該VAS正向映射560可包括在VID以及LID之間的任意的映射。該些LID可以藉由該正向映射160的使用而被映射到在該儲存位址空間144內的儲存位址。於是,VID可以透過該儲存層130的中間的邏輯位址空間而被映射到該儲存位址空間144。
如同在圖5B中所繪,在狀態563A中,該VAS正向映射560可包括一代表在該VAS 532中的兩個VID(10及11)之項目10,2。該VAS正向映射560係將該VID項目10,2關連到該邏輯位址空間132的LID。在圖5B的實施例中,該VAS正向映射560係將該VID項目10,2結合到LID 100000及100001(項目100000,2)。該項目10,2可被配置給一特定的儲存客戶106,其可以執行關於該些VID的儲存作業。在狀態563A中,該儲存層130可被配置以將該項目100000,2映射到在該儲存媒體140上的一或多個儲存位址(儲存位址20000)。
在狀態563B中,該聚合層530可以實施一複製作業來複製 該VID項目10,2。該複製作業可包括:a)配置一新的VID項目400,2、以及b)在該VAS正向映射560中,將該新的VID項目400,2關連到該對應的項目100000,2。在該正向映射160中之對應的項目100000,2可以保持不變的。或者是,在該正向映射160中的項目100000,2的一參照計數(或是其它指示器)可被更新以指出該項目正被多個VID範圍所參照。儲存在儲存位址20000的資料的上下文格式可以保持不變的(例如,繼續以將該資料關連到該邏輯介面100000,2)。該複製作業可進一步包括在該儲存媒體140上儲存一永久性附註366,以指出在該VID項目400,2以及該正向映射160中的項目100000,2之間的關連性。替代或額外的是,該複製作業可以藉由存留該VAS正向映射560(及/或其之部分)而被做成永久性且/或當機無損的。
在狀態563C中,在儲存位址20000的資料可被重新安置到儲存位址40000。該重新安置可以發生在一標準的儲存媒體維護作業中,而且並未更新該複製的資料的上下文格式。重新安置該資料可包括更新在該正向映射160中的單一項目。該VAS正向映射560可以保持不變的。對於該些VID範圍10,2及400,2之不同的版本的修改可以透過該中間的邏輯位址空間來加以管理。一對於VID 10的修改可包括:a)在該邏輯位址空間132中配置一新的LID、b)儲存和該新的LID相關之經修改的資料、以及c)在該VAS正向映射560中將該新的LID映射到VID 10。
在此揭露的用於實施範圍複製、移動、及/或合併作業的實施例可被用來有效率地實施其它較高階的儲存作業,例如是快照、刪除重複、原子作業、事務、檔案系統的管理功能、及/或類似者。參照回圖4A,該儲存層130可包括一被配置以識別在該儲存媒體140上的重複的資料之刪 除重複模組374。重複的資料可以利用任何適當的機制來加以識別。在某些實施例中,重複的資料係藉由:a)掃描該儲存媒體140的內容、b)對於各種的資料區段產生簽名(signature)值、以及c)比較資料的簽名值以識別重複的資料來加以識別。該些簽名值可包含但不限於密碼的簽名、雜湊碼、循環碼、及/或類似者。簽名資訊可被儲存在例如是該正向映射160的儲存元資料135之內(例如,在和該些項目相關的元資料中)、且/或可以用該儲存元資料135的一或多個個別的資料結構來加以維持及/或編入索引。該刪除重複模組374可以比較資料簽名,並且在偵測到一簽名相符之際可以執行一或多個刪除重複作業。該些刪除重複作業可包括驗證該簽名相符(例如,執行一種逐個位元組的資料比較)以及執行一或多個範圍複製作業以透過兩個或多個LID範圍來參照到該重複的資料。
圖6係描繪一刪除重複作業的一實施例。該正向映射160可包括項目662及672,該些項目662及672可以參照到儲存在不同的個別的儲存位址3453-4477及7024-8048的重複的資料。該些項目662及672可以對應於分別對應到LID 1024-2048及6144-6656之不同的個別的邏輯介面663及673。如同以上所揭露的,該重複的資料區段(資料區段612)可以藉由該刪除重複模組374來加以識別及/或被驗證。或者是,該重複的資料可以在該儲存層130接收到資料以用於儲存時來加以識別。於是,該資料可以在該資料之一額外的拷貝被儲存在該儲存媒體140上之前就被刪除重複。
響應於識別及/或驗證該些項目662及672係參照到重複的資料,該儲存層130可被配置以對於該資料刪除重複,此可包括產生一或多個範圍複製以透過兩個不同組的LID來參照到該重複的資料的單一拷 貝。如同以上所揭露的,產生一範圍複製可包括修改一資料區段的邏輯介面663及673。在圖6的實施例中,該重複的資料係分別在儲存位置3453-4477以及7024-8048被儲存為一封包610內的一資料區段612。該複製作業可包括修改該些資料區段中之一(或是該資料區段之一新的版本及/或拷貝)的邏輯介面,使得該資料區段可以被兩個項目663及673所參照。
該範圍複製作業可以利用在此揭露的包含圖3A-E的範圍複製之實施例、圖4A-E的參照項目之實施例、及/或圖5A-B的中間的映射之實施例的複製實施例中之任一個來加以實施。在圖6的刪除重複的實施例中,兩個LID範圍1024-2048以及6144-7168可被修改以透過一參照項目682來參照到該資料區段612的單一版本(另一資料區段可以使得其無效)。就此而論,該刪除重複作業可包括產生一參照項目682以代表該刪除重複後的資料區段612(參照到該封包610)。該刪除重複作業可進一步包括修改及/或轉換該些項目662及672成為個別的間接的項目665及675,該些間接的項目665及675可以如同以上所揭露地透過該參照項目682而被映射到該資料區段612。該刪除重複作業可進一步包括修改資料區段612的邏輯介面669,以將該資料區段612關連到兩組LID 1024-2048以及6144-7168(以及該參照項目682)。如同以上所揭露的,該刪除重複作業可進一步包括在該儲存媒體140上儲存一永久性附註366。
如同以上所揭露的,該刪除重複作業可進一步包括更新該資料區段612的上下文格式,以和該經修改的邏輯介面669一致。更新該上下文格式可包括在一或多個背景作業中,將具有一更新的上下文格式(資料封包610)之資料區段612附加到該儲存登錄(例如,在儲存位置84432-85456 處)。該更新後的資料封包610可包括將該資料區段612關連到該更新後的邏輯介面669(例如,透過參照識別符0Z-1023Z而關連到LID 1024-2048以及6144-6656)的永久性元資料614。
儘管圖6係描繪複製及/或刪除重複單一項目或範圍的LID,但是本揭露內容並非受限於此方面。在某些實施例中,複數個前識別符的範圍可以在單一複製作業中加以複製。此種類型的複製作業可被用來產生一位址範圍(或是整個邏輯位址空間132)的一"快照"。如同在此所用的,一快照係指一儲存裝置(或是LID組)在一特定時點的狀態。該快照可以維持一LID範圍之一"原始的"狀態,而不論在完成該快照作業之後是否有改變發生在該範圍內。
圖7是描繪一種包括一被配置以有效率地實施快照作業的儲存層130之系統700的一實施例的方塊圖。圖7的實施例係有關在一邏輯位址空間132內之一位址範圍。然而,本揭露內容並非受限於此方面,並且可被調適以用於其它類型的位址範圍,例如是在一如同以上所揭露的VAS 532內之範圍及/或範疇。該儲存層130可包括一被配置以實施如同在此所揭露的快照作業之快照模組736以及時序模組738。
在狀態773A中,該儲存層130可被配置以產生一LID範圍FR1的一快照。產生該快照可包括保存該LID範圍FR1在一特定的時間的狀態。該快照作業可進一步包括保存該LID範圍FR1,同時容許後續的儲存作業能夠在該LID範圍內被執行。
如同以上所揭露的,該儲存層130可被配置以尤其是藉由該登錄儲存模組136的使用來將資料儲存在該儲存媒體140上的一儲存登錄 中。儲存作業的登錄順序可以利用和資料封包相關的順序資訊來加以決定,例如是在儲存分區170A-N上的順序指示器113及/或在該儲存媒體140的儲存位址空間144內之順序的儲存位置(如同結合圖1D及1E所揭露者)。
該儲存層130可以進一步被配置以維持其它類型的排序及/或時序資訊,例如在該登錄中的資料之相對的時間排序。然而,在某些實施例中,資料的登錄順序可能並未正確地反映時序資訊,此尤其是因為資料在媒體管理作業中被重新安置在該儲存裝置內之緣故。重新安置資料可包括從其在該儲存媒體140上之原始的儲存位置讀取該資料、以及將該資料附加在該儲存登錄內之一目前的附加點。就此而論,較舊被重新安置的資料可能在該儲存登錄中和較新的目前的資料一起被儲存。因此,儘管該儲存登錄可能保存有關於特定的LID的資料作業之相對的登錄順序,但是該儲存登錄可能並未正確地反映絕對的時序資訊。
在某些實施例中,該登錄儲存模組136係被配置以將資料關連到時序資訊,其可被用來建立該些被執行在該儲存媒體130上的儲存作業之相對的時序資訊。在某些實施例中,該時序資訊可包括個別的時間戳記(timestamp)(藉由該時序模組738加以維持),其可以被施加至每個儲存在該儲存媒體140上的資料封包。該些時間戳記可被儲存在該資料封包310的永久性元資料314內。替代或額外的是,該時序模組738可被配置以用一較粗的精細度來追蹤時序資訊。在某些實施例中,該時序模組738係維持一或多個全域的時序指示器(一時期(epoch)識別符)。如同在此所用的,一"時期識別符"係指一被用來判斷透過該儲存層130所執行的儲存作業之相對的時序的識別符。該登錄儲存模組136可被配置以在資料封包710中包含一 時期指示器739。該時期指示器739可以對應於由該時序模組738所維持之目前的時期(例如,全域的時序指示器)。該時期指示器739可以對應於該對應的資料區段712先前被寫入至該儲存登錄所在的時期。該時期指示器739可被儲存在該封包710的永久性元資料714內,並且就此而論,其在重新安置作業期間仍可保持和該資料封包710相關的。該時序模組738可被配置以響應於某些事件,例如是一新的快照的產生、一使用者請求、及/或類似者來增量該全域的時期識別符。該資料區段712的時期指示器739通過重新安置及/或其它媒體維護作業時可以保持不變的。於是,該時期指示器739可以對應於該資料區段712之原始的儲存時間,而與該資料封包710在該儲存登錄中之相對的位置無關。
一快照作業可包括保存一特定的LID範圍(FR1)在一特定的時間的狀態。因此,一快照作業可包括在該儲存媒體140上保存有關於FR1的資料。保存該資料可包括:a)識別有關於一特定的時間範圍(時期)的資料、以及b)在該儲存媒體140上保存該識別出的資料(例如,防止該識別出的資料尤其是在儲存恢復作業中從該儲存媒體140被移除)。有關於一快照的資料可加以維持,儘管其因為後續的儲存作業(例如,覆寫、修改、TRIM、及/或否則是消除該資料的作業)而使得其無效。對於一特定的快照需要被保存的資料可以藉由在以上揭露的時期指示器739的使用來加以識別。
在狀態773A中(時間t1,其被表示為時期指示器e0),該儲存層130可以接收一請求來實施一快照作業。響應於該請求,該快照模組736可以決定由該時序模組738所維持的時期識別符之目前的值。該時期識別符之目前的值可被稱為目前的"快照時期"。在圖7的實施例中,該快照時 期是0。該快照模組736可以進一步被配置以使得該時序模組738增量目前全域的時期指示器(例如,增量該時期識別符至1)。產生該快照可進一步包括在該儲存媒體上儲存一被配置以指出該目前被更新的時期指示器之永久性附註366。該永久性附註366可以進一步被配置以指出相關於該快照時期的資料是將被保存(例如,識別在該快照作業中將被保存之特定的LID範圍FR1)。該永久性附註366可以在元資料重建作業期間被使用以:a)決定目前的時期識別符、及/或b)配置該快照模組736及/或媒體管理模組370以保存和一特定的快照時期(例如,時期e0)相關的資料。
該快照模組736可以進一步被配置以指示該媒體管理模組370以保存和該快照時期相關的資料。作為響應的,該媒體管理模組370可被配置以:a)識別為了該快照而保存的資料(快照資料)、以及b)避免該識別出的資料尤其在儲存恢復作業中從該儲存媒體140被移除。該媒體管理模組370可以藉由該資料封包710的時期指示器739的使用來識別快照資料。如同結合圖1E所揭露的,資料可以非原地被寫入在該儲存媒體140上。和一特定的LID相關的資料之最新的版本可以根據該對應的資料封包710在該登錄內的順序來加以決定。該媒體管理模組370可被配置以識別在該快照時期內之最新版本的資料為將需要被保存的資料。在該快照時期中,已經因為其它資料而使其廢棄的資料可被移除。參照圖1E的實施例,若該資料X0及X1(和相同的LID A相關)都被標示以該快照時期0,則該媒體管理模組370將會識別在時期0中之最新版本的資料為X1,並且將會標記該資料X0以用於移除。然而,若資料X0先前被標示快照時期0,而X1被標示一以後的時期(例如,在該快照作業之後的時期1),則該媒體管理模組370 可以將該資料X0保存在該儲存媒體140上,以便於保存該快照的資料。
在狀態773B中,該快照模組738可被配置以保存相關於該快照FR1的資料(和時期e0相關的資料),同時容許儲存作業在後續的時期期間(例如,時期e1)繼續被執行。保存FR1可包括複製FR1以保存該LID範圍在時期e0(FR1(e0))之原始的狀態,同時容許儲存作業繼續參照到FR1。如同以上所揭露的,該複製作業可以利用重複的項目、參照項目、及/或一中間的映射層中的一或多個來加以實施。該些儲存作業可包括參照到該些LID的FR1,將資料附加至該儲存媒體140上的儲存登錄。對應於該快照FR1(e0)之複製的LID可以是不變的。於是,FR1(e0)的快照可被保存,儘管該LID範圍有改變。在狀態773B中儲存的資料可以和目前的時期(e1)的一時期指示器739一起被儲存。該快照模組736可被配置以保存因為在時期e1(以及後續的時期)期間被執行的儲存作業而使得其廢棄及/或無效的資料。參照回圖1E的實施例,該媒體管理模組370可以將資料X0識別為用於該快照FR1的保存的資料(該資料X1可能已經在該快照作業被執行之後被儲存)。該快照模組738及/或媒體管理模組370可被配置以保存該資料X0,即使該資料接著因為在時期e1中的資料X1而使得其為廢棄的。該資料X0可以被維持,即使該LID A被刪除、TRIM、或類似者。
包含該LID範圍FR1(e0)以及被標示以時期指示器e0的資料之FR1(e0)的快照可被保存,直到該對應的快照被刪除為止。該快照可以響應於透過該介面131接收到的一請求來加以刪除。如同在狀態773C中所指出的,該時期0可被維持在該儲存媒體140上,甚至是在其它介於中間的時期(時期e1-eN)已經被產生且/或刪除之後。刪除該時期e0可包括配置該快照 模組738及/或媒體管理模組370,以移除和該時期e0相關的無效/廢棄的資料。
在狀態773A產生該快照之後被執行的儲存作業可能會修改該邏輯位址空間132,並且明確地說是修改該正向映射160。該修改可包括響應於將資料附加至該儲存媒體140、對於FR1增加及/或移除LID、等等來更新儲存位址的結合。在某些實施例中,該快照模組736係被配置以保存該快照範圍FR1(e0)在分開的儲存元資料135內,例如是該邏輯位址空間132之一分開的區域、在一分開的命名空間中、在一分開的映射中、及/或類似者。或者是,該快照模組736可容許該些改變發生在該正向映射160中,而不保存FR1在時間e0之原始的版本。該快照模組736可被配置以利用被保存在該儲存媒體140上的快照資料來重建e0(時間t1)的正向映射160。在時間t1的正向映射160可以如同以上所揭露地加以重建,其可包括依序地存取儲存在該儲存媒體140上的資料(以一種登錄順序)並且根據和該資料封包710相關的永久性元資料714來產生正向映射項目。在圖7的實施例中,對應於時期e0的正向映射160可以藉由參照被標記該時期指示器739e0(或是更低者)的資料封包710來加以重建。和高於e0的時期指示器739相關的資料可被忽略(因為此種資料係對應於在該快照FR1(e0)被產生之後的作業)。
在此揭露的儲存層130可以進一步被配置以實施有效率的範圍移動作業。圖8A係描繪由在此揭露的儲存層130所實施的一移動作業的一實施例。該正向映射160係包含被配置以將LID 1023-1025結合到該儲存媒體140上之個別的資料區段的項目862。該些項目862係被個別地描繪,以更佳地描繪該實施例的細節;然而,該些項目862可以內含在包括整個 範圍的LID 1023-1025的單一項目中。該些項目862可以定義儲存在儲存位址32、3096及872的資料的一邏輯介面863。如同以上所揭露的,儲存在儲存位址32、3096及872的資料可以用一上下文格式來加以儲存,其係將該資料關連到對應的LID 1023、1024及1025。
該儲存層130可被配置以移動該些項目862至LID 9215-9217,此尤其是藉由以一對應於該新的LID組(例如,9215、9216及9217)之新的邏輯介面863B來取代在該些LID 1023、1024及1025以及在該些個別的媒體儲存位置32、3096及872的資料之間的關連性。該移動作業可以響應於一經由該介面131接收到的請求及/或作為一較高階的儲存作業(例如,重新命名一檔案的一請求、平衡及/或解片段(defragment)該正向映射160的作業、或類似者)的部分來加以執行。
該移動作業可以根據在以上所揭露的複製實施例中的一或多個來加以實施。在某些實施例中,該移動作業可包括將被映射到LID 1023、1024及1025的儲存位址關連到該目的地LID 9215、9216及9217,此可能會導致根據該移動作業來修改該資料的邏輯介面863A。該移動作業可進一步包括在該儲存媒體140上儲存一永久性附註366,以確保該移動作業是永久性而且當機無損的。如同以上所揭露的,儲存在儲存位址32、872及3096的資料可以在一或多個背景作業中,根據該更新後的邏輯介面863B而被再次寫入。
圖8B係描繪一移動作業的另一實施例。如同上述的,該移動作業可包括移動和LID 1023-1025相關的資料至LID 9215-9217。圖8B的移動作業可以利用結合圖4A-E所揭露的參照項目。於是,該移動作業可包 括在一參照映射460中產生參照項目882,以代表該移動作業。該移動作業可進一步包括配置新的間接的項目866以透過該參照項目882來參照到該資料。參照項目882可包括該些移動前的LID 1023、1024及1025,其可以是和該些位址32、3096及872相關連的。因此,該資料的新的邏輯介面863C可包括該間接的項目866以及該對應的參照項目882。如同以上所揭露的,該移動作業可進一步包括在該儲存媒體上儲存一永久性附註366,以確保該移動作業是永久性而且當機無損的。
儲存在儲存位址32、3096及872的資料的上下文格式可能是和該更新後的邏輯介面863C不一致的;該資料的上下文格式可以將該些個別的資料區段關連到LID 1023、1024及1025,而不是9215、9216及9217(及/或該些參照項目)。該永久性附註366可包括該資料之更新後的邏輯介面863C,因而若必要時,該儲存元資料135(例如,正向映射160及/或參照映射460)可以正確地加以重新建構。
該儲存層130可以透過該經修改的邏輯介面863C(LID 9215、9216及9217)來提供對於具有該不一致的上下文格式的資料之存取。該資料可以在該移動作業之後(在該移動作業及/或其它儲存作業的路徑之外),以一種和該經修改的邏輯介面863C一致的上下文格式而被再次寫入及/或重新安置。如上所述的,在某些實施例中,在儲存位址32、3096、及/或872的資料可以在一或多個背景作業中,藉由一媒體管理模組370而被再次寫入。因此,該移動作業可以響應於更新該正向映射160且/或儲存該永久性附註366來完成(及/或回傳一應答)。
如同在圖8C中所繪,該正向映射160及/或其它儲存元資料 135可以響應於該移動作業的重新寫入資料而被更新。在圖8C的實施例中,儲存在媒體儲存位置32的資料區段812A可以在一儲存恢復作業中被重新安置,其可包括以一種和該經修改的邏輯介面863C一致的上下文格式(資料封包810A)來儲存該資料。該資料封包810A可包括將該資料區段812A關連到LID 9215的永久性元資料814A。該正向映射160可被更新以參照到具有該更新後的上下文格式的資料,其可包括修改該LID 9215的間接的項目以直接參照到該資料封包810A,而不是該參照項目。對應於LID 9215的項目可以從一間接的項目恢復成為一標準的本地的項目,並且用於LID 1023的參照項目可以從該參照映射460加以移除。
參照圖8D,一儲存客戶106可能修改和LID 9217相關的資料,其可包括非原地儲存一資料區段(例如,在儲存位址772)。該資料區段可以用一種和該經修改的邏輯介面863C一致的上下文格式來加以寫入(例如,將該資料關連到LID 9217)。作為響應的,該正向映射160可被更新以將針對於LID 9217的項目關連到該資料區段的儲存位址(例如,儲存位址772),並且如同以上所揭露的,從該參照映射460移除針對於於LID 1025的參照項目。
在某些實施例中,該參照映射460可以和該正向映射160分開地加以維持,使得其中的項目(例如,項目882)是儲存客戶106無法直接參照的。此種隔離可以容許儲存客戶106能夠更有效率地運作。例如,其並非拖延作業直到資料以更新後的上下文格式被再次寫入及/或重新安置為止,而是資料作業可以進行,同時該資料係於一或多個背景過程中被再次寫入。參照圖8E,在以上揭露的移動作業之後,一儲存客戶106可以相關 該LID 1024來儲存資料。對應於該LID 1024的參照項目882可以內含在該參照映射460中,此尤其是因為在儲存位址3096的資料尚未以該更新後的上下文格式來被再次寫入。然而,由於該參照映射460是和該正向映射160分開被維持,因此一名稱衝突可能不會發生,並且該儲存作業可以完成。該正向映射160可包含一個別的項目864,該個別的項目864係包括用於儲存在媒體儲存位置4322的資料之邏輯介面,同時透過該邏輯介面863C(以及參照映射460)來繼續提供對於先前結合到LID 1024的資料的存取。
在該揭露的移動作業中,當該些間接的項目尤其是由於重新寫入、重新安置、修改、刪除、及/或覆寫對應的資料而不再被連結的對於該參照映射460的參照項目時,該些參照項目可被移除,並且該些間接的項目可恢復成為直接的本地的項目。此外,如同以上所揭露的,和該移動作業相關的永久性附註366可以使得其無效及/或從該儲存媒體140加以移除。
參照回圖1A,該儲存層130的介面131可被配置以提供用於執行在此揭露的儲存作業之API及/或介面。該些API及/或介面可以透過該區塊介面、一擴大的儲存介面、及/或類似者中的一或多個來加以顯露。該區塊介面可藉由例如是fadvise參數、I/O控制參數與類似者的介面延伸的使用來加以擴大,以包含額外的API及/或功能。該介面131可以提供API以執行在此揭露的範圍複製作業、範圍移動作業、範圍合併作業、刪除重複、快照、以及其它較高階的作業。該介面131可容許儲存客戶106施加屬性及/或元資料至LID範圍(例如,凍結一範圍)、管理範圍快照、等等。如同在此所揭露的,一範圍複製作業係包括產生一組一或多個來源LID的一 邏輯拷貝。範圍複製、移動、及/或合併作業可以利用在此揭露的實施例的任一個來加以實施,其包含但不限於描繪在圖3A-E中的範圍複製之實施例、圖4A-E的參照項目之實施例、及/或圖5A-B的中間的映射層之實施例。
在此揭露的範圍複製、移動、及/或合併作業可被用來實施較高階的作業,例如是刪除重複、快照、有效率的檔案複製作業(邏輯檔案複製)、檔案一致性管理、位址空間管理、mmap檢查點、原子寫入、與類似者。這些較高階的作業亦可以透過該儲存層130的介面131而被顯露出。該些揭露的作業可以由例如是作業系統、檔案系統、資料庫服務、及/或類似者之各種不同的儲存客戶106加以充分利用。
圖9A係描繪一種包括一被配置以實施檔案管理作業的儲存層130之系統900A的一實施例。該系統900A可包括一檔案系統906,該檔案系統906可被配置以充分利用該儲存層130的功能以降低複雜度、負擔、與類似者。該檔案系統906可被配置以充分利用在此揭露的範圍複製、移動、快照、刪除重複、及/或其它功能,以實施有效率的檔案層級的快照及/或複製作業。該檔案系統906可被配置以響應於客戶請求(例如,一複製命令、一檔案快照ioctrl、或類似者)來實施此種作業。該檔案系統906可被配置以在一來源檔案上實施有效率的檔案複製及/或檔案層級的快照作業,其尤其是藉由a)排清(flushing)該來源檔案的髒頁(若有的話)、b)產生一新的目的地檔案以代表該拷貝的檔案及/或檔案層級的快照、以及c)指示該儲存模組130以執行一被配置以將該來源檔案複製到該目的地檔案的範圍複製作業。
圖9A係描繪用於實施針對一檔案系統906的範圍複製作業 的各種實施例。在某些實施例中,並且如同在狀態911A中所繪,該儲存層130可被配置以維持一邏輯位址空間132,其中該來源檔案(待被複製的檔案)的LID係藉由該正向映射160的使用而被映射到在該儲存媒體上的檔案資料。描繪在狀態911B中之對應的範圍複製作業可包括:a)對於該目的地檔案配置一組LID、以及b)將該來源檔案以及該目的地檔案的LID映射到在該儲存媒體140上的檔案資料。該範圍複製作業可進一步包括在該儲存媒體140上儲存一永久性附註366,以指出該檔案資料係和該來源檔案以及目的地檔案的LID相關連的。如同在此所揭露的,該範圍複製作業可進一步包括根據該更新後的上下文格式來重新寫入該檔案資料。
在其它實施例中,該儲存層130可以充分利用一參照映射460來實施範圍複製作業(例如,如同在圖4A-E中所揭露者)。在該範圍複製作業之前,在狀態911C中,該來源檔案的LID可以被直接映射到在該正向映射160中之對應的檔案資料。在狀態911D中的產生該範圍複製可包括將該參照映射460中的一或多個參照項目關連到該檔案資料、以及將對應於該來源檔案的LID以及該目的地檔案的LID之間接的項目連結到該參照項目。如同在此所揭露的,該範圍複製作業可進一步包括在該儲存媒體140上儲存一永久性附註366及/或更新該檔案資料的上下文格式。
在某些實施例中,該儲存層130可被配置以利用一中間層的映射層(例如,如同在圖5A-B中所揭露者)來實施範圍複製作業。如同在狀態911E中所指出的,該來源檔案可以對應於一VAS 532的一組VID,其可以透過一中間的位址空間(例如,該儲存層130的邏輯位址空間132)而被映射到該儲存媒體140上的檔案資料。執行該範圍複製作業可包括:a)在該 VAS 532中配置用於該目的地檔案的VID、以及b)將該目的地檔案的VIS關連到該中間的映射層的LID(例如,相同組的LID被映射到該來源檔案的VID)。該範圍複製作業可進一步包括在該儲存媒體140上儲存一永久性附註366,其係指出該目的地之VID係和該檔案資料的LID相關連的。由於該檔案資料已經被結合到該中間的識別符,因此該檔案資料的上下文格式可能不需要被更新。
該檔案系統906可以進一步被配置以充分利用該儲存層130至檢查點mmap作業。如同在此所用的,一"mmap"作業係指一種其中檔案的內容是透過標準的載入及儲存作業而以記憶體頁來加以存取之作業,而不是透過該檔案系統906的標準的讀取/寫入介面。一"msync"作業係指一種對於該儲存媒體140排清該檔案的髒頁(若有的話)之作業。mmap作業的使用可能使得檔案檢查點變為困難的。檔案作業係在記憶體中加以執行,並且當該狀態必須被保存時,一msync係被發出。然而,該檔案在msync之後的狀態係代表目前在記憶體中的狀態,因而上一個被保存的狀態可能會失去。因此,若該檔案系統906在一msync期間當機,則可能會讓該檔案處於一不一致的狀態中。
在某些實施例中,該檔案系統906係被配置以在帶有msync的呼叫期間,對於一經過mmap作業的檔案的狀態進行檢查點處理。對於該檔案進行檢查點處理可包括產生一如同以上所揭露的檔案層級的快照(及/或範圍複製)。該檔案層級的快照可被配置以保存該檔案在施加改變前的狀態。當該msync被發出時,另一複製可被產生以反映在該msync作業中被施加的改變。如同在圖9B中所繪,在狀態913A中(在該mmap作業之前), 檔案1可以是和LID 10-13以及在該儲存媒體140上之對應的儲存位址P1-P4相關的。響應於該mmap作業,該檔案系統906可以透過該儲存層130的介面131來執行一範圍複製作業,其可包括產生檔案1的一複製(被表示為檔案1.1)。該檔案1.1可以是和一不同組的LID 40-43相關的,該組LID 40-43係參照到相同的檔案資料(例如,相同的儲存位址P1-P4)。在其它實施例中,如同以上所揭露的,檔案1可以利用一參照映射460及/或一中間的轉換層來加以複製。
響應於一msync呼叫,該檔案系統906可以執行另一範圍複製作業(藉由該儲存層130的使用)。如同在狀態913C中所繪,和該msync作業相關的範圍複製作業可能包括以一或多個髒頁(儲存位址P5及P6)的內容來更新該檔案1,並且複製該更新後的檔案1為檔案1.2。該檔案1.1可以反映該檔案在該msync作業之前的狀態。於是,在一失敗的事件中,該檔案系統906可以是能夠重建該檔案1之先前的狀態。
如同以上所揭露的,儲存層130可被配置以實施範圍複製以及範圍合併作業,其可被充分利用來實施較高階的作業,例如是檔案一致性(例如,關閉到開啟的檔案一致性,即如同在此更詳細揭露者)、原子作業、與類似者。這些作業可包括:a)複製該邏輯位址空間132之一特定的區域、b)在該複製的區域內執行儲存作業、以及c)選擇性地合併及/或合攏該複製的區域成為該邏輯位址空間132的另一部分。如同在此所用的,合併及/或合攏該邏輯位址空間132的區域係指尤其是藉由將被實施在該些範圍中之一的改變納入到一或多個其它範圍來組合兩個或多個LID範圍。一合併作業可以根據一合併策略來加以實施,該合併策略可被配置以解決在不同的 LID範圍之間的衝突。該合併策略可包含但不限於一"覆寫"模式,其中一LID範圍中之一的內容係"覆寫"另一LID範圍的內容;一種"OR"模式,其中該些LID範圍的內容係被組合在一起(例如,在一邏輯OR作業中);一衝突時拷貝模式,其中衝突係藉由產生一或多個LID範圍之個別的獨立的拷貝來加以解決;及/或類似者。在該覆寫模式中,覆寫一或多個其它LID範圍的內容之LID範圍可以根據任何適當的標準來決定,其包含但不限於提交的時間(例如,較新的作業係覆寫較早的作業)、優先權、及/或類似者。
圖9C係描繪藉由該儲存層130的使用所實施的範圍合併作業的實施例。在圖9C的實施例中,該儲存層130可被配置以複製識別符範圍914,該識別符範圍914可藉由在該正向映射160內的一或多個項目來加以表示。在該範圍914內的LID 072-083可被結合到儲存位址95-106。在此揭露的範圍複製及/或合併作業可以利用圖3A-E的範圍複製及/或移動的實施例、圖4A-E的參照項目之實施例、及/或圖5A-B的中間的映射層之實施例的任一種來加以實施。於是,在某些實施例中,該些LID 072-083可以透過一或多個參照項目及/或中間的映射層而被結合到該儲存位址95-106。
該儲存層130可被配置以複製該範圍914,如同在狀態941A所描繪的,其可包括將一新的LID範圍924結合到該儲存位址95-106。該範圍914及/或924可包括被配置以指出該些範圍914及924是相關的(例如,結合到相同組的儲存位址)個別的元資料984及/或994。該元資料984及/或994可被配置以將該些LID 072-083連結到972-983,使得有關於該些LID範圍中之一的修改可以相互關連到其它範圍中的LID(例如,和LID 972相關所寫入的資料可以被關連到該對應的LID 072、依此類推)。該元資料984及/ 或994可以指出一用於該些複製的LID範圍的同步策略,其如同以上所揭露地可以指出在複製之間的配置作業是否將被同步化。該元資料984及/或994可進一步包括且/或參照到一合併策略,其可以指明合併衝突將會如何加以管理。該合併策略可以透過該儲存層130的介面131而被指明、可以根據一全域及/或預設的合併策略而被決定、可以透過請求參數(例如,fadvise、ioctrl、等等)而被指明、及/或類似者。如同以上所揭露的,該複製作業可進一步包括將一永久性附註366附加到該儲存媒體140,該永久性附註366係被配置以將在儲存位址95-106的資料關連到該LID範圍972-983(及/或以一更新的上下文格式來重新寫入該資料)。
該儲存層130可以響應於來自一或多個儲存客戶106的儲存請求,以執行在該範圍914及/或924中的一或多個範圍內的儲存作業。如同在狀態941B中所繪的,一儲存作業可能修改和該些LID 972-973相關的資料,其可包括將該識別符972-973關連到一組新的儲存位址721-722。在狀態941B的儲存作業之後,該儲存層130可以執行一範圍合併作業,以合併該LID範圍972-983與該範圍072-083。根據一合併策略,該範圍合併作業可包括將參照到該LID範圍924的修改納入到該LID範圍914中。該合併策略可以指明在該複製的範圍924中所做的修改覆寫在該來源範圍914內的資料。於是,在狀態941C中所描繪的合併作業的結果可包括將該來源範圍914的LID 072-073結合到在儲存位址721-722之經修改的資料。如同在此所揭露的,該範圍合併作業可進一步包括解除配置該複製的LID範圍972-983、儲存一被配置以將在儲存位址756-757的資料關連到LID 072-073的永久性附註366、及/或以一更新的上下文格式重新寫入在儲存位址 721-722的資料。如同以上所揭露的,儲存在儲存位址95-96的已經被在721-722處之新資料排除之資料可以使得其無效。
在該範圍914及/或924內被執行的儲存作業可能會導致衝突。在某些實施例中,和該些LID範圍相關的合併策略可以在衝突時取得優先權(preempt)。如同在此更詳細揭露的,在一原子儲存作業中,該儲存層130可以在原子儲存作業於一或多個LID範圍中完成時鎖住一或多個對應的範圍。然而,在其它實施方式中,該儲存層130可以容許儲存作業在複製的範圍內同時被執行。在狀態941D中,該儲存層130可以實施被配置以覆寫及/或修改和在該範圍924中的LID 972-973及982-983相關的資料的儲存作業。該儲存層130可以實施被配置以覆寫及/或修改和範圍914的LID 072-073相關的資料的其它儲存作業。相關於該些LID 072-073以及972-973的儲存作業可能在該些範圍914及924之間產生一合併衝突。如同以上所揭露的,該合併衝突可以根據一合併策略來加以解決。在某些實施例中,該合併策略可包括尤其是根據該些儲存作業在該儲存登錄中之相對的順序來施加最新的修改。在其它實施方式中,該合併策略可以根據請求該些個別的儲存作業的儲存客戶106(程序、應用程式、及/或類似者)之相對的優先權來解決衝突。在另一實施方式中,該合併策略可以藉由產生該範圍914及/或924的兩個(或是更多個)版本來代表該些不同的相衝突的版本來解決衝突。
狀態941E係描繪一被配置以納入和LID 072-073相關的作業而不是和LID 972-973相關之相衝突的修改之合併作業的一結果的一實施例。因此,在狀態941E中,該些LID 072-073係被結合到對應於參照到該 些LID 072-073所執行的儲存作業之儲存位址756-757,而不是對應於參照到該些LID 972-973所執行的儲存作業之儲存位址721-722。
狀態941F係描繪一被配置以納入該範圍972-973的修改、而不是參照到該些LID 072-073所做之相衝突的修改之合併作業的一結果的一實施例。於是,在狀態941F中,該些識別符072-073係被結合到對應於參照到該些LID 972-973所執行的儲存作業之儲存位址721-722,而不是和該些LID 072-073相關的儲存位址756-757。
狀態941G係描繪一被配置以藉由產生個別的範圍拷貝或版本來管理合併衝突之合併作業的一結果的一實施例。該範圍914可納入關於識別符982-983所做之非衝突的修改,並且可保持有關於識別符072-073之相衝突的儲存作業的結果(而不是納入儲存位址721-722)。另一LID範圍924可保持狀態941D的修改,而不納入關於識別符072-073所做之相衝突的儲存作業的結果。儘管狀態941G係描繪利用該原始的複製的LID範圍072-083 914以及974-981 924之拷貝,但本揭露內容並非受限於此方面,並且可被配置以產生在該邏輯位址空間132的任何區域內的範圍拷貝及/或版本。如同在此所揭露的,關於狀態941E-G所揭露的範圍合併作業可進一步包括將一或多個永久性附註366附加到該儲存媒體140,以將儲存在儲存位址721-722、756-757、及/或767-768的資料關連到對應的LID且/或在一或多個背景儲存作業中重新寫入該資料。
在某些實施例中,在該複製的LID範圍914及/或924中的一或多個內之作業可包括尤其是藉由擴展該範圍914及/或924、收縮該範圍914及/或924、或類似者來修改該LID範圍914及/或924。延伸該些範圍914 及/或924中之一可包括對於另一範圍之對應的延伸,並且就此而論,配置作業可以是以在兩個範圍914及924中配置額外的LID為基礎。
在此揭露的範圍合併作業可以利用圖3A-E的範圍複製及/或移動之實施例、圖4A-E的參照項目之實施例、及/或圖5A-B的中間的映射之實施例的任一個來加以實施。圖9D係描繪一利用一參照映射460之範圍合併作業的一實施例。如同在狀態943A中所繪,複製該範圍914可包括在該邏輯位址空間132中配置一LID範圍924、連結該些範圍914及924(尤其是利用元資料984及/或994)、以及將該些範圍914及924關連到在該參照映射460中的參照識別符934。如同以上所揭露的,該範圍複製作業可進一步包括在該儲存媒體140上儲存一永久性附註366,該永久性附註366係被配置以將該參照映射460中的範圍934關連到該間接的範圍914及/或924。在該參照映射460內的範圍934可被結合到該儲存位址95-106。於是,兩個範圍914及924都可以間接參照到在相同的儲存位址之相同的資料。
如同在狀態943B中所繪,一在該範圍924內的被配置以修改對應於LID 982-983的資料的儲存作業可包括在該範圍924內配置新的LID並且該新的本地的項目982-983結合到該對應的儲存位址767-768。如同以上所揭露的,根據一合併策略來合併該些範圍914及924可包括將在儲存位址767-768之經修改的資料納入到該範圍914中。在圖9D的實施例中,狀態943C的範圍合併作業可包括移除該參照項目934、以及更新範圍914的LID 081-083以參照到在儲存位址767-768之更新後的資料。如同以上所揭露的,該合併作業可進一步包括儲存一永久性附註366及/或以一更新的上下文格式來重新寫入在儲存位址767-768的資料。
圖9E係描繪藉由該儲存層130所實施的範圍複製以及範圍合併作業的另外的實施例。圖9E係描繪在包括一如同結合圖5A-B所揭露的中間的位址空間之實施例中的範圍複製以及範圍合併作業。在狀態947A中,包括VID 072-083的VID範圍914係透過在該VAS正向映射560中之中間的識別符272Z-283Z而被間接結合到儲存位址95-106。該些中間的識別符可以是一分開的中間的位址空間2136的部分(例如,該儲存層130的邏輯位址空間132)。
如同在狀態947B中所繪,複製該VID範圍914可包括配置一包括VID 972-983之新的VID範圍924並且將該範圍924關連到在該VAS正向映射560中之中間的識別符272Z-283Z。該複製作業可進一步包括在該儲存媒體140上儲存一永久性附註366,該永久性附註366係被配置以將該VID範圍924關連到該中間的位址272Z-283Z。如同在此所揭露的,儲存作業可以參照到該VID範圍914及/或924來加以執行。對於該VID範圍914及/或924的修改可被反映在該個別的VID範圍914及/或924以及該中間的位址空間2136之間的更新的映射中。在狀態947C中,一修改VID 982-983的資料之儲存作業係被反映在VID 982-983及中間的識別符984Z-985Z、以及儲存位址456-457之間的更新的映射中。如同在狀態947D中所繪,合併該些VID範圍914及924可包括更新範圍914的VID映射,以參照到該更新後的資料(透過該中間的位址984Z-985Z)。如同以上所揭露的,該合併作業可進一步包括解決合併衝突(若有的話)。該合併作業可進一步包括將一或多個永久性附註366附加至該儲存媒體140,以將該些VID 082-083關連到該中間的位址984Z-985Z。
在某些實施例中,該儲存層130可以充分利用在此揭露的範圍複製、移動、及/或合併作業,以提供檔案一致性功能給儲存客戶106,例如是檔案系統、資料庫、及/或類似者。參照圖9F,一檔案系統906可以充分利用該儲存層130,以根據該網路檔案系統(NFS)版本3的協定及/或其它的檔案系統實施方式及/或協定以實施一種關閉到開啟的檔案一致性模型。該關閉到開啟的檔案一致性模型可被配置以容許多個程序及/或應用程式(檔案系統客戶)來同時在相同的檔案上運作。檔案修改係在該檔案是關閉時進行;在下一次該檔案被開啟前,其它平行運作在該檔案上的客戶並未看到該改變。於是,該檔案的狀態係設定在該檔案被開啟時,並且藉由其它客戶所平行實施的改變並未被施加,直到該檔案再次被開啟時才施加。
在某些實施例中,該檔案系統906可以充分利用該儲存層130來在該工作的複製的範圍內做成修改時,保存該檔案的"原始"資料(例如,該檔案之一致的版本)。如同在此所用的,保存該檔案的"原始"資料及/或該檔案之一致的版本係指維持在一對應於該檔案先前被開啟時的狀態之檔案資料及/或保持修改的一登錄檔案,在其原始未修改的狀態中之檔案資料的狀態可以從其來加以重建。
圖9F係描繪一種包括被配置以實施一關閉到開啟的檔案一致性模型的儲存層130之系統900F的一實施例。該檔案系統906(及/或其它儲存客戶106)可以充分利用該儲存層130來有效率地實施關閉到開啟的檔案一致性。該儲存層130可被配置以:a)響應於該些檔案系統客戶926A-N的檔案開啟請求來複製檔案,此係產生該檔案之一"主要的"或是"一致的"版本以及該檔案之一"工作的"版本;b)參照到該檔案的工作的版本來執行儲存 作業;以及c)響應於檔案關閉來將該檔案的工作的版本合併到該檔案的主要的版本。如同在此所揭露的,該儲存層130可被配置以在一或多個範圍複製作業中(例如,利用圖3A-E、4A-E、5A-B的範圍複製的實施例及/或類似者)複製該檔案資料。該儲存層130可以進一步被配置以利用一或多個如同在此所揭露的範圍合併及/或合攏作業來合併該檔案的工作的版本以及該檔案的主要或一致的版本。該檔案的工作的版本可以代表該檔案先前藉由一特定的儲存客戶926A-N所開啟時的檔案的狀態。該些儲存客戶926A-N對於該檔案的工作的版本可具有互斥的存取,並且就此而論,該檔案的工作的版本可以是和藉由其它客戶926A-N所做的檔案修改隔離開。該儲存層130可被配置以維持參照到該檔案之"主要的"或是"一致的"邏輯介面之原始未修改的檔案資料,其可包括在參照到該檔案的工作的邏輯介面之儲存作業被執行時,維持在該檔案資料以及該一致的邏輯介面之間的關連性。在藉由不同的儲存客戶926A-N所做的檔案修改之間的衝突可以根據衝突解決策略或是合併策略來加以解決,例如上一次寫入(例如,在時間上的上一次寫入係覆寫先前的寫入);在衝突時拷貝(例如,產生該檔案之個別的版本);根據客戶926A-N、應用程式、程序、及/或類似者的優先權;等等。
在圖9F的實施例中,在狀態953A之處,該轉換模組134係包括在一檔案的LID(檔案LID 950A)以及在該儲存媒體140上的儲存位址P0-P3的檔案資料952A之間的映射951A。該映射951A可以利用在此揭露的正向映射160及/或如同結合圖5A-B所揭露的一或多個中間的映射層來加以實施。
在狀態953B中,該儲存層130可被配置以響應於一儲存客 戶(儲存客戶926B)的一檔案開啟請求來複製該檔案。該請求可以透過該介面131來加以接收,其係為一明確的請求、一請求參數(例如,fadvise、ioctrl、等等)、及/或類似者。該複製作業可包括一或多個範圍複製作業,其如同在此所揭露地可包括配置一對應於該工作版本的檔案之新的組之"複製的"檔案LID 950B,並且將該組複製的識別符950B關連到和該檔案之主要的版本的LID 950A(該組原始或是一致的邏輯識別符950A)相同的檔案資料952A。如同以上所揭露的,該範圍複製作業可進一步包括在該儲存媒體140上儲存一永久性附註366,以將該檔案資料952A關連到該主要的檔案的LID 950A以及該檔案的工作的版本的LID 950B。
在某些實施例中,該儲存層130及/或檔案系統906可被配置以導引藉由該儲存客戶926B所執行的檔案作業至該檔案的工作的版本(該組工作的LID 950B)。於是,藉由該儲存客戶926B所做的修改可以參照到該複製的檔案LID 950B來加以做成。此種修改可能不會影響到該檔案LID 950A之原始主要的版本的狀態。因此,該儲存客戶926B可以參照到該些LID 950B來修改該檔案的工作的版本,而不改變該檔案之原始主要的版本的LID 950A。
在狀態953C中,該儲存客戶926B已經執行一儲存作業(透過該儲存層130),以修改儲存在儲存位址P3的檔案的資料;該經修改的資料可被附加至在儲存位址P64的儲存登錄。作為響應的,該轉換模組134可以更新映射951B以將該檔案950B的複製的工作版本的LID結合至在儲存位址P64之經修改的檔案資料952B。其它未被該儲存客戶926B修改的LID可以繼續被結合到該原始未修改的檔案資料952A。該儲存層130係被 配置以保存在該檔案之主要的版本的識別符950A以及在儲存位址P0-3之未修改的檔案資料952A之間的原始的映射951A。
另一儲存客戶926N可能在該儲存客戶926B尚未關閉該檔案之前發出一請求以開啟該檔案。作為響應的,並且如同在狀態953D中所繪,該儲存層130可以產生該主要的檔案的另一複製(複製該些主要的檔案識別符950A)。該些複製的LID(FID 950C)可以對應於該檔案之原始的狀態,而無儲存客戶926B參照到該複製的識別符範圍950B所做的修改。於是,該些複製的LID 950C可以被映射951C到在儲存位址P0-3之原始未修改的檔案資料952A。該儲存客戶926N可以參照到該新的複製的檔案識別符範圍950C來和該儲存客戶926B平行地執行儲存作業。藉由該些客戶926B及926N所做的改變可被隔離在其個別的LID範圍950B及950C內,並且就此而論,其不可被施加至該檔案之主要的版本(LID 950A及/或彼此)。
狀態953E係描繪該儲存客戶926B關閉該檔案的結果。響應於一項對於關閉儲存客戶926B的檔案的請求,該儲存層130可被配置以在一或多個範圍合併作業中,將該對應的範圍(FID 950B)的內容合併到該檔案之主要的版本(LID 950A)中。然而,該些改變可能不被合併到儲存客戶926N所用的檔案版本(FID 950C)中;在該客戶926N重新開啟該檔案前,該儲存客戶926N可能並無存取至該些修改。納入該些修改可包括一或多個如同在此所揭露的範圍合併作業。該些範圍合併作業可被配置以將參照到該複製的LID範圍950B的修改合併到該檔案之主要的版本的LID範圍950A中。在圖9F的實施例中,該範圍合併作業係包括更新該主要的檔案LID 950A的映射951A,以參照到在儲存位址P64之經修改的檔案資料952B。未被該 客戶924B修改的資料可以保持被結合到在P0-3之原始未修改的檔案資料952A。
如同在此所揭露的,在某些實施例中,該經修改的檔案資料952B可包含永久性元資料,該永久性元資料係被配置以將在儲存位址P64之經修改的檔案資料952B關連到該些LID 950B中的一或多個(而不是和該檔案之主要的版本相關的LID 950A)。因此,該範圍合併作業可進一步包括將一永久性附註366附加至該儲存媒體140,該永久性附註366係被配置以將該範圍的LID 950A中的一或多個關連到在儲存位址P64之經修改的檔案資料952B。在儲存位址P64的資料可以在一或多個背景作業中,利用更新的永久性元資料而被再次寫入。在該檔案關閉作業(以及對應的範圍合併作業)之後,該轉換模組134可被配置以解除配置範圍950B的LID。
該客戶926N可以參照到該些複製的檔案識別符950C來修改該檔案。如同在圖9G的狀態953F中所繪,該儲存客戶926N可能執行一或多個和該客戶926B所實施的修改衝突之作業。該些修改可能發生在該客戶950B尚未關閉該檔案之前(在客戶926B的修改尚未如同在狀態953E的施加至該檔案之主要的版本的LID 950A之前)。就此而論,該些LID 950A係被映射951A至該原始未修改的檔案資料952A,被配置給儲存客戶926B的範圍950B的識別符中的一或多個係被映射到修改後的檔案資料952B,並且被配置給儲存客戶926N的範圍950C的識別符中的一或多個係被映射到相衝突的檔案資料952C。對應於未修改的資料的LID 950B及950C可以繼續參照到該原始未修改的檔案資料952A。
該些客戶926B及926C最終可能關閉其個別的檔案,其可 包括將參照到該個別的LID範圍950B及950C所做的修改合併到該檔案之主要的版本的範圍950A中。該儲存層130可被配置以根據一合併策略944來解決在該些範圍950B及950C之間的衝突。在某些實施例中,該合併策略944可以是根據該些儲存客戶926B及926C關閉該檔案的順序;最後一個關閉的檔案的修改可以覆寫先前施加的修改(例如,該些修改可被序列化)。如同在狀態953G中所繪,該儲存客戶950B可能在該儲存客戶950C之前發出檔案關閉請求。在該客戶950B關閉該檔案之後,該儲存層130可以將參照到該範圍950B所做的修改合併到該檔案之主要的版本的範圍950A中(如同在圖9F的狀態953E中所繪者)。如同在圖9G的狀態953G中所繪,藉由客戶926C所做的檔案關閉可能會導致以資料952C覆寫藉由儲存客戶950B所做的修改(修改後的資料952B)中的某些個。在P3及P64之處的資料可被標記以用於從該儲存媒體140移除,因為其不再被該主要的檔案或是該檔案之一目前的工作版本所參照。如同以上所揭露的,該儲存層130可被配置以實施其它的合併策略,例如一以優先權為基礎的合併策略944。一以優先權為基礎的合併策略可以根據該儲存客戶926B及/或926C之相對的優先權來解決衝突。在狀態953H中,該儲存客戶926C可以在該儲存客戶926B之後關閉該檔案;然而,由於該合併策略944指出儲存客戶926B的修改係具有一比儲存客戶926C之相衝突的修改更高的優先權,因此該修改的儲存客戶926B可加以維持。於是,該檔案之主要的版本的LID 950A可以繼續參照到儲存客戶926B之經修改的檔案資料952B,而儲存客戶926C的相衝突的檔案資料(在P96之處的資料952C)可以和在P3之處的廢棄的檔案資料952A一起被標記以用於無用的資料收集。在其它實施例中,該合併 策略944可包括一種衝突時拷貝策略,其係導致產生該檔案之兩個主要的版本。在此種實施例中,並且如同在狀態953I中所繪,該儲存層130可被配置以將儲存客戶926B的修改納入到該主要的檔案中(利用主要的檔案LID 950A),並且可以將儲存客戶926C之相衝突的修改納入到該檔案之一新的版本(檔案識別符950D)。
儘管一合併策略944之特定的實施例係在此被描述,但是本揭露內容並非受限於此方面,並且可以實施及/或納入任何適當的合併策略944。該合併策略944可被實施在該儲存層130及/或檔案系統906之內。在某些實施例中,該儲存層130及/或檔案系統906的合併策略944可以透過該儲存層130的介面131來加以組態設定。該合併策略944可以應用到所有透過該儲存層130執行的檔案作業。替代或額外的是,該合併策略944可以尤其是透過如同以上所揭露的檔案系統API呼叫、fadvise、ioctrl、及/或類似者而根據個別檔案及/或根據個別衝突來加以設定。
該儲存層130可以進一步被配置以實施有效率的原子儲存作業。圖10A是一種包括一被配置以實施原子儲存作業的儲存層130之系統1000A的一實施例的方塊圖。如同在此所用的,一原子儲存作業係指一種不是整體完全完成、就是加以退回的儲存作業。於是,原子儲存作業並不能夠部分地完成;該儲存層130可被配置以使得未完成的原子儲存作業的資料無效且/或加以移除。實施原子儲存作業以及特別是包括多個步驟及/或有關於多個不同的識別符範圍或I/O向量的原子儲存作業可能會施加高的負擔成本。例如,某些資料庫系統係利用多組冗餘寫入作業來實施原子儲存作業。
該儲存層130可包括一被配置以實施儲存事務(transaction)的事務模組1036。該事務模組1036可包括一原子儲存模組1035以充分利用在此揭露的範圍複製、範圍移動、及/或其它作業,以提高原子儲存作業的效率。在某些實施例中,該介面131係提供用於執行向量化原子儲存作業的API及/或介面。一向量可以被定義為一資料結構,例如:struct iovect { uint64 iov_base; //用於輸入或輸出的記憶體區域基底位址uint32 iov_len; //藉由iov_base所參照的記憶體尺寸uint64 dest_lid; //目的地邏輯識別符}
該iov_base參數可以參照到一包括該向量的資料之記憶體或緩衝器位置,iov_len可以是指該資料緩衝器的一長度或尺寸,並且dest_lid可以是指用於該向量之目的地邏輯識別符(例如,具有從該輸入緩衝器iov_len所表明及/或導出的範圍長度的基底邏輯識別符)。
因此,一項對於寫入資料至一或多個向量的向量儲存請求可被定義如下:vector_write ( int fields, const struct iovect *iov, uint32 iov_cnt, uint32 flag)
以上的向量寫入作業可被配置以從藉由該*iov指標所參照 及/或藉由該向量計數參數(iov_cnt)所指明的向量資料結構的每一個收集資料,並且將該資料寫入到在該些個別的iovect結構中所指明之目的地邏輯識別符(例如,dest_lid)。該旗標參數可以指明該向量寫入作業是否應該被實施為一原子向量作業。
如同以上所描繪的,一向量儲存請求可包括在複數個向量的每一個上執行相同的作業(例如,隱含執行一有關於一或多個不同的向量之寫入作業)。在某些實施例中,一向量儲存請求可以對於每個構成的向量指明不同的I/O作業。於是,每個iovect資料結構可包括一個別的作業指示器。在某些實施例中,該iovect結構可被延伸如下:struct iovect{ uint64 iov_base; //用於輸入或輸出的記憶體區域基底位址uint32 iov_len; //藉由iov_base所參照的記憶體尺寸uint32 iov_flag; //向量作業旗標uint64 dest_lid; //目的地邏輯識別符}
該iov_flag參數可以指明該儲存作業來在該向量上執行。該iov_flag可以指明任何適當的儲存作業,其包含但不限於一寫入、一讀取、一原子寫入、一修整(trim)或拋棄請求、一刪除請求、一格式請求、一模式化的寫入請求(例如,寫入一指定的模式之請求)、一寫入零的請求、或是一具有驗證請求、配置請求或類似者的原子寫入作業。上述的向量儲存請求介面可被延伸以接受向量結構:vector_request( int fields, const struct iovect *iov, uint32 iov_cnt, uint32 flag)
該旗標參數可以指明該Vector_request的向量作業是否將被原子地執行。原子儲存作業的另外的實施例係被揭示在2012年12月21日申請的Ashish Batwara等人所發明之名稱為"用於向量輸入/輸出作業之系統、方法及介面"的美國專利申請案序號13/725,728中,並且該專利申請案係藉此被納入作為參考。
該事務模組1036可包括一被配置以在該儲存層130內實施原子儲存作業的原子儲存模組1035。該原子儲存模組1035可被配置以實施一項關於一和該請求的目標或目的地識別符不同的識別符組之原子儲存請求的儲存作業。如同在此所揭露的,在該些原子儲存作業完成之後,該原子儲存模組1035可被配置以移動該資料至該原子儲存請求之個別的目標或目的地識別符。
在某些實施例中,該原子儲存模組1035係參照到一第二組的識別符以實施針對於一第一組的邏輯識別符之原子儲存作業。該第二組的識別符可被視為短暫的、暫時的工作或是進行中的(in-process)識別符。該第二組的識別符可能是儲存客戶106無法直接存取的。該第二組的識別符可以對應於該邏輯位址空間132之一特定的區域、一特定的虛擬位址空間(例如,一VAS 532)、一分開的命名空間、及/或類似者。在完成該原子儲存請求的儲存作業之後,該原子儲存模組1035可以實施一被配置以將該原子 儲存請求的資料關連到該第一組的識別符的範圍移動作業。該資料可以是和該第二組的識別符解除關連的。如上所述,該第二組的識別符可以是和該邏輯位址空間132的LID及/或一VAS 532的VID可區別開的。在一失敗狀況的事件中,該重建模組1037可以將被結合到此種識別符的資料識別為有關於失敗的事務(例如,未完成的原子儲存作業)。該識別出的資料可以在元資料重建作業期間使得其無效,且/或對應的項目可以從該儲存元資料135被刪除(例如,從該正向映射160、VAS正向映射560、參照映射460、及/或類似者加以刪除)。
在某些實施例中,該原子儲存模組1035係在一例如是圖10A的事務位址空間1032之分開的位址空間內實施原子儲存作業。儘管圖10A係描述一事務位址空間1032的使用,但是本揭露內容並非受限於此方面,並且可被適配於使用任何適當的位址範圍及/或命名空間,其包含但不限於該邏輯位址空間132的一部分(例如,一範圍、範疇及/或組的LID)、一VAS 532的一部分、一參照映射460、一中間的位址空間、及/或類似者。該事務位址空間1032的識別符(交易式識別符)可能是該些儲存客戶106無法直接可存取的。
該原子儲存模組1035可以執行參照到該事務位址空間1032的原子儲存作業,並且在該原子儲存作業完成之後,其可以執行一被配置以將該些原子儲存作業的資料從該事務位址空間1032移動到該邏輯位址空間132(或是其它目的地或目標命名空間,例如是一特定的VAS 532)中之原子範圍移動作業。該原子範圍移動作業可包含如同在此所揭露的更新在該正向映射160內的結合、寫入元資料至該儲存媒體140(例如,將一永久性附 註366附加到該登錄)、及/或類似者。
在圖10A的實施例中,一儲存客戶106係發出一有關於在該邏輯位址空間132內的向量1040A及1040B之原子儲存請求。如同在圖10A中所繪,該些向量1040A及1040B可以對應於該正向映射160內之現有的項目。在該原子儲存作業被實施之前(在狀態1015A),向量1040A的LID 10-13可被結合到儲存位址P1-P4,並且向量1040B的LID 36-38可被結合到儲存位址P6-8。在其它實施例中,該原子儲存請求可以相關於並未被配置及/或尚未被結合到儲存位址的LID,並且就此而論,其在該正向映射160(及/或其它映射層)內並不具有對應的項目。
響應於該原子儲存請求,該原子儲存模組1035可以尤其是藉由一重新導向模組1034的使用來存取在該事務位址空間1032內之一第二組的識別符。該重新導向模組1034可被配置以將該第二組的識別符配置在該交易式位址空間1032內。該些交易式識別符可被用來實施該原子儲存請求的部分(例如,追蹤該些原子儲存作業的進行中的部分)。該重新導向模組1034可以進一步被配置以尤其是藉由該儲存元資料135、在該正向索引160及/或其它索引元資料內的項目、及/或類似者的使用,來將該第二組的識別符連結至該第一組的LID(例如,該原子儲存請求的目標LID)。在某些實施例中,如同在此所揭露的,該原子儲存模組1035可以進一步被配置以執行被配置以將該第二組的識別符結合到和該第一組的識別符(向量1040A及1040B)相同的儲存位址之範圍複製作業。
如同在狀態1015B中所繪,該重新導向模組1034可以配置一包括向量1042A及1042B之第二組的識別符,該些向量1042A及1042B 係包含交易式識別符Z0-3及Z6-8。在交易式識別符以及儲存位置之間的結合可以尤其是利用一例如是該事務映射1060之中間的映射層而被維持在一儲存元資料中。該事務映射1060可包括在交易式識別符以及該邏輯位址空間132的LID(及/或一VAS 532的VID)之間的映射。在圖10A的實施例中,該事務映射1060係包括在向量1042A的交易式識別符以及向量1040A之對應的LID(LID 10-13)之間的連結1064A,該事務映射1060進一步包含在向量1042B的交易式識別符以及向量1040B的LID 36-38之間的連結1064B。該事務映射1060可進一步包含在交易式識別符以及儲存位置之間的結合。狀態1015B係描繪在該事務映射1060中的範圍複製作業,其係包含在交易式識別符1042A以及在向量1040A中的LID的儲存位置P1-4之間的結合1062A、以及在交易式識別符1042B以及在向量1040B中的LID的儲存位置P6-8之間的結合1062B。
該原子儲存模組1035可以在該事務位址空間1032內實施該原子儲存請求的原子儲存作業,其可包括將儲存作業從該第一組的LID(向量1040A及/或1040B)重新導向至該第二組的識別符(1042A及1042B的交易式識別符)。重新導向該些儲存作業可包括尤其是藉由該事務映射1060的使用來將該原子儲存請求中對於LID的參照轉換成為對於該第二組的交易式識別符的參照。例如,一有關於LID 10的儲存作業可以根據該事務映射1060的映射1064A而被重新導向至交易式識別符Z0。被組態設定以配置邏輯容量的儲存作業可被重新導向至該交易式位址空間1032(並且維持在其中)。例如,一項延伸該向量1040A以包含LID 14-20的請求可包括:a)在該邏輯位址空間132中配置該些LID、b)在該交易式位址空間1032中配置對應的交易 式識別符、以及c)在該事務映射1060中連結該些配置的交易式識別符以及LID。一項TRIM LID的請求可包括在該事務映射1060中標記該些對應的識別符為無效的。如同在此更詳細揭露的,在該邏輯位址空間132中之對應的LID可以響應於在該原子儲存作業的完成之際所執行的範圍移動作業來加以TRIM。
如同在狀態1015C中所繪,該原子儲存請求的儲存作業可包括將資料附加至該儲存媒體140的儲存位置P9-13及P100-102。如同在此所揭露的,該些對應的儲存作業可被重新導向至該交易式位址空間1032。於是,該原子儲存請求的資料可以是和該些交易式識別符Z0-3以及Z6-8相關的,其可包括:a)在該事務映射1060中將該些儲存位置P9-13及P100-102結合至該些交易式識別符Z0-3及Z6-8、以及b)在P9-13以及P100-102儲存帶有永久性元資料114的該資料,該永久性元資料114係被配置以將該資料關連到個別的交易式識別符Z0-3及Z6-8。
其它儲存作業可以和該些原子向量作業同時及/或交錯的來加以執行。於是,該原子儲存請求的資料並不需要被儲存在該儲存媒體140的儲存位址空間144內的連續的儲存位置處。該原子儲存請求的資料可以尤其是根據在儲存位置P9-10及P100-102的資料以及該些交易式識別符Z0-3及Z6-8之間的結合來與其它不相關該原子儲存請求的資料區別開。
如同進一步在狀態1015C所描繪的,在向量1040A及1040B中的LID之原始未修改的狀態在該原子儲存作業進行中時可以是不變的;在儲存位置P1-4及P6-8的資料可以保持在該儲存媒體140上,並且在該原始未修改的資料以及該些LID 10-13及36-38之間的結合可以維持在該正向 索引160內。因此,對應於該些向量1040A及1040B之原始未修改的資料在該原子儲存作業正被執行時可以維持在一致的狀態並且可被保存,而不論在該原子儲存作業中是否有失敗。
該原子儲存作業的完成可包括將該交易式位址空間1032的內容合併到該邏輯位址空間132。如同在狀態1015D中所繪,在該交易式位址空間中完成該原子儲存作業(如同在狀態1015C中所示)之後,該原子儲存模組1035可以執行一範圍移動作業以修改在P9-13及P100-102的資料的邏輯介面,以將該資料結合至該第一組的LID(向量1040A及1040B之目的地的LID)。該範圍移動作業可包括更新該正向映射160,以將向量1040A的LID 10-13關連到儲存位置P9-13,並且將向量1040B的LID 36-38關連到儲存位置P100-102。如同在此所揭露的,該範圍移動作業可進一步包括在該儲存媒體140上儲存一永久性附註366,以將該儲存位址P9-P13結合到LID 10-13,並且將P100-102結合到LID 36-38。該範圍移動作業可以用其它方式來加以實施,其包含但不限於圖4A-E的參照項目之實施例及/或圖5A-B之中間的映射的實施例。該範圍移動作業亦可包含以一種和該更新後的邏輯介面一致的上下文格式來重新寫入該資料,其可包括重新寫入帶有永久性元資料114的該資料,該永久性元資料114係被配置以將該資料關連到該第一組的LID(例如,分別是邏輯位址空間132的LID 10-13及/或36-38)。如同在此所揭露的,該資料可以在一或多個背景作業中被再次寫入。
該原子儲存模組1035可被配置以響應於該範圍移動作業的完成來應答該原子儲存請求的完成。於是,可以響應於儲存該永久性附註366及/或將該永久性附註366設置在一寫入緩衝器(及/或該儲存裝置141之 一斷電安全領域)中來加以應答完成。該原子儲存請求的完成可進一步包括解除配置被用來實施該原子儲存請求之交易式識別符。
在某些實施例中,該範圍移動作業可進一步包括修改在該邏輯位址空間132內的LID配置。如同以上所揭露的,一原子儲存作業可包括一項在該邏輯位址空間132內配置LID的請求。如同在此所揭露的,實施此種作業可包含:a)在該邏輯位址空間132內配置該些所請求的LID(或是替代的LID)、b)在該交易式位址空間1032中配置對應的交易式識別符、以及c)連結該些LID至該些交易式識別符。如同在此所揭露的,該範圍移動作業可包括移除該些交易式識別符及/或移動和該些對應的交易式識別符相關的資料至該些配置的LID。實施一作業以TRIM一或多個LID可包括在該事務映射1060中標記該些對應的交易式識別符為無效的。該對應的範圍移動作業可包括尤其是藉由從該正向索引160移除該些LID及/或儲存指出該些LID已經被移除的永久性元資料,來TRIM被映射到該些交易式識別符的LID。在圖10A的實施例中,一包括一項TRIM LID 12的請求之原子儲存請求可包括使得在該事務映射1060中之交易式識別符Z2無效。使得該交易式識別符Z2無效可包括在該事務映射1060中保持一代表該交易式識別符Z2之項目,並且將該項目標記為無效的、被刪除、被TRIM、或類似者。完成該原子儲存請求可包括:a)使得被映射到該交易式識別符Z2的LID無效(例如,使得在該正向映射160中對應於LID 12的項目及/或其它儲存元資料135無效);及/或b)配置該永久性附註366以TRIM該LID 12(例如,其係指出在被結合到LID 12的儲存位置的資料並不需要被維持在該儲存媒體140上)。
在某些實施例中,該儲存層130可進一步包括一被配置以從該儲存登錄的內容重建該儲存元資料135的重建模組1037。該重建模組1037可以響應於一導致該儲存元資料135的損失及/或毀損之失敗狀況來重建該儲存元資料135。該重建模組1037可被配置以用一登錄順序(例如,從最新的到最舊的、或是反之亦然)來掃過在該儲存位址空間144內的實體儲存位置。該重建模組1037可以存取該儲存登錄的永久性元資料114,以尤其是重建該正向映射160的LID至儲存位址的關連性。
響應於圖10A的原子儲存作業的失敗,該重建模組1037可被配置以分別根據P1-4及P6-8的內容來重建該些向量1040A及1040B。該重建模組1037可以根據該資料與該進行中的位址空間1032的識別符Z0-3及Z6-9的關連性來辨識出儲存在P9-13及/或P100-102的資料係有關於一未完成的原子儲存請求。因此,該重建模組1037可以從該正向索引160刪去該些項目,並且使得在對應的儲存位置之資料無效。或者是,該重建模組1037可以重建在該事務映射1060中之對應的項目,使得該部分的原子儲存請求可加以完成(例如,從失敗點恢復以繼續,而不是從頭重新開始該原子儲存作業)。
該重建模組1037可以進一步被配置以識別有關於一完成的原子儲存請求的資料。當在圖10A的原子儲存請求成功的完成之後重建該儲存元資料135時,該重建模組1037可以根據儲存在儲存位置109的永久性附註366來決定該些實體儲存位置P9-13及P100-102係對應於該邏輯位址空間132的LID(並且是一成功的原子儲存請求的結果)。如同以上所揭露的,該永久性附註366可包括被配置以將在P9-13及P100-102的資料關連到 向量1040A及1040B的LID之永久性元資料。於是,該重建模組1037可以進一步被配置以藉由該永久性附註366的使用來重建狀態1015C的關連性,而不論該對應的資料是否已經以一更新的上下文格式被再次寫入。
圖10B係描繪尤其是藉由在此揭露的儲存層130及聚合層530的使用所實施的原子儲存作業之另外的實施例1000B。在狀態1017A之處,一有關於一第一組的VID之原子儲存作業可加以接收。如同在狀態1017A中所繪,向量4096-4159的目標VID可能並未對應於現有的VID配置及/或資料。於是,該VAS正向映射560可能並未包含對應於VID 4096-4159的項目及/或在該中間的映射1070內的項目。
如同在狀態1017B中所繪,響應於該原子儲存請求,該原子儲存模組1035可被組態設定以配置對應於該原子儲存請求的VID(項目4096,64)。若該些所請求的項目並非可利用的(例如,已經配置給另一客戶及/或現有的資料),則該原子儲存請求可能會失敗。或者是,該原子儲存模組1035可配置一不同組的VID以實施該原子儲存請求,其可以在該原子儲存請求的完成之後被返回給該儲存客戶106。
該重新導向模組1034可被組態設定以配置對應於該些VID 4096,64之暫時的進行中的識別符9872Z,64。如同在此揭露的交易式識別符,該些進行中的識別符9872Z,64可以對應於一不同於該些目標VID的命名空間(例如,一交易式位址空間1032)、該VAS 560之一特定的區域、一分開的VAS 560、及/或類似者。該重新導向模組1034可被配置以尤其是藉由在該VAS正向映射560內之個別的項目的元資料(及/或其它儲存元資料135)的使用及/或藉由一事務映射1060(或是進行中的索引)的使用來將該些VID 4096,64連結到該些進行中的識別符9872Z,64。將該些交易式識別符9872Z,64結合到該些中間的識別符1032,64可包括將一永久性附註1066A附加至該儲存媒體140。該永久性附註1066A可包括被配置以將該些進行中的識別符關連到該些中間的識別符1032,64的永久性元資料。
在狀態1017C中,該原子儲存模組1035可被配置以實施對應於參照到該些進行中的識別符的原子儲存請求之儲存作業,其可包括重新導向(及/或轉變)該原子儲存請求的VID至對應的進行中的識別符。該些儲存作業可包括尤其是藉由該登錄儲存模組137的使用以將資料附加至該儲存媒體140。該些進行中的識別符9872Z,64可以透過該中間的映射層1070(識別符1032,64)及/或該永久性附註1066A而被結合到該被附加的資料。被附加至該儲存登錄的資料可包括被配置以將該原子儲存作業的資料結合到個別的中間的識別符1032,64的永久性元資料114。該永久性元資料114可進一步包括一被配置以識別該資料為一原子儲存請求的部分之旗標或是其它指示器。
該原子儲存請求的完成可包括一被配置以修改該被附加的資料的邏輯介面以將該資料結合至該原子儲存請求之目的地VID(VID 4096,64)的範圍移動作業。在完成該原子儲存請求的儲存作業之後,該原子儲存模組1035可以尤其是藉由:a)更新該VAS正向映射560以將該些目標VID 4096,64關連到該中間的項目1032,64;以及b)移除在該些進行中的識別符9872Z,64以及該中間的項目1032,64之間的映射,以實施該範圍移動作業。
該範圍移動作業可進一步包括解除配置該些進行中的識別符9872Z,64(例如,如同以上所揭露的,從一進行中的索引1060移除項目及 /或對應的元資料)。如同在狀態1017D中所繪,該範圍移動作業可進一步包括將另一永久性附註1066B附加至該儲存媒體140,該永久性附註1066B可被配置以識別該被附加的資料之經修改的邏輯介面。該永久性附註1066B可以將該中間的項目1032,64結合至該目的地VID範圍4096,64。該永久性附註1066B可進一步指出該原子儲存作業已成功地完成。該原子儲存模組1035可被配置以響應於在該儲存媒體140上儲存該永久性附註1066B(及/或排程該永久性附註1066B以用於儲存在例如一斷電安全的領域內)來應答該原子儲存請求的完成。
如同以上所揭露的,在某些實施例中,藉由該原子儲存模組1035所實施的範圍移動作業可包括對於該目標命名空間(例如,邏輯位址空間132)的修改。在一實施例中,例如,一原子儲存請求可包括一項TRIM一I/O向量的請求。實施該原子儲存請求可包括在該儲存登錄內儲存一如同以上所揭露的永久性附註366,該永久性附註366係被配置以TRIM一對應的進行中或是交易式識別符。該範圍移動作業可包括在該目標命名空間內實施該TRIM作業。如同在此所揭露的,該TRIM作業可包括配置該永久性附註1066B以TRIM該目標I/O向量及/或移動該儲存的TRIM命令至該目標I/O向量。
如同以上所揭露的,該永久性附註1066B可被該重建模組1037使用來在一失敗狀況的事件中重建該儲存元資料135。該重建模組1037可以重建該中間的映射1070及/或該VAS正向映射560的結合。在狀態1017D中,該重建模組1037可以藉由在該登錄內(例如,在個別的封包標頭內)和對應的資料區段一起儲存的永久性元資料114的使用來重建在1032,64以及 對應的儲存位址之間的關連性。該重建模組1037可以進一步被配置以藉由該永久性附註1066B的使用來將該些中間的位址1032,64關連到該些VID 4096,64。
如同在狀態1017E中所繪,該重建模組1037可以響應於判斷一指出該原子儲存請求的完成之永久性附註1066B並不存在於該儲存媒體140上,來識別一失敗的原子儲存作業的資料。該重建模組1037可以響應於識別被結合到中間的識別符1032,64的資料,而該些中間的識別符1032,64是:a)被結合到進行中的識別符9872Z,64、及/或b)(在個別的永久性元資料114中)被標記為原子的,以判斷該被附加的資料是一未完成的失敗的原子儲存請求的部分。作為響應的,該重建模組1037可以:a)從該中間的映射1070移除及/或刪去該項目1032,64、b)從該VAS正向映射560移除及/或刪去該項目4096,64及/或9872Z,64、及/或c)使得在該儲存媒體140上之對應的資料無效。
圖11是一種用於管理以一上下文格式儲存在一非揮發性儲存媒體上的資料的一邏輯介面之方法1100的一實施例的流程圖。
步驟1120可包括修改以一上下文格式儲存在一非揮發性儲存媒體上的資料的一邏輯介面。該邏輯介面可以在步驟1120響應於在該資料上執行一作業來加以修改,該作業可包含但不限於一複製作業、一刪除重複作業、一移動作業、或類似者。該請求可源自於一儲存客戶106、該儲存層130(例如,刪除重複模組374)、或類似者。
修改該邏輯介面可包括修改和該資料相關的LID,其可包含但不限於利用一或多個額外的LID(例如,複製、刪除重複、等等)來參照該 資料、改變和該資料相關的LID(例如,一移動)、或類似者。如上所述,該經修改的邏輯介面可能是和在該儲存媒體140上的資料的上下文格式不一致的。
步驟1120可進一步包括在該儲存媒體140上儲存一識別對於該邏輯介面的修改之永久性附註。該永久性附註可被用來使得該邏輯作業為永久性而且當機無損的,使得該資料的經修改的邏輯介面(例如,儲存元資料135)可以從該儲存媒體140的內容來加以重建(若必要的話)。步驟1120可進一步包括應答該邏輯介面已經被修改(例如,從一API呼叫返回、傳回一明確的應答、或類似者)。該應答(以及在步驟1130透過該經修改的邏輯介面的存取)係發生在該資料的上下文格式於該儲存媒體140上被更新之前。於是,該邏輯作業可以不用等待該資料被再次寫入及/或被重新安置;如同在此所揭露的,更新該資料的上下文格式可以被推遲及/或被實施在一位在該方法1100的"關鍵路徑"及/或用於服務其它儲存作業及/或請求的路徑之外的過程中。
步驟1130可包括透過步驟1120的經修改的邏輯介面來提供對於具有該不一致的上下文格式之資料的存取。如上所述,更新該資料的上下文格式以和該經修改的上下文介面一致可包括在該非揮發性儲存媒體上重新寫入及/或重新安置該資料,其可能在步驟1120的作業及/或其它相關於該經修改的邏輯介面的儲存作業上施加額外的延遲。因此,該儲存層130可被配置以在該資料的上下文格式被更新時(或是在此之前),提供對於具有該不一致的上下文格式之資料的存取。如上所述,在步驟1130提供對於該資料的存取可包括(經由一或多個間接的項目)參照及/或連結到一或多 個對應於該資料的參照項目。
步驟1140可包括更新在該儲存媒體140上的資料的上下文格式,以和步驟1120的經修改的邏輯介面一致。步驟1140可包括重新寫入及/或重新安置該資料至該儲存媒體140上的另一媒體儲存位置。如上所述,步驟1140可以利用一位在該步驟1120及/或其它藉由該儲存層130所執行的儲存請求的關鍵路徑之外的過程來加以實施;步驟1140可以藉由另一自主(autonomous)模組,例如是媒體管理模組370、刪除重複模組374、或類似者來加以實施。於是,該資料的上下文格式可以與服務其它儲存作業及/或請求無關地加以更新。就此而論,步驟1140可包括推遲該資料的上下文格式之立即的更新,而在一或多個例如是媒體管理過程的"背景"過程中更新該資料的上下文格式。替代或額外的是,更新該資料的上下文格式可以響應於其它儲存作業(例如,和其一起)來發生。例如,一修改該資料之後續的請求可以使得該資料非原地並且是用該更新後的上下文格式而被再次寫入。
步驟1140可進一步包括當該資料的上下文格式被更新時,更新儲存元資料135。當資料用更新後的上下文格式被再次寫入及/或被重新安置時,該儲存層130可以依此更新該儲存元資料135(例如,正向映射160)。如上所述,該些更新可包括移除在一參照映射460中的一或多個對於參照項目的連結、及/或以本地的項目來取代間接的項目。如同以上所揭露的步驟1140,可進一步包括響應於更新該資料的上下文格式及/或存留該儲存元資料135,以使得一永久性附註無效及/或從該儲存媒體140移除該永久性附註。
圖12是一種用於管理在一非揮發性儲存媒體上以一上下文格式儲存的資料的一邏輯介面之方法1200的另一實施例的流程圖。如同在此所揭露的,該方法1200可以藉由該儲存層130的一或多個模組及/或構件來加以實施。
步驟1220係包括選擇一儲存分區以用於恢復,例如一抹除區塊或是邏輯抹除區塊。如上所述,步驟1220的選擇可以是根據一些不同的因素,例如是缺少可供利用的儲存容量、偵測在一特定的邏輯抹除區塊內被標記為無效的資料的百分比到達一臨界值、有效的資料的整合、一錯誤偵測率到達一臨界值、改善資料的分布、資料更新、或類似者。替代或額外的是,步驟1220的選擇標準可包含該儲存分區是否包括具有一如上所述的和其之一對應的邏輯介面不一致的上下文格式的資料。
如同以上所揭露的,恢復(或回收)一儲存分區可包括抹除該儲存分區,並且重新安置其上之有效的資料(若有的話)至該非揮發性儲存媒體上的其它儲存位置。步驟1230可包括判斷將在一整理作業中被重新安置的資料的上下文格式是否應該被更新(例如,其係和該資料的邏輯介面不一致)。步驟1230可包括存取如上所述的儲存元資料135,例如是該正向映射160、參照映射460、及/或中間的位址空間,以判斷該資料的永久性元資料(例如,邏輯介面元資料)是否和該資料的儲存元資料135一致。若該永久性元資料並不和該儲存元資料135一致(例如,如上所述,關連到具有不同的LID的資料),則該流程係繼續到步驟1240;否則,該流程係繼續到步驟1250。
步驟1240可包括更新該資料的上下文格式以和該資料的邏輯介面一致。步驟1240可包括如上所述地修改該邏輯介面元資料,以參照 到一不同組的LID(及/或參照項目)。
步驟1250係包括如上所述地以一登錄格式來重新安置該資料至一不同的儲存位置,該登錄格式係保存被執行在該非揮發性儲存媒體上的儲存作業之一排序的順序。於是,當重建該儲存元資料135時(若必要的話),該被重新安置的資料(具有該更新後的上下文格式)可以被認定為該資料之有效且最新的版本。如同在此所揭露的,步驟1250可進一步包括更新該儲存元資料135以將該資料的邏輯介面結合到該資料的新的媒體儲存位置、移除對於具有該不一致的上下文格式的資料之間接及/或參照項目、等等。
圖13是一種用於管理以一上下文格式儲存的資料的邏輯介面之方法1300的另一實施例的流程圖。步驟1315可包括識別在一或多個儲存裝置120上之重複的資料。步驟1315可藉由一操作在該儲存層130內之刪除重複模組374來加以執行。或者是,步驟1320可以在儲存作業被執行時,藉由該儲存層130來加以執行。
步驟1315可包括判斷及/或驗證該儲存媒體140是否包括重複的資料(或是已經包括一寫入及/或修改請求的資料)。於是,步驟1320可以發生在一儲存作業的路徑內(例如,在重複的資料被寫入至該儲存媒體140的當下或是之前)及/或可以發生在服務儲存作業的路徑之外(例如,識別已經儲存在該儲存媒體140上的重複的資料)。步驟1320可包括在儲存元資料135中產生及/或維持資料簽名、以及利用該簽名來識別重複的資料。
響應於在步驟1315的識別該重複的資料,該儲存層130(或是其它模組,例如是該刪除重複模組374)可以修改該資料的一拷貝的一邏 輯介面,使得單一拷貝可以被兩組(或是更多組)的LID所參照。在步驟1320對於該邏輯介面的修改可包括如上所述的更新儲存元資料135及/或在該非揮發性儲存媒體135上儲存一永久性附註。步驟1320可進一步包括如上所述的使得在該非揮發性儲存媒體上的該資料的其它拷貝無效及/或加以移除。
在該儲存媒體140上的資料的上下文格式可能是和該經修改的邏輯介面不一致。因此,步驟1330及1340可包括如上所述的透過該經修改的邏輯介面來提供對於具有該不一致的上下文格式的資料之存取、以及更新在該儲存媒體140上的資料的上下文格式。
圖14是一藉由在此揭露的儲存層130所實施的範圍合併作業的一實施例的流程圖。步驟1410可包括在一邏輯位址空間132內複製一組的LID。複製該些LID可包括透過兩組或多個不同組的LID來參照在該儲存媒體140上(例如,相同的儲存位置及/或儲存位址)之相同組的資料。該兩組或多個組可包含一工作組的LID以及一原始的一致組的LID。該工作組的LID可被用來執行檔案的修改作業,並且該原始的一致組的LID可被配置以維持該資料之一原始未修改的狀態。
如同以上所揭露的,在步驟1410複製的資料可以藉由一組的LID加以參照,該組LID可被結合到該資料在該儲存媒體140上的儲存位置。步驟1410可包括在該邏輯位址空間132內及/或在一分開的位址空間內配置一或多個其它組的LID。該一或多個其它組的LID可包括一邏輯容量是等同於原始組的LID的邏輯容量(例如,包含相同數目的LID及/或對應於相同量的儲存容量)。步驟1410可進一步包括將該一或多個其它組的LID的 邏輯識別符關連及/或結合到和該原始組的LID所參照的相同的資料。於是,步驟1410可包括修改該資料的邏輯介面,以將該資料關連到兩個或多個不同組的LID。在某些實施例中,步驟1410係包括在該邏輯位址空間132內配置一或多組的LID、以及將該些LID結合到相同組的儲存位址。替代或額外的是,步驟1410可包括如同結合圖4A-E所揭露的在一參照映射460內產生一或多個參照項目,以透過一或多個參照項目來將該兩個或多個不同組的LID的LID間接連結至該儲存位址。或者是,步驟1410可藉由一或多個中間的映射層(例如,如同結合圖5A-B所揭露者)的使用來加以實施。步驟1410可進一步包括尤其是透過和該些LID相關的元資料984及/或994來連結該兩個或多個組的LID。該元資料984及/或994可被配置以指出該些LID組是代表相同的儲存實體的複製(例如,相同的檔案的版本)。該元資料984及/或994可以進一步被配置以指明及/或參照到一如同以上所揭露的用於該兩個或多個組的LID之合併策略。
步驟1410可進一步包括在該儲存媒體140上儲存一永久性附註366,該永久性附註366係被配置以使得步驟1410的複製作業是永久性而且當機無損的。該永久性附註366可被配置以指出該資料的經修改的邏輯介面(例如,將該資料關連到該兩個或多個組的LID)、指出該複製作業的一合併策略、與類似者。
步驟1420可包括在步驟1410的不同的LID範圍中的一或多個內執行儲存作業。該些儲存作業可以響應於從一或多個儲存客戶106透過該介面131接收到的請求來加以執行。該些儲存作業可包括將資料附加至該儲存媒體140。因此,該些儲存作業可包括修改在LID組的一或多組中 的LID以及在該儲存媒體140上的儲存位置之間的關連性及/或結合。修改該關連性及/或結合可進一步包括將在LID組的一或多組中的LID直接及/或透過一或多個間接的參照及/或映射層來映射到該被附加的資料。
步驟1430可包括如同以上所揭露的合併該些LID組。如同以上所揭露的,合併LID組可包括將在該些LID範圍中之一所做的修改納入到該些LID組中的一或多組。步驟1430可進一步包括根據一合併策略來解決一或多個合併衝突。在某些實施例中,合併係包括刪除該些LID組中的一或多組(例如,使得其無效),其可包括從該正向映射160移除項目、從一參照計數資料結構移除對於儲存位置之共用的參照、從一參照映射460移除參照項目、移除在一中間的映射層中的參照、及/或類似者。步驟1430可進一步包括如同以上所揭露地修改該經合併的資料的一邏輯介面。該經修改的邏輯介面可以更新該些被用來參照到原先關於該些LID組中的一或多組所儲存的資料之LID。該經修改的邏輯介面可能是和在該儲存媒體140上的資料之上下文格式不一致的。因此,步驟1430可包括將一或多個永久性附註366附加在該儲存媒體140上,以將經合併的資料關連到該資料之一更新的邏輯介面(例如,將原先相關在第二組中的LID所儲存的資料關連到在第一組中的LID)。步驟1430可進一步包括如同以上所揭露的提供對於具有該不一致的上下文格式的資料之存取、及/或在一或多個背景作業中更新該資料的上下文格式。
圖15是一種用於範圍合併作業之方法1500的另一實施例的流程圖。步驟1520可包括接收一請求來產生一LID範圍的一邏輯拷貝。該請求可以從一儲存客戶106透過一介面131來加以接收,且/或可以是一由 該儲存層130所提供的較高階的API的部分。該請求可包含該複製的一"作業模式",其可包含但不限於該些複製將會是如何同步化(若有的話);合併是如何發生的(合併策略);該邏輯拷貝是否將被標明為短暫的;等等。
步驟1530可包括在該邏輯位址空間132中配置LID以服務該請求。步驟1530的配置可進一步包括保留實體儲存空間以容納對於該複製的LID範圍的改變。實體儲存空間的保留可以是以該複製的作業模式為基礎的。譬如,若所有的改變將在該複製以及該原始的位址範圍之間被同步化,則實體儲存空間的一小部分(若有的話)可被保留。或者是,該儲存層130可以保留額外的實體儲存容量,以用於具有一衝突時拷貝的合併策略之邏輯拷貝作業。步驟1530可進一步包括將該複製配置在該邏輯位址空間132的一指定的部分或區段內(例如,一專用於邏輯拷貝及/或複製作業的範圍)。於是,步驟1530可包括配置一第二不同組的LID以複製一第一組的LID。
步驟1540可包括更新對應於該複製的資料的邏輯介面,以參照到被結合至該資料之原始的LID以及在步驟1530被配置的複製的LID兩者。步驟1540可包括如同以上所揭露的在該儲存媒體140上儲存一永久性附註366。
步驟1550係包括接收一儲存請求並且判斷該儲存請求是否有關於一在該第一及/或第二組(複製的LID範圍)中的LID。若是的話,則該流程係繼續於步驟1560;否則,該流程係維持在步驟1550。
步驟1560可包括判斷何種作業(若有的話)將在其它相關的LID範圍上進行(例如,同步化配置作業、等等)。步驟1560的判斷可包括存取元資料984及/或994,其可包括及/或參照到該複製的同步策略。
步驟1570可包括執行在步驟1560所判斷的作業(若有的話)以及所請求的儲存作業。若該些同步作業中的一或多個無法加以執行(例如,用於該些複製中的一或多個之額外的邏輯位址空間132無法被配置),則該基礎的儲存作業可能會失敗。
圖16是一種用於實施範圍複製及/或範圍合併作業之方法1600的另一實施例的流程圖。步驟1610可包括如同以上所揭露地複製一LID範圍。步驟1610可包括複製一組和儲存在該儲存媒體140上之個別的儲存位址的資料相關的LID。因此,步驟1610可包括將兩個或多個不同組的LID關連到相同組的儲存位置(例如,相同的資料)。步驟1610可進一步包括如同以上所揭露的在該儲存媒體140上儲存一或多個永久性附註366及/或以一更新的上下文格式重新寫入該資料。步驟1610可包含尤其是透過元資料984及/或994來連結該兩個或多個組的LID。如同以上所揭露的,該元資料984及/或994可包括及/或參照到一複製同步策略、合併策略、及/或類似者。
步驟1620可包括執行關於該兩個或多個複製的LID範圍中的一或多個的儲存作業。步驟1620可包括同步化在該些複製的範圍之間的配置作業。步驟1620的儲存作業可包括將資料附加至該儲存媒體140及/或將該被附加的資料關連到該些不同的LID範圍中的一或多個的LID。
步驟1630係包括接收一請求以合併步驟1610的兩個或多個LID範圍。該合併請求可以透過該介面131來加以接收,且/或可以是另一例如原子儲存作業或類似者之較高階的作業的部分。
步驟1640可包括識別在該兩個或多個組的LID之間的合併衝突(若有的話)。識別合併衝突可包括識別在該兩個或多個複製的LID範圍 中的超過一個LID範圍內被修改的LID。參照回圖9C,步驟1640可包括在狀態941D中響應於判斷在範圍914中的LID 072-073係被修改,在範圍924中之對應的LID 972-973也被修改來識別一合併衝突。就此而論,步驟1640可包括比較在該些LID複製內的修改,以識別出其中相衝突的修改將會在該合併作業中映射到相同的LID之情形。
步驟1650可包括解決在步驟1640所識別出的合併衝突。步驟1650可包括決定一可應用的合併策略,其如同以上所揭露的可以決定合併衝突將如何加以解決。該合併策略可以指明一LID的哪一個版本係內含在合併後的LID範圍中,且/或衝突是否藉由維持該些LID範圍之個別的複製來加以解決。步驟1650可進一步包括如同以上所揭露的根據該解決的合併衝突來合併該些LID範圍。
圖17是一種用於實施原子儲存作業之方法1700的一實施例的流程圖。步驟1710可包括存取一對應於一原子儲存請求的一第一組的識別符之第二組的識別符。步驟1710可以響應於一相關該第一組的識別符(例如,目標LID、VID、或類似者)的原子儲存請求來加以執行。該第一組的識別符可以對應於儲存在該儲存媒體140上之現有的資料。或者是,該原子儲存請求可包括一項請求以在該邏輯位址空間132或是VAS 532內配置該第一組的識別符中的某些個(或是全部)。該原子儲存請求可以對應於複數個有關於LID及/或VID之不同且不相交的向量的儲存作業。於是,該第一組的識別符可包括複數個不相交的I/O向量。
在某些實施例中,步驟1710係包括在一分開的位址空間,例如是一交易式位址空間1032、中間的索引1070、VAS 532、或類似者中配 置對應於該第一組的識別符之識別符。或者是,步驟1710可包括在該邏輯位址空間132之一特定的範圍或區域內配置識別符。步驟1710可包括配置具有和該第一組的識別符相同的量及/或邏輯容量之一對應組的識別符。如同在此所揭露的,該第二組的識別符可以尤其是藉由該重新導向模組1034的使用來加以存取及/或配置。如同在此所揭露的,步驟1710可進一步包含尤其是藉由一事務映射1060的使用來連結該第一及第二組的識別符。
步驟1710可進一步包括實施一範圍複製作業以將該第二組的識別符結合到該第一組的識別符的資料(若有的話)。該範圍複製作業可以利用在此揭露的實施例的任一個來加以實施,其包含但不限於圖3A-E的範圍複製之實施例、圖4A-E的參照項目之實施例、及/或圖5A-B之中間的映射層的實施例。
步驟1720可包括實施參照到在步驟1710被存取的第二組的識別符之原子儲存請求的儲存作業。步驟1720可包括將儲存作業從該第一組的識別符重新導向至該第二組的識別符(例如,如同在此所揭露的,在該第一及第二組的識別符之間轉變)。步驟1720的儲存作業可包括尤其是藉由該登錄儲存模組137的使用來在該儲存媒體140上儲存資料。步驟1720的儲存作業可包含但不限於a)配置儲存資源的作業(例如,配置邏輯及/或實體儲存資源的作業)、b)解除配置儲存資源的作業(例如,TRIM、永久性TRIM、及/或類似者)、c)寫入資料至該儲存登錄、d)修改儲存在該儲存媒體140上之現有的資料、e)覆寫儲存在該儲存媒體140上的資料、及/或類似者。該登錄儲存模組136可被配置以在該儲存位址空間144內,非原地實施該些儲存作業,使得被配置以修改、覆寫、及/或取代儲存在該儲存媒體140上之 現有的資料的作業係被附加至該儲存登錄,而將被該附加的資料所修改、覆寫、及/或取代的資料係在該儲存媒體140上維持不變的。
在步驟1720被寫入至該儲存媒體140的資料可包括被配置以指出該資料的邏輯介面之永久性元資料114。該永久性元資料114可被配置以將該資料結合至在步驟1710被存取的第二組的識別符。替代或額外的是,該永久性元資料114可被配置以將該被附加的資料結合到一中間的位址空間的識別符,其尤其是透過一儲存在該儲存登錄內的永久性附註366而被結合到該第二組的識別符。在某些實施例中,該永久性元資料114可以進一步被配置以指出該資料是一原子儲存作業的部分。替代或額外的是,該資料可以藉由該永久性元資料114的使用(例如,透過在該資料以及該第二組的識別符之間的關連性)而被認定為一原子儲存作業的部分。
步驟1730可包括完成該原子儲存請求。該原子儲存請求的完成可包括一被配置以將在步驟1720中參照到該第二組的識別符所實施的儲存作業之資料移動至該第一組的目標識別符之範圍移動作業。該範圍移動作業可以在單一原子寫入作業中完成。該單一原子寫入作業可包括一作業以在該儲存媒體140上儲存永久性元資料(例如,一永久性附註366及/或1066B)。該永久性元資料可被配置以修改在步驟1720所寫入的資料的邏輯介面,以將該資料結合至該第一組的識別符(例如,該原子儲存請求的目標LID或VID)。該永久性元資料可被配置以修改複數個不同的儲存向量的邏輯介面(例如,複數個不同且不連續組的識別符)。步驟1730可進一步包括更新儲存元資料135以透過該第一組的識別符來參照到該被附加的資料,其可包括修改在該正向索引160、參照映射460、中間的映射層1070、及/ 或類似者中的一或多個映射。
步驟1730可進一步包括以一上下文格式來重新寫入在1720儲存的資料,該上下文格式係被配置以將該資料關連到該第一組的邏輯識別符。該資料可以在一或多個背景儲存作業中被再次寫入。在該資料被再次寫入之前,該儲存層130及/或聚合層530可以透過該第一組的識別符來提供對於該資料的存取。
步驟1730可進一步包括應答該原子儲存請求的完成。可以響應於在該儲存媒體140上儲存該永久性元資料(永久性附註366及/或1066B)及/或在合理的確定性下判斷該永久性元資料將會被儲存在該儲存媒體140上來應答完成。
圖18是一種用於原子儲存作業之方法1800的另一實施例的流程圖。步驟1810可包括接收一原子儲存請求。該原子儲存請求可以在該儲存層130尤其是透過該儲存介面131來加以接收。或者是,該原子儲存請求可以透過該聚合層530的介面531來加以接收。該原子儲存請求可包括複數個將在個別的I/O向量內被執行的原子儲存作業,每一個I/O向量可以對應於一不同的個別的目標組的LID及/或VID。
步驟1820可包括實施該原子儲存請求的關於一組事務或是進行中的識別符的儲存作業。該些交易式識別符可以對應於該邏輯位址空間132之一特定的區域;一VAS 532(或是在一特定的VAS 532內之區域);一分開的命名空間,例如在以上揭露的交易式位址空間1032;及/或類似者。步驟1820可包括配置及/或識別對應於該原子儲存請求的目標識別符之交易式識別符;該些交易式識別符可包括複數個對應於一向量化原子儲存請求 的I/O向量之識別符範圍及/或範疇。在某些實施例中,該些交易式識別符可以被配置及/或識別在不同於該些目標識別符的範圍及/或範疇中。例如,被用來實施一對應於兩個不連續的LID範圍1024-2048及6144-7186的原子儲存作業的交易式識別符可被實施在單一範圍的短暫的識別符10240-12288內、或是在複數個較小的範圍及/或範疇的交易式識別符內。該些交易式識別符可以尤其是藉由儲存元資料135的使用而被連結至該些目標識別符。在某些實施例中,該些交易式識別符係在一事務映射1060中被連結至該些目標識別符。該事務映射1060可以進一步被配置以將該些交易式識別符結合到對應於該些目標LID及/或VID的儲存位置。
步驟1820可進一步包括實施該原子儲存請求的參照到該些交易式識別符之儲存作業。該些原子儲存作業中的一或多個可以是以在一例如是邏輯位址空間132、VAS 32、或類似者之目標或是目的地命名空間內的資源可利用性為基礎。在某些實施例中,例如,該原子儲存請求可包括一項請求以配置一特定組的LID。因此步驟1820可包括尤其是藉由一或多個如同以上所揭露的永久性附註366的使用來暫時保留在一目標命名空間內之邏輯容量。步驟1820可進一步包括如同以上所揭露的配置及/或保留對應的交易式識別符。響應於該配置作業的失敗,該原子儲存模組1035可以:a)使得該原子儲存請求失敗、或是b)在該目標命名空間內配置及/或保留一不同組的目標LID,其可在該原子儲存作業的完成之後被歸還。
步驟1820的儲存作業可進一步包括關連到永久性元資料114以將資料附加至該儲存登錄,該永久性元資料114係被配置以識別該資料為一原子儲存作業的部分。該永久性元資料可包括步驟1810的交易式識 別符。替代或額外的是,該永久性元資料可包括一被配置以指出該資料是一未完成的原子儲存作業的部分之原子儲存旗標(或是其它資料)。
步驟1830可包括完成該原子儲存請求。步驟1830可包括關閉在步驟1820所實施的原子儲存請求。關閉該原子儲存請求可包括執行一範圍移動作業以將步驟1820的儲存作業的資料結合至該些目標識別符,此可包括更新儲存元資料135以將該些目標識別符映射到在步驟1820的儲存作業中所儲存的資料。如同以上所揭露的,該範圍移動作業可進一步包括在該目標命名空間內實施一或多個TRIM作業。完成該原子儲存請求可進一步包括在該儲存媒體140上儲存永久性元資料,該永久性元資料係被配置以:a)將該原子儲存請求的資料結合至該些目標識別符、及/或b)指出該原子儲存請求已經完成。該永久性元資料可以在單一儲存作業中被附加至該儲存登錄(例如,在一永久性附註366及/或1066B中)。步驟1830可進一步包括應答該原子儲存請求的完成。可以響應於完成該範圍移動作業及/或儲存該對應的永久性元資料來應答完成。
圖19是一種用於原子儲存作業之方法1900的另一實施例的流程圖。步驟1910可包括存取在該儲存媒體140上的儲存登錄。步驟1910可以藉由該重建模組1037來加以執行,以在一失敗狀況後重建該儲存元資料135。該重建模組1037可被配置以根據該儲存登錄的登錄順序來存取該儲存登錄。該重建模組1037可被配置以識別在該儲存登錄內的上一個附加點,並且以一相反的登錄順序(例如,從該登錄的頭端朝向尾端)來掃過該儲存登錄。
步驟1920可包括識別一未完成的原子儲存請求的資料。步 驟1920可包括識別被結合到一事務及/或進行中的位址空間1032的事務或是進行中的識別符及/或識別符之資料。步驟1920可包括存取和資料區段一起儲存在該儲存登錄中的永久性元資料114。步驟1920可進一步包括判斷在該儲存登錄內的其它永久性元資料無法修改該識別出的資料結合(例如,並未將該些資料區段關連到在一例如是該邏輯位址空間132及/或VAS 532之不同的位址空間中的識別符)。
步驟1930可包括從該儲存元資料135刪除該識別出的資料區段,其可包含使得包括該資料的儲存位置無效、以及從該正向映射160、中間的映射層1070、及/或類似者刪除對應於該些資料區段的項目。因此,步驟1930可包括退回一失敗的原子儲存作業,使得該部分完成的原子儲存作業的資料並不會影響到該些目標識別符及/或命名空間。
本揭露內容已經參考各種範例的實施例來加以做成。然而,熟習此項技術者將會體認到可以對於該些範例實施例做成改變及修改,而不脫離本揭露內容的範疇。例如,各種的作業步驟以及用於實行作業步驟之構件可以根據特定的應用或是考慮到任意數目的和該系統的作業相關的成本函數而用替代的方式來加以實施(例如,該些步驟中的一或多個可被刪除、修改、或是和其它步驟組合)。因此,本揭露內容係欲以舉例說明的意思而不是限制性的意思來視之,因而所有此種修改都欲內含在本揭露內容的範疇內。同樣地,益處、其它優點、以及問題的解決方案已經在以上相關於各種的實施例來加以敘述。然而,益處、優點、問題的解決方案、以及可以使得任何益處、優點或解決方案發生或是變成更顯著的任何元件並不欲被解釋為一關鍵的、所需的、或是重要的特點或元件。如同在此所用 的,該些術語"包括"、"包含"以及其之任何其它變化係欲覆蓋一種非排他性的包含,使得包括元件的一表列之一過程、一方法、一物件、或是一裝置並不只有包含那些元件而已,而是可包含其它未明確被列出或是此種過程、方法、系統、物件、或是裝置所固有的元件。再者,如同在此所用的,該些術語"被耦接"、"耦接"以及其之任何其它變化係欲覆蓋一實體連接、一電連接、一磁性連接、一光學連接、一通訊連接、一功能連接、及/或任何其它連接。
此外,如同具有此項技術的通常知識者將會體認到的,本揭露內容的原理可被反映在一機器可讀取的儲存媒體上的一種電腦程式產品中,其係具有被體現在該儲存媒體中之機器可讀取的程式碼手段。任何實體非暫態的機器可讀取的儲存媒體都可被利用,其包含磁性儲存裝置(硬碟、軟碟片與類似者)、光學儲存裝置(CD-ROM、DVD、藍光碟片與類似者)、快閃記憶體、及/或類似者。這些電腦程式指令可被載入到一般用途電腦、特殊用途電腦、或是其它可程式化的資料處理裝置上以產生一機器,使得在該電腦或是其它可程式化的資料處理裝置上執行的指令係產生用於實施所指明的功能之手段。這些電腦程式指令亦可被儲存在一機器可讀取的記憶體中,其可以導引一電腦或是其它可程式化的資料處理裝置以一特定的方式運作,使得儲存在該機器可讀取的記憶體中的指令產生一產品,其包含實施所指明的功能之實施手段。該些電腦程式指令亦可被載入到一電腦或是其它可程式化的資料處理裝置上,以使得一系列的作業步驟能夠在電腦或是其它可程式化的裝置上被執行以產生一電腦實施的過程,使得執行在該電腦或是其它可程式化的裝置上的指令係提供用於實施所指明的功能 之步驟。
儘管本揭露內容的原理已經在各種的實施例中加以展示,但是針對一特定的環境及作業需求而特別被調適的結構、配置、比例、元件、材料以及構件的許多修改亦可被使用,而不脫離本揭露內容的原理及範疇。這些及其它的改變或修改係欲內含在本揭露內容的範疇內。
130‧‧‧儲存層
131‧‧‧介面
132‧‧‧邏輯位址空間
134‧‧‧轉換模組
135‧‧‧儲存元資料
136‧‧‧登錄儲存模組
139‧‧‧儲存控制器
140‧‧‧儲存媒體
141‧‧‧儲存裝置
144‧‧‧儲存位址空間
160‧‧‧正向映射
1000A‧‧‧系統
1015A‧‧‧狀態
1015B‧‧‧狀態
1015C‧‧‧狀態
1015D‧‧‧狀態
1032‧‧‧事務位址空間
1034‧‧‧重新導向模組
1035‧‧‧原子儲存模組
1036‧‧‧事務模組
1037‧‧‧重建模組
1040A‧‧‧向量
1040B‧‧‧向量
1042A‧‧‧向量
1042B‧‧‧向量
1060‧‧‧事務映射
1062A‧‧‧結合
1062B‧‧‧結合
1064A‧‧‧連結
1064B‧‧‧連結
P1-P13‧‧‧儲存位址(位置)
P100-102‧‧‧儲存位址(位置)
Z0-3‧‧‧交易式識別符
Z6-8‧‧‧交易式識別符

Claims (20)

  1. 一種方法,其係包括:連結交易式識別符至一原子儲存請求的目標識別符;將該原子儲存請求的儲存作業重新導向至該些交易式識別符;以及響應於完成該原子儲存請求的該些儲存作業以從該些交易式識別符移動該些經重新導向的儲存作業的資料至該些目標識別符。
  2. 如申請專利範圍第1項之方法,其中該些儲存作業係包括將具有元資料的資料附加至一儲存媒體,該元資料係被配置以關連該被附加的資料與該些交易式識別符中的一或多個。
  3. 如申請專利範圍第2項之方法,其中移動該被附加的資料係包括在該儲存媒體上儲存元資料,該元資料係被配置以關連該被附加的資料與該些目標識別符。
  4. 如申請專利範圍第1項之方法,其中該些儲存作業係包括在一非揮發性儲存媒體上儲存具有元資料的資料,該元資料係被配置以結合該所儲存的資料與一或多個和個別的交易式識別符相關之中間的識別符。
  5. 如申請專利範圍第4項之方法,其中移動該所儲存的資料係包括在該非揮發性儲存媒體上儲存一永久性附註,該永久性附註係被配置以將該一或多個中間的識別符結合到個別的目標識別符。
  6. 如申請專利範圍第1項之方法,其進一步包括響應於移動該些經重新導向的儲存作業的該資料以應答該原子儲存請求的完成。
  7. 一種裝置,其係包括:一被配置以映射一第二組的識別符至一儲存請求的一第一組的邏輯識 別符之重新導向模組;一被配置以在一儲存裝置上,於該第二組的識別符內執行該儲存請求的儲存作業之登錄儲存模組;以及一被配置以移動該儲存請求的該些儲存作業至該第一組的邏輯識別符之原子儲存模組。
  8. 如申請專利範圍第7項之裝置,其中該原子儲存模組係被配置以藉由儲存永久性元資料至該儲存裝置來移動該些儲存作業,並且其中該永久性元資料係被配置以將儲存在和該第二組的識別符相關的該儲存裝置上的資料區段結合至該第一組的識別符。
  9. 如申請專利範圍第8項之裝置,其中該原子儲存模組係被配置以響應於判斷該永久性元資料將會被儲存在該儲存裝置上來應答該儲存請求的完成。
  10. 如申請專利範圍第8項之裝置,其中該第一組的識別符係包括複數個不相交的組的邏輯識別符,並且其中該永久性元資料係包括單一永久性附註,該永久性附註係被配置以將該些資料區段結合到在該複數個不相交的組的邏輯識別符之內的個別的邏輯識別符。
  11. 如申請專利範圍第7項之裝置,其中該重新導向模組係被配置以將該第二組的識別符配置在一不同於該第一組的識別符的一位址空間之位址空間之內。
  12. 如申請專利範圍第7項之裝置,其中該重新導向模組係被配置以將該第二組的識別符配置在該第一組的識別符的一位址空間的一指定的區域之內。
  13. 如申請專利範圍第7項之裝置,其中該第二組的識別符係對應於一交易式位址空間,該裝置進一步包括一被配置以使得和該交易式位址空間的識別符相關的資料區段無效之重建模組。
  14. 如申請專利範圍第7項之裝置,其中該原子儲存模組係被配置以響應於移動一被配置以使得該第二組的識別符中的該些識別符中之一的資料無效之儲存作業,以使得在該第一組的識別符之內的該些識別符中之一無效。
  15. 如申請專利範圍第7項之裝置,其中該登錄儲存模組係被配置以將資料區段附加至在該儲存裝置上的資料區段之一排序的登錄,並且其中該登錄儲存模組係被配置以將一並不相關於該儲存請求之資料區段附加在該儲存請求於資料區段的該排序的登錄內的兩個或多個資料區段之間。
  16. 一種系統,其係包括:用於接收一有關於一組目的地邏輯識別符的原子儲存請求之裝置;用於連結一組交易式識別符至該目的地組的邏輯識別符之裝置;用於附加複數個相關於該原子儲存請求的資料封包至一在一儲存裝置上的順序的儲存登錄之裝置,其中該些資料封包係包括被配置以關連該些資料封包與個別的交易式識別符的永久性元資料;以及用於附加一永久性附註至該儲存登錄之裝置,其中該永久性附註係被配置以將該複數個資料封包關連到個別的目的地邏輯識別符,該複數個資料封包係包括被配置以關連該些資料封包與個別的交易式識別符的永久性元資料。
  17. 如申請專利範圍第16項之系統,其進一步包括用於映射該組目的地 邏輯識別符的邏輯識別符至個別的交易式識別符之裝置。
  18. 如申請專利範圍第16項之方法,其進一步包括用於將該些交易式識別符中的一或多個結合至一和一邏輯識別符相關的儲存位置之裝置,該邏輯識別符係被連結至該個別的一或多個交易式識別符。
  19. 如申請專利範圍第16項之系統,其進一步包括用於響應於附加該永久性附註以提供對於該些包括該永久性元資料的資料封包的存取之裝置,該永久性元資料係被配置以利用個別的指定邏輯識別符來關連該些資料封包與個別的交易式識別符。
  20. 如申請專利範圍第16項之系統,其中該些目的地邏輯識別符係對應於一邏輯位址空間,並且其中該些交易式識別符係對應於一不同的交易式位址空間,該系統進一步包括:用於藉由該些資料封包的永久性元資料的使用以重建在該邏輯位址空間的邏輯識別符以及在該儲存裝置上的資料封包之間的映射的一索引之裝置;以及用於使得和對應於該不同的交易式位址空間之交易式識別符相關的資料封包無效之裝置。
TW103126178A 2013-08-01 2014-07-31 用於原子儲存作業之系統、裝置及方法 TWI630494B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361861314P 2013-08-01 2013-08-01
US61/861,314 2013-08-01
US14/313,933 US9842128B2 (en) 2013-08-01 2014-06-24 Systems and methods for atomic storage operations
US14/313,933 2014-06-24

Publications (2)

Publication Number Publication Date
TW201520792A true TW201520792A (zh) 2015-06-01
TWI630494B TWI630494B (zh) 2018-07-21

Family

ID=52428616

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103126178A TWI630494B (zh) 2013-08-01 2014-07-31 用於原子儲存作業之系統、裝置及方法

Country Status (7)

Country Link
US (1) US9842128B2 (zh)
JP (1) JP6243028B2 (zh)
KR (1) KR101769465B1 (zh)
CN (1) CN105453021B (zh)
DE (1) DE112014003152T5 (zh)
TW (1) TWI630494B (zh)
WO (1) WO2015017398A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI673722B (zh) * 2017-05-30 2019-10-01 美商司固科技公司 具有可原地重寫之記憶體的資料儲存裝置

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140067869A1 (en) 2012-08-30 2014-03-06 Atheer, Inc. Method and apparatus for content association and history tracking in virtual and augmented reality
US9535915B2 (en) * 2014-07-11 2017-01-03 Quantum Corporation Immediate recovery of virtual machine using deduplication device and snapshots
US9378049B1 (en) 2015-02-12 2016-06-28 Amazon Technologies, Inc. Servicing I/O requests in an I/O adapter device
US10049001B1 (en) * 2015-03-27 2018-08-14 Amazon Technologies, Inc. Dynamic error correction configuration
US9886405B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Low latency write requests over a network using a pipelined I/O adapter device
US9940284B1 (en) 2015-03-30 2018-04-10 Amazon Technologies, Inc. Streaming interconnect architecture
US9864538B1 (en) 2015-06-25 2018-01-09 Amazon Technologies, Inc. Data size reduction
US11169707B2 (en) 2016-01-22 2021-11-09 Netapp, Inc. Garbage collection pacing in a storage system
US10466907B2 (en) * 2016-03-22 2019-11-05 Toshiba Memory Corporation Method to efficiently store object data of an object storage service on a magnetic disk drive and magnetic SMR disk drive
US10838630B2 (en) * 2016-04-18 2020-11-17 Netapp, Inc. Write-ahead log maintenance and recovery
US9842060B1 (en) * 2016-07-13 2017-12-12 Seagate Technology Llc Cache over-provisioning in a data storage device
CN107704462B (zh) * 2016-08-08 2021-07-06 阿里巴巴集团控股有限公司 资源的元数据维护方法、设备及存储装置
US10282297B2 (en) * 2017-02-08 2019-05-07 Arm Limited Read-with overridable-invalidate transaction
CN106951961B (zh) * 2017-02-24 2019-11-26 清华大学 一种粗粒度可重构的卷积神经网络加速器及系统
CN108628761B (zh) * 2017-03-16 2022-04-22 北京忆恒创源科技股份有限公司 原子命令执行方法与装置
US10318202B2 (en) * 2017-03-20 2019-06-11 Via Technologies, Inc. Non-volatile memory apparatus and data deduplication method thereof
EP3493069B1 (en) * 2017-11-29 2021-02-17 ARM Limited Resource allocation for atomic data access requests
CN110019097B (zh) * 2017-12-29 2021-09-28 中国移动通信集团四川有限公司 虚拟逻辑副本管理方法、装置、设备及介质
US10761978B2 (en) * 2018-10-25 2020-09-01 Micron Technology, Inc. Write atomicity management for memory subsystems
CN111258770B (zh) * 2018-11-30 2023-10-10 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
US11042323B2 (en) * 2019-06-29 2021-06-22 Intel Corporation Offload defrag operation for host-managed storage
CN112748860B (zh) * 2019-10-30 2024-04-12 伊姆西Ip控股有限责任公司 用于存储管理的方法、电子设备和计算机程序产品
US11640371B2 (en) * 2020-03-12 2023-05-02 Western Digital Technologies, Inc. Snapshot management in partitioned storage
CN111930828B (zh) * 2020-05-29 2024-01-19 武汉达梦数据库股份有限公司 一种基于日志解析的数据同步方法和数据同步系统
CN112307033B (zh) * 2020-11-23 2023-04-25 杭州迪普科技股份有限公司 数据包文件的重构方法、装置及设备
CN113886310A (zh) * 2021-11-02 2022-01-04 上海兆芯集成电路有限公司 桥接模块、数据传输系统和数据传输方法
US11853592B2 (en) * 2022-04-07 2023-12-26 Dell Products L.P. Reversible write techniques using physical storage device offloading

Family Cites Families (275)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB123416A (en) 1918-02-28 1919-02-27 John Buchanan Composite Valve for all Classes of Internal Combustion Engines.
US4571674A (en) 1982-09-27 1986-02-18 International Business Machines Corporation Peripheral storage system having multiple data transfer rates
US5359726A (en) 1988-12-22 1994-10-25 Thomas Michael E Ferroelectric storage device used in place of a rotating disk drive unit in a computer system
US5247658A (en) 1989-10-31 1993-09-21 Microsoft Corporation Method and system for traversing linked list record based upon write-once predetermined bit value of secondary pointers
US5261068A (en) 1990-05-25 1993-11-09 Dell Usa L.P. Dual path memory retrieval system for an interleaved dynamic RAM memory unit
US5193184A (en) 1990-06-18 1993-03-09 Storage Technology Corporation Deleted data file space release system for a dynamically mapped virtual data storage subsystem
US5307497A (en) 1990-06-25 1994-04-26 International Business Machines Corp. Disk operating system loadable from read only memory using installable file system interface
JP3227707B2 (ja) 1990-12-29 2001-11-12 日本電気株式会社 走行モード別キャッシュメモリ制御方式
US5325509A (en) 1991-03-05 1994-06-28 Zitel Corporation Method of operating a cache memory including determining desirability of cache ahead or cache behind based on a number of available I/O operations
US5438671A (en) 1991-07-19 1995-08-01 Dell U.S.A., L.P. Method and system for transferring compressed bytes of information between separate hard disk drive units
JPH05197605A (ja) * 1991-10-03 1993-08-06 Mitsubishi Electric Corp ファイルシステム
US5469555A (en) 1991-12-19 1995-11-21 Opti, Inc. Adaptive write-back method and apparatus wherein the cache system operates in a combination of write-back and write-through modes for a cache-based microprocessor system
US6256642B1 (en) 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
US5596736A (en) 1992-07-22 1997-01-21 Fujitsu Limited Data transfers to a backing store of a dynamically mapped data storage system in which data has nonsequential logical addresses
US5845329A (en) 1993-01-29 1998-12-01 Sanyo Electric Co., Ltd. Parallel computer
US5459850A (en) 1993-02-19 1995-10-17 Conner Peripherals, Inc. Flash solid state drive that emulates a disk drive and stores variable length and fixed lenth data blocks
JP2856621B2 (ja) 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
JP2784440B2 (ja) 1993-04-14 1998-08-06 インターナショナル・ビジネス・マシーンズ・コーポレイション データ・ページの転送制御方法
CA2121852A1 (en) 1993-04-29 1994-10-30 Larry T. Jost Disk meshing and flexible storage mapping with enhanced flexible caching
US5499354A (en) 1993-05-19 1996-03-12 International Business Machines Corporation Method and means for dynamic cache management by variable space and time binding and rebinding of cache extents to DASD cylinders
US5682497A (en) 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
US5535399A (en) 1993-09-30 1996-07-09 Quantum Corporation Solid state disk drive unit having on-board backup non-volatile memory
US5809527A (en) 1993-12-23 1998-09-15 Unisys Corporation Outboard file cache system
JPH086854A (ja) 1993-12-23 1996-01-12 Unisys Corp アウトボードファイルキャッシュ外部処理コンプレックス
GB9326499D0 (en) 1993-12-24 1994-03-02 Deas Alexander R Flash memory system with arbitrary block size
US5553261A (en) 1994-04-01 1996-09-03 Intel Corporation Method of performing clean-up of a solid state disk while executing a read command
US5696917A (en) 1994-06-03 1997-12-09 Intel Corporation Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory
US5504882A (en) 1994-06-20 1996-04-02 International Business Machines Corporation Fault tolerant data storage subsystem employing hierarchically arranged controllers
JPH08153014A (ja) 1994-11-30 1996-06-11 Hitachi Ltd クライアントサーバシステム
DE19540915A1 (de) 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US6170047B1 (en) 1994-11-16 2001-01-02 Interactive Silicon, Inc. System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
US5586291A (en) 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US5651133A (en) 1995-02-01 1997-07-22 Hewlett-Packard Company Methods for avoiding over-commitment of virtual capacity in a redundant hierarchic data storage system
US5701434A (en) 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
EP0747825B1 (en) 1995-06-06 2001-09-19 Hewlett-Packard Company, A Delaware Corporation SDRAM data allocation system and method
US5682499A (en) 1995-06-06 1997-10-28 International Business Machines Corporation Directory rebuild method and apparatus for maintaining and rebuilding directory information for compressed data on direct access storage device (DASD)
US5930815A (en) 1995-07-31 1999-07-27 Lexar Media, Inc. Moving sequential sectors within a block of information in a flash memory mass storage architecture
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US5754563A (en) 1995-09-11 1998-05-19 Ecc Technologies, Inc. Byte-parallel system for implementing reed-solomon error-correcting codes
US6014724A (en) 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US6330688B1 (en) 1995-10-31 2001-12-11 Intel Corporation On chip error correction for devices in a solid state drive
US5787486A (en) 1995-12-15 1998-07-28 International Business Machines Corporation Bus protocol for locked cycle cache hit
US5757567A (en) 1996-02-08 1998-05-26 International Business Machines Corporation Method and apparatus for servo control with high efficiency gray code for servo track ID
US6385710B1 (en) 1996-02-23 2002-05-07 Sun Microsystems, Inc. Multiple-mode external cache subsystem
US5960462A (en) 1996-09-26 1999-09-28 Intel Corporation Method and apparatus for analyzing a main memory configuration to program a memory controller
US5754567A (en) 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
TW349196B (en) 1996-10-18 1999-01-01 Ibm Cached synchronous DRAM architecture having a mode register programmable cache policy
US6279069B1 (en) 1996-12-26 2001-08-21 Intel Corporation Interface for flash EEPROM memory arrays
US5802602A (en) 1997-01-17 1998-09-01 Intel Corporation Method and apparatus for performing reads of related data from a set-associative cache memory
US6073232A (en) 1997-02-25 2000-06-06 International Business Machines Corporation Method for minimizing a computer's initial program load time after a system reset or a power-on using non-volatile storage
JP3459868B2 (ja) 1997-05-16 2003-10-27 日本電気株式会社 メモリ障害時におけるグループ入れ替え方式
US6418478B1 (en) 1997-10-30 2002-07-09 Commvault Systems, Inc. Pipelined high speed data transfer mechanism
US6101601A (en) 1998-04-20 2000-08-08 International Business Machines Corporation Method and apparatus for hibernation within a distributed data processing system
US5957158A (en) 1998-05-11 1999-09-28 Automatic Switch Company Visual position indicator
US6185654B1 (en) 1998-07-17 2001-02-06 Compaq Computer Corporation Phantom resource memory address mapping system
US6507911B1 (en) 1998-07-22 2003-01-14 Entrust Technologies Limited System and method for securely deleting plaintext data
US6209088B1 (en) 1998-09-21 2001-03-27 Microsoft Corporation Computer hibernation implemented by a computer operating system
US6629112B1 (en) 1998-12-31 2003-09-30 Nortel Networks Limited Resource management for CORBA-based applications
US6412080B1 (en) 1999-02-23 2002-06-25 Microsoft Corporation Lightweight persistent storage system for flash memory devices
KR100330164B1 (ko) 1999-04-27 2002-03-28 윤종용 무효 블록들을 가지는 복수의 플래시 메모리들을 동시에 프로그램하는 방법
US7194740B1 (en) 1999-05-28 2007-03-20 Oracle International Corporation System for extending an addressable range of memory
US7660941B2 (en) 2003-09-10 2010-02-09 Super Talent Electronics, Inc. Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories
US6336174B1 (en) 1999-08-09 2002-01-01 Maxtor Corporation Hardware assisted memory backup system and method
KR100577380B1 (ko) 1999-09-29 2006-05-09 삼성전자주식회사 플래시 메모리와 그 제어 방법
JP3785004B2 (ja) 1999-09-30 2006-06-14 株式会社東芝 トランザクション管理方法及びトランザクション管理装置
US8452912B2 (en) 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US8171204B2 (en) 2000-01-06 2012-05-01 Super Talent Electronics, Inc. Intelligent solid-state non-volatile memory device (NVMD) system with multi-level caching of multiple channels
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US6785785B2 (en) 2000-01-25 2004-08-31 Hewlett-Packard Development Company, L.P. Method for supporting multi-level stripping of non-homogeneous memory to maximize concurrency
US7089391B2 (en) 2000-04-14 2006-08-08 Quickshift, Inc. Managing a codec engine for memory compression/decompression operations using a data movement engine
US6523102B1 (en) 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
TW576966B (en) * 2000-06-23 2004-02-21 Intel Corp Non-volatile cache integrated with mass storage device
JP3951918B2 (ja) 2000-06-23 2007-08-01 インテル・コーポレーション 不揮発性キャッシュ
US6813686B1 (en) 2000-06-27 2004-11-02 Emc Corporation Method and apparatus for identifying logical volumes in multiple element computer storage domains
US6330642B1 (en) 2000-06-29 2001-12-11 Bull Hn Informatin Systems Inc. Three interconnected raid disk controller data processing system architecture
GB2364581B (en) 2000-07-08 2002-07-03 3Com Corp Application specific integrated circuit with dual-mode system for externally accessible data buses and visibility buses
US6981070B1 (en) 2000-07-12 2005-12-27 Shun Hang Luk Network storage device having solid-state non-volatile memory
US6658438B1 (en) 2000-08-14 2003-12-02 Matrix Semiconductor, Inc. Method for deleting stored digital data from write-once memory device
JP3671138B2 (ja) 2000-08-17 2005-07-13 ジャパンコンポジット株式会社 通気性防水被覆構造体、およびその施工方法
US6404647B1 (en) 2000-08-24 2002-06-11 Hewlett-Packard Co. Solid-state mass memory storage device
US6883079B1 (en) 2000-09-01 2005-04-19 Maxtor Corporation Method and apparatus for using data compression as a means of increasing buffer bandwidth
US6625685B1 (en) 2000-09-20 2003-09-23 Broadcom Corporation Memory controller with programmable configuration
US7039727B2 (en) 2000-10-17 2006-05-02 Microsoft Corporation System and method for controlling mass storage class digital imaging devices
US6779088B1 (en) 2000-10-24 2004-08-17 International Business Machines Corporation Virtual uncompressed cache size control in compressed memory systems
US20020167945A1 (en) 2000-11-22 2002-11-14 Yeshik Shin Method and system for packet ordering based on packet type
US20020069317A1 (en) 2000-12-01 2002-06-06 Chow Yan Chiew E-RAID system and method of operating the same
US6976060B2 (en) 2000-12-05 2005-12-13 Agami Sytems, Inc. Symmetric shared file storage system
US20020103819A1 (en) 2000-12-12 2002-08-01 Fresher Information Corporation Technique for stabilizing data in a non-log based information storage and retrieval system
US7013376B2 (en) 2000-12-20 2006-03-14 Hewlett-Packard Development Company, L.P. Method and system for data block sparing in a solid-state storage device
KR100365725B1 (ko) 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
JP4818812B2 (ja) 2006-05-31 2011-11-16 株式会社日立製作所 フラッシュメモリストレージシステム
US6731447B2 (en) 2001-06-04 2004-05-04 Xerox Corporation Secure data file erasure
US6839808B2 (en) 2001-07-06 2005-01-04 Juniper Networks, Inc. Processing cluster having multiple compute engines and shared tier one caches
US6785776B2 (en) 2001-07-26 2004-08-31 International Business Machines Corporation DMA exclusive cache state providing a fully pipelined input/output DMA write mechanism
US7275135B2 (en) 2001-08-31 2007-09-25 Intel Corporation Hardware updated metadata for non-volatile mass storage cache
US20030061296A1 (en) 2001-09-24 2003-03-27 International Business Machines Corporation Memory semantic storage I/O
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
US6938133B2 (en) 2001-09-28 2005-08-30 Hewlett-Packard Development Company, L.P. Memory latency and bandwidth optimizations
US6892264B2 (en) 2001-10-05 2005-05-10 International Business Machines Corporation Storage area network methods and apparatus for associating a logical identification with a physical identification
US7173929B1 (en) 2001-12-10 2007-02-06 Incipient, Inc. Fast path for performing data operations
US7013379B1 (en) 2001-12-10 2006-03-14 Incipient, Inc. I/O primitives
JP4061272B2 (ja) 2002-01-09 2008-03-12 株式会社ルネサステクノロジ メモリシステム及びメモリカード
JP4154893B2 (ja) 2002-01-23 2008-09-24 株式会社日立製作所 ネットワークストレージ仮想化方法
US20030145230A1 (en) 2002-01-31 2003-07-31 Huimin Chiu System for exchanging data utilizing remote direct memory access
US7533214B2 (en) 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US7085879B2 (en) 2002-02-27 2006-08-01 Microsoft Corporation Dynamic data structures for tracking data stored in a flash memory device
US7010662B2 (en) 2002-02-27 2006-03-07 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
JP2003281071A (ja) 2002-03-20 2003-10-03 Seiko Epson Corp データ転送制御装置、電子機器及びデータ転送制御方法
JP4050548B2 (ja) 2002-04-18 2008-02-20 株式会社ルネサステクノロジ 半導体記憶装置
US7043599B1 (en) 2002-06-20 2006-05-09 Rambus Inc. Dynamic memory supporting simultaneous refresh and data-access transactions
US7562089B2 (en) 2002-06-26 2009-07-14 Seagate Technology Llc Systems and methods for storing information to allow users to manage files
US7082495B2 (en) 2002-06-27 2006-07-25 Microsoft Corporation Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory
JP4001516B2 (ja) 2002-07-05 2007-10-31 富士通株式会社 縮退制御装置及び方法
US7707145B2 (en) * 2002-07-09 2010-04-27 Gerald Mischke Method for control, analysis and simulation of research, development, manufacturing and distribution processes
US7051152B1 (en) 2002-08-07 2006-05-23 Nvidia Corporation Method and system of improving disk access time by compression
KR100505638B1 (ko) 2002-08-28 2005-08-03 삼성전자주식회사 워킹 콘텍스트 저장 및 복구 장치 및 방법
US7340566B2 (en) 2002-10-21 2008-03-04 Microsoft Corporation System and method for initializing a memory device from block oriented NAND flash
US7171536B2 (en) 2002-10-28 2007-01-30 Sandisk Corporation Unusable block management within a non-volatile memory system
US7035974B2 (en) 2002-11-06 2006-04-25 Synology Inc. RAID-5 disk having cache memory implemented using non-volatile RAM
US6996676B2 (en) 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy
US7093101B2 (en) 2002-11-21 2006-08-15 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US7121639B2 (en) 2002-12-02 2006-10-17 Silverbrook Research Pty Ltd Data rate equalisation to account for relatively different printhead widths
US6957158B1 (en) 2002-12-23 2005-10-18 Power Measurement Ltd. High density random access memory in an intelligent electric device
US20040148360A1 (en) 2003-01-24 2004-07-29 Hewlett-Packard Development Company Communication-link-attached persistent memory device
US6959369B1 (en) 2003-03-06 2005-10-25 International Business Machines Corporation Method, system, and program for data backup
US8041878B2 (en) 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
US7610348B2 (en) 2003-05-07 2009-10-27 International Business Machines Distributed file serving architecture system with metadata storage virtualization and data access at the data server connection speed
JP2004348818A (ja) 2003-05-20 2004-12-09 Sharp Corp 半導体記憶装置の書込制御方法及びシステム並びに携帯電子機器
US7243203B2 (en) 2003-06-13 2007-07-10 Sandisk 3D Llc Pipeline circuit for low latency memory
US7047366B1 (en) 2003-06-17 2006-05-16 Emc Corporation QOS feature knobs
US20040268359A1 (en) 2003-06-27 2004-12-30 Hanes David H. Computer-readable medium, method and computer system for processing input/output requests
US7487235B2 (en) 2003-09-24 2009-02-03 Dell Products L.P. Dynamically varying a raid cache policy in order to optimize throughput
US7173852B2 (en) 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7096321B2 (en) 2003-10-21 2006-08-22 International Business Machines Corporation Method and system for a cache replacement technique with adaptive skipping
WO2005065084A2 (en) 2003-11-13 2005-07-21 Commvault Systems, Inc. System and method for providing encryption in pipelined storage operations in a storage network
WO2005050453A1 (ja) 2003-11-18 2005-06-02 Matsushita Electric Industrial Co., Ltd. ファイル記録装置
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7328307B2 (en) 2004-01-22 2008-02-05 Tquist, Llc Method and apparatus for improving update performance of non-uniform access time persistent storage media
US7305520B2 (en) 2004-01-30 2007-12-04 Hewlett-Packard Development Company, L.P. Storage system with capability to allocate virtual storage segments among a plurality of controllers
US7356651B2 (en) 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US7130957B2 (en) 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system structure for storing relational cache metadata
US7130956B2 (en) 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system including hierarchical cache metadata
US7231590B2 (en) 2004-02-11 2007-06-12 Microsoft Corporation Method and apparatus for visually emphasizing numerical data contained within an electronic document
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
US20050240713A1 (en) 2004-04-22 2005-10-27 V-Da Technology Flash memory device with ATA/ATAPI/SCSI or proprietary programming interface on PCI express
EP1745394B1 (en) 2004-04-26 2009-07-15 Storewiz, Inc. Method and system for compression of files for storage and operation on compressed files
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7360015B2 (en) 2004-05-04 2008-04-15 Intel Corporation Preventing storage of streaming accesses in a cache
US7386663B2 (en) 2004-05-13 2008-06-10 Cousins Robert E Transaction-based storage system and method that uses variable sized objects to store data
US20050257017A1 (en) 2004-05-14 2005-11-17 Hideki Yagi Method and apparatus to erase hidden memory in a memory card
US7831561B2 (en) 2004-05-18 2010-11-09 Oracle International Corporation Automated disk-oriented backups
US7447847B2 (en) 2004-07-19 2008-11-04 Micron Technology, Inc. Memory device trims
US7395384B2 (en) 2004-07-21 2008-07-01 Sandisk Corproation Method and apparatus for maintaining data on non-volatile memory systems
US8407396B2 (en) 2004-07-30 2013-03-26 Hewlett-Packard Development Company, L.P. Providing block data access for an operating system using solid-state memory
US7203815B2 (en) 2004-07-30 2007-04-10 International Business Machines Corporation Multi-level page cache for enhanced file system performance via read ahead
US7664239B2 (en) 2004-08-09 2010-02-16 Cox Communications, Inc. Methods and computer-readable media for managing and configuring options for the real-time notification and disposition of voice services in a cable services network
US7398348B2 (en) 2004-08-24 2008-07-08 Sandisk 3D Llc Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewritable memory
US20060075057A1 (en) 2004-08-30 2006-04-06 International Business Machines Corporation Remote direct memory access system and method
EP1786205A1 (en) 2004-08-30 2007-05-16 Matsushita Electric Industrial Co., Ltd. Recorder
US7603532B2 (en) 2004-10-15 2009-10-13 Netapp, Inc. System and method for reclaiming unused space from a thinly provisioned data container
US8131969B2 (en) 2004-10-20 2012-03-06 Seagate Technology Llc Updating system configuration information
US7389393B1 (en) * 2004-10-21 2008-06-17 Symantec Operating Corporation System and method for write forwarding in a storage environment employing distributed virtualization
US7085512B2 (en) 2004-11-04 2006-08-01 Xerox Corporation Compact contamination reducing multi-corona system and method for reducing contamination of surfaces being acted upon by corona generating devices
US7873782B2 (en) 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
JP2008523468A (ja) 2004-12-06 2008-07-03 テイアック エアロスペース テクノロジーズ インコーポレイテッド 不揮発記録媒体消去システム及び方法
US8074041B2 (en) 2004-12-09 2011-12-06 International Business Machines Corporation Apparatus, system, and method for managing storage space allocation
US7581118B2 (en) 2004-12-14 2009-08-25 Netapp, Inc. Disk sanitization using encryption
US7487320B2 (en) 2004-12-15 2009-02-03 International Business Machines Corporation Apparatus and system for dynamically allocating main memory among a plurality of applications
KR100684887B1 (ko) 2005-02-04 2007-02-20 삼성전자주식회사 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
US20060136657A1 (en) 2004-12-22 2006-06-22 Intel Corporation Embedding a filesystem into a non-volatile device
US20060143396A1 (en) 2004-12-29 2006-06-29 Mason Cabot Method for programmer-controlled cache line eviction policy
US7246195B2 (en) 2004-12-30 2007-07-17 Intel Corporation Data storage management for flash memory devices
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US20060184719A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US20060184718A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US20060190552A1 (en) 2005-02-24 2006-08-24 Henze Richard H Data retention system with a plurality of access protocols
US7254686B2 (en) 2005-03-31 2007-08-07 International Business Machines Corporation Switching between mirrored and non-mirrored volumes
US7620773B2 (en) 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
US20060236061A1 (en) 2005-04-18 2006-10-19 Creek Path Systems Systems and methods for adaptively deriving storage policy and configuration rules
US8452929B2 (en) 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US7702873B2 (en) 2005-04-25 2010-04-20 Network Appliance, Inc. Managing common storage by allowing delayed allocation of storage after reclaiming reclaimable space in a logical volume
US20060265636A1 (en) 2005-05-19 2006-11-23 Klaus Hummler Optimized testing of on-chip error correction circuit
US7457910B2 (en) 2005-06-29 2008-11-25 Sandisk Corproation Method and system for managing partitions in a storage device
US7716387B2 (en) 2005-07-14 2010-05-11 Canon Kabushiki Kaisha Memory control apparatus and method
US7409489B2 (en) 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7552271B2 (en) 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
KR100739722B1 (ko) 2005-08-20 2007-07-13 삼성전자주식회사 플래시 메모리 관리 방법 및 플래시 메모리 시스템
US7580287B2 (en) 2005-09-01 2009-08-25 Micron Technology, Inc. Program and read trim setting
JP5008845B2 (ja) 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
JP2007071805A (ja) 2005-09-09 2007-03-22 Denso Corp 力学量センサの製造方法
US20070061508A1 (en) 2005-09-13 2007-03-15 Quantum Corporation Data storage cartridge with built-in tamper-resistant clock
US7437510B2 (en) 2005-09-30 2008-10-14 Intel Corporation Instruction-assisted cache management for efficient use of cache and memory
US7529905B2 (en) 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
US7516267B2 (en) 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
US7739472B2 (en) 2005-11-22 2010-06-15 Sandisk Corporation Memory system for legacy hosts
US7366808B2 (en) 2005-11-23 2008-04-29 Hitachi, Ltd. System, method and apparatus for multiple-protocol-accessible OSD storage subsystem
US7526614B2 (en) 2005-11-30 2009-04-28 Red Hat, Inc. Method for tuning a cache
US7877540B2 (en) 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US20070143567A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Methods for data alignment in non-volatile memories with a directly mapped file storage system
US20070156998A1 (en) 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
US20070143561A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Methods for adaptive file data handling in non-volatile memories with a directly mapped file storage system
US20070143566A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
US20070143560A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with memory allocation for a directly mapped file storage system
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7831783B2 (en) 2005-12-22 2010-11-09 Honeywell International Inc. Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems
US20070150663A1 (en) 2005-12-27 2007-06-28 Abraham Mendelson Device, system and method of multi-state cache coherence scheme
EP1990727A4 (en) 2006-02-27 2009-08-05 Fujitsu Ltd CACHE CONTROL DEVICE AND CACHE CONTROL PROGRAM
US20070208790A1 (en) 2006-03-06 2007-09-06 Reuter James M Distributed data-storage system
JP2007240904A (ja) 2006-03-09 2007-09-20 Hitachi Ltd プラズマディスプレイ装置
US7676628B1 (en) 2006-03-31 2010-03-09 Emc Corporation Methods, systems, and computer program products for providing access to shared storage by computing grids and clusters with large numbers of nodes
US20070233937A1 (en) 2006-03-31 2007-10-04 Coulson Richard L Reliability of write operations to a non-volatile memory
US7636829B2 (en) 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
US20070261030A1 (en) 2006-05-04 2007-11-08 Gaurav Wadhwa Method and system for tracking and prioritizing applications
US8307148B2 (en) 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
US7721059B2 (en) 2006-07-06 2010-05-18 Nokia Corporation Performance optimization in solid-state media
US20080052377A1 (en) 2006-07-11 2008-02-28 Robert Light Web-Based User-Dependent Customer Service Interaction with Co-Browsing
KR101128234B1 (ko) 2006-08-23 2012-03-23 엘지전자 주식회사 메모리 접근 제어 장치 및 방법
US7870306B2 (en) 2006-08-31 2011-01-11 Cisco Technology, Inc. Shared memory message switch and cache
JP4452261B2 (ja) 2006-09-12 2010-04-21 株式会社日立製作所 ストレージシステムの論理ボリューム管理方法、論理ボリューム管理プログラム、及びストレージシステム
JP4942446B2 (ja) 2006-10-11 2012-05-30 株式会社日立製作所 ストレージ装置及びその制御方法
US7685178B2 (en) 2006-10-31 2010-03-23 Netapp, Inc. System and method for examining client generated content stored on a data container exported by a storage system
CN101536002B (zh) 2006-11-03 2015-02-04 气体产品与化学公司 用于工艺监控的系统和方法
US20080120469A1 (en) 2006-11-22 2008-05-22 International Business Machines Corporation Systems and Arrangements for Cache Management
US7904647B2 (en) 2006-11-27 2011-03-08 Lsi Corporation System for optimizing the performance and reliability of a storage controller cache offload circuit
KR20090102789A (ko) 2006-12-06 2009-09-30 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) 프로그레시브 raid를 이용한 데이터 저장 장치, 시스템 및 방법
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8151082B2 (en) 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US20080140737A1 (en) 2006-12-08 2008-06-12 Apple Computer, Inc. Dynamic memory management
US20080140918A1 (en) 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
US7660911B2 (en) 2006-12-20 2010-02-09 Smart Modular Technologies, Inc. Block-based data striping to flash memory
US7913051B1 (en) 2006-12-22 2011-03-22 Emc Corporation Methods and apparatus for increasing the storage capacity of a zone of a storage system
US20080229045A1 (en) 2007-03-16 2008-09-18 Lsi Logic Corporation Storage system provisioning architecture
US8135900B2 (en) 2007-03-28 2012-03-13 Kabushiki Kaisha Toshiba Integrated memory management and memory management method
US20080243966A1 (en) 2007-04-02 2008-10-02 Croisettier Ramanakumari M System and method for managing temporary storage space of a database management system
US8429677B2 (en) 2007-04-19 2013-04-23 Microsoft Corporation Composite solid state drive identification and optimization technologies
US9207876B2 (en) 2007-04-19 2015-12-08 Microsoft Technology Licensing, Llc Remove-on-delete technologies for solid state drive optimization
US7853759B2 (en) 2007-04-23 2010-12-14 Microsoft Corporation Hints model for optimization of storage devices connected to host and write optimization schema for storage devices
JP2008276646A (ja) 2007-05-02 2008-11-13 Hitachi Ltd ストレージ装置及びストレージ装置におけるデータの管理方法
US8850154B2 (en) 2007-09-11 2014-09-30 2236008 Ontario Inc. Processing system having memory partitioning
US20090070526A1 (en) 2007-09-12 2009-03-12 Tetrick R Scott Using explicit disk block cacheability attributes to enhance i/o caching efficiency
US7873803B2 (en) 2007-09-25 2011-01-18 Sandisk Corporation Nonvolatile memory with self recovery
TWI366828B (en) 2007-09-27 2012-06-21 Phison Electronics Corp Wear leveling method and controller using the same
CA2704537C (en) 2007-11-05 2015-10-13 Nokia Siemens Networks Oy Buffer status reporting apparatus, system, and method
JP2009122850A (ja) 2007-11-13 2009-06-04 Toshiba Corp ブロックデバイス制御装置及びアクセス範囲管理方法
US8195912B2 (en) 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
KR101086855B1 (ko) 2008-03-10 2011-11-25 주식회사 팍스디스크 고속 동작하는 반도체 스토리지 시스템 및 그 제어 방법
JP2009251764A (ja) * 2008-04-02 2009-10-29 Nec Corp ジョブ管理システム、ジョブ制御方法、及びジョブ制御プログラム
US8051243B2 (en) 2008-04-30 2011-11-01 Hitachi, Ltd. Free space utilization in tiered storage systems
US20090276654A1 (en) 2008-05-02 2009-11-05 International Business Machines Corporation Systems and methods for implementing fault tolerant data processing services
JP5159421B2 (ja) 2008-05-14 2013-03-06 株式会社日立製作所 ストレージシステム及び管理装置を用いたストレージシステムの管理方法
US8775718B2 (en) 2008-05-23 2014-07-08 Netapp, Inc. Use of RDMA to access non-volatile solid-state memory in a network storage system
US8554983B2 (en) 2008-05-27 2013-10-08 Micron Technology, Inc. Devices and methods for operating a solid state drive
US8127076B2 (en) 2008-06-06 2012-02-28 Pivot3 Method and system for placement of data on a storage device
US7917803B2 (en) 2008-06-17 2011-03-29 Seagate Technology Llc Data conflict resolution for solid-state memory devices
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8135907B2 (en) 2008-06-30 2012-03-13 Oracle America, Inc. Method and system for managing wear-level aware file systems
JP5242264B2 (ja) 2008-07-07 2013-07-24 株式会社東芝 データ制御装置、ストレージシステムおよびプログラム
US20100017556A1 (en) 2008-07-19 2010-01-21 Nanostar Corporationm U.S.A. Non-volatile memory storage system with two-stage controller architecture
KR101086857B1 (ko) 2008-07-25 2011-11-25 주식회사 팍스디스크 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법
US7941591B2 (en) 2008-07-28 2011-05-10 CacheIQ, Inc. Flash DIMM in a standalone cache appliance system and methodology
JP5216463B2 (ja) 2008-07-30 2013-06-19 株式会社日立製作所 ストレージ装置、その記憶領域管理方法及びフラッシュメモリパッケージ
US8205063B2 (en) 2008-12-30 2012-06-19 Sandisk Technologies Inc. Dynamic mapping of logical ranges to write blocks
WO2010092576A1 (en) * 2009-02-11 2010-08-19 Xsignnet Ltd. Virtualized storage system and method of operating it
US20100235597A1 (en) 2009-03-10 2010-09-16 Hiroshi Arakawa Method and apparatus for conversion between conventional volumes and thin provisioning with automated tier management
US20100262979A1 (en) 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
US20100262773A1 (en) 2009-04-08 2010-10-14 Google Inc. Data striping in a flash memory data storage device
US8447918B2 (en) 2009-04-08 2013-05-21 Google Inc. Garbage collection for failure prediction and repartitioning
DE102009002474A1 (de) 2009-04-20 2010-10-21 Hilti Aktiengesellschaft Pneumatisches Schlagwerk und Handwerkzeugmaschine
US8516219B2 (en) 2009-07-24 2013-08-20 Apple Inc. Index cache tree
US10026458B2 (en) * 2010-10-21 2018-07-17 Micron Technology, Inc. Memories and methods for performing vector atomic memory operations with mask control and variable data length and data unit size
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US10359972B2 (en) * 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US9400611B1 (en) * 2013-03-13 2016-07-26 Emc Corporation Data migration in cluster environment using host copy and changed block tracking

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI673722B (zh) * 2017-05-30 2019-10-01 美商司固科技公司 具有可原地重寫之記憶體的資料儲存裝置

Also Published As

Publication number Publication date
CN105453021A (zh) 2016-03-30
DE112014003152T5 (de) 2016-03-31
TWI630494B (zh) 2018-07-21
JP6243028B2 (ja) 2017-12-06
US9842128B2 (en) 2017-12-12
KR101769465B1 (ko) 2017-08-30
CN105453021B (zh) 2019-03-26
US20150039577A1 (en) 2015-02-05
KR20160038028A (ko) 2016-04-06
JP2016534439A (ja) 2016-11-04
WO2015017398A1 (en) 2015-02-05

Similar Documents

Publication Publication Date Title
TWI630494B (zh) 用於原子儲存作業之系統、裝置及方法
US10102075B2 (en) Systems and methods for storage collision management
US10019320B2 (en) Systems and methods for distributed atomic storage operations
JP6290405B2 (ja) 記憶一貫性のためのシステムおよび方法
US10380026B2 (en) Generalized storage virtualization interface
US10019323B1 (en) Method and system for container data recovery in a storage system
US9798486B1 (en) Method and system for file system based replication of a deduplicated storage system
US9043540B2 (en) Systems and methods for tracking block ownership
US9563555B2 (en) Systems and methods for storage allocation
US10055420B1 (en) Method to optimize random IOS of a storage device for multiple versions of backups using incremental metadata
US10558561B2 (en) Systems and methods for storage metadata management
CN115668166A (zh) 由区块对象构成的文件系统
US9904480B1 (en) Multiplexing streams without changing the number of streams of a deduplicating storage system
TW201517052A (zh) 註釋的原子寫入
US9256373B1 (en) Invulnerable data movement for file system upgrade
US9996426B1 (en) Sparse segment trees for high metadata churn workloads
US11636069B2 (en) Data storage system and method
WO2020088499A1 (en) Journaling overhead reduction with remapping interface

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees