TW202307645A - 用於調整計算存儲器的數據大小的系統、方法和裝置 - Google Patents
用於調整計算存儲器的數據大小的系統、方法和裝置 Download PDFInfo
- Publication number
- TW202307645A TW202307645A TW111129342A TW111129342A TW202307645A TW 202307645 A TW202307645 A TW 202307645A TW 111129342 A TW111129342 A TW 111129342A TW 111129342 A TW111129342 A TW 111129342A TW 202307645 A TW202307645 A TW 202307645A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- storage
- record
- storage element
- segment
- Prior art date
Links
Images
Classifications
-
- 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/60—General implementation details not specific to a particular type of compression
- H03M7/6052—Synchronisation of encoder and decoder
-
- 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
-
- 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
- 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
- G06F16/2228—Indexing structures
-
- 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/24—Querying
- G06F16/245—Query processing
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0626—Reducing size or complexity of storage 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/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/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
-
- 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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
-
- 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/60—General implementation details not specific to a particular type of compression
- H03M7/6017—Methods or arrangements to increase the throughput
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)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本發明提供一種用於計算儲存器的方法,可包含:在儲存元件處儲存第一資料部分,其中第一資料部分可包含記錄的第一片段,且第二資料部分可包含記錄的第二片段;以及將記錄的第二片段附加至第一資料部分。方法可更包含在儲存元件處對記錄的第一片段及第二片段執行操作。方法可更包含判定第一資料部分可包含記錄的第一片段且第二資料部分可包含記錄的第二片段,其中將記錄的第二片段附加至第一資料部分可包含基於判定將記錄的第二片段附加至第一資料部分。
Description
本揭露大體上是關於計算儲存系統,且更具體而言,是關於用於調整計算儲存器的資料大小的系統、方法和裝置。
[相關申請案的引用]
本申請案主張2021年8月10日申請的名稱為「用於計算儲存器的對象處理及過濾」的美國臨時專利申請案序列號63/231,709(以引用的方式併入)、2021年8月10日申請的名稱為「用於計算儲存器的具有空間局部性及階層式集成的資料置放」的美國臨時專利申請案序列號63/231,711(以引用的方式併入),以及2021年8月10日申請的名稱為「用於計算儲存器的資料轉遞及塊調整大小」的美國臨時專利申請案序列號63/231,718(以引用的方式併入)的優先級及權益。
計算儲存元件可包含可對儲存於元件處的資料進行操作的一或多個處理資源。主機可例如藉由將指示對儲存於元件處的資料執行的操作的命令發送至儲存元件而將處理任務卸載至儲存元件。儲存元件可使用一或多個處理資源來執行命令。儲存元件可將操作的結果發送至主機及/或將結果儲存於元件處。
此背景技術章節中所揭露的上述資訊僅用於增強對本發明原理的背景的理解,且因此其可能含有不構成先前技術的資訊。
一種用於計算儲存器的方法可包含:在儲存元件處儲存第一資料部分,其中第一資料部分可包含記錄的第一片段,且第二資料部分可包含記錄的第二片段;以及將記錄的第二片段附加至第一資料部分。方法可更包含在儲存元件處對記錄的第一片段及第二片段執行操作。方法可更包含判定第一資料部分可包含記錄的第一片段且第二資料部分可包含記錄的第二片段,其中將記錄的第二片段附加至第一資料部分可包含基於判定將記錄的第二片段附加至第一資料部分。儲存元件可為第一儲存元件,且第二資料部分可儲存於第二儲存元件處。方法可更包含將記錄的第二片段自第二儲存元件發送至第一儲存元件。將記錄的第二片段自第二儲存元件發送至第一儲存元件可包含使用同級間通信將記錄的第二片段自第二儲存元件發送至第一儲存元件。將記錄的第二片段自第二儲存元件發送至第一儲存元件可包含使用主機將記錄的第二片段自第二儲存元件發送至第一儲存元件。方法可更包含儲存記錄的第二片段,及將記錄的第二片段發送至儲存元件。方法可更包含接收對記錄執行操作的請求,其中將記錄的第二片段發送至儲存元件可包含基於請求將記錄的第二片段發送至儲存元件。方法可更包含接收對記錄執行操作的請求,其中將記錄的第二片段附加至第一資料部分可包含基於請求將記錄的第二片段附加至第一資料部分。方法可更包含自儲存元件讀取資料部分。自儲存元件讀取資料部分可包含修改記錄。修改記錄可包含截斷記錄的第二片段。方法可更包含基於附加將通知發送至主機。儲存可包含基於記錄的第一片段計算第一資料部分的同位資料。方法可更包含基於同位資料復原第一資料部分。
一種儲存元件可包含:儲存媒體;儲存元件控制器,經組態以接收第一資料部分,其中第一資料部分可包含記錄的第一片段;以及附加邏輯,經組態以將來自第二資料部分的記錄的第二片段附加至第一資料部分。儲存元件可更包含經組態以對記錄的第一片段及第二片段執行操作的處理部件。操作可包含資料選擇操作。儲存元件控制器可進一步經組態以接收記錄的第二片段。儲存元件控制器可進一步經組態以自主機接收記錄的第二片段。儲存元件控制器可進一步經組態以使用同級間通信接收記錄的第二片段。附加邏輯可進一步經組態以基於將來自第二資料部分的記錄的第二片段附加至第一資料部分而發送通知。附加邏輯可經組態以作出記錄的第二片段可在第二資料部分中的判定。附加邏輯可經組態以基於判定請求記錄的第二片段。
一種系統可包含:儲存元件;以及主機,包括經組態以進行以下操作的邏輯:將第一資料部分發送至儲存元件,其中第一資料部分可包含記錄的第一片段;以及判定記錄的第二片段可在第二資料部分中。邏輯可進一步經組態以將記錄的第二片段發送至儲存元件。邏輯可進一步經組態以接收對記錄執行操作的請求。邏輯可進一步經組態以基於請求將記錄的第二片段發送至儲存元件。
對象儲存系統可實施資料選擇特徵,所述資料選擇特徵可使得使用者能夠請求指定資料子集以自所儲存對象擷取。為了處理此請求,儲存伺服器可自儲存於一或多個儲存元件上的一或多個部分重建構對象。儲存伺服器亦可在對象經加密的情況下解密所述對象,及/或在對象經壓縮的情況下解壓縮所述對象以將對象復原為其原始形式。儲存伺服器可對經復原對象執行一或多個選擇操作,諸如過濾、掃描及/或類似者,以尋找使用者請求的指定資料子集。儲存伺服器可將所請求資料子集返回至使用者元件。
在一些態樣中,計算儲存元件可能夠對儲存於元件上的對象執行一或多個選擇操作,諸如過濾、掃描及/或類似者。然而,若對象的僅一部分儲存於元件上,且在將資料劃分成數個部分之前修改(例如,壓縮、加密及/或類似者)對象,則儲存於元件上的部分可僅包含儲存元件可能無法復原(例如,解壓縮及/或解密)為原始資料的隨機(對元件)資訊。因此,儲存元件可能無法本端地對儲存於元件處的資料部分執行有意義操作。
本揭露涵蓋與計算儲存相關的許多原理。本文中所揭露的原理可具有獨立效用且可單獨地實施,且並非每一實施例皆可利用每一原理。此外,原理亦可實施於各種組合中,所述各種組合中的一些可以協作方式擴增個別原理的一些益處。
本文中所揭露的原理中的一些是關於在對一或多個部分執行一或多個修改之前將資料劃分成一或多個部分。舉例而言,在根據本揭露的實例實施例的計算儲存方案中,可在對資料執行諸如壓縮及/或加密的修改之前將對象或其他原始資料劃分成資料部分。可個別地修改資料部分中的一或多者(例如,可對個別資料部分執行壓縮及/或加密),且可將資料部分的經修改版本發送至計算儲存元件以供儲存及/或處理。儲存元件可例如藉由解密及/或解壓縮經修改資料部分而自經修改資料部分產生資料部分的復原版本。儲存元件可本端地對經復原資料部分執行操作(例如,選擇操作)。
取決於實施細節,在計算儲存元件處本端地執行選擇操作可減少可自一或多個儲存元件發送至伺服器的資料的量。此外,取決於實施細節,計算儲存元件可比伺服器更有效地執行諸如選擇操作的操作。在一些實施例中,此可在幾乎無頻寬及/或空間效率減小或無頻寬及/或空間效率減小的情況下實現,此是因為資料可經壓縮。取決於實施細節,此亦可在幾乎無安全性減少或無安全性減少的情況下實現,此是因為資料可經加密。此外,在一些實施例中,本端計算可對於使用者、用戶端及/或類似者透明地實施。
在根據本揭露的一些實例實施例中,儲存元件、儲存伺服器及/或類似者可提供如何將原始資料劃分成一或多個部分及/或如何修改所述部分以便於由一或多個計算儲存元件儲存及/或處理的一或多個指示。舉例而言,在一些實施例中,指示可包含可由儲存元件支援的資訊,諸如一或多個部分大小、壓縮演算法、加密演算法及/或類似者。在一些實施例中,一或多個指示可為強制性的、視情況選用的(例如,作為建議提供)或其組合。舉例而言,用於儲存於特定儲存元件上的最佳部分大小的指示可作為建議提供,而所支援的壓縮演算法的指示可為強制性的,以使儲存元件能夠解壓縮資料部分以在元件處進行本端處理。
根據本揭露的實例實施例,本文中所揭露的包含將資料劃分成一或多個部分、修改資料(例如,壓縮及/或加密資料)、對資料執行擦除寫碼、儲存資料、處理資料、選擇資料及/或類似者的操作中的任一者可以無限組態分佈(例如,映射)於各種裝置之間。舉例而言,在一些實施例中,用戶端可將原始資料(例如,對象)劃分成一或多個部分,壓縮資料部分,且將經壓縮資料部分發送至伺服器。伺服器可加密經壓縮資料部分,且跨一或多個儲存元件儲存經壓縮及經加密資料部分。作為另一實例,在一些實施例中,用戶端可將原始資料(例如,對象)劃分成一或多個部分,壓縮及加密資料部分,且將經壓縮及經加密資料部分發送至伺服器以供跨一或多個儲存元件進行儲存。作為另一實例,用戶端可將原始資料(例如,對象)發送至可將資料劃分成一或多個部分的伺服器,且壓縮、加密及/或擦除寫碼資料部分,且跨一或多個儲存元件儲存經個別修改的資料部分。
本揭露的一些額外原理是關於資料部分在儲存元件及/或儲存節點之間的分佈。在一些實施例中,連續資料部分可分佈有空間局部性,使得連續資料部分可儲存於相同儲存元件處及/或相同儲存節點處的儲存元件處。取決於實施細節,此可使得可在連續資料部分之間拆分的一或多個記錄能夠在相同儲存元件及/或儲存節點處進行處理。此外,取決於實施細節,此亦可使得資料部分中的一些或全部能夠以相對較高層級的平行度讀取及/或寫入。
一些實施例可實施階層式集成,其中若儲存元件處存在兩個部分,則可在兩個資料部分之間拆分的記錄的片段可集成用於在儲存元件的層級處進行處理。若相同儲存元件處不存在兩個部分,則可在較高層級處,例如在儲存節點處集成及處理所拆分記錄的片段。若相同儲存節點處不存在兩個部分,則可在另一較高層級處,例如在對象儲存伺服器處集成及處理所拆分記錄的片段。取決於實施細節,此可減少在儲存元件、儲存節點及/或其他伺服器之間傳送的資料的量。此外,取決於實施細節,其可增加由諸如計算儲存元件的裝置執行的處理的量,所述計算儲存元件可減少與處理相關聯的時間、功率、頻寬、潛時及/或類似者。
本揭露的一些額外原理是關於修改資料部分以重建構所拆分記錄。舉例而言,若記錄拆分於第一資料部分與第二資料部分之間,則來自第二部分的記錄的片段可附加至第一部分以在第一部分中創建記錄的完整版本。儲存元件可對記錄的完整版本執行操作(例如,資料選擇操作)。
在一些實施例中,主機(例如,儲存節點、對象儲存伺服器及/或類似者)及/或儲存元件可偵測發送至儲存元件的資料部分中的不完整記錄。舉例而言,當對記錄執行諸如資料選擇操作的操作時,主機可將記錄的丟失片段發送至儲存元件。在一些實施例中,主機及/或儲存元件可儲存一或多個丟失片段,取決於實施細節,所述一或多個丟失片段可避免必須在稍後時間自第二部分擷取丟失片段。
在一些實施例中,具有不完整記錄的儲存元件可接觸主機以請求記錄的丟失片段。在一些實施例中,儲存元件可與另一儲存元件(例如,使用同級間通信)直接通信以請求記錄的丟失片段的複本。
在一些實施例中,資料部分亦可稱為資料塊,且將資料劃分成資料部分或資料塊可稱為分塊資料。在一些實施例中,資料部分或資料塊可指可藉由例如出於儲存於一或多個儲存元件處的目的而劃分資料來獲得的任何資料單元。在一些情況下,若原始資料的量小於或等於部分或塊大小(例如,預設部分或塊大小),則由劃分或分塊操作產生的原始資料的單元仍可稱為資料部分或資料塊,即使其與原始資料的量的大小相同。
出於示出的目的,可在對象儲存系統的上下文中描述一些實施例,所述對象儲存系統可實施資料選擇特徵及/或可將資料儲存於一或多個鍵值(key-value;KV)儲存元件中。然而,本揭露中所描述的原理不限於任何特定資料格式、資料處理特徵、儲存元件介面及/或類似者。舉例而言,根據本揭露的實例實施例的系統、方法及/或裝置亦可藉由儲存系統來實施,所述儲存系統可提供檔案儲存、資料庫儲存、區塊儲存及/或類似者,可實施任何類型的處理特徵,諸如加速、圖處理、圖形處理、機器學習及/或類似者,且可藉由任何類型的儲存元件操作,包含KV儲存元件、區塊儲存元件及/或類似者。
對象儲存系統可使得使用者能夠以對象形式儲存資料。對象中的資料可在儲存之前以各種方式修改。舉例而言,可壓縮資料以減少其在儲存媒體中佔據的空間量及/或減少將資料自用戶端傳輸至一或多個儲存元件(例如,經由網路)所需的時間、頻寬、功率及/或類似者。作為另一實例,可加密對象中的資料以防止在資料的傳輸及/或儲存期間對資料的未經授權的存取。
對象可包含相對大量的資料,且因此,出於可靠性、可存取性及/或類似者的目的,可將對象劃分成可跨多個儲存元件儲存的塊。(將資料劃分成塊亦可稱為分塊資料。)舉例而言,在壓縮及/或加密之後,可將對象劃分成固定大小的塊,以適合由儲存系統中的一或多個基於區塊的儲存元件使用的區塊大小。在一些實施例中,擦除寫碼方案可用於將資料劃分成資料塊且產生一或多個同位塊,所述一或多個同位塊可使得儲存系統能夠復原丟失或損壞的資料塊。
圖1A示出根據本揭露的實例實施例的具有伺服器側加密的對象儲存方案的實施例。圖1A的左側示出在讀取及/或寫入操作期間系統的組件之間的資料流,且圖1A的右側示出在寫入操作期間對資料的操作。
在圖1A的左側示出的系統可包含用戶端102、一或多個伺服器104(其可統稱為伺服器)以及一或多個儲存元件108(其可統稱為儲存器)。在圖1A的右側示出的操作繪示於由用戶端102執行的第一群組110A及由伺服器104執行的第二群組112A中。
在寫入操作期間,用戶端102可以可為例如對象的原始資料114開始。用戶端102可對原始資料114執行一或多個壓縮操作以產生經壓縮資料116。用戶端102可將經壓縮資料116發送至伺服器104,所述伺服器104可加密經壓縮資料116以產生經加密資料118。伺服器104可將經壓縮及經加密資料118劃分成一或多個資料塊120,且將一或多個資料塊120發送至一或多個儲存元件108。在一些實施例中,伺服器104可擦除寫碼一或多個資料塊120以產生亦可儲存於一或多個儲存元件108上的一或多個同位塊121。
在讀取操作期間,圖1A中所繪示的操作可相反地執行。舉例而言,伺服器104可自一或多個儲存元件108讀取一或多個資料塊120。若資料塊中的一者例如歸因於故障儲存元件而丟失或損壞,則伺服器104可使用一或多個同位塊121復原丟失或損壞的資料塊。伺服器104可自資料塊120重建構經壓縮及經加密資料118。伺服器104可解密經壓縮及經加密資料118,且將經壓縮及經解密資料116發送至用戶端102。用戶端102可解壓縮經壓縮及經解密資料116以復原可為例如對象的原始資料114。
圖1B示出根據本揭露的實例實施例的具有用戶端側加密的對象儲存方案的實施例。圖1B的左側示出在讀取及/或寫入操作期間系統的組件之間的資料流,且圖1B的右側示出在寫入操作期間對資料的操作。
在圖1B的左側示出的系統及在圖1B的右側示出的操作可包含可類似於圖1A中所示出的彼等組件及/或操作且可由相同或類似附圖標號指示的一些組件及/或操作。然而,在圖1B中所示出的實施例中,用戶端102可加密經壓縮資料116以產生如由用戶端102執行的操作的第一群組110B所繪示的經壓縮及經加密資料118。用戶端102可將經壓縮及經加密資料118發送至伺服器104,所述伺服器104可將經壓縮及經加密資料118劃分成如由伺服器104執行的操作的第二群組112B所繪示的一或多個資料塊120。伺服器104可將一或多個資料塊120發送至一或多個儲存元件108。在一些實施例中,伺服器104可擦除寫碼一或多個資料塊120以產生亦可儲存於一或多個儲存元件108上的一或多個同位塊121。
在讀取操作期間,圖1B中所繪示的操作可相反地執行。舉例而言,伺服器104可自資料塊120重建構經壓縮及經加密資料118(必要時使用一或多個同位塊121復原任何丟失或損壞的資料塊),且將經壓縮及經加密資料118發送至用戶端102。可解密經壓縮及經加密資料118以產生經壓縮及經解密資料116。用戶端102可解壓縮經壓縮及經解密資料116以復原可為例如對象的原始資料114。
圖1A及圖1B中所示出的實施例僅為實例實施例,且組件及/或操作的數目、次序及/或配置可變化。舉例而言,在一些實施中,可在不壓縮及/或不加密的情況下儲存原始資料114。在一些實施例中,一或多個伺服器104可藉由可經組態為對象儲存伺服器的第一伺服器及可經組態為儲存伺服器(其亦可稱為儲存節點)的第二伺服器來實施以管理一或多個儲存元件108。因此,第一伺服器及第二伺服器可實施對象儲存服務。若原始資料114中的任一者或全部經加密,則加密密鑰可由儲存服務及/或由服務的使用者產生。在一些實施例中,在寫入操作結束時或接近寫入操作結束時執行分塊操作可使得伺服器104能夠將資料劃分成具有可對應於一或多個儲存元件108的一或多個區塊大小的大小的塊。
在一些情況下,與使用者元件相關聯的使用者可能僅需要擷取儲存於對象中的資料子集。一些對象儲存系統可能需要使用者擷取整個對象且處理對象以尋找資料子集。此可導致將相對大量的不需要的資料傳輸至使用者元件,此又可消耗不必要的資源,諸如時間、頻寬、功率及/或類似者。
為了減少及/或防止不需要的資料的傳輸,一些對象儲存系統可提供資料選擇特徵,所述資料選擇特徵可使得使用者能夠請求指定資料子集自所儲存對象擷取。對象儲存系統可對對象執行掃描、過濾及/或其他資料選擇操作以尋找指定資料子集,而非將整個對象發送至使用者元件。對象儲存系統可將指定資料子集返回至使用者元件。
圖2A示出根據本揭露的實例實施例的可將對象返回至使用者元件的對象儲存方案的實施例。圖2B示出根據本揭露的實例實施例的具有資料選擇特徵的對象儲存方案的實施例。
參考圖2A,對象儲存服務201可將使用者的對象203A、對象203B以及對象203C儲存於資料桶或容器205中。若使用者需要自對象203A中的一者擷取資料子集(例如,一或多個記錄),則對象儲存服務201可能需要使用者請求整個對象203A,所述整個對象203A可經由網路發送至用戶端計算操作207。用戶端計算操作207可對對象203A執行諸如掃描、過濾及/或類似者的資料選擇操作209以尋找資料子集。用戶端計算操作207可將資料子集用於另一操作211。
參考圖2B,具有資料選擇特徵的對象儲存服務213可使得使用者能夠自所儲存對象203A請求資料子集。舉例而言,對象儲存服務213可使得使用者能夠例如藉由發送可對對象203A進行操作的查詢(例如,使用諸如結構化查詢語言(structured query language;SQL)的資料庫語言的表達式)而提交請求,所述對象203A可例如以諸如逗號分隔變數(comma separated variable;CSV)、JavaScript對象表示法(JavaScript Object Notation;JSON)、Parquet及/或類似者的格式儲存。在一些實施例中,可例如使用應用程式設計介面(application programming interface;API)、軟體開發套件(software development kit;SDK)及/或類似者將查詢發送至對象儲存服務213。
對象儲存服務213可對對象203A執行諸如掃描、過濾及/或類似者的資料選擇操作209以尋找使用者在請求中指定的資料子集,而非發送整個對象203A。對象儲存服務213可將資料子集213a發送至用戶端計算操作217以用於另一操作211。取決於實施細節,對象儲存服務213可對對象203A執行一或多個復原操作219,諸如解壓縮、解密及/或類似者,以反轉當對象203A經儲存時可能已對所述對象203A執行的壓縮操作、加密操作及/或類似操作。
圖3A示出根據本揭露的實例實施例的具有資料選擇特徵的對象儲存方案的寫入操作的實施例。圖3B示出根據本揭露的實例實施例的具有資料選擇特徵的對象儲存方案的讀取操作的實施例。圖3A及圖3B中所示出的實施例可例如用於實施圖2B中所示出的對象儲存方案。
圖3A的左側示出在讀取及/或寫入操作期間對象儲存系統的組件之間的資料流,且圖3A的右側示出在寫入操作期間對資料的操作。
在圖3A的左側示出的系統可包含用戶端302、一或多個伺服器304(其可統稱為伺服器)以及一或多個儲存元件308(其可統稱為儲存器)。在圖3A的右側示出的操作繪示於由用戶端302執行的第一群組310A及由伺服器304執行的第二群組312A中。圖3A中所示出的組件之間的資料流及/或對資料的操作可類似於圖1A中所示出的具有伺服器側加密的實施例或圖1B中所示出的具有用戶端側加密的實施例,其中具有以相同數位結束的附圖標號的部件可為類似的。因此,在圖3A中,經壓縮及經加密資料318可為用於具有用戶端側加密的實施的群組310A的部分,或用於具有伺服器側加密的實施的群組312A的部分。
參考圖3B,使用者可自儲存於一或多個儲存元件308上的對象或其他原始資料請求資料子集。為了處理此請求,伺服器304可自一或多個儲存元件308讀取一或多個資料塊320。若資料塊中的一者丟失或損壞,則伺服器304可使用一或多個同位塊321復原丟失或損壞的資料塊。伺服器304可自資料塊320重建構經壓縮及經加密資料318。
伺服器304可解密經壓縮及經加密資料318以產生可經解壓縮以復原原始資料314(例如,對象)的經壓縮及經解密資料316。伺服器304可對原始資料314執行資料選擇操作(例如,掃描、過濾及/或類似者)以獲得所請求的資料子集323。伺服器304可將資料子集323發送至用戶端302。由於可繞過用戶端的解壓縮操作,因此其顯示為灰色。在圖3B的右側示出的操作繪示於由伺服器304執行的群組312B中。
如同圖1A及圖1B中所示出的實施例一般,圖3A及圖3B中所示出的伺服器304可藉由可經組態為對象儲存伺服器的第一伺服器及可經組態為儲存伺服器的第二伺服器來實施以管理一或多個儲存元件308。因此,在一些實施例中,儲存伺服器可自一或多個資料塊320重建構經壓縮及經加密資料318,且對象儲存伺服器可執行解密、解壓縮及/或資料選擇操作。此外,儘管圖3A及圖3B中所示出的實施例可實施伺服器側加密,但其他實施例可實施用戶端側加密。
取決於實施細節,圖3A及圖3B中所示出的實施例可例如藉由減少在儲存系統與用戶端之間傳送的資料的量來減少網路訊務。然而,用於圖3A及圖3B中所示出的架構的資料處理流程可防止儲存系統利用計算儲存元件,所述計算儲存元件可取決於實施細節而很好地適合於執行由伺服器304執行的操作中的一些或全部。舉例而言,在一些實施例中,計算儲存元件可包含可比可存在於伺服器中的通用處理資源更有效地執行解壓縮、解密及/或其他操作(諸如資料選擇操作)的處理資源。然而,由於可在分塊之前修改(例如,壓縮、加密及/或類似者)原始資料314,因此其上儲存有資料塊的個別儲存元件308可能無法將資料塊解密、解壓縮及/或以其他方式復原為可在元件處本端地執行的有意義操作的形式。
圖4示出根據本揭露的實例實施例的具有本端資料復原的儲存系統的實施例。圖4中所示出的系統可包含可經由連接422通信的主機424及計算儲存元件408。主機424可包含資料分塊邏輯426及資料修改邏輯427,其可經組態以呈某一形式將一或多個資料塊提供至儲存元件408,其中儲存元件408可將資料塊復原為儲存元件可對其執行操作的形式。舉例而言,資料分塊邏輯426可在藉由資料修改邏輯427修改之前將對象或其他原始資料劃分成一或多個資料塊。資料修改邏輯427可對塊中的一或多者個別地執行諸如壓縮、加密、擦除寫碼及/或類似者的一或多個資料修改操作以產生原始資料的一或多個經修改塊。主機424可將原始資料的經修改塊中的一或多者發送至計算儲存元件408及/或一或多個額外計算儲存元件以用於儲存及/或處理。
計算儲存元件408可包含資料復原邏輯428、一或多個處理部件429以及儲存媒體430。資料復原邏輯428可經組態以將經修改資料塊復原為一或多個處理部件429可對其執行操作的形式。舉例而言,資料復原邏輯428可在經修改資料塊經加密的情況下解密所述經修改資料塊,在經修改資料塊經壓縮的情況下解壓縮所述經修改資料塊,及/或類似者。一或多個處理部件429可經組態以執行任何類型的操作,諸如資料選擇(例如,掃描、過濾及/或類似者)、計算加速、圖處理、圖形處理、機器學習及/或類似者。儲存媒體430可用於儲存包含由主機424發送的一或多個經修改資料塊的任何資料。
在一些實施例中,資料復原邏輯428及/或一或多個處理部件429可經組態以回應於可包含在儲存元件408處接收到的查詢(例如,表達式)的請求而自儲存媒體430讀取及復原一或多個資料塊且返回指定資料子集,或對所復原資料塊執行任何其他操作。
在一些實施例中,所復原資料塊可或可不與分塊之前的原始資料完全相同。舉例而言,若儲存於儲存元件424處的資料塊含有諸如銀行帳戶交易、餘額及/或類似者的財務資訊,且使用者僅請求帳戶餘額,則復原邏輯428及/或一或多個處理部件429可能需要將資料塊復原為原始形式以尋找確切的帳戶餘額且將其發送至使用者元件。然而,若儲存於儲存元件424處的資料塊含有照片影像,且使用者請求影像中的特徵清單,則復原邏輯428及/或一或多個處理部件429可能僅需要在可使得一或多個處理部件429能夠識別使用者請求的特徵的程度上解壓縮影像。
主機424可藉由可以儲存元件408可復原及/或對其執行操作的形式將一或多個資料塊提供至儲存元件408的任何組件或組件的組合來實施。舉例而言,在一些實施例中,主機424可包含用戶端、對象儲存伺服器及/或儲存節點。資料分塊邏輯426及/或資料修改邏輯427可以任何方式分佈於主機424的任何組件之間。舉例而言,在一些實施例中,資料分塊邏輯426可實施於用戶端處,而資料修改邏輯427可實施於對象儲存伺服器及/或儲存節點處。作為另一實例,資料分塊邏輯426及資料修改邏輯427的包含壓縮邏輯的一部分可實施於用戶端處,而資料修改邏輯427的包含加密及/或擦除寫碼邏輯的一部分可實施於伺服器處。因此,用戶端可將原始資料劃分成塊,個別地壓縮資料塊,且將經壓縮資料塊發送至伺服器。伺服器可個別地加密經壓縮資料塊,擦除寫碼資料塊以產生一或多個同位塊,且將資料塊及/或同位塊儲存於包含計算儲存元件408的一或多個儲存元件上。
儲存元件408及/或本文中所揭露的任何其他儲存元件可以任何形式因子(諸如3.5吋、2.5吋、1.8吋、M.2、企業及資料中心SSD形式因子(Enterprise and Data Center SSD Form Factor;EDSFF)、NF1及/或類似者)使用任何連接器組態(諸如串列ATA(Serial ATA;SATA)、小型電腦系統介面(Small Computer System Interface;SCSI)、串列附接SCSI(Serial Attached SCSI;SAS)、M.2、U.2、U.3及/或類似者)實施。
儲存元件408及/或本文中所揭露的任何其他儲存元件可藉由任何儲存媒體430來實施,所述儲存媒體包含固態媒體、磁性媒體、光學媒體及/或類似者,或其任何組合。固態媒體的實例可包含快閃記憶體,諸如反及(not-AND;NAND)快閃記憶體、低潛時NAND快閃記憶體、諸如交叉網格非揮發性記憶體的持續記憶體(persistent memory;PMEM)、具有體電阻改變的記憶體、相變記憶體(phase change memory;PCM)及/或類似者,或其任何組合。
儲存元件408及/或本文中所揭露的任何其他儲存元件可使用任何類型的儲存介面及/或協定進行通信,諸如周邊組件互連高速(Peripheral Component Interconnect Express;PCIe)、NVMe、網狀架構上的NVMe(NVMe-over-fabric;NVMe-oF)、NVMe鍵值(NVMe Key-Value;NVMe-KV)、SATA、SCSI及/或類似者,或其任何組合。在一些實施例中,儲存元件408及/或本文中所揭露的任何其他儲存元件可實施同調(例如,記憶體同調、快取記憶體同調及/或類似者)或諸如計算高速鏈接(Compute Express Link;CXL)的記憶體語義介面及/或諸如CXL.mem、CXL.cache及/或CXL.IO的同調協定。同調及/或記憶體語義介面及/或協定的其他實例可包含Gen-Z、同調加速器處理器介面(Coherent Accelerator Processor Interface;CAPI)、用於加速器的快取記憶體同調互連(Cache Coherent Interconnect for Accelerator;CCIX)及/或類似者。
儲存元件408及/或本文中所揭露的任何其他儲存元件以及主機424的任何組件(例如,用戶端、對象儲存伺服器、儲存節點及/或類似者)可完全地或部分地藉由伺服器底盤、伺服器機架、資料室、資料中心、邊緣資料中心、行動邊緣資料中心及/或其任何組合來實施及/或與前述各者結合使用。
通信連接422及/或本文中所揭露的任何其他連接(包含諸如用戶端、伺服器、儲存元件及/或類似者的組件之間的任何連接)可藉由包含PCIe、乙太網路、傳輸控制協定/網際網路協定(Transmission Control Protocol/Internet Protocol;TCP/IP)、遠端直接記憶體存取(remote direct memory access;RDMA)、融合乙太網路上的RDMA(RDMA over Converged Ethernet;ROCE)、光纖通道、無線帶寬、iWARP及/或類似者或其任何組合的任何互連及/或網路介面及/或協定來實施。
本文中所揭露的包含諸如資料分塊邏輯426、資料修改邏輯427、資料復原邏輯428、一或多個處理部件429、指示邏輯531及/或類似者的邏輯中的任一者的功能性中的任一者可藉由包含組合邏輯、順序邏輯、一或多個定時器、計數器、暫存器及/或狀態機、一或多個複雜可程式化邏輯元件(complex programmable logic device;CPLD)、場可程式化閘陣列(field programmable gate array;FPGA)、特殊應用積體電路(application specific integrated circuit;ASIC)、諸如複雜指令集電腦(complex instruction set computer;CISC)處理器(諸如x86處理器)及/或精簡指令集電腦(reduced instruction set computer;RISC)處理器(諸如ARM處理器)的中央處理單元(central processing unit;CPU)、圖形處理單元(graphics processing unit;GPU)、神經處理單元(neural processing unit;NPU)、張量處理單元(tensor processing unit;TPU)及/或類似者(其執行儲存於任何類型的記憶體中的指令)或其任何組合的硬體、軟體或其組合來實施。在一些實施例中,資料復原邏輯428、處理部件429及/或類似者中的一或多者可包含固定及/或可程式化功能性以執行任何功能,諸如壓縮及/或解壓縮、加密及/或解密、微服務、擦除寫碼、視訊編碼及/或解碼、資料庫加速、搜尋、機器學習、圖處理及/或類似者。在一些實施例中,一或多個組件可實施為系統晶片(system-on-chip;SOC)。
在一些實施例中,資料復原邏輯428、處理部件429及/或類似者中的一或多者可與儲存元件的一或多個其他組件(諸如,儲存元件控制器、快閃轉譯層(flash translation layer;FTL)及/或類似者)整合。
本文中所揭露的資料修改操作中的任一者(諸如,壓縮、加密及/或類似者(或其相反操作))可藉由任何合適的技術來實施。舉例而言,資料壓縮及/或解壓縮可藉由LZ77、gzip、Snappy及/或類似者來實施。加密及/或解密可藉由諸如AES-256、R-S-A三氏不對稱加密演算技術標準(Rivest-Shamir-Adleman;RSA)及/或類似者的進階加密標準(Advanced Encryption Standard;AES)來實施。
圖5示出根據本揭露的實例實施例的具有本端資料復原的儲存系統的另一實施例。圖5中所示出的系統可包含類似於關於圖4中所示出的實施例所描述的彼等組件及/或實施操作的組件及/或實施操作,其中具有以相同數位結束的附圖標號的部件可為類似的。然而,在圖5中所示出的實施例中,計算儲存元件508可進一步包含指示邏輯531,所述指示邏輯531可經組態以將一或多個指示532提供至主機524處的資料分塊邏輯526及/或資料修改邏輯527。
一或多個指示532可包含可由資料分塊邏輯526用來判定如何將原始資料劃分成塊的資訊。舉例而言,一或多個指示532可包含用於儲存利用、處理效率(例如,塊解壓縮、解密、資料選擇及/或其他操作)、頻寬利用及/或類似者的一或多個儲存超參數,諸如最小塊大小、最大塊大小、最佳塊大小及/或類似者。
一或多個指示532(例如,儲存超參數)可包含可由資料修改邏輯527用來判定如何修改由資料分塊邏輯526提供的個別資料塊的資訊。舉例而言,一或多個指示532可包含由儲存元件508處的資料復原邏輯528支援的壓縮演算法、加密演算法及/或類似者的類型的清單。
在一些實施例中,一或多個指示可為強制性的、視情況選用的(例如,作為建議提供)或其組合。舉例而言,用於儲存於儲存元件508上的最佳塊大小的指示可作為建議提供,而由資料復原邏輯528支援的一或多個壓縮演算法、加密演算法及/或類似者的指示可為強制性的,以使得儲存元件508能夠解壓縮及/或解密資料塊以供儲存元件508處的一或多個處理部件529進行本端處理。
在一些實施例中,指示邏輯531可完全位於計算儲存元件508處。然而,在一些其他實施例中,指示邏輯531可位於主機524處,分佈於主機524與儲存元件508或多個儲存元件之間,或完全位於不同裝置(例如,可維持系統中的儲存元件的特性的清單或資料庫的單獨伺服器、管理控制器及/或類似者)處。舉例而言,在一些實施例中,一或多個儲存節點可包含可維持安裝於儲存節點處的一或多個(例如,各個)儲存元件的指示的清單或資料庫且將指示提供至一或多個用戶端、對象儲存伺服器及/或類似者的指示邏輯531。作為另一實例,一或多個儲存節點可包含可維持安裝於儲存節點處的一或多個(例如,各個)儲存元件的指示的指示邏輯531的一部分,且對象儲存伺服器可包含可集成來自一或多個儲存節點的指示且將指示提供至一或多個用戶端的指示邏輯531的一部分。
可例如回應於查詢、命令及/或類似者(例如,NVMe命令、經由API的查詢、SDK及/或類似者)而藉由指示邏輯531將指示532中的任一者提供至任何裝置,諸如用戶端、對象儲存伺服器、儲存節點及/或類似者。在一些實施例中,一或多個指示532(例如,一或多個儲存超參數)可經由用戶端程式庫(例如,由用戶端)提供至使用者。
圖6A示出根據本揭露的實例實施例的用於具有本端資料復原及伺服器側加密的儲存方案的寫入操作的實例實施例。圖6A中所示出的實施例可例如用於實施圖4及圖5中所示出的儲存方案中的任一者。圖6A的左側示出儲存系統的組件之間的資料流,且圖3A的右側示出在寫入操作期間對資料的操作。
在圖6A的左側示出的系統可包含用戶端602、一或多個伺服器604(其可統稱為伺服器)以及一或多個儲存元件608(其可統稱為儲存器)。在圖6A的右側示出的操作繪示於由用戶端602執行的第一群組610A及由伺服器604執行的第二群組612A中。
寫入操作可在儲存元件608及/或伺服器604將指示資料塊大小、壓縮演算法及/或類似者的一或多個指示632提供至用戶端602時開始。用戶端602可基於例如一或多個指示632將原始資料614劃分成一或多個塊633。
返回參考圖3A及圖3B,資料塊320可為例如當儲存器308藉由一或多個基於區塊的儲存元件來實施時可能需要的基本上相同的大小。然而,在圖6A中所示出的實施例中,資料塊633可為不同大小,例如,以利用可藉由KV介面實施的儲存元件608中的一或多者。另外或替代地,伺服器604可在一或多個基於區塊的儲存元件608的頂部上實施鍵值介面(例如,RocksDB、LevelDB及/或類似者)的軟體仿真。儘管圖3A及圖3B中所示出的資料塊以不同大小繪示,但原理亦可應用於其中儲存元件中的一些或全部具有基於區塊的介面的系統,所述介面可被視為可變大小塊的子集。
在一些實施例中,可例如基於可為用於特定儲存元件的最佳已知大小的塊大小而判定所建議及/或強制性的塊大小。舉例而言,對於一些固態驅動器(solid state drive;SSD),128KB塊大小可完全利用SSD頻寬。另外或替代地,儲存伺服器可經由程式庫向用戶端602提供最佳塊大小,且當使用者儲存對象或其他原始資料時,用戶端602可在內部將對象或其他原始資料拆分成較小塊。另外或替代地,用戶端602可分析內容且動態地判定塊大小。
在對原始資料614進行分塊之後,用戶端可個別地壓縮資料塊633中的一或多者以產生一或多個經壓縮塊634。用戶端602可將經壓縮塊634發送至伺服器604,所述伺服器604可加密一或多個經壓縮塊634以產生一或多個經壓縮及經加密資料塊635。伺服器604可擦除寫碼一或多個經壓縮及經加密資料塊635以產生一或多個同位塊636,且跨一或多個儲存元件608儲存一或多個資料塊635及一或多個同位塊636。
圖6B示出根據本揭露的實例實施例的用於具有本端資料復原及用戶端側加密的儲存方案的寫入操作的實例實施例。圖6B中所示出的實施例可例如用於實施圖4及圖5中所示出的儲存方案中的任一者。圖6B的左側示出儲存系統的組件之間的資料流,且圖6B的右側示出在寫入操作期間對資料的操作。
圖6B中所示出的組件之間的資料流及/或對資料的操作可類似於圖6A中所示出的具有伺服器側加密的實施例,且具有以相同數位結束的附圖標號的部件可為類似的。然而,在圖6B中所示出的實施例中,用戶端602可加密一或多個經壓縮資料塊634以產生一或多個經壓縮及經加密資料塊635,如第一操作群組610B中所繪示。用戶端602可將一或多個經壓縮及經加密資料塊635發送至伺服器604,所述伺服器604可擦除寫碼一或多個經壓縮及經加密資料塊635以產生一或多個同位塊636,且跨一或多個儲存元件608儲存一或多個資料塊635及一或多個同位塊636,如操作群組612B中所繪示。
在一或多個資料塊633已經個別地修改(例如,壓縮、加密及/或類似者)且跨一或多個儲存元件608儲存為經修改資料塊636之後,一或多個(例如,各個)儲存元件可能夠復原一或多個資料塊(例如,藉由解密及/或解壓縮一或多個資料塊)且對所復原資料塊執行操作。舉例而言,使用者、用戶端602、伺服器604及/或類似者可將請求發送至儲存元件608中的一或多者以復原塊中的一或多者且對所復原資料塊執行一或多個操作(例如,資料選擇操作)。
圖7A示出根據本揭露的實例實施例的用於具有本端資料復原的儲存方案的寫入操作的實例實施例。圖7B示出根據本揭露的實例實施例的具有用於具有本端資料復原的儲存方案的資料選擇的讀取操作的實例實施例。圖7A及圖7B中所示出的實施例可例如用於實施圖4及圖5中所示出的儲存方案中的任一者。
參考圖7A,左側示出儲存系統的組件之間的資料流,且右側示出在寫入操作期間對資料的操作。參考圖7B,左側示出儲存系統的組件之間的資料流,且右側示出在讀取操作期間對資料的操作。
圖7A中所示出的寫入操作可實施類似於圖6A中所示出的伺服器側加密或類似於圖6B中所示出的用戶端側加密,且具有以相同數位結束的附圖標號的部件可為類似的。因此,已經個別地壓縮的資料塊734可經加密以產生經壓縮及經加密資料塊735作為用戶端操作710A的部分或伺服器操作712A的部分。
參考圖7B,一或多個計算儲存元件708可接收執行資料選擇操作的一或多個請求,以自儲存於儲存元件處的一或多個資料塊735讀取一或多個資料子集。一或多個請求可包含例如指定所請求資料子集的一或多個表達式。舉例而言,可經由伺服器704自用戶端702接收請求。
為了處理一或多個請求,一或多個儲存元件708可在一或多個儲存元件708處本端地執行操作群組737。舉例而言,三個不同儲存元件中的一或多者(例如,各者)可對儲存於一或多個(例如,各個)元件處的對應資料塊分別執行資料復原及資料選擇操作737-1、資料復原及資料選擇操作737-2以及資料復原及資料選擇操作737-3的群組。然而,在一些實施例中,單個儲存元件可對儲存於元件處的任何數目個資料塊執行資料復原及資料選擇或其他操作。
一或多個(例如,各個)儲存元件708可自儲存媒體讀取已經個別地壓縮及加密的對應資料塊735。一或多個(例如,各個)儲存元件可解密對應資料塊以產生經壓縮及經解密資料塊734。一或多個(例如,各個)儲存元件可解壓縮對應資料塊以產生所復原資料塊738。在一些實施例中,一或多個(例如,各個)所復原資料塊738可與原始資料714的對應部分相同。然而,在一些實施例中,僅可將所復原資料塊738復原為可使得儲存元件708能夠對所復原資料執行有意義操作的形式(例如,一些實施例可能夠對尚未完全解壓縮的資料塊執行一或多個操作)。
在已復原資料塊之後,一或多個(例如,各個)儲存元件708可例如基於與請求一起提供的表達式來執行資料選擇操作(例如,掃描、過濾及/或類似者)以獲得一或多個對應結果739。一或多個儲存元件708可將結果739作為原始資料714的一或多個所請求子集740發送至用戶端。由於可繞過用戶端的解壓縮及/或解密操作,因此其顯示為灰色。
在一些實施例中,若同位塊736儲存於儲存元件處,則儲存元件708中的一或多者可能夠復原一或多個丟失的資料塊735。替代地或另外,伺服器704可使用儲存於一或多個其他儲存元件處的一或多個同位塊736復原一或多個丟失的資料塊735。
取決於實施細節,在儲存元件處執行資料復原及/或資料選擇操作可減少與讀取儲存於一或多個儲存元件上的一或多個塊中的原始資料的子集(例如,對象子集)相關聯的時間、頻寬、功率、潛時及/或類似者。
圖8示出根據本揭露的實例實施例的用於具有本端資料復原的對象儲存方案的系統架構的實例實施例。舉例而言,圖8中所示出的系統可用於實施關於圖4、圖5、圖6A、圖6B、圖7A、圖7B、圖9A及/或圖9B所描述的方案中的任一者。
圖8中所示出的系統可包含經由網路連接842連接的用戶端802及對象儲存伺服器叢集804。系統亦可包含經由儲存網路844連接至對象儲存伺服器叢集804的一或多個儲存節點806。
用戶端802可包含資料分塊邏輯826及/或壓縮邏輯846,其可經組態以在壓縮個別資料塊之前執行原始資料(例如,一或多個對象)的資料分塊,使得一或多個計算儲存元件808可復原資料塊以對所復原資料塊執行操作。
對象儲存伺服器叢集804可包含加密邏輯847、擦除寫碼邏輯848、資料選擇邏輯849、叢集管理邏輯850及/或節點及儲存元件管理邏輯851。加密邏輯847可用於個別地加密自用戶端802接收到的資料塊(例如,經壓縮資料)。擦除寫碼邏輯848可對儲存節點806及/或儲存元件808上的資料塊執行擦除寫碼。資料選擇邏輯849可執行與由個別儲存元件808執行的資料復原、資料選擇及/或其他處理操作相關的各種操作。舉例而言,資料選擇邏輯849可自用戶端802接收請求以讀取可儲存於一或多個儲存元件808上的塊中的一或多個資料子集。資料選擇邏輯849可將請求轉送至對應儲存節點806及/或儲存元件808,自對應儲存節點806及/或儲存元件808接收及/或集成結果,且將所集成結果發送至用戶端802。叢集管理邏輯850可執行與維持儲存伺服器叢集804相關的內務處理及/或管理功能。節點及儲存元件管理邏輯851可執行與維持一或多個儲存節點806及/或儲存元件808相關的內務處理及/或管理功能。
儲存節點806中的一或多者(例如,各者)可包含處理單元(例如,資料處理單元(data processing unit;DPU)、CPU及/或類似者)852及一或多個計算儲存元件808。DPU 852可執行各種功能,諸如接收及分佈來自用戶端802的請求以讀取可儲存於一或多個儲存元件808上的塊中的一或多個資料子集。在一些實施例中,DPU 852可對自對象儲存伺服器叢集804接收到且儲存於一或多個計算儲存元件808上的資料塊執行資料壓縮、資料加密、擦除寫碼及/或類似者。在一些實施例中,DPU 852可集成由一或多個計算儲存元件808執行的一或多個資料選擇操作的結果且將所集成結果轉送至對象儲存伺服器叢集804及/或用戶端802。
計算儲存元件808a繪示可包含於計算儲存元件808中的一或多者中的組件的實例。計算儲存元件808a可包含資料選擇引擎853及儲存媒體830。資料選擇引擎853可包含解密邏輯854及解壓縮邏輯855,其可分別用於解密及/或解壓縮已經個別地加密及/或壓縮的資料塊以將資料塊復原為可對其進行操作的形式。資料選擇引擎853亦可包含可用於對所復原資料塊執行資料選擇或其他操作的資料選擇邏輯856。資料選擇引擎853亦可包含可用於實施用於儲存元件808a的KV介面的KV邏輯857。
在一些實施例中,圖8中所示出的系統可藉由用於儲存元件808中的一些或全部的KV介面來實施。取決於實施細節,此可促進及/或使得資料塊能夠以可變塊大小實施。出於示出的目的,圖8中所示出的實施例可描述為在儲存元件808中的一或多者處本端地實施具有所復原資料塊的資料選擇特徵,然而,所述原理可應用於可對所復原資料塊執行的任何類型的處理。
圖9A示出根據本揭露的實例實施例的用於具有本端資料復原的儲存方案的讀取操作及寫入操作的實例實施例。可例如使用圖8中所示出的系統來實施圖9A中所示出的操作。出於示出的目的,可假定第一操作群組958A由圖8中所示出的用戶端802及對象儲存伺服器叢集804執行,且可假定第二操作群組959A由圖8中所示出的一或多個儲存節點806及/或儲存元件808執行,然而,在其他實施例中,圖9A中所示出的操作可由任何其他組件執行。
參考圖9A,在寫入操作(例如,存進操作)期間,原始資料914(例如,一或多個對象)可由用戶端分塊以產生一或多個資料塊933。一或多個塊933可由用戶端個別地壓縮以產生一或多個經壓縮塊934,所述一或多個經壓縮塊934可發送至對象儲存伺服器且由對象儲存伺服器個別地加密以產生一或多個經壓縮及/或經加密塊935。對象儲存伺服器可擦除寫碼一或多個經壓縮及/或經加密塊935以產生一或多個同位塊936。
對象儲存伺服器可將一或多個經壓縮及經加密塊935以及一或多個同位塊936(例如,經由存進操作960)發送至一或多個儲存節點以儲存於一或多個儲存元件上。因此,在寫入操作之後,原始資料914(例如,對象)可跨一或多個儲存元件儲存於可能已經個別地修改(例如,壓縮及/或加密)的一或多個塊935中。
在讀取操作(例如,讀出操作)期間,例如,在儲存元件可能不復原資料塊及/或對資料塊執行操作的實施中,可自一或多個儲存元件讀取一或多個經個別地修改的資料塊935。若資料塊935中的一或多者丟失或損壞,則可使用一或多個同位塊936(例如,藉由儲存元件及/或儲存節點)來復原丟失及/或損壞的塊。
可將一或多個經壓縮及/或經加密塊935發送至對象儲存伺服器(例如,經由讀出操作962),所述對象儲存伺服器可解密一或多個經壓縮及/或經加密塊935以產生一或多個經壓縮及經解密塊934。可將一或多個經壓縮及經解密塊934發送至用戶端,所述用戶端可解壓縮一或多個資料塊934以產生經解密及經解壓縮資料塊933且將其組裝回原始資料914。
圖9B示出根據本揭露的實例實施例的用於具有本端資料復原及資料選擇操作的儲存方案的讀取操作的實例實施例。可例如使用圖8中所示出的系統來實施圖9B中所示出的操作。出於示出的目的,可假定第一操作群組958B由圖8中所示出的用戶端802及/或對象儲存伺服器叢集804執行,且可假定第二操作群組959B由圖8中所示出的一或多個儲存節點806及/或儲存元件808執行,然而,在其他實施例中,圖9B中所示出的操作可由任何其他組件執行。
為了開始讀取操作(例如,讀出操作963),一或多個計算儲存元件可接收執行資料選擇操作的一或多個請求,以自儲存於一或多個儲存元件處的一或多個資料塊935讀取一或多個資料子集。一或多個請求可包含例如指定所請求資料子集的一或多個表達式。
為了服務一或多個請求,可自一或多個儲存元件讀取一或多個經個別地修改的資料塊935。一或多個儲存元件可個別地解密一或多個資料塊935以產生一或多個經壓縮及經解密資料塊934。一或多個儲存元件可個別地解壓縮一或多個經壓縮及經解密資料塊934以產生一或多個所復原資料塊938。在一些實施例中,一或多個(例如,各個)所復原資料塊938可與原始資料914的對應部分相同。然而,在一些實施例中,僅可將所復原資料塊938復原為可使得儲存元件能夠對所復原資料執行有意義操作的形式(例如,一些實施例可能夠對尚未完全解壓縮的資料塊執行一或多個操作)。
儲存元件可對一或多個所復原資料塊938執行資料選擇操作(例如,掃描、過濾及/或類似者)以尋找由一或多個請求指定的一或多個資料子集939(指示為結果R)。若儲存元件已復原且對多於一個資料塊執行資料選擇操作,則儲存元件可集成資料選擇操作的結果以產生可發送至對象儲存伺服器及發送請求的用戶端的所集成結果940。另外或替代地,由多個儲存元件藉由資料選擇操作找到的結果R(例如,資料子集)939可由儲存節點集成且發送至對象儲存伺服器及發送請求的用戶端。
表1示出根據本揭露的實例實施例的可儲存於儲存系統中的一些實例資料。出於示出的目的,表1中所示的資料適用於房地產上市,但所述原理可應用於任何類型的資料。表1的每一列可對應於具有七個條目的記錄:記錄索引、以平方英尺為單位的生活空間、臥室的數目、盥洗室的數目、郵遞區號、建造年份以及定價。因此,舉例而言,前八個記錄可分別由索引1至索引8識別。
表1
索引 | 生活空間(平方英尺) | 臥室 | 盥洗室 | 郵遞區號 | 建造年份 | 定價(美元) |
1 | 2222 | 3 | 3.5 | 32312 | 1981 | 250000 |
2 | 1628 | 3 | 2 | 32308 | 2009 | 185000 |
3 | 3824 | 5 | 4 | 32312 | 1954 | 399000 |
4 | 1137 | 3 | 2 | 32309 | 1993 | 150000 |
5 | 3560 | 6 | 4 | 32309 | 1973 | 315000 |
6 | 2893 | 4 | 3 | 32312 | 1994 | 699000 |
7 | 3631 | 4 | 3 | 32309 | 1996 | 649000 |
8 | 2483 | 4 | 3 | 32312 | 2016 | 399000 |
9 | 2100 | 5 | 3 | 32305 | 1926 | 497000 |
10 | … |
圖10示出根據本揭露的實例實施例的來自表1的資料在三個計算儲存元件處的三個資料塊上的分佈的實施例。在圖10中所示出的實施例中,分號用作個別記錄(其可對應於表1中所示的列)之間的分隔符號,但在其他實施例中,可使用其他分隔技術。
參考圖10,前兩個記錄(由索引1及索引2識別)可完全擬合於儲存於第一儲存元件1008A上的第一資料塊1064A內。第三記錄(由索引3識別且由具有單一下劃線的條目指示)可在分別儲存於第一儲存元件1008A及第二儲存元件1008B上的資料塊1064A與資料塊1064B之間拆分(例如,分段)。第四記錄及第五記錄(由索引4及索引5識別)可完全擬合於儲存於第二儲存元件1008B上的第二資料塊1064B內。第六記錄(由索引6識別且由具有單一下劃線的條目指示)可在儲存於第二儲存元件1008B及第三儲存元件1008C上的資料塊1064B與資料塊1064C之間拆分。第七記錄及第八記錄(由索引7及索引8識別)可完全擬合於儲存於第三儲存元件1008C上的第三資料塊1064C內。第九記錄(由索引9識別且由具有單一下劃線的條目指示)可在儲存於第三儲存元件1008C上的第三1064C與另一儲存元件上的另一塊之間拆分。
出於示出的目的,計算儲存元件1008A、計算儲存元件1008B以及計算儲存元件1008C繪示為藉由如上文所描述的資料復原邏輯及/或處理部件來實施,所述資料復原邏輯及/或處理部件可使得儲存元件能夠例如藉由解密(以產生經解密資料塊1034)及/或解壓縮以產生所復原資料塊1038來復原經個別地修改的資料塊1035,且能夠對所復原資料塊1038執行諸如資料選擇操作的操作以自儲存於元件上的資料塊中的記錄中的一或多者獲得指定資料子集1039。然而,原理不限於此等實施細節,且可應用於可對儲存於任何類型的計算儲存元件上的任何類型的資料塊執行的任何類型的操作。出於示出的目的,本文中所描述的一些實施例可實施固定大小資料塊(例如,如可與基於區塊的儲存元件一起使用),然而,原理亦可應用於可實施可變大小資料塊(例如,如可與KV儲存元件一起使用)的實施例。
在一些實施例中,記錄可對應於對象。在本文中所描述的一些實施例中,可假定記錄(例如,JSON對象)小於塊,取決於實施細節,所述塊可確保對象可橫跨不多於兩個塊。在一些實施例中,分隔符號可實施為諸如分號的簡單字元。舉例而言,對於CSV對象,分隔符號可實施為回車。另外或替代地,一或多個分隔符號可藉由階層來判定。因此,偵測分隔符號可比簡單比較更複雜。舉例而言,對於JSON對象,一對大括號(「{…}」)可界定JSON對象。此外,在一些實施例中,JSON對象可具有嵌套式JSON陣列,因此最外部的一對大括號可界定單個記錄。因此,分隔符號可由最外部右大括號(「}」)界定。
再次參考圖10,完全擬合於儲存元件中的一者內的記錄(例如,記錄1、記錄2、記錄4、記錄5、記錄7以及記錄8)可由對應儲存元件處理。舉例而言,若用戶端發出對返回儲存於表1中的資料子集的資料選擇操作的讀取請求(例如,用戶端發送具有返回具有1980年之後的建造年份的所有記錄(或其部分)的表達式的讀取請求),則記錄1、記錄2、記錄4、記錄5、記錄7以及記錄8可由對應儲存元件直接處理。然而,記錄3、記錄6以及記錄9可不在儲存元件處本端地處理,因為其在兩個不同儲存元件處的資料塊之間分段。
圖11示出根據本揭露的實例實施例的伺服器可重建構在不同儲存元件處的資料塊之間拆分的記錄的儲存系統的實例實施例。圖11中所示出的實施例可包含對象儲存伺服器1104、經由儲存網路耦接至對象儲存伺服器1104的兩個儲存節點1106A及儲存節點1106B,以及可儲存包含類似於圖10中所示出的彼等記錄的記錄的資料塊的計算儲存元件1108A、計算儲存元件1108B、計算儲存元件1108C、計算儲存元件1108D以及計算儲存元件1108E。
參考圖11,儲存元件1108A至儲存元件1108E中的一或多者(例如,各者)可分別(直接地或經由其所在的儲存節點)發送其可對其對應資料塊1164A至資料塊1164E中的任何完整記錄執行的資料選擇操作的結果1165。然而,由於記錄3、記錄6以及記錄9可不在儲存元件處本端地處理,因此對象儲存伺服器1104可在一或多個集成緩衝區1166中重建構所拆分記錄。在一些實施例中,一或多個(例如,各個)集成緩衝區1166可重建構第i元件與第(i+1)元件之間的所拆分記錄。舉例而言,儲存元件1108A可將位於資料塊1164A中的記錄3的第一部分(例如,索引、生活空間、臥室、盥洗室、郵遞區號以及建造年份)(其亦可稱為片段)發送至對象儲存伺服器1104以與位於資料塊1164B中且由儲存元件1108B發送的記錄3的第二片段(定價)一起集成於第一緩衝區1166A中。在一些實施例中,對象儲存伺服器1104可包含N個集成緩衝區,其中N可為耦接至對象儲存伺服器1104的儲存元件的數目。
對象儲存伺服器1104可分別對集成緩衝區1166A、集成緩衝區1166B以及集成緩衝區1166C中的經重建構記錄3、記錄6以及記錄9執行選擇操作以產生結果1167。因此,在由個別儲存元件發送的結果1165與自集成緩衝區1166產生的結果1167之間,對象儲存伺服器1104可獲得由請求指定的一些或所有資料子集且將所述子集返回至用戶端。
然而,取決於實施細節,自儲存元件1108發送至對象儲存伺服器1104的記錄的片段中的一或多者(例如,各者)可消耗時間、頻寬及/或功率,增加潛時,減小處理資源利用率及/或類似者,且可導致對象儲存伺服器1104變成潛在瓶頸。
圖10及圖11中所示出的資料塊的分佈可由例如可試圖提供高層級的寫入及/或讀取平行度的資料分佈方案引起。舉例而言,圖12示出資料塊可首先跨多個儲存節點及多個儲存元件分佈的資料分佈方案的實施例。在圖12中所示出的實施例中,連續資料塊序列1268中的前八個資料塊1至資料塊8可在儲存節點1206A至儲存節點1206B處與儲存元件1208A至儲存元件1208I中的同位塊P一起同時儲存,如由平行寫入群組1269所繪示。因此,在此實例中,資料塊1、資料塊4、資料塊7、資料塊2、資料塊5、資料塊8、資料塊3、資料塊6以及資料塊P可同時儲存。取決於實施細節,此可在寫入資料時最大化平行度的量。
然而,前四個塊1、塊2、塊3以及塊4的掃描路徑1270前進經過三個不同儲存節點處的四個不同儲存元件。因此,自計算視角,極少或無連續資料塊可存在於相同儲存元件及/或相同儲存節點處,且因此,具有跨資料塊拆分的片段的記錄可能在儲存元件處未經本端地處理。取決於實施細節,此可增加儲存元件1208、儲存節點1206及/或對象或其他儲存伺服器之間的資料訊務。
圖13示出根據本揭露的實例實施例的具有空間局部性的資料分佈方案的實施例。在圖13中所示出的實施例中,資料置放策略可分佈連續資料塊,使得連續資料塊序列1371中的連續資料塊可如由掃描路徑1370所繪示儲存於相同儲存元件及/或相同儲存節點處的儲存元件處。舉例而言,連續資料塊1及資料塊2可儲存於儲存元件1308A處,連續資料塊3及資料塊4可儲存於儲存元件1308B處,連續資料塊5及資料塊6可儲存於儲存元件1308C處,以此類推。因此,可具有在資料塊1與資料塊2之間拆分的片段的記錄可在儲存元件1308A處集成及/或處理。類似地,可具有在資料塊3與資料塊4之間拆分的片段的記錄可在儲存元件1308B處集成及/或處理,可具有在資料塊5與資料塊6之間拆分的片段的記錄可在儲存元件1308C處集成及/或處理,以此類推。取決於實施細節,此可減少儲存元件1308、儲存節點1306及/或其他伺服器之間的資料訊務。
然而,即使圖13中所示出的資料分佈方案可使得更多記錄能夠在儲存元件1308中的一或多者處本端地處理,但取決於實施細節,亦可保留相對較高層級的寫入及/或讀取平行度。舉例而言,在圖13中所示出的實施例中,如由平行寫入1369所繪示,塊1、塊3、塊5、塊7、塊9、塊11、塊13、塊15以及塊P可同時儲存,且因此,取決於實施細節,可維持與圖12中所示出的實施例相同層級的平行度。在一些實施例中,根據本揭露的具有空間局部性的資料分佈方案可改變用戶端的存取圖案。因此,用戶端可知曉一或多個(例如,各個)元件上的塊的範圍,而非僅依序存取塊。用戶端可首先將塊分佈於伺服器之間且將塊分佈於伺服器內的元件之間,同時仍提供塊的空間局部性。
此外,圖13中所示出的實施例亦可實施階層式集成,其中可在兩個資料塊之間拆分的記錄的片段可在多個層級中的一者處集成及/或處理,在一些實施例中,所述層級可處於可能的最低層級處。舉例而言,如上文所提及,若記錄具有在儲存於儲存元件1308處的兩個連續資料塊之間拆分的片段,則片段可在儲存元件1308處集成及處理。然而,若兩個塊並不存在於相同儲存元件1308處,則所拆分記錄的片段可在較高層級處,例如在儲存節點1306處集成及處理。若兩個塊不存在於相同儲存節點處,則所拆分記錄的片段可在另一較高層級處,例如在對象儲存伺服器處集成及處理。取決於實施細節,此可減少在儲存元件、儲存節點及/或其他伺服器之間傳送的資料的量。此外,取決於實施細節,其可增加由諸如計算儲存元件的裝置執行的處理的量,所述計算儲存元件可減少與處理相關聯的時間、功率、頻寬、潛時及/或類似者。
圖14示出根據本揭露的實例實施例的具有空間局部性及階層式集成的儲存系統的實施例。圖14中所示出的實施例可包含儲存伺服器1404,及由儲存網路1444連接的一或多個儲存節點1406。儲存節點1406中的一或多者(例如,各者)可包含一或多個計算儲存元件1408。
儲存伺服器1404可包含資料分佈邏輯1474、集成邏輯1475及/或處理單元1476。資料分佈邏輯1474可經組態以基於空間局部性策略將資料塊分佈至一或多個儲存節點及/或一或多個儲存元件1408。舉例而言,在一些實施例中,資料分佈邏輯1474可以與圖13中所示出的方式類似的方式分佈連續資料塊。集成邏輯1475可經組態以集成在自儲存節點1406中的兩者及/或儲存元件1408中的兩者接收到的資料塊之間拆分的記錄的片段。舉例而言,在一些實施例中,集成邏輯1475可包含一或多個集成緩衝區,以自在資料塊之間拆分的記錄的片段重建構記錄。處理單元1476可經組態以對已由集成邏輯1475重建構的記錄執行一或多個操作(例如,資料選擇操作)。舉例而言,處理單元1476可包含資料處理單元(DPU)及/或中央處理單元(CPU)。
一或多個儲存節點1406可包含集成邏輯1477、處理單元1478。集成邏輯1477可經組態以集成在自儲存元件1408中的兩者接收到的資料塊之間拆分的記錄的片段。舉例而言,在一些實施例中,集成邏輯1477可包含一或多個集成緩衝區,以自在兩個儲存元件1408中的資料塊之間拆分的記錄的片段重建構記錄。處理單元1478可經組態以對已由集成邏輯1477重建構的記錄執行一或多個操作(例如,資料選擇操作)。舉例而言,處理單元1478可包含資料處理單元(DPU)及/或中央處理單元(CPU)。
一或多個儲存元件1408可包含集成邏輯1479及/或一或多個處理部件1429。集成邏輯1479可經組態以集成在儲存於儲存元件1408處的資料塊之間拆分的記錄的片段。一或多個處理部件1429可經組態以對儲存於儲存元件1408處的任何記錄(包含對已由集成邏輯1479重建構的記錄)執行一或多個操作(例如,資料選擇操作)。在一些實施例中,一或多個儲存元件1408可更包含資料復原邏輯,所述資料復原邏輯可經組態以將經修改資料塊復原為一或多個處理部件1429可對其執行操作的形式。舉例而言,資料復原邏輯可在經修改資料塊經加密的情況下解密所述經修改資料塊,在經修改資料塊經壓縮的情況下解壓縮所述經修改資料塊,及/或類似者。一或多個儲存元件1408可更包含儲存媒體1430,所述儲存媒體1430可用於儲存包含由儲存伺服器1404及/或一或多個儲存節點1406發送的一或多個經修改資料塊的任何資料。
圖15示出根據本揭露的實例實施例的具有空間局部性及階層式集成的對象儲存系統的實例實施例。可使用圖15中所示出的實施例以例如實施圖14中所示出的系統。圖15中所示出的系統可包含對象儲存伺服器1504,及由儲存網路連接的一或多個儲存節點1506。儲存節點1506中的一或多者(例如,各者)可包含一或多個計算儲存元件1508。
出於示出的目的,計算儲存元件1508A、計算儲存元件1508B、計算儲存元件1508C以及計算儲存元件1508D繪示為藉由如上文所描述的資料復原邏輯及/或處理部件來實施,所述資料復原邏輯及/或處理部件可使得儲存元件能夠例如藉由解密(以產生經解密資料塊1534)及/或解壓縮以產生所復原資料塊1538來復原經個別地修改的資料塊1535,且能夠對所復原資料塊1538執行諸如資料選擇操作的操作以自儲存於元件上的資料塊中的記錄中的一或多者獲得指定資料子集1539。然而,原理不限於此等實施細節,且可應用於可對儲存於任何類型的計算儲存元件上的任何類型的資料塊執行的任何類型的操作。出於示出的目的,本文中所描述的一些實施例可實施固定大小資料塊(例如,如可與基於區塊的儲存元件一起使用),然而,原理亦可應用於可實施可變大小資料塊(例如,如可與KV儲存元件一起使用)的實施例。
在圖15中所示出的實施例中,儲存元件可儲存資料塊1564A至資料塊1564F,所述資料塊可包含與表1中所示的資料類似但劃分成較小塊的資料。因此,第一儲存元件1508A可儲存連續塊1564A及塊1564B,第二儲存元件1508B可儲存連續塊1564C及塊1564D,且第三儲存元件1508C可儲存連續塊1564E及塊1564F,以此類推。在儲存於單個儲存元件處的兩個資料塊之間拆分的記錄的片段由粗體斜體指示。在儲存於相同儲存節點處的不同儲存元件上的兩個資料塊之間拆分的記錄的片段由單一下劃線指示。在儲存於不同儲存節點處的儲存元件上的兩個資料塊之間拆分的記錄的片段由雙下劃線指示。
第一儲存元件1508A可在由於第一記錄(由索引1指示)完全含有於塊1564A內而無集成的情況下對第一記錄執行資料選擇操作。第一儲存元件1508A可集成第二記錄(由索引2指示)的片段以重建構第二記錄,且對經重建構記錄執行資料選擇操作。第一儲存元件1508A可將選擇操作的結果1565A發送至第一儲存節點1506A的處理單元1578A。然而,由於僅第三記錄(由索引3指示)的第一片段存在於第一儲存元件1508A處,因此儲存元件處的剖析器可能故障且將部分資料(例如,第三記錄的第一片段)返回至第一儲存節點1506A的處理單元1578A,其可將第三記錄的第一片段載入至第一集成緩衝區1580A中。
第二儲存元件1508B可將第三記錄的第二片段返回至第一儲存節點1506A的處理單元1578A,其可將第三記錄的第二片段載入至第一集成緩衝區1580A中,藉此重建構第三記錄。處理單元1578A可對第三記錄執行資料選擇操作且將結果1581發送至對象儲存伺服器1504。
第二儲存元件1508B可在由於第四記錄(由索引4指示)完全含有於塊1564C內而無集成的情況下對第四記錄執行資料選擇操作。第二儲存元件1508B可集成第五記錄(由索引5指示)的片段以重建構第五記錄,且對經重建構記錄執行資料選擇操作。第二儲存元件1508B可將選擇操作的結果1565B發送至第一儲存節點1506A的處理單元1578A。然而,由於僅第六記錄(由索引6指示)的第一片段存在於第二儲存元件1508B處,因此儲存元件處的剖析器可能故障且將部分資料(例如,第六記錄的第一片段)返回至第一儲存節點1506A的處理單元1578A,其可將第三記錄的第一片段載入至第二集成緩衝區1580B中。
第三儲存元件1508C可將第六記錄的第二片段返回至第一儲存節點1506A的處理單元1578,其可將第六記錄的第二片段載入至第二集成緩衝區1580B中,藉此重建構第六記錄。處理單元1578可對經重建構第六記錄執行資料選擇操作且將結果1581發送至對象儲存伺服器1504。
第三儲存元件1508C可在由於第七記錄(由索引7指示)完全含有於塊1564E內而無集成的情況下對第七記錄執行資料選擇操作。第三儲存元件1508C可集成第八記錄(由索引8指示)的片段以重建構第八記錄,且對經重建構記錄執行資料選擇操作。第三儲存元件1508C可將選擇操作的結果1565C發送至第一儲存節點1506A的處理單元1578A。
由於僅第九記錄(由索引9指示)的第一片段存在於第三儲存元件1508C處,因此儲存元件處的剖析器可能故障。然而,由於在第一儲存節點1506A處的儲存元件1508中的任一者處可能沒有與資料塊1564F連續的其他資料塊,因此第三儲存元件1508C可將部分資料(例如,第九記錄的第一片段)返回至對象儲存伺服器1504處的集成緩衝區1582A。對象儲存伺服器1504可將第九記錄的第一片段自第二儲存節點1506B的另一儲存元件載入至第一集成緩衝區1582A中,以重建構第九記錄。對象儲存伺服器1504可對第九記錄執行資料選擇操作,以獲得可存在於第九記錄中的指定資料子集中的任一者。
在一些實施例中,對象儲存伺服器1504處的分配邏輯可分配M個集成緩衝區,其中M可指示其可支援的儲存節點1506的數目。第i個緩衝區可用於重建構在第i儲存節點與第(i+1)儲存節點之間拆分的資料。
在一些實施例中,儲存節點1506中的一或多者的處理單元1578處的集成邏輯可分配N個集成緩衝區,其中N可指示由儲存節點支援的儲存元件的數目。第j緩衝區可用於重建構在第j儲存元件與第(j+1)儲存元件之間拆分的資料。在一些實施例中,集成邏輯可剖析經重建構資料。在一些實施例中,此可例如使用已由儲存元件1508中的一或多者提供的部分配對資訊而最佳化。
因此,圖15中所示出的系統可實施階層式集成方案,其中可在兩個資料塊之間拆分的記錄的片段可在多個層級中的一者處集成及/或處理,取決於實施細節,所述層級可處於可能的最低層級處,藉此減少組件之間的訊務。作為另一實例,如圖13中所繪示,計算儲存元件可處置塊1與塊2之間以及塊3與塊4之間的分段,一或多個儲存節點可處置塊2與塊3之間以及塊4與塊5之間的分段,且較高層級伺服器(例如,對象儲存伺服器)可處置塊6與塊7之間以及塊12與塊13之間的分段。
取決於實施細節,根據本揭露的實例實施例的階層式集成方案可減少網路訊務,及/或減少處理分段塊的潛時。另外,其可例如由於一或多個儲存元件、儲存節點、對象儲存伺服器及/或類似者可並行地執行處理而保留或增加平行度,同時仍適應資料塊之間的記錄的分段。
儘管可在執行資料選擇操作的對象儲存系統的上下文中描述圖15中所示出的實施例,但原理可應用於對本端地一或多個儲存元件、儲存節點及/或類似者的一或多個資料塊中的一或多個記錄執行任何類型的操作的任何類型的儲存系統。
在根據本揭露的實例實施例的一些儲存方案中,資料塊可經修改以重建構所拆分記錄以使得儲存元件能夠對所述記錄執行操作(例如,資料選擇操作)。舉例而言,若記錄在第一資料塊與第二資料塊之間拆分,則來自第二塊的記錄的片段可附加至第一塊以創建第一塊中的記錄的更完整版本。
圖16示出根據本揭露的實例實施例的具有資料塊修改的儲存方案的實施例。圖16中所示出的實施例可包含對象儲存伺服器1604、一或多個儲存節點1606以及一或多個儲存元件1608。對象儲存伺服器1604、一或多個儲存節點1606以及一或多個儲存元件1608中的一或多者可分別包含可經組態以實施關於圖16所描述的操作的附加邏輯1683、附加邏輯1684及/或附加邏輯1685。
出於示出的目的,計算儲存元件1608A、計算儲存元件1608B以及計算儲存元件1608C繪示為藉由如上文所描述的資料復原邏輯及/或處理部件來實施,所述資料復原邏輯及/或處理部件可使得儲存元件能夠例如藉由解密(以產生經解密資料塊1634)及/或解壓縮以產生所復原資料塊1638來復原經個別地修改的資料塊1635,且能夠對所復原資料塊1638執行諸如資料選擇操作的操作以自儲存於元件上的資料塊中的記錄中的一或多者獲得指定資料子集1639。然而,原理不限於此等實施細節,且可應用於可對儲存於任何類型的計算儲存元件上的任何類型的資料塊執行的任何類型的操作。
資料塊1664A、資料塊1664B以及資料塊1664C分別示出在任何資料塊修改操作之前儲存元件1608A、儲存元件1608B以及儲存元件1608C處的資料塊的狀態。資料塊1686A、資料塊1686B以及資料塊1686C分別示出在資料塊修改操作之後儲存元件1608A、儲存元件1608B以及儲存元件1608C處的資料塊的狀態。資料塊1664A、資料塊1664B以及資料塊1664C中所示的資料可例如與表1中所示的資料一起實施。在圖16中所示出的實施例中,在資料塊之間拆分的記錄由單一下劃線指示。附加至塊的記錄的片段由具有雙下劃線的粗體斜體字體指示。
第一儲存元件1608A處的附加邏輯1685A可判定第三記錄(由索引3指示)可能不完整。附加邏輯1685A可例如藉由發送請求至可將丟失片段自第二儲存元件1608B轉遞的儲存節點1606A及/或對象儲存伺服器1604而請求記錄的丟失片段。替代地或另外,若第一儲存元件1608A及第二儲存元件1608B能夠例如使用同級間通信(例如,經由PCIe互連網狀架構、網路網狀架構及/或類似者)直接通信,則附加邏輯1685A可直接自第二儲存元件1608B請求丟失片段。
在第三記錄的丟失片段經轉遞至第一儲存元件1608A之後,附加邏輯1685A可將丟失片段附加至第一資料塊以重建構如藉由資料塊1686A所示的第三記錄,所述資料塊1686A示出在附加操作之後第一資料塊的狀態。儲存元件1608A可對第三記錄執行操作(例如,資料選擇操作)且將操作的結果1665發送至對象儲存伺服器1604。
類似地,第二儲存元件1608B處的附加邏輯1685B可判定第六記錄(由索引6指示)可能不完整。附加邏輯1685B可自儲存節點1606A、對象儲存伺服器1604及/或直接自第三儲存元件1608C請求記錄的丟失片段。在重建構如由資料塊1686B所示的第六記錄之後,儲存元件1608B可對第六記錄執行操作(例如,資料選擇操作)且將操作的結果1665發送至對象儲存伺服器1604。
在第三儲存元件1608C的情況下,附加邏輯1685C可自第二儲存節點1606B處的儲存元件接收第九記錄(由索引9指示)的丟失片段。在重建構如由資料塊1686C所示的第九記錄之後,儲存元件1608C可對第九記錄執行操作(例如,資料選擇操作)且將操作的結果1665發送至對象儲存伺服器1604。
與修改資料塊以重建構所拆分記錄相關的功能性中的任一者可以任何方式遍及系統的組件中的任一者而分佈。舉例而言,可在儲存元件1608、儲存節點1606及/或任何其他伺服器(諸如,對象儲存伺服器1604)處執行對資料塊中的不完整記錄的偵測。
在一些實施例中,儲存元件1608中的一或多者中的附加邏輯1685可例如藉由可在儲存元件處的一或多個處理部件上運行的資料選擇內核模組來實施。
根據本揭露的實例實施例的具有資料塊修改的儲存方案可利用KV儲存元件,其可易於實施可變塊大小。舉例而言,在一些實施例中,圖16中所示出的塊可具有預設塊大小,但特定塊的大小可經修改以適應所附加資料以重建構所拆分記錄。然而,在一些實施例中,可使用基於區塊的儲存元件。
在一些實施例中,塊可以系統性方式命名,因此各種組件可識別個別塊。舉例而言,對象的塊可由與基於數字序列的後綴組合的使用者對象名稱形成,其中個別數字指示對象中的塊的次序。
在一些實施例中,圖16中所示出的系統可實施為對象儲存器,其可支援附加操作以將資料附加至資料塊(例如,現有對象的塊)的末端。在一些實施例中,對象儲存器可支援對象的部分讀取,例如以使得僅自塊中讀取記錄的丟失片段變得更容易。
在圖16中所示出的實施例中,可藉由將丟失片段附加至塊的末端處的記錄的片段來重建構所拆分記錄。然而,在一些實施例中,可藉由將丟失片段附加至塊的開頭處的記錄的片段來重建構所拆分記錄,或可使用兩種技術的組合。
在一些實施例中,特定類型的組件或組件的組合可負責重建構所拆分記錄。舉例而言,在一些實施例中,在塊的末端處具有所拆分記錄的儲存元件可負責接觸另一儲存元件、儲存節點及/或對象儲存伺服器以獲得丟失片段且重建構記錄。(在一些實施例中,此程序可稱為對記錄進行故障處理。)舉例而言,在圖16中所示出的實施例中,第一儲存元件1608A可負責偵測不完整的第三記錄(例如,使用剖析邏輯),且將對丟失片段的請求發送至儲存節點1606B,所述儲存節點1606B可將丟失片段轉遞至第一儲存元件1608A。第一儲存元件1608A可將第三記錄的丟失末端片段附加至開頭片段以重建構完整的第三記錄。
在一些實施例中,偵測資料塊中的不完整記錄的任何組件可保存不完整記錄的複本(例如,使用塊識別符(塊ID)在記憶體中),或請求另一組件保存複本。所保存複本可用於例如在另一(例如,連續)塊上完成不完整記錄。舉例而言,圖16中所示出的第二儲存元件1608B可偵測儲存於元件處的資料塊1664B的第一記錄不完整。(在此實例中,資料塊1664B的第一(不完整)記錄可為表1的第三記錄(由索引3識別)。)即使第二儲存元件1608B可不負責重建構第三記錄,但其可將片段的複本(在此實例中,定價399000)儲存於記憶體中以稍後供第一儲存元件1608A使用。因此,若第一儲存元件1608A發送對第三記錄的最後一個片段的請求,則第二儲存元件1608B可在無需自儲存媒體擷取片段的情況下將所述片段轉遞至第一儲存元件1608A。
在一些實施例中,可不刪除塊的不完整的第一記錄,如例如資料塊1686B中所示。因此,除附加最後一個記錄的最後一個片段以外,原始塊可保持不變。此可能例如不僅適用於提供不完整的第一記錄作為另一塊的丟失片段,而且在如下文所描述的同位資料計算中可能不包含所附加資料的實施中作為備份資料。
在一些實施例中,記錄的丟失片段可僅在將對記錄執行操作(例如,資料選擇操作)時在儲存元件及/或其他組件之間轉遞。在一些實施例中,在資料轉遞操作及資料附加操作完成之後,儲存節點、對象儲存伺服器及/或類似者可被告知(例如,藉由附加資料的儲存元件)資料塊(例如,對象)已對準。因此,可在與其他元件無進一步通信的情況下對儲存元件本端地執行相同對象上的一或多個後續操作(例如,資料選擇操作)。此後,在一些實施例中,若塊的第一記錄不完整,則儲存元件(例如,可例如藉由資料選擇內核模組實施的附加邏輯1685)可忽略此記錄,因為所述儲存元件可安全地假定不完整記錄的重建構可由另一儲存元件處置。
在一些實施例中,根據本揭露的實例實施例的具有資料塊修改的儲存方案可截斷附加至資料塊的資料中的一些或全部以處理讀出操作,例如以避免返回複製資料。舉例而言,參考圖16,定價條目「399000」分別包含於儲存元件1608A及儲存元件1608B中的資料塊1686A及資料塊1686B兩者中。因此,包含兩個資料塊的讀出操作可返回條目兩次。
圖17示出根據本揭露的實例實施例的用於具有資料塊修改的儲存方案的讀出操作的實施例。圖17中所示出的組件及操作中的一些類似於圖16中所示出的彼等組件及操作,且可用以相同數位結束的附圖標號來識別。(為方便示出起見,未繪示儲存元件1708C及對應資料塊。)然而,在圖17中所示出的讀出操作1788中,塊大小可預設為固定的,且因此,塊的任何大小改變可假定為轉遞操作及附加操作的結果。讀出操作1788可讀取用於自儲存元件擦除寫碼的塊中的一些或全部(例如,使用者對象)。當讀出操作遇到大於預設組塊大小的塊時,其可對超出預設塊大小的額外資料執行截斷操作1789。因此,例如,在讀出操作期間,第一儲存元件1708A可基本上返回原始資料塊1764A,因為其在藉由轉遞操作及/或附加操作修改之前已存在。
在一些實施例中,根據本揭露的實例實施例的具有資料塊修改的儲存方案可執行擦除寫碼及資料復原,而不包含已附加至一或多個資料塊的資料中的一些或全部。舉例而言,在一些實施例中,若資料塊的尾部已更新(例如,藉由附加不完整記錄的丟失片段),則自整個所更新塊的視角,藉由擦除寫碼產生的同位可能不再有效。然而,取決於實施細節,即使資料塊藉由轉遞操作及附加操作修改,但附加至最後一個記錄的資料的同位仍可能不需要重新計算,例如此是因為原始資料仍可能存在於提供複製資料的塊中,且此原始資料的同位資料仍可能存在。若塊含有額外資料且塊丟失或變得損壞(例如,有缺陷),則可使用擦除寫碼復原原始塊。在此情況下,即使所復原塊的最後一個記錄可能再次不完整,但可藉由自另一塊執行轉遞操作及附加操作來重建構最後一個記錄,其方式類似於在最初重建構不完整塊時用於重建構所述不完整塊的方式,例如以進行資料選擇操作。此外,若在複製資料尚未復原時執行讀出或洗刷操作,則其可能不會干擾讀出或洗刷操作,因為例如如上文所描述,所附加資料可經截斷用於讀出操作。
儘管可在執行資料選擇操作的對象儲存系統的上下文中描述圖16及圖17中所示出的實施例,但原理可應用於對本端地一或多個儲存元件、儲存節點及/或類似者的一或多個資料塊中的一或多個記錄執行任何類型的操作的任何類型的儲存系統。此外,儘管一些實施例已描述為重建構完整記錄,但在一些實施例中,完整記錄可指可不等同於原始記錄但可更完整或足夠完整以對記錄執行有意義操作的記錄。
圖18示出根據本揭露的實例實施例的具有資料塊修改的儲存方案的實施例。圖18中所示出的實施例可用於實施圖16及圖17中所示出的實施例,或可藉由圖16及圖17中所示出的實施例來實施。
參考圖18,儲存方案可包含主機1824及經由儲存網路1844連接的一或多個儲存元件1808。主機1824可包含附加邏輯1883,且可藉由可支援一或多個儲存元件1808的一或多個資料轉遞操作及/或附加操作的任何組件或組件的組合來實施。舉例而言,在一些實施例中,主機1824可包含用戶端、對象儲存伺服器及/或儲存節點。附加邏輯1883可以任何方式分佈於主機1824的任何組件之間。
一或多個儲存元件1808可包含可實施上文所描述的資料附加功能性中的任一者的附加邏輯1885,及可對資料塊執行一或多個操作(例如,資料選擇操作)的一或多個處理部件1829,所述處理部件包含已藉由附加資料修改以重建構如本文中所描述的不完整記錄的資料塊。
在一些實施例中,一或多個儲存元件1808可更包含資料復原邏輯,所述資料復原邏輯可經組態以將經修改資料塊復原為一或多個處理部件可對其執行操作的形式。舉例而言,資料復原邏輯可在經修改資料塊經加密的情況下解密所述經修改資料塊,在經修改資料塊經壓縮的情況下解壓縮所述經修改資料塊,及/或類似者。一或多個儲存元件可更包含儲存媒體,所述儲存媒體可用於儲存包含由儲存伺服器及/或一或多個儲存節點發送的一或多個經修改資料塊的任何資料。
圖19示出根據本揭露的實例實施例的用於具有資料塊修改的儲存方案的主機裝置的實例實施例。圖19中所示出的主機1900可用於實施本文中所揭露的主機功能性中的任一者。主機1900可藉由諸如一或多個用戶端、一或多個對象儲存伺服器、一或多個儲存節點及/或類似者或其組合的任何組件或組件的組合來實施。
圖19中所示出的主機裝置1900可包含處理器1902,所述處理器1902可包含記憶體控制器1904、系統記憶體1906、主機控制邏輯1908及/或通信介面1910。圖19中所示出的組件中的任一者或全部可經由一或多個系統匯流排1912通信。在一些實施例中,圖19中所示出的組件中的一或多者可使用其他組件實施。舉例而言,在一些實施例中,主機控制邏輯1908可由執行儲存於系統記憶體1906或其他記憶體中的指令的處理器1902實施。
主機控制邏輯1908可包含及/或實施本文中所揭露的主機功能性中的任一者,所述主機功能性包含資料分塊邏輯426、資料分塊邏輯526及/或資料分塊邏輯826、資料修改邏輯427及/或資料修改邏輯527、壓縮邏輯846、加密邏輯847、擦除寫碼邏輯848、資料選擇邏輯849、叢集管理邏輯850、節點及元件管理邏輯851、處理單元852、資料分佈邏輯1474、集成邏輯1475及/或集成邏輯1477、處理單元1476、處理單元1478及/或處理單元1578、緩衝區1580、緩衝區1582、附加邏輯1683、附加邏輯1783及/或附加邏輯1883,及/或類似者。
圖20示出根據本揭露的實例實施例的具有資料塊修改的儲存元件的實例實施例。圖20中所示出的儲存元件2000可用於實施本文中所揭露的儲存元件功能性中的任一者。儲存元件2000可包含元件控制器2002、媒體轉譯層2004、儲存媒體2006、計算資源2008、處理控制邏輯2016及通信介面2010。圖20中所示出的組件可經由一或多個元件匯流排2012通信。在可將快閃記憶體用於儲存媒體2006中的一些或全部的一些實施例中,媒體轉譯層2004可部分或完全地實施為快閃轉譯層(FTL)。
在一些實施例中,處理控制邏輯2016可用於實施本文中所揭露的儲存元件功能性中的任一者,所述儲存元件功能性包含資料復原邏輯428及/或資料復原邏輯528、處理部件429、處理部件529及/或處理部件1429、指示邏輯531、資料選擇引擎853、解密邏輯854、解壓縮邏輯855、資料選擇邏輯856、鍵值邏輯857、集成邏輯1479、附加邏輯1685、附加邏輯1785及/或附加邏輯1885,及/或類似者。
如上文所提及,本文中所描述的功能性中的任一者可藉由硬體、軟體或其任何組合實施,所述功能性包含本文中所描述的主機(例如,用戶端、儲存伺服器、儲存節點及/或類似者)功能性、儲存元件功能性及/或類似者中的任一者,諸如資料分塊邏輯426、資料分塊邏輯526及/或資料分塊邏輯826、資料修改邏輯427及/或資料修改邏輯527、壓縮邏輯846、加密邏輯847、擦除寫碼邏輯848、資料選擇邏輯849、叢集管理邏輯850、節點及元件管理邏輯851、處理單元852、復原邏輯428及/或復原邏輯528、處理部件429、處理部件529及/或處理部件1429、指示邏輯531、資料選擇引擎853、解密邏輯854、解壓縮邏輯855、資料選擇邏輯856、鍵值邏輯857、資料分佈邏輯1474、集成邏輯1475及/或集成邏輯1477、處理單元1476、處理單元1478及/或處理單元1578、緩衝區1580、緩衝區1582、集成邏輯1479、附加邏輯1685、附加邏輯1785及/或附加邏輯1885及/或類似者,所述硬體、軟體或其任何組合包含組合邏輯、時序邏輯、一或多個定時器、計數器、暫存器、狀態機、諸如DRAM及/或SRAM的揮發性記憶體、非揮發性記憶體及/或其任何組合、CPLD、FPGA、ASIC、包含諸如x86處理器的CISC處理器及/或諸如ARM處理器的RISC處理器的CPU、GPU、NPU及/或類似者,其執行儲存於任何類型的記憶體中的指令。在一些實施例中,一或多個組件可實施為系統晶片(SOC)。
圖21示出根據本揭露的實例實施例的用於計算儲存器的方法的實施例。方法可在操作2102處開始。在操作2104處,方法可在儲存元件處儲存第一資料部分,其中第一資料部分包含記錄的第一片段,且第二資料部分包含記錄的第二片段。舉例而言,第一資料部分及第二資料部分可儲存於兩個不同儲存元件處。在操作2106處,方法可將記錄的第二片段附加至第一資料部分。舉例而言,第一資料部分可藉由增加部分大小以包含記錄的第二片段來修改。方法可在操作2108處結束。
圖22A示出根據本揭露的實例實施例的在資料塊修改之前的儲存方案的另一實施例。
圖22B示出根據本揭露的實例實施例的在資料塊修改之後的圖22A中所示出的儲存方案的實施例。圖22A及圖22B可統稱為圖22。
圖22A及圖22B中所示出的實施例可包含第一儲存節點2206A及第二儲存節點2206B。儲存節點2206A及儲存節點2206B可由儲存網路(未繪示)連接。儲存節點2206可包含一或多個計算儲存元件2208A、計算儲存元件2208B及/或計算儲存元件2208C,其可統稱為計算儲存元件2208。在圖22A及圖22B中所示出的實施例中,第一儲存節點2206A可分別包含第一儲存元件2208A及第二儲存元件2208B,且第二儲存節點2206B可包含儲存元件2208C。
一種用於使用圖22A及圖22B中所示出的實施例的計算儲存器的方法可包含在第一儲存元件2208A處儲存第一資料部分2264A,其中第一資料部分2264A可包含記錄2291的第一片段2291A。第二資料部分2264B可包含記錄2291的第二片段2291B。方法可更包含將記錄2291的第二片段2291A附加至第一資料部分2264A。在一些實施例中,方法可更包含在第二儲存元件2208B處儲存資料部分2264B,且附加可包含將記錄2291的第一片段2291A自第二儲存元件2208B複製至第一儲存元件2208A,如圖22A中所繪示。取決於實施細節,此可導致記錄2291位於第一儲存元件2208A中的經修改資料部分2286A中,如圖22B中所繪示。取決於實施細節,此可使得第一儲存元件2208A能夠對記錄2291執行操作。
儘管第二資料部分2264B經繪示於第一儲存節點2206A中的第二儲存元件2208B中,但第二資料部分2264B可位於其他的任何位置,包含例如另一儲存元件中、另一儲存節點中,及/或類似者。
在一些實施例中,第二資料部分2264B可包含第二記錄2292的第一片段2292A。在一些實施例中,方法可更包含在第三儲存元件2208C處儲存第三資料部分2264C,其中第三資料部分2264C可包含第二記錄2292的第二片段2292B。在一些實施例中,方法可更包含將第二記錄2292的第一片段2292A附加至第二資料部分2264B。在一些實施例中,附加可包含將記錄2292的第一片段2292A自第三儲存元件2208C複製至第二儲存元件2208B,如圖22A中所繪示。取決於實施細節,此可導致第二記錄2292位於第二儲存元件2208B中的經修改資料部分2286B中,如圖22B中所繪示。取決於實施細節,此可使得第二儲存元件2208B能夠對第二記錄2292執行操作。
圖21、圖22A以及圖22B中所示出的實施例以及本文中所描述的所有其他實施例為實例操作及/或組件。在一些實施例中,可省略一些操作及/或組件,及/或可包含其他操作及/或組件。此外,在一些實施例中,操作及/或組件的時間及/或空間次序可變化。儘管一些組件及/或操作可示出為個別組件,但在一些實施例中,單獨繪示的一些組件及/或操作可整合至單一組件及/或操作中,及/或繪示為單一組件及/或操作的一些組件及/或操作可藉由多個組件及/或操作實施。
上文所揭露的一些實施例已在各種實施細節的上下文中描述,但本揭露的原理不限於此等或任何其他特定細節。舉例而言,一些功能性已描述為藉由某些組件實施,但在其他實施例中,所述功能性可分佈於不同位置中的不同系統及組件之間且具有各種使用者介面。某些實施例已描述為具有特定程序、操作等,但此等術語亦涵蓋其中特定程序、操作等可藉由多個程序、操作等實施或其中多個程序、操作等可整合至單一程序、步驟等中的實施例。對組件或部件的提及可僅指組件或部件的一部分。舉例而言,對區塊的提及可指整個區塊或一或多個子區塊。在本揭露及申請專利範圍中,諸如「第一」及「第二」的術語的使用可僅出於區分其修改的事物的目的,且除非自上下文另外顯而易見,否則可並不指示任何空間或時間次序。在一些實施例中,對事物的提及可指事物的至少一部分,例如,「基於」可指「至少部分地基於」及/或類似者。對第一部件的提及可能不暗示存在第二部件。本文中所揭露的原理具有獨立效用且可單獨地實施,且並非每一實施例皆可利用每一原理。然而,原理亦可實施於各種組合中,所述各種組合中的一些可以協作方式放大個別原理的益處。
上文所描述的各種細節及實施例可經組合以產生根據此專利揭露內容的發明原理的額外實施例。由於可在不脫離本發明概念的情況下修改此專利揭露內容的發明性原理的配置及細節,因此將此類改變及修改視為落入以下申請專利範圍的範疇內。
102、302、602、702、802:用戶端
104、304、604、704:伺服器
108、308、408、508、608、708、808、808a、1008A、1008B、1008C、1108、1108A、1108B、1108C、1108D、1108E、1208、1208A、1208B、1208C、1208D、1208E、1208F、1208G、1208H、1208I、1308、1308A、1308B、1308C、1408、1508、1508A、1508B、1508C、1508D、1608、1608A、1608B、1608C、1708A、1708C、1808、2000、2208、2208A、2208B、2208C:儲存元件
110A、110B、310A、610A、610B、958A、958B:第一群組
112A、112B、312A、612A、959A、959B:第二群組
114、314、614、714、914:原始資料
116、316:經壓縮資料
118、318:經加密資料
120、320、633、634、635、734、735、738、933、934、935、938、1034、1035、1038、1064A、1064B、1064C、1164A、1164B、1164C、1164E、1534、1535、1538、1564A、1564B、1564C、1564D、1564E、1564F、1634、1635、1638、1664A、1664B、1664C、1686A、1686B、1686C、1764A:資料塊
121、321、636、736、936:同位塊
201、213:對象儲存服務
203A、203B、203C:對象
205:資料桶
207、217:用戶端計算操作
209:資料選擇操作
211:另一操作
213a、323、740、939、1039、1539、1639:資料子集
219:資料復原操作
312B、612B:操作群組
422:連接
424、524、1824、1900:主機
426、526、826:資料分塊邏輯
427、527:資料修改邏輯
428、528:資料復原邏輯
429、529、1429、1829:處理部件
430、830、1430、2006:儲存媒體
531:指示邏輯
532、632:指示
710A:用戶端操作
712A:伺服器操作
737-1、737-2、737-3:資料復原及資料選擇操作
739、940、1165、1167、1565、1565A、1565B、1565C、1581、1665:結果
804:對象儲存伺服器叢集
806、1106A、1106B、1206、1206A、1206B、1306、1406、1506、1506A、1506B、1606A、1606B、2206A、2206B:儲存節點
842:網路連接
844、1444、1844:儲存網路
846:壓縮邏輯
847:加密邏輯
848:擦除寫碼邏輯
849、856:資料選擇邏輯
850:叢集管理邏輯
851:節點及儲存元件管理邏輯
852、1476、1478、1578、1578A:處理單元
853:資料選擇引擎
854:解密邏輯
855:解壓縮邏輯
857:鍵值邏輯
960:存進操作
962、963、1788:讀出操作
1104、1504、1604:對象儲存伺服器
1166、1166A、1166B、1166C、1580、1580A、1580B、1582、1582A:集成緩衝區
1268、1371:連續資料塊序列
1269、1369:平行寫入
1270、1370:掃描路徑
1404:儲存伺服器
1474:資料分佈邏輯
1475、1477、1479:集成邏輯
1683、1684、1685、1685A、1685B、1685C、1783、1785、1883、1885:附加邏輯
1789:截斷操作
1902:處理器
1904:記憶體控制器
1906:系統記憶體
1908:主機控制邏輯
1910、2010:通信介面
1912:系統匯流排
2002:元件控制器
2004:媒體轉譯層
2008:計算資源
2012:元件匯流排
2016:處理控制邏輯
2102、2104、2106、2108:操作
2264A、2264B、2264C、2286A、2286B:資料部分
2291、2292:記錄
2291A、2292A:第一片段
2291B、2292B:第二片段
貫穿諸圖,出於說明性目的,圖式未必按比例繪製且類似結構或功能的部件可通常由相似附圖標號或其部分表示。圖式僅意欲促進對本文中所描述的各種實施例的描述。圖式並不描述本文中所揭露的教示的每一態樣且不限制申請專利範圍的範疇。為防止圖式變得模糊,並非可繪示所有組件、連接以及類似者,且並非所有組件可具有附圖標號。然而,組件組態的圖案可自圖式容易地顯而易見。隨附圖式與本說明書一起示出本揭露的實例實施例,且與描述一起用來解釋本揭露的原理。
圖1A示出根據本揭露的實例實施例的具有伺服器側加密的對象儲存方案的實施例。
圖1B示出根據本揭露的實例實施例的具有用戶端側加密的對象儲存方案的實施例。
圖2A示出根據本揭露的實例實施例的可將對象返回至使用者元件的對象儲存方案的實施例。
圖2B示出根據本揭露的實例實施例的具有資料選擇特徵的對象儲存方案的實施例。
圖3A示出根據本揭露的實例實施例的具有資料選擇特徵的對象儲存方案的寫入操作的實施例。
圖3B示出根據本揭露的實例實施例的具有資料選擇特徵的對象儲存方案的讀取操作的實施例。
圖4示出根據本揭露的實例實施例的具有本端資料復原的儲存系統的實施例。
圖5示出根據本揭露的實例實施例的具有本端資料復原的儲存系統的另一實施例。
圖6A示出根據本揭露的實例實施例的用於具有本端資料復原及伺服器側加密的儲存方案的寫入操作的實例實施例。
圖6B示出根據本揭露的實例實施例的用於具有本端資料復原及用戶端側加密的儲存方案的寫入操作的實例實施例。
圖7A示出根據本揭露的實例實施例的用於具有本端資料復原的儲存方案的寫入操作的實例實施例。
圖7B示出根據本揭露的實例實施例的具有用於具有本端資料復原的儲存方案的資料選擇的讀取操作的實例實施例。
圖8示出根據本揭露的實例實施例的用於具有本端資料復原的對象儲存方案的系統架構的實例實施例。
圖9A示出根據本揭露的實例實施例的用於具有本端資料復原的儲存方案的讀取操作及寫入操作的實例實施例。
圖9B示出根據本揭露的實例實施例的用於具有本端資料復原及資料選擇操作的儲存方案的讀取操作的實例實施例。
圖10示出根據本揭露的實例實施例的來自表1的資料在三個計算儲存元件處的三個資料塊上的分佈的實施例。
圖11示出根據本揭露的實例實施例的伺服器可重建構在不同儲存元件處的資料塊之間拆分的記錄的儲存系統的實例實施例。
圖12示出根據本揭露的實例實施例的資料塊可首先在多個儲存節點及多個儲存元件上分佈的資料分佈方案的實施例。
圖13示出根據本揭露的實例實施例的具有空間局部性的資料分佈方案的實施例。
圖14示出根據本揭露的實例實施例的具有空間局部性及階層式集成的儲存系統的實施例。
圖15示出根據本揭露的實例實施例的具有空間局部性及階層式集成的對象儲存系統的實例實施例。
圖16示出根據本揭露的實例實施例的具有資料塊修改的儲存方案的實施例。
圖17示出根據本揭露的實例實施例的用於具有資料塊修改的儲存方案的讀出操作的實施例。
圖18示出根據本揭露的實例實施例的具有資料塊修改的儲存方案的實施例。
圖19示出根據本揭露的實例實施例的用於具有資料塊修改的儲存方案的主機裝置的實例實施例。
圖20示出根據本揭露的實例實施例的具有資料塊修改的儲存元件的實例實施例。
圖21示出根據本揭露的實例實施例的用於計算儲存器的方法的實施例。
圖22A示出根據本揭露的實例實施例的在資料塊修改之前的儲存方案的另一實施例。
圖22B示出根據本揭露的實例實施例的在資料塊修改之後的圖22A中所示出的儲存方案的實施例。
2102、2104、2106、2108:操作
Claims (20)
- 一種用於計算儲存器的方法,所述方法包括: 在儲存元件處儲存第一資料部分,其中所述第一資料部分包括記錄的第一片段,且第二資料部分包括所述記錄的第二片段;以及 將所述記錄的所述第二片段附加至所述第一資料部分。
- 如請求項1所述的方法,更包括在所述儲存元件處對所述記錄的所述第一片段及所述第二片段執行操作。
- 如請求項1所述的方法,更包括: 判定所述第一資料部分包括記錄的第一片段且第二資料部分包括所述記錄的第二片段, 其中將所述記錄的所述第二片段附加至所述第一資料部分包括基於所述判定將所述記錄的所述第二片段附加至所述第一資料部分。
- 如請求項1所述的方法,其中: 所述儲存元件為第一儲存元件,以及 所述第二資料部分儲存於第二儲存元件處。
- 如請求項4所述的方法,更包括將所述記錄的所述第二片段自所述第二儲存元件發送至所述第一儲存元件。
- 如請求項1所述的方法,更包括: 儲存所述記錄的所述第二片段;以及 將所述記錄的所述第二片段發送至所述儲存元件。
- 如請求項6所述的方法,更包括: 接收對所述記錄執行操作的請求, 其中將所述記錄的所述第二片段發送至所述儲存元件包括基於所述請求將所述記錄的所述第二片段發送至所述儲存元件。
- 如請求項1所述的方法,更包括: 接收對所述記錄執行操作的請求, 其中將所述記錄的所述第二片段附加至所述第一資料部分包括基於所述請求將所述記錄的所述第二片段附加至所述第一資料部分。
- 如請求項1所述的方法,更包括自所述儲存元件讀取所述資料部分。
- 如請求項9所述的方法,其中自所述儲存元件讀取所述資料部分包括修改所述記錄。
- 如請求項10所述的方法,其中修改所述記錄包括截斷所述記錄的所述第二片段。
- 如請求項1所述的方法,更包括基於所述附加將通知發送至主機。
- 一種儲存元件,包括: 儲存媒體; 儲存元件控制器,經組態以接收第一資料部分,其中所述第一資料部分包括記錄的第一片段;以及 附加邏輯,經組態以將來自第二資料部分的所述記錄的第二片段附加至所述第一資料部分。
- 如請求項13所述的儲存元件,更包括經組態以對所述記錄的所述第一片段及所述第二片段執行操作的處理部件。
- 如請求項13所述的儲存元件,其中所述儲存元件控制器進一步經組態以接收所述記錄的所述第二片段。
- 如請求項13所述的儲存元件,其中所述附加邏輯進一步經組態以基於將來自第二資料部分的所述記錄的第二片段附加至所述第一資料部分而發送通知。
- 如請求項13所述的儲存元件,其中所述附加邏輯經組態以作出所述記錄的所述第二片段在所述第二資料部分中的判定。
- 如17所述的儲存元件,其中所述附加邏輯經組態以基於所述判定請求所述記錄的所述第二片段。
- 一種系統,包括: 儲存元件;以及 主機,包括經組態以進行以下操作的邏輯: 將第一資料部分發送至所述儲存元件,其中所述第一資料部分包括記錄的第一片段;以及 判定所述記錄的第二片段在第二資料部分中。
- 如請求項19所述的系統,其中所述邏輯進一步經組態以將所述記錄的所述第二片段發送至所述儲存元件。
Applications Claiming Priority (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163231709P | 2021-08-10 | 2021-08-10 | |
US202163231718P | 2021-08-10 | 2021-08-10 | |
US202163231711P | 2021-08-10 | 2021-08-10 | |
US63/231,709 | 2021-08-10 | ||
US63/231,718 | 2021-08-10 | ||
US63/231,711 | 2021-08-10 | ||
US17/591,597 US20230046030A1 (en) | 2021-08-10 | 2022-02-02 | Systems, methods, and apparatus for data resizing for computational storage |
US17/591,597 | 2022-02-02 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202307645A true TW202307645A (zh) | 2023-02-16 |
Family
ID=82656500
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111129342A TW202307645A (zh) | 2021-08-10 | 2022-08-04 | 用於調整計算存儲器的數據大小的系統、方法和裝置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230046030A1 (zh) |
EP (1) | EP4135202A1 (zh) |
KR (1) | KR20230023585A (zh) |
CN (1) | CN115705160A (zh) |
TW (1) | TW202307645A (zh) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8874991B2 (en) * | 2011-04-01 | 2014-10-28 | Cleversafe, Inc. | Appending data to existing data stored in a dispersed storage network |
US10346066B2 (en) * | 2016-06-27 | 2019-07-09 | EMC IP Holding Company LLC | Efficient erasure coding of large data objects |
US10387673B2 (en) * | 2017-06-30 | 2019-08-20 | Microsoft Technology Licensing, Llc | Fully managed account level blob data encryption in a distributed storage environment |
US10310765B1 (en) * | 2017-08-31 | 2019-06-04 | Amazon Technologies, Inc. | Record-oriented data storage for a distributed storage system |
WO2019183958A1 (zh) * | 2018-03-30 | 2019-10-03 | 华为技术有限公司 | 数据写入方法、客户端服务器和系统 |
US10929206B2 (en) * | 2018-10-16 | 2021-02-23 | Ngd Systems, Inc. | System and method for outward communication in a computational storage device |
EP3938882A4 (en) * | 2019-03-12 | 2022-12-07 | Intel Corporation | COMPUTE DATA STORAGE SYSTEMS |
US11080132B2 (en) * | 2019-07-12 | 2021-08-03 | Micron Technology, Inc. | Generating error checking data for error detection during modification of data in a memory sub-system |
US11177012B1 (en) * | 2020-06-24 | 2021-11-16 | Western Digital Technologies, Inc. | Fast copy through controller |
-
2022
- 2022-02-02 US US17/591,597 patent/US20230046030A1/en active Pending
- 2022-07-29 EP EP22187683.2A patent/EP4135202A1/en active Pending
- 2022-08-04 TW TW111129342A patent/TW202307645A/zh unknown
- 2022-08-08 KR KR1020220098684A patent/KR20230023585A/ko unknown
- 2022-08-08 CN CN202210942898.9A patent/CN115705160A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230046030A1 (en) | 2023-02-16 |
KR20230023585A (ko) | 2023-02-17 |
CN115705160A (zh) | 2023-02-17 |
EP4135202A1 (en) | 2023-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12069167B2 (en) | Unlocking data stored in a group of storage systems | |
US9767070B2 (en) | Storage system with a memory blade that generates a computational result for a storage device | |
CN116601596A (zh) | 使用数据相似度来选择分段进行垃圾收集 | |
US10261946B2 (en) | Rebalancing distributed metadata | |
US11144638B1 (en) | Method for storage system detection and alerting on potential malicious action | |
US11487460B2 (en) | Deferred reclamation of invalidated entries associated with replication in a log-structured array | |
US11755254B2 (en) | Network storage gateway | |
US10255288B2 (en) | Distributed data deduplication in a grid of processors | |
US9805046B2 (en) | Data compression using compression blocks and partitions | |
EP4135201A1 (en) | Systems, methods, and apparatus for hierarchical aggregation for computational storage | |
EP4135203A1 (en) | Systems, methods, and apparatus for processing data at a storage device | |
EP4135200A1 (en) | Systems, methods, and apparatus for dividing and compressing data | |
EP4134818A1 (en) | Systems, methods, and apparatus for dividing and encrypting data | |
TW202307645A (zh) | 用於調整計算存儲器的數據大小的系統、方法和裝置 | |
CN113973138B (zh) | 用于使用数据访问网关优化对数据集群的数据节点的访问的方法和系统 | |
CN113973137B (zh) | 用于使用数据访问网关和投标计数器优化对数据集群的数据节点的访问的方法和系统 | |
CN113973112B (zh) | 用于使用数据访问网关和基于元数据映射的投标优化对数据集群的数据节点的访问的方法和系统 | |
WO2016194159A1 (ja) | 計算機、データベース管理方法、データベース管理システム | |
Chen et al. | WAL-assisted Tiering: Painlessly Improving Your Favorite Log-Structured KV Store Instead of Building a New One | |
CN117616378A (zh) | 在分区式驱动器存储系统中高效地写入数据 |