TW201604687A - 用於儲存壓縮的系統和方法 - Google Patents

用於儲存壓縮的系統和方法 Download PDF

Info

Publication number
TW201604687A
TW201604687A TW104106013A TW104106013A TW201604687A TW 201604687 A TW201604687 A TW 201604687A TW 104106013 A TW104106013 A TW 104106013A TW 104106013 A TW104106013 A TW 104106013A TW 201604687 A TW201604687 A TW 201604687A
Authority
TW
Taiwan
Prior art keywords
storage
page
module
data
lid
Prior art date
Application number
TW104106013A
Other languages
English (en)
Inventor
丹漢南喬伊 達斯
大衛 弗林
托本 馬堤亞森
尼夏 塔拉家拉
Original Assignee
2次智慧智權控股公司
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
Priority claimed from US14/334,502 external-priority patent/US9875180B2/en
Application filed by 2次智慧智權控股公司 filed Critical 2次智慧智權控股公司
Publication of TW201604687A publication Critical patent/TW201604687A/zh

Links

Abstract

一壓縮管理器針對頁生成一大小減小的資料集。由一儲存模組將該大小減小的資料集儲存在一儲存介質上,並且由該儲存模組標識和/或記錄該頁的多個未使用的部分。可以藉由對該頁進行壓縮來生成該大小減小的資料集。可以響應於來自一客戶端的請求來寫入該大小減小的資料集,該請求提供了一標識該頁的(多個)未使用的部分的消息。可以將該頁儲存在一檔案中,並且該未使用的部分可以對應於該檔案內的(多個)空部分。該儲存模組可以保持一將該頁映射至該大小減小的資料集的索引,使得該頁的多個部分係未映射的。該頁所使用的儲存容量可以對應於該頁的經映射的部分,並且排除該頁的(多個)未映射的部分。

Description

用於儲存壓縮的系統和方法
本揭露涉及儲存系統,並且具體涉及用於提供壓縮服務之系統和方法。
計算系統可以被配置成用於向儲存客戶端提供儲存服務。該等儲存服務可以包括區塊儲存服務,其中,儲存模組向該儲存客戶端提供包括多個儲存單元(區塊)的邏輯位址空間。該等區塊可以表示儲存裝置上的物理儲存容量(例如,8千位元組(kb)區塊)。該儲存客戶端可以被配置成用於壓縮資料以用於儲存。該儲存客戶端可以例如對16kb資料區塊進行壓縮以儲存在8kb邏輯區塊內。可以在多個8kb區塊之間拆分不能被壓縮以儲存在單獨的8kb區塊中的資料。然而,這種儲存壓縮的方法會增大儲存客戶端的管理開銷,並降低壓縮效率。
提供了一種方法。所述方法包括:接收將頁的資料寫入至非易失性儲存介質的請求,其中,該頁表示儲存介質上的固定數量的區塊;指示儲存模組將該頁的資料寫入在該儲存介質的比該頁所表示的該固定數量的區塊更少的區塊上;以及向該儲存模組標識該頁所表示的該固定數量的儲存區塊當中的哪些區塊不包含該頁的資料。
提供了一種裝置。所述裝置包括:壓縮管理器,該壓縮管理器接收將頁持久化的請求,其中,該頁被定義為具有固定量的儲存容量;減小模組,該減小模組從該頁導出資料集,其中,該資料集小於該固定量的儲存容量;檔案分配模組,該檔案分配模組發出將該資料集寫入至與該頁相關聯的檔案的請求,並且向檔案系統標識該檔案的空部分。
提供了一種系統。所述系統包括:壓縮代理,該壓縮代理生成頁的經壓縮的資料,其中,該頁的大小被制定為包括非易失性儲存介質上的固定數量的扇區;儲存模組,該儲存模組將該頁的該經壓縮的資料寫入在該非易失性儲存介質的比該固定數量的扇區更少的扇區上;以及元資料管理模組,該元資料管理模組記錄該頁所對應的哪些扇區未在使用中。
提供了一種裝置。所述裝置包括:轉換模組,該轉換模組將邏輯位址空間的邏輯識別符映射至儲存裝置上的儲存單元;儲存模組,該儲存模組將頁的與該邏輯位址空間的邏輯識別符集合相關聯的資料寫入至與該頁相關聯的邏輯識別符子集;以及邏輯位址空間管理模組,該邏輯位址空間管理模組記錄了與該頁相關聯的該等邏輯識別符中的一個或多個邏輯識別符係未映射的。
100‧‧‧計算系統
101‧‧‧處理資源
102‧‧‧易失性記憶體資源
103‧‧‧非易失性儲存器資源
104‧‧‧通信介面
105‧‧‧網路
106‧‧‧客戶端
110‧‧‧資料包
112‧‧‧資料段
113‧‧‧序列資訊
114‧‧‧元資料
120‧‧‧儲存模組
121‧‧‧介面模組
122‧‧‧邏輯位址空間
123‧‧‧轉換模組
124‧‧‧邏輯位址空間(LAS)管理模組
126‧‧‧元資料管理模組
127‧‧‧互連
128‧‧‧容量模組
129‧‧‧儲存控制器
130‧‧‧元資料
132‧‧‧前向映射圖
134‧‧‧表項
135‧‧‧保留表項
136‧‧‧紀錄儲存模組
140‧‧‧儲存介質
141‧‧‧儲存裝置
142‧‧‧保留映射圖
144‧‧‧儲存位址空間
145‧‧‧儲存單元
145A‧‧‧儲存位置
145B‧‧‧儲存單元
150‧‧‧儲存陣列
150A、150B…150N‧‧‧儲存陣列
152A、152B、152C…150Y‧‧‧固態儲存元件
154‧‧‧行
156‧‧‧列
158A、158B…158N‧‧‧獨立儲存庫
160‧‧‧寫入模組
161‧‧‧存請求接收器模組
162‧‧‧寫入處理模組
163‧‧‧讀取模組
164‧‧‧寫入緩衝器
165‧‧‧讀取處理模組
167‧‧‧讀取緩衝器
168‧‧‧儲存庫控制器
170A、170B、170C…170N‧‧‧儲存分區
180‧‧‧附加點
181‧‧‧前進
182‧‧‧儲存位置
183‧‧‧儲存單元
185‧‧‧儲存單元
189‧‧‧儲存位置N
206‧‧‧客戶端
222‧‧‧LID集合
222A、222B、222C…222N‧‧‧LID集合
232‧‧‧頁
232A、232B、232C…232N‧‧‧頁
236‧‧‧原子儲存模組
240‧‧‧資料PB
241‧‧‧資料CPB
242‧‧‧資料PBx
243‧‧‧資料CPBx
247‧‧‧元資料
247A‧‧‧元資料
250‧‧‧壓縮模組
306‧‧‧客戶端
309‧‧‧I/O管理器
321‧‧‧檔案系統介面
322‧‧‧LID
324‧‧‧檔案系統
322A、322B、322C…322N‧‧‧LID
334‧‧‧檔案
334A、334B、334C…334N‧‧‧檔案
335‧‧‧保留表項
340B‧‧‧資料DB
341B‧‧‧資料CDB
345A‧‧‧壓縮元資料
345B‧‧‧壓縮元資料
350‧‧‧壓縮管理器
352‧‧‧檔案分配模組
354‧‧‧減小模組
355‧‧‧壓縮模組
400‧‧‧計算系統
406‧‧‧客戶端
410A、410B‧‧‧資料包
415A、415B‧‧‧壓縮元資料
450‧‧‧儲存壓縮模組
451‧‧‧區塊管理模組
452‧‧‧VBAS
453‧‧‧虛擬區塊
453A、453B、453C…453N‧‧‧虛擬區塊
454‧‧‧減小模組
455‧‧‧壓縮代理
456‧‧‧壓縮引擎
500‧‧‧壓縮引擎
510、520、530‧‧‧步驟
600‧‧‧方法
610、620、630‧‧‧步驟
700‧‧‧方法
710、720、730‧‧‧步驟
圖1A係包括儲存模組以管理儲存壓縮操作的計算系統的一個實施例的框圖;圖1B描繪了儲存元資料之實施例;圖1C描繪了儲存陣列之實施例; 圖1D係展示了儲存模組的進一步實施例之框圖;圖1E描繪了資料包之實施例;圖1F描繪了儲存紀錄和儲存元資料之實施例;圖2A係描繪了包括儲存模組以管理儲存壓縮操作的計算系統的進一步實施例之框圖;圖2B描繪了頁寫入操作之實施例;圖2C描繪了管理儲存壓縮的操作之實施例;圖2D描繪了管理儲存壓縮的操作之進一步實施例;圖3A係描繪了包括儲存模組以管理儲存壓縮操作的計算系統的進一步實施例之框圖;圖3B描繪了管理儲存壓縮的操作的進一步實施例;圖3C描繪了管理儲存壓縮的操作的進一步實施例;圖3D描繪了管理儲存壓縮的操作的進一步實施例;圖4A係描繪了包括儲存模組以管理儲存壓縮操作的計算系統的進一步實施例之框圖;圖4B描繪了虛擬區塊位址空間之實施例;圖4C描繪了虛擬區塊位址空間之進一步實施例;圖4D描繪了管理儲存壓縮的操作之實施例;圖5係用於管理儲存壓縮操作的方法的一個實施例之流程圖;圖6係用於管理儲存壓縮操作的方法的另一實施例之流程圖;以及圖7係用於管理儲存壓縮操作的方法的另一實施例之流程圖。
在此揭露了用於管理儲存壓縮操作的系統、方法和裝置的實施例。如在此所使用的,“壓縮”指減小資料的大小(例如,從輸入資料集生成更小的輸出資料集)。壓縮可以包括但不限於:資料壓縮、源編碼、無損資料壓縮、失真資料壓縮、加密、解密、資料去重複、資料複製、資料差分處理等。所揭露的實施例可以對頁所對應的資料進行壓縮。如在此所使用的,“頁”指表示、對應於、和/或表明一定量資料的邏輯構造。在某些實施例中,頁包括和/或對應於多個更小的資料單元(區塊)。如在此所使用的,區塊對應於、和/或表明一定量資料。區塊可以包括但不限於:儲存單元、物理儲存單元、介質儲存單元、邏輯儲存單元(例如,識別符、邏輯識別符、邏輯位址等等)、資料包、資料段、扇區等等。在某些實施例中,區塊被定義為具有固定大小,該固定大小可以對應於在儲存層和/或模組(例如,儲存模組所實現的讀取/寫入操作的最小大小)內管理儲存操作所按照的精細度。可替代地,在某些實施例中,區塊具有可變的大小並且可以被稱為物件、二進位大物件(blob)、範圍、資料集等等。如在此所使用的,術語“區塊”、“儲存區塊”、“扇區”、“資料段”、“資料包”、和“儲存單元”用於指組成頁的儲存單元(例如,可互換地用於指頁的“區塊”)。在一個實施例中,一頁表示16kb的資料,這可以對應於32個512位元組的區塊。另一頁可以表示32kb的資料,這可以對應於64個512位元組的區塊。客戶端、應用、作業系統、和/或使用者可以使用頁來儲存資料、元資料、和/或資料與元資料的組合。
如在此所揭露的,用於管理儲存壓縮的方法包括:接收將頁的資料寫入至非易失性儲存介質的請求,其中,該頁表示儲存介質上的固 定數量的區塊,指示儲存模組將該頁的資料寫入在該儲存介質的比該頁所表示的該固定數量的區塊更少的區塊上,以及向該儲存模組標識該頁所表示的該固定數量的儲存區塊當中的哪些區塊不包含該頁的資料。
所揭露的方法可以進一步包括:壓縮該頁的資料,這樣使得指示該儲存模組來寫入該頁的該資料包括:指示該儲存模組來寫入該頁的經壓縮的資料。客戶端可以將該頁指定為經壓縮的頁。該頁可以對應於檔案,並且指示該儲存模組來寫入該頁的該資料可以包括:發出將該頁的該資料寫入至該檔案的請求。在某些實施例中,向該儲存模組標識該頁所表示的該固定數量的儲存區塊中的哪些區塊不包含該頁的資料包括:標識該檔案的空部分和/或向該儲存模組提供標識不包含該頁的資料的區塊的解除配置消息。
如在此所揭露的,用於管理儲存壓縮的裝置包括:壓縮管理器,該壓縮管理器接收將頁持久化的請求,其中,該頁被定義具有固定量的儲存容量,減小模組,該減小模組從該頁導出資料集,其中,該資料集小於該固定量的儲存容量,以及檔案分配模組,該檔案分配模組發出將該資料集寫入至與該頁相關聯的檔案的請求,並且向檔案系統標識該檔案的空部分。該檔案分配模組可以指定該檔案的該空部分的偏移和長度和/或標識該檔案的未使用的邏輯區塊位址。在某些實施例中,該減小模組藉由壓縮該頁的資料導出該資料集。
在此揭露了一系統的實施例,該系統包括:壓縮代理,該壓縮代理生成頁的經壓縮的資料,其中,該頁的大小被制定為包括非易失性儲存介質上的固定數量的扇區,儲存模組,該儲存模組將該頁的該經壓縮 的資料儲存在該非易失性儲存介質的比該固定數量的扇區更少的扇區上,以及元資料管理模組,該元資料管理模組記錄該頁所對應的哪些扇區未在使用中。該頁可以與邏輯位址空間的多個識別符相關聯。可以將該等識別符中的一個或多個識別符指派給該非易失性儲存介質上所儲存的該頁的經壓縮的資料,並且該等識別符中的一個或多個識別符可以是未指派的(例如,未映射至該非易失性儲存介質上的資料)。
該頁可以包括邏輯位址集合,並且該裝置可以進一步包括邏輯位址空間管理模組,該邏輯位址空間管理模組保持將該邏輯位址集合的第一子集映射至該儲存介質上的儲存位址的索引,這樣使得第二子邏輯位址集合係未映射的。該系統可以包括容量模組,該容量模組基於該索引的映射確定該頁所使用的物理儲存容量。
在某些實施例中,該元資料管理模組藉由從該索引移除一個或多個與該頁的該邏輯位址集合有關的一種或多種映射來記錄該頁的哪些扇區未在使用中。該元資料管理模組可以指示該儲存模組將持久化元資料寫入在該非易失性儲存介質上。該持久化元資料可以被配置成用於標識該頁的未在使用中的扇區。
用於管理儲存壓縮的裝置的進一步實施例可以包括:轉換模組,該轉換模組將邏輯位址空間的邏輯識別符映射至儲存裝置上的儲存單元,儲存模組,該儲存模組將頁的與該邏輯位址空間的邏輯識別符集合相關聯的資料寫入至與該頁相關聯的邏輯識別符子集,以及邏輯位址空間管理模組,該邏輯位址空間管理模組記錄了與該頁相關聯的該等邏輯識別符中的一個或多個邏輯識別符係未映射的。該頁的該資料可以包括經壓縮的 資料,並且該裝置可以進一步包括生成該頁的經壓縮的資料的壓縮代理。該轉換模組可以將該邏輯識別符子集指派給儲存該頁的該資料的對應儲存單元。在某些實施例中,所揭露的裝置包括容量模組,該容量模組基於該邏輯識別符子集和該等對應儲存單元之間的該等指派確定該儲存裝置上的該頁所消耗的儲存容量。該邏輯位址管理模組可以移除與該頁相關聯的特定邏輯識別符和該儲存裝置上的儲存單元之間的映射,並且將表明該特定邏輯識別符係未映射的持久化元資料寫入在該儲存裝置上。
圖1A係包括儲存模組120的計算系統100的一個實施例的框圖,該儲存模組向一個或多個客戶端106提供儲存服務。計算系統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)、網際網路等等。
儲存模組120可以包括介面模組121、邏輯位址空間(LAS)管理模組124、元資料管理模組126、和容量模組128。可以用軟體、硬體、和/或其組合來實現儲存模組120(和/或其模組)。在某些實施例中,將儲存模組120的各部分體現為可執行指令,如電腦程式代碼,可以將該等可執行指令儲存在持久化、非瞬態儲存介質(如非易失性儲存器資源103)上。該等指令和/或電腦程式代碼可以被配置成用於由處理資源101來執行。可替代地,或另外,可以將儲存模組120的各部分體現為機器組件,如通用和/或專用組件、可程式硬體、FPGA、ASIC、硬體控制器、儲存控制器等等。
儲存模組120向客戶端106提供I/O服務。客戶端106可以包括但不限於作業系統(包括裸金屬作業系統、客戶作業系統、虛擬機器、虛擬化環境等等)、檔案系統、資料庫系統、遠程客戶端(例如,通信地通過網路105耦合至計算系統100和/或儲存模組120的客戶端)、應用等等。
儲存模組120可以被配置成用於使用儲存介質140為I/O請求服務。儲存介質140可以包括任何能夠持久地儲存資料的儲存介質。如在此所使用的,“持久化”資料儲存指將資料儲存在持久化非易失性儲存介質上。儲存介質140可以包括非易失性儲存介質,如一個或多個固態儲存裝置或驅動(SSD)中的固態儲存介質、硬碟驅動(例如,集成驅動電子裝置(IDE)驅動、小型電腦系統介面(SCSI)驅動、序列式SCSI(SAS)驅動、串列AT附件(SATA)驅動等等)、磁帶驅動、可寫入光碟機(例如,CD光碟機、DVD光碟機、藍光光碟機等等)等等。
在某些實施例中,儲存介質140包括非易失性固態儲存器,非易失性固態記憶體可以包括但不限於NAND快閃記憶體、NOR快閃記憶 體、奈米RAM(NRAM)、磁阻式RAM(MRAM)、相變RAM(PRAM)、賽道記憶體、憶阻器記憶體(Memristor memory)、基於奈米晶體線的記憶體、基於二氧化矽的亞10奈米進程記憶體、石墨烯記憶體、矽-氧化物-氮化物-氧化物-矽(SONOS)、電阻式隨機存取記憶體(PRAM)、可程式金屬化單元(PMC)、導電橋接RAM(CBRAM)等等。儘管在此揭露了儲存介質140的特定實施例,但本揭露的教導可以應用於任何適當形式的記憶體,包括非易失性和易失性兩種形式。相應地,雖然在非易失性固態儲存裝置140的上下文中揭露了儲存模組120的特定實施例,但儲存模組120可以與其他儲存裝置和/或儲存介質一起使用。
在某些實施例中,儲存介質140包括易失性記憶體,易失性儲存器包括但不限於RAM、動態RAM(DRAM)、靜態RAM(SRAM)、同步動態RAM(SDRAM)等等。儲存介質140可以對應於處理資源101的記憶體,如CPU快取記憶體(例如,L1、L2、L3快取記憶體等等)、圖形記憶體等等。在某些實施例中,藉由使用互連127將儲存介質140通信地耦合至儲存模組120。互連127可以包括但不限於週邊組件互連(PCI)、快速PCI(PCI-e)、串列先進技術附件(串列ATA或SATA)、並行ATA(PATA)、小型電腦系統介面(SCSI)、IEEE 1394(火線)、光纖通道、通用序列匯流排(USB)等等。可替代地,儲存介質140可以是遠程存放設備,該遠程存放設備通過網路105(和/或其他通信介面,如儲存區域網路(SAN)、虛擬儲存區域網路(VSAN)等等)通信地耦合至儲存模組120。因此,互連127可以包括遠程匯流排如PCE-e匯流排、網路連接(例如,無限寬頻技術)、儲存網路、光纖波道協定(FCP)網路、超SCSI等等。
儲存模組120可以被配置成用於藉由使用尤其儲存控制器129來管理對儲存介質140的儲存操作。儲存模組120可以包括軟體和/或硬體組件,該等組件包括但不限於一個或多個驅動器和/或其他運行於計算系統100上的軟體模組,如作業系統組件、儲存層、儲存裝置、檔案系統、驅動器、儲存驅動器、儲存棧、I/O棧、I/O驅動器、過濾器驅動器、客戶級應用、內核級應用、儲存服務、資料庫、應用等等。因此,儲存模組120可以包括和/或被體現為電腦程式產品,該電腦程式產品包括非瞬態儲存介質上所儲存的電腦可讀取指令和/或模組。可替代地,或另外,儲存模組120可以包括硬體組件,如硬體控制器、嵌入式控制器、嵌入式系統、固件控制器、可程式邏輯元件、儲存控制器、通信介面等等。相應地,在某些實施例中,儲存模組120包括特定機器組件和/或與其捆綁。可以將儲存介質140實施在儲存裝置141上。可以將儲存模組120和/或儲存控制器129的各部分實現為儲存裝置141的硬體和/或軟體組件(例如,固件),包括但不限於:儲存裝置141的控制器、儲存裝置141的固件、儲存裝置141的驅動器、板上控制器(on-card controller)等等。
在某些實施例中,儲存控制器129在儲存介質140的特定儲存位置或“儲存單元”145上實現儲存操作。如在此所使用的,“儲存單元145”指一定量資料儲存,並且這樣指區塊和/或扇區的實施例。圖1A的儲存單元145包括儲存介質140上的能夠持久地儲存資料的可定址的儲存位置。儲存單元145可以包括但不限於儲存區塊、扇區、頁、頁組(例如,邏輯頁和/或邏輯頁內的偏移)、儲存分區(例如,物理擦除區塊、邏輯擦除區塊等等)、磁碟上的位置(例如,磁柱、扇區、標頭位址)、電池支持的 記憶體位置等等。儲存單元145在儲存介質140的儲存位址空間144內可以是可定址的。儲存位址可以對應於物理位址、介質位址、後端位址、位址偏移等等。儲存位址可以對應於任何合適的儲存位址空間144、儲存定址方案、和/或儲存單元145的排列。
儲存模組120可以包括介面121,客戶端106可以通過該介面存取儲存模組120所提供的儲存服務。儲存介面121可以包括以下各項中的一項或多項:區塊設備介面、虛擬化儲存介面、一個或多個虛擬儲存單元(VSU)、物件儲存介面、資料庫儲存介面、和/或其他合適介面和/或應用程式設計介面(API)。
儲存模組120可以規定通過前端儲存介面引用儲存資源。如在此所使用的,“前端儲存介面”指介面和/或命名空間,客戶端106可以通過該介面和/或命名空間引用儲存模組120的儲存資源。儲存介面可以對應於邏輯位址空間122。邏輯位址空間122可以包括識別符組(group)、集合(set)、容器(collection)、範圍(range)、和/或廣度(extent)。如在此所使用的,“識別符”或“邏輯識別符”(LID)指用於引用源資源的識別符;LID可以包括但不限於命名(例如,檔案名、可分辨的命名等等)、資料識別符、引用、連結、前端識別符、邏輯位址、邏輯區塊位址(LBA)、邏輯單元號(LUN)位址、虛擬單元號(VUN)位址、虛擬儲存位址、儲存位址、物理位址、介質位址、後端位址等等。因此,邏輯位址空間122的LID可以表示和/或對應於區塊(儲存單元145),如在此所使用的。
邏輯位址空間122的邏輯容量可以對應於邏輯位址空間122中的LID數量和/或LID所引用的儲存資源的大小和/或精細度。在某些實施 例中,邏輯位址空間122可以是“精簡配置的(thinly provisioned)”。如在此所使用的,精簡配置的邏輯位址空間122指具有超過基礎儲存資源的物理儲存容量(例如,超過儲存介質140的儲存容量)的邏輯容量的邏輯位址空間122。在一個實施例中,儲存模組120被配置成用於提供64位元的邏輯位址空間122(例如,包括2^26個唯一LID的邏輯位址空間),該邏輯位址空間可以超過儲存介質140的物理儲存容量。較大的、精簡配置的邏輯位址空間122可以允許客戶端166高效地分配和/或引用連續的LID範圍,同時減少命名衝突的可能。
LAS管理模組124可以被配置成用於管理邏輯位址空間122,這可以包括但不限於:管理邏輯位址空間122內的LID的分配、在邏輯位址空間122和儲存位址空間144之間轉換(例如,藉由使用轉換模組123和/或前向映射圖132將LID映射至儲存裝置141上的儲存單元145)、管理LID解除配置等等。LAS管理模組124可以包括轉換模組123以將邏輯位址空間122的LID轉換成儲存裝置141上的儲存單元145,這樣使得邏輯位址空間122獨立於儲存位址空間144(例如,在LID和儲存單元145之間可能不存在設定的或預先確定的映射,這樣使得每個LID能夠被映射至儲存位址空間144內的任何儲存單元145)。LAS管理模組124可以定義精簡配置的和/或過分配置的邏輯位址空間122,這樣使得邏輯位址空間122所表示的儲存容量不同於儲存裝置141的物理儲存容量(例如,邏輯位址空間122可以大於儲存位址空間144)。
儲存模組120可以被配置成用於保持元資料130,元資料可以包括但不限於包括LID和儲存單元145之間的關聯性的前向映射圖132、 關於儲存介質140的各儲存分區(例如,擦除區塊、邏輯擦除區塊等等)的內容的反向映射圖、有效性點陣圖、可靠性測試和/或關於儲存介質140的狀態元資料(例如,錯誤率、引退狀態、磨損程度、磨損率等等)等等。可以將儲存元資料130的各部分保持在計算系統100的易失性記憶體資源102內。元資料管理模組126可以被配置成用於將元資料130的各部分(例如,前向映射圖132的各部分)儲存在持久化儲存器(如計算系統100的儲存裝置141和/或非易失性儲存資源103)上。
客戶端106可以通過邏輯位址空間122引用儲存資源(通過邏輯位址空間122的LID引用資料)。相應地,邏輯位址空間122可以對應於前端邏輯介面,客戶端106通過該前端邏輯介面存取儲存模組120的儲存服務。儲存模組120可以向客戶端106呈現和/或提供通過尤其儲存介面121對邏輯位址空間122的存取。LAS管理模組124保持邏輯位址空間122和儲存位址空間144之間的映射。可以將該等映射保持在元資料130(如前向映射圖132)中。
圖1B描繪了邏輯位址空間122和儲存位址空間144之間的任意到任意的(any-to-any)映射的一個實施例。可以將該等任意到任意的映射保持在儲存元資料130的一個或多個資料結構(如前向映射圖132)中。如圖1B中所展示的,LAS管理模組124可以將任意LID指派給任意儲存單元145。如進一步所展示的,可以將邏輯位址空間122的大小制定為不同於基礎儲存位址空間144。在圖1B實施例中,邏輯位址空間122可以是精簡配置的,並且這樣可以包括比儲存位址空間144中可獲得的儲存位址和/或儲存單元145的範圍更大的LID範圍。
前向映射圖132可以包括任何合適的資料結構,包括但不限於索引、映射、雜湊映射、雜湊表、樹、範圍編碼樹、b樹等等。前向映射圖132可以包括對應於目前正用於引用儲存介質140上所儲存的資料的LID的表項134。前向映射圖132的表項134可以(藉由儲存位址空間144內的對應儲存位址)將LID指派給對應儲存單元145。前向映射圖132可能是稀疏填充的,並且這樣可以省略目前不由客戶端106分配和/或目前未被用於引用儲存介質140上的資料的LID所對應的表項。在某些實施例中,前向映射圖132包括範圍編碼的資料結構,這樣使得表項134中的一個或多個表項表示多個LID(例如,LID範圍、廣度、和/或集合)。在圖1B實施例中,前向映射圖132包括對應於被映射至相應的儲存單元145範圍(儲存位址16987-16988)的LID範圍(34-35)的表項134。在圖1B實施例中,由樹資料結構中的LID對前向映射圖132的表項134進行標引。然而,本揭露在此方面不受限制並且可以適用於使用任何合適的資料結構和/或映射機制。
如上文所揭露的,前向映射圖132可以能夠將邏輯位址空間122的任何LID映射至儲存位址空間144內的任何儲存單元145。因此,每個LID可以表示特定量的儲存容量(如上文所揭露的“區塊”或“扇區”)。LID所表示的儲存容量的量可以對應於LID所引用的儲存單元(多個)145的大小。相應地,儲存單元(多個)145的大小可以確定對儲存裝置141所執行的儲存操作的精細度(例如,邏輯位址空間122的LID所表示的儲存區塊的大小)。在某些實施例中,儲存單元(多個)145對應於512位元組的儲存位置,並且這樣每個LID表示儲存裝置141上的512位元組的儲存容量。因此,儲存模組120可以具有512位元組的區塊和/或扇區大小。 然而,本揭露在此方面不受限制並且可以適用於使用具有任何大小的儲存單元145,這樣使得LID表示任何合適的儲存容量。在另一實施例中,例如,儲存單元145可以對應於2kb區塊,並且因此LID可以表示2kb儲存容量的區塊。在一個實施例中,儲存模組120實現大小可變的區塊(例如,具有不同大小和/或容量的儲存單元145),這樣使得邏輯位址空間122內的不同LID表示和/或對應於不同量的儲存容量(例如,不同的區塊大小)。
LAS管理模組124可以定義精簡配置的邏輯位址空間122,這樣使得邏輯位址空間122內的LID所表示的邏輯容量超過非易失性儲存介質140的儲存容量。在一個實施例中,例如,邏輯位址空間122可以包括2^64個LID,該等LID被配置成用於引用儲存介質140上的512位元組的儲存單元145。在此示例性實施例中,邏輯位址空間122對應於2^63kb的儲存容量(2^64個區塊,每個區塊表示512位元組的儲存容量)。儲存裝置141上的可用物理儲存容量可以不同於邏輯位址空間122所表示的儲存容量;儲存介質140可以例如僅具有2^32個可用的儲存單元145。
LAS管理模組124可以藉由尤其管理物理儲存資源消耗來管理精簡配置的邏輯位址空間122,這樣使得僅目前正在用於引用儲存裝置141上所儲存的有效資料的LID消耗儲存裝置141的物理儲存資源。如圖1B中所展示的,前向映射圖132可能是稀疏填充的,並且這樣可以省略對應於目前未用於引用儲存介質140上所儲存的資料的LID的表項134。相應地,前向映射圖132儲存器在的LID對應於儲存介質140上所儲存的資料,並且前向映射圖132中不存在的LID目前未用於引用儲存介質140上所儲存的資料。如在此所使用的,如果前向映射圖132包括將LID與儲存介質140 上所儲存的資料綁定、指派、捆綁和/或相關聯的表項134,LID“存在於”前向映射圖132中。在圖1B實施例中,LID 34、35、32495、42998、以及642439存在於前向映射圖132中,因為該等LID與對應表項134中的儲存單元145綁定。邏輯位址空間122內的其他LID不存在。
儲存模組120包括尤其追蹤物理儲存資源使用的容量模組128。如上文所揭露的,LAS管理模組124可以被配置成用於管理稀疏的、精簡配置的邏輯位址空間122,這樣使得物理儲存資源僅由目前正用於引用儲存裝置141上的有效資料的LID所消耗。容量模組128可以藉由使用尤其前向映射圖132確定目前正在使用中(已經被消耗的)的物理儲存容量。在圖1B實施例中,容量模組128可以確定五個LID與對應儲存單元145綁定,並且這樣邏輯位址空間122目前正在消耗五個儲存容量區塊(例如,2.5kb)的等效物。剩餘的物理儲存容量可以是儲存裝置141的總物理儲存容量,較少地,2.5kb。
在某些實施例中,LAS管理模組124進一步被配置成用於管理邏輯資源(例如,LID)的分配。可以保留LID以便由特定客戶端106、特定資料結構(例如,檔案)等等所使用。如在此所使用的,“保留的(reserved)”LID指已經被指定由特定實體所使用的LID。所保留的LID可以或可以不對應於儲存裝置141上所儲存的資料。客戶端106可以例如保留一系列LID(例如,LID 0-33),但可以不立即將資料儲存至LID。LAS管理模組124可以被配置成用於藉由使用元資料130(如前向映射圖132)來追蹤LID保留。在圖1B實施例中,前向映射圖132包括保留表項135,該保留表項被配置成用於表明已經保留了LID 0-33(LID 0,長度34)。圖1B 的保留表項135可以不將所保留的LID與儲存介質140(例如,儲存單元145)上的資料綁定,並且這樣可以不消耗儲存介質140上的物理儲存資源,直到資料被寫入至所保留的LID。在某些實施例中,客戶端106可以將資料寫入至保留的LID集合的子集。例如,客戶端可以在不將資料寫入至LID 0-7、9-23、和/或25-33的情況下將資料寫入至LID 8和24。作為響應,LAS管理模組124可以創建一個或多個表項134以將LID 8和24與對應儲存單元145綁定,然而所保留的其他LID保持未綁定。相應地,元資料130可以表明所保留的LID 0-33集合僅消耗物理儲存容量的兩個儲存單元145的等效物,與物理儲存容量的全部34個儲存單元的等效物形成對照。雖然圖1B描繪了前向映射圖132中的保留表項135,本揭露在此方面不受限制,並且可以適用於將LID保留資訊保持在單獨的資料結構(如專用LID保留映射圖、空閒LID映射圖等等)中。在2013年11月5日授予給大衛.弗林(David Flynn)等人的標題為“用於分配儲存的裝置、系統、和方法(Apparatus,System,and Method for Allocating Storage)”的美國專利號8,578,127中揭露了用於管理儲存資源保留和/或分配的系統和方法的進一步實施例,該專利藉由引用以其全文結合在此。
參照圖1C,在某些實施例中,儲存介質140可以包括固態儲存陣列150,該固態儲存陣列包括多個固態儲存元件152A-Y。如在此所使用的,固態儲存陣列(或儲存陣列)150指兩個或更多個獨立列156的集合。列156可以包括一個或多個固態儲存元件152A-Y,使用尤其互連127將該一個或多個固態儲存元件通信地並行耦合。如在此所使用的,固態儲存元件152A-Y包括但不限於被體現為包、晶片、管芯、平面、印刷電路板 等等的固態儲存資源。
儲存陣列150的行154可以包括對應列156(固態儲存元件152A-Y)的物理儲存單元。包括陣列150的固態儲存元件152A-Y可以能夠進行獨立操作。相應地,固態儲存元件152A中的第一個固態儲存元件可以能夠執行第一儲存操作,同時第二固態儲存元件152B執行不同的儲存操作。例如,固態儲存元件152A可以被配置成用於讀取第一物理位址處的資料,同時另一固態儲存元件152B讀取不同物理位址處的資料。
固態儲存陣列150還可以被稱為邏輯儲存元件(LSE)。如在此進一步詳細揭露的,固態儲存陣列150可以包括邏輯儲存單元(行154)。如在此所使用的,“邏輯儲存單元”或行154指兩個或更多個物理儲存單元的組合,每個物理儲存單元處於陣列150的對應列156上。邏輯擦除區塊指兩個或更多個物理擦除區塊的集合,邏輯頁指兩個或更多個頁(和/或固態儲存元件152的其他儲存單元)的集合等等。在某些實施例中,邏輯擦除區塊可以包括對應邏輯儲存元件150內的擦除區塊和/或儲存庫(bank)。可替代地,邏輯擦除區塊可以包括多個不同陣列150內的擦除區塊和/或可以跨固態儲存元件的多個儲存庫。邏輯儲存單元或列154可以包括多個儲存單元145(區塊)。因此,儲存單元145的位址可以包括邏輯儲存單元或行154的位址以及邏輯儲存單元或行154內的偏移。
參照圖1D,儲存模組120可以進一步包括紀錄儲存模組136,該紀錄儲存模組被配置成用於將資料以紀錄結構化儲存配置(例如,在儲存紀錄內)儲存在儲存介質140上。如在此所使用的,“儲存紀錄”或“紀錄結構”指儲存介質140的儲存位址空間144內的有序資料排列。儲 存紀錄中的資料包括持久化元資料和/或與其相關聯。因此,儲存介質140上的儲存紀錄可以包括以上下文的、自描述格式儲存的資料。在某些實施例中,持久化元資料可以被配置成用於標識資料,並且這樣可以包括和/或引用資料的邏輯介面(例如,可以包括與資料相關聯的LID(多個))。持久化元資料可以包括其他資訊,包括但不限於:與資料擁有者有關的資訊、存取控制、資料類型、資料的相對位置或偏移、與同資料相關聯的儲存操作(多個)(例如,原子儲存操作、事務等等)有關的資訊、紀錄序列資訊、資料儲存參數(例如,壓縮演算法、加密等等)等等。
圖1E展示了上下文的資料格式的一實施例。圖1E中所描繪的資料包110包括資料段112和持久化元資料114。資料段112可以具有任何的任意長度和/或大小。包格式110的資料段112的大小可以確定尤其儲存模組120所執行的儲存操作的精細度(例如,用於單獨的讀取和/或寫入操作的區塊大小)。因此,資料段112的大小可以確定儲存介質140上的儲存單元145的大小(例如,確定邏輯位址空間122的區塊大小)。如在此所揭露的,可以將資料段大小112設置為512個位元組,並且這樣邏輯位址空間122的LID可以表示512個位元組的儲存區塊。然而,本揭露在此方面不受限制,並且可以適用於實現資料包110,該等資料包包括任何合適的資料段大小、對應於任何區塊大小、包括尤其可變的資料段大小、導致可變和/或可配置的區塊大小。
可以將持久化元資料114體現為資料包110的一個或多個標頭欄位。如上文所揭露的,持久化元資料114可以包括資料段112的邏輯介面,並且這樣可以包括與資料段112相關聯的LID(多個)。儘管圖1E描繪 了包格式110,本揭露在此方面不受限制,並且可以用其他方式使資料(例如,資料段112)與上下文的元資料相關聯,該等方式包括但不限於儲存介質140上的索引、儲存分區索引等等。資料包110可以與持久化序列資訊113相關聯。持久化序列資訊113可以用於確定儲存紀錄內的資料包110的相對順序。在某些實施例中,資料包順序地附加在儲存介質140的儲存分區內。該等儲存分區可以對應於擦除區塊、邏輯擦除區塊等等。每個儲存分區可以能夠儲存大量的資料包110。儲存分區內的資料包110的相對位置可以確定儲存紀錄內的包110的順序。可以尤其藉由儲存分區序列資訊113來確定儲存分區的順序。在對儲存分區進行初始化以供使用(例如,擦除)、程式設計、關閉等時可以為儲存分區指派對應序列資訊113。儲存分區序列資訊113可以確定儲存位址空間144內的有序的儲存分區序列。相應地,可以藉由以下各項來確定儲存紀錄內的資料包110的相對順序:a)特定儲存分區內的資料包110的相對位置和b)該儲存分區相對於儲存位址空間144內的其他儲存分區的順序。
返回參照圖1D,在某些實施例中,儲存介質140包括多個獨立儲存庫158A-N,每一個儲存庫可以包括一個或多個儲存陣列150A-N。每個獨立儲存庫158A-N可以經由互連127耦合至儲存控制器129。
儲存控制器129可以包括儲存請求接收器模組161,該儲存請求接收器模組被配置成用於經由互連127從儲存模組120接收儲存請求。儲存請求接收器模組161可以進一步被配置成用於將資料轉移至/自儲存模組120和/或客戶端106。相應地,儲存請求接收器模組161可以包括一個或多個直接記憶體存取(DMA)模組、遠程DMA模組、匯流排控制器、橋接 器、緩衝器等等。
儲存控制器129可以包括寫入模組160,該寫入模組被配置成用於響應於通過請求模組161接收到的請求將資料儲存在儲存介質140上。該等儲存請求可以包括和/或引用與該等請求有關的資料的邏輯介面。寫入模組160可以被配置成用於將資料儲存在自描述式儲存紀錄中,這如上文所揭露的可以包括將資料包110順序地附加在儲存介質140的儲存位址空間144內。資料包110可以包括和/或引用資料的邏輯介面(例如,可以包括與資料相關聯的LID(多個))。寫入模組160可以包括被配置成用於處理資料以供儲存的寫入處理模組162。處理資料以供儲存可以包括以下各項中的一項或多項:a)壓縮處理,b)加密處理,c)將資料封裝至對應資料包110(和/或其他容器(container))中,d)執行糾錯碼(ECC)處理等等。寫入緩衝器164可以被配置成用於緩衝資料以供儲存在儲存介質140上。在某些實施例中,寫入緩衝器164可以包括一個或多個同步緩衝器,該一個或多個同步緩衝器被配置成用於將儲存控制器129的時脈域與儲存介質140(和/或互連127)的時脈域同步。
紀錄儲存模組126可以被配置成用於選擇用於資料儲存操作的儲存位置(多個)並且可以向獨立儲存庫158A-N的儲存陣列150A-N提供定址和/或控制資訊。如在此所揭露的,紀錄儲存模組126可以被配置成用於順序地以紀錄格式將資料附加在儲存介質140的儲存位址空間144內。紀錄儲存模組126可以進一步被配置成用於將資料儲存成上下文的格式和/或配置有定義資料的邏輯介面(例如,標識指派給資料的LID)的持久化元資料。
將資料寫入至儲存介質140的儲存操作可以包括:a)將一個或多個資料包110附加至儲存介質140上的儲存紀錄,和b)更新元資料130以將資料的LID(多個)與該一個或多個資料包的儲存位址相關聯(例如,在前向映射圖132中)。在某些實施例中,可以將元資料130保持在儲存控制器129的記憶體資源上(例如,保持在包括儲存介質140的儲存裝置141的專用易失性記憶體資源上)。可替代地,或另外,可以將元資料130的各部分保持在儲存模組120內(例如,保持在計算系統100的易失性記憶體資源102上)。在某些實施例中,元資料130可以被儲存模組120保持在易失性記憶體中,並且可以週期性地儲存在儲存介質140上。
儲存控制器129可以進一步包括資料讀取模組163,該資料讀取模組被配置成用於響應於經由儲存請求接收器模組161接收到的請求從儲存介質140上的儲存紀錄讀取資料。該等請求可以包括所請求的資料的LID(多個)、所請求的資料的儲存位址等等。讀取模組163可以被配置成用於:a)藉由使用尤其前向映射圖132確定包括所請求的資料的資料包(多個)110的儲存位址(多個),b)從儲存介質140上的所確定的儲存位址(多個)讀取資料包(多個)110,以及c)處理資料以便由請求實體使用。從儲存介質140讀取的資料可以通過讀取緩衝器167流化進入讀取模組163。讀取緩衝器167可以包括一個或多個用於時脈域同步的讀取同步緩衝器,如上文所描述的。讀取處理模組165可以被配置成用於處理從儲存介質140所讀取的資料,這包括但不限於以下各項中的一項或多項:a)解壓處理,b)解密處理,c)從一個或多個資料包110(和/或其他容器)提取資料,d)ECC處理等等。
儲存控制器129可以進一步包括儲存庫控制器168,該儲存庫控制器被配置成用於將寫入模組160和/或讀取模組163的資料和/或命令選擇性地路由至/自特定的獨立儲存庫158A-N。在某些實施例中,儲存控制器129被配置成用於使獨立儲存庫158A-N之間的儲存操作交錯。儲存控制器129可以例如從儲存庫158A的儲存陣列150A讀入讀取模組163,同時,來自寫入模組160的資料正在被程式設計至儲存庫158B的儲存陣列150B。在2006年12月12日提交的給大衛.弗林等人的標題為“用於使用儲存庫交錯來管理固態儲存的命令之裝置、系統、和方法(Apparatus,System,and Method for Managing Commands for Solid-State Storage Using Bank Interleave)”的美國專利申請序號11/952,095、以及2013年3月4日提交的給大衛.弗林等人的標題為“用於自我調整資料儲存之系統和方法(Systems and Methods for Adaptive Data Storage)”的美國專利申請序號13/784,705中揭露了用於儲存陣列150上的資料儲存和/或多儲存庫的儲存操作的系統和方法的進一步實施例,該等申請中的每一項申請藉由引用結合在此。
寫入處理模組162可以被配置成用於將資料包110編碼成ECC碼字。如在此所使用的,“ECC碼字”指資料以及相應檢錯和/或糾錯資訊。寫入處理模組162可以被配置成用於實現任何合適的ECC演算法和/或生成任何合適類型的ECC碼字,包括但不限於資料段以及相應的ECC校驗子、ECC符號、ECC分區塊、和/或其他結構化和/或非結構化的ECC資訊。ECC碼字可以包括任何合適的糾錯編碼,包括但不限於區塊ECC編碼、常規ECC編碼、低密度同位(LDPC)編碼、加拉格爾(Gallager)編碼、裡德-所羅門(Reed-Solomon)編碼、漢明碼、多維同位編碼、循環糾錯碼、 BCH碼等等。寫入處理模組162可以被配置成用於生成具有預先確定的大小的ECC碼字。相應地,可以將單個包編碼成多個不同的ECC碼字和/或單個ECC碼字可以包括兩個或更多個資料包的各部分。可替代地,寫入處理模組162可以被配置成用於生成任意大小的ECC碼字。在2013年3月14日提交的給傑瑞米.菲林姆(Jeremy Fillingim)等人的標題為“用於自我調整糾錯編碼之系統和方法(Systems and Methods for Adaptive Error-Correction Coding)”的美國專利申請序號13/830,652中揭露了糾錯碼處理的進一步實施例,該申請藉由引用結合在此。
在某些實施例中,儲存模組120管理非對稱一次寫入入儲存介質140,如固態儲存介質、快閃儲存器儲介質等等。如在此使用的,“一次寫入入(write-once)”儲存介質指一種每次新資料被寫入或程式設計於其上時被重新初始化(例如,被擦除)的儲存介質。如在此所使用的,“非對稱(asymmetric)”儲存介質指一對於不同類型的儲存操作具有不同等待時間的儲存介質。在某些實施例中,例如,讀取操作可以比寫入/程式設計操作更快,並且寫入/程式設計操作可以比擦除操作快得多(例如,讀取介質會比擦除快幾百倍,並且比對儲存介質的程式設計快幾十倍)。可以將儲存介質140劃分成儲存分區,可以將該等儲存分區作為一個組(例如,擦除區塊)擦除。這樣,“在原地(in-place)”修改單個資料段會需要擦除包括資料的整個擦除區塊並且將修改後的資料和原始未改變的資料一起重寫入至擦除區塊。這會引起無效率的“寫入入放大(write amplification)”,這會過度地磨損介質。在某些實施例中,因此,儲存模組120可以被配置成用於“不在原地(out-of-place)”寫入資料。如在此所使用的,“不在原 地”寫入資料指在不同的儲存位置(多個)更新和/或蓋寫入資料,而不是“在原地”蓋寫入資料(例如,蓋寫入資料的原始物理儲存位置)。不在原地更新和/或蓋寫入資料可以避免寫入放大,因為不需要擦除和重新複製具有有待修改的資料的擦除區塊上的現有有效資料。而且,不在原地寫入資料可以從許多儲存操作的等待時間路徑消除擦除,這樣使得擦除等待時間不是寫入操作的“關鍵路徑”的一部分。
儲存模組120可以被配置成用於藉由使用尤其紀錄儲存模組136來不在原地執行儲存操作。紀錄儲存模組136可以被配置成用於將資料附加在儲存位址空間144內的當前附加點,其方式為,保持儲存模組120所執行的儲存操作的相對順序,從而在儲存介質140上形成“儲存紀錄”。
圖1F描繪了在儲存介質140的儲存位址空間144內執行的只附加儲存操作的一個實施例。如以上所揭露的,儲存位址空間144包括多個儲存分區170A-N(例如,擦除區塊、邏輯擦除區塊等等),可以對每一個儲存分區進行初始化以用於儲存資料(例如,已擦除的)。儲存分區170A-N可以包括對應儲存單元145,該等儲存單元對應於一個或多個固態儲存元件152A-Y的頁、邏輯頁、偏移等等,如在此所揭露的。可以為儲存單元145指派對應儲存位址(例如,儲存位址0至儲存位址N)。
紀錄儲存模組136可以被配置成用於(藉由使用儲存控制器129)順序地從物理位址空間144內的附加點180儲存資料。在圖1F實施例中,可以將資料附加在儲存分區170A的儲存位置182內的附加點180,並且,當儲存位置182被填充時,附加點180可以前進181至下一可用儲存位置。如在此所使用的,“可用”儲存位置指已經被初始化並且仍未被程式 設計(例如,已經被擦除)的儲存位置。如上文所揭露的,某些類型的儲存介質在擦除後僅可以被可靠地程式設計一次。相應地,可用儲存位置可以指處於初始化(或已擦除)狀態的儲存分區170A-N內的儲存位置。
在圖1F實施例中,儲存分區170B可能不可用於儲存,由於尤其未處於已擦除狀態(例如,包括有效資料)、高錯誤率導致停止運行等等。因此,在填充儲存位置182後,紀錄儲存模組136可以跳過不可用的儲存分區170B,並且使附加點180前進至下一可用儲存分區170C。紀錄儲存模組136可以被配置成用於繼續將資料附加在儲存單元183-185內,在該點處,附加點180在下一可用儲存分區170A-N繼續,如上文所揭露的。
在將資料儲存在儲存位址空間144內“最後一個”儲存位置(例如,儲存分區170N的儲存位置N 189)上之後,紀錄儲存模組136可以藉由繞回至第一儲存分區170A(或下一可用儲存分區,如果儲存分區170A不可用的話)使附加點180前進。相應地,紀錄儲存模組136可以將儲存位址空間144當做回路(loop)或循環(cycle)。
如上文所揭露的,在儲存位址空間144內順序地附加資料可以在儲存介質140上生成儲存紀錄。在圖1F實施例中,儲存紀錄可以包括順序地從儲存位址空間144內的附加點180儲存資料包(和/或其他資料結構)所執行的有序儲存操作序列。僅附加式儲存格式可以用於不在原地修改和/或蓋寫入資料。不在原地執行儲存操作可以避免寫入放大,因為不需要立即擦除包括正在被修改和/或蓋寫入的資料的儲存分區170A-N上的現有有效資料(並且不需要重新定位/重寫入儲存分區170A-N內的其他有效資料)。因此,不在原地寫入資料可以從許多儲存操作的等待時間路徑消除擦 除(擦除等待時間不再是寫入操作的“關鍵路徑”的一部分)。
在圖1F實施例中,客戶端106可以(例如,通過經儲存介面121發出寫入請求)將資料X0寫入至LID A。作為響應,儲存模組120可以a)(藉由使用紀錄儲存模組136和/或儲存控制器129)將資料X0寫入至儲存介質140上的儲存單元145,以及b)將LID A指派給前向映射圖132中的儲存位置145A。資料段X0可以儲存為自描述式資料包格式110,如上文所描述的。包110的資料段112可以包括資料段X0,並且持久化元資料114可以包括與資料段相關聯的LID(多個)(例如,LID A)。而且,資料段X0可以順序地附加在儲存位址空間144內(在儲存分區170C內),這樣使得可以確定資料包110的相對紀錄順序(例如,基於儲存分區170C內的資料包110的相對偏移和/或與儲存分區170C相關聯的順序資訊113)。
客戶端106可以請求用資料X1修改和/或蓋寫入LID A的操作,這可以包括用資料段X1替換資料段X0。儲存模組120可以藉由不在原地寫入資料段X1來為該請求服務,這可以包括a)將包括資料段X1的新資料包110附加在不同的儲存單元145B,而不是在原地修改儲存位置145A處的現有資料包110,以及b)更新元資料130(前向映射圖132)以將LID A指派給儲存位置145B和/或使儲存位置145A處所儲存的過時資料段X0無效。如圖1F中所展示的,更新前向映射圖132可以包括更新LID A所對應的表項從而將LID A指派給包括資料段X1的儲存單元145B的儲存位址。
不在原地執行儲存操作(並推遲儲存分區170A-N擦除)會導致無效資料在儲存介質140內累積。在圖1F實施例中,與“在原地”蓋寫入和/或替換儲存位置145A處的資料段X0形成對照,儲存模組120藉由 將資料段X1附加至儲存紀錄來蓋寫入LID A。這樣,過時版本的LID A(資料段X0)保持在儲存介質140上。可能不會立即從儲存介質140移除或擦除過時版本的資料段X0,因為如上文所揭露的擦除資料段X0會涉及擦除整個儲存分區170A和/或重新定位儲存分區170A上的有效資料,這係一項消耗時間的操作並且會導致寫入放大。類似地,可能不會立即移除不再使用(例如,刪除或經歷解除配置或修剪(TRIM)操作)的資料。像這樣,隨著時間的推移,儲存介質140會累積“無效”資料。
儲存模組120可以藉由使用元資料130(例如,前向映射圖132)來標識無效資料,如儲存位置145A處的資料段X0。儲存模組120可以確定未指定給前向映射圖132中的邏輯位址空間的LID的儲存單元145包括不需要保留在儲存介質140上的資料。可替代地,或另外,儲存模組120可以保持其他元資料130,如有效性點陣圖、反向映射圖等等,從而高效地標識已經被刪除、已經被TRIM、已經過時、和/或以其他方式被無效的資料。
紀錄儲存模組136可以被配置成用於回收無效資料所佔用的儲存資源。紀錄儲存模組136可以進一步被配置成用於執行其他介質管理操作(例如,疏導操作),這可以包括但不限於:回收儲存資源、刷新儲存介質140上所儲存的資料(從而防止由於資料退化、寫入干擾、讀取干擾等等所造成的錯誤條件),監控介質可靠性條件、磨損程度等等。如在此所使用的,回收儲存資源(如儲存分區170A-N)指擦除儲存分區170A-N,從而使得可以將新資料儲存/程式設計於其上。回收儲存分區170A-N可以包括將儲存分區170A-N上的有效資料重新定位至新的儲存位置。儲存模組120 可以標識儲存分區170A-N以用於基於一種或多種因素進行回收,該等因素包括但不限於:儲存分區170A-N中的無效資料的量、儲存分區170A-N中的有效資料的量、磨損程度(例如,程式設計/擦除循環的次數)、自儲存分區170A-N被程式設計或刷新後的時間等等。
如上文所揭露的,元資料130的各部分可以儲存在計算系統100的易失性記憶體資源103中,並且這樣會經歷損失和/或損壞。元資料管理模組126可以被配置成用於從儲存介質140上所保持的儲存紀錄重構元資料130的各部分。在圖1F實施例中,可以基於儲存單元145A和145B中分別儲存的資料包110的相對紀錄順序來確定與LID A相關聯的資料的當前版本。由於在儲存紀錄中儲存位置145B處的資料包110被排序在儲存位置145A處的資料包之後,元資料管理模組126可以確定儲存位置145B包括LID A所對應的最新、最近版本的資料(並且確定儲存單元145A處的資料無效)。儲存模組120可以重構前向映射圖160以使LID A與儲存位置145B處的資料包110(而不是儲存位置145處的過時資料)相關聯。
如上文所描述的,在某些實施例中,紀錄儲存模組136可以被配置成用於將資料包110附加在較大的邏輯儲存單元如邏輯頁(例如,對應固態儲存元件152A-Y上的多組介質儲存位置)中。可以藉由聚合儲存陣列150的多個固態儲存元件152A-Y(例如,使用尤其互連127將固態儲存元件152A-Y通信地並行耦合)來形成該陣列內的邏輯頁。儲存控制器129可以被配置成用於對跨多個固態儲存元件152A-Y的邏輯頁執行資料儲存操作,從而尤其管理儲存介質140的非對稱特性(例如,它使得將資料程式設計至固態儲存元件152A-Y比從其讀取資料花費顯著更長的時間)。可以 藉由尤其包括儲存陣列150的固態儲存元件152A-Y的配置來確定儲存控制器129所管理的邏輯頁的物理儲存容量。在一個實施例中,儲存陣列150包括24個固態儲存元件152A-Y以供資料儲存,每一個固態儲存元件包括2kb物理儲存區塊(物理頁)。因此,儲存陣列115的每個邏輯頁可以包括48kb的物理儲存容量。儲存控制器129所管理的邏輯頁的物理儲存容量可以比其中所儲存的資料包110更大(例如,每個邏輯頁可以能夠儲存多個資料包110)。相應地,資料包110(例如,儲存單元145)的位址可以對應於包括資料包110的邏輯頁的位址和邏輯頁內的資料包110的偏移。
在某些實施例中,儲存模組120被配置成用於調整附加至儲存紀錄的資料包110的大小和/或配置。儲存模組120可以例如對資料包110的資料段112的大小進行配置,從而導致對邏輯位址空間122的區塊大小的相應改變。儲存模組120可以例如將紀錄儲存模組136配置成用於實現包括1kb資料段112(而不是512位元組的資料段112)的資料包110,這導致改變儲存模組120所執行的儲存操作的精細度從512位元組變成1kb區塊(例如,邏輯位址空間122的LID表示1kb儲存區塊而不是512位元組儲存區塊)。在2013年3月4日提交的給大衛.弗林等人的標題得“用於自我調整資料儲存之系統和方法(Systems and Methods for Adaptive Data Storage)”的美國專利申請序號13/784,705中揭露了用於將資料包110儲存在儲存陣列內的系統和方法的進一步實施例,該專利申請藉由引用結合在上文中。
如在此所揭露的,儲存模組120可以在客戶端106和儲存裝置141的物理儲存資源之間提供獨立的映射層。儲存模組120可以例如規定保留邏輯位址空間122的LID,這樣使得不消耗該等LID所表示的相應物理 儲存容量,直到資料被寫入至LID。因此,特定LID集合、範圍、和/或廣度所佔用的物理儲存資源可以對應於LID和儲存介質140上的儲存單元145之間的綁定,與LID所表示的物理儲存容量形成對照。儲存模組120可以利用邏輯位址空間122和物理儲存資源之間的獨立映射層以與客戶端106高效地交互操作。
圖2A描繪了儲存模組120的一個實施例,該儲存模組藉由尤其使用LAS管理模組124高效地結合客戶端206的壓縮功能。如上文所揭露的,如在此所使用的“壓縮”指減小資料集的大小(例如,從輸入資料集生成更小的輸出資料集)。壓縮可以包括但不限於:資料壓縮、源編碼、無損資料壓縮、失真資料壓縮、加密、解密、資料去重複、資料複製、資料差分處理等等。
客戶端206可以被配置成用於對於頁232執行儲存操作。如上文所揭露的,“頁”指表示、對應於、和/或表明一定量資料(例如,特定量的儲存容量)的邏輯構造。可以例如將頁232定義為表示16kb的資料。頁232可以包括和/或對應於多個區塊(例如,邏輯位址空間122的LID)。然而本揭露在此方面不受限制,並且可以包括具有不同大小的頁232和/或大小可變的頁(例如,表示不同量的儲存容量和/或包括不同數量的區塊和/或大小可變的區塊的頁232)。客戶端206可以被配置成用於對頁232執行I/O操作,這可以包括但不限於:寫入頁232、讀取頁232、修改頁232、將頁232解除配置等等。頁232可以對應於客戶端206的資料,該資料可以包括但不限於:物件、實體、儲存實體、資料結構、檔案、檔案容器、檔案系統元資料和/或物件(例如,檔案元資料、目錄、索引節點、設備節點、 通訊端(socket)、管、檔案流、檔案表、檔案索引等等)、資料庫資訊(例如,資料庫原語、資料庫物件、表格、值、元素、屬性等等)、資料流程等等。
頁232的大小可以大於儲存模組120的基礎區塊的大小(例如,大於儲存單元145的容量和/或邏輯位址空間122的相應LID)。如上文所揭露的,“區塊大小”指對應於特定識別符(LID)、儲存單元145、頁、扇區、區塊、資料包110等等的儲存操作的精細度。儲存模組120的區塊大小可以對應於邏輯位址空間122的LID所表示的儲存容量的量,該量可以小於頁232的大小。由於尤其頁232的大小和儲存模組120的區塊大小之間的失配,每個頁232可以包括和/或對應於兩個或更多個LID(例如,儲存介質140上的兩個或更多個區塊、儲存單元145、和/或資料包110)。在圖2A實施例中,頁232對應於對應LID範圍(LID集合222)。然而本揭露在此方面不受限制並且可以適用於使用任何合適的機制和/或技術將頁232與邏輯位址空間122相關聯。頁232可以具有公共固定大小(如圖2A中所展示的)或可以是大小可變的(例如,包括和/或對應於不同量的儲存容量和/或區塊)。
頁232和LID(例如,每個LID集合122中的LID的數量)之比可以對應於頁232的大小和LID所表示的儲存容量之比(例如,頁大小與儲存模組120的區塊大小之比)。在圖2A實施例中,頁232表示16kb的儲存容量,並且LID對應於512位元組的區塊(例如,能夠儲存512位元組資料的儲存單元145和/或資料段112)。相應地,頁232和LID之比係1:32,這種頁232對應於包括32個LID的LID集合222。LID集合222A可以 包括LID 0-31,LID集合222B可以包括LID 32-63,LID集合222C可以包括LID 64-95,以此類推。在其他實施例中,頁可以具有不同的可變大小,並且這樣可以對應於不同的LID集合和/或數量。
客戶端106可以保留一系列LID以供頁232A-N通過介面121(以及藉由使用LAS管理模組124)使用。保留LID可以包括在保留映射圖142中創建保留表項135。可替代地,或另外,可以將保留元資料(如保留表項135)保留在前向映射圖132中,如上文所揭露的。在圖2A實施例中,客戶端206保留了524288個LID(從LID 0至524278),這可以對應於16384個頁232。保留表項135可以不對應於和/或消耗儲存介質140上的物理儲存資源。如上文所揭露的,LID 0-524287可以不消耗物理儲存容量,直到客戶端206將資料寫入至那裡(藉由寫入頁232A-N中的一個或多個頁的請求)。雖然圖2A描繪了LID保留,本揭露在此方面不受限制。在某些實施例中,客戶端206可以定義頁232並在不保留相應LID的情況下在其中執行儲存操作。客戶端206可以例如在需要時和/或在為對應頁232A-N請求儲存操作時為頁232分配和/或保留LID。
客戶端206可以藉由(通過介面121)向儲存模組120發出寫入請求來寫入頁232。該寫入請求可以包括和/或引用對應於頁232的LID。作為響應,儲存模組120可以a)將頁232的資料寫入在儲存介質140的儲存單元145上(例如,將資料附加至儲存紀錄,如上文所揭露的),以及b)將頁232的資料與相應LID綁定(例如,使用前向映射圖132)。圖2B展示了處理將資料P0儲存至頁232A的請求的儲存模組120。資料P0可以包括16kb資料段。寫入頁232A可以包括a)將資料P0寫入在儲存介質140 的對應儲存單元145上,以及b)藉由使用前向映射圖132將頁232A的LID(LID 0-31)映射至所儲存的資料。可以藉由將資料儲存在儲存介質140的儲存位址空間144內的多個儲存單元145PA[0]-145PA[31]內來寫入資料P0。儲存單元145PA[0]-145PA[31]可以對應於儲存介質140上的對應區塊、扇區、頁、和/或其他儲存位置。在某些實施例中,儲存單元145PA[0]-145PA[31]包括儲存在一個或多個邏輯頁(例如,儲存陣列150的行154)內的對應偏移處的資料包110。雖然圖2B描繪了連續地儲存在儲存位址空間144內的儲存單元145PA[0]-145PA[31],但本揭露在此方面不受限制;在某些實施例中,頁232A的資料可以與其他頁232B-N的資料和/或儲存位址空間144內的其他客戶端106的資料交錯。
容量模組128可以基於尤其前向映射圖132中LID 0-31和儲存單元145PA[0]-145PA[31]之間的映射確定頁232A消耗儲存介質140上16kb的資料。
參照圖2A,客戶端206可以包括和/或通信地耦合至客戶端壓縮模組250,該客戶端壓縮模組管理尤其針對客戶端206的資料壓縮和/或解壓操作。如上文所揭露的,如在此所使用的“資料壓縮”指任何減小資料集的大小(例如,減小頁232的大小)的資料處理技術,這可以包括但不限於:資料壓縮、源編碼、無損資料壓縮、失真資料壓縮、加密、解密、資料去重複、資料複製、資料差分處理等等。可以將客戶端壓縮模組250實現為客戶端206的附加裝置、擴展、庫、和/或外掛程式。相應地,在某些實施例中,壓縮模組250可以擴展和/或替換客戶端206的I/O功能。可替代地,或另外,壓縮模組250的各部分可以結合到客戶端206中(例如, 可以將壓縮模組250實現為客戶端206的整體組件和/或庫)。
壓縮模組250可以在資料被寫入至儲存模組120之前壓縮資料(並且將從儲存模組120所讀取的經壓縮的資料解壓)。圖2C展示了客戶端206的另一實施例,該客戶端包括壓縮模組250以執行寫入頁232B的經壓縮的資料的操作。在圖2C實施例中,頁232B包括16kb的未壓縮的資料PB 240。相應地,頁232B可以表示儲存裝置上的32個儲存單元145(例如,表示32個LID、區塊、扇區等等的物理儲存容量)。如上文所揭露的,頁232B可以對應於包括32個LID(LID 32-63)的LID集合222B。客戶端206可以被配置成用於藉由使用壓縮模組250來壓縮資料PB 240。在圖2C實施例中,壓縮模組250將16kb的未壓縮的資料PB 240壓縮成8kb的經壓縮的資料CPB 241,與未壓縮的資料相比,可以將經壓縮的資料儲存在更少數量的區塊(儲存單元145)中(例如,可以將其儲存在16個LID而不是32個LID中)。壓縮模組250可以(通過介面121)發出將經壓縮的資料CPB 241寫入至儲存模組120的請求。該請求可以對應於LID集合222中的LID子集(例如,可以將資料寫入至LID集合222中的前16個LID而不是全部32個LID的集合)。作為響應,儲存模組120藉由以下各項將經壓縮的資料CPB 241寫入至儲存介質140:a)將經壓縮的資料寫入至對應儲存單元145PB[0]-145PB[15],如上文所揭露的,以及b)將儲存單元145PB[0]-145PB[15]映射至LID 32-47。LID集合222B中的LID 48-63可以保持未映射的。因此,頁232B可以表示16kb的儲存容量(儲存模組120的32個區塊或LID),但可以僅消耗儲存介質140上16個區塊或LID的等效物。
客戶端206可以藉由發出讀取對應於頁的LID(例如,LID 32-63)的請求來讀取頁232B的資料。作為響應,儲存模組120可以(藉由使用前向映射圖132)確定LID集合222中僅LID 32-47包括有效資料,並且可以返回儲存單元145PB[0]-145PB[15]上所儲存的經壓縮的資料CPB 241。客戶端206的壓縮模組250可以被配置成用於將經壓縮的資料CPB 241解壓並將相應的未壓縮資料PB 240提供給客戶端206。可替代地,客戶端206的壓縮模組250可以保持與經壓縮的資料CPB 241的大小(和/或經壓縮的資料CPB 241所佔據的LID的數量)有關的元資料(未示出),並且可以被配置成用於藉由發出讀取與整個LID集合222B形成對照的LID集合222B的子集(LID 32-47)的請求來讀取頁232B。
在某些實施例中,寫入經壓縮的資料CPB 241進一步包括將未使用的LID解除配置。如在此所使用的,未使用的LID指不與儲存介質140上所儲存的資料相關聯的LID(例如,空的、未映射的、不需要的LID等等)。在圖2C實施例中,寫入經壓縮的資料CPB 241可以包括a)發出將壓縮的資料CPB 241寫入至頁232B的LID子集(LID 32-47)的請求,以及b)向儲存模組120發送標識頁232B的未在使用的LID(例如,LID 48-63)的消息。該消息可以包括以下各項中的一項或多項:TRIM消息、TRIM指示(持久化TRIM消息)、未映射消息、解除配置消息等等。作為響應,儲存模組120可以從前向映射圖132移除相應的LID。
圖2D描繪了管理儲存壓縮操作的操作的進一步實施例。在圖2D實施例中,客戶端206發出用未壓縮的資料PBx 242修改和/或蓋寫入頁232B的請求。寫入頁232B可以包括a)將未壓縮的資料PBx 242壓縮成 經壓縮的資料CPBx 243,以及b)發出將經壓縮的資料CPBx 243寫入至儲存模組120的請求。在圖2D實施例中,頁232B被壓縮成4kb(八個區塊或LID),這樣使得經壓縮的資料CPBx 243小於之前寫入至頁232B的經壓縮的資料CPB 241。寫入請求可以表明經壓縮的資料CPBx 241的大小(例如,可以表明經壓縮的資料對應於LID集合222B中的八個LID)。可替代地,並如圖2D中所展示的,寫入請求可以對應於完整LID集合222B(LID 33-63),並且儲存模組120可以基於對應於寫入請求的資料(例如,基於與請求相關聯的寫入緩衝器的大小)來確定經壓縮的資料CPBx 243的實際大小。
處理寫入請求可以包括藉由以下各項不在原地蓋寫入綁定至儲存單元145PB[0]-145PB[7]的現有LID 32-39:a)將經壓縮的資料PBx 243寫入至儲存單元145PBx[0]-145PBx[7],以及b)在前向映射圖132中將LID 32-39指派給儲存單元145PBx[0]-145PBx[7]。在完成了寫入經壓縮的資料CPBz 243的請求之後,儲存模組120可以向客戶端206(和/或儲存模組)返回完成確認。容量模組128可以確定頁232B所消耗的物理儲存容量對應於八個區塊(4kb)而不是頁232B所表示的全部16kb和/或頁232B的之前版本(經壓縮的資料CPB 241)所消耗的16個區塊(8kb)。
如圖2D中所展示的,經壓縮的資料CPBx 243比資料(經壓縮的資料CPB 241)的過時版本佔據更少的區塊(更少的LID)。相應地,將CPBx 243寫入至頁232B的操作可以不替換頁232B的過時資料的所有映射;LID 40-47和儲存單元145B[8]-145B[15]中所儲存的經壓縮的資料CPB 241之間的映射可以保持在前向映射圖132中。壓縮模組250可以被配置成用於 向儲存模組120發出消息,該消息標識頁232B的未用於引用頁232B的經壓縮的資料CPBx 243的LID。在圖2D實施例中,壓縮模組250向儲存模組120發出未映射消息。作為響應,儲存模組120將該未映射消息中所指定的LID從前向映射圖132移除(例如,移除對應於LID 40-47的表項)。壓縮模組250所發出的消息可以標識用於頁232B的一個或多個之前版本的LID(例如,表明不再使用LID 40-47),或如圖2B中所描繪的,可以標識LID集合222B中所有未在使用的LID(例如,表明LID 40-63未在使用中)。
儲存模組120可以進一步被配置成用於將持久化解除配置元資料247儲存在儲存介質247上以標識未在使用中的LID。持久化解除配置元資料247可以被配置成用於保留前向映射圖132的狀態,這樣使得未映射操作係持久化的並且死機保存的(crash-save)。
如上文所揭露的,儲存模組120可以被配置成用於使資料與持久化元資料114相關聯,該持久化元資料可以包括尤其與資料綁定的LID(例如,持久化元資料114可以包括資料包110的資料段112的LID)。LAS管理模組124可以被配置成用於藉由使用儲存介質140上所儲存的持久化元資料114來重構元資料130(例如,前向映射圖132)。因此,重構前向映射圖132可以包括存取儲存裝置141上的儲存紀錄中的資料包110,以及藉由使用所存取的資料包110的持久化元資料114來重構前向映射圖132的表項134。參照圖2D,重構前向映射圖132可以包括存取儲存單元145PA[0]-145PA[31]上的資料包110從而重構LID 0-31和頁232A的資料之間的映射。重構前向映射圖132可以進一步包括存取儲存單元145PB[0]-145PB[15]和145PBx[0]-145PBx[7]上的資料包110。LID 32-39和經壓 縮的資料CPBx(儲存單元145PBx[0]-145PBx[7])之間的映射可以替換(和/或消除)LID 32-39和儲存單元145PB[0]-145PB[7]上所儲存的之前版本的經壓縮的資料PB之間的映射。然而,儲存單元145PB[8]-145PB[15]可以包括LID 40-47和CPB 241之間的映射。由於資料CPBx 243相對於CPB 241的更小大小,該等映射未被寫入CPBx 243的操作替換和/或覆蓋。持久化解除配置元資料247可以標識頁232B的未在使用中的LID,從而使得可以準確地重構前向映射圖132(例如,移除LID集合222B中的LID和頁232B的過時資料之間的映射)。持久化解除配置元資料247可以儲存在包括CPBx 243的資料包110(例如,儲存單元145PBx[0]-145PBx[07]上的資料包)中的一個或多個資料包中和/或可以儲存為儲存紀錄中的單獨表項(例如,儲存為儲存紀錄內的單獨持久化注解)。在2012年8月3日提交的給大衛.弗林等人的標題為“用於使持久化解除配置之裝置、系統、和方法(Apparatus,System,and Method for Persistent Deallocation)”的美國專利申請序號13/566,471、以及2013年8月30日提交的給尼莎.塔拉加拉(Nisha Talagala)等人的標題為“用於儲存元資料管理之系統和方法(Systems and Methods for Storage Metadata Management)”的美國臨時專利申請序號中61/872,186揭露了用於持久化死機保存元資料之系統和方法的進一步實施例,該等申請中的每一項申請藉由引用以其全文結合在此。
如圖2A至圖2D中所展示的,為寫入比儲存模組120的基礎區塊大小更大的區塊、段、和/或扇區(例如,頁232)的請求服務可以包括將資料寫入至多個不同的儲存單元145,該等儲存單元如上文所揭露的可以跨多個儲存分區、邏輯頁、儲存陣列150A-N、儲存庫158A-N等等。 儲存模組120可以被配置成用於作為原子儲存操作為此類請求服務。如在此所使用的,原子儲存操作指或者作為整體被完全完成或者被回滾的儲存操作。相應地,可以不部分地完成原子儲存操作;儲存模組120可以被配置成用於使未完成的原子儲存操作的資料無效和/或將其移除。參照圖2A,儲存模組120可以包括被配置成用於附加對應於更大的資料區塊(例如,頁232)的資料包110的原子儲存模組236,這樣使得或者:a)所有的資料包110被成功地寫入至儲存介質140;或者b)可以對關於部分的、失敗的原子儲存操作的資料包110進行標識並使其無效。在2012年3月19日提交的給大衛.菲林等人的標題為“用於上下文儲存之邏輯介面(Logical Interfaces for Contextual Storage)”的美國專利申請序號13/424,333,2011年3月18日提交的標題為“支援操作排序、虛擬位址空間、原子操作、和元資料發現之虛擬儲存層(Virtual Storage Layer Supporting Operations Ordering,a Virtual Address Space,Atomic Operations,and Metadata Discovery)”的美國臨時專利申請號61/454,235,2012年4月17日提交的給大衛.菲林等人的標題為“用於管理邏輯位址空間之系統、方法、和介面(Systems,Methods,and Interfaces for Managing a Logical Address Space)”的美國臨時專利申請號61/625,647,2012年4月23日提交的給大衛.菲林等人的標題為“用於管理邏輯位址空間之系統、方法、和介面(Systems,Methods,and Interfaces for Managing a Logical Address Space)”的美國臨時專利申請號61/637,165,2013年8月1日提交的給尼莎.塔拉加拉等人的美國臨時專利申請號61/861,314,以及2013年10月8日提交的給尼莎.塔拉加拉等人的標題為“用於分散式原子儲存操作之系統和方法(Systems and Methods for Distributed Atomic Storage Operations)”的美國臨時專利申請號61/892,962中揭露了用於原子儲存操作的系統、方法、和/或裝置之實施例,該等申請中的每一項申請藉由引用以其全文結合在此。
圖3A描繪了高效地結合客戶端306的壓縮功能的儲存模組120的進一步實施例。在圖3A實施例中,儲存模組120包括檔案系統模組324和檔案系統介面321。檔案系統模組324提供檔案系統功能,該功能包括但不限於:分配檔案334,執行與檔案334有關的I/O操作,管理元資料130以將檔案334映射至邏輯位址空間122的LID(例如,檔案LID 322)等等。在2011年1月6日提交的給大衛.弗林等人的標題為“用於儲存層之裝置、系統(Apparatus,System for a Storage Layer)”的美國專利申請序號12/986,117、以及2013年4月17日提交的給大衛.弗林等人的標題為“用於儲存分配之系統和方法(Systems and Methods for Storage Allocation)”的美國專利申請序號中13/865,153揭露了進一步實施例,該等申請中的每一項申請藉由引用以其全文結合在此。
客戶端306可以被配置成用於實現對頁232的I/O操作,這可以對應於和/或表示特定量的儲存容量(例如,特定數量的區塊),如上文所揭露的。在圖3A實施例中,該等頁可以表示16kb的儲存容量,這可以對應於儲存模組120的32個儲存區塊(32個LID)。
壓縮管理器350管理針對客戶端306的壓縮操作(例如,管理頁232的壓縮和/或解壓以儲存在儲存裝置141上)。如上文所揭露的,可以將壓縮管理器350實現為客戶端306的附加裝置、擴展、庫、和/或外掛程式。相應地,在某些實施例中,壓縮管理器350可以擴展和/或替換客戶端 306的I/O功能。在某些實施例中,壓縮管理器350被體現為客戶端306的I/O管理器309的擴展。可替代地,或另外,可以將壓縮管理器350的各部分實現為I/O管理器309的整體組件和/或庫。
I/O管理器309可以被配置成用於藉由使用尤其儲存模組120的檔案系統介面321來為與頁232有關的I/O請求服務。因此,為與客戶端306的頁232有關的I/O請求服務可以包括對儲存模組120所管理的檔案334執行相應I/O操作:分配頁232的操作可以包括通過檔案系統介面321分配檔案334(例如,使用預分配(fallocate)調用等等);寫入頁232可以包括寫入檔案334(例如,使用預寫入(fwrite)調用等等);讀取頁232可以包括讀取檔案334(例如,預讀取(fread)調用等等)等等。壓縮管理器350可以被配置成用於擴展和/或替換檔案I/O操作,從而減小頁232的大小以便儲存在儲存裝置241上。在一個實施例中,寫入特定頁232C的操作包括:a)藉由使用檔案分配模組352來為頁232C分配檔案334C(如果相應的檔案334C不存在的話),以及b)藉由使用減小模組354來生成對應於頁232C的大小減小的資料集,以及c)將大小減小的資料集寫入至檔案334C。檔案分配模組352可以進一步被配置成用於d)通過尤其檔案系統介面321標識頁232C和/或檔案334C的未使用的部分。在某些實施例中,減小模組354被配置成用於使用壓縮管理器350(例如,Iz77、Iz78等等)所實現的壓縮演算法來壓縮頁232。可替代地,或另外,減小模組352可以藉由使用外部壓縮模組、引擎、庫等等(如作業系統(例如,zlib)、檔案系統等等所實現的壓縮功能)生成大小減小的資料集。可替代地,或另外,減小模組354可以藉由以下各項中的一項或多項生成大小減小的資料集:對頁232 的資料進行加密、對頁232的資料進行解密、對頁232的資料進行去重複、對頁232的資料進行複製、和/或其他任何用於生成大小減小的資料集的合適機制。
如上文所揭露的,壓縮管理器350可以包括檔案分配模組352,該檔案分配模組管理對應於客戶端306的頁232的檔案334的分配(以及解除配置)。檔案分配模組352可以藉由尤其(例如,通過檔案系統介面321)向儲存模組120發出檔案分配請求來為頁232分配檔案334。檔案分配模組352可以請求對“精簡配置的”檔案的分配,該等檔案表示與頁232所表示的儲存容量等效的儲存容量。如在此所使用的,“精簡配置的”檔案334指表示特定儲存容量和/或大小但不消耗相應的物理儲存資源直到資料被寫入至檔案334的檔案334。如圖3A中所展示的,為頁232C分配檔案334C的請求可以包括藉由尤其發出創建16kb檔案的fallocate請求(例如,fallocate(334C,0,16kb))來發出分配16kb檔案的請求。作為對該請求的響應,儲存模組120藉由使用尤其檔案系統模組324和/或LAS管理模組124來為檔案334C創建保留表項335(在保留索引142、和/或其他元資料130中)。如圖3A中所展示的,因為頁232C和檔案334C表示16kb的儲存容量,檔案334C可以對應於32個儲存區塊(例如,32個LID 1024-1055)。檔案系統模組324可以管理轉換層以將檔案334映射至相應的檔案LID 322集合。為檔案334C所保留的LID 322C可以選自邏輯位址空間122的任何合適部分並且可以包括一個或多個LID集合、組、和/或範圍。針對檔案334C所創建的保留表項335映射可以不被映射至儲存介質140上所儲存的資料並且這樣不表示物理儲存資源的使用。如圖3A中所展示的,保留表項335可 以使LID 1024-1055與檔案334C相關聯。可替代地,檔案334C可以與元資料130的單獨映射結構內的LID 1024-1055相關聯。
圖3B描繪了將經壓縮的資料寫入至客戶端306的頁232的操作。在圖3B實施例中,客戶端306發出寫入頁232C的請求。可以通過和/或使用客戶端306的I/O管理器309來發出該請求,該客戶端可以被配置成用於藉由使用壓縮管理器350來為該請求服務。作為對該請求的響應,檔案分配模組352可以確定是否已經創建了相應檔案334C,並且如果沒有,則可以發出創建檔案334C的請求,如上文所揭露的。在某些實施例中,減小模組354使用尤其壓縮模組355壓縮頁的資料(DA 340A),該壓縮模組可以包括但不限於:內部壓縮引擎、庫、和/或模組;外部壓縮引擎、庫、和/或模組等等。在某些實施例中,減小模組354包用於生成大小減小的資料集的其他模組(多個),該等模組可以包括但不限於:去重複模組、複製模組、加密模組、解密模組等等。
在圖3B實施例中,將16kb的資料DA 340A壓縮成12kb的資料CDA 341A。檔案分配模組352可以被配置成用於藉由尤其向儲存模組120發出檔案寫入請求(例如,生成將12kb的經壓縮的資料CDA 341A寫入至檔案334C的fwrite請求)將經壓縮的資料CDA 341A寫入至對應於檔案232C的檔案334C。該fwrite請求可以進一步被配置成用於請求將該寫入操作作為原子儲存操作(例如,藉由使用ioctl命令)執行,如上文所揭露的。檔案分配模組352可以進一步被配置成用於藉由尤其向儲存模組120發出未映射消息來標識檔案334C的未使用的和/或空部分。如上文所揭露的,檔案334C的未使用的部分指檔案334C的不包含頁232的資料的部分, 如將檔案334C的各部分稱為未使用的、空的、不需要的、未映射的、未分配的等等。在圖3B實施例中,未映射消息包括標識檔案334C的未使用的部分(多個)的fallocate請求;該消息包括解除配置標誌(例如,FALLOC_FL_PUNCH_HOLE),並標識檔案334C的未映射部分(多個)的偏移和長度(例如,檔案的最後4kb,或LID 1048-1055)。
在圖3B實施例中,將16kb的資料DA 340A壓縮成12kb的資料CDA 341A。檔案分配模組352可以被配置成用於藉由尤其向儲存模組120發出檔案寫入請求(例如,生成將12kb的經壓縮的資料CDA 341A寫入至檔案334C的fwrite請求)將經壓縮的資料CDA 341A寫入至對應於檔案232C的檔案334C。該fwrite請求可以進一步被配置成用於請求將該寫入操作作為原子儲存操作(例如,藉由使用ioctl命令)執行,如上文所揭露的。檔案分配模組352可以進一步被配置成用於藉由尤其向儲存模組120發出未映射消息來標識檔案334C的未使用的和/或空部分。如上文所揭露的,檔案334C的未使用的部分指檔案334C的不包含頁232的資料的部分,如將檔案334C的各部分稱為未使用的、空的、不需要的、未映射的、未分配的等等。在圖3B實施例中,未映射消息包括標識檔案334C的未使用的部分(多個)的fallocate請求;該消息包括解除配置標誌(例如,FALLOC_FL_PUNCH_HOLE),並標識檔案334C的未映射部分(多個)的偏移和長度(例如,檔案的最後4kb,或LID 1048-1055)。
儲存模組120可以藉由以下各項來為fwrite請求服務:a)藉由使用檔案系統模組324將檔案334C映射至檔案LID 322C,b)將經壓縮的資料CDA 341A寫入至儲存介質140(例如,儲存單元145CA[0]-145CA[23] 處),以及c)將檔案334C的LID與所儲存的資料CDA 341A綁定(例如,將LID 1024-1047指派給前向映射圖132中的儲存單元145CA[0]-145CA[23]),這樣使得檔案334C的部分(多個)保持未映射。作為對未映射消息的響應,儲存模組120可以將對應於檔案334C的經解除配置的部分的表項從前向映射圖132移除(如果存在的話)和/或將持久化元資料247A寫入在儲存介質140上,該儲存介質記錄檔案334C的哪個部分(多個)係未映射(例如,TRIM LID 1048-1055),如上文所揭露的。檔案334C(和頁232C)所消耗的儲存容量可以對應於檔案334C和儲存介質140上的資料之間的映射。在圖3B實施例中,檔案334C被映射至24個512位元組的儲存區塊(LID)並且這樣消耗12kb的儲存容量。檔案334C的未使用的和/或不需要的部分(多個)不消耗儲存容量(例如,LID 1048-1055係未映射的並且這樣不佔據儲存介質140的儲存單元145)。
在某些實施例中,檔案壓縮模組352被配置成用於生成和/或儲存與頁壓縮操作有關的壓縮元資料341。壓縮元資料341A可以包括但不限於:頁232C的未壓縮的大小(例如,16kb)、經壓縮的資料CDA 341A的大小(例如,12kb)、標識頁232和/或檔案334C的未使用的部分、用於壓縮資料DA 340A的壓縮演算法、壓縮簽章等等。壓縮元資料345A可以儲存於經壓縮的資料CDA 341A內的預先確定的位置處(例如,作為經壓縮的資料CDA 341A的標頭)。
圖3C描繪了讀取頁232的經壓縮的資料的操作。在圖3C實施例中,客戶端306發出讀取頁232C的請求。作為響應,壓縮管理器350藉由以下各項為該請求服務:a)發出讀取對應於頁232C的檔案334C的請 求,b)對經壓縮的資料CDA 341A進行解壓以獲取未壓縮的資料DA 340A,以及c)向客戶端306提供未壓縮的資料DA 340A。讀取檔案334C的請求可以包括讀取整個檔案334C(例如,該檔案所表示的全部16kb)的fread請求。做為對該請求的響應,儲存模組120可以將保留的LID 334C集合映射至檔案334C(LID 1024-1055),確定檔案LID 334C中的哪些對應於儲存介質140上所儲存的資料(例如,LID 1024-1047)和/或哪些是未映射的(例如,LID 1048-1055),並返回映射至檔案334C的經壓縮的資料CDA 341A(例如,儲存單元145CA[0]-145CA[23]中所儲存的資料)。可替代地,檔案分配模組352可以保持與檔案334C的未使用的部分(多個)有關的元資料,並且這樣壓縮管理器350所發出的fread請求可以限制於檔案334C的在使用中的部分(多個)(例如,fread請求可以對應於12kb的資料而不是檔案334C所表示的全部16kb)。
減小模組354可以被配置成用於藉由使用尤其壓縮模組352和/或檔案334C的壓縮元資料345A來對經壓縮的資料CDA 341A進行解壓,該壓縮元資料如上文所揭露的可以表明經壓縮的資料CDA 341A的大小、未壓縮的資料DA 340A的大小、用於生成經壓縮的資料CDA 341A的壓縮演算法(多個)、經壓縮的資料CDA 341A和/或未壓縮的資料DA 340A的簽章等等。
圖3D描繪了將經壓縮的資料寫入至客戶端306的頁232的操作的進一步實施例。在圖3D中,客戶端306發出用資料DB 340A來蓋寫入頁232C的請求。壓縮管理器350可以藉由以下各項為該請求服務:a)壓縮資料DB 340B以生成經壓縮的資料CDB 341B(包括壓縮元資料345B), b)發出將經壓縮的資料CDB 341B寫入至檔案334C的請求,以及c)針對儲存模組120標識檔案334C的未使用的部分(多個)。在圖3D實施例中,將16kb的資料DB 340B壓縮成1kb的經壓縮的資料CDB 341B。相應地,fwrite請求包括將1kb寫入至檔案334C的請求。未映射消息(fallocate請求)可以表明15kb的檔案334C未使用(例如,將開始於檔案334C內的1kb偏移的15kb未映射)。
作為對該寫入請求的響應,儲存模組120 a)將經壓縮的資料CDB 341B和壓縮元資料345B附加至儲存單元145CB[0]和145CB[1]處的儲存紀錄,以及b)將檔案334C的LID 1024-1025與所儲存的資料綁定。LID 1026-1047和過時的經壓縮的資料CDA 340A(儲存單元145CA[2]-145CA[23])之間的現有映射可以保持在前向映射圖132中。可以響應於未映射消息(例如,圖3D中所描繪的fallocate請求)將該等映射從前向映射圖132移除。儲存模組120可以進一步被配置成用於將持久化元資料247B附加至標識檔案334C的未使用的部分(多個)的儲存紀錄,如上文所揭露的(例如,表明檔案334C的LID 1026-1055未在使用中)。因此,與頁232C和/或檔案334C所表示的全部16kb的儲存容量形成對照,容量模組128可以確定頁232C(以及相應檔案334C)僅佔據儲存裝置141上1kb的儲存容量。
在某些實施例中,儲存模組120被配置成用於向客戶端406提供壓縮服務(與自己實現單獨的壓縮功能的客戶端(多個)406形成對照)。圖4A係包括被配置成用於提供儲存壓縮服務的儲存模組120的計算系統400的一實施例之框圖。儲存模組120可以包括儲存壓縮模組450,該儲存壓縮模組向儲存模組120和/或儲存客戶端406提供壓縮服務。如在此 所使用的,“壓縮服務”指用於以下各項的操作:a)管理針對儲存介質140上的儲存壓縮資料的操作和/或b)管理對儲存介質140上所儲存的經壓縮的資料進行解壓的操作。儲存壓縮模組130提供對於客戶端406透明的壓縮服務,這樣使得客戶端406對未壓縮的資料執行儲存和/或I/O操作,並且儲存壓縮模組130管理儲存模組120內的壓縮和/或解壓。
在某些實施例中,儲存壓縮模組450包括管理虛擬區塊位址空間(VBAS)452的區塊管理模組451。VBAS 452可以包括多個虛擬區塊453,每個虛擬區塊對應於兩個或更多個LID的集合,該集合可以能夠被映射至儲存介質140上所儲存的資料,如在此所揭露的。因此,VBAS 452可以將邏輯位址空間122用作客戶端406和儲存介質140上所儲存的資料之間的中間轉換層。儲存模組120可以通過儲存介面121呈現VBAS 452。客戶端406可以引用虛擬區塊453來執行儲存操作(例如,將資料保留、寫入至VBAS 452的虛擬區塊453和/或從其讀取資料)。
如上文所揭露的,邏輯位址空間122中的每個LID可以表示和/或對應於儲存介質140上特定量的儲存容量(例如,512位元組的儲存單元145)。VBAS 452的虛擬區塊453可以包括多個LID(N個LID每虛擬區塊453),並且這樣每個虛擬區塊453可以表示等效於單個LID所表示的儲存容量的N倍的儲存容量(例如,N倍的512位元組)。
儲存壓縮模組450可以進一步包括儲存減小模組454,該儲存減小模組:a)針對非易失性儲存介質140上的儲存壓縮資料,以及b)對從非易失性儲存介質140所讀取的經壓縮的資料進行解壓。儲存減小模組454可以對有待儲存於儲存介質140上的資料實現壓縮和/或解壓操作。減小 模組454可以被配置成用於生成經壓縮的資料集以儲存在儲存介質上。如上文所揭露的,“經壓縮的資料集”指比原始的、未壓縮的資料集小的資料集(例如,比原始的、未壓縮的資料集佔據更少的區塊、扇區、儲存單元145、和/或LID的資料集)。壓縮資料可以包括但不限於:資料壓縮、源編碼、無損資料壓縮、失真資料壓縮、加密、解密、資料去重複、資料複製、資料差分處理等等。在某些實施例中,減小模組454藉由使用壓縮代理455和/或壓縮引擎456來生成經壓縮的資料集。壓縮代理455可以被配置成用於藉由使用壓縮引擎456來為資料壓縮和/或解壓請求服務。如圖4A中所展示的,壓縮引擎456可以獨立於儲存模組120被實現(例如,可以包括單獨的模組、組件、庫、和/或服務)。可替代地,可以將壓縮引擎456實現為儲存模組120的一部分(例如,實現為儲存模組120的組件和/或模組)。在某些實施例中,減小模組454包括和/或結合其他類型的壓縮功能,如資料加密、解密、去重複、複製等等。
作為對將資料寫入至虛擬區塊453的請求的響應,儲存壓縮模組450可以被配置成用於:a)藉由使用減小模組454(和/或壓縮引擎456)壓縮對應於虛擬區塊453的資料,b)將經壓縮的資料寫入至儲存介質140上的一個或多個儲存單元145,和c)使虛擬區塊453的對應LID與包括經壓縮的資料的儲存單元145相關聯(例如,在前向映射圖132中)。取決於壓縮比,與虛擬區塊453相關聯的LID中的一個或多個可以是未綁定的(例如,不用於引用虛擬區塊453的經壓縮的資料)。如上文所揭露的,未綁定至儲存介質140上所儲存的資料的LID可以不消耗儲存資源,即使此類LID被保留至特定客戶端406和/或虛擬區塊453。
圖4B描繪了儲存壓縮模組450(藉由使用區塊管理模組451)所管理的VBAS 452的一實施例。在圖4B實施例中,虛擬區塊453A-N中的每一個包括八個LID;區塊453A包括LID 0-7,區塊453B包括LID 8-15,以此類推。在圖4B實施例中,LAS管理模組124和/或區塊管理模組451可以被配置成用於藉由尤其逐位移位LID(移除LID的三個最低有效位)將虛擬區塊453映射至LID。每個移位的LID可以對應於對應區塊453A-N,這樣使得八個LID映射至每個唯一的虛擬區塊453A-N(虛擬區塊453A-N的位址可以對應於移位的LID)。然而,本揭露在此方面不受限制並且可以適用於使用任何合適的技術使虛擬區塊453A-N與LID集合相關聯,該技術包括但不限於:雜湊映射、按模映射(modulo mapping)等等。由於每個虛擬區塊453A-N包括八個LID,並且佔用512位元組的儲存單元145,每個區塊452A-N可以表示4kb的儲存容量。
如圖4B中所展示的,虛擬區塊453A-N可以通過邏輯位址空間122的LID映射至儲存位址空間144內的儲存位置145。相應地,LAS管理模組124和/或區塊管理模組451可以將邏輯位址空間122用作VBAS 452和儲存介質140的儲存位址空間144之間的中間轉換層。
儲存壓縮模組450可以被配置成用於壓縮虛擬區塊453的資料以儲存在儲存介質140上。儲存模組120可以藉由以下各項來為將資料寫入至虛擬區塊453A的請求服務:a)藉由使用減小模組454壓縮資料(從4kb的未壓縮的資料至2kb的經壓縮的資料),b)將2kb的經壓縮的資料寫入在儲存介質140上(例如,四個512位元組的儲存單元145內),以及c)在前向映射圖132中將虛擬區塊453A的LID與包括經壓縮的資料的儲存單元 145綁定(LID 0-3),這樣使得虛擬區塊453A的LID中的一個或多個保持未綁定。在圖1B實施例中,區塊453A的LID 4-7未與儲存介質140上的儲存單元145綁定。因此,雖然區塊453A表示4kb的儲存容量,但區塊453A僅消耗儲存介質140上2kb的儲存容量。
因此,特定虛擬區塊453A-N所消耗的儲存資源的量可以取決於虛擬區塊453A-N的資料的壓縮比(例如,取決於虛擬區塊453A-N的LID和儲存單元145之間的基礎映射)。如圖4B中所展示的,另一虛擬區塊453B可以包括被壓縮至1kb的資料。相應地,可以僅將區塊453B的兩個LID指派給儲存介質140上的儲存單元145。剩下的六個LID未指派。另一虛擬區塊453C可以包括4kb的不能被壓縮的資料。這樣,區塊453C的所有LID與儲存介質140上的對應儲存單元145捆綁。因此,虛擬區塊453C可以佔據虛擬區塊453C所表示的全部4kb的儲存容量。
儲存壓縮模組450可以藉由以下各項來為從區塊453A讀取資料的請求服務:a)藉由使用前向映射圖160來存取對應於區塊453A的經壓縮的資料(例如,基於前向映射圖160中LID 0-3和儲存單元145之間的指派),以及b)響應於該請求提供經解壓的資料。可以藉由使用減小模組454和/或壓縮引擎456對資料進行解壓,如上文所揭露的。相應地,儲存模組120內所實現的資料壓縮操作對於儲存客戶端406可以是透明的,這樣使得看起來對於儲存客戶端406好像正在使用未壓縮的資料實現儲存操作(多個)。
儲存模組120的容量模組128可以藉由使用前向映射圖132來確定虛擬區塊453A-N所消耗的物理儲存容量。如上文所揭露的,虛擬區 塊453A-N的LID和儲存單元145之間的指派表示物理儲存使用,然而與虛擬區塊453A-N相關聯但未與儲存介質140上的資料綁定的LID並未如此。相應地,在圖4B實施例中,雖然每個虛擬區塊453A-N表示4kb的儲存容量,容量模組128可以確定虛擬區塊453A僅消耗2kb(基於LID 0-3的指派),虛擬區塊453B僅消耗1kb(基於LID 8-9的指派),並且虛擬區塊453C消耗全部4kb(基於LID 16-23的指派)。
儲存壓縮模組450可以進一步被配置成用於標識和/或記錄哪些LID當前未用於引用儲存介質140上的資料儲存。如圖4C中所展示的,客戶端406可以修改和/或蓋寫入虛擬區塊453A。可以將已更新的資料從整個4kb大小的虛擬區塊453A壓縮至512位元組。儲存壓縮模組450可以(藉由使用儲存控制器129)將虛擬區塊453A的經壓縮的資料寫入至儲存位址4294967296處的單個LID(LID 0)。LID 0可以與已更新的儲存位址綁定,從而替換LID 0和儲存位址13442之間的過時映射。然而,虛擬區塊453A的其他未被蓋寫入的LID之間的映射可以保持在前向映射圖132中(並且保持在儲存介質140上)。儲存壓縮模組450可以被配置成用於藉由以下各項記錄虛擬區塊453A的哪些LID未在使用:a)更新前向映射圖132以移除對應於未使用的LID的表項(例如,移除與LID 1-3有關的映射),和/或將持久化解除配置元資料247(未示出)寫入在儲存介質140上以保證LID 1-3的解除配置係持久化的且死機安全的,如上文所揭露的。
圖4D描繪了儲存模組120所實現的儲存壓縮操作的進一步實施例。在圖4D實施例中,儲存模組120的區塊大小可以是512位元組,這樣使得邏輯位址空間122的每個LID可以能夠引用儲存單元145(區塊、 扇區、資料包110等等),該儲存單元能夠儲存512位元組的資料。因此,每個LID可以表示512位元組的儲存容量(512位元組的區塊)。VBAS 452的虛擬區塊453可以表示4kb的儲存區塊,並且這樣每個虛擬區塊453對應於八個LID。
儲存模組120可以為將資料U0寫入至虛擬區塊453X的請求服務。為該請求服務可以包括藉由使用減小模組454(和/或壓縮引擎456)來壓縮資料U0並將經壓縮的資料附加至儲存介質140上的儲存紀錄,如上文所揭露的。可以將資料U0壓縮成3kb的經壓縮的資料CU0。因此,經壓縮的資料CU0可以儲存在六個資料包410A內。可以將資料包410A儲存在儲存介質140的對應儲存單元145內(例如,可以將經壓縮的資料儲存為資料包410A內的對應資料段112 CU0-1至CU0-5)。可以在前向映射圖132中(和/或藉由使用對應資料包410A內的持久化元資料414A)將資料包410A與虛擬區塊453X的LID 0-5捆綁。與區塊453A相關聯的剩餘LID(LID 6-7)保持未指派(未與儲存介質140上所儲存的資料綁定)。相應地,虛擬區塊453X所佔據的物理儲存容量係3kb,而不是虛擬區塊453X所表示的4kb。如圖4D中所展示的,包括虛擬區塊453X的經壓縮的資料CU0的資料包410A可以跨多個儲存分區(資料包410A儲存在儲存分區170A和170B兩者內)。為寫入虛擬區塊453X的請求服務可以進一步包括作為以下各項的響應確認該請求的完成:a)將資料包410A寫入至儲存介質140,以及b)將LID 0-5映射至資料包410A,如上文所揭露的。
在某些實施例中,儲存壓縮模組450被配置成用於包括關於儲存介質140上所儲存的經壓縮的資料的壓縮元資料。可以將該壓縮元資 料體現為持久化元資料114,該元資料與包括經壓縮的資料段112的資料包110中的一個或多個資料包儲存在一起。該壓縮元資料可以包括但不限於:一個或多個資料包110內的資料段(多個)112的未壓縮的大小(例如,4kb)、經壓縮的資料的大小(例如,3kb)、相應區塊453所使用的LID的數量、用於壓縮資料的壓縮演算法、壓縮簽章(經壓縮的資料的校驗和)等等。壓縮元資料可以進一步表明區塊453的未指派的LID(例如,由於尤其資料壓縮而映射至儲存單元145的LID)。壓縮元資料可以由減小模組454和/或LAS管理模組124所獲取並且可以被通過儲存控制器129傳遞至紀錄儲存模組136和/或寫入模組240。
在圖4D實施例中,資料包410A可以包括持久化壓縮元資料415A,如上文所揭露的。壓縮元資料415A可以被紀錄儲存模組136和/或寫入模組240包括在資料包410A中的一個或多個資料包的持久化元資料414A內。壓縮元資料415A可以包括但不限於:資料U0的未壓縮的大小(例如,4kb),經壓縮的資料的大小(例如,3kb),區塊453X所使用的LID的數量(例如,LID 0-5),標識虛擬區塊453X的未在使用中的LID(例如,未映射的LID 6-7),用於壓縮資料U0的壓縮演算法,壓縮簽章等等。
儲存模組120可以藉由以下各項為來自客戶端406的讀取虛擬區塊453X的請求服務:a)將虛擬區塊453X映射至邏輯識別符集合122(例如,LID 0-7),b)藉由使用尤其前向映射圖132確定虛擬區塊453X的哪些LID與儲存介質140上所儲存的資料綁定,以及相應資料包410A的儲存位址,c)從資料包410A讀取經壓縮的資料CU0,d)藉由使用減小模組454來解壓經壓縮的資料CU0,以及e)將經壓縮的資料U0返回至客戶端 406。讀取資料U0可以進一步包括存取與資料包410A儲存在一起的壓縮元資料415A。壓縮元資料415A可以指示經壓縮的資料CU0的大小,該大小可以用於確定將從儲存介質140讀取的資料包410A的數量(和/或使前向映射圖132中的LID指派生效)。壓縮元資料415A可以進一步表明用於壓縮資料CU0的壓縮演算法(多個),該壓縮演算法可以使得減小模組454能夠選擇適當的解壓演算法和/或壓縮引擎456。壓縮元資料415A可以進一步包括壓縮簽章,該壓縮簽章可以用於驗證經壓縮的資料CU0和/或經解壓的資料U0的完整性。
在儲存介質140上可以不在原地修改、蓋寫入、和/或更新經壓縮的資料,如在此所揭露的。儲存模組120可以通過儲存介面121接收用資料U1修改和/或蓋寫入虛擬區塊453X的請求。儲存模組120可以藉由以下各項為該請求服務:a)藉由使用減小模組454來壓縮資料U1,以及b)將包括經壓縮的資料CU1的資料包410B附加在儲存紀錄的當前附加點180處。在圖4D實施例中,資料U1可以被壓縮至1kb,並且這樣可以儲存在兩個儲存單元145(兩個資料包410B)內。資料包410B可以包括對應資料段112,該等資料段包括經壓縮的資料(CU1-0和CU1-1)的對應部分。資料包410B可以進一步包括持久化壓縮元資料415B,該持久化壓縮元資料表明未壓縮的資料U1的未壓縮的大小(4kb)、經壓縮的資料CU1的大小(1kb)、用於引用經壓縮的資料CU1的LID(LID 0和1)、虛擬區塊453X的未映射的LID(LID 2-7)、壓縮演算法、資料簽章(多個)等等,如上文所揭露的。
可以藉由使用持久化元資料414B和/或前向映射圖132將資 料包410B與對應LID 0和1綁定,如在此所揭露的。虛擬區塊453X的其他LID可以是未指派的。如上文所揭露的,未映射、未指派、未綁定、和/或解除配置LID可以包括從前向映射圖132移除LID。相應地,為寫入虛擬區塊453X的資料U1的請求服務可以進一步包括記錄LID 2-7不在使用中(未綁定)。在某些實施例中,記錄LID 2-7的狀態包括從前向映射圖132移除LID 2-7和/或包括與包括經壓縮的資料CU1的包410B中的一個或多個中的LID 2-7的狀態有關的持久化壓縮元資料415B。可替代地,或另外,儲存模組120可以藉由使用儲存裝置141上的儲存紀錄內所儲存的持久化解除配置元資料247來將LID 2-7未映射。作為確定虛擬區塊453X已經縮小(例如,使用比虛擬區塊453X的之前版本更少的區塊或LID)的響應,可以對持久化解除配置元資料247進行儲存。虛擬區塊453X會由於尤其虛擬區塊453X中所儲存的資料的資料壓縮特性而縮小。如上文所展示的,壓縮引擎456可以能夠將資料U0在大小上向下壓縮至3kb,但可以能夠將資料U1向下壓縮至1kb。這樣,當資料U1被寫入至區塊453X時,經壓縮的資料CU1比經壓縮的資料CU0佔據更少的儲存單元145(以及相應LID)。因此,之前包括在前向映射圖160中的LID 2-5不再使用。持久化解除配置元資料247可以標識不再使用的LID 2-5。可替代地,或另外,持久化解除配置元資料247可以標識與虛擬區塊453X相關聯的未指派的所有LID(例如,標識LID 2-7)。
如圖4D中所展示的,將經壓縮的資料U0和/或U1寫入至儲存介質140可以包括將多個不同的資料包410A和/或410B儲存在對應儲存單元145內,該等儲存單元可以跨多個儲存分區、行154、儲存陣列 150A-N、和/或儲存庫158A-N。因此,並如上文所揭露的,儲存模組120可以被配置成用於藉由使用尤其原子儲存模組236來自動地儲存資料包410A和/或410B。
容量模組128可以確定與邏輯位址空間122的LID和/或VBAS 452的虛擬區塊453有關的狀態資訊。容量模組126可以響應於經由介面121所接收到的請求提供與LID和/或虛擬區塊453有關的狀態資訊。可替代地,或另外,容量模組126可以被配置成用於使用回檔介面、推送介面、公開介面等等向儲存客戶端406公開狀態資訊。容量模組126所提供的狀態資訊可以包括但不限於:LID目前是否用於引用儲存介質140上所儲存的資料,LID是否存在於前向映射圖132內,LID所使用的物理儲存容量,LID的範圍等等。容量模組126可以進一步被配置成用於為LID集合、組、和/或容器(如VBAS 452的虛擬區塊453)提供這種狀態資訊。如上文所揭露的,虛擬區塊453所使用的物理儲存容量可以對應於用於儲存虛擬區塊453的資料的儲存區塊(LID)的數量。容量模組126可以進一步被配置成用於為儲存介質140和/或儲存裝置141提供物理儲存容量使用資訊,如儲存介質140上可獲得的物理儲存容量的量,邏輯位址空間122和/或VBAS 452目前所使用的總物理儲存容量等等。
容量模組126可以藉由使用持久化、死機安全的元資料130(如前向映射圖132)來確定LID和/或虛擬區塊453狀態資訊。如在此所揭露的,前向映射圖132被配置成用於保持LID、虛擬區塊453、和儲存裝置141(儲存單元145)上所儲存的資料之間的關聯性。前向映射圖132中存在的LID與儲存裝置141上所儲存的資料綁定,並且這樣表示物理儲存 資源使用。前向映射圖132中不存在的LID不與所儲存的資料捆綁,並且這樣不表示物理儲存資源的使用。相應地,邏輯位址空間122的LID和/或VBAS 452的虛擬區塊453所消耗的物理儲存資源可以源於前向映射圖132中所保持的映射資訊(例如,特定LID是否“存在於”前向映射圖132內)。
LAS管理模組124和/或區塊管理模組451可以(藉由使用轉換模組123和/或前向映射圖132)在VBAS 452的虛擬區塊453A-N和邏輯位址空間122的LID之間轉換。因此,邏輯位址空間122可以充當虛擬區塊453A-N和儲存單元145之間的中間映射層。容量模組126可以基於每個前向映射圖132的特定虛擬區塊453A-N的LID和儲存單元145之間的關聯性確定特定虛擬區塊453A-N所消耗的物理儲存資源。參照圖4B實施例,容量模組126可以確定虛擬區塊453A藉由以下各項消耗對應於四個儲存單元145的儲存容量(2kb):a)將區塊453A映射至邏輯位址空間122中的LID 0-7,以及b)確定LID 0-3被指派給儲存單元145(儲存位址13442-13445)以及LID 4-7被未指派。因此,容量模組126可以確定表示4kb的儲存容量的虛擬區塊453A僅消耗儲存介質140上的2kb的儲存容量。儲存模組126可以確定虛擬區塊453B消耗1kb的儲存容量,並且區塊453C消耗4kb的儲存容量。
容量模組126可以被配置成用於藉由對區塊453A-N中的每一個所消耗的物理儲存容量進行求和來確定VBAS 452的虛擬區塊453A-N所消耗的總物理儲存容量。因此,可以藉由從虛擬區塊453A-N所消耗的物理儲存容量減去儲存介質140的全部可用儲存容量來計算儲存裝置141上的可用容量。
圖5係用於提供儲存壓縮服務的方法500的一個實施例的流程圖。方法500、以及在此所揭露的其他方法、過程、和/或操作的各部分可以被體現為電腦程式產品,該電腦程式產品包括非瞬態電腦可讀取儲存介質上所儲存的指令。該等指令可以被配置成致使計算設備執行所揭露之方法、過程、和/或操作的各步驟。可替代地,或另外,方法500、以及在此所揭露的其他方法、過程、和/或操作的各部分可以與特定機器如處理器、儲存介質、硬體控制器(多個)等等關聯。
方法500的步驟510可以包括接收將頁232的資料寫入至儲存介質140的請求。頁232可以具有特定區塊大小,這樣使得頁232表示特定量的儲存容量。頁232可以對應於儲存介質140上的固定數量的區塊(例如,LID集合222中固定數量的LID、固定數量的扇區等等)。在某些實施例中,頁232可以表示特定量的物理儲存容量(例如,16kb),這可以對應於儲存模組120的兩個或更多個區塊的集合(例如,包括邏輯位址空間122的兩個或更多個LID的LID集合222)。相應地,頁232可以包括多個LID,如LID組、集合、範圍、廣度等等。
步驟510的請求可以涉及包括客戶端壓縮模組250的客戶端206。客戶端壓縮模組250可以被配置成用於壓縮頁的資料以供儲存。如上文所揭露的,壓縮頁可以包括但不限於:壓縮頁的資料、將頁的資料去重複、複製頁的資料等等。步驟510可以包括從頁232導出資料集,這樣使得該資料集小於頁232的大小(例如,比頁232所表示的佔據更少數量的區塊、扇區、LID)。步驟510可以包括導出對應於頁232的經壓縮的資料。在某些實施例中,頁232被客戶端206指派為經壓縮的頁。客戶端206可以例如表 明頁232的資料有待壓縮以儲存在儲存介質140上,這樣使得藉由使用客戶端壓縮模組250來為讀取、寫入、和/或修改頁232的操作服務。
在某些實施例中,頁232與邏輯位址空間122的兩個或更多個LID的集合(例如,LID集合222)相關聯或包括該集合。可以保留與頁232相關聯的LID以供客戶端206用於儲存模組120所保持的元資料130(如保留映射圖142、前向映射圖132等等)中。藉由由客戶端206和/或頁232使用而保留並且未與儲存介質140上所儲存的資料綁定的的LID可以被認為不佔據和/或消耗儲存介質140的物理儲存資源。相應地,客戶端206可以在不消耗儲存介質140的物理儲存資源的情況下針對頁232(和/或其他儲存實體)保留邏輯位址空間122的較大區域。
可替代地,或另外,頁232可以與檔案334相關聯。可以根據頁232的物理儲存容量確定該檔案的大小。相應地,檔案334可以表示與頁232相等量的物理儲存容量(例如,頁232和檔案334都可以表示16kb的儲存容量)。可以由儲存模組120的檔案系統模組334對檔案334進行管理,如在此所揭露的。
步驟520可以包括指示儲存模組120將頁的資料寫入至儲存介質140。在步驟520所寫入的資料可以包括大小減小的資料集,如源自頁232的未壓縮的資料的經壓縮的資料,如上文所揭露的。步驟520可以包括將頁的資料寫入至比頁232所表示的區塊、扇區和/或LID的量更少的區塊、扇區、和/或LID。步驟520可以包括發出將資料寫入至特定區塊集合(例如,與頁232相關聯的LID子集)的寫入請求。如上文所揭露的,該請求可以指定比頁232所表示的固定數量的區塊更少的區塊。在某些實施例中, 步驟520的請求標識寫入頁232的資料所需的LID子集。可替代地,該請求可以包括與頁232相關聯的整個LID集合(例如,LID集合222中的整個LID範圍),並且大小減小的資料集的實際大小可以源自有待寫入至儲存介質140的資料的偏移和/或長度(例如,可以從有待寫入至該頁的資料的大小所確定)。可替代地,或另外,指示儲存模組120來寫入資料可以包括發出將資料寫入至與頁232相關聯的檔案334的請求,如上文所揭露的。
響應於步驟520,儲存模組120可以a)將對應於頁232的大小減小的資料集(例如,經壓縮的資料)寫入在儲存介質140的一個或多個儲存單元145上,以及b)藉由使用前向映射圖132(例如,藉由將頁232的LID指派給包括頁232的經壓縮的資料的儲存單元145的位址)將頁232映射至儲存單元145。因此,可以通過與頁232相關聯的LID子集將頁232映射至大小減小的資料集。頁232所使用的物理儲存容量可以對應於LID集合222內被映射至儲存單元145內的LID的數量(以及儲存單元145的區塊大小),並且可以排除LID集合222內未映射的LID。在某些實施例中,寫入步驟520進一步包括將LID和/或儲存單元145指派給與頁232相關聯的檔案334,如上文所揭露的。
步驟530可以包括向儲存模組120標識頁232的哪個部分(多個)由於尤其頁資料壓縮而未使用。步驟530可以包括標識頁232所表示的固定數量的區塊中的哪些區塊不在使用中(例如,不包含頁232的經壓縮的資料)。步驟530可以包括向儲存模組120發出標識LID集合222中的對應於由於尤其頁壓縮而未在使用中的頁232的一個或多個LID的提示或消息。步驟530可以包括發出以下各項中的一項或多項:TRIM消息、未映射 消息、解除配置消息、TRIM指示或命令、持久化TRIM指示或命令、以及fallocate消息等等。作為響應,儲存模組120可以被配置成用於在前向映射圖132中將一個或多個LID未映射和/或將持久化解除配置元資料247寫入在儲存介質140上,如上文所揭露的。可替代地,或另外,向儲存模組120標識頁232所表示的固定數量的區塊中的哪些區塊不在使用中可以包括:標識與頁232相關聯的檔案334各部分係空的。在某些實施例中,步驟530包括將fallocate消息發出給標識檔案334的未使用的部分(多個)的偏移和/或長度的檔案系統模組324,如上文所揭露的。儲存模組120可以進一步被配置成用於記錄與頁232相關聯的LID中的一個或多個不包含與經壓縮的資料和/或與頁232相關聯的檔案334的部分(多個)係空的,這可以包括a)從前向映射圖132移除一個或多個表項,b)將持久化元資料247寫入至儲存介質247等等,如上文所描述的。
圖6係用於提供儲存壓縮服務之方法600的另一實施例的流程圖。步驟610可以包括生成經壓縮的頁資料。步驟610可以包括響應於持續頁232和/或將資料寫入至LID組、集合、範圍、和/或廣度的請求生成經壓縮的頁資料。步驟610的頁232可以被定義為具有特定大小,並且這樣可以包括和/或表示儲存介質140上固定數量的扇區。頁232可以對應於多個儲存區塊、扇區、儲存單元145、資料包110等等的物理儲存容量。頁232可以例如表示16kb區塊,該區塊對應於儲存模組120的32個單獨的512位元組扇區(例如,32個LID、儲存單元145、資料包110、區塊等等)。經壓縮的頁資料可以小於頁232所表示的固定數量的扇區(例如,小於16kb)。步驟610的壓縮可以由客戶端壓縮管理器250或350、和/或儲存模組 120的儲存壓縮模組450來實現。
步驟620可以包括將頁232的經壓縮的資料寫入在儲存介質140上,這樣使得經壓縮的資料儲存在比頁232所表示的扇區的數量更少的扇區上。步驟620可以包括將經壓縮的資料儲存至LID集合222的與頁232相關聯的子集。可替代地,或另外,步驟620可以包括將經壓縮的資料儲存在與頁334相關聯的檔案334內,這樣使得檔案334的一部分保持空和/或未使用。
步驟630可以包括記錄頁232的哪些扇區未在使用中。步驟630可以包括a)從前向映射圖132移除與頁334相關聯的表項和/或b)(藉由使用儲存模組120和/或元資料管理器126)將持久化元資料247寫入至標識頁232的未使用的扇區的儲存介質140。持久化元資料247可以標識LID集合222的與頁232相關聯的哪些LID係未指派的。在某些實施例中,步驟630包括記錄檔案334的與頁232相關聯的哪個部分(多個)係未使用的和/或空的(例如,檔案334的空部分(多個)的偏移和/或長度)。
步驟630包括確定頁232是否已經在儲存介質140上縮小。如在此所揭露的,頁232可以被認為已經響應於確定頁232比頁232的之前版本佔據儲存介質140上更少的容量而縮小。相應地,確定頁232已經響應於確定頁232的經壓縮的資料儲存在比頁232的之前版本更少的區塊、扇區、LID、資料包110、儲存單元145等等內而縮小。步驟630可以包括響應於確定頁232已經縮小而寫入持久化元資料247。如果經壓縮的資料與頁232的之前版本相比佔據同樣或更多的儲存容量,可以不寫入持久化元資料247。
在某些實施例中,步驟630進一步包括確定頁232所使用的物理儲存容量。如上文所揭露的,頁232所使用的物理儲存容量可以基於用於將頁的經壓縮的資料儲存在儲存介質140上的區塊、扇區、LID、資料包110、儲存單元145等等的數量。因此,可以基於頁232的LID和儲存介質140上的資料之間的映射來確定頁232的大小(例如,前向映射圖132中與頁232相關聯的表項134的數量和/或廣度)。未映射、指派、和/或綁定至儲存介質140上的資料的頁232的LID可以不表示頁232的儲存容量使用。相應地,頁232所消耗的物理儲存容量可以包括前向映射圖132的表項134中存在的頁LID並且排除了前向映射圖132中不存在的頁LID(例如,排除了不在前向映射圖132中和/或僅在前向映射圖132的保留表項135中的LID)。在某些實施例中,步驟630可以進一步包括使用前向映射圖132確定多個頁232所消耗的物理儲存容量(和/或邏輯位址空間122的LID範圍和/或廣度),如上文所揭露的。
圖7係用於實現儲存壓縮的方法700的另一實施例之流程圖。步驟710可以包括將VBAS 452呈現給儲存客戶端406。VBAS 452可以包括對應於邏輯位址空間122的對應LID集合的虛擬區塊453。相應地,VBAS 452可以將邏輯位址空間122用作中間轉換層。步驟710可以進一步包括將VBAS 452的區塊453映射至對應LID集合,如在此所揭露的。
步驟720可以包括接收將未壓縮的資料寫入至VBAS 452的虛擬區塊453的請求。可以通過儲存模組120的儲存介面121接收該請求。步驟730可以包括寫入對應於虛擬區塊453的經壓縮的資料,這樣使得與虛擬區塊453相關聯的LID中的一個或多個保持未使用。步驟730可以包括: a)存取對應於虛擬區塊453的未壓縮的資料的經壓縮的資料,b)將經壓縮的資料寫入至儲存介質140上的對應儲存位址(例如,將經壓縮的資料附加至儲存紀錄,如上文所揭露的),以及c)將LID指派給經壓縮的資料,這樣使得映射至虛擬區塊453的LID中的一個或多個保持未指派。步驟730可以進一步包括將持久化元資料247儲存在標識虛擬區塊453的未使用部分(多個)的儲存介質140上(例如,表明虛擬區塊453的哪些LID未在使用中)。
已經參照各示例性實施例進行了揭露。然而,熟習該項技術者將認識到,在不脫離本揭露的範圍的情況下可以對示例性實施例進行改變和修改。例如,可以取決於特定應用或考慮與系統的操作相關聯的任意數量的成本函數以替代性方式實現各操作步驟以及用於實施操作步驟的組件(例如,可以刪除、修改該等步驟中的一項或多項或將其與其他步驟結合)。因此,有待在示意性而非限制性的意義上看待本揭露,並且所有此類修改都旨在包括在其範圍內。同樣,在上文中關於各實施例描述了益處、其他優點、和或問題的解決方案。然而,益處、優點、問題的解決方案、以及會導致任何益處、優點、或解決方案發生或變得更加顯著的任何元素(多個)不應被理解為關鍵的、需要的、或至關重要的特徵或元素。如在此所使用的,術語“包括(comprises)”、“包括(comprising)”及其任何其他變體旨在覆蓋非排他性包含,這樣使得包括一系列元素的方法、物品、或裝置不僅僅包括那些元素並且可以包括其他未清楚地列出或這種過程、方法、系統、物品、或裝置固有的元素。同樣,如在此所使用的,術語“耦合(coupled)”、“耦合(coupling)”及其任何其他變體旨在覆蓋 物理連接、電連接、磁性連接、光學連接、通信連接、功能性連接、和/或其他連接。
另外,如熟習該項技術者將認識到的,本揭露之原理將反映在機器可讀取儲存介質上的電腦程式產品中,該電腦程式產品具有嵌入在儲存介質中的機器可讀取程式碼裝置。可以利用任何有形的、非瞬態機器可讀取儲存介質,包括磁性儲存裝置(硬碟、軟碟等等)、光學儲存裝置(CD-ROM、DVD、藍光光碟等等)、快閃記憶體等等。可以將該等電腦程式指令載入到通用電腦、專用電腦、或另一種可程式資料處理裝置上以產生一機器,這樣使得在該電腦或另一種可程式資料處理裝置上執行的指令創造用於實現所指定的功能的裝置。該等電腦程式指令還可以儲存在機器可讀取記憶體中,該機器可讀取記憶體可以指示電腦或其他可程式資料處理裝置以特定方式運行,這樣使得機器可讀取記憶體中所儲存的指令產生製品,該製品包括實現所指定的功能的實現裝置。還可以將電腦程式指令載入至電腦或另一種可程式資料處理裝置上以致使對該電腦或另一可程式裝置執行一系列操作步驟從而產生電腦實現的過程,這樣使得在電腦或另一可程式裝置上執行的指令提供用於實現所指定的功能的步驟。
雖然已經在各實施例中示出了本揭露的原理,在不背離本揭露的原則和範圍的情況下可以使用特定適用於特定環境和操作要求的結構、安排、比例、元素、材料、組件的許多修改。該等和其他變化和修改都旨在被包括在本揭露內容的範圍內。
100‧‧‧計算系統
101‧‧‧處理資源
102‧‧‧易失性記憶體資源
103‧‧‧非易失性儲存器資源
104‧‧‧通信介面
105‧‧‧網路
106‧‧‧客戶端
120‧‧‧儲存模組
121‧‧‧介面模組
122‧‧‧邏輯位址空間
123‧‧‧轉換模組
124‧‧‧邏輯位址空間(LAS)管理模組
126‧‧‧元資料管理模組
127‧‧‧互連
128‧‧‧容量模組
129‧‧‧儲存控制器
130‧‧‧元資料
132‧‧‧前向映射圖
140‧‧‧儲存介質
141‧‧‧儲存裝置
144‧‧‧儲存位址空間
145‧‧‧儲存單元

Claims (21)

  1. 一種方法,包括:接收一將頁的資料寫入至一非易失性儲存介質的請求,其中,該頁表示一儲存介質上的固定數量的區塊;指示一儲存模組將該頁的資料寫入在該儲存介質的比該頁所表示的該固定數量的區塊更少的區塊上;以及向該儲存模組標識該頁所表示的該固定數量的儲存區塊當中的哪些區塊不包含該頁的資料。
  2. 如申請專利範圍第1項所述之方法,進一步包括壓縮該頁的該資料,其中,指示該儲存模組來寫入該頁的該資料包括指示該儲存模組來寫入該頁的經壓縮的資料。
  3. 如申請專利範圍第1項所述之方法,其中,該頁被一客戶端指定為一經壓縮的頁。
  4. 如申請專利範圍第1項所述之方法,其中,該頁對應於一檔案,並且其中,指示該儲存模組來寫入該頁的該資料包括:發出一將該頁的該資料寫入至該檔案的請求。
  5. 如申請專利範圍第4項所述之方法,其中,向該儲存模組標識該頁所表示的該固定數量的儲存區塊當中的哪些區塊不包含該頁的資料包括標識該檔案的一空部分。
  6. 如申請專利範圍第1項所述之方法,其中,向該儲存模組標識該固定數量的區塊中的哪些區塊不包含該頁的資料包括:向該儲存模組提供一標識不包含該頁的資料的區塊的解除配置消息。
  7. 一種裝置,包括一壓縮管理器,該壓縮管理器接收一將頁持久化的請求,其中,該頁被定義為具有固定量的儲存容量;一減小模組,該減小模組從該頁導出一資料集,其中,該資料集小於該固定量的儲存容量;一檔案分配模組,該檔案分配模組發出一將該資料集寫入至與該頁相關聯的檔案的請求,並且向一檔案系統標識該檔案的一空部分。
  8. 如申請專利範圍第7項所述之裝置,其中,該檔案分配模組指定該檔案的該空部分的偏移和長度。
  9. 如申請專利範圍第7項所述之裝置,其中,該檔案分配模組對該檔案的未使用的邏輯區塊位址進行標識。
  10. 如申請專利範圍第7項所述之裝置,其中,該減小模組藉由壓縮該頁的資料導出該資料集。
  11. 一種系統,包括:一壓縮代理,該壓縮代理生成頁的經壓縮的資料,其中,將該頁的大小制定為包括在一非易失性儲存介質上的固定數量的扇區;一儲存模組,該儲存模組將該頁的該經壓縮的資料寫入在該非易失性儲存介質的比該固定數量的扇區更少的扇區上;以及一元資料管理模組,該元資料管理模組記錄該頁所對應的哪些扇區未在使用中。
  12. 如申請專利範圍第11項所述之系統,其中,該頁與一邏輯位址空間的複數個識別符相關聯,其中,該等識別符中的一個或多個識別符被指派 給該非易失性儲存介質上所儲存的該頁的經壓縮的資料,並且其中,該等識別符中的一個或多個識別符係未指派的。
  13. 如申請專利範圍第11項所述之系統,其中,該頁包括一邏輯位址集合,該裝置進一步包括一邏輯位址空間管理模組,該邏輯位址空間管理模組保持一將該邏輯位址集合的第一子集映射至該儲存介質上的儲存位址的索引,使得該邏輯位址集合的一第二子集係未映射的。
  14. 如申請專利範圍第13項所述之系統,進一步包括一容量模組,該容量模組基於該索引的映射確定該頁所使用的一物理儲存容量。
  15. 如申請專利範圍第13項所述之系統,其中,該元資料管理模組藉由從該索引移除與該頁的該邏輯位址集合有關的一個或多個映射來記錄該頁的哪些扇區未在使用中。
  16. 如申請專利範圍第11項所述之系統,其中,該元資料管理模組指示該儲存模組將持久化元資料寫入在該非易失性儲存介質上,其中,該持久化元資料標識該頁的未在使用中的扇區。
  17. 一種裝置,包括一轉換模組,該轉換模組將一邏輯位址空間的邏輯識別符映射至一儲存裝置上的儲存單元;一儲存模組,該儲存模組將頁的與該邏輯位址空間的一邏輯識別符集合相關聯的資料寫入至與該頁相關聯的該等邏輯識別符的一子集;以及一邏輯位址空間管理模組,該邏輯位址空間管理模組記錄與該頁相關聯的該等邏輯識別符中的一個或多個邏輯識別符係未映射的。
  18. 如申請專利範圍第17項所述之裝置,其中,該頁的該資料包括經壓 縮的資料,該裝置進一步包括一生成該頁的該經壓縮的資料的壓縮代理。
  19. 如申請專利範圍第17項所述之裝置,其中,該轉換模組將該邏輯識別符子集指派給儲存該頁的該資料的對應儲存單元。
  20. 如申請專利範圍第19項所述之裝置,進一步包括一容量模組,該容量模組基於該邏輯識別符子集和該等對應儲存單元之間的該等指派來確定該儲存裝置上的該頁所消耗的儲存容量。
  21. 如申請專利範圍第17項所述之裝置,其中,該邏輯位址管理模組移除與該頁相關聯的一特定邏輯識別符和該儲存裝置上的一儲存單元之間的一映射,並且將表明該特定邏輯識別符被未映射的持久化元資料寫入在該儲存裝置上。
TW104106013A 2014-07-17 2015-02-25 用於儲存壓縮的系統和方法 TW201604687A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/334,502 US9875180B2 (en) 2014-02-24 2014-07-17 Systems and methods for managing storage compression operations

Publications (1)

Publication Number Publication Date
TW201604687A true TW201604687A (zh) 2016-02-01

Family

ID=55809644

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104106013A TW201604687A (zh) 2014-07-17 2015-02-25 用於儲存壓縮的系統和方法

Country Status (1)

Country Link
TW (1) TW201604687A (zh)

Similar Documents

Publication Publication Date Title
US9875180B2 (en) Systems and methods for managing storage compression operations
US10558561B2 (en) Systems and methods for storage metadata management
US9251058B2 (en) Servicing non-block storage requests
US9342256B2 (en) Epoch based storage management for a storage device
US10102075B2 (en) Systems and methods for storage collision management
US9075557B2 (en) Virtual channel for data transfers between devices
US9483487B2 (en) Eliminating duplicate data by sharing file system extents
US10073630B2 (en) Systems and methods for log coordination
US9442844B2 (en) Apparatus, system, and method for a storage layer
US8898376B2 (en) Apparatus, system, and method for grouping data stored on an array of solid-state storage elements
US10127166B2 (en) Data storage controller with multiple pipelines
US9842128B2 (en) Systems and methods for atomic storage operations
US8103847B2 (en) Storage virtual containers
US10013354B2 (en) Apparatus, system, and method for atomic storage operations
US11030156B2 (en) Key-value store with partial data access
JP6290405B2 (ja) 記憶一貫性のためのシステムおよび方法
US20130185508A1 (en) Systems and methods for managing cache admission
US10338833B1 (en) Method for achieving sequential I/O performance from a random workload
US10956071B2 (en) Container key value store for data storage devices
JP2012525633A (ja) フラッシュベースのデータ保存ストレージシステム
US9946463B2 (en) Compression of indirection tables
JP2018181171A (ja) ストレージ制御装置、及びストレージ制御プログラム
TW201604687A (zh) 用於儲存壓縮的系統和方法