TWI659318B - 用於儲存一致性之系統、設備及方法 - Google Patents
用於儲存一致性之系統、設備及方法 Download PDFInfo
- Publication number
- TWI659318B TWI659318B TW103125493A TW103125493A TWI659318B TW I659318 B TWI659318 B TW I659318B TW 103125493 A TW103125493 A TW 103125493A TW 103125493 A TW103125493 A TW 103125493A TW I659318 B TWI659318 B TW I659318B
- Authority
- TW
- Taiwan
- Prior art keywords
- storage
- data
- logical
- file
- lid
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
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)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本發明提供一種儲存層,其被配置成用以施行有效的開啟-關閉一致性作業。開啟-關閉一致性可以包括保留一檔案的原始狀態,直到該檔案被關閉為止。該儲存層可以被配置成用以響應於一檔案開啟請求而複製一檔案。複製該檔案可以包括藉由兩個分開的辨識符集來參考檔案資料。其中一集可以被配置成用以反映檔案修正,並且另一集可以被配置成用以保留該檔案的原始狀態。被配置成用以修正該檔案的後續作業可以參考該些辨識符集中的其中一者被實施,而該儲存層則經由另一辨識符集來提供存取未經修正的檔案。關閉該檔案可以包括根據一合併政策來合併該些辨識符集。
Description
本揭示內容和儲存系統有關,且明確地說,和用於保存檔案一致性的系統及方法有關。
本文中揭示特別用於施行關閉至開啟(close-to-open)檔案一致性模型的方法的實施例。本文中所揭示之方法的步驟可以利用機器器件(例如,處理器、邏輯電路、及/或類似物)來施行。據此,本文中所揭示之方法的一或更多道步驟及/或作業可能會結合一特殊機器。或者,甚至除此之外,本文中所揭示之方法的步驟及/或作業可以被具現為儲存在一儲存媒體中的電腦可讀取碼。該儲存媒體可以包括持久性或非暫時性儲存媒體。
本文中所揭示之用於儲存一致性之方法的實施例可以包括:將被儲存在一儲存裝置的一或更多個儲存位置中的資料和一位址空間的邏輯辨識符產生關聯;響應於一儲存用戶(storage client)之存取該資料的請求而提供一邏輯辨識符工作集,俾使得該邏輯辨識符工作集與一邏輯辨識符一致性集會和該些相同的一或更多個儲存位置相關聯;及/或施行一儲存作業,其被配置成用以修正該資料的至少一部分,其中,施行該儲存作業
包括更新該工作集中該些邏輯辨識符中一或更多者的儲存位置關聯性並且保留該邏輯辨識符一致性集與該一或更多個儲存位置之間的關聯性。
該儲存作業可以包括附加資料至該儲存裝置中的一記錄日誌(log),而且該方法可以進一步包括將該被附加的資料和該邏輯辨識符工作集的一邏輯辨識符產生關聯。或者,甚至除此之外,該儲存作業可以包括寫入一資料段(data segment)於該儲存裝置中,其被配置成用以修正被儲存在該儲存裝置中之資料的一原始資料段,並且該方法可以進一步包括:藉由參考該邏輯辨識符一致性集中的一邏輯辨識符來提供存取該原始資料段;及/或藉由使用該邏輯辨識符工作集中的一邏輯辨識符來相關聯被配置成用以修正該原始資料段的資料段。於某些實施例中,該儲存作業包括附加資料至一檔案,並且該方法進一步包括:分派一或更多個額外的邏輯辨識符給該邏輯辨識符工作集;及/或藉由參考該一或更多個額外邏輯辨識符來提供存取該附加資料。該儲存作業可以被配置成用以修正一檔案中複數個原始資料段中的其中一者,並且該方法可以進一步包含:藉由使用該邏輯辨識符一致性集中的邏輯辨識符來參考該複數個原始資料段;藉由使用該邏輯辨識符工作集中的邏輯辨識符來參考未被該儲存作業修正的原始資料段;及/或經由該邏輯辨識符工作集中的一邏輯辨識符來參考一對應於該儲存作業的資料段。
本發明所揭示方法的某些實施例可以進一步包含藉由為儲存用戶所實施的儲存作業保留該儲存裝置中的儲存容量來分派該邏輯辨識符工作集。該方法可以進一步包含響應於一不同儲存用戶的請求而提供存取未被該儲存作業修正之資料。
於某些實施例中,本發明所揭示的方法進一步包括響應於用以開啟一對應於該資料的檔案的另一儲存用戶的請求而分派一額外的邏輯辨識符空間工作集,俾使得該邏輯辨識符一致性集與該額外的邏輯辨識符工作集會和該些相同的儲存位置相關聯,且其中,該些關聯性並未被該儲存作業修正。該資料可以配合持久性元資料被儲存在該儲存裝置中,該持久性元資料被配置成用以將該資料與個別的邏輯辨識符產生關聯,而且該方法可以進一步包括附加持久性元資料至該儲存裝置,其被配置成用以將該資料與該一致性集及該工作集中的邏輯辨識符產生關聯。
本發明所揭示的方法的實施例可以進一步包含響應於用以關閉一對應於該資料的檔案的該儲存用戶的請求而合併該邏輯辨識符一致性集與該邏輯辨識符工作集用以關閉一對應於該資料的檔案,其中,合併包括將該儲存用戶參考該邏輯辨識符工作集對該檔案所進行的修正併入於該邏輯辨識符一致性集之中。於某些實施例中,該方法進一步包括將該邏輯辨識符工作集連結至該一或更多個儲存位置的儲存位址。
本文中還揭示用於儲存一致性的設備的實施例。本發明所揭示的設備的實施例可以包括:一轉移模組,其被配置成用以藉由連結對應於被儲存在一儲存裝置中的資料的檔案中的資料至一邏輯辨識符原始集與一邏輯辨識符複製(clone)集來複製對應於該資料的檔案;一儲存層,其被配置成用以在實施儲存作業時保留被儲存在該儲存裝置中的檔案資料以及該被保留的檔案資料與該邏輯辨識符原始集之間的連結,該些儲存作業被配置成用以參考該些複製邏輯辨識符來改變該檔案;以及一介面,其被配置成用以在實施該些儲存作業之後經由該些原始邏輯辨識符來提供存取該被
保留的檔案資料。
該轉移模組可以被配置成用以響應於一開啟該檔案的請求來複製該檔案,且其中,該介面被配置成用以響應於一和該檔案有關的不同請求經由該邏輯辨識符原始集來提供存取該被保留的檔案資料。該轉移模組可以進一步被配置成用以將和該被開啟檔案有關的儲存作業再導向至該被複製的邏輯辨識符集。
該些儲存作業可以被配置成用以從該檔案中移除一資料段,並且該儲存層可以被配置成用以移除該資料段與該被複製的邏輯辨識符集中的一邏輯辨識符之間的關聯性並且用以保留該資料段與該邏輯辨識符原始集中的一邏輯辨識符之間的關聯性。或者,甚至除此之外,該些儲存作業可以被配置成用以改變該檔案的既有資料,並且該儲存層可以被配置成用以利用該被複製的邏輯辨識符集中的一或更多個邏輯辨識符來參考該檔案的被改變資料並且利用該邏輯辨識符原始集中的邏輯辨識符來參考對應的被保留檔案資料。
於某些實施例中,該轉移模組進一步被配置成用以藉由將參考該被複製的邏輯辨識符集中的邏輯辨識符所實施的儲存作業的檔案修正併入於該邏輯辨識符原始集之中而將該些被複製的邏輯辨識符摺疊至該些原始邏輯辨識符之中。該些檔案修正可以包括儲存該檔案的一資料段於該儲存裝置之中,且其中,併入該些檔案修正包括儲存持久性元資料於該儲存裝置之中用以將該資料段與該邏輯辨識符原始集中的邏輯辨識符中的其中一個邏輯辨識符產生關聯。於某些實施例中,該些檔案修正包括擴大該檔案,且其中,併入該些檔案修正包括增加邏輯辨識符於該邏輯辨識符原
始集,以便參考該經擴大檔案的資料。
本文中還揭示用於儲存一致性的系統的實施例。本發明所揭示的系統可以包括:響應於用以開啟一檔案的請求而創造該檔案的一邏輯拷貝的構件,其中,創造該邏輯拷貝包括經由兩個不同的邏輯位址集來參考該檔案的資料;用以參考該兩個不同的邏輯位址集中的第一邏輯位址集來修正該檔案的構件;以及用以在參考該第一邏輯位址集來修正該檔案之後經由該兩個不同的邏輯位址集中的第二邏輯位址集來提供存取該檔案之原始版本的構件。於某些實施例中,本發明所揭示的系統進一步包括根據一合併政策藉由更新該第二邏輯位址集來合併該兩個不同的邏輯位址集的構件,以便參考被施行在該第一邏輯位址集裡面的檔案修正。該用以修正該檔案的構件可以包括用以附加該檔案的經修正資料至被儲存在一儲存裝置中的記錄日誌的構件。該用以合併該兩個不同的邏輯位址集的構件可以包括用以附加一持久性註記(note)至該記錄日誌的構件,該持久性註記被配置成用以將該第二邏輯位址集中的一邏輯位址與該經修正資料產生關聯。
100‧‧‧計算系統
101‧‧‧處理資源
102‧‧‧揮發性記憶體資源
103‧‧‧非揮發性儲存資源
104‧‧‧通訊介面
105‧‧‧網路
106‧‧‧儲存用戶
110‧‧‧資料封包
112‧‧‧資料段
113‧‧‧序列資訊
114‧‧‧持久性元資料
115‧‧‧固態儲存陣列
115A‧‧‧儲存陣列
115B‧‧‧儲存陣列
115N‧‧‧儲存陣列
116A‧‧‧固態儲存元件
116B‧‧‧固態儲存元件
116C‧‧‧固態儲存元件
116Y‧‧‧固態儲存元件
117‧‧‧列
118‧‧‧行
119A‧‧‧獨立群
119B‧‧‧獨立群
119N‧‧‧獨立群
127‧‧‧互連線
130‧‧‧儲存層
131‧‧‧儲存介面
132‧‧‧邏輯位址空間
134‧‧‧轉移模組
135‧‧‧儲存元資料
136‧‧‧記錄日誌儲存模組
139‧‧‧儲存控制器
140‧‧‧儲存媒體
141‧‧‧儲存裝置
144‧‧‧儲存位址空間
150‧‧‧任何至任何映射
152‧‧‧邏輯介面
154‧‧‧後端介面
160‧‧‧正向映圖
162‧‧‧登錄項
164A‧‧‧邏輯辨識符(LID)
164B‧‧‧邏輯辨識符(LID)
164C‧‧‧邏輯辨識符(LID)
164D‧‧‧邏輯辨識符(LID)
164E‧‧‧邏輯辨識符(LID)
166A‧‧‧儲存位址
166B‧‧‧儲存位址
166C‧‧‧儲存位址
166D‧‧‧儲存位址
166E‧‧‧儲存位址
170A‧‧‧儲存組
170B‧‧‧儲存組
170C‧‧‧儲存組
170N‧‧‧儲存組
180‧‧‧附加點
181‧‧‧前移
182‧‧‧儲存位置
183‧‧‧儲存位置
185‧‧‧儲存位置
189‧‧‧儲存位置
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‧‧‧資料段
614‧‧‧持久性元資料
662‧‧‧登錄項
663‧‧‧邏輯介面
665‧‧‧間接登錄項
669‧‧‧邏輯介面
672‧‧‧登錄項
673‧‧‧邏輯介面
675‧‧‧間接登錄項
682‧‧‧參考登錄項
710‧‧‧資料封包
712‧‧‧資料段
714‧‧‧持久性元資料
736‧‧‧快照模組
738‧‧‧時序模組
739‧‧‧新紀元時間指示符
773A‧‧‧狀態
773B‧‧‧狀態
773C‧‧‧狀態
810A‧‧‧資料封包
812A‧‧‧資料段
814A‧‧‧持久性元資料
862‧‧‧登錄項
863A‧‧‧邏輯介面
863B‧‧‧邏輯介面
863C‧‧‧邏輯介面
864‧‧‧登錄項
866‧‧‧間接登錄項
882‧‧‧參考登錄項
900A‧‧‧系統
900F‧‧‧系統
906‧‧‧檔案系統
911A‧‧‧狀態
911B‧‧‧狀態
911C‧‧‧狀態
911D‧‧‧狀態
911E‧‧‧狀態
913A‧‧‧狀態
913B‧‧‧狀態
913C‧‧‧狀態
914‧‧‧辨識符範圍
924‧‧‧邏輯辨識符(LID)範圍
926A‧‧‧檔案系統用戶
926B‧‧‧檔案系統用戶
926N‧‧‧檔案系統用戶
934‧‧‧參考登錄項
941A‧‧‧狀態
941B‧‧‧狀態
941C‧‧‧狀態
941D‧‧‧狀態
941E‧‧‧狀態
941F‧‧‧狀態
941G‧‧‧狀態
943A‧‧‧狀態
943B‧‧‧狀態
943C‧‧‧狀態
944‧‧‧合併政策
947A‧‧‧狀態
947B‧‧‧狀態
947C‧‧‧狀態
947D‧‧‧狀態
950A‧‧‧檔案邏輯辨識符(LID)
950B‧‧‧檔案邏輯辨識符(LID)
950C‧‧‧檔案邏輯辨識符(LID)
950D‧‧‧檔案邏輯辨識符(LID)
951A‧‧‧映射
951B‧‧‧映射
951C‧‧‧映射
952A‧‧‧資料
952B‧‧‧資料
952C‧‧‧資料
953A‧‧‧狀態
953B‧‧‧狀態
953C‧‧‧狀態
953D‧‧‧狀態
953E‧‧‧狀態
953F‧‧‧狀態
953G‧‧‧狀態
953H‧‧‧狀態
953I‧‧‧狀態
984‧‧‧元資料
994‧‧‧元資料
1015A‧‧‧狀態
1015B‧‧‧狀態
1015C‧‧‧狀態
1032‧‧‧處理中(in-process)範圍
1036‧‧‧原子儲存模組
1040A‧‧‧向量
1040B‧‧‧向量
1042A‧‧‧向量
1042B‧‧‧向量
2136‧‧‧中間位址空間
圖1A所示的係用於開啟至關閉一致性的系統的一實施例的方塊圖;圖1B所示的係儲存元資料的實施例;圖1C所示的係一儲存陣列的一實施例的方塊圖;圖1D所示的係一資料封包格式的一實施例;圖1E所示的係一儲存記錄日誌的一實施例;圖2所示的係用於開啟至關閉一致性的系統的另一實施例的方塊圖;
圖3A所示的係一系統的一實施例的方塊圖,其包括一儲存層,該儲存層被配置成用以有效施行範圍複製作業、移動作業、合併作業、以及其它較高階儲存作業;圖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所示的係關閉至開啟檔案一致性的進一步實施例;圖10所示的係一系統的其中一實施例,其包括一儲存層,該儲存層被配置成用以施行原子儲存作業;圖11所示的係用於在非揮發性儲存媒體中管理文意格式的資料儲存的邏輯介面的方法的一實施例的流程圖;圖12所示的係用於管理文意資料的邏輯介面的方法的一實施例的流程圖;圖13所示的係用於管理文意資料的邏輯介面的方法的另一實施例的流程圖;圖14所示的係用於管理範圍合併作業的方法的一實施例的流程圖;圖15所示的係用於管理範圍複製作業的方法的另一實施例的流程圖;圖16所示的係用於管理範圍合併作業的方法的另一實施例的流程圖;以及
圖17所示的係用於施行有效的開啟至關閉檔案一致性的方法的其中一實施例的流程圖。
圖1A所示的係一計算系統100的一實施例的方塊圖,其包括一儲存層130,該儲存層130被配置成用以為一或更多個儲存用戶106提供儲存服務。該儲存層130可以被配置成用以提供開啟至關閉檔案服務,如本文中的進一步詳細揭示。該計算系統100可以包括任何合宜的計算裝置,其包含,但是並不受限於:伺服器、桌上型電腦、膝上型電腦、嵌入式系統、行動裝置、及/或類似物。於某些實施例中,該計算系統100可以包含多個計算裝置,例如,一群伺服器計算裝置。該計算系統100可以包括多個處理資源101、多個揮發性記憶體資源102(舉例來說,隨機存取記憶體(Random Access Memory,RAM))、多個非揮發性儲存資源103、以及一通訊介面104。該些處理資源101可以包含,但是並不受限於:一般用途中央處理單元(Central Processing Unit,CPU)、特定應用積體電路(Application-Specific Integrated Circuit,ASIC)、以及可程式化邏輯元件(例如,場可程式化閘陣列(Field Programmable Gate Array,FPGA)、可程式化邏輯陣列(Programmable Logic Array,PLA)、以及類似物)。該些非揮發性儲存資源103可以包括,但是並不受限於非暫時性機器可讀取的儲存媒體,例如,磁性硬碟、固態儲存媒體、光學儲存媒體、及/或類似物。該通訊介面104可以被配置成用以將計算系統100通訊耦合至一網路105。網路105可以包括任何合宜的通訊網路,其包含,但是並不受限於:傳輸控制協定/網際網路協定(Transmission Control Protocol/Internet Protocol,TCP/IP)網路、區域網路
(Local Area Network,LAN)、廣域網路(Wide Area Network,WAN)、虛擬私有網路(Virtual Private Network,VPN)、儲存區域網路(Storage Area Network,SAN)、公眾交換式電話網路(Public Switched Telephone Network,PSTN)、網際網路、及/或類似物。
計算系統100可以包括一儲存層130,該儲存層130可以被配置成用以為一或更多個儲存用戶106提供儲存服務。該些儲存用戶106可以包含,但是並不受限於:作業系統(其包含裸金屬作業系統(bare metal operating systems)、來賓作業系統(guest operating systems)、虛擬機、虛擬化環境、以及類似物)、檔案系統、資料庫系統、遠端儲存用戶(舉例來說,經由網路105被通訊耦合至計算系統100及/或儲存層130的儲存用戶)、及/或類似物。
該儲存層130(及/或其模組)可以軟體、硬體、或是它們的組合來施行。於某些實施例中,該儲存層130的一部分被具現為可以儲存在一持久性、非暫時性儲存媒體(例如,非揮發性儲存資源103)之中的可執行指令(例如,電腦程式碼)。該些指令及/或電腦程式碼可以被配置成用以由處理資源101來執行。或者,甚至除此之外,該儲存層130的一部分可以被具現為機器器件,例如:一般器件及/或特定應用器件、可程式化硬體、FPGA、ASIC、硬體控制器、儲存控制器、及/或類似物。
儲存層130可以被配置成用以在一儲存媒體140中實施儲存作業。該儲存媒體140可以包括能夠持久性儲存資料的任何儲存媒體。如本文中的用法,「持久性」資料儲存係指將資訊儲存在一持久性、非暫時性的儲存媒體之中。該儲存媒體140可以包含非揮發性儲存媒體,例如,一
或更多個固態儲存裝置或驅動機(Solid-state Storage Device or Drive,SSD)、硬碟機(舉例來說,整合式驅動電子(Integrated Drive Electronics,IDE)驅動機、小型電腦系統介面(Small Computer System Interface,SCSI)驅動機、序列式附接SCSI(Serial Attached SCSI,SAS)驅動機、序列式AT附接(Serial AT Attachment,SATA)驅動機…等)、磁帶機、可寫入光學驅動機(舉例來說,CD驅動機、DVD驅動機、藍光驅動機…等)、及/或類似物中的固態儲存媒體。
於某些實施例中,該儲存媒體140包括非揮發性固態記憶體,其可以包含,但是並不受限於:NAND快閃記憶體、NOR快閃記憶體、奈米RAM(Nano RAM,NRAM)、磁阻式RAM(Magneto-resistive RAM,MRAM)、相變式RAM(Phase change RAM,PRAM)、賽道記憶體、億阻器記憶體、基於奈米晶體線的記憶體、基於氧化矽的10奈米以下製程記憶體、石墨烯記憶體、矽-氧化物-氮化物-氧化物-矽(Silicon-Oxide-Nitride-Oxide-Silicon,SONOS)、電阻式隨機存取記憶體(Resistive Random-Access Memory,RRAM)、可程式化金屬胞(Programmable Metallization Cell,PMC)、導電式橋接RAM(Conductive-Bridging RAM,CBRAM)、及/或類似物。本文中雖然揭示儲存媒體140的特殊實施例;不過,本揭示內容的教示內容亦能夠套用至任何合宜形式的記憶體,其包含非揮發性形式與揮發性形式兩者。據此,在非揮發性固態儲存裝置140的背景中雖然已揭示儲存層130的特殊實施例;不過,該儲存層130亦可用於其它儲存裝置及/或儲存媒體。
於某些實施例中,該儲存媒體140包含揮發性記憶體,其可
以包含,但是並不受限於:RAM、動態RAM(Dynamic RAM,DRAM)、靜態RAM(Static RAM,SRAM)、同步動態RAM(Synchronous Dynamic RAM,SDRAM)、…等。該儲存媒體140可以對應於該些處理資源101的記憶體,例如,CPU快取(舉例來說,L1快取、L2快取、L3快取、…等)、圖形記憶體、及/或類似物。於某些實施例中,該儲存媒體140藉由使用互連線127被通訊耦合至儲存層130。該互連線127可以包含,但是並不受限於:週邊器件互連線(Peripheral Component Interconnect,PCI)、高速PCI(PCI Express,PCI-e)、序列式先進技術附接(Serial Advanced Technology Attachment,序列式ATA或SATA)、平行式ATA(Parallel ATA,PATA)、小型電腦系統介面(SCSI)、IEEE 1394(火線)、光纖通道、通用序列匯流排(Universal Serial Bus,USB)、及/或類似物。或者,該儲存媒體140亦可以為經由網路105(及/或其它通訊介面,例如,儲存區域網路(SAN)、虛擬儲存區域網路(Virtual Storage Area Network,VSAN)、及/或類似物)被通訊耦合至儲存層130的遠端儲存裝置。所以,該互連線127可以包括遠端匯流排(例如,PCI-e匯流排)、網路連接線(舉例來說,Infiniband)、儲存網路、光纖通道協定(Fibre Channel Protocol,FCP)網路、HyperSCSI、及/或類似物。
儲存層130可以被配置成用以特別藉由使用一儲存控制器139來管理儲存媒體140中的儲存作業。該儲存控制器139可以包括軟體及/或硬體器件,其包含,但是並不受限於:操作在計算系統100中的一或更多個驅動器及/或其它軟體模組,例如,儲存驅動器、I/O驅動器、過濾器驅動器、及/或類似物;硬體器件,例如,硬體控制器、通訊介面、及/或類似物;…等。儲存媒體140可以被具現在一儲存裝置141中。儲存層130的一
部分(舉例來說,儲存控制器139)可以被施行為儲存裝置141的硬體及/或軟體器件(舉例來說,韌體)。
儲存控制器139可以被配置成用以在儲存媒體140的特殊儲存位置處施行儲存作業。如本文中的用法,儲存位置係指能夠持久性儲存資料的一儲存資源(舉例來說,一儲存媒體及/或裝置)中的一儲存單元;儲存位置可以包含,但是並不受限於:頁、頁群(舉例來說,多個邏輯頁及/或一邏輯頁裡面的偏移值)、儲存組(storage division)(舉例來說,實體抹除區塊、邏輯抹除區塊、…等)、區段、磁碟中的位置、有電池支援的記憶體位置、及/或類似物。該些儲存位置可定址在儲存媒體140的一儲存位址空間144裡面。儲存位址可對應於實體位址、媒體位址、後端位址(back-end address)、位址偏移值、及/或類似物。儲存位址可對應於任何合宜的儲存位址空間144、儲存定址技術、及/或儲存位置排列。
儲存層130可以包括一介面131,儲存用戶106可已經由該介面存取儲存層130所提供的儲存服務。該儲存介面131可以包含下面一或更多者:一區塊裝置介面、一虛擬化儲存介面、一或更多個虛擬儲存單元(Virtual Storage Unit,VSU)、一物件儲存介面、一資料庫儲存介面、及/或其它合宜介面及/或應用程式化介面(Application Programming Interface,API)。
儲存層130可以經由一前端儲存介面用於參考儲存資源。如本文中的用法,「前端儲存介面」係指一介面及/或名稱空間(namespace),儲存用戶106可經以參考該儲存層130的儲存資源。一儲存介面可對應於一邏輯位址空間132。該邏輯位址空間132可以包括一辨識符分群、一辨識符集、一辨識符集合、一辨識符範圍、及/或一辨識符限度。如本文中的用法,一
「辨識符」或「邏輯辨識符(Logical IDentifier,LID)」係指用於參考一來源資源的辨識符;LID可以包含,但是並不受限於:名稱(舉例來說,檔案名稱、特異名稱、及/或類似物)、資料辨識符、參考符、連結、LID、前端辨識符、邏輯位址、邏輯區塊位址(Logical Block Address,LBA)、邏輯單元數(Logical Unit Number,LUN)位址、虛擬單元數(Virtual Unit Number,VUN)位址、虛擬儲存位址、儲存位址、實體位址、媒體位址、後端位址、及/或類似物。
邏輯位址空間132的邏輯容量可以對應於該邏輯位址空間132中的LID的數量及/或該些LID所參考的儲存資源的大小及/或粒度。於某些實施例中,邏輯位址空間132可以「稀薄提供(thinly provisioned)」。一稀薄提供的邏輯位址空間132係指一邏輯容量超過下面的儲存資源的實體儲存容量(舉例來說,超過儲存媒體140的儲存容量)的邏輯位址空間132。於其中一實施例中,該儲存層130被配置成用以提供一64位元的邏輯位址空間132(舉例來說,包括2^26個獨特LID的邏輯位址空間),其可能超過儲存媒體140的實體儲存容量。該大型稀薄提供的邏輯位址空間132可以讓儲存用戶106有效地分派及/或參考連續範圍的LID,同時減少命名衝突的機會。在David Flynn等人於2013年4月17日提申的美國專利申請案第13/865,153號中揭示用於儲存分派的系統與方法的進一步實施例,該案標題為「用於儲存分派的系統與方法(Systems and Methods for Storage Allocation)」,本文以引用的方式將其完整併入。
儲存層130的轉移模組134可被配置成用以將邏輯位址空間132的LID映射至儲存資源(舉例來說,被儲存在儲存媒體140的儲存位址
空間144裡面的資料)。邏輯位址空間132可能不相依於後端儲存資源(舉例來說,儲存媒體140);據此,在該邏輯位址空間132的LID與該儲存位址空間144的儲存位址之間可能沒有任何集合或是預設的映射。於某些實施例中,該邏輯位址空間132會被稀疏、稀薄提供,及/或超提供,俾使得該邏輯位址空間132的大小不同於儲存媒體140的儲存位址空間144。
儲存層130可以被配置成用以保存和在儲存媒體140中被實施的儲存作業有關的儲存元資料135。該儲存元資料135可以包含,但是並不受限於:包括該邏輯位址空間132的LID與該儲存位址空間144裡面的儲存位址之間的任何至任何映射(any-to-any mapping)的正向映圖、和儲存媒體140的儲存位置的內容有關的反向映圖、合法性位元映圖、可靠性測試及/或狀態元資料、狀態資訊(舉例來說,錯誤率、退休狀態、…等)、快取元資料、及/或類似物。該儲存元資料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分派的LID的登錄項及/或對應於目前未被用來參考被儲存在儲存媒體140中之合法資料的登錄項。於某些實施例中,該正向映圖160包括一範圍編碼資料結構,俾使得該些登錄項162中的一或更多個可以對應於複數個LID(舉例來說,一LID範圍、一LID限度、及/或一LID集)。於圖1B的實施例中,該正向映圖160包含對應於一LID範圍164A的登錄項162,該些LID 164A被映射至一對應的儲存位址範圍166A。該些登錄項162可以由LID來作索引標示。於圖1B的實施例中,該些登錄項162被排列成一由個別連結所組成的樹資料結構。然而,本揭示內容在此方面並不受限,並且能夠被調適成用以使用任何合宜的資料結構及/或索引標示機制。
參考圖1C,於某些實施例中,儲存媒體140可以包括一固
態儲存陣列115,其包括複數個固態儲存元件116A至Y。如本文中的用法,一固態儲存陣列(或是儲存陣列)115係指一組二或更多個獨立行118。一行118可以包括一或更多個固態儲存元件116A至Y,它們特別利用互連線127被平行通訊耦合至儲存層130。陣列115中的列117可以包括該些個別行118的實體儲存單元(固態儲存元件116A至Y)。如本文中的用法,一固態儲存元件116A至Y包含,但是並不受限於被具現為下面的固態儲存資源:封裝、晶片、晶粒、平面、印刷電路板、及/或類似物。構成陣列115的該些固態儲存元件116A至Y可能能夠進行獨立的作業。據此,該些固態儲存元件中的第一固態儲存元件116A可能能夠實施第一儲存作業,而第二固態儲存元件116B則實施不同的儲存作業。舉例來說,固態儲存元件116A可以被配置成用以讀取第一實體位址處的資料,而另一固態儲存元件116B則讀取一不同實體位址處的資料。
一固態儲存陣列115亦可被稱為邏輯儲存元件(LogicalStorage Element,LSE)。如本文中的進一步詳細揭示,該固態儲存陣列115可以包括多個邏輯儲存單元(列117)。如本文中的用法,一「邏輯儲存單元」或是列117係指二或更多個實體儲存單元的組合,每一個實體儲存單元在該陣列115的一個別行118上。一邏輯抹除區塊係指一組二或更多個實體抹除區塊,一邏輯頁係指一組二或更多頁,…等。於某些實施例中,一邏輯抹除區塊可以包括個別邏輯儲存元件115及/或群裡面的抹除區塊。或者,一邏輯抹除區塊可以包括複數個不同陣列115裡面的抹除區塊及/或可以跨越多群固態儲存元件。
回頭參考圖1A,該儲存層130可以進一步包括一記錄日誌
儲存模組136,其被配置成以具有記錄日誌結構儲存配置的方式(舉例來說,以儲存記錄日誌的方式)將資料儲存在儲存媒體140中。如本文中的用法,一「儲存記錄日誌」或是「記錄日誌結構」係指儲存媒體140的儲存位址空間144裡面的資料的有序排列。該儲存記錄日誌中的資料可以包括持久性元資料及/或和持久性元資料相關聯。據此,該儲存層130可以被配置成以文意、自我描述的格式來儲存資料。如本文中的用法,文意或是自我描述格式係指資料配合持久性元資料被儲存的資料格式。於某些實施例中,該持久性元資料可以被配置成用以辨識該資料,且因此,可以包括及/或參考該資料的邏輯介面(舉例來說,可以包括和該資料相關聯的LID)。該持久性元資料可以包含其它資訊,其包含,但是並不受限於,關於該資料之擁有者的資訊、存取控制、資料類型、資料的相對位置或偏移值、關於和該資料相關聯的儲存作業的資訊(舉例來說,原子儲存作業、異動、及/或類似物)、記錄日誌序列資訊、資料儲存參數(舉例來說,壓縮演算法、加密、…等)、及/或類似物。
圖1D所示的係一文意資料格式的其中一實施例。圖1D的封包格式110包括一資料段112與持久性元資料114。該資料段112可以為任何長度及/或大小。該持久性元資料114可以被具現為資料封包110中的一或更多個標頭欄位。如上面的揭示,該持久性元資料114可以包括資料段112的邏輯介面,且因此,可以包括和該資料段112相關聯的LID。圖1D雖然描繪一封包格式110;不過,本揭示內容在此方面並不受限,並且能夠以其它方式將資料(舉例來說,資料段112)和文意性元資料產生關聯,其包含,但是並不受限於,儲存媒體140中的索引、儲存組索引、及/或類似物。
資料封包110可以和序列資訊113相關聯。該序列資訊可被用來決定該儲存記錄日誌裡面的資料封包的相對順序。於某些實施例中,資料封包係依序被附加在儲存媒體140的儲存組裡面。該些儲存組可以對應於抹除區塊、邏輯抹除區塊、或是類似物。每一個儲存組可能能夠儲存大量的資料封包110。一儲存組裡面的資料封包的相對位置可以決定該儲存記錄日誌裡面的封包的順序。該些儲存組的順序可以特別藉由儲存組序列資訊113來決定。儲存組可以在該儲存組被初始化來使用(舉例來說,被抹除)、被程式化、被關閉、或是進行類似作業時被分配序列資訊113。該儲存組序列資訊113可以決定儲存位址空間144裡面的儲存組的有序序列。據此,該儲存記錄日誌裡面的一資料封包110的相對順序可以由下面來決定:a)一特殊儲存組裡面的該資料封包110的相對位置;以及b)該儲存組相對於該儲存位址空間144中其它儲存組的順序。
於某些實施例中,該儲存層130可以被配置成用以管理一非對稱的一次性寫入儲存媒體140,例如,固態儲存媒體、快閃儲存媒體、或是類似物。如本文中的用法,「一次性寫入」儲存媒體係指每當新的資料要被寫入或是被程式化於其中時會被重新初始化(舉例來說,被抹除)的儲存媒體。如本文中的用法,「非對稱」儲存媒體係指不同類型的儲存作業有不同等待時間(latency)的儲存媒體。於某些實施例中,舉例來說,讀取作業可能快過寫入/程式化作業,而寫入/程式化作業可能遠快過抹除作業(舉例來說,讀取該媒體可能快過抹除該儲存媒體數百倍,並且快過程式化該儲存媒體數十倍)。該儲存媒體140可以被分割成能夠當成一分群(舉例來說,多個抹除區塊)被抹除的多個儲存組。因此,在「正確地方(in-place)」修正單一資
料段可能會需要抹除包括該資料的整個抹除區塊並且將該經修正的資料連同原始、沒有改變的資料一起覆寫至該抹除區塊。這可能會導致效率不彰的「寫入放大」,其可能會過度磨耗該媒體。所以,於某些實施例中,該儲存層130可以被配置成用以將資料寫在「不正確地方(out-of-place)」。如本文中的用法,將資料寫在「不正確地方」係指將資料更新及/或覆寫在不同的儲存位置處,而非將資料覆寫在「正確地方」(舉例來說,覆寫該資料的原始實體儲存位置)。將資料更新及/或覆寫在不正確地方可以防止寫入放大,因為具有要被修正之資料的抹除區塊中的既有、合法資料不需要被抹除及重新拷貝。又,將資料寫在不正確地方還可以從許多儲存作業的等待時間路徑中移除抹除,俾使得抹除等待時間不會是寫入作業的「關鍵路徑」的一部分。
該儲存層130可以被配置成特別藉由使用記錄日誌儲存模組136在不正確地方實施儲存作業。該記錄日誌儲存模組136可以被配置成以維持被該儲存層130所實施之儲存作業之相對順序的方式附加資料在儲存位址空間144裡面的目前附加點處,從而在該儲存媒體140中形成一「儲存記錄日誌」。圖1E描繪在儲存媒體140的儲存位址空間144裡面被實施的僅有附加(append-only)儲存作業的其中一實施例。如上面的揭示,該儲存位址空間144包括複數個儲存組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的儲存位置N 189)之後,該記錄日誌儲存模組136可以藉由回繞(wrapping back)而將附加點180前移至第一儲存組170A(或是下一個可用的儲存組,倘若儲存組170A無法使用的話)。據此,該記錄日誌儲存模組136可以將儲存位址空間144視為一迴圈或是循環。
如上面的揭示,依序附加資料於該儲存位址空間144裡面可以在儲存媒體140中產生一儲存記錄日誌。在圖1E的實施例中,該儲存記
錄日誌可以包括因從附加點180處依序儲存資料封包(及/或其它資料結構)於該儲存位址空間144裡面而實施的有序儲存作業序列。該僅有附加儲存格式可被用來修正及/或覆寫資料於不正確地方,如上面的揭示。在不正確地方實施儲存作業可以防止寫入放大,因為包括要被修正及/或覆寫之資料的儲存組170A至N中的既有合法資料不需要被抹除及/或重新拷貝。又,將資料寫在不正確地方還可以從許多儲存作業的等待時間路徑中移除抹除(該抹除等待時間不再是寫入作業的「關鍵路徑」的一部分)。
在圖1E的實施例中,對應於LID A的資料段X0可以被儲存在儲存位置191處。資料段X0可以被儲存在自我描述封包格式110之中,如上面的揭示。封包110的資料段112可以包括資料段X0,以及持久性元資料114可以包括和該資料段相關聯的LID(舉例來說,LID A)。一儲存用戶106可以請求一用以修正及/或覆寫和該LID A相關聯之資料的作業,其可以包括以資料段X1取代資料段X0。該儲存層130可以藉由附加一包括資料段X1的新封包於儲存媒體140中的一不同儲存位置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中的儲存記錄日誌的內容來重建儲存元資料135,其包含正向映圖160。在圖1E的實施例中,和LID A相關聯的資料的目前版本可分別以儲存位置191與193處的資料封包110的相對記錄日誌順序為基礎來決定。因為儲存位置193處的資料封包於該儲存記錄日誌中被排序在儲存位置191處的資料封包後面,所以,儲存層130可以判斷儲存位置193包括對應於LID A的資料的最近、最新版本。儲存層130可以重建正向映圖160,以便將LID A和儲存位置193處的資料封包(而非儲存位置191處的過時資料)產生關聯。
圖2所示的係包括一儲存層130的系統200的另一實施例。儲存媒體140可以包括複數個獨立群119A至N,該些獨立群中的每一者可以包括一或更多個儲存陣列115A至N。每一個獨立群119A至N可以透過互連線127被耦合至儲存控制器139。
儲存控制器139可以包括一儲存請求接收器模組231,其被配置成用以透過一匯流排127從儲存層130處接收儲存請求。該儲存請求接收器231可以進一步被配置成用以將資料傳輸至儲存層130及/或儲存用戶106/從儲存層130及/或儲存用戶106處傳輸資料。據此,該儲存請求接收器模組231可以包括一或更多個直接記憶體存取(Direct Memory Access,DMA)
模組、遠端DMA模組、匯流排控制器、橋接器、緩衝器、…等。
儲存控制器139可以包括一寫入模組240,其被配置成用以響應於透過請求模組231所收到的請求將資料儲存在儲存媒體140中。該些儲存請求可以包括及/或參考和該些請求有關的資料的邏輯介面。寫入模組240可以被配置成用以儲存該資料於一自我描述的儲存記錄日誌之中,如上面的揭示,其可以包括將多個資料封包110依序附加在儲存媒體140的儲存位址空間144裡面。該些資料封包110可以包括及/或參考該資料的邏輯介面(舉例來說,可以包括和該資料相關聯的LID)。該寫入模組240可以包括一寫入處理模組242,其被配置成用以處理要儲存的資料。處理要儲存的資料可以包括下面之中的一或更多項處理:a)壓縮處理;b)加密處理;c)將資料囊封至個別的資料封包110(及/或其它盒體之中)之中;d)實施錯誤訂正碼(Error-Correcting Code,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可以進一步包括一資料讀取模組241,其被配置成用以響應於透過儲存請求接收器模組231所收到的請求而從儲存媒體140中的儲存記錄日誌處讀取資料。該些請求可以包括被請求資料的LID、被請求資料的儲存位址、及/或類似物。該讀取模組241可以被配置成用以:a)藉由特別使用正向映圖160來決定包括該被請求資料的該(些)資料封包110的儲存位址;b)從儲存媒體140中的該些已決定的儲存位址處讀取該(些)資料封包110;以及c)處理要由該請求實體使用的資料。讀取自該儲存媒體140的資料可以透過讀取緩衝器245串流至該讀取模組241之中。該讀取緩衝器245可以包括用於時脈域同步的一或更多個讀取同步緩衝器,如上面所述。讀取處理模組243可以被配置成用以處理讀取自儲存媒體140的資料,其可以包含,但是並不受限於下面之中的一或更多項處理:a)解壓縮處理;b)解密處理;c)從一或更多個資料封包110(及/或其它盒體)處抽出資料;d)實施ECC處理;…等。
儲存控制器139可以進一步包括一群控制器252,其被配置
成用以選擇性繞送寫入模組240及/或讀取模組241的資料及/或命令至特殊的獨立群119A至N/從特殊的獨立群119A至N處繞送寫入模組240及/或讀取模組241的資料及/或命令。於某些實施例中,該儲存控制器139被配置成用以在獨立群119A至N之間交錯插入儲存作業。舉例來說,該儲存控制器139可以在來自寫入模組240的資料正在被程式化至群119B的儲存陣列115B時從群119A的儲存陣列115A處讀取至讀取模組241之中。在David Flynn等人於2006年12月12日提申的美國專利申請案序號第11/952,095號中揭示多群儲存作業的進一步實施例,該案標題為「利用群交錯插入來管理固態儲存之命令的設備、系統、以及方法(Apparatus,System and Method for Managing Commands for Solid-State Storage Using Bank Interleave)」,本文以引用的方式將其併入。
寫入處理模組242可以被配置成用以將資料封包110編碼成ECC碼字。如本文中的用法,一ECC碼字係指資料以及對應的錯誤偵測及/或訂正資訊。該寫入處理模組242可以被配置成用以施行任何合宜的ECC演算法及/或產生任何合宜類型的ECC碼字,其可以包含,但是並不受限於資料段以及對應的ECC徵狀、ECC符號、ECC塊、及/或其它結構性及/或無結構性的ECC資訊。ECC碼字可以包括任何合宜的錯誤訂正編碼,其包含,但是並不受限於:區塊ECC編碼、捲積ECC編碼、低密度同位檢查(Low-Density Parity-Check,LDPC)編碼、加拉格爾編碼(Gallager encoding)、里德索羅門編碼(Reed-Solomon encoding)、漢明碼(Hamming code)、多維式同位編碼、循環錯誤訂正碼、BCH碼、及/或類似的編碼。該寫入處理模組242可以被配置成用以產生預設大小的ECC碼字。據此,單一封包可以被編碼
成複數個不同的ECC碼字及/或單一ECC碼字可以包括二或更多個封包的一部分。或者,該寫入處理模組242可以被配置成用以產生任意大小的ECC碼字。在Jeremy Fillingim等人於2013年3月14日提申的美國專利申請案序號第13/830,652號中揭示錯誤訂正碼處理的進一步實施例,該案標題為「用於適應性錯誤訂正編碼的系統以及方法(Systems and Methods for Adaptive Error-Correction Coding)」,本文以引用的方式將其併入。
於某些實施例中,儲存層130運用邏輯位址空間132來有效地施行高階儲存作業。該儲存層130可以被配置成用以施行「複製(clone)」或「邏輯拷貝(logical copy)」作業。如本文中的用法,「複製(clone)」或「邏輯拷貝(logical copy)」係指用以有效拷貝或複製(replicate)由儲存層130所管理的資料。一複製作業可以包括創造一「經複製的」LID集,其對應於一「原始的」LID集。所以,複製作業可以包括利用二(或更多個)不同的邏輯介面(舉例來說,不同的LID集)來參考相同的儲存位置集。所以,複製作業可以修正被儲存在儲存媒體140中的一或更多個資料封包110的邏輯介面。「邏輯移動(logical move)」可以表示一種用以修正由儲存層130所管理的資料的邏輯介面的作業。一邏輯移動作業可以包括改變被用來參考已儲存在儲存媒體140中之資料的LID。「合併」作業可以包括合併邏輯位址空間132的不同部分。如本文中的進一步詳細揭示,複製及/或移動作業可被用來有效施行較高階的儲存作業,例如,重複刪除(deduplication)、快照(snapshot)、邏輯拷貝、原子作業、異動、及/或類似的儲存作業。在下面的美國臨時專利申請案中揭示用於複製與其它邏輯操控作業的系統與方法的實施例:DavidFlynn等人於2012年3月19日提申的「用於文意儲存的邏輯介面(Logical
Interfaces for Contextua1 Storage)」;2011年3月18日提申的美國臨時專利申請案第61/454,235號,該案標題為「支援作業排序、虛擬位址空間、原子作業、以及元資料探索的虛擬儲存層(Virtua1 Storage Layer Supporting Operations Ordering,a Virtual Address Space,Atomic Operations,and Metadata Discovery)」;David Flynn等人於2012年4月17日提申的美國臨時專利申請案第61/625,647號,該案標題為「用於管理邏輯位址空間的系統、方法、以及介面(Systems,Methods,and Interfaces for Managing a Logical Address Space)」;以及David Flynn等人於2012年4月23日提申的美國臨時專利申請案第61/637,165號,該案標題為「用於管理邏輯位址空間的系統、方法、以及介面(Systems,Methods,and Interfaces for Managing a Logical Address Space)」。本文以引用的方式將前述每一案併入。
參考圖3A,儲存層130可以包括一邏輯介面管理模組334,其被配置成用以管理和儲存層130所管理的資料有關的邏輯介面作業,例如,複製作業、移動作業、合併作業、…等。複製LID可以包括修正被儲存在儲存媒體140之中的資料的邏輯介面,以便特別允許可藉由使用二或更多個不同的LID集來參考資料。據此,創造一複製可以包括:a)在該邏輯位址空間132(或是其專屬部分)之中分派一LID集,以及b)藉由特別使用儲存元資料135將該些被分派的LID與和一LID「原始」集相同的儲存位置產生關聯。所以,創造一複製可以包括增加一或更多個登錄項至一被配置成用以將該新的複製LID集與一特殊的儲存位置集產生關聯的正向映圖160。
邏輯介面管理模組334可以被配置成用以根據一複製同步化政策來施行複製作業。複製同步化政策可被用來決定參考複數個複製或
拷貝中的第一複製或拷貝所實施的作業如何傳播至其它複製或拷貝。舉例來說,複製可針對分派作業來同步化,俾使得一用以擴大該些複製中其中一個複製的請求會包括擴大其它複製及/或拷貝。如本文中的用法,擴大一檔案(或是其它資料段)係指提高該檔案的大小、範圍、及/或限度,其可能包含增加一或更多個邏輯辨識符至該複製、修正已分派給該複製的邏輯辨識符中的一或更多個邏輯辨識符、及/或類似作業。該複製同步化政策可以包括一合併政策,其可以特別在多個複製於一合併及/或摺疊中被結合時(下面會額外詳細揭示)決定如何管理複製之間的差異。
圖3A描繪由儲存層130所施行的範圍複製作業的其中一實施例。圖3A的範圍複製作業可以響應於一來自儲存用戶106的請求而被施行。於某些實施例中,儲存層130的介面131可以被配置成用以提供用於實施複製作業的介面及/或API。或者,甚至除此之外,該範圍複製作業可以被實施成為一較高階作業的一部分,例如,原子作業、異動、快照、邏輯拷貝、檔案管理作業、及/或類似作業。
如圖3A中所示,儲存層130的正向映圖160包括一登錄項362,其被配置成用以連結LID 1024至2048至媒體儲存位置3453至4477。圖3A中省略其它登錄項,以避免混淆圖中所繪實施例的細節。如本文中的揭示,登錄項362及其連結可以定義一邏輯介面311A,儲存用戶106可以經此邏輯介面來參考對應資料(舉例來說,資料段312);儲存用戶106可以藉由使用LID 1024至2048而經由儲存層130來存取及/或參考資料段312(及/或其一部分)。據此,LID 1024至2048會特別定義資料段312的邏輯介面311A。
如本文中的揭示,儲存層130可以被配置成用於以文意格式將資料儲存在儲存媒體140中(舉例來說,封包格式110)。在圖3A的實施例中,在儲存位置3453至4477處的資料封包310包括一資料段312。該資料封包310進一步包含持久性元資料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,而不需要在儲存媒體140中拷貝及/或複製下面的資料段312。
資料段312的經修正的邏輯介面311B可能和被儲存在資料
位置3453至4477處的對應資料封包310的文意格式不一一致性。如上面的揭示,資料封包310的持久性元資料314會參考LID 1024至2048,但是並不包含及/或參考已複製的LID 6144至7168。資料段312的文意格式可被更新而與該經修正的邏輯介面311B一致(舉例來說,被更新而將該資料與LID 1024至2048及6144至7168產生關聯,不同於僅與LID 1024至2048產生關聯),其可以包括以將該資料段與此兩個LID集產生關聯的封包格式來覆寫該資料段。倘若儲存裝置141為一隨機存取、寫入正確地方的儲存裝置的話,該持久性元資料314可以在正確地方被更新。於包括一次性寫入、非對稱儲存媒體140的其它實施例中,此些正確地方更新可能效率不彰。所以,儲存層130可以被配置成以不一致性文意格式來保存資料,直到該資料重新被放置在一媒體管理作業之中為止,例如,儲存還原、重新放置、及/或類似作業(由媒體管理模組370來進行)。更新資料段312的文意格式可以包括重新放置及/或覆寫該資料段312於儲存媒體140之中,其可能係一耗時的過程,而且倘若該資料段312很龐大及/或該複製包括大量LID的話,其效率可能會特別不彰。所以,於某些實施例中,儲存層130可能延遲更新被複製的資料段312的文意格式及/或可能於一或更多個背景作業中更新該文意格式。同時,該儲存層130可以被配置成用以在該資料段312被儲存在不一致性文意格式中時提供存取該資料段312。
儲存層130可以被配置成用以在對應資料段312的文意格式被更新之前先承認複製作業完成。資料可以接著以經更新的文意格式被覆寫(舉例來說,被重新放置)在該儲存媒體140中。該更新可以在複製作業及/或其它前景儲存作業的「關鍵路徑」外面進行。於某些實施例中,該資料
段312會被媒體管理模組370重新放置為儲存還原過程、資料再新作業、及/或類似作業中一或更多者的一部分。據此,儲存用戶106可能能夠經由該經修正的邏輯介面311B來存取該資料段312(舉例來說,參考LID 1024至2048及/或6144至7168),而不需要等待該資料段312的文意格式根據該經修正的邏輯介面311B被更新。
該資料段312的該經修正的邏輯介面311B可能僅存在於儲存元資料135(舉例來說,映圖160)之中,直到該資料段312的文意格式在該儲存媒體140中被更新為止。所以,該正向映圖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)並且儲存該持久性註記366於儲存媒體140中而承認該複製作業完成。該持久性註記366可以響應於更新該資料段312的文意格式成一致於該已更新的邏輯介面311B(舉例來說,重新放置及/或覆寫該資料段312,如上面的揭示)而變成無效及/或被標記要從該儲存媒體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中被移除及/或被標記要在後面從該儲存媒體140中移除)。於某些實施例中,移除該持久性註記366可以包括送出一或更多個TRIM訊息,用以表示該持久性註記366不再需要被保留在該儲存媒體140中。或者,甚至除此之外,該正向映圖160的一部分可以被儲存在一持久性、有撞擊安全性的儲存位置中(舉例來說,非暫時性儲存資源103及/或儲存媒體140)。響應於續留該正向映圖160(舉例來說,
登錄項362與364),該持久性註記366可以變成無效,如上面的揭示,即使該資料段312尚未被覆寫成已更新的文意格式。
邏輯介面管理模組334可以被配置成用以根據一或更多種不同模式(其包含「寫入時拷貝模式(copy-on-write mode)」)來施行複製作業。圖3D所示的係寫入時拷貝模式中於一被複製範圍裡面所實施的儲存作業的其中一實施例。於寫入時拷貝模式中,在創造一複製之後所進行的儲存作業可能會導致該些複製彼此相異(舉例來說,登錄項362與364可能係表示不同的儲存位址、範圍、及/或限度)。在圖3D的實施例中,該儲存層130已將資料段312寫成已更新的文意資料格式(封包320),其被配置成用以將該資料段312與兩個LID範圍1024至2048及6144至7168產生關聯(如圖3C中所示)。一儲存用戶106可以接著送出用以修正及/或覆寫對應於LID 6654至7168之資料的一或更多個儲存請求。在圖3D的實施例中,該儲存請求包括修正及/或覆寫LID 6657至7168的資料。該儲存層130可以響應而儲存該新的及/或已修正的資料於儲存媒體140中,其可以包括附加一新的資料封包340至儲存記錄日誌,如上面的揭示。資料封包340可以將資料段342與LID 6657至7424產生關聯(舉例來說,藉由使用封包340的持久性元資料344)。該正向映圖160可以被更新用以將該些LID 6657至7424與資料段342產生關聯,其可以包括將登錄項364分成一登錄項365與一登錄項367,登錄項365被配置成用以繼續參考資料段312中的該資料的未經修正的部分,而登錄項367則參考被儲存在儲存位址78512至79024處的新資料段342。於圖3D中所示的寫入時拷貝模式中,對應於LID 1024至2048的登錄項362可能沒有改變,並且繼續參考在儲存位址64432至65456處的資料
段312。圖3D中雖然並未顯示;不過,範圍1024至2048裡面的修正卻可能會導致影響登錄項362的雷同偏離變化。又,該(些)儲存請求並不受限於修正及/或覆寫資料。其它作業可以包括擴大該LID集(附加資料)、移除LID(刪除(deleting)、截斷(truncating)、及/或削減(trimming)資料)、及/或類似的作業。
於某些實施例中,儲存層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可以被配置成用以將LID 1537至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相關聯。於某些實施例中,該範圍合併作業可以進一步包括儲存一持久性註記366於儲存媒體140中,用以將該資料段
342與已更新的邏輯介面311C產生關聯(舉例來說,將儲存位址78512至79024處的資料段342和LID 1537至2048產生關聯)。如上面的揭示,該持久性註記366可以被用來確保該範圍合併作業為持久性並且有撞擊安全性。該持久性註記366可以響應於將該資料段342重新放置在和邏輯介面311C一致的文意格式中(舉例來說,將該資料段342與LID 1537至2048產生關聯)、續留該正向映圖160、及/或類似作業而被移除。
配合圖3A至E所揭示的複製作業可被用來施行其它邏輯作業,例如,範圍移動作業。回頭參考圖3A至C,一用以複製正向映圖160之登錄項362的複製作業可以包括修正和資料段312相關聯的邏輯介面,以便將該資料段312與LID原始集1024至2048及(登錄項364的)新的複製LID集6144至7168產生關聯。該複製作業可以進一步包含儲存一持久性註記366,用以表示該資料段312的經更新的邏輯介面311B及/或於一或更多個背景作業中根據該經更新的邏輯介面311B來改寫該資料段312。
邏輯介面管理模組334可以進一步被配置成用以施行「範圍移動」作業。如本文中的用法,「範圍移動」作業係指修正一或更多個資料段的邏輯介面,用以將該些資料段與不同LID集產生關聯。所以,一範圍移動作業可以包括:更新儲存元資料135(舉例來說,正向映圖160),用以將該些一或更多個資料段與該經更新的邏輯介面產生關聯;儲存一持久性註記366於儲存媒體140中,用以表示該些資料段的該經更新的邏輯介面;以及覆寫該些資料段於和該經更新的邏輯介面一致的文意格式中(資料封包310),如本文中的揭示。據此,儲存層130可以利用和上面配合圖3A至E所揭示者相同的機制及/或處理步驟來施行範圍移動作業。
如圖3A至E中所揭示的複製及/或範圍移動作業可以對儲存層130加諸特定的限制。如上面的揭示,以文意格式來儲存資料可以包括將該資料與參考該資料的每一個LID產生關聯。在圖3C的實施例中,持久性元資料324包括參考兩個LID範圍1024至2048及6144至7168的參考符。所以,提高參考一資料段的參考數可能對應提高該文意資料格式的經常性運算(舉例來說,增加該持久性元資料324的大小)。於某些實施例中,持久性元資料314的大小可能受到限制,其可以限制能夠參考一特殊資料段312的參考數及/或複製的數量。又,併入參考不同LID的多個參考數亦可能複雜化儲存還原作業。當一資料段312被重新放置時需要被更新的正向映圖登錄項的數量可以根據參考該資料段312的LID的數量而改變。回頭參考圖3C,於一修飾及/或儲存還原作業中重新放置該資料段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可以包括一參考模組434,其被配置成用以藉由使用一參考映圖460來管理複製作業。該參考映圖460可以包括對應於正在被該邏輯位址空間132的一或更多個邏輯介面參考的資料(舉例來說,一或更多個LID集)的參考登錄項。該參考模組434可以被配置成用以移除不再被用來參考合法資料及/或不再被正向映圖160裡面的登錄項參考的參考登錄項。如圖4A中所示,參考登錄項可以與該正向映圖160分開保存(舉例來說,保存在一分開的參考映圖460之中)。該些參考登錄項可以藉由使用參考辨識符來辨識,該些參考辨識符可以被
保存在一與邏輯位址空間132分開的名稱空間之中。據此,該些參考登錄項可以為一中間的「虛擬」或「參考」位址空間432的一部分,該位址空間432和儲存用戶106可經由儲存層介面131來直接存取的邏輯位址空間132分開且不同。或者,於某些實施例中,參考登錄項可以被分配選擇自儲存用戶106無法直接存取的邏輯位址空間132之預設範圍及/或部分中的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處的被複製資料。該複製作業可以進一步包括將登錄項10,2與400,2和參考登錄項100000,2產生關聯,如狀態413C處所示。如上面的揭示,將登錄項10,2與400,2和參考登錄項100000,2產生關聯可以包括指示該些登錄項10,2與400,2為間接登錄項。狀態413C可以進一步包括儲存一持久性註記366於儲存媒體140中,用以將儲存位址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產生關聯。如上面的揭示,創造該複製可以進一步包括儲存一持久性註記366於儲存媒體140中,用以經由參考登錄項100000,2將該資料段與LID 10,2及400,2產生關聯。該資料段可以在媒體管理模組370所實施的一或更多個背景作業中被改寫成經更新的文意格式。該資料可以連同用以將該資料段與參考登錄
項100000,2產生關聯的持久性元資料314一起被儲存,不同於分開的LID範圍10,2及400,2。所以,重新放置該資料段(如狀態413D中所示)可以僅需要更新該參考映圖460中的單一登錄項,不同於對應於參考該資料的每一個LID範圍的多個登錄項(舉例來說,多個登錄項10,2及400,2)。又,正向映圖160中任何數量的LID範圍可以參考該資料段,而不會增加和儲存媒體140中該資料相關聯的持久性元資料314的大小及/或複雜化該媒體管理模組370的作業。
圖4C所示的係使用參考登錄項所施行的複製作業的另一實施例。邏輯介面管理模組334可以被配置成用以響應要創造LID 1024至2048及/或資料段312之複製的請求而在參考映圖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的LID 6144至7168被參考。儲存用戶106雖然不可存取參考登錄項482;不過,該參考登錄項482可被用來讓轉移模組134存取資料(經由間接登錄項462與472),且因此,該參考登錄項482可被視為資料段312的經修正邏輯介面311B的一部分。
該複製作業可以進一步包括儲存一持久性註記366A於儲存媒體140中。如上面的揭示,儲存持久性註記366A及/或366B可以確保該複製作業為持久性並且有撞擊安全性。持久性註記366A可以被配置成用以辨識和資料段312相關聯的參考登錄項482。據此,該持久性註記366A可以將儲存位址64432至65456與參考登錄項辨識符0Z至1024Z產生關聯。該複製作業可以進一步包括儲存另一持久性註記366B,其被配置成用以將登錄項462及/或472的LID與該參考登錄項482產生關聯。或者,和登錄項462、472、以及482之間的關聯性有關的元資料亦可以被併入於單一持久性註記之中。持久性註記366A及/或366B可以被保留在儲存媒體140中,直到該資料段312被重新放置在一經更新的文意格式之中及/或該正向映圖160(及/或參考映圖460)被續留為止。
資料段312的經修正邏輯介面311D可能和文意格式原始資料封包410A不一致;持久性元資料314A可以參考LID 1024至2048,而不參考參考登錄項482及/或被複製的登錄項472。儲存層130可以被配置成用
以將該資料段312儲存成和該經修正邏輯介面311D一致的經更新的文意格式(封包410B);該持久性元資料314B可以將該資料段312與參考登錄項482產生關聯,不同於分開辨識每一個被複製範圍裡面的LID(舉例來說,登錄項462與472)。據此,使用間接登錄項482允許該資料段312的邏輯介面311D包括任何數量的LID,與持久性元資料314A至B的大小限制無關。又,可以進行參考登錄項482的額外複製而不需要更新資料段312的文意格式;此些更新可以藉由將該些新的LID範圍與正向映圖160中的參考登錄項482產生關聯及/或藉由特別使用持久性註記366來達成。
如上面的揭示,該些間接登錄項462及/或472可於一開始經由參考登錄項482來參考資料段312。接續該複製作業所實施的儲存作業可以藉由使用正向映圖160裡面的局部登錄項來反映。在完成該複製作業之後,該儲存層130可以修正和該(些)被複製的LID中一或更多者相關聯的資料。在圖4D的實施例中,一儲存用戶106修正及/或覆寫對應於間接登錄項462之LID 1024至1052的資料,其可以包括附加一新的資料段412至儲存記錄日誌(在儲存位址7823至7851處的資料封包420之中)。
資料段412可以被儲存在包括持久性元資料414A的文意格式之中(資料封包420),該文意格式被配置成用以將資料段412與LID 1024至1052產生關聯。該儲存層130可以被配置成用以於一局部登錄項465中將該資料段412與LID 1024至1052產生關聯。該局部登錄項465可以直接參考該經更新的資料,不同於經由間接登錄項462及/或參考登錄項482來參考該資料。
邏輯介面管理模組334可以響應於一和資料1024至1052(或
是其子集)有關的請求在一級聯查找作業中搜尋用於參考該些被請求LID的參考符,其可以包括搜尋其後接著該些參考登錄項的局部登錄項(若可用的話)的參考符。在圖4D的實施例中,局部登錄項465可以被用來滿足和LID範圍1024至1052(儲存位址7823至7851)有關的請求,而非遵照參考登錄項482的64432至64460。用於在一局部登錄項中找不到的LID(舉例來說,1053至2048)的請求可以繼續經由該參考登錄項482被服務。所以,和範圍1024至2048相關的資料的邏輯介面311E可以包括一或更多個局部登錄項465、一或更多個間接登錄項462、及/或一或更多個參考登錄項482。
於圖4E中所示的一進一步實施例中,一儲存層130可以經由該邏輯介面311E的該些LID中的另一LID(舉例來說,LID 6144至6162)來修正該複製的資料;圖4E中並沒有顯示該些邏輯介面定義符號,以免混淆所示實施例的細節。該經修正的資料可以利用一局部登錄項475來參考,如上面的揭示。在圖4E的實施例中,範圍462與472中的每一者都有經由該參考登錄項482的辨識符0Z至52Z於先前參考的資料的自己的個別局部版本。因此,登錄項462或472皆不包含參考範圍0Z至52Z的參考符。參考模組434可以決定對應資料(以及參考辨識符)不再被參考,且因此可被標記要從該儲存媒體140中移除(舉例來說,變成無效)。如圖4E中所示,讓該資料變成無效可以包括藉由特別修正該參考登錄項482而從參考映圖460中移除參考該資料的參考符,以便移除範圍0Z至52Z。讓該資料變成無效可以進一步包括更新其它儲存元資料135,例如,反向映圖、合法性位元映圖、及/或類似物(舉例來說,用以表示被儲存在儲存位址64432至64484處的資料不需要保留)。登錄項462與472的範圍可能繼續相異,直到沒有任
一者參考該參考登錄項482的任何部分為止,於此時點,該參考登錄項482可以被移除,以及而所參考的資料可因而變成無效,如上面的揭示。
圖4D與4E雖然描繪包括和對應的間接登錄項462與472重疊的LID範圍的局部登錄項465與475;但是,本揭示內容於此方面並不受限。於某些實施例中,圖4D的儲存作業可以藉由創造局部登錄項465並且修正間接登錄項462用以僅參考LID 1053至2048來反映。同樣地,圖4E的作業可以包括創造局部登錄項475並且修正間接登錄項472用以參考經截斷的LID範圍6163至7168。
回頭參考圖4A,參考模組434可以被配置成用以管理或「修飾(groom)」該參考映圖460。於某些實施例中,參考映圖460之中的每一個登錄項皆包括包含一參考計數(reference count)的元資料。當參考該參考登錄項的新參考符或連結增加時,該參考計數便可能提高;並且該參考計數可以響應於移除參考該登錄項的參考符而減少。於某些實施例中可以保存參考映圖460中的每一個參考辨識符的參考計數。或者,可以整體地保存多個參考登錄項的參考計數。當一參考登錄項的參考計數達到0時,該參考登錄項(及/或其一部分)便可以從該參考映圖460中被移除。移除一參考登錄項(或是一參考登錄項的一部分)可以包括讓儲存媒體140中的對應資料變成無效,如本文中的揭示(這表示不再需要保留該資料)。
於另一實施例中,參考模組434可以利用「標記與清除(mark-amd-sweep)」的方式移除參考登錄項。該參考模組434(或是其它處理,例如,轉移模組134)可以藉由特別遵循正向映圖160之中從間接登錄項(或是其它類型的登錄項)連接至參考登錄項的連結來週期性檢查參考參考映圖
460之中的登錄項的參考符。在標記與清除期間沒有被存取的參考登錄項可以被移除,如上面的揭示該標記與清除可以當作一背景處理來操作,並且可以週期性地實施一標記與清除作業用以辨識與移除不再使用的參考登錄項。
於某些實施例中,本文中所揭示的參考映圖460可依照需求而被創造(舉例來說,響應於一複製之創造或是其它間接資料參考符)。於其它實施例中,所有資料儲存作業皆可經由中間映射來實施。於此些實施例中,儲存用戶106可以分派一虛擬位址空間(Virtual Address Space,VAS)的間接虛擬辨識符(Virtual Identifier,VID),該虛擬位址空間可以經由一中間映射層連結至及/或參考儲存位址,例如,邏輯位址空間132。該VAS可以增加一介於儲存用戶106與該儲存媒體140之間的中間映射層。儲存用戶106可以利用一虛擬位址空間的VID來參考資料,該些VID映射至邏輯位址空間132的邏輯辨識符,且該些邏輯辨識符接著會與(多個)個別儲存裝置141及/或儲存媒體140中的儲存位址相關聯。如本文中的用法,一VAS可以包含,但是並不受限於:邏輯單元數(LUN)位址空間、虛擬LUN(Virtual LUN,vLUN)位址空間、及/或類似物。
圖5A所示的係一間接層530的其中一實施例,其被配置成用以使用一虛擬位址空間532來特別施行有效的範圍複製作業。該間接層530可以被配置成用以經由一介面531呈現一VAS532給儲存用戶106。和本文中揭示的介面131相同,介面531可以包括下面之中的一或更多者:區塊裝置介面、虛擬儲存介面、快取介面、及/或類似的介面。儲存用戶106可以實施和該間接層530經由介面521參考VAS 532的VID所管理的儲存
資源有關的儲存作業。
間接層530可以進一步包括一VAS轉移模組534,其被配置成用以經由一或更多個中間的儲存層(舉例來說,儲存層130)映射VID至儲存資源。據此,間接層530的VAS元資料535可以包含一VAS正向映圖560,其包括VAS 532的VID和VAS 532的LID之間的任何至任何映射。圖5A中雖然並未顯示;不過,該VAS轉移模組534及/或VAS正向映圖560亦可以被配置成用以聚合複數個不同儲存層130的複數個邏輯位址空間132。據此,於某些實施例中,VAS 532可以對應於複數個不同的邏輯位址空間,每一個邏輯位址空間皆包括一分開的LID集,並且每一個邏輯位址空間皆對應於一個別的儲存層130、儲存裝置141、及/或儲存媒體140。
圖5A雖然與儲存層130分開描繪該間接層530;不過,本揭示內容在此方面並不受限。於某些實施例中,VAS 532、VAS正向映圖560、VAS轉移模組534、及/或間接層530的其它模組可以被施行為儲存層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來參考儲存資源。所以,參考一或更多個VID經由間接層530來實施儲存作業可以包括:a)辨識對應於該些VID的儲存層130;b)藉由使用VAS轉移模組534及/或VAS正向映圖560來決定該儲存層130中被映射至該些VID的LID;以及c)參考該(些)經決定的LID藉由使用該儲存層130來施行該儲存作業。
圖5B所示的係藉由使用間接層530所施行的複製作業的其中一實施例。如上面的揭示,該VAS正向映圖560可以對應於一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可以包括一登錄項10,2,其代表VAS 532中的兩個VID(10與11)。該VAS正向映圖560會將該VID登錄項10,2與邏輯位址空間132的LID產生關聯。在圖5B的實施例中,該VAS正向映圖560連結該VID登錄項10,2至LID 100000與100001(登錄項100000,2)。該登錄項10,2可以被分派給一特殊的儲存用戶106,該儲存用戶106可以參考該些VID來實施儲存作業。在狀態563A中,儲存層130可以被配置成用以映射該登錄項100000,2至儲存媒體140中的一或更多個儲存位址(儲存位址20000)。
在狀態563B中,間接層530可以施行一複製作業,用以複製該VID登錄項10,2。該複製作業可以包括:a)分派一新的VID登錄項400,2,以及b)將該新的VID登錄項400,2與VAS正向映圖560中的對應登錄項100000,2產生關聯。正向映圖160中的對應登錄項100000,2可以維持不變。或者,該正向映圖160中的登錄項100000,2的參考計數(或是其它指示符)可以被更新用以表示該登錄項正在被多個VID範圍參考。被儲存在儲存位址200000處的資料的文意格式可以保留不變(舉例來說,繼續將該資料與邏輯介面100000,2產生關聯)。該複製作業可以進一步包括儲存一持久性
註記366於儲存媒體140中,用以表示該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)映射該新的LID至VAS正向映圖560中的VID 10。
本文中所揭示之用於施行範圍複製作業、移動作業、及/或合併作業的實施例可被用來有效地施行其它較高階的儲存作業,例如,快照、重複刪除、原子作業、異動、檔案系統管理功能、及/或類似的作業。回頭參考圖4A,儲存層130可以包括一重複刪除模組374,其被配置成用以辨識儲存媒體140中的重複資料。重複資料可以利用任何合宜的機制來辨識。於某些實施例中,重複資料係藉由下面來辨識:a)掃描儲存媒體140的內容,b)產生各種資料段的簽章數值,以及c)比較資料簽章數值以便辨識重複資料。該些簽章數值可以包含,但是並不受限於:密碼簽章、雜湊碼、循環碼、及/或類似物。簽章資訊可以被儲存在儲存元資料135裡面,例如,正向映圖160(舉例來說,儲存在和該些登錄項相關聯的元資料之中),及/
或可以被保存及/或索引標示在該儲存元資料135的一或更多個分開的資料結構之中。該重複刪除模組374可以比較多個資料簽章,並且在偵測一簽章匹配時可以實施一或更多個重複刪除作業。該些重複刪除作業可以包括驗證該簽章匹配(舉例來說,實施逐個位元組的資料比較)以及實施一或更多個範圍複製作業以便經由二或更多個LID範圍來參考該重複資料。
圖6所示的係重複刪除作業的其中一實施例。正向映圖160可以包括登錄項662與672,其可能參考被儲存在不同個別儲存位址3453至4477以及7024至8048處的重複資料。登錄項662與672可以對應於不同個別的邏輯介面663與673,邏輯介面663與673分別對應於LID 1024至2048以及6144至6656。該重複資料段(資料段612)可以藉由重複刪除模組374來辨識及/或驗證,如上面的揭示。或者,當資料被接收用於儲存在儲存層130處時,該重複資料便可能被辨識。據此,在該資料的額外拷貝被儲存在儲存媒體140中之前該資料便可以被重複刪除。
儲存層130可以響應於辨識及/或驗證該些登錄項662與672參考重複資料而被配置成用以重複刪除該資料,其可以包括創造一或更多個範圍複製以便經由兩個不同的LID集來參考該重複資料的單一拷貝。如上面的揭示,創造一範圍複製可以包括修正一資料段的邏輯介面663與673。在圖6的實施例中,該重複資料分別在儲存位置3453至4477以及7024至8048處被儲存成一封包610裡面的資料段612。該複製作業可以包括修正該些資料段中其中一者(或是該資料段的一新版本及/或拷貝)的邏輯介面,俾使得該資料段能夠被兩個登錄項663與673參考。
該範圍複製作業可以利用本文中揭示的任何複製實施例來
施行,其包含圖3A至E的範圍複製實施例、圖4A至E的參考登錄項實施例、及/或圖5A至B的中間映射實施例。於圖6的重複刪除實施例中,兩個LID範圍1024至2048以及6144至6656可以被修正用以經由一參考登錄項682來參考資料段612的單一版本(另一資料段可以變成無效)。因此,該重複刪除作業可以包括創造一參考登錄項682用以代表該被重複刪除的資料段612(參考該封包610)。該重複刪除作業可以進一步包括將登錄項662與672修正及/或轉換成個別的間接登錄項665與675,其可以經由該參考登錄項682被映射至資料段612,如上面的揭示。該些重複刪除作業可以進一步包括修正該資料段612的邏輯介面669,用以將該資料段612與兩個LID集1024至2048以及6144至7168(以及該參考登錄項682)產生關聯。該些重複刪除作業可以進一步包括儲存一持久性註記366於儲存媒體140中,如上面的揭示。
該重複刪除作業可以進一步包括更新資料段612的文意格式,以便和該經修正的邏輯介面669一致,如上面的揭示。更新文意格式可以包括在一或更多個背景作業中以經更新的文意格式(資料封包610)附加該資料段612至儲存記錄日誌(舉例來說,在儲存位置84432至85456處)。該經更新的資料封包610可以包括持久性元資料614,其將該資料段612與該經更新的邏輯介面669產生關聯(舉例來說,經由參考辨識符0Z至1023Z和LID 1024至2048以及6144至6656產生關聯)。
圖6雖然圖解複製及/或重複刪除單一登錄項或LID範圍;不過,本揭示內容於此方面並不受限。於某些實施例中,複數個前置辨識符範圍可以在單一複製作業中被複製。此類型的複製作業可被用來創造一
位址範圍(或是整個邏輯位址空間132)的「快照」。如本文中的用法,快照係指一儲存裝置(或是LID集)在某個特殊時間點處的狀態。不管在完成快照作業之後於一LID範圍裡面發生變化,快照仍可以保存該範圍的「原始」狀態。
圖7所示的係一系統700的其中一實施例的方塊圖,其包括一儲存層130,該儲存層130被配置成用以有效施行快照作業。圖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被配置成用以將資料與時序資訊產生關聯,其可被用來建立在儲存媒體140中所實施的儲存作業的相對時序資訊。於某些實施例中,該時序資訊可以包括個別的時間戳記(由時序模組738來保存),其可被套用至儲存在儲存媒體140中的每一個資料封包。該些時間戳記可以被儲存在資料封包310的持久性元資料314裡面。或者,甚至除此之外,時序模組738可以被配置成以較粗糙程度的粒度來追蹤時序資訊。於某些實施例中,時序模組738可以保存一或更多個全域時序指示符(一新紀元時間辨識符(epoch identifier))。如本文中的用法,「新紀元時間辨識符」係指被用來決定經由儲存層130所實施的儲存作業的相對時序的辨識符。該記錄日誌儲存模組136可以被配置成用以在資料封包710中包含一新紀元時間指示符739。該新紀元時間指示符739可以對應於時序模組738所保存的目前的新紀元時間(舉例來說,全域時序指示符)。該新紀元時間指示符739可以對應於對應的資料段712被寫至儲存記錄日誌的新紀元時間。該新紀元時間指示符739可以被儲存在封包710的持久性元資料714裡面,且因此可以在重新放置作業期間接層530保持和該資
料封包710相關聯。時序模組738可以被配置成用以響應於特定事件(例如,創造一新的快照、使用者請求、及/或類似的事件)而遞增該全域新紀元時間辨識符。資料段712的新紀元時間指示符739可以經由重新放置作業及/或其它媒體維持作業而保持不變。據此,該新紀元時間指示符739可以對應於資料段712的原始儲存時間,而與資料封包710在儲存記錄日誌之中的相對位置無關。
一快照作業可以包括保留一特殊LID範圍(FR1)在特殊時間處的狀態。所以,一快照作業可以包括保留和儲存媒體140中的FR1有關的資料。保留該資料可以包括:a)辨識和一特殊時間框(新紀元時間)有關的資料,以及b)保留該經辨識的資料於儲存媒體140中(舉例來說,特別在儲存還原作業中防止該經辨識的資料從儲存媒體140中被移除)。雖然因後續的儲存作業(舉例來說,覆寫、修正、TRIM、及/或消除該資料的作業)而變成無效,不過,和快照有關的資料仍可被保留。在一特殊快照中需要被保留的資料可以藉由上面所揭示的新紀元時間指示符739來辨識。
在狀態773A中(時間t1,由新紀元時間指示符e0來表示),儲存層130可以接收一用以施行快照作業的請求。快照模組736可以響應於該請求而決定由時序模組738所保存的新紀元時間辨識符的目前數值。新紀元時間辨識符的目前數值可以稱為目前的「快照新紀元時間(snapshot epoch)」。在圖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中,快照模組736可以被配置成用以保留和快
照FR1有關的資料(和新紀元時間e0相關聯的資料),同時允許儲存作業繼續在後續的新紀元時間(舉例來說,新紀元時間e1)期間被實施。保留FR1可以包括複製FR1用以保留該LID範圍在新紀元時間e0處的原始狀態(FR1(e0)),同時允許儲存作業參考FR1繼續進行。該複製作業可以如上面的揭示利用下面之中的一或更多者來施行:複製的登錄項、參考登錄項、及/或中間映射層。該些儲存作業可以包括參考LID FR1而附加資料至儲存媒體140中的儲存記錄日誌。對應於該快照FR1(e0)的被複製的LID可能不改變。據此,LID範圍雖然改變,FR1(e0)的快照仍可以被保留。在狀態773B中所儲存的資料可以連同目前新紀元時間(e1)的新紀元時間指示符739被儲存。快照模組736可以被配置成用以保留因在新紀元時間e1(以及後續的新紀元時間)期間所實施的儲存作業變成過時及/或無效的資料。回頭參考圖1E的實施例,媒體管理模組370可以辨識資料X0為要在快照FR1中保留的資料(資料X1已經實施快照作業之後被儲存)。即使資料X0因新紀元時間e1中的資料X1隨即變成過時,快照模組736及/或媒體管理模組370仍可以被配置成用以保留資料X0。即使LID A被刪除、TRIM、或是經過類似的處理,資料X0仍可以被保留。
FR1(e0)的快照(其包含該LID範圍FR1(0)以及標記著新紀元時間指示符e0的資料)可以被保留至該對應快照被刪除為止。該快照可以響應於經由介面131收到的請求而被刪除。如狀態773C中所示,即使其它、中間的新紀元時間(新紀元時間e1至eN)已經被創造及/或刪除,新紀元時間0仍可以被保留在儲存媒體140中。刪除新紀元時間e0可以包括配至該快照模組736及/或媒體管理模組370,用以移除和新紀元時間e0相關聯的不
合法/過時資料。
在狀態773A處創造快照之後所實施的儲存作業可以修正邏輯位址空間132,且明確地說,修正正向映圖160。該些修正可以包括響應於附加資料至儲存媒體140、增加及/或移除FR1的LID、…等而更新儲存位址連結。於某些實施例中,快照模組736被配置成用以保留快照範圍FR1(e0)於分開的儲存元資料135(例如,邏輯位址空間132的一分開區域)裡面、於一分開的名稱空間之中、於一分開的映圖之中、及/或類似物之中。或者,快照模組736可以允許在正向映圖160之中進行改變,而不保留時間e0處的FR1的原始版本。快照模組736可以被配置成用以利用保留在儲存媒體140之中的快照資料來重建e0(時間t1)的正向映圖160。時間t1處的正向映圖160可以被重建,如上面的揭示,其可以包括依序存取被儲存在儲存媒體140中的資料(依照記錄日誌順序)並且以和資料封包710相關聯的持久性元資料714為基礎來創造正向映圖登錄項。在圖7的實施例中,對應於新紀元時間e0的正向映圖160可以藉由參考標記著新紀元時間指示符739 e0(或更低)的資料封包710來重建。和大於e0的新紀元時間指示符739相關聯的資料可以被忽略(因為此資料對應於快照FR1(e0)被創造之後的作業)。
本文中所揭示的儲存層130可以進一步被配置成用以施行有效的範圍移動作業。圖8A所示的係由本文中所揭示的儲存層130施行的移動作業的其中一實施例。正向映圖160包含登錄項862,其被配置成用以將LID 1023至1025連結至儲存媒體140中的個別資料段。圖中雖然分開描繪該些登錄項862以較佳圖解該實施例的細節;然而,該些登錄項862亦能夠被併入在包括LID 1023至1025完整範圍的單一登錄項之中。該些登錄項
862可以定義被儲存在儲存位址32、3096、以及872處的資料的邏輯介面863A。如上面的揭示,被儲存在儲存位址32、3096、以及872處的資料可以被儲存成用以將該資料與對應LID 1023、1024、以及1025產生關聯的文意格式。
儲存層130可以被配置成藉由特別以一對應於新的LID集(舉例來說,9215、9216、以及9217)的邏輯介面863B取代LID 1023、1024、以及1025和個別媒體儲存位置32、3096、以及872之間的關聯性而將該些登錄項862移到LID 9215至9217。該移動作業可以響應於透過介面131收到的請求而被實施及/或被實施作為一較高階儲存作業(舉例來說,請求重新命名一檔案、用以平衡及/或零碎重組正向映圖160的作業、或是類似的作業)的一部分。
上面的作業可以根據上面揭示的多個複製實施例中的一或更多者來施行。於某些實施例中,該移動作業可以包括將被映射至LID 1023、1024、以及1025的儲存位址與目的地LID 9215、9216、以及9217產生關聯,其可以造成根據該移動作業來修正該資料的邏輯介面863A。該移動作業可以進一步包括儲存一持久性註記366於儲存媒體140中,用以確保該移動作業為持久性並且有撞擊安全性。被儲存在儲存位址32、872、以及3096處的資料可以在一或更多個背景作業中根據經更新的邏輯介面863B被改寫,如上面的揭示。
圖8B所示的係一移動作業的另一實施例。如上,該移動作業可以包括將和LID 1023至1025相關聯的資料移動至LID 9215至9217。圖8B的移動作業可以運用配合圖4A至E所揭示的參考登錄項。據此,該
移動作業可以包括在一參考映圖460中創造參考登錄項882,用以代表該移動作業。該移動作業可以進一步包括分派新的間接登錄項866用以經由該些參考登錄項882來參考該資料。參考登錄項882可以包括可能和位址32、3096、以及872相關聯的預移動LID(pre-move LID)1023、1024、以及1025。所以,該資料的新邏輯介面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可以包括持久性元資料814A,其將該資料段812A與LID 9215產生關聯。該正向映圖160可以被更新用以參考經更新的文意格式中的資料,其可以包括修正該LID 9215的間接登錄項,用以直接參考資料封包810A,而非該參考登錄項。對應於LID 9215的登錄項可以從一間接登錄項回復到標準的局部登錄項,並且可以從參考映圖460中移除LID 1023的該參考登錄項。
參考圖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可以特別因為尚未被改寫成經更新文意格式之儲存位址3096處的資料而被併入於參考映圖460中。然而,因為該參考映圖460和正向映圖160被分開保存,所以,不會發生名稱抵觸並且可以完成儲存作業。該正向映圖160可以包含一分開的登錄項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(例如,作業系統、檔案系統、資料庫服務、及/或類似的儲存用戶106)運用。
圖9A所示的係一系統900A的其中一實施例,其包括一儲存層130,該儲存層130被配置成用以施行檔案管理作業。系統900A可以包括一檔案系統906,其可以被配置成用以運用儲存層130的功能以降低複雜性、減少經常性運算、以及類似的作用。該檔案系統906可以被配置成用以運用本文中所揭示的範圍複製、移動、快照、重複刪除、及/或其它功能來施行有效的檔案層級快照作業及/或拷貝作業。該檔案系統906可以被配置成用以響應於用戶請求(舉例來說,拷貝命令、檔案快照ioctrl、或是類似的請求)來施行此些作業。該檔案系統906可以被配置成用以特別藉由下面來施行有效的檔案拷貝作業及/或檔案層級快照作業:a)清除來源檔案不乾淨頁(如果有的話),b)創造一新的目的地檔案,用以代表該被拷貝的檔案及/或檔案層級快照,以及c)命令儲存模組130實施範圍複製作業,其被配置成用以複製該來源檔案至該目的地檔案。
圖9A針對一檔案系統906來描繪施行範圍複製作業的各種
實施例。於某些實施例中,並且如在狀態911A中所示,儲存層130可以被配置成用以保存一邏輯位址空間132,來源檔案(要被複製的檔案)的LID會在該邏輯位址空間132之中藉由使用正向映圖160被映射至儲存媒體中的檔案資料。在狀態911B中所示的對應範圍複製作業可以包括:a)為該目的地檔案分派一LID集,以及b)映射該來源檔案與該目的地檔案的LID至儲存媒體140中的檔案資料。該範圍複製作業可以進一步包括儲存一持久性註記366於該儲存媒體140中,用以表示該檔案資料和該來源檔案與該目的地檔案兩者相關聯。該範圍複製作業可以進一步包括根據該經更新的文意格式來改寫該檔案資料,如本文中的揭示。
於其它實施例中,儲存層130可以運用一參考映圖460來施行範圍複製作業(舉例來說,如圖4A至E中的揭示)。在該範圍複製作業之前,在狀態911C中,該來源檔案的LID可以被映射至正向映圖160中的對應檔案資料。在狀態911D中創造該範圍複製可以包括將該參考映圖460中的一或更多個參考登錄項和該檔案資料產生關聯,並且將對應於該些來源檔案LID與該些目的地檔案LID的間接登錄項連結至該參考登錄項。該範圍複製作業可以進一步包括儲存一持久性註記366於該儲存媒體140中及/或更新該檔案資料的文意格式,如本文中的揭示。
於某些實施例中,該儲存層130可以被配置成用以利用一中間映射層來施行範圍複製作業(舉例來說,如圖5A至B中的揭示)。如在狀態911E中所示,該來源檔案可以對應於一VAS 532的一VID集,其可以經由一中間位址空間(舉例來說,儲存層130的邏輯位址空間132)被映射至儲存媒體140中的檔案資料。實施該範圍複製作業可以包括:a)在該VAS 532
中為該目的地檔案分派VID,以及b)將該目的地檔案的VID與該中間映射層的LID產生關聯(舉例來說,被映射至該些來源檔案VID的相同LID集)。該範圍複製作業可以進一步包括儲存一持久性註記366於該儲存媒體140中,用以表示該些目的地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相關聯。該檔案系統906可以響應於該mmap作業而經由
儲存層130的介面131來實施一範圍複製作業,其可以包括創造檔案1的複製(以檔案1.1來表示)。檔案1.1可以和一不同的LID集40至43相關聯,該LID集40至43參考相同的檔案資料(舉例來說,相同的儲存位址P1至P4)。於其它實施例中,檔案1可以利用一參考映圖460及/或一中間轉移層被複製,如上面的揭示。
該檔案系統906可以響應於一msync呼叫而實施另一範圍複製作業(藉由使用儲存層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範圍之間的衝突。該合併政策可以包含,但是並不受限於:「覆寫」模式,其中,其中一個LID範圍的內
容「覆寫」另一個LID範圍的內容;「或(OR)」模式,其中,該些LID範圍的內容被組合在一起(舉例來說,在一邏輯或運算中);衝突時拷貝模式(copy-on-conflict mode),其中,衝突係藉由創造一或更多個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可以包括個別的元資料984及/或994,其被配置成用以表示該些範圍914及924有關係(舉例來說,被連結至相同的儲存位址集)。元資料984及/或994可以被配置成用以將LID 072至083連結至972至983,俾使得和該些範圍中其中一個範圍有關的修正能夠和另一個範
圍中的LID有關聯(舉例來說,配合LID 972被寫入的資料能夠和對應的LID 072相關聯、…等)。元資料984及/或994可以表示該些被複製的LID範圍的同步化政策,如上面的揭示,其可以表示複製之間的分派作業是否要被同步化。元資料984及/或994可以進一步包括及/或參考一合併政策,其可以指定如何管理合併衝突。該合併政策可以經由儲存層130的介面131來指定,可以一全域及/或內定合併政策為基礎來決定,可以經由請求參數(舉例來說,fadvise、ioctrl、…等)來指定、及/或類似的方法。該複製作業可以進一步包括附加一持久性註記366至儲存媒體140,其被配置成用以將儲存位址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;儲存一持久性註記366,其被配置成用以將儲存位址756至757處的資
料和LID 072至073產生關聯;及/或將儲存位址721至722處的資料改寫成經更新的文意格式,如本文中的揭示。因721至722處的新資料而被排除之儲存在儲存位址95至96處的資料可以變成無效,如上面的揭示。
在範圍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)。另一範圍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,連結該些LID範圍914與924(特別利用元資料984及/或994),以及將該些LID範圍914與924和參考映圖460中的參考辨識符934產生關聯。該範圍複製作業可以進一步包括儲存一持久性註記366於儲存媒體140中,其被配置成用以將參考映圖460中的範圍934和間接範圍914及/或924產生關聯,如上面的揭示。該參考映圖460裡面的範圍934可以被連結至儲存位址95至106。據此,兩個範圍914與924可以間接參考相同儲存位址處的相同資料。
被配置成用以修正對應於LID 982至983之資料的範圍924裡面的儲存作業可以包括在範圍924裡面分派新的LID並且將該些新的局部登錄項982至983連結至對應的儲存位址767至768,如在狀態943B中中所示。合併該些範圍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產生關聯。該複製作業可以進一步包括儲存一持久性註記366於儲存媒體140中,其被配置成用以將該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中。合併該些VID範圍914及924可以包括更新範圍914的該些VID映射以便參考該經更新的資料(經由該些中間位址984Z至985Z),如在狀態947D中所示。該合併作業可以進一步包括解決合併衝突(如果有的話),如上面的揭示。該合併作業可以進一步包括附加一或更多個持久性註記366至儲存媒體140,用以將該些VID 082
至083和該些中間位址984Z至985Z產生關聯。
於某些實施例中,儲存層130可以運用本文中所揭示的範圍複製作業、移動作業、及/或合併作業來為儲存用戶106(例如,檔案系統、資料庫、及/或類似的儲存用戶106)提供檔案一致性功能。參考圖9F,一檔案系統906可以運用該儲存層130遵照網路檔案系統(Network File System,NFS)版本3協定及/或其它檔案系統施行方式及/或協定來施行一種關閉至開啟檔案一致性模型。該關閉至開啟檔案一致性模型可以被配置成用以讓多個處理及/或應用(檔案系統用戶)同時在相同的檔案上進行操作。檔案修正係在該檔案被關閉時進行;在該檔案下一次被開啟之前,在該檔案上平行操作的其它用戶不會看見該些變化。據此,該檔案的狀態被設在該檔案被開啟時,並且在該檔案被重新開啟之前,由其它用戶平行施行的變化並不會被套用。
於某些實施例中,檔案系統906可以在工作、被複製的範圍裡面進行修正時運用儲存層130來保留該檔案的「原始」資料(舉例來說,該檔案的一致性版本)。如本文中的用法,保留該檔案的「原始」資料及/或該檔案的一致性版本係指將該檔案資料保存在對應於該檔案被開啟時的狀態中及/或保留一份檔案修正記錄日誌以便能夠從該檔案修正記錄日誌中重建該檔案資料在其原始、未經修正狀態中的狀態。
圖9F所示的係一系統的其中一實施例,其包括儲存層130,該儲存層被配置成用以施行關閉至開啟檔案一致性模型。檔案系統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)以及檔案952A在儲存媒體140中儲存位址P0至P3處的資料之間的映射951A。該些映射951A可以利用本文中揭示的正向映圖160及/或如配合圖5A至B所揭示的一或更多個中間映射層來施行。
在狀態953B中,儲存層130可以被配置成用以響應於一儲存用戶(儲存用戶926B)的檔案開啟請求而複製該檔案。該請求可以經由介面131被接收作為一明確請求、一請求參數(舉例來說,fadvise、ioctrl、…等)、及/或類似物。該複製作業可以包括一或更多個範圍複製作業,如本文中的揭示,其可以包括分派一對應於該工作版本檔案的新的「被複製」檔案LID集950B以及將該被複製辨識符集950B和與該檔案之主要版本的LID 950A(邏輯辨識符950A的原始或一致性集)相同的檔案資料952A產生關聯。該範圍複製作業可以進一步包括儲存一持久性註記366於儲存媒體140中,用以將該檔案資料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,以便將該檔案的被複製、工作版本的LID 950B連結至儲存位址P64處的該經修正的檔案資料952B。沒有被儲存用戶926B修正的其它LID可以繼續被連結至原始、未經修正的檔案資料952A。該儲存層130被
配置成用以保留該檔案的主要版本的辨識符950A與儲存位址P0至3處的未經修正檔案資料952A之間的原始映射951A。
另一儲存用戶926N可以在儲存用戶926B關閉該檔案之前送出一開起該檔案的請求。如在狀態953D中所示,儲存層130可以響應而創造該主要檔案的另一複製(複製該些主要檔案辨識符950A)。該些被複製的LID(LID 950C)可以對應於該檔案的原始狀態,沒有由儲存用戶926B參考被複製的辨識符範圍950B所進行的修正。據此,該些被複製的LID 950C可以被映射至儲存位址P0至3處的原始、未經修正檔案資料952A。儲存用戶926N可以平行於儲存用戶926B參考新的被複製檔案辨識符範圍950C來實施儲存作業。由用戶926B與926N所進行的改變可以在它們個別的LID範圍950B與950C裡面被隔離,且因此,可以不被套用至該檔案的主要版本(LID 950A及/或另一者)。
狀態953E圖解儲存用戶926B關閉該檔案的結果。儲存層130可以響應於儲存用戶926B關閉該檔案的請求而被配置成用以在一或更多個範圍合併作業之中將對應的範圍(LID 950B)的內容合併至該檔案的主要版本(LID 950A)之中。然而,該些改變可不被合併至儲存用戶926N正在使用的檔案版本(LID 950C)之中;在該儲存用戶926N重新開啟該檔案之前,用戶926N不可以存取該些修正。併入該些修正可以包括一或更多個範圍合併作業,如本文中的揭示。該些範圍合併作業可以被配置成用以將參考被複製LID範圍950B所進行的修正合併至該檔案的主要版本的LID範圍950A之中。在圖9F的實施例中,該範圍合併作業包括更新該些主要檔案LID 950A的映射951A,以便參考儲存位址P64處的經更新檔案資料952B。未被用戶
926B修正的資料可以保持連結至P0至3處的原始、未經修正的檔案資料952A。
如本文中的討論,於某些實施例中,該經修正檔案資料952B可以包含持久性元資料,其被配置成用以將儲存位址P64處的經更新檔案資料952B和該些LID 950B(不同於和該檔案的主要版本相關聯的LID 950A)中的一或更多者產生關聯。所以,該範圍合併作業可以進一步包括附加一持久性註記366至儲存媒體140,其被配置成用以將該LID範圍950A中的一或更多者和儲存位址P64處的經修正檔案資料952B產生關聯。儲存位址P64處的資料可以在一或更多個背景作業中以經更新的持久性元資料來改寫。在該檔案關閉作業(以及對應的範圍合併作業)之後,轉移模組134可以被配置成用以解除分派該LID範圍950B。
用戶926N可以參考該些被複製的檔案辨識符950C來修正該檔案。如在圖9G的狀態953F中所示,儲存用戶926N可能實施會與用戶926B所施行之修正有衝突的一或更多個作業。該些修正可能發生在用戶926B關閉該檔案之前(在如狀態953E中般用戶926B的修正被套用至該檔案的主要版本的LID 950A之前)。因此,該些LID 950A會被映射至原始、未經修正的檔案資料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中所示,儲存用戶926B可能在儲存用戶926C之前送出檔案關閉請求。在用戶926B關閉檔案之後,儲存層130可以將參考範圍950B所進行的修正合併至該檔案的主要版本的範圍950A之中(如在圖9F的狀態953E中所示)。用戶926C關閉檔案可以導致以資料952C來覆寫由儲存用戶926B所進行的某些修正(經修正的資料952B),如在圖9G的狀態953G中所示。在P3與P64處的資料可以被標記要從該儲存媒體140中移除,因為其不再被該主要檔案或是該檔案的目前、工作版本參考。如上面的揭示,該儲存層130可以被配置成用以施行其它合併政策,例如,以優先權為基礎的合併政策944。以優先權為基礎的合併政策可以解決以儲存用戶926B及/或926C的相對優先權為基礎的衝突。在狀態953H中,儲存用戶926C雖然可以在儲存用戶926B之後關閉檔案;然而,儲存用戶926B的修正仍可因為合併政策944表示儲存用戶926B的修正的優先權高於儲存用戶926C的衝突修正而被保留。據此,該檔案的主要版本的LID 950A可以繼續參考儲存用戶926B的經修正檔案資料952B,而儲存用戶926C的衝突檔案資料(P96處的資料952C)可以連同P3處的過時檔案資料952A被標記為垃圾收集組(garbage collection)。於其它實施例中,合併政策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可以進一步被配置成用以施行有效的原子儲存作業。圖10所示的係一系統1000的其中一實施例的方塊圖,其包括一儲存層130,該儲存層130被配置成用以施行原子儲存作業。如本文中的用法,原子儲存作業係指整個全部完成或是回捲(roll back)的儲存作業。據此,原子儲存作業不可以部分完成;儲存層130可以被配置成用以讓不完整的原子儲存作業的資料變成無效及/或移除不完整的原子儲存作業的資料。施行原子儲存作業(且尤其是施行包括多道步驟及/或和多個不同LID範圍或向量有關的原子儲存作業)可能會加諸很高的經常性運算成本。舉例來說,某些資料庫系統利用多個冗餘寫入作業集來施行原子儲存作業。
儲存層130可以包括一原子儲存模組1036,其可以運用本文中所揭示的範圍複製作業、範圍移動作業、及/或其它作業來提高原子儲
存作業的效率。於某些實施例中,介面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 fileids,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可以規定任何合宜的儲存作業,其包含,但是並不受限於:寫入、讀取、原子寫入、削減或拋棄請求、刪除請求、格式請求、圖樣化寫入請求(舉例來說,用以寫入一規定圖樣的請求)、寫入零請求、或是具有驗證請求的原子寫入作業、分派請求、或是類似的作業。上面所述的向量儲存請求介面可以延伸以接受向量結構:vector_request(int fileids,const struct iovect*iov,uint32 iov_cnt,
uint32 flag)
該旗標參數可以規定該vector_request的向量作業是否應該以原子方式被實施。原子儲存作業的進一步實施例在Ashish Batwara等人於2012年12月21日提申的美國專利申請案序號第13/725,728號中揭示過,該案標題為「用於向量輸入/輸出作業的系統、方法、以及介面(Systems,Methods,and Interfaces for Vector Input/Output Operations)」,本文以引用的方式將其併入。
原子儲存模組1036可以被配置成用以將和一原子儲存作業有關的儲存作業再導向至一預設的範圍(「處理中(in-process)」範圍1032)。該處理中範圍1032可以為邏輯位址空間132中儲存用戶106不可存取的一指定部分。或者,該處理中範圍1032可以被施行在一分開的名稱空間之中(舉例來說,參考映圖460及/或其它、中間位址空間)。在該處理中範圍1032裡面完成該原子儲存作業之後(舉例來說,所有的組成I/O向量皆已被處理),該原子儲存模組1036便可以實施原子範圍移動作業,用以將該原子儲存請求的資料從該處理中範圍1032移到邏輯位址空間132中的目的地範圍。如上面的揭示,該範圍移動作業可以包括將單一持久性註記366寫至儲存媒體140。
一儲存用戶106可以送出一和向量1040A與1040B有關的原子寫入請求。如圖10中所示,在原子儲存作業被實施之前(在狀態1015A中),向量1040A的LID 10至13可以被連結至儲存位址P1至P4並且向量1040B的辨識符36至38可以被連結至儲存位址P6至8。如在狀態1015B中所示,原子儲存模組1036可以被配置成用以將該些原子儲存作業再導向
至一處理中範圍1032。如上面的揭示,該處理中範圍1032可以包括邏輯位址空間132中的一指定區及/或可以被施行在一分開的名稱空間裡面。該處理中範圍1032裡面的向量1042A可以對應於向量1040A的LID 10至13並且處理中向量1042B可以對應於向量1040B的LID 36至38。向量1042A與1042B可以包括元資料,該元資料被配置成用以參考邏輯位址空間132中的對應向量1040A與1040B(及/或正向映圖160中的對應登錄項)。在狀態1015B中施行原子儲存作業可以包括配合處理中向量1042A與1042B的辨識符Z0至Z3及/或Z6至Z6來附加資料至儲存媒體140。其它儲存作業可以和該處理中範圍1032裡面的原子向量作業同時實施及/或交錯實施。
倘若該原子儲存作業在完成之前失敗的話,向量1040A與1040B的原始資料可以不受到影響。在重建期間,和該些處理中登錄項相關聯的資料(P9至P13及/或P100至P102處的資料)可以被確認為一不完整原子儲存作業的一部分(因為和處理中範圍1032的辨識符有關聯的關係),並且該資料可以被移除。
如圖10中所示,在狀態1015B中,該(些)原子儲存作業可被完成,其可以包括配合處理中範圍1032的辨識符將資料附加儲存媒體140,如上面的揭示。完成該原子儲存請求可以包括實施一範圍移動作業,用以修正被寫至處理中向量1042A與1042B的資料的邏輯介面,以便對應於邏輯位址空間132中的目的地邏輯介面。該範圍移動作業可以包括實施一原子儲存作業,用以將一持久性註記366儲存在儲存媒體140中,以便將儲存位址P9至P13連結至LID 10至13以及將P100至P102連結至LID 36至38。該範圍移動作業可以其它方式來施行,其包含,但是並不受限於圖
4A至E的參考登錄項實施例及/或圖5A至B的中間映射實施例。
圖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可以由另一、自主式模組(例如,媒體管理模組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之前)及/或可以發生在服務儲存作業(舉例來說,辨識已被儲存在該儲存媒體140中的重複資料)的路徑外面。步驟1320可以包括產生及/或保存資料簽章於儲存元資料135中並且利用該些簽章來辨識重複資料。
儲存層130(或是其它模組,例如,重複刪除模組374)可以響應於步驟1315處之辨識重複資料而修正該資料之拷貝的邏輯介面,俾使得單一拷貝可以被兩個(或更多個)LID集參考。步驟1320處對該邏輯介面所進行的修正可以包括更新儲存元資料135及/或儲存一持久性註記於該非揮發性儲存媒體140中,如上面所述。步驟1320可以進一步包括將該非揮發性儲存媒體中的資料的其它拷貝變成無效及/或移除該些拷貝,如上面所述。
儲存媒體140中的資料的文意格式可能和該經修正的邏輯介面不一致。所以,步驟1330與1340可以包括經由該經修正的邏輯介面提供存取不一致文意格式的資料並且在該儲存媒體140中更新該資料的文意格式,如上面所述。
圖14所示的係本文中所揭示之由儲存層130來施行的範圍合併作業的其中一實施例的流程圖。步驟1410可以包括複製一邏輯位址空間132裡面的一LID集。複製該些LID可以包括經由二或更多個不同的LID集來參考儲存媒體140中的相同資料集(舉例來說,相同的儲存位置及/或儲存位址)。該二或更多個集可以包括一LID工作集以及一LID原始一致性
集。該LID工作集可被用來實施檔案修正作業,而該LID原始一致性集可以被配置成用以保存該資料的原始未經修正的狀態。
如上面的揭示,在步驟1410處被複製的資料可以被一LID集參考,其可以被連結至儲存媒體140中該資料的儲存位置。步驟1410可以包括於該邏輯位址空間132裡面及/或於一分開的位址空間裡面分派一或更多個其它LID集。該一或更多個其它LID集可以包括一等於該LID原始集之邏輯容量的邏輯容量(舉例來說,包含相同數量的LID及/或對應於相同數額的儲存容量)。步驟1410可以進一步包括將該一或更多個其它LID集的邏輯辨識符和被該LID原始集參考的相同資料產生關聯及/或將該一或更多個其它LID集的邏輯辨識符連結至被該LID原始集參考的相同資料。據此,步驟1410可以包括修正該資料的邏輯介面,以便將該資料和二或更多個不同的LID集產生關聯。於某些實施例中,步驟1410包括於該邏輯位址空間132裡面分派一或更多個LID集並且將該些LID連結至相同的儲存位址集。或者,甚至除此之外,步驟1410可以包括在一參考映圖460裡面創造一或更多個參考登錄項,以便經由一或更多個參考登錄項將該二或更多個不同LID集中的LID間接連結至該些儲存位址,如配合圖4A至E的揭示。或者,步驟1410可以藉由使用一或更多個中間映射層來施行(舉例來說,如配合圖5A至B的揭示)。步驟1410可以進一步包括特別經由和該些LID相關聯的元資料984及/或994來連結該二或更多個LID集。元資料984及/或994可以被配置成用以表示該些LID集代表相同儲存實體(舉例來說,相同檔案的版本)的複製。元資料984及/或994可以進一步被配置成用以規定及/或參考該二或更多個LID集的合併政策,如上面的揭示。
步驟1410可以進一步包括儲存一持久性註記366於儲存媒體140中,其被配置成用以讓步驟1410的複製作業為持久性並且有撞擊安全性。該持久性註記366可以被配置成用以表示該資料的經修正邏輯介面(舉例來說,將該資料與該二或更多個LID集產生關聯)、表示該複製作業的合併政策、以及類似物。
步驟1420可以包括在步驟1410的一或更多個不同LID範圍裡面實施儲存作業。該些儲存作業可以響應於經由介面131接收自一或更多個儲存用戶106的請求而被實施。該些儲存作業可以包括附加資料至儲存媒體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範圍的邏輯拷貝的請求。該請求可以經由一介面131接收自一儲存用戶106及/或可以為儲存層130所提供的較高階API的一部分。該請求可以包含該複製的「作業模式」,其可以包含,但是並不受限於:該些複製如何被同步,如果有的話;如何進行合併(合併政策);該邏輯拷貝是否應該被指定為短暫性;…等。
步驟1530可以包括在邏輯位址空間132中分派LID來服務該請求。步驟1530的分派可以進一步包括保留實體儲存空間以適應於該被複製LID範圍的變化。實體儲存空間的保留可以基於該複製的作業模式。舉例來說,倘若所有變化要在該複製與原始位址範圍之間同步的話,可以保留一小部分(如果有的話)的實體儲存空間。或者,該儲存層130可以為具有衝突時拷貝合併政策的邏輯拷貝作業保留額外的實體儲存容量。步驟1530可以進一步包括在邏輯位址空間132的一指定部分或分段(舉例來說,專門用於邏輯拷貝及/或複製作業的範圍)裡面分派該複製。據此,步驟1530可以包括分派一第二、不同的LID集來複製一第一LID集。
步驟1540可以包括更新對應於該複製的資料的邏輯介面,
以便參考被連結至該資料的原始LID以及在步驟1530處所分派的被複製LID。步驟1540可以包括儲存一持久性註記366於儲存媒體140中,如上面的揭示。
步驟1550可以包括接收一儲存請求並且判斷該儲存請求是否和該些第一集及/或第二集(被複製的LID範圍)中的一LID有關。如果是的話,該流程會在步驟1560處繼續進行;否則,該流程會維持在步驟1550。
步驟1560可以包括決定要在該些其它相關聯的LID範圍中進行何種作業(如果有的話),舉例來說,同步化多個分派作業、…等。步驟1560的決定可以包括存取元資料984及/或994,其可以包括及/或參考該複製的同步化政策。
步驟1570可以包括實施在步驟1560處所決定的作業(如果有的話)以及被請求的儲存作業。倘若該些同步化作業中的一或更多者無法被實施的話(舉例來說,無法為該些複製中的一或更多者分派額外的邏輯位址空間132),下面的儲存作業則可能失效。
圖16所示的係用於施行範圍複製作業及/或範圍合併作業的方法1600的另一實施例的流程圖。步驟1610可以包括複製一LID範圍,如上面的揭示。步驟1610可以包括複製和被儲存在儲存媒體140中個別儲存位址處之資料相關聯的一LID集。所以,步驟1610可以包括將二或更多個不同的LID集和相同的儲存位置集(舉例來說,相同的資料)產生關聯。步驟1610可以進一步包括儲存一或更多個持久性註記366於儲存媒體140中及/或改寫該資料為經更新的文意格式,如上面的揭示。步驟1610可以包含特別經由元資料984及/或994來連結該二或更多個不同的LID集。該元資料
984及/或994可以包括及/或參考一複製同步化政策、合併政策、及/或類似的政策,如上面的揭示。
步驟1620可以包括參考該二或更多個被複製的LID範圍中的一或更多者來實施儲存作業。步驟1620可以包括同步化該些被複製的範圍之間的分派作業。步驟1620的儲存作業可以包括附加資料至儲存媒體140及/或將該被附加的資料與該些不同LID範圍中一或更多個範圍的LID產生關聯。
步驟1630包括接收一用以合併步驟1610的二或更多個LID範圍的請求。該合併請求可以經由介面131被接收及/或可以為另一較高階作業(例如,原子儲存作業或是類似的作業)的一部分。
步驟1640可以包括辨識該二或更多個LID集之間的合併衝突(如果有的話)。辨識合併衝突可以包括辨識在該二或更多個被複製的LID範圍中一個以上的LID範圍裡面被修正的LID。回頭參考圖9C,步驟1640可以包括響應於判斷在範圍914中的LID 072至073被修正,如同範圍924中的對應LID 972至973被修正,而在狀態941D中辨識合併衝突。因此,步驟1640可以包括比較該些LID複製裡面的修正以便辨識在該合併作業中有衝突的修正映射至相同LID的情況。
步驟1650可以包括解決在步驟1640處所辨識的合併衝突。步驟1650可以包括決定一可應用的合併政策,如上面的揭示,其可以決定合併衝突應該如何被解決。該合併政策可以規定一LID的哪一個版本要被併入該合併的LID範圍之中及/或規定是否藉由保存該些LID範圍的分開拷貝來解決衝突。步驟1650可以進一步包括根據該些經解決的合併衝突來合
併該些LID範圍,如上面的揭示。
圖17所示的係利用本文中所揭示之儲存層130來施行開啟至關閉檔案一致性的方法1700的其中一實施例的流程圖。步驟1710可以包括複製一對應於一檔案之資料的LID範圍。如上面的揭示,一檔案系統906(及/或其它儲存用戶106)可以被配置成用以運用該儲存層130來施行一關閉至開啟檔案一致性模型。據此,步驟1710可以響應於來自該檔案系統906的請求及/或響應於來自一用戶用以開啟該檔案的請求而被實施。步驟1710可以包括修正該檔案資料的邏輯介面,用以經由二或更多個不同的LID集來參考該檔案資料的儲存位置。該二或更多個不同的LID集可以包括一LID工作集與一LID原始一致性集。據此,該LID原始一致性集可以對應於該檔案的主要版本,而該LID工作集可以對應於讓該用戶使用的該檔案的工作拷貝。該工作拷貝可以和其它儲存用戶所進行的同時檔案修正(在該用戶於步驟1710處開啟該檔案之後所進行的修正)隔離。同樣地,在邏輯辨識符的工作集中參考該些邏輯辨識符所進行的修正在該LID檔案工作集與其它LID集合併(舉例來說,響應於複製該檔案)之前可能不會被傳播至該LID原始一致性集(該檔案的主要版本)之中。步驟1710的範圍複製作業可以利用本文中揭示任何範圍複製實施例來實施,其包含圖3A至E的多重參考實施例、圖4A至E的參考索引實施例、及/或圖5A至B的中間映射層實施例。步驟1710可以進一步包括提供該些LID集中的一或更多者給一儲存用戶106,例如,請求該檔案開啟作業的儲存用戶106。該儲存用戶可能具備該LID工作集。或者,甚至除此之外,該儲存層130可以提供該LID原始一致性集(或是其它集)給該儲存用戶106,並且該儲存層130可以將該儲存
用戶106的儲存請求再導向至該LID工作集。
步驟1720可以包括在該LID工作集裡面實施儲存作業。該些儲存作業可以包括儲存一或更多個資料段於儲存媒體140中,其被配置成用以修正該檔案(舉例來說,被配置成用以修正及/或覆寫該檔案之一或更多個原始、未經修正資料段的資料段)。該些儲存作業可以進一步包括將該LID工作集中該些LID中的一或更多者連結至經更新的儲存位置及/或位址,如本文中的揭示。該工作集裡面和該檔案之未經修正資料有關的LID可以保持連結至原始的儲存位址(保持連結至和該LID原始一致性集相同的儲存位置)。
步驟1722可以包括藉由參考該LID原始一致性集來提供存取該檔案的原始、未經修正版本以及對應的檔案資料,如上面的揭示。步驟1722可以進一步包括讓其它用戶特別藉由如步驟1710中般產生該些檔案LID的另一複製來開啟該檔案。
步驟1730可以包括將該LID工作集合併至另一LID範圍(例如,該LID原始一致性集)之中,如上面的揭示。步驟1730可以響應於用戶關閉該檔案而被實施。步驟1730可以進一步包括辨識與解決合併衝突,如上面的揭示。解決合併衝突可以包括撤銷在該等被複製LID範圍的一或更多者之中所進行的修正。於某些實施例中,舉例來說,在步驟1710處所產生之對應於該LID工作集的修正可以撤銷一不同儲存用戶106參考一不同LID工作集所進行的修正,或是可以被一不同儲存用戶106參考一不同LID工作集所進行的修正撤銷。解決合併衝突可以包括分歧該LID範圍,用以產生一對應於參考該LID工作集所進行之修正的第一LID範圍以及對應於
另一儲存用戶在一不同的LID工作集中所進行之衝突修正的另一LID範圍。合併該些LID範圍可以進一步包括儲存一持久性註記366於儲存媒體140中,經由一和被儲存在該儲存媒體140中的資料的文意格式不一致的邏輯介面提供存取該資料,及/或改寫該資料為一經更新的文意格式,如上面的揭示。
本揭示內容雖然參考各種示範性實施例;然而,熟習本技術的人士便會明瞭可以對該些示範性實施例進行改變與修正,其並不會脫離本揭示內容的範疇。舉例來說,各種操作步驟以及用於實行操作步驟的器件可以相依於特殊應用或是考量和該系統之操作相關聯的任何數量成本函數而以替代方式來施行(舉例來說,該些步驟中的一或更多者可以被刪除、修正、或是與其它步驟結合)。所以,本揭示內容應被視為解釋性而沒有限制意義,並且所有此些修正預期被包含在本揭示內容的範疇裡面。同樣地,上面雖然已經針對各種實施例說明本發明的好處、其它優點、以及問題的解決方式;然而,本發明的好處、優點、問題的解決方式、以及可以讓任何好處、優點、或是解決方式出現或是變得更顯著的任何(多項)元件皆不應被視為關鍵的、必要的、或是基本的特點或元件。如本文中的用法,「包括」及其任何其它變化用詞預期涵蓋沒有排他性的包容意義,因此,包括一元件清單的處理、方法、商品、或是設備不僅包含該些元件,亦可能包含沒有明確列出或是並非此些處理、方法、系統、商品、或是設備固有的其它元件。另外,如本文中的用法,「被耦合至」、「耦合」、及其任何其它變化用詞預期涵蓋實體連接、電氣連接、磁性連接、光學連接、通訊連接、功能性連接、及/或任何其它連接。
除此之外,熟習本技術的人士便會明白,本揭示內容的原理可以反映在一機器可讀取儲存媒體中的電腦程式產品之中,於該儲存媒體中具現機器可讀取程式碼構件。任何有形、非暫時性的機器可讀取儲存媒體皆可被運用,其包含:磁性儲存裝置(硬碟、磁碟、以及類似物);光學儲存裝置(CD-ROM、DVD、藍光碟片、以及類似物);快閃記憶體;及/或類似物。此些電腦程式指令可以被載入於一般用途電腦、特殊用途電腦、或是用以生產機器的其它可程式化資料處理設備,俾使得在該電腦或其它可程式化資料處理設備上執行的該些指令會創造用於施行規定功能的構件。此些電腦程式指令亦可以被儲存在一機器可讀取的記憶體之中,其能夠指示一電腦或是其它可程式化資料處理設備以特殊的方式來運行,俾使得被儲存在該機器可讀取記憶體之中的指令會生產一製造商品,其包含施行規定功能的施行構件。該些電腦程式指令亦可以被載入於一電腦或是其它可程式化資料處理設備中,用以讓一連串的操作步驟在該電腦或是其它可程式化設備中被實施,以便生產一電腦施行處理,俾使得在該電腦或是其它可程式化設備中執行的該些指令提供用於施行規定功能的步驟。
雖然本發明已於各種顯示本揭示內容的原理;不過,仍可以使用針對特定環境與作業需求作過特殊調適的結構、排列、比例、元件、材料、以及器件的修正,其並沒有脫離本揭示內容的原理與範疇。此些與其它改變或修正預期被併入於本揭示內容的範疇裡面。
Claims (22)
- 一種方法,其包括:將被儲存在一儲存裝置的一或更多個儲存位置中的資料和一位址空間的邏輯辨識符產生關聯,其中一邏輯辨識符第一集與儲存在該儲存裝置內之原始檔案資料相關聯;響應於一儲存用戶之存取該資料的一請求而提供一邏輯辨識符工作集,俾使得該邏輯辨識符工作集與該邏輯辨識符第一集和該些相同的儲存位置相關聯;施行關於該檔案之一儲存作業,其中,施行該儲存作業包括:將經修正檔案資料寫入至該儲存裝置;及當保留該邏輯辨識符第一集與儲存在該儲存裝置內之該原始檔案資料之間之該等關聯性時,將該邏輯辨識符工作集之一選定邏輯辨識符與寫入至該儲存裝置之該經修正檔案資料產生關聯;及響應於該儲存用戶關閉該檔案之一請求以合併該邏輯辨識符工作集至該邏輯辨識符第一集,該合併包括將該邏輯辨識符第一集之一指定邏輯辨識符與該經修正檔案資料產生關聯,該經修正檔案資料與該邏輯辨識符工作集之該選定邏輯辨識符相關聯。
- 根據申請專利範圍第1項的方法,其中,該儲存作業包括附加資料至該儲存裝置中的一記錄日誌。
- 根據申請專利範圍第1項的方法,其中,該經修正檔案資料包括一經修正資料段,其被配置成以取代儲存在該儲存裝置內的該原始檔案資料之一原始資料段,該方法進一步包括:藉由參考該邏輯辨識符第一集之該指定邏輯辨識符來提供存取該原始資料段。
- 根據申請專利範圍第1項的方法,其中,施行該儲存作業進一步包括:分派一或更多個額外的邏輯辨識符給一邏輯辨識符第二集;將額外的檔案資料寫入至該儲存裝置;以及將寫入至該儲存裝置之該額外的檔案資料與該邏輯辨識符工作集之該額外的邏輯辨識符產生關聯,俾使得該額外的檔案資料不與該邏輯辨識符第一集中之邏輯辨識符相關聯。
- 根據申請專利範圍第1項的方法,其中,該儲存作業被配置成用以修正一檔案中複數個原始資料段中的其中一者,該方法進一步包括:經由該邏輯辨識符工作集之該選定邏輯辨識符以參考該經修正檔案資料;其中該經修正檔案資料無法經由該邏輯辨識符第一集存取(inaccessible)。
- 根據申請專利範圍第1項的方法,其進一步包括:分派該邏輯辨識符工作集;及在該儲存裝置中保留關於該邏輯辨識符工作集之儲存作業的的儲存容量。
- 根據申請專利範圍第1項的方法,其進一步包括響應於一不同儲存用戶的請求而藉由使用該邏輯辨識符第一集以提供存取該原始檔案資料。
- 根據申請專利範圍第1項的方法,其進一步包括響應於用以開啟一檔案的另一儲存用戶的一請求而分派一邏輯辨識符第三集,其中該邏輯辨識符第一集及該邏輯辨識符第三集係與儲存在該儲存裝置內之該原始檔案資料之該些相同的儲存位置相關聯,且其中,該邏輯辨識符第一集及該邏輯辨識符第三集中之每一者之該些關聯性並未被該儲存作業修正。
- 根據申請專利範圍第1項的方法,其中,儲存在該儲存裝置內之該資料配合持久性元資料(persistent metadata)被儲存,該持久性元資料被配置成用以將該經儲存資料與個別的邏輯辨識符產生關聯,該方法進一步包括:附加持久性元資料至該儲存裝置,其被配置成用以響應於開啟該檔案之該請求以將該原始檔案資料與該邏輯辨識符工作集產生關聯。
- 根據申請專利範圍第1項的方法,其中,該合併進一步包括將該儲存用戶參考該邏輯辨識符第二集中之邏輯辨識符對該檔案所進行的修正併入於該邏輯辨識符第一集之中。
- 根據申請專利範圍第1項的方法,其中提供該邏輯辨識符工作集進一步包括將該邏輯辨識符工作集中之邏輯辨識符連結至該原始檔案資料的個別儲存位址。
- 一種設備,其包括:一儲存控制器,其被配置成以寫入資料至一非揮發性儲存裝置及將一邏輯位置空間之邏輯辨識符連結至對應於儲存在該非揮發性儲存裝置內之該等邏輯辨識符之資料,該儲存控制器將儲存在該儲存裝置內之一檔案之既有資料連結至一邏輯辨識符第一集,其中該儲存控制器經進一步被配置成以:響應於一檔案開啟請求來複製(clone)該檔案,其中複製該檔案包括將儲存在該儲存裝置內之該檔案之該既有資料連結至不同於該邏輯辨識符第一集之一邏輯辨識符第二集,俾使得該邏輯辨識符第一集及該邏輯辨識符第二集被連結至儲存在該儲存裝置內之該檔案之該既有資料的相同的儲存位置;及當執行被配置成參考該邏輯辨識符第二集中之邏輯辨識符以改變該檔案的儲存作業時,保留儲存在該儲存裝置內之該檔案之該既有資料及該檔案之該既有資料與該原始邏輯辨識符第一集之間的連結;該設備進一步包括一儲存介面,其被配置成以在執行該等儲存作業之後,經由該邏輯辨識符第一集以提供存取該檔案之該既有資料;其中該儲存控制器進一步被配置成響應於一檔案關閉請求以將該邏輯辨識符第二集摺疊至該邏輯辨識符第一集,該摺疊包括以該選定邏輯辨識符與連結至該邏輯辨識符第二集之一邏輯辨識符之該檔案之經修正資料之間之一連結來取代該邏輯辨識符第一集之一選定邏輯辨識符與儲存於該儲存裝置內之該檔案之該既有資料之一部份之間之一連結。
- 根據申請專利範圍第12項的設備,其中,該儲存介面進一步被配置成用以響應於關於在該檔案關閉請求之前所接收之該檔案的請求經由邏輯辨識符集來提供存取該檔案之該既有資料。
- 根據申請專利範圍第12項的設備,其中,該儲存介面進一步被配置成用以將和該檔案有關的儲存作業再導向至該邏輯辨識符第二集中之邏輯辨識符。
- 根據申請專利範圍第12項的設備,其中,該些儲存作業被配置成用以從該既有檔案資料中移除一資料段,該儲存控制器將該邏輯辨識符第一集之一特定邏輯辨識符連結至該資料段及將該邏輯辨識符第二集之一特定邏輯辨識符連結至該資料段,且該儲存控制器進一步被配置成以當保留該資料段與該邏輯辨識符第一集之該特定邏輯辨識符之間之該連結時,移除該資料段與該邏輯辨識符第二集之該特定邏輯辨識符之間之該連結。
- 根據申請專利範圍第12項的設備,其中,該些儲存作業包括將該檔案之經修正資料寫入至該儲存裝置,該經修正資料被配置成以取代儲存在該儲存裝置內的該檔案之該既有資料之一部份,且該儲存控制器進一步被配置成以使用該邏輯辨識符第二集中之一或多個邏輯辨識符來參考該檔案之該經修正資料及使用該邏輯辨識符第一集中之一或多個邏輯辨識符來參考儲存在該儲存裝置內的該檔案之該既有資料之該部份。
- 根據申請專利範圍第12項的設備,其中,該摺疊進一步包括將參考該邏輯辨識符第二集中的邏輯辨識符所實施的儲存作業的檔案修正併入於該邏輯辨識符第一集之中。
- 根據申請專利範圍第17項的設備,其進一步複製該檔案,其包括儲存持久性元資料,該持久性元資料被配置成以將該邏輯辨識符第二集連結至儲存於該儲存裝置內之該檔案之該既有資料。
- 根據申請專利範圍第17項的設備,其中:該些檔案修正包括擴大該檔案,其中,擴大該檔案包括:將一額外的邏輯辨識符包括在該邏輯辨識符第二集中;將一資料段寫入至該儲存裝置;及將儲存於該儲存裝置內之該資料段連結至包括在該邏輯辨識符第二集中之該額外的邏輯辨識符;及該摺疊進一步包括:將一額外的邏輯辨識符包括在該邏輯辨識符第一集中;將包括在該邏輯辨識符第一集中之該額外的邏輯辨識符連結至儲存於該儲存裝置內之該資料段。
- 一種系統,其包括:用以經由一第一邏輯位址集以參考儲存於一儲存媒體上之一檔案之資料的一原始版本的構件;用以響應於開啟該檔案的一請求而創造該檔案的一邏輯拷貝的構件,其中,創造該邏輯拷貝包括:分派一第二邏輯位址集以參考該檔案之該資料,該第二邏輯位址集不同於該邏輯位址第一集;其中該第一邏輯位址集及該第二邏輯位址集參考儲存於該儲存媒體上之該檔案之該資料之該原始版本;用以在參考該第二邏輯位址集來修正該檔案的構件包括:用以將一新資料段儲存在該儲存媒體上的構件;及用以當將該原始資料段保持(retaining)在該儲存媒體上時,以對該新資料段的一關聯性來取代該第二邏輯位址集之一指定邏輯位址與儲存於該儲存媒體上之該檔案之一原始資料段之間的一關聯性的構件,該原始資料段與該第一邏輯位址集之一指定邏輯位址相關聯;用以在參考該第二邏輯位址集以修正該檔案之後,經由該第一邏輯位址集以提供存取該檔案之一原始版本的構件;用以響應於關閉該檔案之一請求以合併該第二邏輯位址集至該第一邏輯位址集,該合併包括以對該新資料段的一關聯性來取代該第一邏輯位址集之該指定邏輯位址與該原始資料段之間的該關聯性。
- 根據申請專利範圍第20項的系統,其中該合併進一步包括用以根據一合併政策以更新該第一邏輯位址集來藉由該經修正資料以參考被施行在該第二邏輯位址集裡面的檔案修正。
- 根據申請專利範圍第20項的系統,其中,該合併進一步包括記錄該第一邏輯位址集之該指定邏輯位址與儲存於該儲存媒體上之一持久性註記之該新資料段之間的該關聯性。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361858812P | 2013-07-26 | 2013-07-26 | |
US61/858,812 | 2013-07-26 | ||
US14/303,419 | 2014-06-12 | ||
US14/303,419 US20150032982A1 (en) | 2013-07-26 | 2014-06-12 | Systems and methods for storage consistency |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201516720A TW201516720A (zh) | 2015-05-01 |
TWI659318B true TWI659318B (zh) | 2019-05-11 |
Family
ID=52391499
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103125493A TWI659318B (zh) | 2013-07-26 | 2014-07-25 | 用於儲存一致性之系統、設備及方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20150032982A1 (zh) |
JP (1) | JP6290405B2 (zh) |
KR (1) | KR101718670B1 (zh) |
DE (1) | DE112014003076T5 (zh) |
TW (1) | TWI659318B (zh) |
WO (1) | WO2015013452A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10521417B2 (en) * | 2014-06-24 | 2019-12-31 | Google Llc | Processing mutations for a remote database |
CN107046811A (zh) * | 2015-12-03 | 2017-08-15 | 华为技术有限公司 | 一种源存储设备发送源文件和源文件的克隆文件至备份存储设备的方法、源存储设备以及备份存储设备 |
KR102615151B1 (ko) | 2016-06-23 | 2023-12-18 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 스토리지 시스템 |
TWI610219B (zh) * | 2016-08-09 | 2018-01-01 | 捷鼎國際股份有限公司 | 資料儲存系統 |
CN107704466B (zh) * | 2016-08-09 | 2020-12-11 | 上海川源信息科技有限公司 | 数据储存系统 |
KR20180091296A (ko) * | 2017-02-06 | 2018-08-16 | 삼성전자주식회사 | 손상된 메타 데이터를 처리하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
US11132353B2 (en) * | 2018-04-10 | 2021-09-28 | Intel Corporation | Network component, network switch, central office, base station, data storage, method and apparatus for managing data, computer program, machine readable storage, and machine readable medium |
CN110413444B (zh) * | 2018-04-27 | 2023-05-09 | 伊姆西Ip控股有限责任公司 | 实现存储卷的一致性组的快照集 |
US10832768B2 (en) * | 2018-07-03 | 2020-11-10 | Micron Technology, Inc. | Data storage based on data polarity |
TWI687822B (zh) * | 2018-11-29 | 2020-03-11 | 宏碁股份有限公司 | 日誌文件儲存及讀取的方法及裝置 |
CN110351386B (zh) * | 2019-07-23 | 2022-09-16 | 华云工业互联网有限公司 | 一种不同副本间的增量同步方法及装置 |
US11468017B2 (en) * | 2020-07-24 | 2022-10-11 | Capital Thought Holdings L.L.C. | Data storage system and method |
US11636069B2 (en) * | 2020-07-24 | 2023-04-25 | Capital Thought Holdings L.L.C. | Data storage system and method |
CN113239001A (zh) * | 2021-05-21 | 2021-08-10 | 珠海金山网络游戏科技有限公司 | 一种数据存储方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5680579A (en) * | 1994-11-10 | 1997-10-21 | Kaman Aerospace Corporation | Redundant array of solid state memory devices |
US5682497A (en) * | 1993-09-28 | 1997-10-28 | Intel Corporation | Managing file structures for a flash memory file system in a computer |
US20130073821A1 (en) * | 2011-03-18 | 2013-03-21 | Fusion-Io, Inc. | Logical interface for contextual storage |
US20130166855A1 (en) * | 2011-12-22 | 2013-06-27 | Fusion-Io, Inc. | Systems, methods, and interfaces for vector input/output operations |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05197605A (ja) * | 1991-10-03 | 1993-08-06 | Mitsubishi Electric Corp | ファイルシステム |
US6092155A (en) * | 1997-07-10 | 2000-07-18 | International Business Machines Corporation | Cache coherent network adapter for scalable shared memory processing systems |
US6256637B1 (en) * | 1998-05-05 | 2001-07-03 | Gemstone Systems, Inc. | Transactional virtual machine architecture |
US7039773B2 (en) * | 2003-04-29 | 2006-05-02 | Oracle International Corporation | Method and mechanism for efficient implementation of ordered records |
US7664791B1 (en) * | 2005-10-26 | 2010-02-16 | Netapp, Inc. | Concurrent creation of persistent point-in-time images of multiple independent file systems |
US7651593B2 (en) * | 2005-12-19 | 2010-01-26 | Commvault Systems, Inc. | Systems and methods for performing data replication |
US7870172B1 (en) * | 2005-12-22 | 2011-01-11 | Network Appliance, Inc. | File system having a hybrid file system format |
US7568078B2 (en) * | 2006-07-26 | 2009-07-28 | Cisco Technology, Inc. | Epoch-based MUD logging |
US8706968B2 (en) * | 2007-12-06 | 2014-04-22 | Fusion-Io, Inc. | Apparatus, system, and method for redundant write caching |
US8719501B2 (en) * | 2009-09-08 | 2014-05-06 | Fusion-Io | Apparatus, system, and method for caching data on a solid-state storage device |
US8046550B2 (en) * | 2008-07-14 | 2011-10-25 | Quest Software, Inc. | Systems and methods for performing backup operations of virtual machine files |
US8433865B2 (en) * | 2009-12-11 | 2013-04-30 | Microsoft Corporation | Consistency without ordering dependency |
US8725934B2 (en) * | 2011-12-22 | 2014-05-13 | Fusion-Io, Inc. | Methods and appratuses for atomic storage operations |
US8738570B2 (en) * | 2010-11-22 | 2014-05-27 | Hitachi Data Systems Engineering UK Limited | File cloning and de-cloning in a data storage system |
US8812450B1 (en) * | 2011-04-29 | 2014-08-19 | Netapp, Inc. | Systems and methods for instantaneous cloning |
EP2798486B1 (en) * | 2011-12-29 | 2019-11-06 | VMware, Inc. | N-way synchronization of desktop images |
US9116819B2 (en) * | 2012-10-17 | 2015-08-25 | Datadirect Networks, Inc. | Reducing metadata in a write-anywhere storage system |
GB2509057A (en) * | 2012-12-18 | 2014-06-25 | Ibm | Predictive point-in-time copy for storage systems |
-
2014
- 2014-06-12 US US14/303,419 patent/US20150032982A1/en not_active Abandoned
- 2014-07-23 JP JP2016529870A patent/JP6290405B2/ja active Active
- 2014-07-23 KR KR1020167003843A patent/KR101718670B1/ko active IP Right Grant
- 2014-07-23 DE DE112014003076.7T patent/DE112014003076T5/de not_active Withdrawn
- 2014-07-23 WO PCT/US2014/047895 patent/WO2015013452A1/en active Application Filing
- 2014-07-25 TW TW103125493A patent/TWI659318B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5682497A (en) * | 1993-09-28 | 1997-10-28 | Intel Corporation | Managing file structures for a flash memory file system in a computer |
US5680579A (en) * | 1994-11-10 | 1997-10-21 | Kaman Aerospace Corporation | Redundant array of solid state memory devices |
US20130073821A1 (en) * | 2011-03-18 | 2013-03-21 | Fusion-Io, Inc. | Logical interface for contextual storage |
US20130166855A1 (en) * | 2011-12-22 | 2013-06-27 | Fusion-Io, Inc. | Systems, methods, and interfaces for vector input/output operations |
Also Published As
Publication number | Publication date |
---|---|
WO2015013452A1 (en) | 2015-01-29 |
KR20160031012A (ko) | 2016-03-21 |
US20150032982A1 (en) | 2015-01-29 |
DE112014003076T5 (de) | 2016-03-17 |
TW201516720A (zh) | 2015-05-01 |
KR101718670B1 (ko) | 2017-03-21 |
JP2016528618A (ja) | 2016-09-15 |
JP6290405B2 (ja) | 2018-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI659318B (zh) | 用於儲存一致性之系統、設備及方法 | |
TWI630494B (zh) | 用於原子儲存作業之系統、裝置及方法 | |
US10102075B2 (en) | Systems and methods for storage collision management | |
US10019320B2 (en) | Systems and methods for distributed atomic storage operations | |
JP6556911B2 (ja) | 注釈付きアトミック書き込み操作を行う方法および装置 | |
US9342256B2 (en) | Epoch based storage management for a storage device | |
US10558561B2 (en) | Systems and methods for storage metadata management | |
US10380026B2 (en) | Generalized storage virtualization interface | |
US9519575B2 (en) | Conditional iteration for a non-volatile device | |
US10055420B1 (en) | Method to optimize random IOS of a storage device for multiple versions of backups using incremental metadata | |
US9563555B2 (en) | Systems and methods for storage allocation | |
US10019323B1 (en) | Method and system for container data recovery in a storage system | |
US20150242309A1 (en) | Systems and methods for storage compression | |
US20130166855A1 (en) | Systems, methods, and interfaces for vector input/output operations | |
US20120030408A1 (en) | Apparatus, system, and method for atomic storage operations | |
US9996426B1 (en) | Sparse segment trees for high metadata churn workloads | |
WO2015112634A1 (en) | Systems, methods and interfaces for data virtualization | |
Shinde et al. | Inline block level data de-duplication technique for ext4 file system | |
TW201604687A (zh) | 用於儲存壓縮的系統和方法 |