CN109101190B - 利用基础数据识别的对象去重 - Google Patents
利用基础数据识别的对象去重 Download PDFInfo
- Publication number
- CN109101190B CN109101190B CN201810554269.2A CN201810554269A CN109101190B CN 109101190 B CN109101190 B CN 109101190B CN 201810554269 A CN201810554269 A CN 201810554269A CN 109101190 B CN109101190 B CN 109101190B
- Authority
- CN
- China
- Prior art keywords
- data
- processor
- host
- identifying
- deduplication
- 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.)
- Active
Links
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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
- G06F12/1018—Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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/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/0661—Format or protocol conversion arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/068—Hybrid storage device
-
- 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
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
一种用于向包括处理器、易失性存储器和非易失性存储器在内的存储设备写入数据的方法,所述存储设备与主机通信,所述方法包括:由所述处理器接收用于将主机数据写入所述非易失性存储器的命令,所述主机数据与主机标识相关联;由所述处理器计算与所述主机数据相关联的散列值;由所述处理器在对象映射中添加与所述散列值相关联的对象条目,所述对象条目包括所述主机标识和所述散列值;以及由所述处理器识别在去重映射中是否存在与所述散列值相关联的去重条目;以及由所述处理器基于所述识别将存储数据写入到所述非易失性存储器中,所述存储数据与所述主机数据相关联并且与所述主机数据不同。
Description
相关申请的交叉引用
本申请要求2017年8月2日递交的美国临时专利申请No.62/540,520(“DEDUPLICATION OF OBJECTS BY FUNDAMENTAL DATA IDENTITY”)和2017年6月20日递交的美国临时专利申请No.62/522,423的优先权和权益,其全部内容以引用方式并入于此。
本申请涉及2017年8月28日提交的美国专利申请No.15/688,779(“SSDCOMPRESSION AWARE”),其全部内容以引用方式并入于此。
技术领域
本公开的实施例的各方面总体上涉及存储设备。具体而言,本公开涉及用于数据去重的方法和***。
背景技术
传统的去重(deduplication)是增加***功能存储容量的一种成熟方法。传统的去重是基于模式匹配的。当找到与模式相匹配的数据时,将其用对该数据的单一版本的引用进行替换。数据匹配可以以多种方式执行,包括匹配整个文件/对象(即,寻找相同的文件)、以文件/对象的固定块大小分量匹配位模式、以及使用固定块大小和在文件/对象上的滑动窗口来匹配位模式。
在所有这些方法中,通过在两个源(或源和库)之间匹配位来完成去重,而不关心源的性质。因此,传统的去重***无法从终端用户信息内容角度来识别密切相关的文件/对象。例如,传统的去重***无法识别明文文本对象、该对象的压缩版本以及该对象的加密版本均表示相同的基本数据,这是因为所有这些版本都具有不同的位模式。因此,这三个副本将不会被去重。
在本背景技术部分中公开的以上信息仅用于增强对本公开的理解,并且因此其可以包含不构成本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的实施例的方面针对一种内容感知的去重***,其能够通过对明文数据以及该同一明文数据的可逆转换版本(可以包括压缩和/或存储***加密版本)进行去重,来提高文件存储利用率。
根据本公开的一些实施例,提供了一种用于向包括处理器、易失性存储器和非易失性存储器在内的存储设备写入数据的方法,所述存储设备与主机通信,所述方法包括:由所述处理器接收用于将主机数据写入所述非易失性存储器的命令,所述主机数据与主机标识相关联;由所述处理器计算与所述主机数据相关联的散列值;由所述处理器在对象映射中添加与所述散列值相关联的对象条目,所述对象条目包括所述主机标识、所述散列值、以及指示如何将所述主机数据转换为标准数据的第一记录;以及由所述处理器识别在去重映射中是否存在与所述散列值相关联的去重条目,所述去重条目包括所述散列值以及指示如何将所述标准数据转换为可存储数据的第二记录;以及由所述处理器基于所述识别来处理所述主机数据以作为存储数据存储在所述非易失性存储器中,所述存储数据与所述主机数据相关联并且与所述主机数据不同。
在一些实施例中,所述对象映射是多个对象映射中的一个,所述多个对象映射中的每一个与所述存储设备的不同用户的数据相关联,以及所述去重映射与所述存储设备的所有用户的数据相关联。
在一些实施例中,计算散列值包括:由所述处理器确定所述主机数据被压缩;响应于所述确定,由所述处理器根据所述主机数据的压缩类型将所述主机数据解压缩为解压缩主机数据;以及由所述处理器计算所述解压缩主机数据的所述散列值,其中,所述对象映射还包括所述压缩类型。
在一些实施例中,处理所述主机数据包括:响应于识别出所述去重映射中的与所述散列值相关联的所述去重条目,更新所述对象映射,并且递增所述去重条目中的计数数字,而不在所述非易失性存储器中存储任何其他信息。
在一些实施例中,处理所述主机数据包括:响应于识别出所述去重映射中的与所述散列值相关联的所述去重条目并识别出与所述散列值相关联的先前存储的数据是被压缩的,用更高效压缩的存储数据替换所述先前存储的数据。
在一些实施例中,处理所述主机数据包括:响应于识别出所述去重映射中的与所述散列值相关联的所述去重条目并识别出与所述散列值相关联的先前存储的数据是被加密的,用更高效加密的存储数据替换所述先前存储的数据。
在一些实施例中,处理所述主机数据包括:响应于识别出所述去重映射中的与所述散列值相关联的所述去重条目:由所述处理器基于所述去重条目中的第一物理地址来识别与所述散列值相关联的存储数据;由所述处理器基于所述去重条目识别所述存储数据是否被加密;由所述处理器基于所述去重条目识别所述存储数据是否被压缩;由所述处理器基于所述存储数据的加密类型和压缩类型来重新格式化所述存储数据;以及由所述处理器将所述标准数据识别为所述重新格式化后的存储数据;响应于未识别出所述去重复映射中的与所述散列值相关联的所述去重条目:由所述处理器将所述标准数据识别为所述主机数据;由所述处理器将所述标准数据处理成可存储数据以便存储在所述非易失性存储器中的第二物理地址中;以及由所述处理器更新所述去重映射。
在一些实施例中,处理所述主机数据包括:响应于将所述存储数据识别为是被加密的:由所述处理器识别所述去重条目中的所述存储数据的加密类型;由所述处理器将所述去重条目中的所述存储数据的加密密钥识别为非驱动密钥(off-drive key)或存储密钥;响应于将所述加密密钥识别为所述非驱动密钥:不对所述存储数据进行解密;响应于将所述加密密钥识别为所述存储密钥:由所述处理器利用所述存储密钥并根据所述加密类型对所述存储数据进行解密;以及响应于将所述存储数据识别为是未被压缩的:由所述处理器将所述标准数据识别为解密后的存储数据。
在一些实施例中,处理所述主机数据还包括:响应于将所述存储数据识别为是被压缩的:由所述处理器识别所述去重条目中的所述存储数据的压缩类型;以及由所述处理器根据所述压缩类型对所述解密后的存储数据进行解压缩,或者响应于将所述存储数据识别为是未被加密的,对所述存储数据进行解压缩,以生成所述标准数据。
在一些实施例中,由所述处理器将所述标准数据处理成可存储数据以便存储包括:由所述处理器基于服务质量QoS参数、所述存储设备的工作负载以及用户需求中的一个或多个来确定所述标准数据是否是可压缩的;由所述处理器基于服务质量QoS参数、所述存储设备的工作负载以及用户需求中的一个或多个来确定所述标准数据是否是可加密的;响应于确定所述标准数据是可压缩的:由所述处理器利用满足所述QoS参数的算法来压缩所述标准数据以生成处理后的数据;响应于确定所述标准数据是不可压缩的:由所述处理器将所述处理后的数据识别为所述标准数据;以及响应于确定所述标准数据是不可加密的:由所述处理器将所述处理后的数据存储在所述非易失性存储器中的所述第二物理地址处。
在一些实施例中,处理所述标准数据还包括:响应于确定所述标准数据是可加密的:由所述处理器利用密钥并通过满足所述QoS参数的算法来对所述处理后的数据进行加密;以及由所述处理器将所述经加密的处理后的数据存储在所述非易失性存储器中的所述第二物理地址处。
在一些实施例中,所述密钥包括非驱动密钥或存储密钥。
在一些实施例中,更新所述去重映射包括:响应于识别出所述去重映射中的与所述散列值相关联的所述去重条目:由所述处理器利用所述第二物理地址以及加密密钥、加密类型和压缩类型中的一个或多个来更新所述去重映射中的所述去重条目;以及响应于未识别出所述去重复映射中的与所述散列值相关联的所述去重条目:由所述处理器在所述去重映射中添加去重条目,所述去重条目包括所述第二物理地址以及用于将所述存储数据变换为所述标准数据的加密密钥、加密类型和压缩类型中的一个或多个。
在一些实施例中,所述去重映射和所述对象映射被维护在所述存储设备的所述易失性存储器或所述非易失性存储器中。
根据本公开的一些实施例,提供了一种用于从包括处理器、易失性存储器和非易失性存储器在内的存储设备读取数据的方法,所述存储设备与主机通信,所述方法包括:由所述处理器接收用于从所述非易失性存储器读取主机数据的命令,所述主机数据与主机标识相关联;由所述处理器识别在对象映射中的与所述主机标识相关联的对象条目,所述对象条目包括所述主机标识、散列值、以及指示如何将所述主机数据转换为标准数据的第一记录;由所述处理器识别所述对象条目的所述散列值;由所述处理器识别在去重映射中的与所述散列值相关联的去重条目,所述去重条目包括所述散列值以及指示如何将所述标准数据转换为与所述主机数据相关联的存储数据的第二记录;由所述处理器基于所述去重条目中的物理地址来从所述非易失性存储器中取回所述存储数据;由所述处理器基于所述去重条目识别所述存储数据是否被加密;由所述处理器基于所述去重条目识别所述存储数据是否被压缩;由所述处理器基于所述去重条目识别所述存储数据是否被压缩;以及由所述处理器基于所述存储数据是否被加密、所述存储数据是否被压缩以及所述主机数据是否被压缩,来根据所述存储数据生成所述主机数据。
在一些实施例中,生成所述主机数据包括:响应于将所述存储数据识别为是被加密的:由所述处理器识别所述去重条目中的加密类型和加密密钥;由所述处理器利用存储密钥并根据所述加密类型对与所述散列值相关联的所述存储数据进行解密;以及响应于将所述存储数据和所述主机数据识别为是未压缩的:由所述处理器将所述主机数据识别为解密后的存储数据。
在一些实施例中,生成所述主机数据还包括:响应于将所述存储数据识别为是被压缩的:由所述处理器识别所述去重条目中的第一压缩类型;由所述处理器识别所述对象条目中的第二压缩类型;由所述处理器确定所述第一压缩类型和所述第二压缩类型是否相同;响应于确定所述第一压缩类型和所述第二压缩类型相同:由所述处理器将所述主机数据识别为所述解密后的存储数据,或者响应于将所述存储数据识别为是未加密的,将所述主机数据识别为所述存储数据;以及响应于确定所述第一压缩类型和所述第二压缩类型不同:由所述处理器根据所述第一压缩类型对所述解密后的存储数据进行解压缩,或者响应于将所述存储数据识别为是未被加密的,对所述存储数据进行解压缩,以生成所述标准数据;以及由所述处理器根据所述第二压缩类型压缩所述标准数据以生成所述主机数据。
在一些实施例中,所述第二压缩类型是非压缩,压缩所述标准数据包括不压缩所述解压缩数据,且生成所述主机数据包括将所述主机数据识别为所述标准数据。
根据本公开的一些实施例,提供了一种用于从包括处理器、易失性存储器和非易失性存储器在内的存储设备删除数据的方法,所述存储设备与主机通信,所述方法包括:由所述处理器接收用于从所述非易失性存储器删除主机数据的命令,所述主机数据与主机标识相关联;由所述处理器识别在对象映射中的与所述主机标识相关联的对象条目,所述对象条目包括所述主机标识、散列值、以及指示如何将所述主机数据转换为标准数据的第一记录;由所述处理器识别所述对象条目的所述散列值;由所述处理器识别在去重映射中的与所述散列值相关联的去重条目,所述去重条目包括所述散列值以及指示如何将所述标准数据转换为与所述主机数据相关联的存储数据的第二记录;由所述处理器对所述去重条目中的计数进行递减;由所述处理器确定所述计数是否等于零;以及由所述处理器基于所述计数删除所述对象条目和所述去重条目中的一个或多个。
在一些实施例中,响应于确定所述计数等于零:由所述处理器从所述去重映射中删除所述去重条目;以及由所述处理器从所述对象映射中删除所述对象条目;由所述处理器基于所述去重条目中的物理地址来识别在所述非易失性存储器中的与所述主机数据相关联的所述存储数据;以及由所述处理器删除所述存储数据,并且其中,响应于确定所述计数不等于零:由所述处理器从所述对象映射中删除所述对象条目。
根据本公开的一些实施例,提供了一种用于向与主机通信的存储设备写入数据的去重***,所述去重***包括:处理器;以及处理器存储器,位于所述处理器本地,其中,所述处理器存储器存储有指令,所述指令在由所述处理器执行时使所述处理器执行:接收用于将主机数据写入非易失性存储器的命令,所述主机数据与主机标识相关联;计算与所述主机数据相关联的散列值;在对象映射中添加与所述散列值相关联的对象条目,所述对象条目包括所述主机标识、所述散列值、以及指示如何将所述主机数据转换为标准数据的第一记录;以及识别在去重映射中是否存在与所述散列值相关联的去重条目,所述去重条目包括所述散列值以及指示如何将所述标准数据转换为存储数据的第二记录;以及基于所述识别来处理所述主机数据以作为存储数据存储在所述非易失性存储器中,所述存储数据与所述主机数据相关联并且与所述主机数据不同。
根据本公开的一些实施例,提供了一种用于从与主机通信的存储设备读取数据的去重***,所述去重***包括:处理器;以及处理器存储器,位于所述处理器本地,其中,所述处理器存储器存储有指令,所述指令在由所述处理器执行时使所述处理器执行:接收用于从非易失性存储器读取主机数据的命令,所述主机数据与主机标识相关联;识别在对象映射中的与所述主机标识相关联的对象条目,所述对象条目包括所述主机标识、散列值、以及指示如何将所述主机数据转换为标准数据的第一记录;识别所述对象条目的所述散列值;识别在去重映射中的与所述散列值相关联的去重条目,所述去重条目包括所述散列值以及指示如何将所述标准数据转换为与所述主机数据相关联的存储数据的第二记录;基于所述去重条目中的物理地址来从所述非易失性存储器中取回所述存储数据;基于所述去重条目识别所述存储数据是否被加密;基于所述去重条目识别所述存储数据是否被压缩;基于所述去重条目识别所述存储数据是否被压缩;以及基于所述存储数据是否被加密、所述存储数据是否被压缩以及所述主机数据是否被压缩,来根据所述存储数据生成所述主机数据,所述存储数据与所述主机数据不同。
根据本公开的一些实施例,提供了一种用于从与主机通信的存储设备删除数据的去重***,所述去重***包括:处理器;以及处理器存储器,位于所述处理器本地,其中,所述处理器存储器存储有指令,所述指令在由所述处理器执行时使所述处理器执行:接收用于从非易失性存储器删除主机数据的命令,所述主机数据与主机标识相关联;识别在对象映射中的与所述主机标识相关联的对象条目,所述对象条目包括所述主机标识、散列值、以及指示如何将所述主机数据转换为标准数据的第一记录;识别所述对象条目的所述散列值;识别在去重映射中的与所述散列值相关联的去重条目,所述去重条目包括所述散列值以及指示如何将所述标准数据转换为与所述主机数据相关联的存储数据的第二记录;对所述去重条目中的计数进行递减;确定所述计数是否等于零;以及基于所述计数删除所述对象条目和所述去重条目中的一个或多个。
附图说明
附图与说明书一起示出了本公开的示例实施例,并且与说明书一起用于解释本公开的原理。
图1是示出了根据本发明的一些示例性实施例的***的框图,该***包括与存储设备进行通信以便执行数据查询的主机。
图2是示出了根据本发明的一些示例性实施例的使用去重***的数据去重的过程的图。
图3是示出了根据本发明的一些示例性实施例的去重***的转换器的与***的对象映射和去重映射有关的操作的图。
图4是示出了根据本发明的一些示例性实施例的转换器的框图。
图5A至图5B是示出了根据本发明的一些示例性实施例的由转换器执行的去重操作的图。
图6A至图6B是示出了根据本发明的一些示例性实施例的使用去重***将源数据写入到存储设备的非易失性存储器的过程的流程图。
图7是示出了根据本发明的一些示例性实施例的使用去重***从存储设备的非易失性存储器读取数据的过程的流程图。
图8是示出了根据本发明的一些示例性实施例的使用去重***从存储设备的非易失性存储器删除数据的过程的流程图。
具体实施方式
以下阐述的详细描述旨在作为对根据本公开提供的用于数据去重的***和方法的示例实施例的描述,并且不旨在表示可以构建或利用本公开的唯一形式。该描述结合所示实施例阐述了本公开的特征。然而,应该理解的是,相同或等同的功能和结构可以通过不同的实施例来实现,这些实施例也旨在被包含在本公开的范围内。如本文其他地方所表示的,相似的元件编号旨在表示相似的元件或特征。
本公开的实施例针对的是能够识别相同数据的替代形式并将它们全部视为彼此的重复的去重***。在一些实施例中,去重***将明文数据、压缩数据和存储***加密数据副本识别为包含相同的信息,并且相对于彼此对它们进行去重。在一些实施例中,去重***的数据转换器将输入数据转换成标准数据,然后转换成存储数据(以及转换回原来的数据)。该转换器在两个级别的跟踪表(即,用户表和全局去重表)中跟踪(作为计划)执行所述操作所需的步骤。用户表(在下文中称为对象映射)跟踪密钥/ID、散列值、以及如何能够根据标准数据生成密钥/ID的原始数据。全局去重表(在下文中称为去重映射)通过散列值跟踪所有唯一数据、指示最终存储形式、存储地址以及如何能够将最终存储形式转换回标准数据。
图1是示出了根据本发明的一些示例性实施例的***10的框图,该***10包括与存储设备30进行通信以便执行数据查询的主机20(例如,服务器主机)。
在一些实施例中,主机20和存储设备30可以实现在基于本地的或基于云的计算环境中。主机20和存储设备30可以通过有线或无线连接相互通信。例如,在一个实施例中,存储设备30可以包括引脚(或插座)以与主机20上的相应插座(或引脚)配对以建立电连接和物理连接。在另一实施例中,存储设备30可以包括无线收发器,以使主机20和存储设备30彼此无线通信。主机20和存储设备30可以彼此分离地安置,或者被容纳在相同的壳体中。主机20和存储设备30可以包括附加组件,其中为了简化绘图,图1未示出这些附加组件。如本文所使用的,短语“与......通信”是指直接通信或经由本文中命名或未命名的一个或多个组件间接通信。主机20和存储设备30可以使用任何合适的数据总线和协议(例如通用串行总线(USB)、高速***组件互连(PCIe)等)进行通信。
主机20可以包括处理设备,例如中央处理单元(CPU),其对查询到的数据执行操作。数据可以被写入存储设备30或者可以从存储设备30读取,由CPU处理,并且可以将处理后的数据发送到请求源。主机20可以基于数据的逻辑地址来操作,并且可以不知道存储在存储设备30上的数据的物理位置(例如,也称为物理地址)。
根据本发明的一些实施例,存储设备30可以包括控制器40、易失性存储器50(例如,动态随机存取存储器(DRAM))和非易失性存储器60(例如,闪存)。
控制器40便于向存储设备30传输数据和从存储设备30传输数据,并且包括数据转换器(也称为“转换器”)100,其执行对主机数据查询的去重。
根据一些实施例,去重***(例如,转换器100)能够识别相同数据的替代形式,并将它们全部视为彼此的重复。因此,任何明文数据和该明文数据的可逆变换版本(诸如压缩数据和存储***加密(或驱动加密)数据)都被识别为包含相同的信息,并且可以相对于彼此进行去重。在一些实施例中,使用传统的基于位模式的方法对用户加密的数据进行去重,这是由于加密密钥通常仅对用户已知,而对转换器100未知,因此转换器100不具有对用户加密的数据进行解密的手段。如贯穿本公开内容所使用的,用户是指逻辑用户,其可以是个人用户(即,人类用户)或应用。
图2是示出了根据本发明的一些示例性实施例的使用去重***的数据去重的过程200的图。
根据一些实施例,去重包括转换器100、对象映射208和去重映射210。转换器100通过将相关数据条目全部转换回标准数据(也称为目标数据)并以标准形式比较不同数据来对这些相关数据条目去重。在一些实施例中,标准数据是未被变换(例如,压缩和/或加密)的并且处于明文/原始/基本形式(例如,未压缩和未加密的文本文件)的数据;然而,本发明的实施例不限于此,标准数据可以是被压缩的和/或被加密的数据,这可能适合于给定的应用。在标准数据是明文数据的实施例中,转换器100通过对被压缩的源数据进行解压缩、对在存储/驱动级别被加密的源数据进行解密、以及将明文数据保持原样,来将源数据转换成标准数据。在一些实施例中,转换器100不对用户加密的数据进行解密,并将用户加密的数据视为标准数据的形式。
在一些示例中,转换器100可以将去重后的标准数据存储在非易失性存储器60中,或者还可以在存储标准数据之前对所述标准数据进行压缩和/或加密,以便更高效地使用存储空间和/或改善存储数据的安全性。
根据一些实施例,在对象映射208处维护对源数据202执行的用于将其转换为标准数据204的任何操作(例如,解压缩/压缩操作(CA)和/或解密/加密(EA)操作)的记录(例如,第一记录),所述源数据202可以是主机数据(例如,来自主机20)。在去重映射210(例如,例如去重映射)处维护用于将标准数据204转换为存储数据206的任何编码操作(例如,压缩/解压缩操作(CA)和/或加密/解密(EA)操作)的记录(例如,第二记录)。在对象映射208和去重映射210处维护的记录允许转换器100随后当存在例如来自主机20的读取查询时,将存储数据206转换为适当的数据格式。在一些示例中,对象映射208和去重映射210可以被存储在存储设备30的易失性存储器50中;然而,本发明的实施例不限于此,对象映射208和去重映射210中的一个或多个可以被存储在存储设备30的非易失性存储器60处。
图3是示出了根据本发明的一些示例性实施例的转换器100的与对象映射208和去重映射210有关的操作的图。
根据一些实施例,每个用户(或数据所有权的其他逻辑划分)可以具有与其相关联的对象表。例如,在图3中,对象映射208a和208b分别与用户1和用户2相关联。每个对象表包括多个对象条目,其中每个对象条目包括:主机标识(ID)、指示与主机ID相关联的源数据202如何被转变为标准数据204的计划以及基于标准数据204的并与数据的主机ID相关联的散列值。
在一些实施例中,当从主机20接收到源数据202时,转换器100将所有传入数据转换为标准形式,称为标准数据204。散列计算器212计算标准数据204的散列值,并且用户的对象映射208a/208b被更新为包括源数据202的主机ID、由转换器100发现的计划和压缩信息、以及标准数据204的散列值。
例如,在图3中,用户1的对象映射208a表示:使用压缩类型“CA1”对被压缩的具有主机ID“100”的源数据进行解压缩(如计划字段中的“CA”所示),以将其转换为标准形式,并且对应的标准数据的散列值为“1234”。类似地,不对已处于标准形式的具有主机ID“250”的源数据进行解压缩(如计划字段中的“N/A”以及压缩类型“N/A”所示),且所述源数据的散列值与具有主机ID“100”的数据的散列值相同,表示它与具有主机ID“100”的源数据的标准形式相同(换句话说,用户1已经在设备中保存了相同文件的压缩版本和解压缩版本)。此外,由用户2的对象映射208b所示,使用压缩类型“CA2”对被压缩的具有主机ID“73”的源数据进行解压缩(如计划字段中的“CA”所示),以将其转换为标准形式,并且对应的标准数据的散列值同样为“1234”(即,用户2已保存上述文件的版本,但是使用不同的压缩算法)。由于与用户1相关联的两个数据以及与用户2相关联的具有主机ID“73”的数据具有相同的散列值,所以它们被转换器100视为基本相同,并且由转换器100接着对这三条数据进行去重。这样,并且如下面将要说明的,与存储3个不同文件(即,明文或标准形式的文件,以及具有不同压缩类型(即“CAl”和“CA2”)的两个压缩文件)相比,在非易失性存储器60中仅维护存储数据206(例如,在地址“OxABCD”处)。这减少了对存储容量的需求。
根据一些实施例,由转换器100进一步处理标准数据204以产生存储数据206,其中使用去重映射210对所述存储数据进行去重。去重映射210包括具有多个去重条目(也称为“去重(dedup)条目”)的表,由此,每个去重条目指示:标准数据散列值;相关联的存储数据在非易失性存储器60中保存的物理地址;用于根据标准数据生成存储数据的计划;用于创建最终存储副本的任何压缩或加密算法的标识或类型;数据的加密密钥ID;以及引用计数。当转换器100准备用于存储在非易失性存储器60中的标准数据时,将标准数据的散列值与去重映射210进行比较。如果散列值是新的且唯一的,则将其作为新的去重条目与上述所有相关信息一起进行存储。如果散列值不唯一,则用递增后的计数数字更新具有该散列值的现有去重条目。
例如,在图3中,去重映射210中的第一个去重条目(表中的第一行)指示:具有主机ID“73”、“100”和“250”的三条源数据已经作为存储数据206a以被写入物理地址“OxABCD”的非易失性存储器60,其中所述三条源数据具有相同标准形式散列值“1234”的。该去重条目还指示:对关联的标准数据进行压缩(使用压缩类型/算法“CA1”),并然后进行加密(使用加密类型/算法“EA2”和密钥ID为“0”的存储密钥),以便生成存储数据206a。计数引用“3”指示三个不同的源数据与相同的存储数据206a相关联。除了指示所使用的加密密钥之外,密钥ID还可以标识与数据相关联的权限。例如,密钥ID“0”指示对应的存储数据在整个设备中可用,且密钥ID“2”指示特定的去重条目(例如,图3中的与散列值“8765”相关联的去重条目)是用户2专用的。
这里,标准数据被散列,以提供在数据的每个用户实例(如由主机ID表示)与全局去重映射210之间的链接。散列值在去重映射210中也被引用,以确定是否发生重复。如本领域普通技术人员将理解的,在本文中可以使用用于避免/处理散列冲突的众多公知机制中的任何一个以确保数据唯一性。
根据一些实施例,当发现重复时,具有最高优先级的数据类型被存储在非易失性存储器60中,然后将所有其他实例引用到该数据类型。在一些实施例中,加密数据被赋予比压缩数据更高的优先级,压缩数据具有比明文数据更高的优先级。这样的优先级确定方式提高了数据安全性和存储利用效率。然而,本发明的实施例不限于此,数据类型的优先级级别可以以任何合适的方式定义。例如,加密数据可以被赋予比明文/标准数据更高的优先级,而明文/标准数据可以具有比压缩数据更高的优先级。这可能是为了平衡安全性和存取速度。
去重映射210包括关于维护哪个版本的数据以及如何恢复去重信息的原始形式的信息。因此,例如,当用户请求明文文本版本的文件,但是存储在非易失性存储器60中的版本是压缩(或加密)版本时,转换器100知道对存储数据进行解压缩或解密以返回明文版本。
根据一些实施例,包括转换器100、对象映射208、去重映射210和散列计算器212在内的去重***允许存储数据的最终形式即使在被写入非易失性存储器60之后发生改变。也就是说,例如,如果存储数据的第一形式是使用效率较低的压缩算法创建的,则随后针对存储相同的基本数据的尝试可能会导致用更高效的压缩版本替换所述存储副本。这方面将在后面详细讨论。
由于用于根据源数据生成标准数据或根据标准数据生成存储数据的可能压缩和加密算法(以及相关的“计划”)数量有限,因此表上的这些条目不必是不定大的大小。
图4是示出了根据本发明的一些示例性实施例的转换器100的框图。
在一些实施例中,去重***的转换器100将输入源数据转换成标准数据,然后转换成存储数据(以及转换回原来的数据)。该转换器100在两个级别的跟踪表(即,对象表208和全局去重表210)中跟踪(作为计划)执行所述操作所需的步骤。对象表208跟踪密钥/ID、散列值、以及如何能够根据标准数据生成密钥/ID的数据。全局去重表210通过散列值跟踪所有唯一数据、指示最终存储形式、存储地址以及如何能够将最终存储形式转换回标准数据。
根据一些实施例,转换器100还知道驱动器的QoS和性能限制。因此,它能够选择用于最终存储数据的压缩/加密算法。此外,由于环境可能改变,所以如果QoS/性能允许,稍后可以用不同的算法对存储数据进行重新加密或压缩。
根据一些实施例,数据转换器100包括编码分析器102,用于分析第一数据101(例如,源数据202)以确定是否以及如何将第一数据101转换成第二数据103(例如,标准数据204)。
在接收到第一数据101时,编码分析器102首先识别第一数据101的压缩和/或加密。在一些实施例中,编码分析器102基于第一数据101的扩展名或第一数据101的签名来识别第一数据101的文件类型,第一数据101的签名可以包括在标头中或在数据内的特定已知位置处。此外,其他元数据可以包括在标头中或者第一数据101内的可预测的偏移处,该其他元数据除了文件签名之外或替代文件签名可以用于预测可压缩性和/或可加密性。例如,标头可以包括指示该值的文件格式是什么的其他元数据。在一些实施例中,当相关元数据不存在于文件标头中或通过文件扩展名不可辨别相关元数据时,编码分析器102可以对第一输入数据的样本采用数学上更复杂的可压缩性和/或可加密性算法(例如,基于熵计算的测量)。通常,已经被压缩和/或加密的数据具有较高的熵特性。未压缩的数据更有可能具有较易压缩的有序数据。因此,高熵可以指示该值可能是不可压缩的,而低熵可能指示第一数据101可能是可压缩的。
根据一些实施例,在确定是否对第一数据101进行压缩和/或加密时,编码分析器102考虑包括QoS参数和存储设备30的性能能力在内的各种合适因素。QoS参数和信息可以被并入到QoS配置文件104中。QoS配置文件104结合诸如用户当前性能要求和需求的考虑因素,使得运行的任何压缩和/或加密算法不会不利地影响用户的性能需求。编码分析器102可以使用QoS信息来确定预测的压缩比或加密级别是否满足QoS参数。
存储设备30的性能能力可以被存储在设备性能配置文件106中。设备性能配置文件106跟踪存储设备性能的静态和动态方面。编码分析器102可以使用该信息来确定值是否可以被压缩到足以满足存储设备30和QoS配置文件104的需要。
编码分析器102可以分析上述元数据信息、基于熵的计算、样本压缩、QoS要求和设备信息中的一些或全部,以预测压缩第一数据是否将导致有用的压缩比或加密级别,或者是否会对QoS产生负面影响。
一旦编码分析器102确定是否对第一数据101进行压缩和/或加密,编码分析器102就基于该确定来控制解复用器110以在下面两条路径之间进行切换:将第一数据101输出到运算器112,或绕过运算器112并将第一数据101直接发送到多路复用器114以作为第二数据103输出。在一些实施例中,当编码分析器102确定应该发生压缩和/或加密时,解复用器110将第一数据101发送到运算器112,并且当编码分析器102确定不应该发生压缩时,解复用器110不经转换地传递第一数据101,也就是说,将第一数据101发送到多路复用器114以作为第二数据103输出。
当发现第一数据101有必要进行压缩和/或加密并将其被发送到运算器112时,运算器112然后确定如何对第一数据101进行压缩和/或加密。在确定如何对第一数据101进行压缩和/或加密时,运算器112可以考虑来自各种输入的信息(包括QoS配置文件104、设备性能配置文件106以及基于压缩性能配置文件116和/或加密性能配置文件118的压缩和/或加密算法性能),来确定将哪个压缩和/或加密算法应用于第一数据101。运算器112可以使用来自QoS配置文件104的QoS信息来确定给定的压缩和/或加密算法的性能特征是否满足终端用户的需求。假设要对第一数据101进行压缩和/或加密,运算器112可以使用来自设备性能配置文件106的信息来确定哪个或哪些压缩和/或加密算法将最有效地使用设备资源。因此,取决于当前的QoS需求(如由QoS配置文件104所提供的)和设备10的性能能力(如由设备性能配置文件106所提供的),特定算法可能优于其他算法。
一旦选择了压缩和/或加密算法,压缩算法库120和/或加密算法库122就向运算器112提供代码以启动对给定第一数据101的压缩和/或加密。压缩算法库120和加密算法库122包括用于执行压缩算法和加密算法的代码。一旦压缩和/或加密完成,多路复用器114将压缩和/或加密后的数据输出作为第二数据103。
在一些示例中,当正在对数据进行在线压缩而不是静止时,或者当即时QoS需求允许最小化处理时,在一次写入时实现的实际压缩比可能不是最佳压缩比。例如,这可能是由于分配给传入数据的写入缓冲区的空间有限(使得不是所有数据都可以立即分析和压缩),或者是由于驱动器被其他高价值任务占用,从而需要进行低强度压缩。例如,QoS参数可能要求“应急(quick and dirty)”压缩(其中数据被快速压缩,但不一定是其最优压缩),以维持用户所需的存储设备30的性能能力。在这种情况下,驱动器可能会在稍后更高效地重新压缩数据。例如,在稍后当磁盘空闲时或者必须读写对象信息(即垃圾收集/损耗均衡)时,可以对压缩的值进行解压缩并再次分析(使用上述方法)以确定是否可以实现更优化的压缩。以这种方式,例如,最初在线压缩的数据流可以在“静止”状态下被更充分地压缩。
为了便于这样的重新压缩,可以将对压缩信息进行编码的隐藏密钥添加到原始密钥。对于正常的密钥处理操作(例如建立索引、搜索等),该隐藏密钥可以被忽略,但是当QoS需求较低时可以访问该隐藏密钥。隐藏密钥可以包括关于当前正在使用的压缩类型的信息以及用于启动重新压缩的命令。每当将新的压缩方案应用于值时,可以更新隐藏密钥。
虽然上面已经将转换器100描述为将第一数据101压缩/加密成第二数据103,但是本发明的实施例不限于此。在一些实施例中,转换器100还能够以类似于上述方式的方式(但使用解压缩算法库124和解密算法库126)将第一数据101解压缩/解密为第二数据103。
转换器100类似于2017年8月28日提交的相关美国申请No.15/688,779号(“SSDCOMPRESSION AWARE”)中公开的数据转换器,其全部内容通过引用并入本文。如此,转换器100的某些方面可能在此不再重复。
图5A至图5B是示出了根据本发明的一些示例性实施例的由转换器100执行的去重操作的图。
图5A示出了其中源数据全部由单个用户拥有的示例。原始数据可以采取四种一般形式之一:明文数据(例如,明文数据202a)、压缩数据(例如,压缩数据202b和202c)、用户加密数据(例如,加密数据202f)和用户加密后压缩的数据(例如,压缩数据202d和202e)。在一些示例中,在压缩之后进行用户加密的数据可以被简单地视为用户加密数据,这是由于转换器100可能无法对它进行解密以确定压缩方法。
转换器100将其具有压缩库的任何压缩文件转变成未压缩格式。根据一些实施例,这导致明文数据或加密数据被视为标准数据。例如,转换器100将明文数据202a和用户加密数据202f保持原样,使用适当的解压缩算法对压缩数据202b和202c进行解压缩以将它们转换为明文数据204a,并且使用适当的算法对压缩数据202d和202e进行解压缩以将它们转换为用户加密数据204b。
转换器100然后将标准数据转换为存储数据。例如,根据设备配置文件、用户需求、存储设备30的工作负载和QoS(201)参数(例如限制),可以将明文数据204a压缩和/或加密为存储数据206c。加密可以是基于用户密钥的,其中可以在去重映射的密钥ID字段中记录和/或引用用户密钥的标识。在一些示例中,用户加密的标准数据204b可能在极少情况下被进一步压缩,但这通常不太可能,这是因为加密数据通常表现出高熵,并且在大多数QoS(201)限制下对于压缩而言是差的选择。这样,用户加密的数据204b可以在没有进一步转换的情况下作为存储数据206d进行存储。
图5B示出了由多个用户(例如,用户1和用户2)拥有源数据的示例。用于多用户源数据的去重操作基本类似于上面关于图5A的单用户源数据所描述的操作,但有几个例外。首先,当转换器100对明文标准数据204a进行压缩和加密时,它使用存储密钥(如在去重映射210的密钥ID字段中所标识的)进行这种压缩和加密,使得可以访问原始的未加密数据的所有参与方都可以维持这种访问。其次,如果多个用户具有相同文件的不同加密版本(例如,与用户1相关联的压缩用户加密数据202d和用户加密数据202g,以及与用户2相关联的用户加密数据202h),则在去重后这些版本将被保留为不同条目(例如,作为存储数据206e和存储数据206f),以便允许每个用户访问不同且独立形式的数据。因此,当多个用户存储共享数据时,存储设备密钥被用于任何最终的重新加密。此外,拥有同一文档的自己的自加密版本的不同用户将拥有自已独立的且不同的最终保存版本的数据。对于非共享数据,可以使用用户密钥完成最终的存储级别加密,以提高安全性。
图6A至图6B是示出了根据本发明的一些示例性实施例的使用去重***将源数据写入到非易失性存储器60的过程600的流程图。
根据一些实施例,在接收到将源数据(例如,主机数据)写入到非易失性存储器60的命令时(框602),去重***计算与源数据相关联的散列值(框604-608)。在这样做时,转换器100确定源数据是否被压缩(框604)。转换器100可以基于文件扩展名、标头序列、键-值元数据等中的关于其压缩类型的信息来确定源数据被压缩。转换器100还可以通过熵分析来检测压缩。如果源数据被压缩,则转换器100根据源数据的压缩类型对源数据进行解压缩(框606),以生成标准形式的解压缩的源数据。否则,由于源数据已经是标准形式(例如,明文数据或用户加密数据),因此不执行解压缩。然后,散列计算器212计算标准数据的散列值(框608)。
在计算散列值之后,转换器100在对象映射208中添加与该散列值和源数据相关联的对象条目(框610)。对象条目包括来自源数据的主机ID、计算出的散列值、用于将源数据转换为标准数据的计划、以及任何关联的压缩类型。
接下来,转换器100识别在去重映射210中是否存在与该散列值相关联的去重条目(框612-614),并且基于该识别继续将存储数据写入到非易失性存储器60,其中该存储数据与源数据相关联。
根据一些实施例,去重***允许存储数据的最终形式发生改变(例如,被重新格式化;框616-626)。例如,如果存储数据的第一种形式是使用低效压缩算法生成的,则稍后针对存储相同的基本数据的尝试可能会导致用更高效的压缩版本替换所述存储副本。
因此,响应于识别出去重映射210中的与散列值相关联的去重条目,转换器100使用去重条目中的物理地址(例如,第一物理地址)识别与散列值相关联的存储数据(框616)。转换器100然后基于去重条目识别存储数据是否被加密(例如,基于去重条目的计划和/或加密字段;框618)。如果存储数据被识别为是被加密的,则转换器100然后识别用于生成存储数据的加密密钥是否是存储/驱动密钥(例如,图3的示例中的密钥ID字段是否是“2”;框620)。这里,存储/驱动密钥可以指存储***加密密钥或当仅有存储***的单个用户(即,不是多用户场景)时的单个用户驱动密钥。如果使用了存储/驱动密钥,则转换器100利用存储密钥并根据存储数据的加密类型来对存储数据进行解密(例如,由去重条目的加密字段所定义的;框622)。如果使用了非驱动(off-drive)密钥(即,具有多个用户的存储***中的用户特定密钥),则源数据和存储数据都是用户加密数据,在这种情况下,不会向非易失性存储器60写入更多信息,且写入过程结束。
一旦解密完成,或者如果未检测到加密,则转换器100基于去重条目识别存储数据是否是被压缩的(例如,基于去重条目的计划和/或压缩字段;框624)。如果被压缩,则转换器100根据存储文件的压缩类型(例如,由去重条目的压缩字段所定义的)对解密存储数据进行解压缩,或者响应于将存储数据识别为未被加密的,对存储数据进行解压缩,以生成一种形式的标准数据(框626)。
在解除存储数据中的任何加密和/或压缩以获得标准数据之后,或者响应于在去重映射210中未识别出与散列值相关联的去重条目(框612-614中),转换器100继续将标准数据写入到非易失性存储器60中的物理地址(例如,第二物理地址)(框628-636),并相应地更新去重映射210(框638)。
在写入标准数据时,转换器100基于服务质量(QoS)参数201、存储设备30的工作负载和用户需求中的一个或多个来确定标准数据是否是可重新压缩的(框628)。如果是可重新压缩的,则转换器100利用满足QoS参数的适当算法重新压缩标准数据(框630)。否则,不执行压缩。
转换器100然后基于服务质量(QoS)参数201、存储设备30的工作负载和用户需求中的一个或多个来确定标准数据是否是可加密的(框632)。如果是可加密的,则转换器100利用密钥和满足QoS参数201的适当算法来对压缩后的标准数据进行加密,或者在不可压缩的情况下,对标准数据进行加密(框634)。否则,不执行加密。
然后将结果数据(其可以是标准数据、压缩后的标准数据、加密后的标准数据、或压缩后的标准数据的加密版本(取决于标准数据的可压缩性和/或可加密性))存储到非易失性存储器60中的第二物理地址(框636)。在一些实施例中,当结果数据是标准数据时,或者如果在框628或632中确定由于QoS参数而导致更高效的压缩/加密是不可能的,则中止过程600,并且保留旧的存储数据。
转换器100然后继续进行以基于所执行的操作向去重映射210添加去重条目或更新去重映射210(框638)。例如,响应于识别出去重映射210中的与散列值相关联的去重条目(框614),转换器100可以利用第二物理地址以及加密密钥、加密类型和压缩类型中的一个或多个(取决于是否对标准数据执行任何压缩和/或加密以生成标准数据)来更新在去重映射210中找到的去重条目。
此外,响应于未识别出所述去重复映射210中的与所述散列值相关联的所述去重条目(框614,例如,当存储***中不存在源数据的可识别版本时),转换器100可以在去重映射210中添加去重条目,该去重条目包括最终存储的数据的物理地址(例如,第二物理地址)以及加密密钥、加密类型和压缩类型中的一个或多个(取决于是否对标准数据执行了任何压缩和/或加密以生成标准数据)。
如上所述,根据一些实施例,仅在可以改善存储数据的压缩和/或加密的情况下才执行框616-626的重新格式化操作。也就是说,在框628或632中,如果转换器100确定比存储数据的原始压缩/加密更高效的压缩/加密是不可用的或由于QoS参数而不可能,则转换器100可以简单地将去重条目中的计数器增1,并结束写入过程600,而不在非易失性存储器60中存储任何其他信息。
图7是示出了根据本发明的一些示例性实施例的使用去重***从非易失性存储器60读取数据的过程700的流程图。
根据一些实施例,在接收到从非易失性存储器60读取源数据(例如主机数据)的命令时(块702),转换器100识别在对象映射208中是否存在与所请求的源数据的主机ID相关联的对象条目(块704)。如果不存在这样的条目,则可以将对在非易失性存储器60中未找到所请求的数据加以指示的消息发送回主机20(框708)。如果找到对象条目,则转换器100识别对象条目的散列值(框710)。在未找到对象条目的散列值的情况下,将错误消息发送到***的较高部分,以指示驱动器中的错误(框714)。否则,如果找到散列值,则转换器100识别在去重映射210中的与散列值相关联的去重条目(框716),并且基于去重条目中的物理地址从非易失性存储器60中取回与主机数据相关联的存储数据。
转换器100然后基于去重条目识别存储数据是否被加密(例如,基于去重条目的计划和/或加密字段;框718)。响应于将存储数据识别为是被加密的,转换器100利用相关联的密钥(例如,由密钥ID字段标识)并且根据相关联的加密类型(例如,由加密字段标识)来对存储数据进行解密(框720)。但是,如果存储文件是未加密的,则不执行解密。
转换器100还基于去重条目(例如,基于去重条目的计划和/或压缩字段)识别存储数据是否是被压缩的(框722)。响应于将存储数据识别为是被压缩的,转换器100确定在去重条目和对象条目两者中是否指示了相同的压缩类型(框724)。如果是,则可能不需要进行解压缩然后使用相同的压缩算法来重新压缩,并且将存储数据或解密后的存储数据(如果存储数据被加密)发送到主机20(框732)。如果对象条目和去重条目中指示的压缩类型不相同(当对象条目中没有压缩时也可能出现这种情况),则转换器继续进行以根据在去重条目中指示的压缩类型对存储数据或解密后的存储数据(如果存储数据是被加密的)进行解压缩(框726)。这将存储数据转换为标准数据。
接下来,如果在对象条目中存在压缩(框728),则转换器100根据在对象条目中指示的压缩类型压缩标准数据(框730)。否则,不执行进一步压缩。
随后将结果数据(其可以是标准数据或压缩的标准数据(取决于对象条目中的压缩指示))发送到主机20(框732)。
图8是示出了根据本发明的一些示例性实施例的使用去重***从非易失性存储器60删除数据的过程800的流程图。
根据一些实施例,在接收到从非易失性存储器60删除数据的主机命令时(框802),转换器100识别对象映射208中的对象条目是否与要删除的数据的主机ID相关联(框804-806)。如果这样的对象条目不存在,则生成错误消息。如果发现所述对象条目,则转换器100识别对象条目的散列值,并确定去重映射210中的去重条目是否与散列值相关联(框810-812)。如果这样的去重条目不存在,则生成相应的错误消息(框808)。
然而,如果发现所述去重条目,则转换器对该去重条目中的计数进行递减(框814),并确定计数是否已经达到零(框816)。如果计数为零,则作为删除命令的结果,不再有主机ID与该散列值相关联,并且转换器100继续进行以从非易失性存储器60中删除与散列值相关联的存储数据,并且进一步删除关联的去重条目和对象条目(框818)。然而,如果计数尚未为零,则转换器仅从对象映射208中移除相应的对象条目,而使去重条目和存储文件保持不变,因为其他主机ID仍然引用该存储文件。
将理解,虽然本文中可以使用术语“第一”、“第二”、“第三”等来描述各种元件、组件、区域、层和/或部,但是这些元件、组件、区域、层和/或部不应受这些术语限制。这些术语用于区分一个元件、组件、区域、层或部与另一元件、组件、区域、层或部。因此,在不偏离本发明构思的范围的情况下,下文中时论的第一元件、组件、区域、层或部可以称为第二元件、组件、区域、层或部。
这里所用术语用于描述特定实施例的目的,而不是为了限制本发明构思。如本文中使用的,单数形式“一”和“一个”意在还包括复数形式,除非上下文明确地给出相反的指示。还将理解,术语“包括”和/或“包含”当在本说明书中使用时,规定了存在所声明的特征、整数、步骤、操作、要素和/或组件,但是并没有排除存在或添加一个或多个其他特征、整数、步骤、操作、要素、组件和/或其组合。本文中所使用的术语“和/或”包括相关列出项目中的一个或多个的任意和所有组合。诸如“……中的至少一个”之类的表述在元件列表之前时修饰整个元件列表,而不是修饰列表中的单独元件。此外,当描述本发明构思的实施例时使用“可以”是指“本发明构思的一个或多个实施例”。而且,术语“示例性”旨在指代示例或说明。
将理解,当元件或层被称为在另一元件或层“上”、“连接到”、“耦合到”或“邻近于”另一元件或层时,其可以直接在另一元件或层上、直接连接到、耦合到或邻近于另一元件或层,或者可以存在中间元件或层。相反,当元件或层被称为“直接”在另一元件或层“上”、“直接连接到”、“直接耦合到”或“直接邻近于”另一元件或层时,不存在中间元件或层。
如本文所使用的,术语“使用”、“正在使用”和“已使用”可以分别被认为与术语“利用”、“正在利用”和“已利用”同义。
可以利用任何合适的硬件、固件(例如,专用集成电路)、软件、或者软件、固件和硬件的适当组合,来实现根据本文所述的本公开的实施例的去重***和/或任何其他相关设备或组件。例如,去重***的各种组件可以形成在一个集成电路(IC)芯片上或形成在分开的IC芯片上。此外,可以在柔性印刷电路薄膜、带载封装(TCP)、印刷电路板(PCB)上实现去重***的各种组件,或者将其形成在相同的衬底上。此外,去重***的各种组件可以是在一个或多个计算设备中的一个或多个处理器上运行的进程或线程,执行计算机程序指令以及与其他***组件进行交互以执行本文所述的各种功能。计算机程序指令被存储在存储器中,该存储器可以使用标准存储器设备(例如,随机存取存储器(RAM))在计算设备中实现。计算机程序指令也可以存储在其他非暂时性计算机可读介质中,例如CD-ROM、闪存驱动器等。而且,本领域技术人员应该认识到,可以将各种计算设备的功能组合或集成到单个计算设备中,或者可以将特定计算设备的功能分布在一个或多个其他计算设备上而不偏离本公开示例实施例的范围。
虽然已经具体参照其说明性实施例详细描述了本公开,但本文所描述的实施例并非旨在穷举或将本公开的范围限制为所公开的确切形式。本公开所属领域的技术人员将认识到,可以实施所描述的组件和操作的结构和方法中的变更和改变,而不有意义地脱离如以下权利要求及其等同物所阐述的本公开的原理和范围。
Claims (19)
1.一种用于向包括处理器、易失性存储器和非易失性存储器在内的存储设备写入数据的方法,所述存储设备与主机通信,所述方法包括:
由所述处理器接收用于将主机数据写入所述非易失性存储器的命令,所述主机数据与主机标识相关联;
由所述处理器通过将所述主机数据转换为标准数据并计算所述标准数据的散列值,来计算与所述主机数据相关联的散列值,其中转换所述主机数据包括:对所述主机数据进行解压缩或对所述主机数据进行解密中的至少一个;
由所述处理器在对象映射中添加与所述散列值相关联的对象条目,所述对象条目包括所述主机标识、所述散列值、以及指示如何将所述主机数据转换为标准数据的第一记录;以及
由所述处理器识别在去重映射中是否存在与所述散列值相关联的去重条目,所述去重条目包括所述散列值以及指示如何将所述标准数据转换为可存储数据的第二记录;以及
由所述处理器基于所述识别来处理所述主机数据以作为存储数据存储在所述非易失性存储器中,所述存储数据与所述主机数据相关联并且与所述主机数据不同。
2.根据权利要求1所述的方法,其中,所述对象映射是多个对象映射中的一个,所述多个对象映射与所述存储设备的不同用户的数据相关联,以及
其中,所述去重映射与所述存储设备的所有用户的数据相关联。
3.根据权利要求1所述的方法,其中,转换所述主机数据包括对所述主机数据进行解压缩,
其中,计算散列值包括:
由所述处理器确定所述主机数据被压缩;
响应于所述确定,由所述处理器根据所述主机数据的压缩类型将所述主机数据解压缩为解压缩主机数据;以及
由所述处理器计算所述解压缩主机数据的所述散列值,
其中,所述对象映射还包括所述压缩类型。
4.根据权利要求1所述的方法,其中,处理主机数据包括:
响应于识别出所述去重映射中的与所述散列值相关联的所述去重条目,更新所述对象映射,并且递增所述去重条目中的计数数字,而不在所述非易失性存储器中存储任何其他信息。
5.根据权利要求1所述的方法,其中,处理主机数据包括:
响应于识别出所述去重映射中的与所述散列值相关联的所述去重条目并识别出与所述散列值相关联的先前存储的数据是被压缩的,
用更高效压缩的存储数据替换所述先前存储的数据。
6.根据权利要求1所述的方法,其中,处理主机数据包括:
响应于识别出所述去重映射中的与所述散列值相关联的所述去重条目并识别出与所述散列值相关联的先前存储的数据是被加密的,
用更高效加密的存储数据替换所述先前存储的数据。
7.根据权利要求1所述的方法,其中,处理主机数据包括:
响应于识别出所述去重映射中的与所述散列值相关联的所述去重条目:
由所述处理器基于所述去重条目中的第一物理地址来识别与所述散列值相关联的存储数据;
由所述处理器基于所述去重条目识别所述存储数据是否被加密;
由所述处理器基于所述去重条目识别所述存储数据是否被压缩;
由所述处理器基于所述存储数据的加密类型和压缩类型来重新格式化所述存储数据;以及
由所述处理器将所述标准数据识别为所述重新格式化后的存储数据;
响应于没有识别出所述去重映射中的与所述散列值相关联的所述去重条目:
由所述处理器将所述标准数据识别为所述主机数据;
由所述处理器将所述标准数据处理成可存储数据以便存储在所述非易失性存储器中的第二物理地址中;以及
由所述处理器更新所述去重映射。
8.根据权利要求7所述的方法,其中,重新格式化所述存储数据包括:
响应于将所述存储数据识别为是被加密的:
由所述处理器识别所述去重条目中的所述存储数据的加密类型;
由所述处理器将所述去重条目中的所述存储数据的加密密钥识别为非驱动密钥(off-drive key)或存储密钥;
响应于将所述加密密钥识别为所述非驱动密钥:
不对所述存储数据进行解密;
响应于将所述加密密钥识别为所述存储密钥:
由所述处理器利用所述存储密钥并根据所述加密类型对所述存储数据进行解密;以及
响应于将所述存储数据识别为是未被压缩的:
由所述处理器将所述标准数据识别为解密后的存储数据。
9.根据权利要求8所述的方法,其中,重新格式化所述存储数据还包括:
响应于将所述存储数据识别为是被压缩的:
由所述处理器识别所述去重条目中的所述存储数据的压缩类型;
响应于将所述存储数据识别为是被加密的:
由所述处理器根据所述压缩类型对所述解密后的存储数据进行解压缩,以及
响应于将所述存储数据识别为是未被加密的:
对所述存储数据进行解压缩,以生成所述标准数据。
10.根据权利要求7所述的方法,其中,由所述处理器将所述标准数据处理成可存储数据以便存储包括:
由所述处理器基于服务质量QoS参数、所述存储设备的工作负载以及用户需求中的一个或多个来确定所述标准数据是否是可压缩的;
由所述处理器基于服务质量QoS参数、所述存储设备的工作负载以及用户需求中的一个或多个来确定所述标准数据是否是可加密的;
响应于确定所述标准数据是可压缩的:
由所述处理器利用满足所述QoS参数的算法来压缩所述标准数据以生成处理后的数据;
响应于确定所述标准数据是不可压缩的:
由所述处理器将所述处理后的数据识别为所述标准数据;以及
响应于确定所述标准数据是不可加密的:
由所述处理器将所述处理后的数据存储在所述非易失性存储器中的所述第二物理地址处。
11.根据权利要求10所述的方法,其中,处理所述标准数据还包括:
响应于确定所述标准数据是可加密的:
由所述处理器利用密钥并通过满足所述QoS参数的算法来对所述处理后的数据进行加密;以及
由所述处理器将所述加密后的数据存储在所述非易失性存储器中的所述第二物理地址处。
12.根据权利要求11所述的方法,其中,所述密钥包括非驱动密钥或存储密钥。
13.根据权利要求7所述的方法,其中,更新所述去重映射包括:
响应于识别出所述去重映射中的与所述散列值相关联的所述去重条目:
由所述处理器利用所述第二物理地址以及加密密钥、加密类型和压缩类型中的一个或多个来更新所述去重映射中的所述去重条目;以及
响应于未识别出所述去重映射中的与所述散列值相关联的所述去重条目:
由所述处理器在所述去重映射中添加去重条目,所述去重条目包括所述第二物理地址以及用于将所述存储数据变换为所述标准数据的加密密钥、加密类型和压缩类型中的一个或多个。
14.根据权利要求1所述的方法,其中,所述去重映射和所述对象映射被维护在所述存储设备的所述易失性存储器或所述非易失性存储器中。
15.一种用于从包括处理器、易失性存储器和非易失性存储器在内的存储设备读取数据的方法,所述存储设备与主机通信,所述方法包括:
由所述处理器接收用于从所述非易失性存储器读取主机数据的命令,所述主机数据与主机标识相关联;
由所述处理器识别在对象映射中的与所述主机标识相关联的对象条目,所述对象条目包括所述主机标识、散列值、以及指示如何将所述主机数据转换为标准数据的第一记录;
由所述处理器识别所述对象条目的所述散列值;
由所述处理器识别在去重映射中的与所述散列值相关联的去重条目,所述去重条目包括所述散列值以及指示如何将所述标准数据转换为与所述主机数据相关联的存储数据的第二记录;
由所述处理器基于所述去重条目中的物理地址来从所述非易失性存储器中取回所述存储数据;
由所述处理器基于所述去重条目识别所述存储数据是否被加密;
由所述处理器基于所述去重条目识别所述存储数据是否被压缩;
由所述处理器基于所述对象条目识别所述主机数据是否被压缩;以及
由所述处理器基于所述存储数据是否被加密、所述存储数据是否被压缩以及所述主机数据是否被压缩,来根据所述存储数据生成所述主机数据,
其中,生成所述主机数据包括:响应于将所述存储数据识别为被压缩:
由所述处理器识别所述去重条目中的第一压缩类型;
由所述处理器识别所述对象条目中的第二压缩类型;
由所述处理器确定所述第一压缩类型和所述第二压缩类型是否相同;以及
响应于确定所述第一压缩类型和所述第二压缩类型不相同:
由所述处理器根据所述第一压缩类型对所述存储数据进行解压缩,以生成所述标准数据;以及
由所述处理器根据所述第二压缩类型压缩所述标准数据以生成经压缩的标准数据,所述经压缩的标准数据是主机数据。
16.根据权利要求15所述的方法,其中,生成所述主机数据还包括:
响应于将所述存储数据识别为是被加密的:
由所述处理器识别所述去重条目中的加密类型和加密密钥;
由所述处理器利用存储密钥并根据所述加密类型对与所述散列值相关联的所述存储数据进行解密;以及
响应于将所述存储数据和所述主机数据识别为是未压缩的:
由所述处理器将所述主机数据识别为解密后的存储数据。
17.根据权利要求15所述的方法,其中,生成所述主机数据还包括:
响应于确定所述第一压缩类型和所述第二压缩类型相同:
由所述处理器将所述主机数据识别为所述存储数据。
18.一种用于从包括处理器、易失性存储器和非易失性存储器在内的存储设备删除数据的方法,所述存储设备与主机通信,所述方法包括:
由所述处理器接收用于从所述非易失性存储器删除主机数据的命令,所述主机数据与主机标识相关联;
由所述处理器识别在对象映射中的与所述主机标识相关联的对象条目,所述对象条目包括所述主机标识、散列值、以及指示如何将所述主机数据转换为标准数据的第一记录;
由所述处理器识别所述对象条目的所述散列值,所述散列值是针对与所述主机数据相对应的标准数据计算的,所述标准数据是所述主机数据的解密版本或解压缩版本;
由所述处理器识别在去重映射中的与所述散列值相关联的去重条目,所述去重条目包括所述散列值以及指示如何将所述标准数据转换为与所述主机数据相关联的存储数据的第二记录;
由所述处理器对所述去重条目中的计数进行递减;
由所述处理器确定所述计数是否等于零;以及
由所述处理器基于所述计数删除所述对象条目和所述去重条目中的一个或多个。
19. 根据权利要求18所述的方法,其中,响应于确定所述计数等于零:
由所述处理器从所述去重映射中删除所述去重条目;以及
由所述处理器从所述对象映射中删除所述对象条目;
由所述处理器基于所述去重条目中的物理地址来识别在所述非易失性存储器中的与所述主机数据相关联的所述存储数据;以及
由所述处理器删除所述存储数据,以及
其中,响应于确定所述计数不等于零:
由所述处理器从所述对象映射中删除所述对象条目。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762522423P | 2017-06-20 | 2017-06-20 | |
US62/522,423 | 2017-06-20 | ||
US201762540520P | 2017-08-02 | 2017-08-02 | |
US62/540,520 | 2017-08-02 | ||
US15/789,795 | 2017-10-20 | ||
US15/789,795 US10691340B2 (en) | 2017-06-20 | 2017-10-20 | Deduplication of objects by fundamental data identification |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109101190A CN109101190A (zh) | 2018-12-28 |
CN109101190B true CN109101190B (zh) | 2023-08-15 |
Family
ID=64658002
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810554269.2A Active CN109101190B (zh) | 2017-06-20 | 2018-05-31 | 利用基础数据识别的对象去重 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10691340B2 (zh) |
KR (2) | KR20180138125A (zh) |
CN (1) | CN109101190B (zh) |
Families Citing this family (74)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10831935B2 (en) * | 2017-08-31 | 2020-11-10 | Pure Storage, Inc. | Encryption management with host-side data reduction |
US11947489B2 (en) | 2017-09-05 | 2024-04-02 | Robin Systems, Inc. | Creating snapshots of a storage volume in a distributed storage system |
US10452267B2 (en) | 2017-09-13 | 2019-10-22 | Robin Systems, Inc. | Storage scheme for a distributed storage system |
US10579276B2 (en) | 2017-09-13 | 2020-03-03 | Robin Systems, Inc. | Storage scheme for a distributed storage system |
US10430105B2 (en) | 2017-09-13 | 2019-10-01 | Robin Systems, Inc. | Storage scheme for a distributed storage system |
US10423344B2 (en) | 2017-09-19 | 2019-09-24 | Robin Systems, Inc. | Storage scheme for a distributed storage system |
US10534549B2 (en) | 2017-09-19 | 2020-01-14 | Robin Systems, Inc. | Maintaining consistency among copies of a logical storage volume in a distributed storage system |
US10645158B1 (en) * | 2017-10-10 | 2020-05-05 | EMC IP Holding Company LLC | Host data replication using deduplication and binary search trees |
US10846001B2 (en) | 2017-11-08 | 2020-11-24 | Robin Systems, Inc. | Allocating storage requirements in a distributed storage system |
US10782887B2 (en) | 2017-11-08 | 2020-09-22 | Robin Systems, Inc. | Window-based prority tagging of IOPs in a distributed storage system |
US20190155919A1 (en) * | 2017-11-20 | 2019-05-23 | International Business Machines Corporation | Performing deduplication on cloud-resident encrypted data |
US10630480B2 (en) * | 2017-11-29 | 2020-04-21 | Oracle International Corporation | Trusted client security factor-based authorizations at a server |
US10452308B2 (en) * | 2017-12-19 | 2019-10-22 | Robin Systems, Inc. | Encoding tags for metadata entries in a storage system |
US10430110B2 (en) | 2017-12-19 | 2019-10-01 | Robin Systems, Inc. | Implementing a hybrid storage node in a distributed storage system |
US10430292B2 (en) | 2017-12-19 | 2019-10-01 | Robin Systems, Inc. | Snapshot deletion in a distributed storage system |
US11392363B2 (en) | 2018-01-11 | 2022-07-19 | Robin Systems, Inc. | Implementing application entrypoints with containers of a bundled application |
US11582168B2 (en) | 2018-01-11 | 2023-02-14 | Robin Systems, Inc. | Fenced clone applications |
US11748203B2 (en) | 2018-01-11 | 2023-09-05 | Robin Systems, Inc. | Multi-role application orchestration in a distributed storage system |
US10628235B2 (en) | 2018-01-11 | 2020-04-21 | Robin Systems, Inc. | Accessing log files of a distributed computing system using a simulated file system |
US11099937B2 (en) | 2018-01-11 | 2021-08-24 | Robin Systems, Inc. | Implementing clone snapshots in a distributed storage system |
US10642697B2 (en) | 2018-01-11 | 2020-05-05 | Robin Systems, Inc. | Implementing containers for a stateful application in a distributed computing system |
US10896102B2 (en) | 2018-01-11 | 2021-01-19 | Robin Systems, Inc. | Implementing secure communication in a distributed computing system |
US10845997B2 (en) | 2018-01-12 | 2020-11-24 | Robin Systems, Inc. | Job manager for deploying a bundled application |
US10579364B2 (en) | 2018-01-12 | 2020-03-03 | Robin Systems, Inc. | Upgrading bundled applications in a distributed computing system |
US10642694B2 (en) | 2018-01-12 | 2020-05-05 | Robin Systems, Inc. | Monitoring containers in a distributed computing system |
US10846137B2 (en) | 2018-01-12 | 2020-11-24 | Robin Systems, Inc. | Dynamic adjustment of application resources in a distributed computing system |
CN113348455A (zh) * | 2018-06-29 | 2021-09-03 | 泽诺塔控股股份公司 | 利用数据控制签名提供数据的认证、不可否认性、受管控的访问和孪生分辨的装置和方法 |
US20220109455A1 (en) * | 2018-06-29 | 2022-04-07 | Zenotta Holding Ag | Apparatus and method for providing authentication, non-repudiation, governed access and twin resolution for data utilizing a data control signature |
US11023328B2 (en) | 2018-07-30 | 2021-06-01 | Robin Systems, Inc. | Redo log for append only storage scheme |
US10976938B2 (en) | 2018-07-30 | 2021-04-13 | Robin Systems, Inc. | Block map cache |
US10599622B2 (en) | 2018-07-31 | 2020-03-24 | Robin Systems, Inc. | Implementing storage volumes over multiple tiers |
US10817380B2 (en) | 2018-07-31 | 2020-10-27 | Robin Systems, Inc. | Implementing affinity and anti-affinity constraints in a bundled application |
US11036439B2 (en) | 2018-10-22 | 2021-06-15 | Robin Systems, Inc. | Automated management of bundled applications |
US10908848B2 (en) | 2018-10-22 | 2021-02-02 | Robin Systems, Inc. | Automated management of bundled applications |
US10620871B1 (en) | 2018-11-15 | 2020-04-14 | Robin Systems, Inc. | Storage scheme for a distributed storage system |
US11133940B2 (en) * | 2018-12-04 | 2021-09-28 | Journey.ai | Securing attestation using a zero-knowledge data management network |
US11347428B2 (en) * | 2019-01-16 | 2022-05-31 | EMC IP Holding Company LLC | Solid state tier optimization using a content addressable caching layer |
US10783079B2 (en) * | 2019-01-28 | 2020-09-22 | EMC IP Holding Company LLC | User data recovery in a content aware storage system |
US10951550B2 (en) | 2019-01-29 | 2021-03-16 | EMC IP Holding Company LLC | Logging infrastructure with time sustain requirements |
US11086725B2 (en) | 2019-03-25 | 2021-08-10 | Robin Systems, Inc. | Orchestration of heterogeneous multi-role applications |
US11221778B1 (en) * | 2019-04-02 | 2022-01-11 | Pure Storage, Inc. | Preparing data for deduplication |
US11256434B2 (en) * | 2019-04-17 | 2022-02-22 | Robin Systems, Inc. | Data de-duplication |
US10970172B2 (en) | 2019-04-29 | 2021-04-06 | EMC IP Holding Company LLC | Method to recover metadata in a content aware storage system |
US10659076B1 (en) | 2019-04-30 | 2020-05-19 | EMC IP Holding Company LLC | Reducing the amount of data stored in a sequence of data blocks by combining deduplication and compression |
US10831387B1 (en) | 2019-05-02 | 2020-11-10 | Robin Systems, Inc. | Snapshot reservations in a distributed storage system |
US10877684B2 (en) | 2019-05-15 | 2020-12-29 | Robin Systems, Inc. | Changing a distributed storage volume from non-replicated to replicated |
US11226847B2 (en) | 2019-08-29 | 2022-01-18 | Robin Systems, Inc. | Implementing an application manifest in a node-specific manner using an intent-based orchestrator |
US11520650B2 (en) | 2019-09-05 | 2022-12-06 | Robin Systems, Inc. | Performing root cause analysis in a multi-role application |
US11249851B2 (en) | 2019-09-05 | 2022-02-15 | Robin Systems, Inc. | Creating snapshots of a storage volume in a distributed storage system |
US11347684B2 (en) | 2019-10-04 | 2022-05-31 | Robin Systems, Inc. | Rolling back KUBERNETES applications including custom resources |
US11113158B2 (en) | 2019-10-04 | 2021-09-07 | Robin Systems, Inc. | Rolling back kubernetes applications |
US11403233B2 (en) * | 2019-10-15 | 2022-08-02 | EMC IP Holding Company LLC | Determining capacity in a global deduplication system |
US11403188B2 (en) | 2019-12-04 | 2022-08-02 | Robin Systems, Inc. | Operation-level consistency points and rollback |
US11288212B2 (en) * | 2019-12-18 | 2022-03-29 | Samsung Electronics Co., Ltd. | System, apparatus, and method for secure deduplication |
US11483137B2 (en) | 2020-01-22 | 2022-10-25 | Micron Technology, Inc. | Dynamic command extension for a memory sub-system |
US11586734B2 (en) * | 2020-02-28 | 2023-02-21 | Kioxia Corporation | Systems and methods for protecting SSDs against threats |
US11573929B2 (en) | 2020-04-09 | 2023-02-07 | Kyndryl, Inc. | Deduplication of encrypted data using multiple keys |
US11108638B1 (en) | 2020-06-08 | 2021-08-31 | Robin Systems, Inc. | Health monitoring of automatically deployed and managed network pipelines |
US11528186B2 (en) | 2020-06-16 | 2022-12-13 | Robin Systems, Inc. | Automated initialization of bare metal servers |
CN111984554B (zh) * | 2020-07-31 | 2023-03-28 | 新华三技术有限公司成都分公司 | 一种数据处理方法及装置 |
JP2022030661A (ja) * | 2020-08-07 | 2022-02-18 | キオクシア株式会社 | メモリシステム、制御方法、および情報処理システム |
US11740980B2 (en) | 2020-09-22 | 2023-08-29 | Robin Systems, Inc. | Managing snapshot metadata following backup |
US11743188B2 (en) | 2020-10-01 | 2023-08-29 | Robin Systems, Inc. | Check-in monitoring for workflows |
US11456914B2 (en) | 2020-10-07 | 2022-09-27 | Robin Systems, Inc. | Implementing affinity and anti-affinity with KUBERNETES |
US11271895B1 (en) | 2020-10-07 | 2022-03-08 | Robin Systems, Inc. | Implementing advanced networking capabilities using helm charts |
US11750451B2 (en) | 2020-11-04 | 2023-09-05 | Robin Systems, Inc. | Batch manager for complex workflows |
GB2601183B (en) * | 2020-11-23 | 2022-11-16 | Advanced Risc Mach Ltd | Data processing systems |
KR20220077208A (ko) | 2020-11-30 | 2022-06-09 | 삼성전자주식회사 | 데이터 중복 제거 기능을 갖는 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 서버의 동작 방법 |
US11720270B2 (en) * | 2020-12-02 | 2023-08-08 | EMC IP Holding Company LLC | Client-side compression |
US11556361B2 (en) | 2020-12-09 | 2023-01-17 | Robin Systems, Inc. | Monitoring and managing of complex multi-role applications |
CN112527787B (zh) * | 2020-12-18 | 2024-03-15 | 深圳市洞见智慧科技有限公司 | 一种安全可靠的多方数据去重***、方法及装置 |
JP2022127418A (ja) * | 2021-02-19 | 2022-08-31 | トヨタ自動車株式会社 | 制御装置、方法、プログラム、及び車両 |
KR102593034B1 (ko) * | 2021-07-02 | 2023-10-23 | 고려대학교 산학협력단 | 다차원 데이터베이스를 위한 스토리지내 데이터 재구성 가속기 |
US20240028232A1 (en) * | 2022-07-21 | 2024-01-25 | Dell Products L.P. | Efficient method for data invulnerability architecture (dia) and data corruption detection for deduped cloud objects |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010144123A1 (en) * | 2009-06-09 | 2010-12-16 | Emc Corporation | Segment deduplication system with encryption segments |
CN102598019A (zh) * | 2009-09-09 | 2012-07-18 | 弗森-艾奥公司 | 用于分配存储的设备、***和方法 |
CN103392207A (zh) * | 2011-10-05 | 2013-11-13 | Lsi公司 | 非易失性存储的自身日志记录和层级一致性 |
US9225691B1 (en) * | 2013-09-27 | 2015-12-29 | Emc Corporation | Deduplication of encrypted dataset on datadomain backup appliance |
CN105550600A (zh) * | 2013-03-13 | 2016-05-04 | 英特尔公司 | 针对经加密的数据的基于社区的重复删除 |
CN106575271A (zh) * | 2014-06-23 | 2017-04-19 | 谷歌公司 | 管理存储设备 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7478096B2 (en) * | 2003-02-26 | 2009-01-13 | Burnside Acquisition, Llc | History preservation in a computer storage system |
US8199911B1 (en) * | 2008-03-31 | 2012-06-12 | Symantec Operating Corporation | Secure encryption algorithm for data deduplication on untrusted storage |
US9395929B2 (en) * | 2008-04-25 | 2016-07-19 | Netapp, Inc. | Network storage server with integrated encryption, compression and deduplication capability |
US8117464B1 (en) * | 2008-04-30 | 2012-02-14 | Netapp, Inc. | Sub-volume level security for deduplicated data |
US8762348B2 (en) * | 2009-06-09 | 2014-06-24 | Emc Corporation | Segment deduplication system with compression of segments |
US8731190B2 (en) * | 2009-06-09 | 2014-05-20 | Emc Corporation | Segment deduplication system with encryption and compression of segments |
US20120216052A1 (en) * | 2011-01-11 | 2012-08-23 | Safenet, Inc. | Efficient volume encryption |
KR20130064518A (ko) * | 2011-12-08 | 2013-06-18 | 삼성전자주식회사 | 저장 장치 및 그것의 동작 방법 |
US20140025909A1 (en) | 2012-07-10 | 2014-01-23 | Storone Ltd. | Large scale storage system |
US9547774B2 (en) * | 2012-07-18 | 2017-01-17 | Nexenta Systems, Inc. | System and method for distributed deduplication of encrypted chunks |
US9495552B2 (en) * | 2012-12-31 | 2016-11-15 | Microsoft Technology Licensing, Llc | Integrated data deduplication and encryption |
CN103902632B (zh) | 2012-12-31 | 2018-01-02 | 华为技术有限公司 | 键值存储***中构建文件***的方法、装置及电子设备 |
KR20140141348A (ko) | 2013-05-31 | 2014-12-10 | 삼성전자주식회사 | 호스트 장치와 저장 장치가 연계하여 중복 제거 프로세스를 수행하는 방법 및 스토리지 시스템 |
US10579602B2 (en) | 2013-10-07 | 2020-03-03 | Oracle International Corporation | Attribute redundancy removal |
KR102187127B1 (ko) | 2013-12-03 | 2020-12-04 | 삼성전자주식회사 | 데이터 연관정보를 이용한 중복제거 방법 및 시스템 |
US9438426B2 (en) | 2014-10-03 | 2016-09-06 | Seagate Technology Llc | Key-value data storage device with hybrid architecture |
US10013169B2 (en) * | 2014-12-19 | 2018-07-03 | International Business Machines Corporation | Cooperative data deduplication in a solid state storage array |
US9626121B2 (en) * | 2014-12-19 | 2017-04-18 | International Business Machines Corporation | De-duplication as part of other routinely performed processes |
US9552384B2 (en) * | 2015-06-19 | 2017-01-24 | HGST Netherlands B.V. | Apparatus and method for single pass entropy detection on data transfer |
KR101790757B1 (ko) * | 2015-10-27 | 2017-10-27 | 순천향대학교 산학협력단 | 암호데이터를 저장하는 클라우드 시스템 및 그 방법 |
US20170123676A1 (en) | 2015-11-04 | 2017-05-04 | HGST Netherlands B.V. | Reference Block Aggregating into a Reference Set for Deduplication in Memory Management |
KR101667757B1 (ko) | 2015-11-04 | 2016-10-19 | 한림대학교 산학협력단 | 에너지 효율화를 고려한 파일 동기화 시스템 및 방법 |
US9690512B2 (en) | 2015-11-23 | 2017-06-27 | Samsung Electronics Co., Ltd. | Method of similarity testing by syndromes and apparatus therefore |
US10169365B2 (en) * | 2016-03-02 | 2019-01-01 | Hewlett Packard Enterprise Development Lp | Multiple deduplication domains in network storage system |
US9773836B1 (en) * | 2016-11-04 | 2017-09-26 | Dpix, Llc | Method and functional architecture for inline repair of defective lithographically masked layers |
-
2017
- 2017-10-20 US US15/789,795 patent/US10691340B2/en active Active
-
2018
- 2018-04-27 KR KR1020180049146A patent/KR20180138125A/ko active Application Filing
- 2018-05-31 CN CN201810554269.2A patent/CN109101190B/zh active Active
-
2022
- 2022-04-11 KR KR1020220044520A patent/KR102668962B1/ko active IP Right Grant
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010144123A1 (en) * | 2009-06-09 | 2010-12-16 | Emc Corporation | Segment deduplication system with encryption segments |
CN102598019A (zh) * | 2009-09-09 | 2012-07-18 | 弗森-艾奥公司 | 用于分配存储的设备、***和方法 |
CN103392207A (zh) * | 2011-10-05 | 2013-11-13 | Lsi公司 | 非易失性存储的自身日志记录和层级一致性 |
CN105550600A (zh) * | 2013-03-13 | 2016-05-04 | 英特尔公司 | 针对经加密的数据的基于社区的重复删除 |
US9225691B1 (en) * | 2013-09-27 | 2015-12-29 | Emc Corporation | Deduplication of encrypted dataset on datadomain backup appliance |
CN106575271A (zh) * | 2014-06-23 | 2017-04-19 | 谷歌公司 | 管理存储设备 |
Non-Patent Citations (1)
Title |
---|
李美云 ; 李剑 ; 黄超 ; .基于同态加密的可信云存储平台.信息网络安全.2012,第35-40页. * |
Also Published As
Publication number | Publication date |
---|---|
US10691340B2 (en) | 2020-06-23 |
KR102668962B1 (ko) | 2024-05-27 |
KR20220047953A (ko) | 2022-04-19 |
KR20180138125A (ko) | 2018-12-28 |
US20180364917A1 (en) | 2018-12-20 |
CN109101190A (zh) | 2018-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109101190B (zh) | 利用基础数据识别的对象去重 | |
US10642522B2 (en) | Method and system for in-line deduplication in a storage drive based on a non-collision hash | |
US10657270B2 (en) | Systems and methods for cryptographic-chain-based group membership content sharing | |
US11558174B2 (en) | Data storage method, device, related equipment and cloud system for hybrid cloud | |
JP7048411B2 (ja) | メモリシステムおよび制御方法 | |
US9436723B2 (en) | Segment deduplication system with compression of segments | |
US8300823B2 (en) | Encryption and compression of data for storage | |
TWI544333B (zh) | 用於備份應用程式的儲存器結構之方法、電腦儲存媒體及系統 | |
KR20140128403A (ko) | 암호화에 의해 데이터 중복제거 시스템에서 리던던시를 보존하는 기술 | |
US20120173778A1 (en) | Dynamic compression of an i/o data block | |
US9639708B2 (en) | Methods and systems of encrypting file system directories | |
JP6807395B2 (ja) | プロセッサ・グリッド内の分散データ重複排除 | |
WO2019043717A1 (en) | SECURE ACCESS CONTROL IN A STORAGE SYSTEM | |
WO2014117729A9 (en) | Scalable data deduplication | |
JP5444728B2 (ja) | ストレージシステム、ストレージシステムにおけるデータ書込方法及びデータ書込プログラム | |
US20220100718A1 (en) | Systems, methods and devices for eliminating duplicates and value redundancy in computer memories | |
CN114174978B (zh) | 密钥可压缩加密的方法和*** | |
US9442975B2 (en) | Systems and methods for processing data stored in data storage devices | |
KR102057113B1 (ko) | 클라우드 스토리지 암호화 시스템 | |
US20240154785A1 (en) | Data management method and apparatus using homomorphic encryption lookup table | |
JP6452595B2 (ja) | ファイルシステム及びプログラム | |
JP2023079696A (ja) | 情報処理装置、プログラム及び情報処理システム | |
US9086999B2 (en) | Data encryption management | |
JP2019060920A (ja) | 情報処理装置及び情報処理プログラム |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |