CN115878028A - 用于计算存储的方法、存储装置和存储系统 - Google Patents
用于计算存储的方法、存储装置和存储系统 Download PDFInfo
- Publication number
- CN115878028A CN115878028A CN202210953533.6A CN202210953533A CN115878028A CN 115878028 A CN115878028 A CN 115878028A CN 202210953533 A CN202210953533 A CN 202210953533A CN 115878028 A CN115878028 A CN 115878028A
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- chunks
- storage device
- logic
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
- 238000003860 storage Methods 0.000 title claims abstract description 416
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000001914 filtration Methods 0.000 claims abstract description 12
- 238000011084 recovery Methods 0.000 claims description 55
- 238000012545 processing Methods 0.000 claims description 52
- 238000007906 compression Methods 0.000 claims description 25
- 230000006835 compression Effects 0.000 claims description 25
- 230000004048 modification Effects 0.000 claims description 20
- 238000012986 modification Methods 0.000 claims description 20
- 230000006837 decompression Effects 0.000 claims description 16
- 238000000638 solvent extraction Methods 0.000 claims description 16
- 230000006870 function Effects 0.000 description 17
- 238000007726 management method Methods 0.000 description 11
- 230000000903 blocking effect Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 230000014509 gene expression Effects 0.000 description 8
- 230000002776 aggregation Effects 0.000 description 6
- 238000004220 aggregation Methods 0.000 description 6
- 239000000872 buffer Substances 0.000 description 6
- 230000014759 maintenance of location Effects 0.000 description 5
- 230000002441 reversible effect Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000011435 rock Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000002195 synergetic effect Effects 0.000 description 1
- 229920002803 thermoplastic polyurethane Polymers 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- 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/6005—Decoder aspects
-
- 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
- H03M7/6023—Parallelization
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Image Processing (AREA)
Abstract
提供用于计算存储的方法、存储装置和存储系统。所述用于计算存储的方法可包括:在存储装置处接收数据的一部分的修改版本;在存储装置处从数据的所述一部分的修改版本生成数据的恢复部分;和在存储装置处对数据的恢复部分执行操作。所述方法还可包括:在存储装置处接收用于对数据的所述一部分执行所述操作的请求。生成的步骤可包括:对数据的所述一部分的修改版本进行解压缩。生成的步骤可包括:对数据的所述一部分的修改版本进行解密。所述方法还可包括:从存储装置发送对数据的恢复部分的所述操作的结果。所述操作可包括滤除操作。所述操作可包括扫描操作。所述方法还可包括:对数据进行划分,以生成数据的所述一部分。
Description
本申请要求通过引用包含的于2021年8月10日提交的题为“Object Processingand Filtering for Computational Storage(用于计算存储的对象处理和滤除)”的第63/231,709号美国临时专利申请和通过引用包含的于2021年8月10日提交的题为“DataPlacement with Spatial Locality and Hierarchical Aggregation forComputational Storage(用于计算存储的具有空间局部性和层级聚合的数据放置)”的第63/231,711号美国临时专利申请的优先权和权益。
技术领域
本公开一般涉及存储系统,并且更具体地涉及用于在存储装置处理数据的系统、方法和设备。
背景技术
计算存储装置可包括可对存储在装置处的数据进行操作的一个或多个处理资源。主机可例如通过将命令发送到存储装置来将处理任务卸载到存储装置,该命令指示要对存储在装置处的数据执行的操作。存储装置可使用一个或多个处理资源来执行命令。存储装置可将操作的结果发送到主机和/或将结果存储在装置处。
在该背景技术部分中公开的上面的信息仅用于增强对发明原理的背景的理解,因此它可包含不构成现有技术的信息。
发明内容
一种用于计算存储的方法可包括:在存储装置处接收数据的一部分的修改版本;在存储装置处从数据的所述一部分的修改版本生成数据的恢复部分;和在存储装置处对数据的恢复部分执行操作。所述方法还可包括:在存储装置处接收用于对数据的所述一部分执行所述操作的请求。生成的步骤可包括:对数据的所述一部分的修改版本进行解压缩。生成的步骤可包括:对数据的所述一部分的修改版本进行解密。所述方法还可包括:从存储装置发送对数据的恢复部分的所述操作的结果。所述操作可包括滤除操作。所述操作可包括扫描操作。所述方法还可包括:对数据进行划分,以生成数据的所述一部分。划分的步骤可包括:通过客户端对数据进行划分。划分的步骤可包括:基于指示来对数据进行划分。划分的步骤可包括:通过存储装置基于所述指示来对数据进行划分。所述指示可包括压缩方案。所述指示可包括部分大小。所述指示可通过存储装置提供。所述指示可通过存储服务器提供。所述方法还可包括:对数据的所述一部分进行修改,以生成数据的所述一部分的修改版本。修改的步骤可包括:对数据的所述一部分进行压缩。修改的步骤可包括:对数据的所述一部分进行加密。修改的步骤可包括:通过客户端对数据的所述一部分进行修改。修改的步骤可包括:通过服务器对数据的所述一部分进行修改。所述方法还可包括:对数据的修改一部分进行纠删编码。存储装置可以是第一存储装置,所述操作可以是第一操作,并且数据的恢复部分可以是数据的第一恢复部分,所述方法还可包括:对通过第一存储装置对数据的第一恢复部分的第一操作的第一结果和通过第二存储装置对数据的第二恢复部分的第二操作的第二结果进行聚合。数据的所述一部分可包括对象。存储装置可被配置为:使用键值接口接收数据的所述一部分的修改版本。所述方法还可包括:模拟用于存储装置的键值接口。
存储装置可包括:存储介质;数据恢复逻辑,被配置为:从数据的修改部分生成数据的恢复部分;和数据处理元件,被配置为:对数据的恢复部分执行操作。数据恢复逻辑可被配置为:接收请求,并基于所述请求生成数据的恢复部分。所述请求可包括查询,并且数据处理元件可被配置为:基于所述查询来执行所述操作。数据恢复逻辑可包括解密逻辑。数据恢复逻辑可包括解压缩逻辑。所述操作可包括数据选择操作。所述存储装置还可包括:指示逻辑,被配置为发送关于所述存储装置的指示。所述指示可包括部分大小。
一种系统可包括:存储装置;和主机,包括:数据划分逻辑,被配置为:将数据划分为数据的一个或多个部分;和数据修改逻辑,被配置为:通过对所述一个或多个部分中的一个部分进行修改来生成数据的修改部分,其中,主机可被配置为将数据的修改部分发送到存储装置,其中,存储装置可包括:数据恢复逻辑,被配置为:从数据的修改部分生成数据的恢复部分;和数据处理元件,被配置为:对数据的恢复部分执行操作。存储装置还可包括:指示逻辑,被配置为向主机发送指示,并且数据划分逻辑可被配置为:基于所述指示将数据划分为数据的一个或多个部分。主机可被配置为将请求发送到存储装置,并且数据处理元件可被配置为:基于所述请求执行所述操作。查询可包括表达式,所述操作可包括数据选择操作,并且数据处理元件可被配置为:基于所述表达式来执行数据选择操作。
附图说明
附图不一定按比例绘制,并且在整个附图中,为了说明的目的,类似结构或功能的元件可通常由相同的附图标记或其部分表示。附图仅意在便于描述在此描述的各种实施例。附图没有描述在此公开的教导的每个方面,并且不限制权利要求的范围。为了防止附图变得模糊,不是全部的组件、连接等都会被示出,并且不是全部的组件都会具有附图标记。然而,组件配置的图案可从附图容易地显而易见。附图与说明书一起示出本公开的示例实施例,并且与说明书一起用于解释本公开的原理。
图1A示出根据公开的示例实施例的具有服务器侧加密的对象存储方案的实施例。
图1B示出根据公开的示例实施例的具有客户端侧加密的对象存储方案的实施例。
图2A示出根据公开的示例实施例的可将对象返回给用户的对象存储方案的实施例。
图2B示出根据公开的示例实施例的具有数据选择特征的对象存储方案的实施例。
图3A示出根据公开的示例实施例的具有数据选择特征的对象存储方案的写入操作的实施例。
图3B示出根据公开的示例实施例的具有数据选择特征的对象存储方案的读取操作的实施例。
图4示出根据公开的示例实施例的具有本地数据恢复的存储系统的实施例。
图5示出根据公开的示例实施例的具有本地数据恢复的存储系统的另一实施例。
图6A示出根据公开的示例实施例的用于具有本地数据恢复和服务器侧加密的存储方案的写入操作的示例实施例。
图6B示出根据公开的示例实施例的用于具有本地数据恢复和客户端侧加密的存储方案的写入操作的示例实施例。
图7A示出根据公开的示例实施例的用于具有本地数据恢复的存储方案的写入操作的示例实施例。
图7B示出根据公开的示例实施例的用于具有本地数据恢复的存储方案的具有数据选择的读取操作的示例实施例。
图8示出根据公开的示例实施例的用于具有本地数据恢复的对象存储方案的系统架构的示例实施例。
图9A示出根据公开的示例实施例的用于具有本地数据恢复的存储方案的读取操作和写入操作的示例实施例。
图9B示出根据公开的示例实施例的用于具有本地数据恢复和数据选择操作的存储方案的读取操作的示例实施例。
图10示出根据公开的示例实施例的跨三个计算存储装置处的三个数据组块(chunk,或称为块)的数据的分布的实施例。
图11示出根据公开的示例实施例的存储系统的示例实施例,在存储系统中,服务器可重建不同存储装置处的数据组块之间分割的记录。
图12示出根据公开的示例实施例的用于具有本地数据恢复的存储方案的主机设备的示例实施例。
图13示出根据公开的示例实施例的具有本地数据恢复的存储装置的示例实施例。
图14示出根据公开的示例实施例的用于计算存储的方法的实施例。
具体实施方式
对象存储系统可实现数据选择特征或数据选择功能,数据选择特征或数据选择功能可使用户能够请求从存储的对象检索数据的指定子集。为了处理这样的请求,存储服务器可从存储在一个或多个存储装置(例如,一个或多个计算存储装置)上的数据的一个或多个部分重建对象。如果对象被加密,则存储服务器还可对对象进行解密,和/或如果对象被压缩,则存储服务器可对对象进行解压缩,以将对象恢复到其原始形式。然后,存储服务器可对恢复的对象执行一个或多个选择操作(诸如,滤除、扫描等),以找到由用户请求的数据的指定子集。然后,存储服务器可将请求的数据的子集返回给用户。
在一些方面,计算存储装置可能够对存储在装置上的对象执行一个或多个选择操作(诸如,滤除、扫描等)。然而,如果仅对象的一部分被存储在装置上,并且对象在将数据划分为部分之前被修改(例如,压缩、加密等),则存储在装置上的部分可仅包括存储装置可无法恢复(例如,解压缩和/或解密)为原始数据的随机(对于装置)信息。因此,存储装置可无法在本地对存储在装置处的数据的部分执行有意义的操作。
在根据公开的示例实施例的计算存储方案中,可在对数据执行诸如压缩和/或加密的修改之前将对象或其他原始数据划分为数据的部分。可单独修改数据的部分中的一个或多个(例如,可对数据的单独部分执行压缩和/或加密),并且可将数据的部分的修改的版本发送到计算存储装置以用于存储和/或处理。存储装置可例如通过对数据的修改的部分进行解密和/或解压缩来从数据的修改的部分生成数据的部分的恢复的版本。然后,存储装置可在本地对数据的恢复的部分执行操作(例如,选择操作)。
在一些实施例中,数据的一部分也可被称为数据的组块(即,数据组块),并且将数据划分为数据的部分或组块可被称为对数据进行分块(chunking)。在一些实施例中,例如,出于在一个或多个存储装置处的存储的目的,数据的一部分或组块可表示可通过划分数据获得的数据的任何单元。在一些情况下,如果原始数据的量小于或等于部分或组块大小(例如,默认部分或组块大小),则即使通过划分或分块操作生成的原始数据的单元与原始数据的量大小相同,通过划分或分块操作生成的原始数据的单元仍然可被称为数据的部分或组块。
根据实施细节,在计算存储装置处本地执行选择操作可减少可从一个或多个存储装置发送到服务器的数据的量。此外,根据实施细节,计算存储装置可比服务器更有效地执行诸如选择操作的操作。在一些实施例中,因为数据可被压缩,所以这可在很少或不降低带宽和/或空间效率的情况下被实现。根据实施细节,因为数据可被加密,所以这也可在很少或不降低安全性的情况下被实现。此外,在一些实施例中,本地计算可对用户、客户端等透明地被实现。
在根据公开的一些示例实施例中,存储装置、存储服务器等可提供如何将原始数据划分为组块和/或如何修改组块以便于通过一个或多个计算存储装置的存储和/或处理的一个或多个指示。例如,在一些实施例中,指示可包括可由存储装置支持的信息(诸如,一个或多个组块大小、压缩算法、加密算法等)。在一些实施例中,一个或多个指示可以是强制性的、可选的(例如,作为建议被提供)、用户可配置的和/或它们的组合。例如,可提供用于特定存储装置上的存储的最佳组块大小的指示作为建议,而支持的压缩算法的指示可以是强制的,以使存储装置能够对数据的组块进行解压缩以在装置处进行本地处理。
根据公开的示例实施例,在此公开的包括对数据进行分块、对数据进行修改(例如,对数据进行压缩和/或加密)、纠删编码对数据进行纠删编码(erasure coding,又称为纠删码)、存储数据、处理数据、选择数据等的任何操作可被分布(例如,映射)在没有限制的配置中的各种设备之间。例如,在一些实施例中,客户端可对原始数据(例如,对象)进行分块,对数据的组块进行压缩,并且将压缩的数据的组块发送到服务器。服务器可对压缩的数据的组块进行加密,并跨一个或多个存储装置对压缩和加密的数据的组块进行存储。作为另一示例,在一些实施例中,客户端可对原始数据(例如,对象)进行分块,对数据的组块进行压缩和加密,并将压缩和加密的数据的组块发送到服务器以用于跨一个或多个存储装置的存储。作为另一示例,客户端可将原始数据(例如,对象)发送到服务器,服务器可对数据进行分块,并对数据的组块进行压缩、加密和/或执行纠删编码,并跨一个或多个存储装置对单独修改的数据的组块进行存储。
出于说明的目的,可在可实现数据选择特征和/或可将数据存储在一个或多个键值(KV)存储装置中的对象存储系统的上下文中描述一些实施例。然而,本公开中描述的原理不限于任何特定的数据格式、数据处理特征、存储装置接口等。例如,根据公开的示例实施例的系统、方法和/或设备还可用存储系统来实现,存储系统可提供文件存储、数据库存储、块存储等,根据公开的示例实施例的系统、方法和/或设备可实现任何类型的处理特征(诸如,加速、图表处理、图形处理、机器学习等),并且可用包括KV存储装置、块存储装置等的任何类型的存储装置来操作。
对象存储系统可使用户能够以对象的形式存储数据。对象中的数据可在被存储之前以各种方式被修改。例如,可对数据进行压缩以减少数据在存储介质中占据的空间的量和/或减少将数据从客户端(例如,通过网络)传输到一个或多个存储装置所需的时间、带宽、功率等。作为另一示例,对象中的数据可被加密,以防止在数据的传输和/或存储期间对数据的未授权访问。
对象可包括相对大量的数据,并且因此,出于可靠性、可访问性等的目的,对象可被划分为可跨多个存储装置进行存储的组块。将数据划分为组块也可被称为对数据进行分块。例如,在压缩和/或加密之后,可将对象划分为固定大小的组块以适合由存储系统中的一个或多个基于块的存储装置使用的块大小。在一些实施例中,可使用纠删编码方案将数据划分为数据组块并生成一个或多个奇偶校验组块,一个或多个奇偶校验组块可使存储系统能够恢复丢失或损坏的数据组块。
图1A示出根据公开的示例实施例的具有服务器侧加密的对象存储方案的实施例。图1A的左侧示出读取操作和/或写入操作期间的系统的组件之间的数据流,并且图1A的右侧示出写入操作期间的对数据的操作。
图1A左侧上所示的系统可包括客户端102、一个或多个服务器104(其可被统称为服务器)和一个或多个存储装置108(其可被统称为存储装置)。图1A右侧上所示的操作在由客户端102执行的第一组110A和由服务器104执行的第二组112A中被示出。
在写入操作期间,客户端102可以以原始数据114开始,原始数据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,并将压缩数据116发送到客户端102。客户端102可对压缩数据116进行解压缩以恢复原始数据114,原始数据114可以是例如对象。
图1B示出根据公开的示例实施例的具有客户端侧加密的对象存储方案的实施例。图1B的左侧示出读取操作和/或写入操作期间的系统的组件之间的数据流,并且图1B的右侧示出写入操作期间的对数据的操作。
图1B左侧上所示的系统和图1B右侧上所示的操作可包括可类似于图1A中所示的那些组件和/或操作并且可由相同或相似的附图标记指示的一些组件和/或操作。然而,在图1B中所示的实施例中,如由客户端102执行的第一组操作110B中所示,客户端102可对压缩数据116进行加密以生成压缩和加密数据118。然后,客户端102可将压缩和加密数据118发送到服务器104,如由服务器104执行的第二组操作112B中所示,服务器104可将压缩和加密数据118划分为一个或多个数据组块120。然后,服务器104可将一个或多个数据组块120发送到一个或多个存储装置108。在一些实施例中,服务器104可对一个或多个数据组块120执行纠删编码以生成也可被存储在一个或多个存储装置108上的一个或多个奇偶校验组块121。
在读取操作期间,可相反地执行图1B中所示的操作。例如,服务器104可从数据组块120重建压缩和加密数据118(如果需要,使用一个或多个奇偶校验组块121恢复任何丢失或损坏的数据组块),并将压缩和加密数据118发送到客户端102。客户端102可对压缩和加密数据118进行解密以生成压缩数据116。然后,客户端102可对压缩数据116进行解压缩以恢复原始数据114,原始数据114可以是例如对象。
图1A和图1B中所示的实施例仅是示例实施例,并且组件和/或操作的数量、顺序和/或布置可被改变。例如,在一些实施方式中,可在没有压缩的情况下和/或在没有加密的情况下存储原始数据114。在一些实施例中,一个或多个服务器104可用可被配置为对象存储服务器的第一服务器和可被配置为存储服务器(其也可被称为存储节点)的第二服务器来实现,以管理一个或多个存储装置108。因此,第一服务器和第二服务器可实现对象存储服务。如果原始数据114中的任何一个或全部被加密,则可由存储服务和/或由服务的用户生成加密密钥。在一些实施例中,在写入操作的结束时或接近写入操作的结束时执行分块操作可使服务器104能够将数据划分为具有可与一个或多个存储装置108的一个或多个块大小对应的大小的组块。
在一些情况下,与用户装置相关联的用户可仅需要检索存储在对象中的数据的子集。一些对象存储系统可要求用户检索整个对象,然后处理对象以找到数据的子集。这可导致相对大量的不需要的数据被传输到用户的装置,这进而可消耗不必要的资源(诸如,时间、带宽、功率等)。
为了减少和/或防止不需要的数据的传输,一些对象存储系统可提供数据选择特征,数据选择特征可使用户能够请求从存储的对象检索数据的指定子集。不是将整个对象发送到用户的装置,对象存储系统可对对象执行扫描、滤除和/或其他数据选择操作,以找到数据的指定子集。然后,对象存储系统可仅将数据的指定子集返回给用户的装置。
图2A示出根据公开的示例实施例的可将对象返回给用户的装置的对象存储方案的实施例。图2B示出根据公开的示例实施例的具有数据选择特征的对象存储方案的实施例。
参照图2A,对象存储服务201可将用户的对象203A、203B和203C存储在数据桶(data bucket)或容器205中。如果用户需要从对象203A中的一个检索数据的子集(例如,一个或多个记录),则对象存储服务201可要求用户请求整个对象203A,整个对象203A可通过网络被发送到客户端计算操作207。然后,客户端计算操作207可对对象203A执行数据选择操作209(诸如,扫描、滤除等),以找到数据的子集。然后,客户端计算操作207可将数据的子集用于进一步操作211。
参照图2B,具有数据选择特征的对象存储服务213可使用户能够向存储对象203A请求数据的子集。例如,在一些实施例中,对象存储服务213可使用户能够例如通过发送可对对象203A进行操作的查询(例如,使用诸如结构化查询语言(SQL)的数据库语言的表达式)来提交请求,对象203A可例如以诸如逗号分隔变量(CSV)、JavaScript对象表示法(JSON)、Parquet等的格式被存储。在一些实施例中,可例如使用应用编程接口(API)、软件开发工具包(SDK)等将查询发送到对象存储服务213。
不是发送整个对象203A,对象存储服务213可对对象203A执行数据选择操作209(诸如,扫描、滤除等),以找到由用户在请求中指定的数据的子集。然后,对象存储服务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进行解密以生成压缩和解密数据316,压缩和解密数据316可然后被解压缩以恢复原始数据314(例如,对象)。服务器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,数据分块逻辑426和数据修改逻辑427可被配置为以存储装置408可将数据的组块恢复为存储装置可执行操作的形式的形式将数据的一个或多个组块提供给存储装置408。例如,数据分块逻辑426可在通过数据修改逻辑427的修改之前将对象或其他原始数据划分为数据的一个或多个组块。数据修改逻辑427可单独地对组块中的一个或多个执行一个或多个数据修改操作(诸如,压缩、加密、纠删编码等),以生成原始数据的一个或多个修改后的组块。主机424可将原始数据的修改后的组块中的一个或多个发送到计算存储装置408和/或一个或多个附加计算存储装置以用于存储和/或处理。
计算存储装置408可包括数据恢复逻辑428、一个或多个处理元件429和存储介质430。数据恢复逻辑428可被配置为将数据的修改后的组块恢复为一个或多个处理元件429可执行操作的形式。例如,如果数据的修改后的组块被加密,则数据恢复逻辑428可对数据的修改后的组块进行解密,如果数据的修改后的组块被压缩,则数据恢复逻辑428可对数据的修改后的组块进行解压缩等。一个或多个处理元件429可被配置为执行任何类型的操作(诸如,数据选择(例如,扫描、滤除等)、计算加速、图表处理、图形处理、机器学习等)。存储介质430可用于存储任何数据,该任何数据包括由主机424发送的数据的一个或多个修改后的组块。
在一些实施例中,数据恢复逻辑428和/或一个或多个处理元件429可被配置为:响应于可包括在存储装置408处接收的查询(例如,表达式)的请求,从存储介质430读取和恢复数据的一个或多个组块并返回数据的指定子集,或者对数据的恢复后的组块执行任何其他操作。
在一些实施例中,数据的恢复后的组块可或可不与分块之前的原始数据完全相同。例如,如果存储在存储装置408处的数据的组块包含诸如银行账户交易、余额等的金融信息,并且用户仅请求账户余额,则数据恢复逻辑428和/或一个或多个处理元件429可需要将数据的组块恢复为原始形式,以找到精确的账户余额并将它们发送到用户的装置。然而,如果存储在存储装置408处的数据的组块包含摄影图像,并且用户请求图像中的特征的列表,则数据恢复逻辑428和/或一个或多个处理元件429可仅需要将图像解压缩到可使一个或多个处理元件429能够识别由用户请求的特征的程度。
主机424可用“可以以存储装置408可恢复和/或执行操作的形式将数据的一个或多个组块提供给存储装置408”的任何组件或组件的组合来实现。例如,在一些实施例中,主机424可包括客户端、对象存储服务器和/或存储节点。数据分块逻辑426和/或数据修改逻辑427可以以任何方式被分布在主机424的任何组件之间。例如,在一些实施例中,数据分块逻辑426可实现在客户端处,而数据修改逻辑427可实现在对象存储服务器和/或存储节点处。作为另一示例,数据分块逻辑426和包括压缩逻辑的数据修改逻辑427的一部分可实现在客户端处,而包括加密和/或纠删编码逻辑的数据修改逻辑427的一部分可实现在服务器处。因此,客户端可将原始数据划分为组块,对数据的组块进行单独压缩,并将压缩后的数据的组块发送到服务器。然后,服务器可对压缩后的数据的组块进行单独加密,对数据的组块执行纠删编码以生成一个或多个奇偶校验组块,然后将数据的组块和/或奇偶校验组块存储在包括计算存储装置408的一个或多个存储装置上。
在此公开的存储装置408和/或任何其他存储装置可使用任何连接器配置(诸如,串行ATA(SATA)、小型计算机系统接口(SCSI)、串行附接SCSI(SAS)、M.2、U.2、U.3等)以任何形状因子(诸如,3.5英寸、2.5英寸、1.8英寸、M.2、企业和数据中心SSD形状因子(EDSFF)、NF1等)来实现。
在此公开的存储装置408和/或任何其他存储装置可用包括固态介质、磁介质、光学介质等或它们的任何组合的任何存储介质430来实现。固态介质的示例可包括闪存(诸如,非与(NAND)闪存、低延迟NAND闪存)、持久性存储器(PMEM)(诸如,交叉网格非易失性存储器)、具有体电阻变化的存储器、相变存储器(PCM)等或它们的任何组合。
在此公开的存储装置408和/或任何其他存储装置可使用任何类型的存储接口和/或协议(诸如,外围组件互连快速(PCIe)、NVMe、通过网络的NVMe(NVMe-over-fabric,NVMe-OF)、NVMe键值(NVMe-KV)、SATA、SCSI等或它们的任何组合)进行通信。在一些实施例中,在此公开的存储装置408和/或任何其他存储装置可实现一致性(coherent)(例如,存储器一致性、高速缓存一致性等)或存储器语义接口(诸如,计算快速链接(CXL)和/或一致性协议(诸如,CXL.mem、CXL.cache和/或CXL.io))。一致性和/或存储器语义接口和/或协议的其他示例可包括Gen-Z、一致性加速器处理器接口(CAPI)、用于加速器的高速缓存一致性互连(CCIX)等。
在此公开的存储装置408和/或任何其他存储装置以及主机424的任何组件(例如,客户端、对象存储服务器、存储节点等)可完全或部分地与服务器机箱、服务器机架、数据房、数据中心、边缘数据中心、移动边缘数据中心和/或它们的任何组合一起实现,和/或与服务器机箱、服务器机架、数据房、数据中心、边缘数据中心、移动边缘数据中心和/或它们的任何组合结合使用。
在此公开的包括诸如客户端、服务器、存储装置等的组件之间的任何连接的通信连接422和/或任何其他连接可用包括PCIe、以太网、传输控制协议/互联网协议(TCP/IP)、远程直接存储器访问(RDMA)、通过融合以太网的RDMA(ROCE)、光纤通道、无限带宽、iWARP等或它们的任何组合的任何互连和/或网络接口和/或协议来实现。
在此公开的包括诸如数据分块逻辑426、数据修改逻辑427、数据恢复逻辑428、一个或多个处理元件429、指示逻辑531等的任何逻辑的任何功能可用硬件、软件或它们的组合来实现,硬件、软件或它们的组合包括执行存储在任何类型的存储器中的指令的组合逻辑、顺序逻辑、一个或多个定时器、计数器、寄存器和/或状态机、一个或多个复杂可编程逻辑器件(CPLD)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、中央处理器(CPU)(诸如,复杂指令集计算机(CISC)处理器(诸如,x86处理器)和/或精简指令集计算机(RISC)处理器(诸如,ARM处理器))、图形处理器(GPU)、神经处理器(NPU)、张量处理器(TPU)等或它们的任何组合。在一些实施例中,数据恢复逻辑428、处理元件429等中的一个或多个可包括用于执行任何功能(诸如,压缩和/或解压缩、加密和/或解密、微服务、纠删编码、视频编码和/或解码、数据库加速、搜索、机器学习、图表处理等)的固定和/或可编程功能。在一些实施例中,一个或多个组件可被实现为片上系统(SOC)。
在一些实施例中,数据恢复逻辑428、处理元件429等中的一个或多个可与存储装置的一个或多个其他组件(诸如,存储装置控制器、闪存转换层(FTL)等)被集成。
在此公开的任何数据修改操作(诸如,压缩、加密等(或其逆向操作))可用任何合适的技术来实现。例如,数据压缩和/或解压缩可用LZ77、gzip、Snappy等来实现。加密和/或解密可利用高级加密标准(AES)(诸如,AES-256、Rivest-Shamir-Adleman(RSA)等)来实现。
图5示出根据公开的示例实施例的具有本地数据恢复的存储系统的另一实施例。图5中所示的系统可包括与关于图4中所示的实施例描述的组件类似的组件和/或实现与关于图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的可维护安装在存储节点处的每个存储装置的指示的一部分,并且对象存储服务器可包括指示逻辑531的可对来自一个或多个存储节点的指示进行聚合并将指示提供给一个或多个客户端的一部分。
例如,响应于查询、命令等(例如,NVMe命令、通过API的查询、SDK等),任何指示532可由指示逻辑531提供给任何设备(诸如,客户端、对象存储服务器、存储节点等)。在一些实施例中,可通过客户端库(例如,由客户端)将一个或多个指示532(例如,一个或多个存储超参数)提供给用户。
图6A示出根据公开的示例实施例的用于具有本地数据恢复和服务器侧加密的存储方案的写入操作的示例实施例。图6A中所示的实施例可用于例如实现图4和图5中所示的任何存储方案。图6A的左侧示出存储系统的组件之间的数据流,并且图6A的右侧示出写入操作期间的对数据的操作。
图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中所示的数据组块以不同的大小被示出,但是原理也可应用于其中存储装置中的一些或全部具有基于块的接口的系统,基于块的接口可被认作可变大小的组块的子集。
在一些实施例中,可例如基于可以是针对特定存储装置的最佳已知大小的组块大小来确定建议和/或强制组块大小。例如,在一些固态驱动器(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中所示的实施例中,如第一操作组610B中所示,客户端602可对数据的一个或多个压缩组块634进行加密,以生成一个或多个压缩和加密数据组块635。然后,如操作组612B中所示,客户端602可将一个或多个压缩和加密数据组块635发送到服务器604,服务器604可对一个或多个压缩和加密数据组块635执行纠删编码,以生成一个或多个奇偶校验组块636,并跨一个或多个存储装置608存储一个或多个压缩和加密数据组块635和一个或多个奇偶校验组块636。
在数据的一个或多个组块633已经被单独修改(例如,压缩、加密等)并跨一个或多个存储装置608被存储为修改数据组块之后,每个存储装置可能够(例如,通过对一个或多个数据组块进行解密和/或解压缩)恢复一个或多个数据组块并对恢复后的数据组块执行操作。例如,用户、客户端602、服务器604等可将请求发送到一个或多个存储装置608,以恢复组块中的一个或多个并对恢复后的数据的组块执行一个或多个操作(例如,数据选择操作)。
图7A示出根据公开的示例实施例的用于具有本地数据恢复的存储方案的写入操作的示例实施例。图7B示出根据公开的示例实施例的具有针对具有本地数据恢复的存储方案的数据选择的读取操作的示例实施例。图7A和图7B中所示的实施例可用于例如实现图4和图5中所示的任何存储方案。
参照图7A,左侧示出存储系统的组件之间的数据流,并且右侧示出写入操作期间的对数据的操作。参照图7B,左侧示出存储系统的组件之间的数据流,并且右侧示出读取操作期间的对数据的操作。
图7A中所示的写入操作可实现类似于图6A中所示的服务器侧加密的服务器侧加密或类似于图6B中所示的客户端侧加密的客户端侧加密,并且具有以相同数字结束的附图标记的元件可以是类似的。因此,作为客户端操作710A的一部分或服务器操作712A的一部分,可对已经单独压缩的数据组块734进行加密,以生成压缩和加密数据组块735。
参照图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,数据分块逻辑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中的每个可包括处理单元(例如,数据处理单元(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,解密逻辑854和解压缩逻辑855可用于分别对已经被单独加密和/或压缩的数据的组块进行解密和/或解压缩,以将数据的组块恢复为可操作的形式。数据选择引擎853还可包括数据选择逻辑856,数据选择逻辑856可用于对恢复后的数据的组块执行数据选择或其他操作。数据选择引擎853还可包括KV逻辑857,KV逻辑857可用于实现存储装置808a的KV接口。
在一些实施例中,图8中所示的系统可用存储装置808中的一些或全部的KV接口来实现。根据实施细节,这可促进和/或确保数据的组块以可变组块大小来实现。出于说明的目的,图8中所示的实施例可被描述为在存储装置808中的一个或多个处本地实现具有恢复后的数据组块的数据选择特征,然而,原理可应用于可对恢复后的数据组块执行的任何类型的处理。
图9A示出根据公开的示例实施例的用于具有本地数据恢复的存储方案的读取操作和写入操作的示例实施例。图9A中所示的操作可例如使用图8中所示的系统来实现。出于说明的目的,第一组操作958A可被假设为由图8中所示的客户端802和对象存储服务器集群804执行,并且第二组操作959A可被假设为由图8中所示的一个或多个存储节点806和/或存储装置808执行,然而,在其他实施例中,图9A中所示的操作可由任何其他组件执行。
参照图9A,在写入操作(例如,放置操作(put operation))期间,原始数据914(例如,一个或多个对象)可由客户端分块,以生成数据的一个或多个组块933。一个或多个组块933可由客户端单独压缩,以生成一个或多个压缩组块934,一个或多个压缩组块934然后可被发送到对象存储服务器并由对象存储服务器单独加密,以生成一个或多个压缩和/或加密组块935。对象存储服务器可对一个或多个压缩和/或加密组块935执行纠删编码,以生成一个或多个奇偶校验组块936。
对象存储服务器可(例如,通过放置操作960)将一个或多个压缩和加密组块935和一个或多个奇偶校验组块936发送到一个或多个存储节点,以用于一个或多个存储装置上的存储。因此,在写入操作之后,原始数据914(例如,对象)可跨一个或多个存储装置被存储在可已经被单独修改(例如,压缩和/或加密)的一个或多个组块935中。
在读取操作(例如,获取操作(get operation))期间,例如,在存储装置不能恢复数据的组块和/或对数据的组块执行操作的实施方式中,可从一个或多个存储装置读取单独修改的数据的一个或多个组块935。如果数据组块935中的一个或多个丢失或损坏,则可(例如,由存储装置和/或存储节点)使用一个或多个奇偶校验组块936来恢复丢失和/或损坏的组块。
可(例如,通过获取操作962)将一个或多个压缩和/或加密组块935发送到对象存储服务器,对象存储服务器可对一个或多个压缩和/或加密组块935进行解密,以生成一个或多个压缩和解密组块934。可将一个或多个压缩和解密组块934发送到客户端,客户端可对一个或多个数据组块934进行解压缩,以生成解密和解压缩数据组块933,然后将它们组装到原始数据914中。
图9B示出根据公开的示例实施例的用于具有本地数据恢复和数据选择操作的存储方案的读取操作的示例实施例。图9B中所示的操作可例如使用图8中所示的系统来实现。出于说明的目的,第一组操作958B可被假设为由图8中所示的客户端802和/或对象存储服务器集群804执行,并且第二组操作959B可被假设为由图8中所示的一个或多个存储节点806和/或存储装置808执行,然而,在其他实施例中,图9B中所示的操作可由任何其他组件执行。
为了开始读取操作(例如,放置操作963),一个或多个计算存储装置可接收用于执行数据选择操作以从存储在一个或多个存储装置处的数据的一个或多个组块935读取数据的一个或多个子集的一个或多个请求。一个或多个请求可包括例如用于指定请求的数据的子集的一个或多个表达式。
为了服务一个或多个请求,可从一个或多个存储装置读取单独修改的数据的一个或多个组块935。然后,一个或多个存储装置可对数据的一个或多个组块935进行单独解密,以生成压缩和解密数据的一个或多个组块934。然后,一个或多个存储装置可对压缩和解密数据的一个或多个组块934进行单独解压缩,以生成恢复数据的一个或多个组块938。在一些实施例中,数据的每个恢复组块938可与原始数据914的对应部分相同。然而,在一些实施例中,数据的恢复组块938可仅被恢复为可使存储装置能够对恢复数据执行有意义的操作的形式(例如,一些实施例可能够对尚未完全解压缩的数据的组块执行一个或多个操作)。
然后,存储装置可对恢复数据的一个或多个组块938执行数据选择操作(例如,扫描、滤除等),以找到由一个或多个请求指定的数据的一个或多个子集939(指示为结果R)。如果存储装置已经恢复并对数据的多于一个组块执行数据选择操作,则存储装置可对数据选择操作的结果进行聚合,以生成聚合结果940,聚合结果940可被发送到对象存储服务器,然后被发送到发送请求的客户端。附加地或可选地,由多个存储装置通过数据选择操作找到的结果R(例如,数据的子集)939可由存储节点聚合并被发送到对象存储服务器,然后被发送到发送请求的客户端。
表1示出根据公开的示例实施例的可被存储在存储系统中的一些示例数据。出于说明的目的,表1中所示的数据用于房地产列表,但是原理可应用于任何类型的数据。表1的每个行可对应于记录,该记录具有七个条目:记录索引、以平方英尺为单位的居住面积、卧室的数量、浴室的数量、邮政编码、建造年份和标价。因此,例如,前八个记录可分别由索引1至索引8标识。
表1
图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)和/或解压缩来恢复数据的单独修改组块1035,以生成数据的恢复组块1038,并对数据的恢复组块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在两个不同存储装置处的数据组块之间被分段,所以记录3、6和9可不在存储装置处被本地处理。
图11示出根据公开的示例实施例的存储系统的示例实施例,在存储系统中,服务器可重建不同存储装置处的数据组块之间拆分的记录。图11中所示的实施例可包括对象存储服务器1104、两个存储节点1106A和1106B以及计算存储装置1108A、1108B、1108C、1108D和1108E,两个存储节点1106A和1106B通过存储网络结合到对象存储服务器1104,计算存储装置1108A、1108B、1108C、1108D和1108E可存储包括与图10中所示的记录类似的记录的数据组块。
参照图11,存储装置1108A至1108E中的每个可分别发送它可对它对应的数据组块1164A至1164E中的任何完整记录(或者直接地,或通过它所位于的存储节点)执行的数据选择操作的结果1165。然而,因为记录3、6和9可不在存储装置本地处理,所以对象存储服务器1104可在一个或多个聚合缓冲器1166中重建拆分后的记录。在一些实施例中,每个聚合缓冲器1166可重建第i装置与第(i+1)装置之间的拆分后的记录。例如,存储装置1108A可将位于数据组块1164A中的记录3(例如,索引、居住面积、卧室、浴室、邮政编码和建造年份)的第一部分(其也可被称为片段)发送到对象存储服务器1104,以在第一缓冲器1166A中与位于数据组块1164B中的记录3(标价)的第二部分进行聚合并由存储装置1108B发送。在一些实施例中,对象存储服务器1104可包括N个聚合缓冲器,其中,N可以是结合到对象存储服务器1104的存储装置的数量。
然后,对象存储服务器1104可分别对聚合缓冲器1166A、1166B和1166C中的重建后的记录3、6和9执行选择操作,以生成结果1167。因此,在由各个存储装置发送的结果1165与从聚合缓冲器1166生成的结果1167之间,对象存储服务器1104可获得由请求指定的数据的一些或全部子集并将子集返回给客户端。
图12示出根据公开的示例实施例的用于具有本地数据恢复的存储方案的主机设备的示例实施例。图12中所示的主机1200可用于实现在此公开的任何主机功能。主机1200可用任何组件或组件的组合(诸如,一个或多个客户端、一个或多个对象存储服务器、一个或多个存储节点等或它们的组合)来实现。
图12中所示的主机设备1200可包括处理器1202、系统存储器1206、主机控制逻辑1208和/或通信接口1210,处理器1202可包括存储器控制器1204。图12中所示的组件中的任何或全部可通过一个或多个系统总线1212进行通信。在一些实施例中,图12中所示的组件中的一个或多个可使用其它组件来实现。例如,在一些实施例中,主机控制逻辑1208可通过执行存储在系统存储器1206或其他存储器中的指令的处理器1202来实现。
主机控制逻辑1208可包括和/或实现在此公开的任何主机功能,任何主机功能包括数据分块逻辑426、526和/或826、数据修改逻辑427和/或527、压缩逻辑846、加密逻辑847、纠删编码逻辑848、数据选择逻辑849、集群管理逻辑850、节点和装置管理逻辑851、处理单元852等。
图13示出根据公开的示例实施例的具有本地数据恢复的存储装置的示例实施例。图13中所示的存储装置1300可用于实现在此公开的任何存储装置功能。存储装置1300可包括装置控制器1302、介质转换层1304、存储介质1306、计算资源1308、处理控制逻辑1316和通信接口1310。图13中所示的组件可通过一个或多个装置总线1312进行通信。在可将闪存用于存储介质1306中的一些或全部的一些实施例中,介质转换层1304可部分地或完全地被实现为闪存转换层(FTL)。
在一些实施例中,处理控制逻辑1316可用于实现在此公开的任何存储装置功能,任何存储装置功能包括数据恢复逻辑428和/或528、处理元件429和/或529、指示逻辑531、数据选择引擎853、解密逻辑854、解压缩逻辑855、数据选择逻辑856、键值逻辑857等。
如上所述,在此描述的包括在此描述的主机(例如,客户端、存储服务器、存储节点等)功能、存储装置功能等中的任何功能(诸如,数据分块逻辑426、526和/或826、数据修改逻辑427和/或527、压缩逻辑846、加密逻辑847、纠删编码逻辑848、数据选择逻辑849、集群管理逻辑850、节点和装置管理逻辑851、处理单元852、数据恢复逻辑428和/或528、处理元件429和/或529、指示逻辑531、数据选择引擎853、解密逻辑854、解压缩逻辑855。数据选择逻辑856、键值逻辑857、主机控制逻辑1208、处理控制逻辑1316、计算资源1308等)的任何功能可用执行存储在任何类型的存储器中的指令的硬件、软件或它们的任何组合来实现,硬件、软件或它们的任何组合包括组合逻辑、顺序逻辑、一个或多个定时器、计数器、寄存器、状态机、易失性存储器(诸如,DRAM和/或SRAM)、非易失性存储器和/或它们的任何组合、CPLD、FPGA、ASIC、包括CISC处理器(诸如,x86处理器)和/或RISC处理器(诸如,ARM处理器)的CPU、GPU、NPU等。在一些实施例中,一个或多个组件可被实现为片上系统(SOC)。
图14示出根据公开的示例实施例的用于计算存储的方法的实施例。该方法可在操作1402处开始。在操作1404处,该方法可在存储装置处接收数据的一部分的修改版本。例如,可通过压缩、加密等来修改数据的部分。在操作1406处,该方法可在存储装置处从数据的该部分的修改版本生成数据的恢复部分。例如,可通过解压缩、解密等来恢复数据的部分。在操作1408处,该方法可在存储装置处对数据的恢复部分执行操作。例如,操作可以是数据选择操作。该方法可在操作1410处结束。
图14中所示的实施例以及在此描述的全部其他实施例是示例操作和/或组件。在一些实施例中,可省略一些操作和/或组件和/或可包括其他操作和/或组件。此外,在一些实施例中,可改变操作和/或组件的时间和/或空间顺序。尽管一些组件和/或操作可被示出为单独的组件,但是在一些实施例中,单独示出的一些组件和/或操作可被集成到单个组件和/或操作中,和/或示出为单个组件和/或操作的一些组件和/或操作可用多个组件和/或操作来实现。
已经在各种实施细节的上下文中描述了上面公开的一些实施例,但是公开的原理不限于这些或任何其他具体细节。例如,一些功能已经被描述为由特定组件实现,但是在其他实施例中,功能可被分布在不同位置中的不同系统和组件之间并且具有各种用户接口。特定实施例已经被描述为具有特定处理、操作等,但是这些术语还包括其中特定处理、操作等可用多个处理、操作等实现的实施例,或者其中多个处理、操作等可被集成到单个处理、步骤等中的实施例。对组件或元件的引用可仅表示组件或元件的一部分。例如,对块的引用可表示整个块或一个或多个子块。除非从上下文另有显而易见,否则在本公开和权利要求书中使用诸如“第一”和“第二”的术语可仅用于区分它们所修饰的事物的目的,并且可不指示任何空间或时间顺序。在一些实施例中,对事物的引用可表示事物的至少一部分,例如,“基于”可表示“至少部分基于”等。例如,在一些实施例中,对数据的组块进行修改、加密、解密、压缩和/或解压缩可表示对数据的组块的至少一部分进行修改、加密、解密、压缩和/或解压缩。
对第一元件的引用可不暗示存在第二元件。在此公开的原理具有独立的实用性并且可单独被体现,并且不是每个实施例都可利用每个原理。然而,原理也可以各种组合来体现,各种组合中的一些可以以协同的方式放大各个原理的益处。
可组合上述各种细节和实施例以产生根据本专利公开的发明原理的附加实施例。由于在不脱离发明构思的情况下,可在布置和细节上修改本专利公开的发明原理,因此这样的改变和修改被认为落入所附权利要求的范围内。
Claims (20)
1.一种用于计算存储的方法,所述方法包括:
在存储装置处接收数据的一部分的修改版本;
在存储装置处从数据的所述一部分的修改版本生成数据的恢复部分;和
在存储装置处对数据的恢复部分执行操作。
2.根据权利要求1所述的方法,其中,生成的步骤包括:对数据的所述一部分的修改版本进行解压缩。
3.根据权利要求1所述的方法,其中,生成的步骤包括:对数据的所述一部分的修改版本进行解密。
4.根据权利要求1所述的方法,还包括:从存储装置发送对数据的恢复部分的所述操作的结果。
5.根据权利要求1所述的方法,其中,所述操作包括滤除操作。
6.根据权利要求1所述的方法,还包括:对数据进行划分,以生成数据的所述一部分。
7.根据权利要求6所述的方法,其中,划分的步骤包括:通过客户端对数据进行划分。
8.根据权利要求7所述的方法,其中,划分的步骤包括:基于指示来对数据进行划分。
9.根据权利要求8所述的方法,其中,划分的步骤包括:通过客户端基于所述指示来对数据进行划分。
10.根据权利要求8所述的方法,其中,所述指示包括压缩方案。
11.根据权利要求8所述的方法,其中,所述指示包括部分大小。
12.根据权利要求8所述的方法,其中,所述指示通过存储装置提供。
13.根据权利要求1至8中的任一项所述的方法,还包括:对数据的所述一部分进行修改,以生成数据的所述一部分的修改版本。
14.根据权利要求13所述的方法,其中,修改的步骤包括:对数据的所述一部分进行压缩。
15.根据权利要求13所述的方法,其中,修改的步骤包括:通过客户端对数据的所述一部分进行修改。
16.根据权利要求1至8中的任一项所述的方法,其中,存储装置是第一存储装置,所述操作是第一操作,并且数据的恢复部分是数据的第一恢复部分,所述方法还包括:对通过第一存储装置对数据的第一恢复部分的第一操作的第一结果和通过第二存储装置对数据的第二恢复部分的第二操作的第二结果进行聚合。
17.一种存储装置,包括:
存储介质;
数据恢复逻辑,被配置为:从数据的修改部分生成数据的恢复部分;和
数据处理元件,被配置为:对数据的恢复部分执行操作。
18.如权利要求17所述的存储装置,其中,数据恢复逻辑包括解压缩逻辑。
19.一种存储系统,包括:
存储装置;和
主机,包括:
数据划分逻辑,被配置为:将数据划分为数据的一个或多个部分;和
数据修改逻辑,被配置为:通过对所述一个或多个部分中的一个部分进行修改来生成数据的修改部分;
其中,主机被配置为:将数据的修改部分发送到存储装置;
其中,存储装置包括:
数据恢复逻辑,被配置为:从数据的修改部分生成数据的恢复部分;和
数据处理元件,被配置为:对数据的恢复部分执行操作。
20.如权利要求19所述的存储系统,其中:
存储装置还包括指示逻辑,指示逻辑被配置为:将指示发送到主机;并且
数据划分逻辑被配置为:基于所述指示将数据划分为数据的所述一个或多个部分。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163231709P | 2021-08-10 | 2021-08-10 | |
US202163231711P | 2021-08-10 | 2021-08-10 | |
US63/231,709 | 2021-08-10 | ||
US63/231,711 | 2021-08-10 | ||
US17/572,621 | 2022-01-10 | ||
US17/572,621 US20230049329A1 (en) | 2021-08-10 | 2022-01-10 | Systems, methods, and apparatus for processing data at a storage device |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115878028A true CN115878028A (zh) | 2023-03-31 |
Family
ID=82701910
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210953533.6A Pending CN115878028A (zh) | 2021-08-10 | 2022-08-10 | 用于计算存储的方法、存储装置和存储系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230049329A1 (zh) |
EP (1) | EP4135203A1 (zh) |
KR (1) | KR20230023564A (zh) |
CN (1) | CN115878028A (zh) |
TW (1) | TW202311988A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116991338B (zh) * | 2023-09-28 | 2023-12-22 | 北京超弦存储器研究院 | 访问数据的方法及控制器、cxl内存模组和存储系统 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4254178B2 (ja) * | 2002-09-11 | 2009-04-15 | 富士ゼロックス株式会社 | 分散格納制御装置及び方法 |
US9841925B2 (en) * | 2014-06-30 | 2017-12-12 | International Business Machines Corporation | Adjusting timing of storing data in a dispersed storage network |
CN107046812B (zh) * | 2015-12-08 | 2021-02-12 | 华为技术有限公司 | 一种数据保存方法和装置 |
US11030156B2 (en) * | 2015-12-28 | 2021-06-08 | Sandisk Technologies Llc | Key-value store with partial data access |
US10977124B2 (en) * | 2016-01-07 | 2021-04-13 | Hitachi, Ltd. | Distributed storage system, data storage method, and software program |
US10027984B2 (en) * | 2016-11-30 | 2018-07-17 | Hewlett Packard Enterprise Development Lp | Methods and systems for efficiently reading a data block from a data seglet with compressed data blocks |
US10229003B2 (en) * | 2017-06-16 | 2019-03-12 | Alibaba Group Holding Limited | Method and system for iterative data recovery and error correction in a distributed system |
US10594790B2 (en) * | 2017-06-28 | 2020-03-17 | International Business Machines Corporation | Data compression in a dispersed storage network |
US20200042500A1 (en) * | 2018-08-02 | 2020-02-06 | Alibaba Group Holding Limited | Collaborative compression in a distributed storage system |
US20190196907A1 (en) * | 2019-03-05 | 2019-06-27 | Intel Corporation | Compression techniques for distributed data |
EP3938882A4 (en) * | 2019-03-12 | 2022-12-07 | Intel Corporation | COMPUTE DATA STORAGE SYSTEMS |
JP7343536B2 (ja) * | 2021-03-01 | 2023-09-12 | 株式会社日立製作所 | リモートコピーシステム及び方法 |
-
2022
- 2022-01-10 US US17/572,621 patent/US20230049329A1/en active Pending
- 2022-07-13 KR KR1020220086559A patent/KR20230023564A/ko unknown
- 2022-08-08 TW TW111129751A patent/TW202311988A/zh unknown
- 2022-08-08 EP EP22189257.3A patent/EP4135203A1/en active Pending
- 2022-08-10 CN CN202210953533.6A patent/CN115878028A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230049329A1 (en) | 2023-02-16 |
TW202311988A (zh) | 2023-03-16 |
EP4135203A1 (en) | 2023-02-15 |
KR20230023564A (ko) | 2023-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11307998B2 (en) | Storage efficiency of encrypted host system data | |
US11133076B2 (en) | Efficient relocation of data between storage devices of a storage system | |
US20240311496A1 (en) | Data Reduction In A Storage System With Multi-Tenancy | |
US9767070B2 (en) | Storage system with a memory blade that generates a computational result for a storage device | |
CN113302584A (zh) | 基于云的存储系统的存储管理 | |
US8612699B2 (en) | Deduplication in a hybrid storage environment | |
CN111868676A (zh) | 在基于云的存储系统中服务i/o操作 | |
CN116601596A (zh) | 使用数据相似度来选择分段进行垃圾收集 | |
US11150834B1 (en) | Determining storage consumption in a storage system | |
WO2020256796A1 (en) | Efficient non-uniform object processing | |
US11144638B1 (en) | Method for storage system detection and alerting on potential malicious action | |
JP2024528364A (ja) | 近似ベースラインを使用したデータセットの生成 | |
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 | |
US10564883B2 (en) | Efficient migration to distributed storage | |
EP4134818A1 (en) | Systems, methods, and apparatus for dividing and encrypting data | |
EP4135200A1 (en) | Systems, methods, and apparatus for dividing and compressing data | |
KR20240137670A (ko) | 에지 가속기 카드 | |
US20230046030A1 (en) | Systems, methods, and apparatus for data resizing for computational storage | |
CN117616378A (zh) | 在分区式驱动器存储系统中高效地写入数据 | |
JP2024521617A (ja) | サービスとしてのストレージのためのロールエンフォースメント | |
Tian et al. | neCODEC: nearline data compression for scientific applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |