TW201937361A - 儲存元件 - Google Patents
儲存元件 Download PDFInfo
- Publication number
- TW201937361A TW201937361A TW108119893A TW108119893A TW201937361A TW 201937361 A TW201937361 A TW 201937361A TW 108119893 A TW108119893 A TW 108119893A TW 108119893 A TW108119893 A TW 108119893A TW 201937361 A TW201937361 A TW 201937361A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- metadata
- storage
- storage element
- command
- Prior art date
Links
Classifications
-
- 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/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- 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/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- 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/1727—Details of free space management performed by the file system
-
- 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/182—Distributed 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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/0683—Plurality of storage devices
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3059—Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/16—General purpose computing application
- G06F2212/163—Server or database system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本發明概念的實施例例如藉由減少CPU與儲存元件間的資料移動、及藉由對資料壓縮的儲存器內支援而增加下伏儲存元件的可用容量來提高儲存方案的效能、能量效率、及容量。實施例包括由主機端側命令啟動並根據主機所規定元資料的用於自主儲存器內空間壓縮的儲存裝置及方法。空間壓縮引擎可用作儲存元件內的獨立模組或邏輯區段,所述空間壓縮引擎可遷移儲存元件內的資料,藉此騰出容量並使預先存在的資料更緊湊。空間壓縮引擎可引起自壓縮操作、自壓縮及剪裁操作、移動及壓縮操作、及/或合併及壓縮操作。空間壓縮引擎可將操作的完成通知給主機。
Description
本發明概念是有關於資料儲存,且更具體而言是有關於一種資料的自主空間壓縮之儲存裝置以及方法。
預期在未來幾年內,數以億計的感測器將被部署於世界各地並連接至物聯網(Internet Of Things,IOT)。由此種感測器所收集的資料量將被至少暫時地以及在某些情形中永久地儲存。因此物聯網將依賴於龐大的儲存資料庫及下伏儲存元件(underlying storage device)。儲存空間壓縮是現代資料儲存的重要態樣。舉例而言,NoSQL資料庫系統週期性地合併資料庫檔案及/或表以減小搜索覆蓋區並使自由空間最大化。日誌結構式檔案系統(例如,只追加檔案系統)有時實行段清潔(segment cleaning)以提高用於順序寫入的連續空間可用性。其他傳統途徑包括磁碟重整(disk defragmentation)過程,所述磁碟重整過程清理無效空間以達成更佳效能。
傳統途徑通常在資料壓縮時引起主機中央處理單元(CPU)與儲存元件之間密集的讀取及/或寫入活動。舉例而言,分類字符串表(Sorted Strings Table,SSTable)可在Apache CassandraTM
(開源分佈式資料庫管理系統)中進行壓縮,但主機中央處理單元與儲存元件之間密集的通訊活動可為效能的限制因素。再舉例而言,Redis(開源密鑰值快取及儲存)中的只追加檔案(Append Only File,AOF)檔案重寫可因通訊間接費用而對規模提出挑戰。本發明概念的實施例解決先前技術中的該些及其他限制。
本發明概念的實施例可包括一種具有空間壓縮引擎的儲存元件。所述儲存元件可更包括一或多個資料儲存區段以及通訊及路由邏輯區段,所述通訊及路由邏輯區段用以接收及路由來自主機的包含元資料的資料壓縮命令。所述空間壓縮引擎可以通訊方式耦合至所述通訊及路由邏輯區段以及所述一或多個資料儲存區段。所述空間壓縮引擎可用以自所述通訊及路由邏輯區段接收包含所述元資料的所述資料壓縮命令,並基於至少自所述主機接收的所述元資料及所述資料壓縮命令而壓縮所述一或多個資料儲存區段中的預先存在的所儲存資料。
本發明概念的實施例可包括一種用於壓縮儲存元件中的空間的由電腦實行的方法。所述方法可包括:由所述儲存元件的通訊及路由邏輯區段自主機接收包含元資料的資料壓縮命令。所述方法可包括:由所述通訊及路由邏輯區段將所述資料壓縮命令路由至空間壓縮引擎。所述方法可包括:由所述空間壓縮引擎接收包含所述元資料的所述資料壓縮命令。所述方法可包括:由所述空間壓縮引擎基於至少自所述主機接收的所述元資料及所述資料壓縮命令而壓縮所述儲存元件的一或多個資料儲存區段中的預先存在的所儲存資料。
現在將詳細參照本發明概念的實施例,在附圖中說明所述實施例的實例。在以下詳細說明中,闡述眾多具體細節以使得能夠透徹理解本發明概念。然而,應理解,此項技術中具有通常知識者可實踐本發明概念而無需該些具體細節。在其他情況下,眾所習知的方法、程序、部件、電路、及網路不再詳細闡述,以免不必要地使所述實施例的態樣模糊不清。
應理解,儘管在本文中可使用用語第一、第二等來闡述各種組件,但該些組件不應受限於該些用語。該些用語僅用於區分各個組件。舉例而言,在不背離本發明概念的範圍的條件下,第一邏輯區段可被稱為第二邏輯區段,且類似地,第二邏輯區段可被稱為第一邏輯區段。
本文中,在本發明概念的說明中所使用的術語僅用於闡述特定實施例而非旨在限制本發明概念。除非上下文清楚地另外指明,否則在本發明概念的說明及隨附申請專利範圍中所使用的單數形式「一(a、an)」及「所述(the)」旨在亦包括複數形式。亦應理解,本文所用的用語「及/或」指代並囊括相關聯列出項中一或多個項的任意及所有可能的組合。更應理解,當在本說明書中使用用語「包括(comprise及/或comprising)」時,是指出所陳述特徵、整數、步驟、操作、組件、及/或部件的存在,但並不排除一或多個其他特徵、整數、步驟、操作、組件、部件、及/或其群組的存在或添加。圖式所示部件及特徵未必按比例繪製。
本發明概念的實施例例如藉由以下方式來提高儲存方案的效能、能量效率、及容量:減少中央處理單元與儲存元件之間的資料移動以及藉由對資料壓縮的儲存器內支援(in-storage support)來增加下伏儲存元件的可用容量。實施例包括由主機端側命令啟動及根據由主機所規定的元資料的用於自主儲存器內空間壓縮的儲存裝置及方法。
空間壓縮引擎可如下文進一步所述用作儲存元件內的獨立模組或邏輯區段,所述空間壓縮引擎可遷移儲存元件內的資料,藉此騰出容量並使得預先存在的資料更緊湊。空間壓縮引擎可如亦在下文詳細所述引起自壓縮操作、自壓縮及剪裁操作、移動及壓縮操作、及/或合併及壓縮操作。空間壓縮引擎可將操作的完成通知給主機。記憶體頻寬及主機-中央處理單元消耗工作可卸載至智慧型儲存元件以更佳地利用儲存元件的內部頻寬及低功耗。換言之,可因應於來自主機的命令及元資料而以儲存元件內的空間壓縮引擎及過程來替代此種頻寬及主機-中央處理單元消耗工作。
圖1是包括主機層105及元件層110的自主空間壓縮系統100的示例性方塊圖。元件層110可包括根據本發明概念的實施例具有空間壓縮引擎145以用於壓縮資料的儲存元件130。空間壓縮引擎145可包括空間壓縮邏輯區段147及/或空間壓縮儲存區段149。在一個實施例中,空間壓縮邏輯區段147可包括中央處理單元(central processing unit,CPU)、現場可程式化閘陣列(Field Programmable Gate Array,FPGA)、應用專用積體電路(Application Specific Integrated Circuit,ASIC)等,且空間壓縮儲存區段149可包括隨機存取記憶體(Random Access Memory,RAM)、快閃記憶體、相變記憶體(Phase-Change Memory,PCM)等。儲存元件130可包括例如快閃、相變記憶體(PCM)、自旋轉移力矩隨機存取記憶體(spin transfer torque random access memory,STT-RAM)等任何合適類型的非揮發性記憶體。儲存元件130可例如為固態硬碟(solid state drive,SSD)儲存元件。主機層105可包括主機102,例如主機處理器102。主機處理器102可例如為中央處理單元(CPU)。然而,應理解,主機處理器102可為任何合適種類的處理器。亦應理解,主機102可包括軟體過程(software process)、韌體區段、硬體單元、或其任何組合。
主機102可包括一或多個應用程式115以及元件驅動器120。所述一或多個應用程式115可包括例如檔案系統、資料庫、一或多個過程等。所述一或多個應用程式115可向元件驅動器120發出一或多個命令呼叫125。舉例而言,所述一或多個命令呼叫125可包括資料壓縮命令呼叫125。資料壓縮命令呼叫125可藉由包括特別指定元件、命令字符串、及元資料的Ioctl來發出。舉例而言,Ioctl可呈Ioctl(dev, 「COMPACT」, metadata, . . .)的形式。應理解,在不背離本文所揭露的本發明概念的條件下,資料壓縮命令呼叫125可採用其他合適的形式或可以其他合適的方式發出。舉例而言,壓縮命令可經由網路服務介面、應用程式設計介面(application programming interface,API)等來發出。
主機102可經由介面152與儲存元件130通訊。介面152可包括序列先進技術附接(serial advanced technology attachment,SATA)介面、序列附接小型電腦系統介面(serial attached small computer system interface,serial attached SCSI或SAS)、非揮發性記憶體主機控制器介面規範表達(non-volatile memory host controller interface specification express,NVMe)介面、乙太網路介面(例如10G/40G/100Gu乙太網路介面)、光纖通道(Fibre Channel,FC)介面、無限頻帶介面、遠端直接記憶存取(remote direct memory access,RDMA)介面等。主機102的元件驅動器120可接收資料壓縮命令呼叫125。元件驅動器120可產生包含元資料155的命令150,命令150可自主機層105到達元件層110而經由介面152被傳輸至儲存元件130。
藉由此種方式,儲存元件130可根據在主機層105上所確定的應用程式所定義的壓縮參數自身的資料結構來繼承使用者及/或應用程式所定義的壓縮參數。儲存元件130的下層快閃轉譯層(flash translation layer,FTL)(圖中未示出)或快閃廢料收集器(garbage collector,GC)(圖中未示出)無需知曉使用者及/或應用程式定義的壓縮參數,且反之亦然。更確切而言,空間壓縮引擎145可繼承來自主機的參數並基於此種參數在儲存元件130內自主地實行壓縮。因此,空間壓縮引擎145亦無需知曉快閃轉譯層或快閃廢料收集器,而是可位於硬體及/或軟體堆疊中的較高層。命令150及相關聯元資料155在下文中詳細闡述。
儲存元件130可包括通訊及路由邏輯區段140。通訊及路由邏輯區段140可自主機102的元件驅動器120接收命令150及相關聯元資料155。因應於命令150與資料壓縮命令呼叫(例如,125)相關聯,通訊及路由邏輯區段140可經由線160而將命令150路由至空間壓縮引擎145。
空間壓縮引擎145可經由線160及/或170而以通訊方式耦合至通訊及路由邏輯區段140,並經由線165而以通訊方式耦合至實體儲存區段135。實體儲存區段135可包括一或多個資料儲存區段,例如一或多個非揮發性記憶體區段134及/或一或多個揮發性記憶體區段136。實體儲存區段135可包括一或多個處理器132。所述一或多個處理器132可包括一或多個微處理器及/或中央處理單元(CPU)。空間壓縮引擎145可自通訊及路由邏輯區段140接收包含元資料155的資料壓縮命令150。空間壓縮邏輯區段147可處理資料壓縮命令150及/或元資料155。空間壓縮儲存區段149可儲存資料壓縮命令150及/或元資料155。空間壓縮引擎145可如下文進一步詳細所述基於至少自主機102接收的元資料155及資料壓縮命令150而壓縮實體儲存區段135中的預先存在的所儲存資料。空間壓縮引擎145可產生並傳輸答覆170至通訊及路由邏輯區段140,通訊及路由邏輯區段140可發送答覆175至主機的元件驅動器120。答覆170及/或175可例如指示儲存壓縮請求的成功或失敗。
通訊及路由邏輯區段140可經由正規路徑180及185而路由非壓縮相關命令(例如,任何與資料壓縮或空間壓縮引擎145無關的命令)。換言之,與空間壓縮無關聯的所有其他命令可由通訊及路由邏輯區段140直接路由至實體儲存區段135,其中答覆經由正規路徑185而被發送回至通訊及路由邏輯區段140並且然後作為答覆175而返回至主機102的元件驅動器120。
圖2是包含元資料155的命令150的示例性方塊圖,元資料155與由圖1所示儲存元件130經由介面152所接收的物件指標205、來源資料位址215、及新資料位址220相關聯。命令150可為資料壓縮命令150。元資料155可包括物件指標205、一或多個來源資料位址215、及/或一或多個新資料位址220。物件指標205可指向可儲存於儲存元件130上的物件210,並可包括預先存在的所儲存資料222。預先存在的所儲存資料222可在命令150產生之前存在於在儲存元件130中所儲存的物件210中。無效資料225亦可在命令150產生之前存在於在儲存元件130中所儲存的物件210中。
空間壓縮引擎145(圖1所示)能夠使與所述一或多個來源資料位址215對應的預先存在的所儲存資料222的一或多個子集(例如,217)遷移至物件210內與所述一或多個新資料位址220對應的新位置226。空間壓縮引擎145(圖1所示)能夠使與所述一或多個來源資料位址215對應的預先存在的所儲存資料222的另外一或多個子集(例如,219)遷移至物件210內與所述一或多個新資料位址220對應的新位置226。無效資料225可被捨棄以騰出物件210內的空間,藉此提供額外空白空間230。物件指標205可在此種遷移之前及之後指向相同物件210。
在某些實施例中,物件210可為檔案210。舉例而言,物件210可為檔案系統、資料庫、密鑰儲存器等內的檔案210。在所示實例中,一或多個來源資料位址215可對應於檔案210內的邏輯區塊位址(logical block addresses,LBAs)第一範圍217及檔案210內的邏輯區塊位址第二範圍219。所述一或多個新資料位址220可對應於檔案210內的邏輯區塊位址第三範圍226。舉例而言,第一範圍217可對應於邏輯區塊位址1-400,第二範圍219可對應於邏輯區塊位址1000-1100,且邏輯區塊位址第三範圍226可對應於邏輯區塊位址4000-4500。應理解,預先存在的所儲存資料及相關聯邏輯區塊位址範圍的任何合適數目的子集可存在於檔案210中。在資料遷移之後,某些預先存在的所儲存資料可位於檔案210的不同部分中,而其他預先存在的所儲存資料可位於檔案210的相同部分中。
在資料遷移之後,空白空間230可至少部分地由於無效資料225被捨棄而存在於檔案210的末端或末尾。遷移前的日誌末尾235可在遷移後調整至新位置240。因此,壓縮可基於至少自主機102(圖1所示)接收的命令150及元資料155而重組檔案210使得有效資料222邏輯上連續地組織,且自由或空白空間可邏輯上連續地組織。儲存元件130可在內部處置資料遷移任務並在完成時對主機102(圖1所示)作出答覆。
圖3是由圖1所示儲存元件130經由介面152所接收的包含元資料155的命令150的示例性方塊圖,元資料155與物件指標305相關聯。命令150可為資料壓縮命令150。元資料155可包括物件指標305。物件指標305可指向可儲存於儲存元件130上的物件310,並可包括預先存在的所儲存資料315。預先存在的所儲存資料315可在命令150產生之前存在於在儲存元件130中所儲存的物件310中。空間壓縮引擎145(圖1所示)能夠如下文進一步所述使預先存在的所儲存資料315的一或多個子集遷移至物件310內的新位置。
物件310可為包括一或多個頁面(例如,頁面1至N)的資料庫表310。所述一或多個頁面中的每一者可包括一或多個有效記錄(例如,有效R1、有效R2等)及/或一或多個未使用及/或無效表項(例如,320、322、及/或325)。空間壓縮引擎145(圖1所示)能夠使所述一或多個頁面(例如,頁面1至N)中的每一者的所述一或多個有效記錄(例如,有效R1、有效R2等)在對應頁面(例如,頁面1至N)中的每一者內重新排列成邏輯上連續的排列。
舉例而言,如資料庫表310的預先存在的資料315的頁面1中所示,有效記錄R1之後是未使用及/或無效空間320,未使用及/或無效空間320之後是有效記錄R2,有效記錄R2之後是未使用空間322。在空間壓縮引擎145(圖1所示)將資料重新排列成所重新排列的資料317之後,頁面1可較之前以不同方式進行排列。具體而言,頁面1可包括有效記錄R1、之後是有效記錄R2、之後是未使用空間330。未使用空間中的某些或全部可如在335處所示被剪裁掉並釋放,以騰出頁面1內的更多空間。
再舉例而言,如資料庫表310的預先存在的所儲存資料315的頁面N中所示,有效記錄R1之後是未使用空間325,未使用空間325之後是有效記錄R3,有效記錄R3之後是有效記錄R2。在空間壓縮引擎145(圖1所示)將資料重新排列成所重新排列的資料317之後,頁面N可較之前以不同方式進行排列。具體而言,頁面N可包括有效記錄R1、之後是有效記錄R2、之後是有效記錄R3。頁面N的未使用空間中的某些或全部可如在340處所示被剪裁掉並釋放,以騰出頁面N內的更多空間。例如頁標頭、目錄結構等內部元資料可在資料庫表310內被更新。
因此,空間壓縮引擎145(圖1所示)能夠使所述一或多個頁面(例如,頁面1至N)中的每一者的所述一或多個未使用及/或無效表項(例如,320、322、及/或325)在對應頁面(例如,頁面1至N)中的每一者內重新排列成邏輯上連續的排列。應理解,可將任何合適數目的有效記錄在每一頁面內重新排列成邏輯上連續的排列。空間壓縮引擎145(圖1所示)能夠使所述一或多個頁面(例如,頁面1至N)中的每一者的所述一或多個未使用及/或無效表項(例如,320、322、及/或325)自資料庫表310剪裁掉或釋放。亦應理解,任何合適的未使用空間可被剪裁掉或釋放以騰出每一頁面內的額外空間。壓縮可基於至少自主機102(圖1所示)接收的命令150及元資料155而改善資料庫表310的狀態,使得有效記錄邏輯上連續地組織且未使用記錄被剪裁掉或釋放以騰出資料庫表310中的空間。儲存元件130可在內部處置資料壓縮任務並在完成時對主機102(圖1所示)作出答覆。
圖4是由圖1所示儲存元件130經由介面152所接收的包含元資料155的命令150的示例性方塊圖,元資料155與第一物件指標405及第二物件指標415相關聯。命令150可為資料壓縮命令150。元資料155可包括第一物件指標405,第一物件指標405可指向第一物件,例如AOF檔案410。元資料155可包括第二物件指標415,第二物件指標415可指向第二物件,例如AOF檔案420。第一AOF檔案410及第二AOF檔案420可儲存於儲存元件130上。此實施例中的壓縮可涉及將有效資料自第一AOF檔案410移動至第二AOF檔案420,藉此重組原始物件。然後可刪除原始AOF檔案410。
第一AOF檔案410可包括預先存在的所儲存資料425。預先存在的所儲存資料425可在命令150產生之前存在於在儲存元件130中所儲存的第一AOF檔案410中。空間壓縮引擎145(圖1所示)能夠使第一物件410中預先存在的所儲存資料425的一或多個子集(例如,U12-A、U9-B、及/或U10-C)遷移至第二物件420。第一AOF檔案410中預先存在的所儲存資料425可包括一或多個帶時戳記錄(timestamped record)(例如,W1-A、W2-B、W3-D、U4-A、U5-C、W6-D、U7-B、U8-C、U9-B、U10-C、D11-D、及U12-A),其中‘W’表示寫入操作,‘U’表示更新操作,‘D’表示刪除操作,且數字1至12表示記錄的時戳,所述記錄可在第一AOF檔案410中以時間次序排列。字母‘A’表示資料的第一唯一密鑰或類型,字母‘B’表示資料的第二唯一密鑰或類型,字母‘C’表示資料的第三唯一密鑰或類型,且字母‘D’表示資料的第四唯一密鑰或類型。舉例而言,W1-A、U4-A、及U12-A可與資料的相同唯一密鑰或類型相關聯。因此,各種操作在AOF檔案內交錯。應理解,第一AOF檔案410可包括表示任何合適數目的操作的任何合適數目的記錄、及與每一記錄相關聯的任何合適種類的時戳。亦應理解,第一AOF檔案410可包括資料的任何合適數目的唯一密鑰或類型。
空間壓縮引擎145(圖1所示)能夠使第一AOF檔案410的所述一或多個帶時戳記錄425的子集(例如,W1-A、U4-A、及U12-A)縮成單一帶時戳記錄(例如,U12-A)並儲存於第二AOF檔案420中。再舉例而言,空間壓縮引擎145(圖1所示)能夠使第一AOF檔案410的所述一或多個帶時戳記錄425的另一子集(例如,W2-B、U7-B、及U9-B)縮成單一帶時戳記錄(例如,U9-B)並儲存於第二AOF檔案420中。又舉例而言,空間壓縮引擎145(圖1所示)能夠使第一AOF檔案410的所述一或多個帶時戳記錄425的再一子集(例如,W3-C、U5-C、U8-C、及U10-C)縮成單一帶時戳記錄(例如,U10-C)並儲存於第二AOF檔案420中。關於由字母‘D’所表示的資料的唯一密鑰或類型,由於對資料的此種密鑰或類型的最後記錄為刪除(例如,D11-D),因此與由字母‘D’所表示的資料的此種唯一密鑰或類型相關聯的記錄可被捨棄,且不需要複製或縮至第二AOF檔案420上。
因此,在例如Redis等先進的密鑰值快取儲存中,壓縮可基於至少自主機102(圖1所示)接收的命令150及元資料155而將第一AOF檔案410壓縮至第二AOF檔案420中。在某些實施例中,AOF檔案可含有具有數以百萬計的相關聯操作的數以百萬計的記錄,AOF檔案可被壓縮至含有少得多的記錄及相關聯操作、甚至壓縮至以數千計而非數百萬計。儲存元件130可在內部處置資料壓縮任務並在完成時對主機102(圖1所示)作出答覆。
圖5是由圖1所示儲存元件所接收的包含元資料的命令的示例性方塊圖,所述元資料與第一物件指標505、第二物件指標515、及第三物件指標525相關聯。命令150可為資料壓縮命令150。元資料155可包括物件指標505、物件指標515、及/或物件指標525。在某些實施例中,物件指標(例如,505、515、及525)可各自與NoSQL資料庫相關聯。物件指標(例如,505、515、及525)可各自指向資料庫表,例如Cassandra、Hbase、LevelDB中的分類字符串表或任何合適種類的資料庫表。與分類字符串表相關聯的佈局資訊可闡述密鑰值對如何儲存於儲存元件130上。
物件指標505可指向可儲存於儲存元件130上的物件510,並可包括預先存在的所儲存資料的第一部分(例如,密鑰545、值540、及/或過期值535)。預先存在的所儲存資料的第一部分(例如,密鑰545、值540、及/或過期值535)可在命令150產生之前存在於在儲存元件130中所儲存的物件510中。物件指標515可指向可儲存於儲存元件130上的另一物件520,並可包括預先存在的所儲存資料的第二部分(例如,密鑰547、值555、及/或過期值550)。預先存在的所儲存資料的第二部分(例如,密鑰547、值555、及/或過期值550)可在命令150產生之前存在於在儲存元件130中所儲存的物件520中。物件指標525可指向可被預先分配及/或儲存於儲存元件130上的物件530。
空間壓縮引擎145(圖1所示)能夠如下文進一步所述使預先存在的所儲存資料的第一部分(例如,密鑰545、值540、及/或過期值535)的一或多個子集(例如,值540及對應密鑰545)遷移至第三物件530。空間壓縮引擎145(圖1所示)能夠使第二物件520中預先存在的所儲存資料的第二部分(例如,密鑰547、值555、及/或過期值550)的一或多個子集(例如,值555及對應密鑰547)遷移至第三物件530。
第一物件510可對應於第一分類字符串表(SSTable)510。第一分類字符串表510中預先存在的所儲存資料的第一部分可包括一或多個密鑰545、一或多個值540、及/或一或多個過期值535。第二物件520可對應於第二分類字符串表520。第二分類字符串表520中預先存在的所儲存資料的第二部分可包括一或多個值555及對應的一或多個密鑰547。第二分類字符串表520中預先存在的所儲存資料的第二部分亦可包括一或多個過期值550及對應的一或多個密鑰547。第三物件530可對應於第三分類字符串表530,第三分類字符串表530可預先分配於儲存元件130上以用於寫入新的經合併的分類字符串表。
空間壓縮引擎145(圖1所示)能夠使第一分類字符串表510的所述一或多個值540及對應的一或多個密鑰545遷移至第三分類字符串表530。類似地,空間壓縮引擎145(圖1所示)能夠使第二分類字符串表520的所述一或多個值555及對應的一或多個密鑰547遷移至第三分類字符串表530。因此,被壓縮的密鑰值可在560處被寫入新的分類字符串表530。換言之,壓縮可合併多個物件、移除輸入物件中的墓碑、及/或將輸入物件重組成一個新輸出物件。在已完成合併之後,可刪除第一分類字符串表510及第二分類字符串表520以騰出儲存元件130中的空間。
過期值(例如,535及550)無需遷移。更具體而言,空間壓縮引擎145(圖1所示)能夠使第一分類字符串表510的所述一或多個過期值535及對應的一或多個密鑰545不遷移至第三分類字符串表530。類似地,空間壓縮引擎145(圖1所示)能夠使第二分類字符串表520的所述一或多個過期值550及對應的一或多個密鑰547不遷移至第三分類字符串表530。
因此,壓縮可基於至少自主機102(圖1所示)接收的命令150及元資料155而將第一分類字符串表510及第二分類字符串表520合併至第三分類字符串表530中。儲存元件130可在內部處置資料合併任務並在完成時對主機102(圖1所示)作出答覆。所述答覆(例如,圖1所示175)可包括壓縮後的新寫入分類字符串表530的佈局說明。
圖6為根據本發明概念的實施例,說明一種基於主機命令(例如,圖1所示125、150)來壓縮儲存元件(例如,130)的一或多個資料儲存區段(例如,134、136)中的預先存在的所儲存資料的技術的流程圖600。所述技術可開始於605,在605處,儲存元件(例如,圖1所示130)的通訊及路由邏輯區段(例如,圖1所示140)可自主機(例如,圖1所示102)接收包含元資料的資料壓縮命令。在610處,通訊及路由邏輯區段(例如,圖1所示140)可將資料壓縮命令路由至空間壓縮引擎(例如,圖1所示145)。在615處,空間壓縮引擎(例如,圖1所示145)可接收包含元資料的資料壓縮命令。在620處,空間壓縮引擎(例如,圖1所示145)可壓縮儲存元件(例如,圖1所示130)的一或多個資料儲存區段(例如,圖1所示134、136)中的預先存在的所儲存資料。應理解,圖6中所示步驟無需以所指示的次序完成,而是可以不同次序執行、及/或存在中間步驟。
圖7是根據本發明概念的實施例,說明另一種基於主機命令(例如,圖1所示125、150)來壓縮儲存元件(例如,圖1所示130)的一或多個資料儲存區段(例如,圖1所示134、136)中的預先存在的所儲存資料的技術的流程圖700。所述技術可開始於705,在705處,儲存元件(例如,圖1所示130)的通訊及路由邏輯區段(例如,圖1所示140)可自主機(例如,圖1所示102)接收包含元資料的命令。在710處,可判斷命令是否為資料壓縮命令。若判斷結果為否,即意指命令為非資料壓縮命令,則流程可繼續進行至715,在715處通訊及路由邏輯區段(例如,圖1所示140)可以通常方式將命令直接路由至儲存元件(例如,圖1所示130)的一或多個資料儲存區段(例如,圖1所示134、136)。
否則,若判斷結果為是,即意指命令為資料壓縮命令,則流程可繼續進行至720。在720處,通訊及路由邏輯區段(例如,圖1所示140)可將資料壓縮命令路由至空間壓縮引擎(例如,圖1所示145)。在725處,空間壓縮引擎(例如,圖1所示145)可接收包含元資料的資料壓縮命令。在730處,空間壓縮引擎(例如,圖1所示145)可壓縮儲存元件(例如,圖1所示130)的一或多個資料儲存區段(例如,圖1所示134、136)中的預先存在的所儲存資料。應理解,圖7中所示步驟無需以所指示的次序完成,而是可以不同次序執行及/或具有中間步驟。
圖8是包括具有圖1所示空間壓縮引擎145的儲存元件130的計算系統800的方塊圖。計算系統800可包括時鐘810、隨機存取記憶體(RAM)815、使用者介面820、數據機825(例如基頻晶片組)、固態硬碟(SSD)840、及/或處理器835,以上所述者中的任意或全部可電性耦合至系統匯流排805。計算系統800可包括圖1所示儲存元件130及空間壓縮引擎145,儲存元件130及空間壓縮引擎145亦可電性耦合至系統匯流排805。空間壓縮引擎145可包括或以其他方式與時鐘810、隨機存取記憶體(RAM)815、使用者介面820、數據機825、固態硬碟(SSD)840、及/或處理器835介接。
以下論述旨在提供對其中可實行本發明概念的某些態樣的合適的一或多個機器的簡要、大體說明。通常,所述一或多個機器包括系統匯流排,處理器、記憶體(例如,隨機存取記憶體(RAM)、唯讀記憶體(read-only memory,ROM)或其他狀態保存媒體)、儲存元件、視訊介面、及輸入/輸出介面埠附接至所述系統匯流排。所述一或多個機器可至少部分地由來自例如鍵盤、滑鼠等傳統輸入元件的輸入、以及自另一機器接收的指示、與虛擬實境(virtual reality,VR)環境的交互、生物回饋、或其他輸入訊號來控制。本文所用的用語「機器」旨在廣泛地囊括單一機器、虛擬機器、或由以通訊方式耦合的機器、虛擬機器、或一起運作的元件構成的系統。示例性機器包括例如個人電腦、工作站、伺服器、可攜式電腦、手持元件、電話、平板電腦等計算元件、以及例如私人或公共運輸工具(例如,汽車、火車、計程車等)等運輸元件。
所述一或多個機器可包括嵌式控制器,例如可程式化或非可程式化邏輯元件或陣列、應用專用積體電路(ASIC)、嵌式電腦、智慧卡等。所述一或多個機器可利用例如經由網路介面、數據機、或其他通訊式耦合而至一或多個遠端機器的一或多個連接。機器可藉由例如內部網路、網際網路、局部區域網路、廣域網路等物理及/或邏輯網路進行互連。熟習此項技術者應理解,網路通訊可利用各種有線及/或無線短距離或長距離載波及協定,包括射頻(radio frequency,RF)、衛星、微波、電氣及電子工程師協會(Institute of Electrical and Electronics Engineers,IEEE)545.11、藍牙®
、光纖、紅外線、纜線、雷射等。
本發明概念的實施例可藉由參照或結合包括功能、程序、資料結構、應用程式等的相關聯資料來闡述,所述相關聯資料當由機器存取時使所述機器執行任務或界定抽象資料類型或低階硬體上下文(low-level hardware context)。相關聯資料可例如儲存於揮發性及/或非揮發性記憶體(例如,隨機存取記憶體、唯讀記憶體等)中或儲存於其他儲存元件及其相關聯儲存媒體(包括硬驅動機、軟碟、光學儲存器、磁帶、快閃記憶體、記憶條、數位視訊碟、生物儲存器等)中。相關聯資料可藉由傳輸環境(包括物理及/或邏輯網路)以封包、串列資料、並行資料、傳播訊號等形式來傳遞,並可以壓縮或加密格式使用。相關聯資料可在分佈式環境中使用,並在本地及/或遠端儲存以供機器存取。
已參照所示實施例闡述及說明瞭本發明概念的原理,將認識到在不背離此種原理的條件下,所示實施例可在佈置及細節方面進行修改,並可以任何所需方式加以組合。而且,儘管以上論述著重於特定實施例,但設想其他配置。具體而言,儘管在本文中使用例如「根據本發明概念的實施例」等表達,但該些片語意在大體引用實施例的可能性,而並非旨在將本發明概念限制於特定實施例配置。本文所用的該些用語可引用能夠組合成其他實施例的相同或不同實施例。
本發明概念的實施例可包括包含可由一或多個處理器執行的指令的非暫時性機器可讀媒體,所述指令包括執行本文所述的本發明概念的組件的指令。
前述說明性實施例不應被視為限制所述實施例的本發明概念。儘管已闡述了若干實施例,但熟習此項技術者將易於理解,在不實質上背離本發明的新穎教示內容及優點的條件下可對該些實施例作出諸多潤飾。因此,所有此種潤飾皆旨在包含於在申請專利範圍中界定的本發明概念的範圍內。
100‧‧‧自主空間壓縮系統
102‧‧‧主機/主機處理器
105‧‧‧主機層
110‧‧‧元件層
115‧‧‧應用程式
120‧‧‧元件驅動器
125‧‧‧命令呼叫/資料壓縮命令呼叫
130‧‧‧儲存元件
132‧‧‧處理器
134‧‧‧非揮發性記憶體區段
135‧‧‧實體儲存區段
136‧‧‧揮發性記憶體區段
140‧‧‧通訊及路由邏輯區段
145‧‧‧空間壓縮引擎
147‧‧‧空間壓縮邏輯區段
149‧‧‧空間壓縮儲存區段
150‧‧‧命令/資料壓縮命令
152‧‧‧介面
155‧‧‧元資料
160‧‧‧線
165‧‧‧線
170‧‧‧線/答覆
175‧‧‧答覆
180‧‧‧正規路徑
185‧‧‧正規路徑
205‧‧‧物件指標
210‧‧‧物件/檔案
215‧‧‧來源資料位址
217‧‧‧邏輯區塊位址第一範圍
219‧‧‧邏輯區塊位址第二範圍
220‧‧‧新資料位址
222‧‧‧預先存在的所儲存資料/有效資料
225‧‧‧無效資料
226‧‧‧新位置/邏輯區塊位址第三範圍
230‧‧‧空白空間
235‧‧‧日誌末尾
240‧‧‧新位置
305‧‧‧物件指標
310‧‧‧物件/資料庫表
315‧‧‧預先存在的所儲存資料
317‧‧‧所重新排列的資料
320‧‧‧未使用及/或無效空間
322‧‧‧未使用空間
325‧‧‧未使用空間
330‧‧‧未使用空間
335‧‧‧剪裁位置
340‧‧‧剪裁位置
405‧‧‧第一物件指標
410‧‧‧AOF檔案/第一AOF檔案/第一物件
415‧‧‧第二物件指標
420‧‧‧AOF檔案/第二AOF檔案/第二物件
425‧‧‧預先存在的所儲存資料/帶時戳記錄
505‧‧‧物件指標/第一物件指標
510‧‧‧物件/第一物件/第一分類字符串表
515‧‧‧物件指標/第二物件指標
520‧‧‧物件/第二物件/第二分類字符串表
525‧‧‧物件指標/第三物件指標
530‧‧‧物件/第三物件/第三分類字符串表/新的分類字符串表/新寫入分類字符串表
535‧‧‧過期值
540‧‧‧值
545‧‧‧密鑰
547‧‧‧密鑰
550‧‧‧過期值
555‧‧‧值
560‧‧‧位置
600‧‧‧流程圖
605、610、615、620‧‧‧步驟
700‧‧‧流程圖
705、710、715、720、725、730‧‧‧步驟
800‧‧‧計算系統
805‧‧‧系統匯流排
810‧‧‧時鐘
815‧‧‧隨機存取記憶體
820‧‧‧使用者介面
825‧‧‧數據機
835‧‧‧處理器
840‧‧‧固態硬碟
參照附圖閱讀以下詳細說明,本發明原理的前述以及其他特徵及優點將變得更易於顯而易見,在附圖中:
圖1是根據本發明概念的實施例的自主空間壓縮系統的示例性方塊圖,所述自主空間壓縮系統包括主機及具有空間壓縮引擎以用於壓縮資料的儲存元件。
圖2是由圖1所示儲存元件所接收的包含元資料的命令的示例性方塊圖,所述元資料與物件指標、來源資料位址、及新資料位址相關聯。
圖3是由圖1所示儲存元件所接收的包含元資料的命令的示例性方塊圖,所述元資料與物件指標相關聯。
圖4是由圖1所示儲存元件所接收的包含元資料的命令的示例性方塊圖,所述元資料與第一物件指標及第二物件指標相關聯。
圖5是由圖1所示儲存元件所接收的包含元資料的命令的示例性方塊圖,所述元資料與第一物件指標、第二物件指標、及第三物件指標相關聯。
圖6是根據本發明概念的實施例,說明一種基於主機命令來壓縮儲存元件的一或多個資料儲存區段中的預先存在的所儲存資料的技術的流程圖。
圖7是根據本發明概念的實施例,說明另一種基於主機命令來壓縮儲存元件的一或多個資料儲存區段中的預先存在的所儲存資料的技術的流程圖。
圖8是包括具有圖1所示空間壓縮引擎的儲存元件的計算系統的方塊圖。
Claims (10)
- 一種儲存元件,包括: 一或多個第一處理器; 儲存多個指令的一或多個非暫時性儲存區段,所述多個指令在經執行時使得所述一或多個第一處理器使通訊及路由邏輯區段接收來自主機的命令,且判定所述命令是否為包含第一元資料的獨立資料壓縮命令,以路由包含所述第一元資料的所述獨立資料壓縮命令;以及 空間壓縮引擎,包含以通訊方式耦合至所述通訊及路由邏輯區段且耦合至一或多個非暫時性資料儲存區段的第二處理器,其中所述空間壓縮引擎的所述第二處理器經組態以自所述通訊及路由邏輯區段接收包含所述第一元資料的所述獨立資料壓縮命令,處理包含所述第一元資料的所述獨立資料壓縮命令,並基於至少自所述主機接收的所述第一元資料及所述獨立資料壓縮命令而壓縮所述一或多個非暫時性資料儲存區段中的預先存在的所儲存資料, 其中: 所述第一元資料包含物件指標; 所述物件指標指向包含所述預先存在的所儲存資料的物件; 所述物件是包含一或多個頁面的資料庫表,所述一或多個頁面中的每一者包含一或多個邏輯上不連續的有效記錄及一或多個邏輯上不連續的未使用或無效表項; 所述空間壓縮引擎經組態以使所述一或多個頁面中的每一者的所述一或多個邏輯上不連續的有效記錄在所述一或多個頁面中的對應頁面中的每一者內重新排列成邏輯上連續的排列;以及 所述空間壓縮引擎經組態以使所述一或多個頁面中的每一者的所述一或多個邏輯上不連續的未使用或無效條項在所述一或多個頁面中的對應頁面中的每一者內重新排列成邏輯上連續的排列。
- 如申請專利範圍第1項所述的儲存元件,其中: 所述一或多個未使用或無效條項頁面包含重新排列成所述邏輯上連續的排列的多個未使用或無效條項;以及 所述空間壓縮引擎經組態以使所述一或多個頁面中的每一者的所述多個邏輯上連續的未使用或無效條項自所述資料庫表剪裁掉。
- 如申請專利範圍第1項所述的儲存元件,其中所述通訊及路由邏輯區段進一步經組態以判定所述命令是否為來自所述主機的包含第二元資料的非資料壓縮命令,以將包含所述第二元資料的所述非資料壓縮命令路由至所述一或多個非暫時性儲存區段。
- 如申請專利範圍第1項所述的儲存元件,其中: 所述第一元資料進一步包含一或多個來源資料位址及一或多個新資料位址;以及 所述空間壓縮引擎經組態以使對應於所述一或多個來源資料位址的所述預先存在的所儲存資料的一或多個子集遷移至對應於所述一或多個新資料位址的所述物件內的新位置。
- 如申請專利範圍第4項所述的儲存元件,其中: 所述空間壓縮引擎經組態以在遷移所述預先存在的所儲存資料的一或多個子集之後基於所述第一元資料重組所述物件內的所述預先存在的所儲存資料。
- 如申請專利範圍第1項所述的儲存元件,其中: 所述預先存在的所儲存資料包含一或多個帶時戳記錄,以及 其中所述一或多個帶時戳記錄中的每一者表示操作類型、時戳以及資料類型中的至少一者。
- 如申請專利範圍第6項所述的儲存元件,其中: 所述空間壓縮引擎經組態以使所述一或多個帶時戳記錄的子集縮成單一帶時戳記錄,以及 其中所述單一帶時戳記錄經儲存於另一物件中。
- 如申請專利範圍第7項所述的儲存元件,其中: 當所述資料類型與刪除相關聯時,所述一或多個帶時戳記錄中的對應一者不複製至或不縮至所述另一物件。
- 如申請專利範圍第1項所述的儲存元件,其中: 所述預先存在的所儲存資料包含密鑰、值以及過期值中的至少一者,以及 當所述預先存在的所儲存資料經遷移至另一物件時,所述過期值不遷移至另一物件。
- 如申請專利範圍第1項所述的儲存元件,其中所述一或多個非暫時性資料儲存區段包含一或多個非揮發性記憶體區段及一或多個揮發性記憶體區段。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562169551P | 2015-06-01 | 2015-06-01 | |
US62/169,551 | 2015-06-01 | ||
US14/863,438 | 2015-09-23 | ||
US14/863,438 US10216418B2 (en) | 2015-06-01 | 2015-09-23 | Storage apparatus and method for autonomous space compaction |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201937361A true TW201937361A (zh) | 2019-09-16 |
TWI706315B TWI706315B (zh) | 2020-10-01 |
Family
ID=57398629
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105106045A TWI668626B (zh) | 2015-06-01 | 2016-03-01 | 自主空間壓縮之儲存裝置以及方法 |
TW108119893A TWI706315B (zh) | 2015-06-01 | 2016-03-01 | 儲存元件 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105106045A TWI668626B (zh) | 2015-06-01 | 2016-03-01 | 自主空間壓縮之儲存裝置以及方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10216418B2 (zh) |
KR (1) | KR102334735B1 (zh) |
CN (1) | CN106202138B (zh) |
TW (2) | TWI668626B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10938765B1 (en) * | 2016-03-11 | 2021-03-02 | Veritas Technologies Llc | Systems and methods for preparing email databases for analysis |
CN106844102B (zh) * | 2017-01-16 | 2022-11-04 | 腾讯科技(深圳)有限公司 | 数据恢复方法和装置 |
US10606767B2 (en) * | 2017-05-19 | 2020-03-31 | Samsung Electronics Co., Ltd. | Ethernet-attached SSD for automotive applications |
TWI646424B (zh) * | 2017-08-09 | 2019-01-01 | 宏碁股份有限公司 | 智慧型磁碟重組方法與智慧型磁碟重組系統 |
CN107479833B (zh) * | 2017-08-21 | 2020-04-17 | 中国人民解放军国防科技大学 | 一种面向键值存储的远程非易失内存访问与管理方法 |
CN110716690B (zh) * | 2018-07-12 | 2023-02-28 | 阿里巴巴集团控股有限公司 | 数据回收方法和系统 |
US11237744B2 (en) * | 2018-12-28 | 2022-02-01 | Verizon Media Inc. | Method and system for configuring a write amplification factor of a storage engine based on a compaction value associated with a data file |
US11079958B2 (en) | 2019-04-12 | 2021-08-03 | Intel Corporation | Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator |
US11232070B2 (en) * | 2019-06-24 | 2022-01-25 | Western Digital Technologies, Inc. | Metadata compaction in a distributed storage system |
US11556271B2 (en) | 2019-07-05 | 2023-01-17 | Samsung Electronics Co., Ltd. | Storage device storing data on key-value basis and operating method thereof |
CN113094292B (zh) | 2020-01-09 | 2022-12-02 | 上海宝存信息科技有限公司 | 数据存储装置以及非挥发式存储器控制方法 |
WO2022267508A1 (zh) * | 2021-06-25 | 2022-12-29 | 华为技术有限公司 | 元数据压缩方法及装置 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8363837B2 (en) * | 2005-02-28 | 2013-01-29 | HGST Netherlands B.V. | Data storage device with data transformation capability |
TWI476610B (zh) * | 2008-04-29 | 2015-03-11 | Maxiscale Inc | 同級間冗餘檔案伺服器系統及方法 |
US8479080B1 (en) | 2009-07-12 | 2013-07-02 | Apple Inc. | Adaptive over-provisioning in memory systems |
KR101638061B1 (ko) * | 2009-10-27 | 2016-07-08 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법 |
US8140740B2 (en) | 2009-10-29 | 2012-03-20 | Hewlett-Packard Development Company, L.P. | Data defragmentation of solid-state memory |
US10013354B2 (en) * | 2010-07-28 | 2018-07-03 | Sandisk Technologies Llc | Apparatus, system, and method for atomic storage operations |
US9558247B2 (en) | 2010-08-31 | 2017-01-31 | Samsung Electronics Co., Ltd. | Storage device and stream filtering method thereof |
US8850114B2 (en) | 2010-09-07 | 2014-09-30 | Daniel L Rosenband | Storage array controller for flash-based storage devices |
TWI579692B (zh) * | 2010-10-29 | 2017-04-21 | 三星電子股份有限公司 | 記憶體系統、資料儲存系統、使用者裝置及其資料管理方法 |
US8904137B1 (en) * | 2011-05-12 | 2014-12-02 | Symantec Corporation | Deduplication system space recycling through inode manipulation |
US8930614B2 (en) | 2011-07-29 | 2015-01-06 | Kabushiki Kaisha Toshiba | Data storage apparatus and method for compaction processing |
US9298707B1 (en) * | 2011-09-30 | 2016-03-29 | Veritas Us Ip Holdings Llc | Efficient data storage and retrieval for backup systems |
US10803970B2 (en) | 2011-11-14 | 2020-10-13 | Seagate Technology Llc | Solid-state disk manufacturing self test |
KR101824949B1 (ko) | 2011-11-23 | 2018-02-05 | 삼성전자주식회사 | 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치 |
US8751830B2 (en) * | 2012-01-23 | 2014-06-10 | International Business Machines Corporation | Memory address translation-based data encryption/compression |
US9747293B2 (en) * | 2012-02-28 | 2017-08-29 | Deep Information Sciences, Inc. | Method and system for storage and retrieval of information |
US20140081146A1 (en) | 2012-09-13 | 2014-03-20 | Alan R. Keim | Bone mineral density measurement apparatus and method |
CN103049388B (zh) * | 2012-12-06 | 2015-12-23 | 深圳市江波龙电子有限公司 | 一种分页存储器件的压缩管理方法及装置 |
US9448738B2 (en) * | 2013-03-15 | 2016-09-20 | Western Digital Technologies, Inc. | Compression and formatting of data for data storage systems |
US9280570B2 (en) * | 2013-03-28 | 2016-03-08 | Avaya Inc. | System and method for deletion compactor for large static data in NoSQL database |
US8819335B1 (en) | 2013-08-30 | 2014-08-26 | NXGN Data, Inc. | System and method for executing map-reduce tasks in a storage device |
-
2015
- 2015-09-23 US US14/863,438 patent/US10216418B2/en active Active
-
2016
- 2016-03-01 TW TW105106045A patent/TWI668626B/zh active
- 2016-03-01 TW TW108119893A patent/TWI706315B/zh active
- 2016-05-04 CN CN201610289161.6A patent/CN106202138B/zh active Active
- 2016-06-01 KR KR1020160068228A patent/KR102334735B1/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
TWI706315B (zh) | 2020-10-01 |
US10216418B2 (en) | 2019-02-26 |
KR20160141674A (ko) | 2016-12-09 |
CN106202138B (zh) | 2022-04-01 |
KR102334735B1 (ko) | 2021-12-06 |
TW201702860A (zh) | 2017-01-16 |
US20160350007A1 (en) | 2016-12-01 |
CN106202138A (zh) | 2016-12-07 |
TWI668626B (zh) | 2019-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI668626B (zh) | 自主空間壓縮之儲存裝置以及方法 | |
US10073630B2 (en) | Systems and methods for log coordination | |
US9916248B2 (en) | Storage device and method for controlling storage device with compressed and uncompressed volumes and storing compressed data in cache | |
US11042328B2 (en) | Storage apparatus and method for autonomous space compaction | |
CN106164884B (zh) | 具有嵌入式软件的数据存储设备 | |
US9251058B2 (en) | Servicing non-block storage requests | |
US20180011657A1 (en) | Use of predefined block pointers to reduce duplicate storage of certain data in a storage subsystem of a storage server | |
US11287994B2 (en) | Native key-value storage enabled distributed storage system | |
WO2021073635A1 (zh) | 一种数据存储方法及装置 | |
CN107111452B (zh) | 应用于计算机系统的数据迁移方法和装置、计算机系统 | |
KR20170037562A (ko) | 계층화된 저장 장치에서의 압축 샘플링 | |
WO2017042978A1 (ja) | 計算機システム、ストレージ装置、及びデータの管理方法 | |
WO2017213908A1 (en) | Method and apparatus for improving performance of sequential logging in a storage device | |
WO2018171296A1 (zh) | 一种文件合并方法及控制器 | |
TW201723857A (zh) | 使用多串流的系統、方法以及製品 | |
CN112394874A (zh) | 一种键值kv的存储方法、装置及存储设备 | |
US11593312B2 (en) | File layer to block layer communication for selective data reduction | |
CN113918089A (zh) | 键值存储设备和排序键值的方法 | |
US11513739B2 (en) | File layer to block layer communication for block organization in storage | |
US11226769B2 (en) | Large-scale storage system and data placement method in large-scale storage system | |
US9483199B1 (en) | Data deduplication using multiple devices | |
WO2023050856A1 (zh) | 数据处理方法及存储系统 | |
WO2023040305A1 (zh) | 一种数据备份系统及装置 | |
CN105786724A (zh) | 空间管理方法及装置 | |
JP7313458B2 (ja) | ストレージシステム、ストレージノード及びデータ記憶方法 |