CN115705161A - 用于划分和加密数据的系统、方法和装置 - Google Patents
用于划分和加密数据的系统、方法和装置 Download PDFInfo
- Publication number
- CN115705161A CN115705161A CN202210954950.2A CN202210954950A CN115705161A CN 115705161 A CN115705161 A CN 115705161A CN 202210954950 A CN202210954950 A CN 202210954950A CN 115705161 A CN115705161 A CN 115705161A
- Authority
- CN
- China
- Prior art keywords
- data
- input data
- storage
- chunks
- shares
- 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
- 238000000034 method Methods 0.000 title claims abstract description 217
- 238000000638 solvent extraction Methods 0.000 title claims description 12
- 238000013144 data compression Methods 0.000 claims description 13
- 238000003860 storage Methods 0.000 description 406
- 238000007906 compression Methods 0.000 description 75
- 230000006835 compression Effects 0.000 description 75
- 238000012545 processing Methods 0.000 description 73
- 239000000872 buffer Substances 0.000 description 48
- 238000005192 partition Methods 0.000 description 44
- 238000011084 recovery Methods 0.000 description 33
- 230000000903 blocking effect Effects 0.000 description 25
- 238000012986 modification Methods 0.000 description 21
- 230000004048 modification Effects 0.000 description 21
- 230000006837 decompression Effects 0.000 description 19
- 230000006870 function Effects 0.000 description 15
- 238000001914 filtration Methods 0.000 description 13
- 238000007726 management method Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 230000014509 gene expression Effects 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 238000010801 machine learning Methods 0.000 description 7
- 238000013519 translation Methods 0.000 description 6
- 230000001133 acceleration Effects 0.000 description 5
- 230000002776 aggregation Effects 0.000 description 5
- 238000004220 aggregation Methods 0.000 description 5
- 230000001427 coherent effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 4
- 230000002441 reversible effect Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 2
- 238000013478 data encryption standard Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000002195 synergetic effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/6017—Methods or arrangements to increase the throughput
- H03M7/6023—Parallelization
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/20—Manipulating the length of blocks of bits, e.g. padding or block truncation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/30—Compression, e.g. Merkle-Damgard construction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Signal Processing (AREA)
- Bioethics (AREA)
- Computational Linguistics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
Abstract
一种用于数据加密的方法可以包括:接收输入数据;在输入数据中找到分隔符;基于分隔符在输入数据中的位置,使用输入数据的部分来生成数据份额;以及加密所述数据份额。输入数据可以包括记录,分隔符指示记录的边界,并且数据份额可以包括记录。分隔符的位置可以在所述输入数据的部分中。生成所述数据份额可以包括基于所述输入数据的部分的子集生成所述数据份额。所述输入数据的部分可以是所述输入数据的第一部分,以及分隔符的位置可以在所述输入数据的第二部分中。
Description
相关申请的交叉引用
本申请要求2021年8月10日提交的名称为“Object Processing and Filteringfor Computational Storage”的美国临时专利申请序列号63/231,709、2021年8月10日提交的名称为“Data Placement with Spatial Locality and Hierarchical Aggregationfor Computational Storage”的美国临时专利申请序列号63/231,711、2021年8月10日提交的名称为“Integrated Data Chunking and Compression for Near Data Processing”美国临时专利申请序列号63/231,710、以及2021年8月10日提交的名称为“IntegratedData Chunking and Encryption for Near Data Processing”的美国临时专利申请序列号63/231,715的优先权和权益,上述申请通过引用并入本文。
技术领域
本公开一般涉及计算存储系统,更具体地,涉及用于划分和加密数据的系统、方法和装置。
背景技术
计算存储设备可以包括可以对存储在该设备上的数据进行操作的一个或多个处理资源。主机可以将处理任务卸载到存储设备,例如,通过向存储设备发送指示对存储在该设备上的数据执行的操作的命令。存储设备可以使用一个或多个处理资源来执行该命令。存储设备可以向主机发送操作结果和/或将结果存储在该设备上。
背景技术部分中公开的上述信息仅用于增强对发明原理的背景的理解,因此它可能包含不构成现有技术的信息。
发明内容
一种用于数据压缩的方法可以包括:接收输入数据,在输入数据中查找分隔符,基于分隔符在输入数据中的位置,使用输入数据的部分来生成数据份额,以及压缩所述数据份额。输入数据可以包括记录,分隔符指示记录的边界,并且所述数据份额可以包括所述记录。分隔符的位置可以在所述输入数据的部分中。生成所述数据份额可以包括基于所述输入数据的部分的子集生成所述数据份额。所述输入数据的部分可以是输入数据的第一部分,分隔符的位置可以在输入数据的第二部分中。生成所述数据份额可以包括基于输入数据的第一部分和输入数据的第二部分生成所述数据份额。所述输入数据的部分的大小可以基于默认份额大小。该方法还可以包括基于分隔符的位置修改数据份额的大小。修改数据份额的大小可以包括扩展数据份额的大小。接收可以包括接收输入数据流。在输入数据中查找分隔符可以包括对输入数据执行第一扫描操作,并且压缩所述数据份额可以包括对所述数据份额执行第二扫描操作。
一种用于数据压缩的方法可以包括扫描输入数据,基于扫描执行压缩操作以使用输入数据生成压缩数据,基于扫描查找输入数据中的分隔符,以及基于分隔符在输入数据中的位置使用压缩数据生成数据份额。输入数据可以包括记录,分隔符指示记录的边界,并且数据份额可以包括记录。该生成可以包括基于份额大小生成该数据份额。该份额大小可以是默认份额大小。该份额大小可以基于默认份额大小和输入数据中的匹配的长度。匹配可以包括分隔符。分隔符可以是第一分隔符,该方法还可以包括保持第一分隔符,并在输入数据中寻找第二分隔符,其中生成可以包括基于第一分隔符和第二分隔符生成数据份额。该方法还可以包括基于压缩数据的大小设置指示。该指示可以包括终止指示。该生成可以包括基于该指示和分隔符来生成该数据份额。扫描可以包括基于该指示扫描输入数据。扫描可以包括基于分隔符扫描输入数据。该执行可以包括基于分隔符执行压缩操作。输入数据可以包括输入数据流。压缩操作可以包括基于流的压缩操作。
一种系统可以包括主机,该主机包括主机逻辑,该主机逻辑被配置为对输入数据执行扫描操作,基于扫描操作执行数据压缩操作以使用输入数据生成压缩数据,基于扫描操作查找输入数据中的分隔符,以及基于分隔符使用压缩数据生成数据份额。主机逻辑还可以被配置为基于默认份额大小和分隔符在输入数据中的位置来生成数据份额。所述分隔符可以是第一分隔符,并且所述主机逻辑还可以被配置为基于第二分隔符在输入数据中的位置来生成所述数据份额。该系统还可以包括被配置为从主机接收该数据份额的设备,该设备包括被配置为解压缩该数据份额以生成解压缩的数据份额、并对该解压缩的数据份额执行操作的设备逻辑。
一种用于数据加密的方法可以包括:接收输入数据;在输入数据中查找分隔符;基于分隔符在输入数据中的位置,使用输入数据的部分来生成数据份额;以及加密所述数据份额。输入数据可以包括记录,分隔符指示记录的边界,并且数据份额可以包括记录。分隔符的位置可以在所述输入数据的部分中。生成该数据份额可以包括基于所述输入数据的部分的子集生成所述数据份额。所述输入数据的部分可以是输入数据的第一部分,分隔符的位置可以在输入数据的第二部分中。生成该数据份额可以包括基于输入数据的第一部分和输入数据的第二部分生成该数据份额。所述输入数据的部分的大小可以基于默认份额大小。该方法还可以包括基于分隔符的位置修改数据份额的大小。修改数据份额的大小可以包括扩展数据份额的大小。接收输入数据可以包括接收输入数据流。在输入数据中查找分隔符可以包括对输入数据执行第一扫描操作,并且加密该数据份额可包括对该数据份额执行第二扫描操作。
一种用于数据加密的方法可以包括:扫描输入数据;基于扫描,执行加密操作以使用输入数据生成加密数据;基于扫描,在输入数据中查找分隔符;以及基于分隔符在输入数据中的位置,使用加密数据生成数据份额。输入数据可以包括记录,分隔符指示记录的边界,并且数据份额可以包括记录。该生成可以包括基于份额大小生成该数据份额。该份额大小可以是默认份额大小。所述生成可以包括基于分隔符在输入数据中的位置来扩展数据份额的大小。加密操作可以包括基于块的加密操作,并且该执行可以包括对输入数据的第一块执行加密操作以生成加密数据的第一块。分隔符可以位于输入数据的第二块中,该方法还包括基于分隔符的位置来扩展数据份额的大小。该方法还可以包括基于输入数据的第二块的大小来扩展数据份额的大小。该扩展可以包括基于输入数据的第二块的大小填充该数据份额。输入数据的第二块的大小可以基于加密操作的密钥长度。所述执行可以还包括对输入数据的第二块执行加密操作以生成加密数据的第二块。所述生成可以包括使用加密数据的第一块和加密数据的第二块生成所述数据份额。
一种系统可以包括主机,该主机包括主机逻辑,该主机逻辑被配置为对输入数据执行扫描操作,基于扫描操作执行数据加密操作以使用输入数据生成加密数据,基于扫描操作在输入数据中查找分隔符,以及基于分隔符使用加密数据生成数据份额。主机逻辑还可以被配置为基于默认份额大小和分隔符在输入数据中的位置来生成数据份额。主机逻辑还可以被配置为基于加密操作的密钥长度来生成该数据份额。该系统还可以包括被配置为从主机接收该数据份额的设备,该设备包括被配置为解密该数据份额以生成解密的数据份额并对解密的数据份额执行操作的设备逻辑。
一种划分数据的方法可以包括:扫描输入数据;基于扫描,使用输入数据执行操作以生成经处理的数据;基于扫描,在输入数据中寻找分隔符;以及基于分隔符在输入数据中的位置,使用经处理的数据生成数据份额。该操作可以包括数据压缩操作。该操作可以包括数据加密操作。该生成可以包括基于默认份额大小生成该数据份额。输入数据可以包括输入数据流,并且操作可以包括基于流的操作。该操作可以包括基于块的操作。所述执行可包括使用输入数据的块来执行操作。该生成可以包括基于分隔符在输入数据中的位置来修改数据份额。修改可以包括扩展该数据份额。扩展可以包括基于操作的块大小来扩展数据份额。扩展可以包括填充数据份额。
一种系统可以包括主机,该主机包括主机逻辑,该主机逻辑被配置为对输入数据执行扫描操作,基于扫描操作执行处理操作以使用输入数据生成经处理的数据,基于扫描操作在输入数据中查找分隔符,以及基于分隔符使用经处理的数据生成数据份额。主机逻辑还可以被配置为基于默认份额大小和分隔符在输入数据中的位置来生成数据份额。该系统还可以包括被配置为从主机接收该数据份额的设备,该设备包括被配置为恢复该数据份额以生成恢复的数据份额并对恢复的数据份额执行操作的设备逻辑。
附图说明
附图不一定是按比例绘制的,在所有附图中,出于说明的目的,类似结构或功能的元件通常可以用类似的附图标记或其部分来表示。附图仅仅是为了便于描述本文描述的各种实施例。附图没有描述本文公开的教导的每个方面,并且不限制权利要求的范围。为了防止附图变得模糊,不是所有的组件、连接等都被示出,并且不是所有的组件都具有附图标记。然而,从附图中可以容易地看出组件配置的模式。附图与说明书一起示出本公开的示例实施例,并且与描述一起用于解释本公开的原理。
图1A示出根据本公开示例实施例的利用服务器侧加密的对象存储方案的实施例。
图1B示出根据本公开示例实施例的利用客户端侧加密的对象存储方案的实施例。
图2A示出根据本公开示例实施例的可以向用户设备返回对象的对象存储方案的实施例。
图2B示出根据本公开示例实施例的具有数据选择特征的对象存储方案的实施例。
图3A示出根据本公开示例实施例的具有数据选择特征的对象存储方案的写操作的实施例。
图3B示出根据本公开示例实施例的具有数据选择特征的对象存储方案的读操作的实施例。
图4示出根据本公开示例实施例的具有本地数据恢复的存储系统的实施例。
图5示出根据本公开示例实施例的具有本地数据恢复的存储系统的另一个实施例。
图6A示出根据本公开示例实施例的具有本地数据恢复和服务器侧加密的存储方案的写操作的示例实施例。
图6B示出根据本公开示例实施例的具有本地数据恢复和客户端侧加密的存储方案的写操作的示例实施例。
图7A示出根据本公开示例实施例的具有本地数据恢复的存储方案的写操作的示例实施例。
图7B示出根据本公开示例实施例的具有本地数据恢复的存储方案的具有数据选择的读操作的示例实施例。
图8示出根据本公开示例实施例的具有本地数据恢复的对象存储方案的系统架构的示例实施例。
图9A示出根据本公开示例实施例的具有本地数据恢复的存储方案的读和/或写操作的示例实施例。
图9B示出根据本公开示例实施例的具有本地数据恢复的存储方案的读操作和数据选择操作的示例实施例。
图10示出根据本公开示例实施例的来自表1的数据在三个计算存储设备处的三个数据分块上的分布的实施例。
图11示出根据本公开示例实施例的存储系统的示例实施例,其中服务器可以重建在不同存储设备处的数据分块之间分割的记录。
图12示出根据本公开示例实施例的用于将数据划分成分块并压缩数据的内容感知方法的实施例。
图13示出根据本公开的示例实施例的用于压缩数据的方法的实施例。
图14示出可以由图13所示的方法执行的操作的实施例。
图15示出根据本公开示例实施例的集成分块和压缩方案的实施例。
图16示出根据本公开示例实施例的可以由图15所示的方案执行的集成分块和压缩方法的实施例。
图17示出根据本公开示例实施例的集成分块和压缩方案的另一实施例。
图18示出根据本公开示例实施例的可以由图17所示的方案执行的集成分块和压缩方法的实施例。
图19示出根据本公开示例实施例的集成分块和压缩方法的另一实施例。
图20示出根据本公开示例实施例的具有集成分块和压缩的系统的实施例。
图21示出根据本公开示例实施例的用于将数据划分成分块并加密数据的内容感知方法的实施例。
图22示出根据本公开示例实施例的可用于加密数据技术的块密码方法的示例实施例。
图23示出根据本公开示例实施例的集成数据分块和加密方案的实施例。
图24示出根据本公开示例实施例的集成数据分块和加密方法的实施例。
图25示出根据本公开示例实施例的具有集成分块和加密的系统的实施例。
图26示出根据本公开示例实施例的用于具有数据分块修改的存储方案的主机装置的示例实施例。
图27示出根据本公开示例实施例的具有数据分块修改的存储设备的示例实施例。
图28示出根据本公开示例实施例的用于数据压缩的方法的实施例。
图29示出根据本公开示例实施例的用于数据加密的方法的实施例。
图30示出根据本公开示例实施例的用于对数据分块的方法的实施例。
具体实施方式
对象存储系统可以实现数据选择特征,该特征可以使用户的设备能够请求从存储的对象中检索指定的数据子集。为了处理这样的请求,存储服务器可以从存储在一个或多个存储设备上的一个或多个数据份额(portion)重建对象。如果对象被加密,存储服务器还可以解密该对象,和/或如果对象被压缩,则解压缩该对象,以将该对象恢复到其原始形式。存储服务器可以对恢复的对象执行一个或多个选择操作,诸如过滤、扫描等,以查找用户设备所请求的指定的数据子集。存储服务器可以将所请求的数据子集返回给用户的设备。
在一些方面,计算存储设备能够对存储在该设备上的对象执行一个或多个选择操作,诸如过滤、扫描等。然而,如果对象的份额存储在设备上,并且该对象在将数据划分成份额之前被修改(例如,压缩、加密等),则存储在设备上的份额可能仅包括存储设备可能无法恢复(例如,解压缩和/或解密)成原始数据的(对设备)随机的信息。因此,存储设备可能无法在本地对存储在该设备上的数据份额执行有意义的操作。
本公开包含许多与计算存储相关的原理。本文公开的原理可以具有独立的效用,并且可以单独实施,并且不是每个实施例都可以利用每个原理。此外,这些原理还可以以各种组合来体现,其中一些组合可以以协同的方式放大单个原理的一些益处。
本文公开的一些原理涉及在对一个或多个份额执行一个或多个修改之前将数据划分成一个或多个份额。例如,在根据本公开的示例实施例的计算存储方案中,在对数据执行诸如压缩和/或加密的修改之前,对象或其他原始数据可以被划分成数据份额。可以单独修改一个或多个数据份额(例如,可以对数据的单独份额执行压缩和/或加密),并且可以将数据份额的修改版本发送到计算存储设备进行存储和/或处理。存储设备可以例如通过解密和/或解压缩经修改的数据份额,从经修改的数据份额生成数据份额的恢复版本。存储设备可以在本地对经恢复的数据份额执行操作(例如,选择操作)。
取决于实现细节,在计算存储设备本地执行选择操作可以减少从一个或多个存储设备发送到服务器的数据量。此外,取决于实现细节,计算存储设备可以比服务器更高效地执行诸如选择操作的操作。
在根据本公开的一些示例实施例中,存储设备、存储服务器等可以提供如何将原始数据划分成多个份额和/或如何修改这些份额以便于一个或多个计算存储设备进行存储和/或处理的一个或多个指示。例如,在一些实施例中,指示可以包括诸如存储设备可以支持的一个或多个份额大小、压缩算法、加密算法等信息。在一些实施例中,一个或多个指示可以是强制性的、可选的(例如,建议性的)或其组合。例如,用于在特定存储设备上存储的最佳份额大小的指示可以是建议性的,而支持的压缩算法的指示可以是强制性的,以使存储设备能够解压缩数据份额用于在该设备上的本地处理。
根据本公开的示例实施例,在此公开的包括划分数据、修改数据(例如,压缩和/或加密数据)、擦除编码数据、存储数据、处理数据、选择数据等的任何操作可以在各种装置中以无限的配置分布(例如,映射)。例如,在一些实施例中,客户端可以将原始数据(例如,对象)划分成一个或多个份额,压缩数据份额,并将经压缩的数据份额发送给服务器。服务器可以加密经压缩的数据份额,并且在一个或多个存储设备上存储经压缩和加密的数据份额。作为另一个示例,在一些实施例中,客户端可以将原始数据(例如,对象)划分成一个或多个份额,压缩和加密数据份额,并且将经压缩和加密的数据份额发送到服务器以在一个或多个存储设备上存储。作为另一个示例,客户端可以将原始数据(例如,对象)发送到服务器,服务器可以将数据划分成一个或多个份额,并且对数据份额进行压缩、加密和/或执行擦除编码,以及跨一个或多个存储设备存储单独修改的数据份额。
本公开的一些附加原理涉及用于将数据划分成多个份额的内容感知技术。例如,在一些实施例中,可以通过分析份额的内容以查找被划分的数据内的记录的边界(例如,由分隔符指示)来动态地确定份额的大小。份额的大小可以被确定为与该份额中的一个或多个完整记录对齐。例如,如果具有默认份额大小的数据份额包括不完全的记录,则可以修改(例如,扩展或减少)该份额的大小,使得该份额以该份额内的记录的分隔符结束(例如,该份额可以仅包括完整的记录)。所得的自含式份额可以作为单元被压缩和/或加密。
根据本公开的示例实施例的一些附加的内容感知数据划分技术可以将数据划分操作与可以扫描要划分的数据的另一操作相集成。例如,在一些实施例中,数据划分操作可以与数据压缩操作相结合,使得当出于压缩的目的扫描输入数据流时,也可以扫描它以寻找指示一个或多个记录的一个或多个边界的一个或多个分隔符。数据份额大小可以由一个或多个分隔符的位置来确定,因此该份额在记录的末尾结束。在一些实施例中,数据压缩操作也可以在该份额的末尾终止。取决于实现细节,这可以提高数据划分操作的效率,因为它可以利用已经为了压缩的目的而执行的数据扫描。
作为另一个示例,在一些实施例中,数据划分操作可以与数据加密操作相结合。当出于加密的目的而读取输入数据流时,也可以对其进行扫描以寻找指示一个或多个记录的一个或多个边界的一个或多个分隔符。数据份额大小可以由一个或多个分隔符的位置来确定,因此该份额在记录的末尾结束。在一些实施例中,数据加密操作也可以在该份额的末尾终止。如果用块密码算法(block-cipher algorithm)实现加密操作,则可以修改(例如,扩展或减少)份额的大小,使得该份额的末尾与块(block)的末尾对齐(如果数据的大小不是块大小的偶数倍,则可以进行填充)。
在一些实施例中,数据份额(a portion of data)也可以被称为数据分块(achunkof data),并且将数据分成多个数据份额或数据分块可以被称为对数据进行分块。在一些实施例中,数据份额或数据分块可以指可以通过例如为了在一个或多个存储设备上存储的目的划分数据获得的任何数据单元。在一些情况下,如果原始数据的量小于或等于份额或块大小(例如,默认的份额或块大小),则由划分或分块操作生成的原始数据的单元仍可被称为数据份额或块,即使其大小与原始数据的量相同。
为了说明的目的,可以在对象存储系统的上下文中描述一些实施例,该对象存储系统可以实现数据选择特征和/或可以在一个或多个键值(KV)存储设备中存储数据。然而,本公开中描述的原理不限于任何特定的数据格式、数据处理特征、存储设备接口等。例如,根据本公开的示例实施例的系统、方法和/或装置也可以用可以提供文件存储、数据库存储、块存储等的存储系统来实现,可以实现任何类型的处理特征,诸如加速、图表处理、图形处理、机器学习等,并且可以与包括KV存储设备、块存储设备等的任何类型的存储设备一起操作。
对象存储系统可以使用户的设备能够以对象的形式存储数据。对象中的数据可以在被存储之前以各种方式被修改。例如,数据可以被压缩以减少它在存储介质中占据的空间量和/或减少将数据从客户端传输到一个或多个存储设备(例如,通过网络)所需的时间、带宽、电力等。作为另一个示例,对象中的数据可以被加密,以防止在数据的传输和/或存储期间对数据的未授权访问。
对象可包括相对大量的数据,因此,出于可靠性、可访问性等目的,对象可被划分成可跨多个存储设备存储的块。(将数据划分成分块也可以称为对数据分块。)例如,在压缩和/或加密之后,对象可以被分成固定大小的块,以适合存储系统中的一个或多个基于块的存储设备所使用的块大小。在一些实施例中,擦除编码方案可用于将数据划分成数据分块并生成可以使存储系统能够恢复丢失或损坏的数据分块的一个或多个奇偶校验分块。
图1A示出根据本公开的示例实施例的具有服务器侧加密的对象存储方案的实施例。图1A的左侧示出读和/或写操作期间系统组件之间的数据流,图1A的右侧示出写操作期间对数据的操作。
图1A左侧所示的系统可包括客户端102、一个或多个服务器104(可统称为服务器)以及一个或多个存储设备108(可统称为存储)。在图1A的右侧示出的操作在由客户端102执行的第一组110A和由服务器104执行的第二组112A中示出。
在写操作期间,客户端102可以从原始数据114开始,原始数据114可以是例如对象。客户端102可以对原始数据114执行一个或多个压缩操作以生成压缩数据116。客户端102可以向服务器104发送压缩数据116,服务器104可以加密压缩数据116以生成加密数据118。服务器104可以将压缩和加密的数据118划分成一个或多个数据分块(chunk)120,并将一个或多个数据分块120发送到一个或多个存储设备108。在一些实施例中,服务器104可以对一个或多个数据分块120执行擦除编码,以生成也可以存储在一个或多个存储设备108上的一个或多个奇偶校验分块121。
在读操作期间,图1A中所示的操作可以反向执行。例如,服务器104可以从一个或多个存储设备108读取一个或多个数据分块120。如果数据分块之一例如由于故障存储设备而丢失或损坏,则服务器104可以使用一个或多个奇偶校验分块121来恢复丢失或损坏的数据分块。服务器104可以从数据分块120中重构压缩和加密的数据118。服务器104可以解密压缩和加密的数据118,并将压缩和解密的数据116发送给客户端102。客户端102可以解压缩所述压缩和解密的数据116以恢复原始数据114,该原始数据114可以是例如对象。
图1B示出根据本公开的示例实施例的具有客户端侧加密的对象存储方案的实施例。图1B的左侧示出读和/或写操作期间系统组件之间的数据流,图1B的右侧示出写操作期间对数据的操作。
在图1B的左侧示出的系统和在图1B的右侧示出的操作可以包括可以与图1A中示出的组件和/或操作相似的一些组件和/或操作,并且可以用相同或相似的附图标记来表示。然而,在图1B所示的实施例中,客户端102可加密压缩数据116以生成压缩和加密数据118,如客户端102执行的第一组操作110B所示。客户端102可将压缩和加密的数据118发送给服务器104,服务器104可将压缩和加密的数据118划分成一个或多个数据分块120,如由服务器104执行的第二组操作112B所示。服务器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都被加密,则加密密钥可以由存储服务和/或服务的用户生成。在一些实施例中,在写操作结束时或接近写操作结束时执行分块(chunking)操作可以使得服务器104能够将数据划分成分块(chunk),分块的大小可以对应于一个或多个存储设备108的一个或多个块(block)大小。
在某些情况下,与用户设备相关联的用户可能只需要检索存储在对象中的数据的子集。一些对象存储系统可能要求用户检索整个对象并处理对象以查找数据子集。这可能导致相对大量的不需要的数据被传输到用户的设备,这进而可能消耗不必要的资源,例如时间、带宽、电力等。
为了减少和/或防止不需要的数据的传输,一些对象存储系统可以提供数据选择特征,该特征可以使用户能够请求从存储的对象中检索指定的数据子集。对象存储系统可以对对象执行扫描、过滤和/或其他数据选择操作来查找指定的数据子集,而不是将整个对象发送到用户的设备。对象存储系统可以将指定的数据子集返回给用户的设备。
图2A示出根据本公开的示例实施例的可以向用户设备返回对象的对象存储方案的实施例。图2B示出根据本公开的示例实施例的具有数据选择特征的对象存储方案的实施例。
参考图2A,对象存储服务201可以在数据桶或容器205中为用户存储对象203A、203B和203C。如果用户需要从对象203A之一中检索数据子集(例如,一个或多个记录),则对象存储服务201可以要求用户请求整个对象203A,该整个对象203a可以通过网络被发送到客户端计算操作207。客户端计算操作207可以对对象203A执行数据选择操作209,如扫描、过滤等,以查找数据子集。客户端计算操作207可以将该数据子集用于进一步的操作211。
参考图2B,具有数据选择特征的对象存储服务213可以使用户能够向存储的对象203A请求数据子集。例如,对象存储服务213可以使用户能够例如通过发送查询(例如,使用诸如SQL的数据库语言的表达式)来提交请求,该查询可以对可以例如以诸如逗号分隔变量(CSV)、JavaScript对象符号(JSON)、Parquet等的格式存储的对象203A进行操作。在一些实施例中,可以例如使用应用编程接口(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,该数据可以被解压缩以恢复原始数据314(例如,对象)。服务器304可以对原始数据314执行数据选择操作(例如,扫描、过滤等)以获得所请求的数据子集323。服务器304可以向客户端302发送数据子集323。因为客户端的解压缩操作可能被绕过,所以它是灰色的。在图3B的右侧示出的操作在由服务器304执行的组312B中示出。
如同图1A和图1B所示的实施例一样,图3A和图3B所示的服务器304可以用可被配置为对象存储服务器的第一服务器和可被配置为存储服务器的第二服务器来实现,以管理一个或多个存储设备308。因此,在一些实施例中,存储服务器可以从一个或多个数据分块320重建压缩和加密的数据318,并且对象存储服务器可以执行解密、解压缩和/或数据选择操作。此外,尽管图3A和图3B所示的实施例可以实现服务器侧加密,但是其他实施例也可以实现客户端侧加密。
取决于实现细节,图3A和图3B中所示的实施例可以例如通过减少存储系统和客户端之间传递的数据量来减少网络流量。然而,图3A和图3B所示的体系结构的数据处理流程可能会阻止存储系统利用计算存储设备,根据实现细节,计算存储设备可能非常适合于执行由服务器304执行的一些或所有操作。例如,在一些实施例中,计算存储设备可以包括可以比服务器中可能存在的通用处理资源更高效地执行解压缩、解密和/或诸如数据选择操作的其他操作的处理资源。然而,因为原始数据314可以在进行分块之前被修改(例如,压缩、加密等),所以存储数据分块的单独的存储设备308可能无法解密、解压缩和/或以其他方式将数据分块恢复到可以在设备本地对其执行有意义的操作的形式。
图4示出根据本公开的示例实施例的具有本地数据恢复的存储系统的实施例。图4所示的系统可以包括主机424和计算存储设备408,它们可以通过连接422进行通信。主机424可以包括数据分块逻辑426(也可以称为数据划分逻辑)和数据修改逻辑427,数据修改逻辑427可以被配置为以存储设备408可以将数据分块恢复成存储设备可以对其执行操作的形式的形式向存储设备408提供一个或多个数据分块。例如,数据分块逻辑426可以在由数据修改逻辑427修改之前,将对象或其他原始数据划分成一个或多个数据分块。数据分块逻辑426可以是也可以不是内容感知的。例如,在数据分块逻辑426不是内容感知的实施例中,数据分块逻辑426可以将数据分成固定大小的块,因此,一个或多个分块可以包括一个或多个记录片段。作为另一个示例,在数据分块逻辑426是内容感知的实施例中,数据分块逻辑426可以在数据中寻找记录分隔符(record delimiter),以将数据分成可变大小的分块,使得分块可以以记录分隔符结束,因此以完整的记录结束。
数据修改逻辑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和/或本文公开的任何其他存储设备可以使用诸如串行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-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)、光纤通道、InfiniBand、iWARP等,和/或其任何组合。
本文公开的任何功能,包括诸如数据分块逻辑426、数据修改逻辑427、数据恢复逻辑428、一个或多个处理元件429、指示逻辑531等的任何逻辑,可以用硬件、软件或其组合来实现,包括组合逻辑、时序逻辑、一个或多个定时器、计数器、寄存器和/或状态机、一个或多个复杂可编程逻辑器件(CPLD)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、中央处理单元(CPU)(诸如诸如x86处理器的复杂指令集计算机(CISC)处理器和/或诸如ARM处理器的精简指令集计算机(RISC)处理器)、图形处理单元(GPU)、神经处理单元(NPU)、张量处理单元(TPU)等,执行存储在任何类型的存储器中的指令,或其任何组合。在一些实施例中,数据恢复逻辑428、处理元件429等中的一个或多个可以包括固定的和/或可编程的功能,以执行任何功能,诸如压缩和/或解压缩、加密和/或解密、微服务、擦除编码、视频编码和/或解码、数据库加速、搜索、机器学习、图表处理等。在一些实施例中,一个或多个组件可以被实现为片上系统(SOC)。
在一些实施例中,数据恢复逻辑428、处理元件429等中的一个或多个可以与存储设备的一个或多个其他组件(诸如存储设备控制器、闪存转换层(FTL)等)集成。
本文公开的任何数据修改操作,诸如压缩、加密等(或其反向操作),可以用任何合适的技术来实现。例如,数据压缩和/或解压缩可以用LZ77、gzip、Snappy等来实现。加密和/或解密可以用诸如AES-256、Rivest-Shamir-Adleman(RSA)等的高级加密标准(AES)来实现。
图5示出根据本公开的示例实施例的具有本地数据恢复的存储系统的另一个实施例。图5所示的系统可以包括类似于针对图4所示的实施例所描述的组件和/或实现类似的操作,其中具有以相同数字结尾的附图标记的元件可以是相似的。然而,在图5所示的实施例中,计算存储设备508还可以包括指示逻辑531,其可以被配置为向主机524处的数据分块逻辑526和/或数据修改逻辑527提供一个或多个指示532。
一个或多个指示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的查询等),指示逻辑531可以将任何指示532提供给任何装置,诸如客户端、对象存储服务器、存储节点等。在一些实施例中,一个或多个指示532(例如,一个或多个存储超参数)可以通过客户端库提供给用户的设备(例如,由客户端提供)。
图6A示出根据本公开的示例实施例的具有本地数据恢复和服务器侧加密的存储方案的写操作的示例实施例。例如,图6A所示的实施例可以用于实现图4和图5所示的任何存储方案。图6A的左侧示出存储系统组件之间的数据流,图3A的右侧示出写操作期间对数据的操作。
图6A左侧所示的系统可以包括客户端602、一个或多个服务器604(可以统称为服务器)以及一个或多个存储设备608(可以统称为存储装置)。在图6A的右侧示出的操作在由客户端602执行的第一组610A和由服务器604执行的第二组612A中示出。
当存储设备608和/或服务器604向客户端602提供指示数据分块大小、压缩算法等的一个或多个指示632时,写操作可以开始。客户端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可以向服务器604发送压缩分块634,服务器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,并将一个或多个数据分块635和一个或多个奇偶校验分块636存储在一个或多个存储设备608上,如操作组612B中所示。
在一个或多个数据分块633已经被单独修改(例如,压缩、加密等)并作为修改的数据分块636跨一个或多个存储设备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,其可以被配置为在压缩各个数据分块之前对原始数据(例如,一个或多个对象)执行数据分块,因此一个或多个计算存储设备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相关的清理(housekeeping)和/或管理功能。节点和存储设备管理逻辑851可以执行与维护一个或多个存储节点806和/或存储设备808相关的清理和/或管理功能。
存储节点806中的每个可以包括处理单元(例如,数据处理单元(DPU)、CPU等)852和一个或多个计算存储设备808。DPU 852可以执行各种功能,诸如接收和分发来自客户端802的读取可以存储在一个或多个存储设备808上的分块中的一个或多个数据子集的请求。在一些实施例中,DPU 852可以对从对象存储服务器集群804接收并存储在一个或多个计算存储设备808上的数据分块执行数据压缩、数据加密、擦除编码等。在一些实施例中,DPU852可以聚合由一个或多个计算存储设备808执行的一个或多个数据选择操作的结果,并将聚合的结果转发给对象存储服务器集群804和/或客户端802。
计算存储设备808a示出可以包括在一个或多个计算存储设备808中的组件的示例。计算存储设备808a可以包括数据选择引擎853和存储介质830。数据选择引擎853可以包括解密逻辑854和解压缩逻辑855,它们可以分别用于解密和/或解压缩已经被单独加密和/或压缩的数据分块,以将数据分块恢复到可以被操作的形式。数据选择引擎853还可包括数据选择逻辑856,其可用于对恢复的数据分块执行数据选择或其他操作。数据选择引擎853还可以包括KV逻辑857,KV逻辑857可以用于实现存储设备808a的KV接口。
在一些实施例中,图8所示的系统可以实现有用于存储设备808中的一些或所有的KV接口。取决于实现细节,这可以促进和/或使得数据分块能够以可变的分块大小来实现。出于说明的目的,图8所示的实施例可被描述为在一个或多个存储设备808本地利用恢复的数据分块实现数据选择特征,然而,这些原理可被应用于可对恢复的数据分块执行的任何类型的处理。
图9A示出根据本公开的示例实施例的具有本地数据恢复的存储方案的读和/或写操作的示例实施例。例如,可以使用图8所示的系统来实现图9A所示的操作。为了说明的目的,第一组操作958A可以被假设为由图8所示的客户端802和对象存储服务器集群804执行,第二组操作959A可以被假设为由图8所示的一个或多个存储节点806和/或存储设备808执行,然而,在其他实施例中,图9A所示的操作可以由任何其他组件执行。
参考图9A,在写操作(例如,放置(put)操作)期间,原始数据914(例如,一个或多个对象)可以被客户端分块以生成一个或多个数据分块933。一个或多个分块933可以由客户端单独压缩以生成一个或多个压缩分块934,压缩分块934可以被发送到对象存储服务器并由对象存储服务器单独加密以生成一个或多个压缩和/或加密分块935。对象存储服务器可以对一个或多个压缩和/或加密分块935执行擦除编码,以生成一个或多个奇偶校验分块936。
对象存储服务器可以将一个或多个压缩和加密分块935和一个或多个奇偶校验分块936(例如,通过放置操作960)发送到一个或多个存储节点,以便在一个或多个存储设备上进行存储。因此,在写操作之后,原始数据914(例如,对象)可以跨一个或多个存储设备存储在可能已经被单独修改(例如,压缩和/或加密)的一个或多个分块935中。
在读操作(例如,获取(get)操作)期间,例如,在存储设备可能不恢复数据分块和/或对数据分块执行操作的实现方案中,可以从一个或多个存储设备读取一个或多个单独修改的数据分块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
图10示出根据本公开的示例实施例的来自表1的数据在三个计算存储设备处的三个数据分块上的分布的实施例。在图10所示的实施例中,分号被用作各个记录(可以对应于表1所示的行)之间的分隔符,但是在其他实施例中,可以使用其他分隔技术。
参考图10,前两个记录(由索引1和2标识)可以完全装入(fit)存储在第一存储设备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对象,分隔符可以实现为回车符(carriage return)。附加地或可替换地,一个或多个分隔符可以由层级结构来确定。因此,检测分隔符可能比简单的比较更复杂。例如,对于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、以及可以存储数据分块的计算存储设备1108A、1108B、1108C、1108D和1108E,所述数据分块包括类似于图10所示的记录。
参考图11,存储设备1108A到1108E中的每一个可以分别(直接地,或者通过它所在的存储节点)发送它可以对其对应的数据分块1164A到1164E中的任何完整记录执行的数据选择操作的结果1165。然而,因为记录3、6和9可能不在存储设备本地处理,所以对象存储服务器1104可以在一个或多个聚合缓冲器1166中重建被分割的记录。在一些实施例中,每个聚合缓冲器1166可以重建在第i个设备和第(i+1)个设备之间的被分割的记录。例如,存储设备1108A可以向对象存储服务器1104发送位于数据分块1164A中的记录3的第一份额(也可以称为片段)(例如,索引、居住空间、卧室、浴室、邮政编码和建造年份),以在第一缓冲器1166A中与位于数据分块1164B中并由存储设备1108B发送的记录3的第二份额(标价)聚合。在一些实施例中,对象存储服务器1104可以包括N个聚合缓冲器,其中N可以是耦合到对象存储服务器1104的存储设备的数量。
对象存储服务器1104可以分别对聚合缓冲器1166A、1166B和1166C中的重构记录3、6和9执行选择操作,以生成结果1167。因此,在由各个存储设备发送的结果1165和从聚合缓冲器1166生成的结果1167之间,对象存储服务器1104可以获得由请求指定的所有数据子集,并将这些子集返回给客户端。
然而,取决于实现细节,从存储设备1108发送到对象存储服务器1104的记录片段中的每个可以消耗时间、带宽和/或电力,增加时延,减少处理资源的利用率等,和/或可能导致对象存储服务器1104成为潜在的瓶颈。
图12示出根据本公开的示例实施例的用于将数据划分成分块并压缩数据的内容感知方法的实施例。在图12所示的方法中,图12顶部所示的未压缩输入数据1268(可以存储在缓冲器中)可以包括一个或多个记录,每个记录可以以分隔符结束,在该示例中,分隔符可以是分号。然而,在其他实施例中,可以使用诸如括号、回车换行(CR-LF)序列等其他分隔符。在一些实施例中,一个或多个记录可以被包括在输入数据1268内的数组(例如,JSON数组)、文档(例如,JSON文档)等中。如果记录在数组、文档等的末尾结束,则可以使用不同的分隔符来指示数组、文档等的末尾,但是图12所示的方法也可以将该不同的分隔符解释为记录的末尾。
在第一通路(pass)(操作1)期间,该方法可以扫描输入数据1268并使用它来生成数据分块,直到它达到默认的分块大小N。如果分块1269中的最后一个数据元素是分隔符,则该方法可以前进到第二通路(操作2)。如果分块中的最后一个数据元素不是分隔符,则该方法可以修改分块的大小,使得分块的末尾与分隔符的末尾对齐。例如,该方法可以在保存数据1268的缓冲器中的位置N+1处开始,并向后扫描,直到找到分隔符1270。该方法可以减小分块的大小(例如,收缩该分块),直到分隔符1270是分块中的最后一个数据元素。因此,该分块可以减少等于收缩空间S的大小,因此该分块可以仅包括一个或多个完整的记录。
或者,该方法可以从保存数据的缓冲器中的位置N+1开始1268,并向前扫描,直到找到分隔符1271。该方法可以扩展分块的大小,直到分隔符1271是分块1269中的最后一个数据元素,如图12的中间所示。因此,分块可以被扩展等于扩展空间E的大小,因此分块可以仅包括一个或多个完整的记录。
一旦确定了分块大小,该方法可以进行到第二通路(操作2),其中可以以分隔符结束并且仅包括完整记录的自含式分块(self-contained chunk)(例如,分块1269)可以使用一个或多个压缩算法被压缩到长度C,以生成压缩数据1272。
因为未压缩数据分块的大小可以被减小或扩展,所以未压缩数据分块1269的大小可以是可变的,因此压缩数据分块1272的大小可以是可变的。
该方法是减少还是扩展分块的长度可取决于各种因素,诸如分块可被发送到的对象或键值存储设备的最大和/或最佳数据大小,或者分块可被发送到的基于块的存储设备的块大小。在对象或键值存储设备的情况下,得到的压缩的自含式数据分块1272可以被存储,而无需进一步的修改和/或处理。
取决于实现细节,图12所示的内容感知数据分块方法可以改进诸如图11所示的存储系统的操作,例如,因为更少或没有记录可以在不同存储设备上的块之间被分割,因此,更少或没有记录片段可以在存储设备、存储节点、存储服务器等之间传递,以使得组件能够恢复具有完整记录的数据分块和/或对完整记录执行操作。
例如,可以使用图4、图5和/或图9所示的系统中的任何系统来实现图12所示的压缩方法,其中分块逻辑426、526和/或826可以包括内容感知逻辑,其被配置为基于在未压缩的输入数据1268中找到记录或其他数据单元的边界(例如,分隔符)来确定块大小。
尽管图12所示的方法可以改进存储系统的操作,但是在一些实施例中,根据实施细节,与使用两个通路相关联的开销会增加处理负担,尤其是在扫描相对大的对象时。
根据本公开的示例实施例的一些附加的内容感知数据分块技术可以将分块操作与另一操作集成,该另一操作诸如可以扫描要被分块的数据的数据压缩操作。取决于实现细节,这可以提高分块操作的效率,因为它可以利用为了压缩而已经执行的扫描操作。因此,在一些实施例中,它可以减少或消除与两个扫描通路相关联的开销。
图13示出根据本公开的示例实施例的用于压缩数据的方法的实施例。图14示出可以由图13所示的方法执行的操作的实施例。图13和图14所示的方法可以基于例如压缩算法,诸如LZ77。如图13的顶部所示,该方法可以对输入数据流进行操作,该输入数据流可以通过先行(lookahead)缓冲器1374和窗口1373(其也可以被实现为缓冲器)。先行缓冲器1374之前的输入数据流的份额(portion)(也可称为部分(part))可被指示为不可见部分1375,因为它可能不被送往执行压缩的逻辑。取决于有多少数据已经通过先行缓冲器1374和窗口1373,在窗口1373之后可能有不可见数据的另一部分。
图13所示的方法可以执行如图14所示的以下操作。图13和图14所示的实施例可以用任何大小、配置等的数据元素,诸如字节、字、半字节等来实现。
(1)在第一操作1477-1,该方法可以将编码位置设置为输入数据流的第一数据元素,如图13的顶部所示。
(2)在第二操作1477-2,该方法可以扫描输入数据流,以寻找先行缓冲器1374中的一个或多个数据元素(可以称为文字(literal))与窗口1373中的一个或多个数据元素之间的长度为L的最长匹配,如图13顶部所示。
(3)在第三操作1477-3,如果在第二操作(2)1477-2处发现匹配,则该方法可以输出指针P,该指针P可以包括例如指示窗口1373中匹配数据的开始位置的距编码位置的偏移,以及指示匹配的数据元素的数量的长度L,如图13的顶部所示。该方法可以将编码位置和窗口1373向前移动L个数据元素,如图13底部所示。该方法可以进行到第五操作(5)1477-5。取决于长度L,这可能导致输入数据流的不可见部分1375的全部或部分进入先行缓冲器1374,并且先前在窗口1373中的数据长度L的部分1375变得不可见(例如,对于执行该方法的逻辑不可访问)。
(4)在第四操作1477-4,如果在第二操作(2)1477-2没有找到匹配,则该方法可以输出空指针(例如,偏移和/或长度L为零的指针)和先行缓冲器1374中的下一个数据元素(文字)。该方法可以将编码位置和窗口1373向前移动一个数据元素。
(5)在第五操作1477-5,如果先行缓冲器1374不为空,则该方法可以返回到第二操作(2)1477-2。否则,该方法可以终止。
因此,图13和图14所示的压缩方法可以通过检查先行缓冲器1374中的一个或多个文字的序列是否曾经出现在窗口1373的范围内,并用指示该序列在窗口1373中的实例的指针(例如,索引)替换它来操作。由压缩操作生成的输出数据流可以是一系列文字数据元素(例如,字节)和可以指示已经在输出中的数据元素序列的指针。
在一些实施例中,记录可以包括可以作为一个单元使用和/或操作的任何完整的数据结构(例如,数据库中的一行)。在一些实施例中,分隔符可以用可以指示记录边界的任何东西来实现,例如一个或多个数据元素(分号、括号、回车换行(CR-LF)序列等)。在一些实施例中,分隔符可以用诸如索引表的数据结构来实现,该索引表可以指示记录结束的位置。
因为图13和图14所示的压缩方法可以扫描输入数据作为其正常操作的一部分,所以根据本公开的示例实施例的分块操作可以集成到图13和图14所示的压缩方法中,以利用压缩操作已经执行的数据扫描。
图15示出根据本公开的示例实施例的集成分块和压缩方案的实施例。
如图15顶部所示,输入数据流可以通过先行缓冲器1574和窗口1573(也可以实现为缓冲器)。先行缓冲器1574之前的输入数据流的一部分可被指示为不可见部分1575,因为它可能不被送到执行压缩的逻辑。取决于有多少数据已经通过先行缓冲器1574和窗口1573,在窗口1573之后可能有另一部分不可见数据。
图16示出根据本公开的示例实施例的可以用图15所示的方案执行的集成分块和压缩方法的实施例。
图15和/或图16所示的实施例可以用任何大小、配置等的数据元素,诸如字节、字(word)、半字节等来实现。图15和/或图16所示的实施例可以使用当前分块大小(c)、提前终止指示符(例如,提前终止位)(e)和记录分隔符长度(l)。在一些实施例中,图15所示的方案可以执行如图16所示的以下操作。
(1)在第一操作1678-1,该方法可以将编码位置设置为输入数据流的第一数据元素,如图15的顶部所示。在一些实施例中,当前分块大小(c)、提前终止位(e)和/或记录分隔符长度(l)可被初始化为零。在一些实施例中,初始编码位置可以对应于数据分块的开始,如图15的中间和底部所示。
(2)在第二操作1678-2,该方法可以扫描输入数据流,以寻找先行缓冲器1574中的一个或多个数据元素与窗口1573中的一个或多个数据元素之间的长度为L的最长匹配,如图15顶部所示。在扫描输入数据流以寻找最长匹配时,该方法还可以寻找记录的分隔符的匹配。如果找到分隔符的匹配,则该方法可以例如在窗口1573中保持分隔符匹配的第一个实例(例如,记录其位置),并将分隔符长度l设置为找到的分隔符匹配的长度。
(3)在第三操作1678-3,如果在第二操作(2)1678-2没有找到最长匹配,则该方法可以输出空指针(例如,偏移和/或长度L为零的指针)和先行缓冲器1574中的下一个数据元素(文字),以生成压缩输出数据流。该方法可以将编码位置和窗口1573向前移动一个数据元素。该方法还可以将长度L设置为1,这可以指示当前分块大小将增加从先行缓冲器1574输出的一个数据元素。
(4)在第四操作1678-4,如果未设置提前终止位(e),并且当前分块大小(c+L)大于或等于默认分块大小(N),则该方法可以将提前终止位设置为1(e=1)。
(5)在第五操作1678-5,如果设置了提前终止位(e=1)并且找到了分隔符匹配(例如l!=0),该方法可以将L设置为等于l(l大于1)并用第一个匹配的分隔符更新指针P(例如,用指示窗口1573中第一个匹配的分隔符的开始位置的距编码位置的偏移,以及指示匹配的分隔符的长度的长度l)。
(6)在第六操作1678-6,如果找到匹配(例如,最长匹配或分隔符匹配),则该方法可以例如如图15中间所示的基于最长匹配(例如,正常匹配)的位置和长度或者如图15底部所示的基于第二分隔符匹配(例如,提前终止)的位置和长度来输出指针P,以生成压缩输出数据流。
(7)在第七操作1678-7,该方法可以将编码位置和窗口1573向前移动L个数据元素,其中L可以是最长匹配的长度,如图15中间的正常操作所示,或者L可以是分隔符匹配的长度l,如图15底部的提前终止操作所示。在第七操作之后,取决于L和l的长度,数据流可以具有一个或多个不可见部分1575A、1575B和/或1575C。
(8)在第八操作1678-8,如果先行缓冲器1574不为空,则该方法可以返回到第二操作(2)1678-2。否则,块的末尾可以由分隔符的末尾来确定,如图15底部的编码位置所示。
在一些实施例中,类似于图13和图14所示的方法,图15所示的方案和/或图16所示的方法最初可以通过寻找最长匹配来执行压缩操作,直到达到默认的分块大小N。然而,当接近默认分块大小时,图15和/或图16所示的实施例可以逐记录压缩输入数据,直到它超过默认分块大小时为止。例如,在一些实施例中,该方法可以找到大于默认分块大小(并且可以以分隔符终止)的最小分块。在一些实施例中,这可以被称为最小最大分块。当该方法扫描输入数据流时,如图15的中间和底部所示的块的开始可以逐渐远离编码位置。
取决于实现细节,图15和/或图16中所示的内容感知数据分块技术可以改进诸如图11中所示的存储系统的操作,例如,因为更少或没有记录可以在不同存储设备上的分块之间分割,并且因此,更少或没有记录片段可以在存储设备、存储节点、存储服务器等之间传递,以使得组件能够恢复具有完整记录的数据分块和/或对完整记录执行操作。
取决于实现细节,图15和/或图16所示的实施例也可以提高数据分块操作的效率,因为它可以利用为了压缩而已经执行的扫描操作。因此,在一些实施例中,它们可以减少或消除与两个扫描通路相关联的开销。
图17示出根据本公开示例实施例的集成分块和压缩方案的另一实施例。
图18示出根据本公开的示例实施例的可以用图17所示的方案执行的集成分块和压缩方法的实施例。
图17所示的方案可以包括类似于针对图15所示的实施例所描述的组件和/或实现类似于针对图15所示的实施例所描述的操作,其中具有以相同数字结尾的附图标记的元件可以是相似的。然而,在图17所示的实施例中,该方法可以在遇到第一个记录时确定分块大小,而不是逐记录压缩输入数据。例如,在一些实施例中,该方法可以找到小于默认分块大小(并且可以以分隔符终止)的最大分块。在一些实施例中,这可以被称为最大最小分块。
如图17顶部所示,输入数据流可以通过先行缓冲器1774和窗口1773(也可以实现为缓冲器)。先行缓冲器1774之前的输入数据流的一部分可被表示为不可见部分1775,因为它可能不被送到执行压缩的逻辑。取决于有多少数据已经通过先行缓冲器1774和窗口1773,在窗口1773之后可能有另一部分不可见数据。
图17所示的实施例可以执行如图18所示的以下操作中的一个或多个。图17和/或图18所示的实施例可以用任何大小、配置等的数据元素来实现,诸如字节、字、半字节等。图17和/或图18所示的实施例可以使用当前分块大小(c)、提前终止指示符(例如,提前终止位)(e)和记录分隔符长度(l)。
(1)在第一操作1879-1,该方法可以将编码位置设置为输入数据流的第一个数据元素,如图17的顶部所示。在一些实施例中,当前分块大小(c)、提前终止位(e)和/或记录分隔符长度(l)可被初始化为零。
(2)在第二操作1879-2,该方法可以扫描输入数据流,以寻找先行缓冲器1774中的一个或多个数据元素与窗口1773中的一个或多个数据元素之间的长度为L的最长匹配,如图17顶部所示。在扫描输入数据流以寻找最长匹配时,该方法还可以寻找记录的分隔符的匹配。如果找到分隔符的匹配,该方法可以保持分隔符匹配的第一个实例,例如在窗口1773中,并且将分隔符长度l设置为找到的分隔符匹配的长度。
(3)在第三操作1879-3,如果在第二操作(2)1879-2没有找到最长匹配,则该方法可以输出空指针(例如,偏移和/或长度L为零的指针)和先行缓冲器1774中的下一个数据元素(文字),以生成压缩输出数据流。该方法可以将编码位置和窗口1773向前移动一个数据元素。该方法还可以将长度L设置为1,这可以指示当前分块大小将增加从先行缓冲器1774输出的一个数据元素。
(4)在第四操作1879-4,如果当前分块大小(c+L)大于或等于默认分块大小(N),则该方法可以将提前终止位设置为1(e=1)。
(5)在第五操作1879-5,如果设置了提前终止位(e=1)并且找到了分隔符匹配(例如l!=0),则该方法可以将L设置为等于l(l大于1)并用第一个匹配的分隔符更新指针P(例如,用指示窗口1773中第一个匹配的分隔符的开始位置距编码位置的偏移,以及指示匹配的分隔符的长度的长度l)。
(6)在第六操作1879-6,如果找到匹配(例如,最长匹配或分隔符匹配),则该方法可以例如基于如图17中间所示的最长匹配(例如,正常匹配)的位置和长度或者如图17底部所示的分隔符匹配(例如,提前终止)的位置和长度来输出指针P,以生成压缩的输出数据流。
(7)在第七操作1879-7,该方法可以将编码位置和窗口1773向前移动L个数据元素,其中L可以是如图17中间的正常操作所示的最长匹配的长度,或者L可以是如图17底部的提前终止操作所示的分隔符匹配的长度l。在第七操作之后,取决于L和l的长度,数据流可以具有一个或多个不可见部分1775A、1775B和/或1775C。
(8)在第八操作1878-8,如果提前终止位没有被设置(例如e!=1)且先行缓冲器1774不为空,那么所述方法可返回到第二操作(2)1879-2。否则,块的末尾可以由分隔符的末尾来确定,如图17底部的编码位置所示。
在一些实施例中,因为图17所示的方案和/或图18所示的方法可以在遇到第一个记录时确定分块大小(最大最小分块),所以分块大小可以基于第一分隔符匹配,如图17底部的提前终止操作所示。当该方法扫描输入数据流时,如图17的中间和底部所示的块的开始可以逐渐远离编码位置。
取决于实现细节,图17和/或图18所示的实施例可以提高数据分块操作的效率,因为它可以利用为了压缩而已经执行的扫描操作。因此,在一些实施例中,它可以减少或消除与两个扫描通路相关联的开销。
图19示出根据本公开的示例实施例的集成分块和压缩方法的另一实施例。例如,图19所示的实施例可以与图15和/或图17所示的实施例中的一个或两个一起使用。在一些实施例中,图19所示的方法可以实现最小最大分块和/或最大最小分块。例如,根据实现细节,图19所示的实施例可以在最长匹配不包含分隔符时确定最小最大分块,并且在最长匹配包含分隔符时确定最大最小分块。
参考图19,该方法可以开始于操作1979-1。在操作1979-2,其可以是重复序列的开始,该方法可以将分块大小(c)和/或提前终止位(e)初始化为例如零。在操作1979-3,该方法可以初始化指针P和长度L。在操作1979-4,该方法可以在先行缓冲器中寻找最长匹配(c,L)。
在操作1979-5,如果找到最长的匹配,该方法可以沿着图19的左侧采取第一主分支,如下所示。在操作1979-6,该方法可以将指针P设置为最长匹配的开始,并将长度L设置为最长匹配的长度。在操作1979-7,该方法可以确定当前分块大小的长度是否大于或等于默认分块大小N(例如,c+L≥N)。如果当前分块大小不是大于或等于默认分块大小N,则该方法可以进行到如下所述的操作1979-11。然而,如果当前分块大小大于或等于默认分块大小,则该方法可以在操作1979-8初始化记录分隔符长度(l)。在操作1979-9,如果该方法没有在先行缓冲器中找到第一分隔符匹配(c,l),则该方法可以进行到如下所述的操作1979-11。然而,如果在操作1979-9,该方法在先行缓冲器中找到第一分隔符匹配(c,l),则该方法可以进行到操作1979-10,其中该方法可以将提前终止位设置为1(e=1),将指针P设置为滑动窗口中第一分隔符匹配的开始,和/或将长度L设置为第一分隔符匹配的长度。在操作1979-11,该方法可以输出指针P和长度l。该方法可以前进到从操作1979-18开始的图19右侧的公共分支。
在操作1979-5,如果没有找到最长匹配,该方法可以如下沿着图19的中心向下进行第二主分支。在操作1979-12,该方法可以将指针P设置为空指针的值,并将长度L设置为1。在操作1979-13,该方法可以输出空指针P和先行缓冲器的第一字节。在操作1979-14,该方法可以确定当前分块大小的长度是否大于或等于默认分块大小N(例如,c+L≥N)。如果当前分块大小不是大于或等于默认分块大小N,则该方法可以前进到从操作1979-18开始的图19右侧的公共分支。然而,如果在操作1979-14,当前分块大小大于或等于默认分块大小,则该方法可以在操作1979-15初始化记录分隔符长度(l)。在操作1979-16,如果该方法没有在先行缓冲器中找到第一分隔符匹配(c,l),则该方法可以前进到从操作1979-18开始的图19右侧的公共分支。然而,如果在操作1979-16,该方法在先行缓冲器中找到第一分隔符匹配(c,l),则该方法可以前进到操作1979-17,其中该方法可以将提前终止位设置为1(e=1)。该方法可以前进到从操作1979-18开始的图19右侧的公共分支。
图19右侧的公共分支可以如下进行。在操作1979-18,可以通过加上长度L来更新分块大小c(例如,c=c+L),其中L可以是例如最长匹配的长度、第一分隔符匹配的长度、或1。在操作1979-19,编码位置和窗口可以移动距离L(例如,L个字节)。在操作1979-20,如果未设置提前终止位(e=0),则该方法可以返回到操作1979-3,以开始重复序列的另一次迭代。然而,如果确定设置了提前终止位(e=1),则在操作1979-21,该方法可以指示已经找到当前分块的末尾。在操作1979-22,该方法可以确定先行缓冲器是否为空。如果先行缓冲器不为空,则该方法可以进行到操作1979-23,其中提前终止位e可以被重置为零,并且该方法可以返回到操作1979-3以开始重复序列的另一次迭代。然而,如果在操作1979-22处先行缓冲器为空,则该方法可以在操作1979-24处终止。
尽管图13、图14、图15、图16、图17、图18和/或图19所示的实施例可以在输入数据流和/或基于流的压缩算法的上下文中描述,但是这些原理也可以应用于任何其他类型的输入和/或压缩算法,诸如基于批(batch)(例如,基于文件)的输入数据和/或基于块、文件等的压缩算法。
表2示出根据本公开的示例实施例的集成分块和压缩方法的伪代码的示例实施例。例如,表2所示的实施例可以与图15和/或图17所示的实施例中的一个或两个一起使用。在一些实施例中,表2所示的方法可以实现最小最大分块和/或最大最小分块。例如,取决于实现细节,表2所示的实施例可以在最长匹配不包含分隔符时确定最小最大分块,并且在最长匹配包含分隔符时确定最大最小分块。
表2
图20示出根据本公开的示例实施例的具有集成分块和压缩的系统的实施例。例如,图20所示的系统可以用于实现参考图13、图14、图15、图16、图17、图18和/或图19描述的技术中的任何技术。
参考图20,该系统可以包括可以通过连接2022进行通信的主机2024和计算存储设备2008。主机2024可以包括内容感知数据分块和压缩逻辑2090(其可以被称为分块和压缩逻辑、集成分块和压缩逻辑或集成逻辑)。分块和压缩逻辑可被配置为向存储设备2008提供一个或多个数据分块。例如,数据分块和压缩逻辑2090可以在压缩之前将对象或其他原始数据划分成一个或多个数据分块,因此存储设备2008可以解压缩数据分块并对解压缩的数据分块执行操作。
因为分块和压缩逻辑2090可以感知内容,所以在一些实施例中,它可以基于记录之间的边界将数据划分成分块。例如,分块和压缩逻辑2090可以在数据中寻找记录分隔符,以将数据划分成可变大小的分块,使得分块可以以记录分隔符结束,因此以完整的记录结束。
在一些实施例中,分块和压缩逻辑2090可以包括一个或多个先行缓冲器、窗口缓冲器等,并且可以实现关于图13、图14、图15、图16、图17、图18和/或图19描述的技术中的任何技术
计算存储设备2008可以包括解压缩逻辑2028、一个或多个处理元件2029和存储介质2030。解压缩逻辑2028可被配置为将压缩数据分块解压缩成一个或多个处理元件2029可对其执行操作的形式。一个或多个处理元件2029可被配置为执行任何类型的操作,诸如数据选择(例如,扫描、过滤等)、计算加速、图表处理、图形处理、机器学习等。存储介质2030可用于存储任何数据,包括由主机2024发送的一个或多个修改的数据分块。
在一些实施例中,解压缩逻辑2028和/或一个或多个处理元件2029可被配置为响应于在存储设备2008处接收的可包括查询(例如,表达式)的请求,从存储介质2030读取并解压缩一个或多个数据分块,并返回指定的数据子集,或者对恢复的数据分块执行任何其他操作。
在一些实施例中,计算存储设备2008还可以包括指示逻辑,该指示逻辑可以被配置为向内容感知数据分块和压缩逻辑2090提供一个或多个指示。一个或多个指示可包括可用于确定如何将原始数据划分成分块的信息,如以上参考图5所示的实施例所述。
主机2024可以用如上关于图4所示实施例所述的任何组件或组件的组合来实现。存储设备2008可以以任何形状因子、使用任何连接器配置和任何存储介质来实现,如以上参考图4所示的实施例所述。主机2024和存储设备2008可以使用任何类型的存储接口和/或协议进行通信,并且可以完全或部分地与服务器机箱、服务器机架、数据室、数据中心、边缘数据中心、移动边缘数据中心和/或它们的任何组合一起实现,和/或结合它们一起使用,如上面参考图4所示的实施例所述。通信连接2022可以用任何互连和/或网络接口和/或协议来实现,如上面参考图4所示的实施例所描述的。功能中的任何功能,包括任何逻辑,诸如内容感知数据分块和压缩逻辑2090、解压缩逻辑2028、一个或多个处理元件2029等,可以用硬件、软件或其组合来实现,如以上参考图4所示的实施例所述。在一些实施例中,解压缩逻辑2028、处理元件2029等中的一个或多个可以与存储设备的一个或多个其他组件集成,例如存储设备控制器、闪存转换层(FTL)等。内容感知数据分块和压缩逻辑2090和解压缩逻辑2028可以实现任何压缩和/或解压缩技术,诸如LZ77、gzip、Snappy等。
图21示出根据本公开的示例实施例的用于将数据划分成分块并加密数据的内容感知方案的实施例。在图21所示的实施例中,图21顶部所示的未加密输入数据2168(可以存储在缓冲器中)可以包括一个或多个记录,每个记录可以以分隔符结束,在该示例中,分隔符可以是分号。然而,在其他实施例中,可以使用诸如括号、回车换行(CR-LF)序列等其他分隔符。在一些实施例中,一个或多个记录可以被包括在输入数据2168内的数组(例如,JSON数组)、文档(例如,JSON文档)等中。如果记录在数组、文档等的末尾结束,可以使用不同的分隔符来指示数组、文档等的末尾,但是图21所示的实施例也可以将该不同的分隔符解释为记录的末尾。
在第一通路(操作1)期间,该方法可以扫描输入数据2168并使用它来生成数据分块,直到它达到默认的分块大小N。如果分块2169中的最后一个数据元素是分隔符,则该方法可以前进到第二通路(操作2)。如果分块中的最后一个数据元素不是分隔符,则该方法可以修改分块的大小,使得分块的末尾与分隔符的末尾对齐。例如,该方法可以在保存数据2168的缓冲器中的位置N+1处开始,并向后扫描,直到找到分隔符2170。该方法可以减小分块的大小(例如,收缩分块),直到分隔符2170是分块中的最后一个数据元素。因此,分块可以被减少等于收缩空间S的大小,因此分块可以仅包括一个或多个完整的记录。
可替换地,该方法可以从保存数据2168的缓冲器中的位置N+1开始,并向前扫描,直到找到分隔符2171。该方法可以扩展分块的大小,直到分隔符2171是块2169中的最后一个数据元素,如图21的中间所示。因此,分块可以被扩展等于扩展空间E的大小,因此分块可以仅包括一个或多个完整的记录。
在一些实施例中,一旦确定了分块大小,该方法可以进行到第二通路(操作2),其中可以以分隔符结束并且仅包括完整记录的自含式分块(例如,分块2169)可以使用一个或多个加密算法来加密,以生成加密数据2172。
在一些实施例中,因为未加密数据分块的大小可以被减小或扩展,所以未加密数据分块2169的大小可以是可变的,因此,加密数据分块2172的大小可以是可变的。
该方法是减少还是扩展分块的长度可取决于各种因素,例如分块可被发送到的对象或键值存储设备的最大和/或最佳数据大小,或者分块可被发送到的基于块的存储设备的块大小。在对象或键值存储设备的情况下,得到的加密的自含式数据分块2172可以被存储,而无需进一步的修改和/或处理。
取决于实现细节,图21所示的内容感知数据分块实施例可以改进诸如图11所示的存储系统的操作,例如,因为更少或没有记录可以在不同存储设备上的分块之间被分割,因此,更少或没有记录片段可以在存储设备、存储节点、存储服务器等之间被传递,以使得组件能够恢复具有完整记录的数据分块和/或对完整记录执行操作。
例如,可以使用图4、图5和/或图9所示的任何系统来实现图21所示的加密方案,其中分块逻辑426、526和/或826可以包括内容感知逻辑,该内容感知逻辑被配置为基于在未加密的输入数据2168中找到记录或其他数据单元的边界(例如,分隔符)来确定分块大小。
尽管图21所示的实施例可以改进存储系统的操作,但是在一些实施例中,根据实施细节,与使用两个通路相关联的开销可能增加处理负担,尤其是在扫描相对大的对象时。
根据本公开的示例实施例的一些附加的内容感知数据分块技术可以将分块操作与可以扫描要分块的数据的加密操作集成。取决于实现细节,这可以提高分块操作的效率,因为它可以利用为了加密而已经执行的扫描操作。因此,在一些实施例中,它可以减少或消除与两个扫描通路相关联的开销。
图22示出根据本公开的示例实施例的可用于加密数据技术的块密码(blockcipher)方案的示例实施例。例如,图22所示的实施例可以基于AES算法。要加密的数据可以作为明文输入数据2291的块(例如,128位块)被接收,在一系列链接的操作中被处理,包括预轮(pre-round)变换2292、使用由密钥扩展逻辑2296生成的轮密钥K0,K1,…,KR的一个或多个AES加密轮2293-1,…,2293-Nr,以及作为密文输出数据2294的对应块(例如,128位块)的输出。例如,可以通过用于加密轮的密码密钥(cipher key)2295的长度(例如,128、192或256位)来确定轮数R。在一些实施例中,密文输出数据块2294的大小可以与明文输入数据块2291的大小相同。
在一些实施例中,术语明文和/或密文不仅指实际文本,还指任何形式的任何数据,诸如图像、音频、视频等。
因为可以利用诸如图22所示的块密码方案来扫描输入数据以进行加密,所以根据本公开的示例实施例,图22所示的实施例可以与内容感知数据分块技术相集成。取决于实现细节,这可以提高分块操作的效率,因为它可以利用为了加密而可以已经执行的扫描操作。因此,在一些实施例中,可以减少或消除与两个扫描通路相关联的开销,因为加密扫描和分隔符扫描可以同时执行。
图23示出根据本公开的示例实施例的集成数据分块和加密方案的实施例。图24示出根据本公开的示例实施例的集成数据分块和加密方法的实施例。例如,图24所示的实施例可以与图23所示的方案一起使用。
在图23所示的方案中,图23顶部所示的未加密输入数据流2368可以包括一个或多个记录,每个记录可以以分隔符结束,在本例中,分隔符可以是分号。然而,在其他实施例中,可以使用诸如括号、回车换行(CR-LF)序列等其他分隔符。在一些实施例中,一个或多个记录可以被包括在输入数据2368内的数组(例如,JSON数组)、文档(例如,JSON文档)等中。如果记录在数组、文档等的末尾结束,可以使用不同的分隔符来指示数组、文档等的末尾,但是图23所示的方法也可以将该不同的分隔符解释为记录的末尾。
图23所示的方案可以用图24所示的以下操作中的一个或多个来实现。
(1)在第一操作2497-1,该方法可以扫描输入数据流2368,并将诸如图22所示的块密码应用于输入数据流2368的一个或多个份额(也可以称为部分)2398,如图23所示。块密码可以在逐块的基础上应用于输入数据流2368,其中一个或多个部分2398的大小可以对应于块密码所使用的块大小,而块大小又可以对应于块密码所使用的密钥长度。输入数据流2368可以使用例如块密码来加密,直到达到默认的分块大小N。在一些实施例中,默认分块大小N可以被设置为块密码所使用的块大小(例如,密钥长度)的偶数倍。
(2)在第二操作2497-2,如果当前数据分块的最后一个数据元素不是分隔符,则该方法可以继续扫描输入数据流2368以找到分隔符2399,并将数据分块扩展量E,直到分隔符2399是分块的最后一个数据元素,如图23的顶部所示。
(3)在第三操作2497-3,如果数据分块的末尾没有与块密码所使用的块的末尾对齐,则该方法可以用填充元素“p”填充数据分块,以将分块23100进一步扩展量p,使得分块的末尾与块的末尾对齐,如图23的底部所示。
(4)在第四操作2497-4,如果分块已经被扩展,则块密码可以被应用于包括部分E和p(如果有的话)的块。
(5)在第五操作2497-5,可以将所得到的加密数据分块23101存储在例如KV驱动器中,该加密数据分块23101可以具有基于输入数据流中分隔符2399的位置的可变长度。
在一些实施例中,图23和/或图24所示的实施例可以继续,例如,直到到达输入数据流中的用户对象的末尾。对象可以被划分和加密成一个或多个加密数据分块。因为(a)明文输入数据的大小可以是可变的,(b)可以使用不同的默认分块大小N,和/或(c)分块可以被扩展以包括分隔符和/或一个或多个填充元素,所以加密数据分块的大小可以是可变的。在对象或键值存储设备的情况下,得到的加密的自包含数据的分块可以被存储,而无需进一步的修改和/或处理。
取决于实现细节,图23和/或图24中所示的内容感知数据分块实施例可以改进诸如图11中所示的存储系统的操作,例如,因为更少或没有记录可以在不同存储设备上的块之间被分割,并且因此,更少或没有记录片段可以在存储设备、存储节点、存储服务器等之间被传递,以使得组件能够恢复具有完整记录的数据分块和/或对完整记录执行操作。此外,因为图23和/或图24中所示的实施例可以利用为了加密而已经执行的扫描操作来执行数据分块,所以可以减少或消除与两个扫描通路相关联的开销。
为了说明的目的,图22、图23和/或图24所示的实施例可以在诸如AES的块密码的上下文中描述。然而,这些原理也可以应用于使用诸如RC4的流密码(stream cipher)的方案。
图25示出根据本公开的示例实施例的具有集成分块和加密的系统的实施例。例如,图25所示的系统可以用于实现参考图22、图23和/或图24描述的任何技术。
参考图25,该系统可以包括可以通过连接2522进行通信的主机2524和计算存储设备2508。主机2524可以包括内容感知数据分块和加密逻辑25101(其可以被称为分块和加密逻辑、集成分块和加密逻辑、或集成逻辑)。分块和加密逻辑可被配置为向存储设备2508提供一个或多个数据分块。例如,数据分块和加密逻辑25101可以在加密之前将对象或其他原始数据划分成一个或多个数据分块,因此存储设备2508可以解密数据分块并对解密的数据分块执行操作。
因为分块和加密逻辑25101可以感知内容,所以在一些实施例中,它可以基于记录之间的边界将数据划分成分块。例如,分块和加密逻辑25101可以在数据中寻找记录分隔符,以将数据分成可变大小的分块,使得分块可以以记录分隔符结束,因此以完整的记录结束。
计算存储设备2508可以包括解密逻辑2528、一个或多个处理元件2529和存储介质2530。解密逻辑2528可被配置为将加密数据分块解密成一个或多个处理元件2529可对其执行操作的形式。一个或多个处理元件2529可被配置为执行任何类型的操作,诸如数据选择(例如,扫描、过滤等)、计算加速、图表处理、图形处理、机器学习等。存储介质2530可用于存储任何数据,包括由主机2524发送的一个或多个修改的数据分块。
在一些实施例中,解密逻辑2528和/或一个或多个处理元件2529可以被配置为响应于在存储设备2508处接收的可以包括查询(例如,表达式)的请求,从存储介质2530读取和解密一个或多个数据分块,并返回指定的数据子集,或者对恢复的数据分块执行任何其他操作。
在一些实施例中,计算存储设备2508还可以包括指示逻辑,该指示逻辑可以被配置为向内容感知数据分块和解密逻辑25101提供一个或多个指示。一个或多个指示可包括可用于确定如何将原始数据划分成分块的信息,如以上参考图5所示的实施例所述。
主机2524可以用如上关于图4所示实施例所述的任何组件或组件的组合来实现。存储设备2508可以以任何形状因子、使用任何连接器配置和任何存储介质来实现,如以上参考图4所示的实施例所述。主机2524和存储设备2508可以使用任何类型的存储接口和/或协议进行通信,并且可以完全或部分地与服务器机箱、服务器机架、数据室、数据中心、边缘数据中心、移动边缘数据中心和/或它们的任何组合一起实现,和/或结合它们使用,如上面参考图4所示的实施例所述。通信连接2522可以用任何互连和/或网络接口和/或协议来实现,如上面参考图4所示的实施例所描述的。功能中的任何功能,包括任何逻辑,诸如内容感知数据分块和加密逻辑25101、解密逻辑2528、一个或多个处理元件2529等,可以用硬件、软件或其组合来实现,如以上关于图4所示的实施例所述。在一些实施例中,解密逻辑2528、处理元件2529等中的一个或多个可以与存储设备的一个或多个其他组件集成,例如存储设备控制器、闪存转换层(FTL)等。内容感知数据分块和加密逻辑25101和解密逻辑2528可以实现任何加密和/或解密技术,诸如数据加密标准(DES)、AES等。
尽管可以在供计算存储设备使用的集成数据分块和压缩、加密等的上下文中描述一些实施例,但是这些原理不限于任何特定的应用,并且可以应用于任何数据分块应用,以及用于包括加速器、网络接口卡(NIC)等的任何类型的设备。
出于说明的目的,可以实现集成分块和压缩以及集成分块和加密的实施例可以分开地示出,但是这些原理可以根据本公开的示例实施例来组合,以实现可以实现集成的数据分块、压缩和加密的方案。
本文公开的原理不仅可以应用于将数据分块集成到数据压缩和/或数据加密操作中,还可以应用于可以扫描数据的任何类型的操作中,包括例如过滤、擦除编码、搜索、机器学习、图表处理等。例如,在图20和图25所示的实施例中,数据分块和压缩逻辑2090和/或数据分块和加密逻辑25101可以适于将用于分块的扫描与用于任何其他操作的扫描集成。因此,在一些实施例中,一种方法可以包括扫描输入数据,基于扫描使用输入数据执行操作以生成经处理的数据,基于扫描找到输入数据中的分隔符,以及基于分隔符在输入数据中的位置使用经处理的数据生成数据分块。在一些实施例中,数据可以包括输入数据流,并且操作可以是基于流的操作。在一些实施例中,操作可以是基于块的操作。在一些实施例中,系统可以包括主机,该主机包括被配置为对输入数据执行扫描操作、基于扫描操作执行处理操作以使用输入数据生成经处理的数据、基于扫描操作找到输入数据中的分隔符、以及基于分隔符使用经处理的数据生成数据分块的主机逻辑。在一些实施例中,该系统还可以包括被配置为从主机接收数据分块的设备,该设备包括被配置为恢复数据分块以生成恢复的数据分块并对恢复的数据分块执行操作的设备逻辑。
图26示出根据本公开的示例实施例的用于具有数据分块修改的存储方案的主机装置的示例实施例。图26所示的主机2600可用于实现本文公开的任何主机功能。主机2600可以用任何组件或组件的组合来实现,诸如一个或多个客户端、一个或多个对象存储服务器、一个或多个存储节点等或其组合。
图26所示的主机装置2600可以包括处理器2602,处理器2602可以包括存储器控制器2604、系统存储器2606、主机控制逻辑2608和/或通信接口2610。图26所示的任何或所有组件可以通过一个或多个系统总线2612进行通信。在一些实施例中,图26所示的组件中的一个或多个可以使用其他组件来实现。例如,在一些实施例中,主机控制逻辑2608可以由执行存储在系统存储器2606或其他存储器中的指令的处理器2602来实现。
主机控制逻辑2608可以包括和/或实现本文公开的任何主机功能,包括数据分块逻辑426、526和/或826、数据修改逻辑427和/或527、压缩逻辑846、加密逻辑847、擦除编码逻辑848、数据选择逻辑849、集群管理逻辑850、节点和存储设备管理逻辑851、处理单元852、内容感知数据分块和压缩逻辑2090、内容感知数据分块和解密逻辑25101等。
图27示出根据本公开的示例实施例的具有数据分块修改的存储设备的示例实施例。图27所示的存储设备2700可以用于实现本文公开的任何存储设备功能。存储设备2700可以包括设备控制器2702、介质转换层2704、存储介质2706、计算资源2708、处理控制逻辑2716和通信接口2710。图27所示的组件可以通过一个或多个设备总线2712进行通信。在可以将闪存用于一些或所有存储介质2706的一些实施例中,介质转换层2704可以部分或全部实现为闪存转换层(FTL)。
在一些实施例中,处理控制逻辑2716可用于实现本文公开的任何存储设备功能,包括数据恢复逻辑428和/或528、处理元件429、529和/或1429、指示逻辑531、数据选择引擎853、解密逻辑854、解压缩逻辑855、数据选择逻辑856、键值逻辑857、解压缩逻辑2028、一个或多个处理元件2029、解密逻辑2528、一个或多个处理元件2529等。
如上所述,本文描述的任何功能,包括本文描述的任何主机(例如,客户端、存储服务器、存储节点等)功能、存储设备功能等,可以用硬件、软件或其任何组合来实现,包括组合逻辑、时序逻辑、一个或多个定时器、计数器、寄存器、状态机、诸如DRAM和/或SRAM的易失性存储器、非易失性存储器和/或其任何组合、执行任何类型的存储器中存储的指令的CPLD、FPGA、ASIC、包括诸如x86处理器的CISC处理器和/或诸如ARM处理器的RISC处理器的CPU、GPU、NPU等。在一些实施例中,一个或多个组件可以被实现为片上系统(SOC)。
图28示出根据本公开示例实施例的数据压缩方法的实施例。该方法可以开始于操作2802。在操作2804,该方法可以扫描输入数据。在一些实施例中,输入数据可以作为输入数据流被接收。在操作2806,该方法可以基于扫描执行压缩操作,以使用输入数据生成压缩数据。在操作2808,该方法可以基于扫描在输入数据中找到分隔符。例如,输入数据可以包括一个或多个记录,并且分隔符可以指示记录的边界。在操作2810,该方法可以基于输入数据中分隔符的位置,使用压缩数据来生成数据份额。该方法可以在操作2812结束。
图29示出根据本公开的示例实施例的数据加密方法的实施例。该方法可以开始于操作2902。在操作2904,该方法可以扫描输入数据。在一些实施例中,输入数据可以作为输入数据流被接收。在操作2906,该方法可以基于扫描执行加密操作,以使用输入数据生成加密数据。在操作2908,该方法可以基于扫描在输入数据中找到分隔符。例如,输入数据可以包括一个或多个记录,并且分隔符可以指示记录的边界。在操作2910,该方法可以基于分隔符在输入数据中的位置,使用加密数据来生成数据份额。该方法可以在操作2912结束。
图30示出根据本公开的示例实施例的用于将数据划分成一个或多个数据部分的方法的实施例。该方法可以开始于操作3002。在操作3004,该方法可以扫描输入数据。在一些实施例中,输入数据可以作为输入数据流被接收。在操作3006,该方法可以基于扫描对输入数据执行操作以生成经处理的数据。在一些实施例中,该操作可以是可以扫描数据的任何操作,诸如压缩、加密、过滤、擦除编码、搜索、机器学习、图表处理等。在操作3008,该方法可以基于扫描在输入数据中寻找分隔符。例如,输入数据可以包括一个或多个记录,并且分隔符可以指示记录的边界。在操作3010,该方法可以基于分隔符在输入数据中的位置,使用经处理的数据来生成数据份额。该方法可以在操作3012结束。
图28、图29和图30中示出的实施例以及本文描述的所有其他实施例是示例操作和/或组件。在一些实施例中,可以省略一些操作和/或组件,和/或可以包括其他操作和/或组件。此外,在一些实施例中,操作和/或组件的时间和/或空间顺序可以变化。尽管一些组件和/或操作可以被示为单独的组件,但是在一些实施例中,单独示出的一些组件和/或操作可以被集成到单个组件和/或操作中,和/或被示为单个组件和/或操作的一些组件和/或操作可以用多个组件和/或操作来实现。
已经在各种实施细节的上下文下描述了上面公开的一些实施例,但是本公开的原理不限于这些或任何其他具体细节。例如,一些功能已经被描述为由某些组件实现,但是在其他实施例中,该功能可以分布在不同位置并具有各种用户界面的不同系统和组件之间。某些实施例被描述为具有特定的过程、操作等,但是这些术语也包含其中特定过程、操作等可以用多个过程、操作等来实现的实施例,或者其中多个过程、操作等可以集成到单个过程、步骤等中的的实施例。对组件或元件的引用可以仅指该组件或元件的一部分。例如,对块的引用可以指整个块或一个或多个子块。在本公开和权利要求中使用诸如“第一”和“第二”的术语可以仅仅是为了区分它们所修饰的事物,并且可以不指示任何空间或时间顺序,除非从上下文中明显看出其他情况。在一些实施例中,对事物的引用可以指该事物的至少一部分,例如,“基于”可以指“至少部分基于”等。对第一元件的引用并不意味着第二元件的存在。本文公开的原理具有独立的效用,并且可以单独实施,并且不是每个实施例可以利用每个原理。然而,这些原理也可以以各种组合来体现,其中一些可以以协同的方式放大单个原理的益处。
根据本专利公开的发明原理,上述各种细节和实施例可以被组合以产生另外的实施例。由于本专利公开的发明原理可以在布置和细节上进行修改,而不背离发明概念,因此这种改变和修改被认为落入所附权利要求的范围内。
Claims (20)
1.一种用于数据加密的方法,所述方法包括:
接收输入数据;
在输入数据中查找分隔符;
基于分隔符在输入数据中的位置,使用输入数据的部分来生成数据份额;和
加密所述数据份额。
2.根据权利要求1所述的方法,其中:
输入数据包括记录;
分隔符指示记录的边界;和
所述数据份额包括所述记录。
3.根据权利要求1所述的方法,其中所述分隔符的位置在所述输入数据的部分中。
4.根据权利要求3所述的方法,其中,生成所述数据份额包括基于所述输入数据的部分的子集生成所述数据份额。
5.根据权利要求1所述的方法,其中:
所述输入数据的部分是所述输入数据的第一部分;和
所述分隔符的位置在所述输入数据的第二部分中。
6.根据权利要求5所述的方法,其中,生成所述数据份额包括基于所述输入数据的第一部分和所述输入数据的第二部分生成所述数据份额。
7.根据权利要求1所述的方法,还包括基于所述分隔符的位置修改所述数据份额的大小。
8.根据权利要求7所述的方法,其中修改所述数据份额的大小包括扩展所述数据份额的大小。
9.一种用于数据加密的方法,所述方法包括:
扫描输入数据;
基于扫描,执行加密操作以使用输入数据生成加密数据;
基于扫描,在输入数据中查找分隔符;和
基于分隔符在输入数据中的位置,使用加密数据生成数据份额。
10.根据权利要求9所述的方法,其中
输入数据包括记录;
分隔符指示记录的边界;和
所述数据份额包括所述记录。
11.根据权利要求9所述的方法,其中所述生成包括基于默认份额大小生成所述数据份额。
12.根据权利要求9所述的方法,其中所述生成包括基于分隔符在输入数据中的位置修改所述数据份额的大小。
13.根据权利要求9所述的方法,其中:
加密操作包括基于块的加密操作;和
所述执行包括对所述输入数据的第一块执行加密操作,以生成加密数据的第一块。
14.根据权利要求13所述的方法,其中所述分隔符位于输入数据的第二块中,所述方法还包括基于分隔符的位置修改所述数据份额的大小。
15.根据权利要求14所述的方法,还包括基于输入数据的第二块的大小修改所述数据份额的大小。
16.根据权利要求15所述的方法,其中所述修改包括基于所述输入数据的第二块的大小填充所述数据份额。
17.根据权利要求16所述的方法,其中所述输入数据的第二块的大小基于加密操作的密钥长度。
18.一种用于划分数据的方法,所述方法包括:
扫描输入数据;
基于扫描,使用所述输入数据来执行操作,以生成经处理的数据;
基于扫描,在输入数据中查找分隔符;和
基于分隔符在输入数据中的位置,使用经处理的数据生成数据份额。
19.根据权利要求18所述的方法,其中所述操作包括数据压缩操作。
20.根据权利要求18所述的方法,其中:
输入数据包括输入数据流;和
所述操作包括基于流的操作。
Applications Claiming Priority (10)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163231709P | 2021-08-10 | 2021-08-10 | |
US202163231710P | 2021-08-10 | 2021-08-10 | |
US202163231711P | 2021-08-10 | 2021-08-10 | |
US202163231715P | 2021-08-10 | 2021-08-10 | |
US63/231,709 | 2021-08-10 | ||
US63/231,711 | 2021-08-10 | ||
US63/231,710 | 2021-08-10 | ||
US63/231,715 | 2021-08-10 | ||
US17/677,991 | 2022-02-22 | ||
US17/677,991 US12074962B2 (en) | 2021-08-10 | 2022-02-22 | Systems, methods, and apparatus for dividing and encrypting data |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115705161A true CN115705161A (zh) | 2023-02-17 |
Family
ID=82742764
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210954950.2A Pending CN115705161A (zh) | 2021-08-10 | 2022-08-10 | 用于划分和加密数据的系统、方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US12074962B2 (zh) |
EP (1) | EP4134818A1 (zh) |
KR (1) | KR20230023586A (zh) |
CN (1) | CN115705161A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118075037B (zh) * | 2024-04-25 | 2024-07-12 | 安徽华云安科技有限公司 | 数据加密方法、装置、设备以及存储介质 |
Family Cites Families (109)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5396595A (en) | 1992-04-24 | 1995-03-07 | Spacelabs Medical, Inc. | Method and system for compression and decompression of data |
US7152165B1 (en) | 1999-07-16 | 2006-12-19 | Intertrust Technologies Corp. | Trusted storage systems and methods |
US6351776B1 (en) | 1999-11-04 | 2002-02-26 | Xdrive, Inc. | Shared internet storage resource, user interface system, and method |
US6938204B1 (en) | 2000-08-31 | 2005-08-30 | International Business Machines Corporation | Array-based extensible document storage format |
US20030088783A1 (en) | 2001-11-06 | 2003-05-08 | Dipierro Massimo | Systems, methods and devices for secure computing |
JP4254178B2 (ja) | 2002-09-11 | 2009-04-15 | 富士ゼロックス株式会社 | 分散格納制御装置及び方法 |
US7065618B1 (en) | 2003-02-14 | 2006-06-20 | Google Inc. | Leasing scheme for data-modifying operations |
FR2857811A1 (fr) * | 2003-07-16 | 2005-01-21 | St Microelectronics Sa | Methode de chiffrage d'un flux audio ou video compresse a tolerance d'erreurs |
WO2005065084A2 (en) | 2003-11-13 | 2005-07-21 | Commvault Systems, Inc. | System and method for providing encryption in pipelined storage operations in a storage network |
CN101031882B (zh) | 2004-06-08 | 2010-09-08 | 达尔特设备互操作有限公司 | 用于通用设备互操作性平台的设备组招募和内容再现的体系结构、装置和方法 |
US7302441B2 (en) * | 2004-07-20 | 2007-11-27 | International Business Machines Corporation | System and method for gradually bringing rolled in data online with incremental deferred integrity processing |
US7640363B2 (en) | 2005-02-16 | 2009-12-29 | Microsoft Corporation | Applications for remote differential compression |
US7447865B2 (en) | 2005-09-13 | 2008-11-04 | Yahoo ! Inc. | System and method for compression in a distributed column chunk data store |
US7587569B2 (en) | 2005-12-19 | 2009-09-08 | Yahoo! Inc. | System and method for removing a storage server in a distributed column chunk data store |
US7464247B2 (en) | 2005-12-19 | 2008-12-09 | Yahoo! Inc. | System and method for updating data in a distributed column chunk data store |
US7921087B2 (en) | 2005-12-19 | 2011-04-05 | Yahoo! Inc. | Method for query processing of column chunks in a distributed column chunk data store |
US7716180B2 (en) | 2005-12-29 | 2010-05-11 | Amazon Technologies, Inc. | Distributed storage system with web services client interface |
EP2030115A4 (en) | 2006-05-31 | 2012-08-22 | Ibm | METHOD AND SYSTEM FOR TRANSFORMING LOGICAL DATA OBJECTS FOR STORAGE |
US8214517B2 (en) | 2006-12-01 | 2012-07-03 | Nec Laboratories America, Inc. | Methods and systems for quick and efficient data management and/or processing |
US8296337B2 (en) | 2006-12-06 | 2012-10-23 | Fusion-Io, Inc. | Apparatus, system, and method for managing data from a requesting device with an empty data token directive |
US8046509B2 (en) | 2007-07-06 | 2011-10-25 | Prostor Systems, Inc. | Commonality factoring for removable media |
US8838541B2 (en) | 2007-10-25 | 2014-09-16 | Hewlett-Packard Development Company, L.P. | Data processing apparatus and method of processing data |
KR20110050404A (ko) | 2008-05-16 | 2011-05-13 | 퓨전-아이오, 인크. | 결함 있는 데이터 저장소를 검출하고 교체하는 장치, 시스템 및 프로그램 제품 |
US8954654B2 (en) | 2008-06-18 | 2015-02-10 | Super Talent Technology, Corp. | Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance |
US8509315B1 (en) * | 2008-09-23 | 2013-08-13 | Viasat, Inc. | Maintaining synchronization of compressed data and associated metadata |
US9165154B2 (en) | 2009-02-16 | 2015-10-20 | Microsoft Technology Licensing, Llc | Trusted cloud computing and services framework |
US8468345B2 (en) | 2009-11-16 | 2013-06-18 | Microsoft Corporation | Containerless data for trustworthy computing and data services |
US10348693B2 (en) | 2009-12-15 | 2019-07-09 | Microsoft Technology Licensing, Llc | Trustworthy extensible markup language for trustworthy computing and data services |
US9537650B2 (en) | 2009-12-15 | 2017-01-03 | Microsoft Technology Licensing, Llc | Verifiable trust for data through wrapper composition |
CN102934097B (zh) | 2010-06-18 | 2016-04-20 | 惠普发展公司,有限责任合伙企业 | 数据去重 |
US9002907B2 (en) | 2010-08-30 | 2015-04-07 | Unwired Planet, Llc | Method and system for storing binary large objects (BLObs) in a distributed key-value storage system |
US20120089775A1 (en) | 2010-10-08 | 2012-04-12 | Sandeep Ranade | Method and apparatus for selecting references to use in data compression |
US10394757B2 (en) | 2010-11-18 | 2019-08-27 | Microsoft Technology Licensing, Llc | Scalable chunk store for data deduplication |
US8380681B2 (en) | 2010-12-16 | 2013-02-19 | Microsoft Corporation | Extensible pipeline for data deduplication |
US8645335B2 (en) | 2010-12-16 | 2014-02-04 | Microsoft Corporation | Partial recall of deduplicated files |
US20120159098A1 (en) | 2010-12-17 | 2012-06-21 | Microsoft Corporation | Garbage collection and hotspots relief for a data deduplication chunk store |
US9110936B2 (en) | 2010-12-28 | 2015-08-18 | Microsoft Technology Licensing, Llc | Using index partitioning and reconciliation for data deduplication |
US8909657B2 (en) | 2011-01-14 | 2014-12-09 | Apple Inc. | Content based file chunking |
US8886914B2 (en) | 2011-02-24 | 2014-11-11 | Ca, Inc. | Multiplex restore using next relative addressing |
US9823981B2 (en) | 2011-03-11 | 2017-11-21 | Microsoft Technology Licensing, Llc | Backup and restore strategies for data deduplication |
US8874990B2 (en) | 2011-04-01 | 2014-10-28 | Cleversafe, Inc. | Pre-fetching data segments stored in a dispersed storage network |
JP6082387B2 (ja) | 2011-05-14 | 2017-02-15 | ビットカーサ インコーポレイテッド | ユーザ不可知暗号化ファイルのサーバ側非複製化を有するクラウドファイルシステム |
US8533231B2 (en) | 2011-08-12 | 2013-09-10 | Nexenta Systems, Inc. | Cloud storage system with distributed metadata |
US8689279B2 (en) | 2011-08-30 | 2014-04-01 | Microsoft Corporation | Encrypted chunk-based rapid data encryption policy compliance |
US8769310B2 (en) | 2011-10-21 | 2014-07-01 | International Business Machines Corporation | Encrypting data objects to back-up |
US9805054B2 (en) | 2011-11-14 | 2017-10-31 | Panzura, Inc. | Managing a global namespace for a distributed filesystem |
JP2013190891A (ja) | 2012-03-13 | 2013-09-26 | Hitachi Ltd | データ転送システム |
US8972672B1 (en) | 2012-06-13 | 2015-03-03 | Emc Corporation | Method for cleaning a delta storage system |
US9400610B1 (en) | 2012-06-13 | 2016-07-26 | Emc Corporation | Method for cleaning a delta storage system |
US8712978B1 (en) | 2012-06-13 | 2014-04-29 | Emc Corporation | Preferential selection of candidates for delta compression |
US8799746B2 (en) | 2012-06-13 | 2014-08-05 | Caringo, Inc. | Erasure coding and replication in storage clusters |
US9448738B2 (en) | 2013-03-15 | 2016-09-20 | Western Digital Technologies, Inc. | Compression and formatting of data for data storage systems |
US9201800B2 (en) | 2013-07-08 | 2015-12-01 | Dell Products L.P. | Restoring temporal locality in global and local deduplication storage systems |
US10838990B1 (en) | 2013-09-26 | 2020-11-17 | EMC IP Holding Company LLC | System and method for improving data compression of a storage system using coarse and fine grained similarity |
GB2520489A (en) | 2013-11-20 | 2015-05-27 | Ibm | Deletion of content in digital storage systems |
US10187358B2 (en) | 2013-12-03 | 2019-01-22 | Amazon Technologies, Inc. | Data transfer optimizations |
US9426219B1 (en) | 2013-12-06 | 2016-08-23 | Amazon Technologies, Inc. | Efficient multi-part upload for a data warehouse |
US10776321B1 (en) | 2013-12-07 | 2020-09-15 | Trilio Data, Inc. | Scalable de-duplication (dedupe) file system |
US9195851B1 (en) | 2014-03-12 | 2015-11-24 | Emc Corporation | Offloading encryption to the client |
US10540606B2 (en) | 2014-06-30 | 2020-01-21 | Amazon Technologies, Inc. | Consistent filtering of machine learning data |
US9841925B2 (en) | 2014-06-30 | 2017-12-12 | International Business Machines Corporation | Adjusting timing of storing data in a dispersed storage network |
US11100420B2 (en) | 2014-06-30 | 2021-08-24 | Amazon Technologies, Inc. | Input processing for machine learning |
WO2016130091A1 (en) | 2015-02-13 | 2016-08-18 | Nanyang Technological University | Methods of encoding and storing multiple versions of data, method of decoding encoded multiple versions of data and distributed storage system |
US11575524B2 (en) * | 2015-10-12 | 2023-02-07 | Servicenow, Inc. | Selective encryption delineation |
EP3376393B1 (en) | 2015-12-08 | 2021-02-17 | Huawei Technologies Co., Ltd. | Data storage method and apparatus |
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 |
ES2899933T3 (es) | 2016-03-15 | 2022-03-15 | Datomia Res Labs Ou | Gestión y seguridad de datos del sistema de almacenamiento distribuido |
US10346066B2 (en) | 2016-06-27 | 2019-07-09 | EMC IP Holding Company LLC | Efficient erasure coding of large data objects |
US10318389B2 (en) | 2016-07-15 | 2019-06-11 | Quantum Corporation | Joint de-duplication-erasure coded distributed storage |
US10091904B2 (en) | 2016-07-22 | 2018-10-02 | Intel Corporation | Storage sled for data center |
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 |
US10552062B2 (en) | 2017-03-20 | 2020-02-04 | Samsung Electronics Co., Ltd. | System and method for storing very large key value objects |
US20180314710A1 (en) | 2017-04-30 | 2018-11-01 | Aria Solutions, Inc. | Flattened document database with compression and concurrency |
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 |
US11023318B1 (en) | 2017-06-23 | 2021-06-01 | Virtuozzo International Gmbh | System and method for fast random access erasure encoded storage |
US10594790B2 (en) | 2017-06-28 | 2020-03-17 | International Business Machines Corporation | Data compression in a dispersed storage network |
US10387673B2 (en) | 2017-06-30 | 2019-08-20 | Microsoft Technology Licensing, Llc | Fully managed account level blob data encryption in a distributed storage environment |
CN109308233A (zh) | 2017-07-28 | 2019-02-05 | 中兴通讯股份有限公司 | 数据备份方法、装置及系统 |
US10310765B1 (en) * | 2017-08-31 | 2019-06-04 | Amazon Technologies, Inc. | Record-oriented data storage for a distributed storage system |
CN109492408B (zh) * | 2017-09-13 | 2021-06-18 | 杭州海康威视数字技术股份有限公司 | 一种加密数据的方法及装置 |
US10572161B2 (en) | 2017-11-15 | 2020-02-25 | Samsung Electronics Co., Ltd. | Methods to configure and access scalable object stores using KV-SSDs and hybrid backend storage tiers of KV-SSDs, NVMe-SSDs and other flash devices |
US10949303B2 (en) | 2017-12-11 | 2021-03-16 | Fungible, Inc. | Durable block storage in data center access nodes with inline erasure coding |
US11017127B2 (en) | 2018-01-31 | 2021-05-25 | Seagate Technology Llc | Storage compute appliance with internal data encryption |
WO2019183958A1 (zh) | 2018-03-30 | 2019-10-03 | 华为技术有限公司 | 数据写入方法、客户端服务器和系统 |
US20200042500A1 (en) | 2018-08-02 | 2020-02-06 | Alibaba Group Holding Limited | Collaborative compression in a distributed storage system |
US10809945B2 (en) | 2018-08-02 | 2020-10-20 | EMC IP Holding Company LLC | Method and system for compression aware chunking of backup streams |
US20200117362A1 (en) | 2018-10-15 | 2020-04-16 | Netapp, Inc. | Erasure coding content driven distribution of data blocks |
US10915381B2 (en) | 2018-10-16 | 2021-02-09 | Ngd Systems, Inc. | System and method for computational storage device intercommunication |
US11232075B2 (en) | 2018-10-25 | 2022-01-25 | EMC IP Holding Company LLC | Selection of hash key sizes for data deduplication |
WO2020160142A1 (en) | 2019-01-29 | 2020-08-06 | ClineHair Commercial Endeavors | Encoding and storage node repairing method for minimum storage regenerating codes for distributed storage systems |
US20190196907A1 (en) | 2019-03-05 | 2019-06-27 | Intel Corporation | Compression techniques for distributed data |
US11146556B2 (en) | 2019-03-11 | 2021-10-12 | Parablu Inc. | Methods and systems for contiguous utilization of individual end-user-based cloud-storage subscriptions |
CN113424144A (zh) | 2019-03-12 | 2021-09-21 | 英特尔公司 | 计算数据存储系统 |
US11093176B2 (en) | 2019-04-26 | 2021-08-17 | EMC IP Holding Company LLC | FaaS-based global object compression |
US10664165B1 (en) | 2019-05-10 | 2020-05-26 | EMC IP Holding Company LLC | Managing inline data compression and deduplication in storage systems |
AU2020279052B2 (en) | 2019-05-22 | 2022-10-06 | Myota, Inc. | Method and system for distributed data storage with enhanced security, resilience, and control |
US11403234B2 (en) | 2019-06-29 | 2022-08-02 | Intel Corporation | Cryptographic computing using encrypted base addresses and used in multi-tenant environments |
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 |
US20210019067A1 (en) | 2019-07-18 | 2021-01-21 | Pure Storage, Inc. | Data deduplication across storage systems |
US11372813B2 (en) | 2019-08-27 | 2022-06-28 | Vmware, Inc. | Organize chunk store to preserve locality of hash values and reference counts for deduplication |
US10852989B1 (en) | 2019-08-28 | 2020-12-01 | Dell Products L.P. | Method and system for offloading a continuous health-check and reconstruction of data in a data cluster |
US10977136B2 (en) | 2019-08-28 | 2021-04-13 | Dell Products L.P. | Method and system for offloading a continuous health-check and reconstruction of data using compute acceleration devices on persistent storage devices |
US11403182B2 (en) | 2019-08-28 | 2022-08-02 | Dell Products L.P. | Method and system for any-point in time recovery within traditional storage system via a continuous data protection interceptor |
JP7295422B2 (ja) | 2019-09-10 | 2023-06-21 | 富士通株式会社 | 情報処理装置および情報処理プログラム |
KR20210085413A (ko) | 2019-12-30 | 2021-07-08 | 에스케이하이닉스 주식회사 | 데이터 압축부를 포함하는 메모리 컨트롤러 및 그것의 동작 방법 |
US11210002B2 (en) | 2020-01-29 | 2021-12-28 | Samsung Electronics Co., Ltd. | Offloaded device-driven erasure coding |
US11177012B1 (en) | 2020-06-24 | 2021-11-16 | Western Digital Technologies, Inc. | Fast copy through controller |
JP7343536B2 (ja) | 2021-03-01 | 2023-09-12 | 株式会社日立製作所 | リモートコピーシステム及び方法 |
-
2022
- 2022-02-22 US US17/677,991 patent/US12074962B2/en active Active
- 2022-08-08 KR KR1020220098841A patent/KR20230023586A/ko unknown
- 2022-08-10 CN CN202210954950.2A patent/CN115705161A/zh active Pending
- 2022-08-10 EP EP22189731.7A patent/EP4134818A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US12074962B2 (en) | 2024-08-27 |
US20230057517A1 (en) | 2023-02-23 |
KR20230023586A (ko) | 2023-02-17 |
EP4134818A1 (en) | 2023-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8554745B2 (en) | Nearstore compression of data in a storage system | |
JP5623561B2 (ja) | ストレージ用論理データオブジェクトの変換方法およびシステム | |
US10956370B2 (en) | Techniques for improving storage space efficiency with variable compression size unit | |
US8285957B1 (en) | System and method for preprocessing a data set to improve deduplication | |
US8473652B2 (en) | Systems and methods for compression of data for block mode access storage | |
US10270468B2 (en) | Method for file updating and version control for linear erasure coded and network coded storage | |
US20120047339A1 (en) | Redundant array of independent clouds | |
US20110113115A1 (en) | Storage system with a memory blade that generates a computational result for a storage device | |
US20120089579A1 (en) | Compression pipeline for storing data in a storage cloud | |
CN102999543A (zh) | 利用了数据段的相似度的高效数据存储 | |
US8516002B2 (en) | Deflate file data optimization | |
US11514001B2 (en) | Concurrent computations operating on same data for CPU cache efficiency | |
CN115705161A (zh) | 用于划分和加密数据的系统、方法和装置 | |
EP4135200A1 (en) | Systems, methods, and apparatus for dividing and compressing data | |
EP4135203A1 (en) | Systems, methods, and apparatus for processing data at a storage device | |
EP4135201A1 (en) | Systems, methods, and apparatus for hierarchical aggregation for computational storage | |
US20180165034A1 (en) | Efficient migration to distributed storage | |
EP4135202A1 (en) | Systems, methods, and apparatus for data resizing for computational storage | |
Panpaliya et al. | Data deduplication for cloud backup services |
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 |