KR20140128403A - 암호화에 의해 데이터 중복제거 시스템에서 리던던시를 보존하는 기술 - Google Patents
암호화에 의해 데이터 중복제거 시스템에서 리던던시를 보존하는 기술 Download PDFInfo
- Publication number
- KR20140128403A KR20140128403A KR20147024578A KR20147024578A KR20140128403A KR 20140128403 A KR20140128403 A KR 20140128403A KR 20147024578 A KR20147024578 A KR 20147024578A KR 20147024578 A KR20147024578 A KR 20147024578A KR 20140128403 A KR20140128403 A KR 20140128403A
- Authority
- KR
- South Korea
- Prior art keywords
- selected data
- data segment
- data
- computer program
- encrypted
- Prior art date
Links
Images
Classifications
-
- 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/604—Tools and structures for managing or administering access control systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24556—Aggregation; Duplicate elimination
-
- 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/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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Automation & Control Theory (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computational Linguistics (AREA)
- Storage Device Security (AREA)
Abstract
컴퓨팅 환경 내 데이터 중복제거 시스템에서 데이터 리던던시를 보존하기 위한 여러 가지 실시예들이 제공된다. 일 실시예에서, 이러한 보존 방법이 개시된다. 데이터 중복제거 시스템을 통해 라이트될 선택된 데이터 세그먼트가 암호화되어, 상기 선택된 데이터 세그먼트가 중복제거 동작을 받지 않도록 한다. 다른 시스템들 및 컴퓨터 프로그램 제품 실시예가 개시되며 그것과 관련된 이점들을 제공한다.
Description
본 발명은 일반적으로 컴퓨터들과 관련되고, 더 구체적으로는 데이터 중복제거 시스템들(data deduplication systems)이 편입될 수 있는 컴퓨팅 환경들(computing environments)에서 리던던시(redundancy) 및 다른 데이터 보안 특징을 보존하기 위한 방법, 시스템, 및 컴퓨터 프로그램 제품과 관련된다.
컴퓨터들 및 컴퓨터 시스템들은 오늘날의 사회에서 여러 가지 세팅들(settings)에서 발견될 수 있다. 컴퓨팅 환경들 및 네트워크들은 가정에서, 직장에서, 학교에서, 정부에서, 및 다른 세팅들에서 발견될 수 있다. 컴퓨팅 환경들은 점점 더, 많은 경우 사용자에게 제공되는 로컬 인터페이스에서 떨어져 있는 하나 또는 그 이상의 스토리지 환경들(storage environments)에서 데이터를 저장한다.
이들 컴퓨팅 스토리지 환경들은, 대규모의 데이터를 저장, 검색(retrieve), 및 업데이트하기 위해 - 그런 다음 그 데이터를 요청하거나 전송하는 호스트 컴퓨터로 제공될 수 있음 - , 종종 협력하여 작동하는, 디스크 드라이브들과 같은 많은 스토리지 디바이스들을 사용할 수 있다. 어떤 경우, 다수의 데이터 스토리지 서브시스템들은 단일 데이터 스토리지 시스템으로 집합적으로 관리된다. 이들 서브시스템들은, 몇 대의 처리 장치들 또는 처리 장치들의 클러스터들을 결합하는 호스트 "시스플렉스(sysplex)"(시스템 콤플렉스) 구성(configurations)에 의해 관리될 수 있다. 이와 같이, 흔히 여러 가지 유형의 스토리지 디바이스들을 포함하는 멀티티어(multi-tiered)/멀티(multi)-시스템 컴퓨팅 환경들은, 대량의 데이터를 편성(organize)하고 처리(process) 하는데 사용될 수 있다.
많은 멀티티어/멀티-시스템 컴퓨팅 환경들은 스토리지 디바이스들에 걸쳐 중복된(duplicated) 스토리지의 양을 감소시킴으로써 스토리지 성능(performance)을 향상시키기 위해 데이터 중복제거(deduplication) 기술들을 구현한다. 데이터 중복제거 시스템들은 데이터를 저장하기 위해 요구되는 물리적 스토리지의 총량을 감소시키는 것을 돕기 때문에, 점점 더 이용된다. 이러한 감소는 중복 데이터가 여러 번 저장되지 않도록 보장함으로써 달성될 수 있다. 그 대신에, 예를 들어, 만약 데이터 청크(a chunk of data)가 이미 저장된 데이터 청크와 매치된다면, 그 새로운 데이터 청크를 위해 새로운 물리적 스토리지 공간을 할당하지 않고, 오리지널 데이터에 대한 포인터(pointer)가 가상 스토리지 맵(virtual storage map)에 저장된다.
그러나, 어떤 상황에서, 중복제거 행위는, 호스트된 어플리케이션(hosted application)의 리던던시 요건들, 또는 예를 들어, 스토리지 방침(storage policy), 또는 다른 요건들에 반할 수 있다. 리던던시 요건들을 갖는 데이터가 보호되는 메커니즘에 대한 필요성이 있지만, 그러한 요건들을 갖지 않는 남아 있는 데이터에 대해 중복제거가 일어날 수 있도록 함으로써, 중복제거 시스템들의 이득은 줄어들지 않는다.
전술한 관점에서, 데이터 중복제거 시스템들에서 데이터 리던던시를 보존하기 위한 여러 가지 실시예들이 개시된다. 단지 예로서 제시된 일 실시예에서, 이러한 보존을 위한 방법이 개시된다. 데이터 중복제거 시스템을 통해 라이트(write)될 선택된 데이터 세그먼트는 암호화(encrypt)되어, 선택된 데이터 세그먼트가 중복제거 동작(deduplication operation)을 받지 않도록 한다.
전술한 예시적인 실시예에 추가로, 여러 가지 시스템 및 컴퓨터 프로그램 실시예들이 제공되고 그와 관련된 이점들을 제공한다.
본 발명의 이점들이 쉽게 이해되도록 하기 위해, 위에서 간략히 기술된 발명에 관한 더 구체적인 설명은, 첨부된 도면들에 도시된 특정 실시예들을 참조하여 이뤄질 것이다. 이들 도면들은 단지 발명의 전형적인 실시예들만을 도시하기 위한 것이고, 따라서 발명을 한정하려고 의도되지 않았다는 것이 이해되어야 할 것이고, 발명은 첨부된 도면들의 사용을 통해 추가적인 특이성 및 세부사항과 함께 기술되고 설명될 것이다.
도 1은 본 발명의 측면들을 구현할 수 있는 예시적인 컴퓨팅 환경을 도시하는 블록도이고;
도 2는 또한 본 발명의 측면들이 구현될 수 있는 데이터 스토리지 시스템의 하드웨어 구조를 보여주는 블록도이고;
도 3은 본 발명의 측면들이 구현될 수 있는 예시적인 데이터 세그먼트의 블록도이고;
도 4a는 암호화된 라이트 데이터를 획득하기 위해 암호화 모듈을 통해 데이터를 라이트하는 예시적인 프로세스의 블록도이고;
도 4b는 암호화된 라이트 데이터를 데이터 중복제거 엔진 및 캐시를 통해 물리적 스토리지에 라이트하는 예시적인 프로세스의 관련 블록도이고;
도 5는 본 발명에 따른 데이터 중복제거 시스템들에서 리던던시를 보장하기 위한 예시적인 방법이고;
도 6은 본 발명의 측면들이 구현될 수 있는, 데이터를 처리하기 위한 예시적인 방법이며;
도 7은 데이터를 처리하기 위한 추가 예시적인 방법으로서, 여기에도 또한 본 발명의 측면들이 구현될 수 있다.
도 1은 본 발명의 측면들을 구현할 수 있는 예시적인 컴퓨팅 환경을 도시하는 블록도이고;
도 2는 또한 본 발명의 측면들이 구현될 수 있는 데이터 스토리지 시스템의 하드웨어 구조를 보여주는 블록도이고;
도 3은 본 발명의 측면들이 구현될 수 있는 예시적인 데이터 세그먼트의 블록도이고;
도 4a는 암호화된 라이트 데이터를 획득하기 위해 암호화 모듈을 통해 데이터를 라이트하는 예시적인 프로세스의 블록도이고;
도 4b는 암호화된 라이트 데이터를 데이터 중복제거 엔진 및 캐시를 통해 물리적 스토리지에 라이트하는 예시적인 프로세스의 관련 블록도이고;
도 5는 본 발명에 따른 데이터 중복제거 시스템들에서 리던던시를 보장하기 위한 예시적인 방법이고;
도 6은 본 발명의 측면들이 구현될 수 있는, 데이터를 처리하기 위한 예시적인 방법이며;
도 7은 데이터를 처리하기 위한 추가 예시적인 방법으로서, 여기에도 또한 본 발명의 측면들이 구현될 수 있다.
스토리지 컨트롤러들에서 데이터 중복제거(data deduplication)는 일반적으로 어플리케이션의 "이면에서(behind the scene)" 작업이 이루어지며, 그래서 중복제거 동작들(deduplication operations)이 어플리케이션의 요구에 반하여 수행될 때, 때로는 어플리케이션의 이익과 반대로 동작할 수 있다. 만약 어플리케이션이 동일한 데이터의 다수의 사본들을 라이트하고, 그래서 다수의 물리적 사본들을 보유(retain)하려고 하면, 이 상황이 발생할 수 있으나, 그 반면에 중복제거 서브시스템(중복제거 엔진)은 데이터를 저장하면서 이들 매칭되는 사본들을 찾아내어 결국 사본들을 중복제거한다. 이는 여러 위치들에서 다수의 사본들을 찾아낼 것을 기대하고, 그래서 스토리지 서브시스템에 의해 그렇게 했음을 믿게 되는, 어플리케이션에게는 유해할 수 있지만, 실제로는 그 데이터의 단 하나의 사본만이 라이트되었다.
다음의 예를 고려하자. 파일 시스템들은 통상적으로, 리던던시를 보장하기 위해, "수퍼블록(Superblock)"의 다수의 물리적 사본들 또는 파일 시스템을 설명하는 메타데이터의 세그먼트를 블록 기반 스토리지 디바이스 상에, (또는 다른 메타데이터 정보를) 가상의 디스크 상에, 라이트하는 것을 더 선호한다. 수퍼블록의 컨텐츠들은 동일하므로, 데이터 중복제거는 결국 수퍼블록의 단일의 물리적 사본을 보유하는 것이 되고, 다수의 가상의 주소들이 동일한 물리적 블록을 가리키도록 한다. 이러한 상황은 매우 바람직하지 못하다. 왜냐하면 수퍼블록의 어떠한 리던던트 사본들도 없으므로, 수퍼블록의 물리적 사본 상의 하나의 블록의 손실(loss)은 그 파일 시스템을 전체적으로 사용할 수 없도록 할 수 있기 때문이다. 종래에는 데이터 중복제거 시스템들에서의 이러한 문제를 직접적으로 다루는 어떠한 기법(methodologies)도 존재하지 않았다.
이 문제를 다루기 위해 여러 가지 간접적인 기법들이 채용될 수 있다. 일 예에서, 스토리지 풀(storage pool) - 데이터 중복제거 서브시스템은 이 스토리지 풀로부터 물리적 스토리지를 도려냄(carve out) - 이 미러(mirror)될 수 있다(즉, 동일한 데이터의 2 개 또는 3 개의 사본들을 포함한다). 그러므로, 중복제거에도 불구하고 다수의 리던던트 사본들이 생성될 수 있다. 그러나, 이는 다음과 같은 이유들 때문에 어플리케이션에게는 적절하지 않은 보호책이다. 첫째, 어플리케이션은, 예를 들어, 동일한 데이터의 10 개의 사본들을 유지하기를 원할 수 있다. 그러나, 만약 스토리지 풀이 두 방향으로 미러(two-way mirror) 된다면, 그것은 최대 두 개의 사본들만을 보유할 수 있다. 둘째, 데이터 중복제거는 대량의 스토리지 및 다수의 파일 시스템들 전반에 걸쳐 있는 물리적 스토리지 풀들을 도려내므로, 다수의 어플리케이션들 및 파일 시스템들이 동일한 물리적 스토리지 풀을 공유할 가능성이 있다. 그러므로, 데이터의 일부 중요한 사본들(수퍼블록과 같은 것)이 물리적으로 동일 디스크 상에 배치될 가능성이 있다. 중복제거는 동일한 데이터의 다수의 사본들이 다수의 물리적 위치들에 라이트되는 것을 방지할 것이므로, 중요한 데이터의 사본들 수가 감소되고 그것들은 다수의 파일 시스템들에 대해 동일한 물리적 디스크 상에 배치될 수 있다. 이는 치명적인 단일 고장(failures) 위험을 증가시킨다.
기술되는 실시예들은 앞서 논의된 이슈들을 다루기 위한 다수의 메커니즘들을 제공한다. 이들 메커니즘들의 한 가지 목표는, 스토리지 컨트롤러 내(또는 어디에 위치하든지) 중복제거 서브시스템이, 데이터의 사본들의 수를 감소시킴으로써 생기는 이득을 중요한 데이터의 다수의 사본들을 물리적으로 할당하기 위한 어플리케이션 요건들과 견줘보는 것을 보장하는 것이다. 이하에서 설명되는 실시예들에서 기술되는 기법들은 여러 가지 환경들에서 사용될 수 있고 그러한 환경들 특유의 수반되는 이득을 가질 수 있다.
그러한 한 가지 실시예에서, 선택된 데이터 세그먼트(예컨대, 블록)는 소유 어플리케이션(owning application)에 의해 암호화될 수 있고, 그에 따라 그 선택된 데이터가 새로운, 중복되지 않은 데이터(new, unduplicated data)이고 새로운 스토리지 공간에 할당되어야 한다고 생각하도록 데이터 중복제거 시스템을 "속인다(tricking)". 예를 들어, 소유 어플리케이션이 동일한 데이터(identical data)의 다수의 물리적 사본들을 저장해야 하는 데이터 블록들에 대해, 그 어플리케이션은 데이터 블록의 시작(start) 논리적 블록 주소(logical Block Address, LBA)로 (또는 이와 다르게, 복사 번호(copy number)와 같이, 추가 메타데이터 스토리지 공간을 필요로 하지 않을 데이터 블록에 대해 잘 알려진 다른 어떤 키(예컨대, 제1 사본은 키 1로 암호화되고, 제2 사본은 키 2로 암호화됨)), 데이터를 암호화할 수 있다. 상이한 키들로 동일한 사본들을 암호화하는 것은 조사하고 있는 중복제거 엔진의 시각에는 "다른" 사본들로 보이도록 될 것이고, 그래서 그 중복제거 엔진을 포함하고 있는 스토리지 컨트롤러 또는 다른 스토리지 관리 디바이스가 그 블록들을 중복제거하지 않을 것을 보장한다.
위에서 언급된 암호화 기술은, 원하는 특징들을 구현하기 위해 스토리지 컨트롤러(또는, 어떤 스토리지 관리 디바이스)에 있어서 어떤 것도 변경시킬 필요가 없다는 점에서 이점을 갖는다. 상기 소유 어플리케이션은 또한 간단한 기술을 사용함으로써 스토리지 컨트롤러를 "속이거나(trick)" "기만하며(fool)", 추가 오버헤드(extra overhead) 또는 중요한 처리 또는 리소스 할당(예컨대, 추가 메타데이터 스토리지 오버헤드, 그러나 당해 기술 분야에서 통상의 기술을 가진 자라면 알 수 있듯이 추가 리소스들을 보존함)을 발생시키지 않고서 그렇게 한다.
기술된 실시예의 관점에서, 라이트(write)가 암호화되어야 하는지를 어플리케이션이 지시하도록 허용함으로써(그리고 그에 따라 중복제거를 중지(forgo)할 데이터가 어느 것인지를 결정함), 어플리케이션은 그것이 생성하는 데이터와 연관된 스토리지 방침(storage policy)을 구현할 수 있는 융통성을 허용받는다. 이 방법에서, 어플리케이션은, 비록 동일하지만, 선택된 데이터 블록들이 여전히 별개의 물리적 위치들에 위치해야 하는지를 결정함에 있어서 중복제거 시스템보다 더 유리한 입장에 있다. 또한, 스토리지 컨트롤러(또는 다른 스토리지 관리 디바이스)는 중복제거에 의한 데이터 감소라는 자신의 역할, 그리고 동시에, 필요시 중복제거를 배제하기 위해 허용된 충분한 컨트롤을 계속해서 수행한다.
선택된 데이터 청크들을 암호화되는 것으로 지정함으로써, 그에 따라 매우 미세한 단위의 컨트롤(very fine-grained control)이 어플리케이션으로 제공되어, 중복제거 기능의 이점들을 여전히 보유하고 키 데이터에 대한 리던던시를 보유하면서 구현에 있어서의 융통성을 허용한다.
다음의 설명에서, 첨부되는 도면들이 참조되는데, 이것들은 설명의 일부를 이루고, 본 발명의 몇 가지 실시예들을 설명한다. 다른 실시예들이 이용될 수 있고 본 발명의 범위를 벗어나지 않고서 구조적 그리고 동작적 변경들이 이뤄질 수 있다는 것을 이해하여야 할 것이다.
도 1을 참조하면, 본 발명의 측면들이 구현될 수 있는 컴퓨터 시스템의 일 예(10)가 도시되어 있다. 컴퓨터 시스템(10)은 중앙처리장치(CPU)(12)를 포함하며, 이 중앙처리장치(12)는 대규모 스토리지 디바이스(들)(mass storage device(s))(14) 및 메모리 디바이스(16)에 연결되어 있다. 대규모 스토리지 디바이스들(14)은 하드 디스크 드라이브(HDD) 디바이스들을 포함할 수 있으며, 이는 독립 디스크들의 리던던트 어레이(redundant array of independent disks; RAID)로 구성될 수 있다. 더 기술되는 바와 같이 본 발명의 측면들이 구현될 수 있는 데이터 관리 동작들은, 시스템(10) 또는 그 밖의 다른 곳에 위치한 디바이스(들)(14) 상에서 실행될 수 있다. 메모리 디바이스(16)는 전기적으로 소거가능한 프로그램가능 읽기 전용 메모리(electrically erasable programmable read only memory, EEPROM)와 같은 그러한 메모리, 또는 관련 디바이스들의 호스트를 포함할 수 있다.
메모리(16)는 어플리케이션 프로그램(15), 및 어플리케이션 프로그램(17)을 포함하는 것으로 도시되어 있으며, 여기에는 암호화 모듈(21) 뿐만 아니라 파일 시스템(19)이 사용될 준비가 되어 있다. 어플리케이션(15) 및 어플리케이션(17)은, 예컨대 데이터 청크들 또는 데이터 블록들과 같은 그러한 데이터의 세그먼트들을 생성, 삭제, 또는 관리할 수 있는데, 이것들은, 예컨대 대규모 스토리지 디바이스(14)와 같은 그러한 디바이스들에 물리적으로 저장된다. 파일 시스템(19)은, 데이터를 포함하는 디바이스(들) 상에서 이용가능한 공간을 관리할 뿐만 아니라, 그것을 저장, 검색, 및 업데이트하기 위한 절차들(procedures)을 제공함으로써 어플리케이션 프로그램(17)이 종료한 후 보유될 것으로 예상되는 데이터를 조직(organize)하는 수단을 제공한다. 파일 시스템(19)은 효율적인 방식으로 데이터를 조직하고, 디바이스(예컨대, 컴퓨터(10) 및/또는 메모리(16)와 같은 것)의 특유의 특성(specific characteristics)에 맞춰진다. 일 실시예에서, 어플리케이션(17)은 운영체제(OS)(17)일 수 있고, 파일 시스템(19)은 OS(17)와 파일 시스템(19) 간의 밀착 결합(tight coupling)을 유지한다. 당해 기술 분야에서 통상의 기술을 가진 자라면 알 수 있는 바와 같이, 파일 시스템(19)은 데이터 및 메타데이터로의 접근을 제어하기 위한 메커니즘들을 제공할 수 있고, 본 발명의 추가의 어떤 측면들에 대해 필요한 것들과 같은 그러한 데이터 신뢰성(data reliability)을 보장하기 위한 메커니즘을 포함할 수 있다. 파일 시스템(19)은, 다수의 어플리케이션 프로그램들(15, 17)을 위해 거의 동시에 동일한 파일 내 데이터를 업데이트하기 위한 수단을 제공할 수 있다.
암호화 모듈(21)은 본 발명의 목적들을 달성하도록 어플리케이션(15), 어플리케이션(17), 파일 시스템(19), 또는 다른 컴퓨팅 하드웨어 또는 소프트웨어 컴포넌트들과 함께 사용될 수 있다. 일 실시예에서, 예를 들어, 암호화 모듈(21)은, 데이터 청크의 적어도 일부분을 약한 보안 키(weak security key)로 암호화하기 위해(또한 중요한 처리 및/또는 리소스 할당 오버헤드를 발생시키는 것을 회피하기 위해), 중복제거를 하지 않도록 지정된 선택된 데이터 청크들을 처리한다. 당해 기술 분야에서 통상의 기술을 가진 자라면 알 수 있는 바와 같이, 암호화 메커니즘은 달라질 수 있고, 암호화 메커니즘 자체는 특정 구현에 따라 달라질 수 있다. 일 실시예에서, 암호화 메커니즘의 목표는, 가급적 최소의 리소스량 및 오버헤드 할당을 필요로 하면서, 데이터가 "새로운(new)" 데이터라고 중복제거 엔진이 생각하기에 적당한 정도로(just enough) 데이터의 특징을 "변경(change)" 하는 것이다.
기술된 실시예에서, 메모리 디바이스(16) 및 대규모 스토리지 디바이스(14)는 신호-베어링 매체(signal-bearing medium)를 통해 CPU(12)에 연결된다. 또한, CPU(12)는 통신 네트워크(20)에 통신 포트(18)를 통해 연결되는데, 이 통신 네트워크는 부속된 복수의 추가 컴퓨터 시스템들(22 및 24)을 갖는다. 본 발명의 목적들을 달성하고자 여기에 기술된 각각의 동작을 수행 및 실행하기 위해, 컴퓨터 시스템(10)은 하나 또는 그 이상의 프로세서 디바이스들(예, CPU(12))과 컴퓨터 시스템(10)의 각각의 개별 컴포넌트에 대한 추가 메모리 디바이스들(16)을 포함할 수 있다.
도 2는 본 발명에 따른 컴퓨터 시스템에서 데이터 스토리지 시스템의 하드웨어 구조를 보여주는 예시적인 블록도(200)이다. 호스트 컴퓨터들(210, 220, 225)이 보여지는데, 이들 각각은 데이터 스토리지 시스템(200)의 일부로서 데이터 처리를 수행하기 위한 중앙처리장치로 역할을 수행한다. 호스트들(물리적 또는 가상의 디바이스들)(210, 220, 및 225)은, 데이터 스토리지 시스템(200)에서 본 발명의 목적들을 달성하기 위한 하나 또는 그 이상의 새로운 물리적 디바이스들 또는 논리적 디바이스들일 수 있다. 단지 예로 제시된 일 실시예에서, 데이터 스토리지 시스템(200)은 IBM®System StorageTM DS8000TM으로 구현될 수 있다. 네트워크 연결(260)은 파이버 채널 패브릭(fibre channel fabric), 파이버 채널 포인트 투 포인트 링크(fibre channel point to point link), 이더넷 패브릭 또는 점대점 링크를 통한 파이버 채널(fibre channel), FICON 또는 ESCON I/O 인터페이스, 다른 어떤 I/O 인터페이스 유형, 무선 네트워크, 유선 네트워크, LAN, WAN, 이종(heterogeneous), 동종(homogeneous), 공중망(즉, 인터넷), 사설망, 또는 이것들의 어떤 조합일 수 있다. 호스트들(210, 220, 및 225)은, 로컬이거나 하나 또는 그 이상의 위치들 사이에 분산되어 있을 수 있으며, 어떤 유형의 패브릭(또는 패브릭 채널)(도 2에 도시되지 않음), 또는 스토리지 컨트롤러(240)에 대한 네트워크 어댑터(260) - 예컨대, 파이버 채널, FICON, ESCON, 이더넷, 광섬유, 무선, 또는 동축 어댑터들과 같은 것 - 가 구비될 수 있다. 따라서 데이터 스토리지 시스템(200)은 통신하기 위한 적절한 패브릭(도 2에 도시되지 않음) 또는 네트워크 어댑터(260)가 구비된다. 스토리지 컨트롤러(240) 및 스토리지(230)를 포함하는 데이터 스토리지 시스템(200)이 도 2에 도시되어 있다.
여기에 기술된 방법들에 관한 더 명확한 이해를 돕고자, 도 2에서 마이크로프로세서(242), 시스템 메모리(243) 및 비휘발성 스토리지(nonvolatile storage, "NVS")(216)를 포함하는 단일 처리 장치(single processing unit)로서 스토리지 컨트롤러(240)가 도시되어 있는데, 이는 이하에서 더 상세히 기술될 것이다. 몇몇 실시예들에서, 스토리지 컨트롤러(240)는 다수의 처리장치들 - 각각은 그들 자신의 프로세서 콤플렉스(processor complex) 및 시스템 메모리를 가짐 - 로 구성되며, 데이터 스토리지 시스템(200) 내 전용 네트워크에 의해 인터커넥트되어 있다. 스토리지(230)는 예컨대 스토리지 어레이들과 같은 그러한 하나 또는 그 이상의 스토리지 디바이스들을 포함할 수 있는데, 이것들은 스토리지 네트워크에 의해 스토리지 컨트롤러(240)에 연결되어 있다.
몇몇 실시예들에서, 스토리지(230)에 포함되는 디바이스들은 루프 아키텍쳐(loop architecture)로 연결될 수 있다. 스토리지 컨트롤러(240)는 스토리지(230)를 관리하고 스토리지(230)를 향한 라이트 및 리드 요청들의 처리를 용이하게 한다. 스토리지 컨트롤러(240)의 시스템 메모리(243)는, 관리 스토리지(230)와 연관된 기능들을 실행하기 위해 프로세서(242)가 접근할 수 있는 프로그램 명령들 및 데이터를 저장한다. 일 실시예에서, 시스템 메모리(243)는 운영 소프트웨어(operation software)(250)를 포함하거나, 운영 소프트웨어(250)와 연관되거나, 운영 소프트웨어(250)와 통신하며, 그래서 이는 본 발명의 기능을 달성하기 위한 부분으로 구성된다. 도 2에 도시된 바와 같이, 시스템 메모리(243)는 또한, "라이트 데이터" 및 "리드 데이터" - 이것들은 각기 라이트 요청/리드 요청 그리고 그것들의 연관된 데이터를 일컬음 - 를 버퍼링하기 위해, 스토리지(230)를 위한 캐시(245)를 포함하거나, 스토리지(230)를 위한 캐시(245)와 통신할 수 있는데, 이는 여기서 "캐시 메모리"로도 일컬어진다. 일 실시예에서, 캐시(245)는 시스템 메모리(243)의 외부에 있는 디바이스에 할당되지만, 마이크로프로세서(242)에 의해 접근가능하며, 여기에 기술되는 동작들을 수행하는 것뿐만 아니라, 데이터 손실에 대비한 추가 보안을 제공하는 역할을 수행할 수 있다.
몇몇 실시예들에서, 캐시(245)는 휘발성 메모리 및 비휘발성 메모리로 구현되고, 데이터 스토리지 시스템(200)의 성능 향상을 위해 로컬 버스(도 2에 도시되지 않음)를 통해 마이크로프로세서(242)에 결합된다. 데이터 스토리지 컨트롤러에 포함된 NVS(216)는 마이크로프로세서(242)에 의해 접근가능하며, 다른 도면들에 기술된 바와 같이 본 발명의 동작들 및 실행을 위한 추가 지원을 제공하는 역할을 수행한다. NVS(216)는, "지속적인(persistent)" 캐시, 또는 "캐시 메모리"로도 일컬어질 수 있으며 그 안에 저장된 데이터를 보유하기 위해 외부 전력을 이용할 수도 있고 이용하지 않을 수도 있는 비휘발성 메모리로 구현된다. NVS는 본 발명의 목표를 달성하기에 적합한 어떤 목적을 위해 캐시(245) 내에 그리고 캐시(245)와 함께 저장될 수 있다. 몇몇 실시예들에서, 배터리와 같은 백업 전력원(도 2에 도시되지 않음)은 데이터 스토리지 시스템(200)으로의 전원 상실(power loss)의 경우 그 안에 저장된 데이터를 보유하기에 충분한 전력을 NVS(216)에게 공급한다. 어떤 실시예들에서, NVS(216)의 용량은 캐시(245)의 총 용량과 같거나 더 작다.
스토리지(230)는 물리적으로 하나 또는 그 이상의 스토리지 디바이스들 - 예컨대, 스토리지 어레이들 - 로 구성될 수 있다. 스토리지 어레이는 개별 스토리지 디바이스들 - 예컨대, 하드 디스크 - 의 논리적 그룹핑이다. 어떤 실시예들에서, 스토리지(230)는 JBOD(Just a Bunch of Disks) 어레이 또는 RAID(Redundant Array of Independent Disks) 어레이로 구성된다. 물리적 스토리지 어레이들의 집합(collection)은 랭크(rank)를 형성하도록 더 결합될 수 있는데, 이 랭크는 물리적 스토리지를 논리적 구성과 구분한다. 랭크 내 스토리지 공간은 논리적 볼륨들로 할당될 수 있는데, 이 논리적 볼륨들은 라이트/리드 요청에서 특정된 스토리지 위치를 정의한다.
단지 예로서 제시되는 일 실시예에서, 도 2에 도시된 스토리지 시스템은 논리적 볼륨, 또는 간단히 "볼륨"을 포함할 수 있으며, 서로 다른 종류의 할당들을 가질 수 있다. 스토리지(230a, 230b, 및 230n)은 데이터 스토리지 시스템(200)에서 랭크들로 보여지며, 여기서는 랭크(230a, 230b, 및 230n)로 일컬어진다. 랭크들은 데이터 스토리지 시스템(200)에 대해 로컬일 수 있고, 또는 물리적으로 원격 위치에 위치할 수도 있다. 바꿔 말하면, 로컬 스토리지 컨트롤러는 원격 스토리지 컨트롤러와 연결되어 그 원격 위치에서 스토리지를 관리할 수 있다. 랭크(230a)는 하나의 부분 볼륨(partial volume)(232a) 뿐만 아니라, 두 개의 완전한 볼륨들(entire volumes)(234 및 236)로 구성된 것으로 보여진다. 랭크(230b)는 또 다른 부분 볼륨(232b)을 갖는 것으로 보여진다. 그래서 볼륨(232)은 랭크들(230a 및 230b)에 걸쳐서 할당된다. 랭크(230n)는 볼륨(238)에 전부 할당되어 있는 것으로 보여진다. 즉, 랭크(230n)는 볼륨(238)을 위한 완전한 물리적 스토리지를 지칭한다. 위의 예들로부터, 랭크는 하나 또는 그 이상의 부분 및/또는 완전한 볼륨들을 포함하도록 구성될 수 있다는 것을 이해할 수 있을 것이다. 볼륨들 및 랭크들은 소위 "트랙들(tracks)"로 더 나누어질 수 있는데, 트랙들은 스토리지의 픽스된 블록을 나타낸다. 따라서 트랙은 주어진 볼륨과 연관되고 주어진 랭크를 제공받을 수 있다.
스토리지 컨트롤러(240)는 호스트 컴퓨터들(210, 220, 225)에 대해 파이퍼 채널 프로토콜을 컨트롤하기 위한 컨트롤 스위치(241), 모든 스토리지 컨트롤러(240)를 컨트롤하기 위한 마이크로프로세서(242), 스토리지 컨트롤러(240)의 동작을 컨트롤하기 위해 마이크로프로그램(운영 소프트웨어(operation software))(250)를 저장하기 위한 비휘발성 컨트롤 메모리(243), 이후에 기술되는 각각의 테이블 및 컨트롤을 위한 데이터, (버퍼링) 데이터를 임시로 저장하기 위한 캐시(245), 데이터를 리드 및 라이트하기 위해 캐시(245)를 지원하기 위한 버퍼들(244), 스토리지 디바이스들(230)로의 또는 스토리지 디바이스들(230)로부터의 데이터 전송을 컨트롤하기 위한 프로토콜을 컨트롤하기 위한 컨트롤 스위치(241), 및 정보가 세트될 수 있는 압축 동작 모듈(compression operation module)(255) 및 압축 동작 리스트 모듈(compression operation list module)(257)를 포함한다. 다수의 버퍼들(244)은 여기에 기술된 동작들을 돕기 위해 본 발명에 구현될 수 있다.
일 실시예에서, 호스트 컴퓨터들 또는 하나 또는 그 이상의 물리적 또는 가상 디바이스들(210, 220, 225) 및 스토리지 컨트롤러(240)는 인터페이스로서 네트워크 어댑터(이는 파이버 채널일 수 있음)(260)를 통해, 즉, "패브릭(fabric)"으로 일컬어지는 적어도 하나의 스위치를 통해, 연결된다. 일 실시예에서, 도 2에 도시된 시스템의 동작이 설명될 것이다. 마이크로프로세서(242)는 (물리적 또는 가상의)호스트 디바이스(210)로부터의 명령 정보 그리고 (물리적 또는 가상의)호스트 디바이스(210)를 식별하기 위한 정보를 저장하기 위해 메모리(243)를 컨트롤할 수 있다. 컨트롤 스위치(241), 버퍼들(244), 캐시(245), 운영 소프트웨어(250), 마이크로프로세서(242), 메모리(243), NVS(216), 압축 동작 모듈(255) 및 압축 동작 리스트 모듈(257)은 서로 간에 통신할 수 있고, 별개의 또는 하나의 개별 컴포넌트(들)일 수도 있다. 또한, 비록 모든 컴포넌트들은 아니지만, 예를 들어 운영 소프트웨어(250)와 같은 몇몇이 메모리(243)에 포함될 수 있다. 본 발명에 적합한 목적들을 위해, 보여진 디바이스들 내 컴포넌트들 각각은 함께 링크될 수 있고, 서로 간에 통신할 수 있다.
스토리지 컨트롤러(240)는 데이터 중복제거 엔진(255)을 포함하는 것으로 보여지는데, 이 데이터 중복제거 엔진(255)에서 다수의 라이트 데이터(259)가 처리된다. 데이터 중복제거 엔진(255)은 구조적으로 하나의 완전한 모듈일 수도 있고 또는 다른 개별 모듈들과 연계될 수 있고 및/또는 다른 개별 모듈들 내에 편입될 수 있다. 데이터 중복제거 엔진(255)은, 예컨대 마이크로프로세서(242)와 같은 그러한 스토리지 컨트롤러(240)의 다른 컴포넌트들과 함께, 스토리지 컨트롤러(240)를 통해서 스토리지(230)로 패스되는 라이트 데이터(259)에 관한 데이터 중복제거 동작들을 수행하도록 구성된다.
앞서 보여준 바와 같이, 스토리지 컨트롤러(240)는 호스트들(210, 220, 및 225), 또는 유사 디바이스들로부터 라이트 데이터를 받는 캐시(245)(또는 전체적으로 캐시 시스템으로 일컬어질 수 있는 것)를 포함하며, 그런 다음 라이트 데이터는 캐시 메모리(245)에 배치된다. 그런 다음 데이터 중복제거 엔진(255)은 캐시 메모리(245) 내 복제(duplication)를 위해 그 라이트 데이터를 테스트한다. 어플리케이션(도 1의 17)이 중복제거 동작들로부터 보호하기를 원하는 라이트 데이터(259)는 도시된 것과 같은 암호화 키들(257)(암호화된 데이터(257))로 암호화된다. 데이터 중복제거 엔진(255)을 통과한 암호화 키들(257)을 갖는 라이트 데이터(259)의 암호화 키들은, 라이트 데이터(259)가 "새로운" 데이터이고, 그에 따라 중복제거 동작을 받지 않도록(예컨대, 이미 스토리지(230)에 배치된 기존 데이터에 대한 포인터로 대체됨) 데이터 중복제거 엔진(255)에게 지정한다.
일 실시예에서, 어플리케이션(17)/파일 시스템(19)은 주어진 데이터 블록이 물리적 스토리지 상에 여러 번 저장되어야 하는지를 먼저 결정한다. 이는, 예를 들어, 파일 시스템(19) 자체와 연관된 수퍼블록 메타데이터, 또는 다른 관련성 있는 파일 시스템 정보일 수 있다. 그런 다음 어플리케이션(17)은, 라이트(write)가 발행(issue)되기 전에 그 가상 디바이스를 위한 고유의 키로 그들 데이터 블록들을 암호화한다. 다음의 단계에 따라, 어플리케이션은, 암호화된 데이터(257)와 함께, 기본적인 디스크(underlying disk)(디바이스) 드라이버에 대한 라이트 요청을 시작할 수 있고, 비록 암호화되지 않은 블록이 이전에 라이트된 데이터 블록과 동일하더라도, 사실상, 이 데이터 블록이 "새로운" 것이고 중복제거되어서는 아니되도록 지정한다. 암호화는 약한 암호화 키(weak encryption key)로서 그 블록의 LBA를 사용하여 디스크 블록 단위로(on a per-disk-block) 소유 어플리케이션에 의해 수행될 수 있다.
여기서 다시, 그 선택된 암호화 방법(암호화 키를 포함함)은 그 키(key)가 기본적인 스토리지 컨트롤러 또는 스토리지 관리 디바이스로부터 나중에 다시 리드(read)될 때 간단히 추론(deduce)할 수 있도록 선택된다. 암호화 키들의 예들은 다음을 포함할 수 있다. (1) 선택된 데이터 블록의 시작 LBA; (2) 파일에서 데이터 블록의 오프셋; 그리고 당해 기술 분야에서 통상의 기술을 가진 자에게 익숙한 다른 유사한 암호화 메커니즘들. 암호화 키는 약하고 예측가능(predictable)해야 한다(즉, 소유 어플리케이션은, 그 키를 어디에도 저장하지 않고, 특정 메타-블록에 대한 암호화 키가 무엇인지를 알 것이다).
다음의 단계에서, 디스크 드라이버는 차례대로 라이트 명령, 예컨대, 스토리지 컨트롤러(240)에 대한 스몰 컴퓨터 시스템즈 인터페이스(Small Computer Systems Interface, SCSI) 명령과 같은 것을 준비한다. 그 지정되고, 암호화된 데이터 블록을 수신하자마자, 스토리지 컨트롤러(240)는, 데이터 중복제거 엔진(255)을 통해, 당해 기술 분야에서 통상의 기술을 가진 자라면 알 수 있는 바와 같은, 지문 생성, 매칭 등의 중복 제거 단계들을 건너뛰고, 비록 스토리지 컨트롤러(240) 상에 저장되어 있는 동일한 데이터의 더 이른 인스턴스들(earlier instances)이 있더라도, 새로운 물리적 디스크 위치에 그 선택된 데이터 블록을 바로 라이트한다. 이후, 이들 데이터 블록들(어플리케이션에게는 잘 알려진)의 차후의 리드시, 어플리케이션은 그 잘 알려지고 간단한 키(예컨대, 약한 키/암호화 메커니즘)를 사용하여 그 데이터를 복호화(decrypt)한다. 여기에 사용된 암호화 기술들은 데이터 보안에 필수적인 것은 아니므로, 그러한 기술들을 수행하기 위한 오버헤드는 가능한 한 효율적으로 최소화될 수 있다.
바람직한 실시예에서, 암호화 또는 데이터 변환 기능(data transformation function)은, 결과적인 데이터의 크기가 변하지 않도록 선택되어야 한다. 예를 들어, 512 바이트의 데이터가 변환되어야 하는 상황에서, 512 바이트의 결과적인 암호화된 데이터가 생성된다.
일 실시예에서, 소유 어플리케이션은 라이트된 데이터의 다수의 블록들을 하나의 단위로(as a unit) 암호화하도록 선택할 수 있다. 데이터 변환 기능(암호화 기능)은, 각각의 개별 블록을 복호화하면 그 블록에 대해 오리지널 데이터를 리턴하도록 선택되어야 한다. 이와는 다르게, 어플리케이션은 이들 다수의 블록 단위들(muli-block units)을 데이터 청크들(chunks of data)로서 리드하여 그것들을 단위로 하여 복호화해야 한다.
이제 도 3으로 돌아가서, 도시된 실시예들의 여러 가지 측면들이 편입될 수 있는 예시적인 데이터 세그먼트(259)(즉, 블록)의 블록도(300)가 도시된다. 데이터 세그먼트(259)는 약한 암호화 키(302)(예컨대, 현재 사본(present copy)-1,2,3 등과 같은 것)를 포함하는데, 이는 도시된 바와 같이 블록 A의 일부분에 덧붙여진다.
도 4a는 예시적인 흐름에 따라 도시된 본 발명의 여러 가지 기능적 측면들의 블록도(400)를 도시한다. 구체적으로는, 라이트 명령이 스토리지 컨트롤러로 발행(issue)되기 전에, 데이터 중복제거 엔진을 통해 라이트될 것이지만 아직 어떠한 중복제거 동작들로 처리되지 않은 데이터(402)가, 암호화 모듈(도 1의 21)을 먼저 통과하는데, 여기서 그 선택된 데이터에 약한 암호화(weak encryption)가 적용되고, 도시된 바와 같이 암호화된 라이트 데이터(404)를 생성한다.
계속해서 도 4b를 참조하면, 블록도(406)는, 다시 예시적인 흐름으로 도시된 바와 같이, 본 발명의 추가적인 여러 가지 기능적 측면들을 도시한다. 구체적으로는, 암호화된 라이트 데이터(408)는 스토리지(230)(다시 도 2 참조)에 라이트되기 위해 스토리지 컨트롤러로 패스된다. 암호화된 라이트 데이터는 도시된 바와 같이 데이터 중복제거 엔진(255)을 통과하는데, 여기서 암호화된 데이터(259)는, 기존의, 잠재적으로 복제된 데이터에 비해(versus) 새로운 데이터가 될 것으로 생각된다. 이와 같이, 데이터 중복제거 엔진은, 라이트 요청(410)과 함께 암호화된 데이터를, 예컨대, 캐시 시스템(245)과 같은, 스토리지 컨트롤러의 다른 부분들로 패스하고, 그래서 그 암호화된 데이터를 위해 스토리지(230) 내 새로운 공간 - 여기에 그 암호화된 데이터가 최종적으로 라이트됨 - 이 할당된다.
다음으로, 앞에서의 관점에 따라, 도 5는 도시된 실시예들의 측면들이 구현될 수 있는 데이터 중복제거 시스템들을 갖는 스토리지 서브시스템들에서 데이터 리던던시를 보장하기 위한 예시적인 방법(500)이다. 방법(500)이 시작되고(단계 502), 데이터 중복제거 시스템을 통해 라이트될 선택된 데이터 세그먼트를 암호화하여, 그 선택된 데이터 세그먼트가 중복제거 동작을 받지 않도록 한다(단계 504). 그런 다음 방법(500)은 종료된다(단계 506).
다음으로, 도 6에서, 또한 본 발명의 여러 가지 측면들이 구현될 수 있는 데이터 처리를 위한 예시적인 방법(600)이 도시된다. 방법(600)이 시작되고(단계 602), 중복제거를 하지 않기 위해, 소유 어플리케이션에 의해 선택된 데이터 세그먼트와 연관되도록, 소유 어플리케이션에 의해 고유의 암호화 키를 선택한다(단계 604). 그런 다음, 소유 어플리케이션 및/또는 파일 시스템은 고유의 암호화 키로 그 선택된 데이터 세그먼트를 암호화한다(단계 606).
다음의 단계로서, 그 암호화된, 선택된 데이터 세그먼트와 함께, 라이트 요청이 스토리지 컨트롤러로 제공된다(단계 608). 그런 다음, 암호화된 데이터 세그먼트는 중복제거 엔진을 통해 처리되고, 이때, 그 선택된 데이터 세그먼트가 중복제거 엔진에 의해 "새로운" 데이터로 인식/취급되므로, 중복제거 동작은 그 암호화된 데이터에 관해 수행되는 것이 보류된다(단계 610).
단계 612에서, 암호화된 데이터 세그먼트는 새롭게 할당된 물리적 스토리지 위치에 라이트된다. 이후, 암호화된 데이터의 차후의 리드시, 그 암호화된 데이터는 소유 어플리케이션 및/또는 파일 시스템으로 리턴된다(단계 614). 그런 다음, 그 암호화된 데이터 세그먼트는, 연계된(affiliated) 암호화 알고리즘을 사용하여 어플리케이션 및/또는 파일 시스템에 의해 복호화되며(단계 616), 당해 기술 분야에서 통상의 기술을 가진 자라면 알 수 있는 바와 같이, 상기 연계된 알고리즘은 특정 어플리케이션에 따라 달라질 수 있으나, 오버헤드 및 대역폭을 최소화하도록 선택될 수 있다. 그런 다음 방법(600)은 종료된다(단계 618).
다음으로, 도 7은 또한 본 발명의 여러 가지 측면들을 편입시키는, 데이터를 처리하기 위해 관련된 예시적인 방법(700)이다. 방법(700)이 시작되고(단계 702), 라이트될 수반되는 데이터(accompanying data to be written))와 함께 처리하기 위해 스토리지 컨트롤러/데이터 중복제거 엔진에 의해 라이트 요청이 수신된다(단계 704).
단계 706에서, 방법(700)은 수반되는 데이터가 암호화되어 있는지를 질의(query) 한다(단계 706). 만약 암호화되어 있으면, 중복제거 엔진/스토리지 컨트롤러는 데이터 중복제거 동작들을 수행하지 않고(단계 708), 그 암호화된 데이터는 새롭게 할당된 물리적 스토리지 위치에 라이트된다(단계 710). 예시를 위해, "방법"(700)은 그 데이터가 암호화되는지를 질의하는 것으로 언급되는 것에 유의하자. 그러나, 실제로, 데이터 중복제거 시스템은 데이터가 암호화되는지 그렇지 않은지를 이해하지 못하며, 그래서 질의하지 않는다. 앞서 설명된 바와 같이, 암호화에 의해, 데이터 블록은 소유 어플리케이션에 의해 이전에 라이트된 자신의 복제된 사본과 매치되지 않을 것이다. 따라서, 중복제거 시스템은 이것을 "새로운" 데이터 블록으로 취급할 것이고, 그래서 그 블록을 물리적 스토리지에 라이트할 것이다. 단계 706으로 돌아가서, 만약 수반되는 데이터가 암호화되어 있지 않으면, 중복제거 엔진/스토리지 컨트롤러는 그 데이터에 관해 여러 가지 중복제거 동작들을 수행한다(단계 712). 그런 다음 방법(700)은 종료된다(단계 714).
당해 기술 분야에서 통상의 기술을 가진 자라면 알 수 있는 바와 같이, 본 발명의 측면들은 시스템, 방법, 컴퓨터 프로그램 제품으로 구현될 수 있다. 따라서, 본 발명의 측면들은 전적으로 하드웨어 실시예의 형태를 취할 수도 있고, 전적으로 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로코드 등을 포함함)의 형태를 취할 수도 있으며, 또는 소프트웨어와 하드웨어 측면들 - 이것들은 모두 본 명세서 내에서 일반적으로 "회로", "모듈", "프로세스" 또는 "시스템"으로 일컬어질 수 있음 - 을 조합하는 실시예의 형태를 취할 수도 있다. 더 나아가, 본 발명의 측면들은 하나 또는 그 이상의 컴퓨터 판독가능 매체(들) - 이것들은 그 안에 구현된 컴퓨터 판독가능 프로그램 코드를 가짐 - 에 구현된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
하나 또는 그 이상의 컴퓨터 판독가능 매체(들)의 어떠한 조합이든지 이용될 수 있다. 컴퓨터 판독가능 매체는 컴퓨터 판독가능 신호 매체 또는 컴퓨터 판독가능 스토리지 매체일 수 있다. 컴퓨터 판독가능 스토리지 매체는, 예를 들어, 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 또는 디바이스 또는 이것들의 어떤 적절한 조합일 수 있으나, 이러한 예들로 한정되는 것은 아니다. 컴퓨터 판독가능 스토리지 매체의 더 구체적인 예들(모든 예들을 총망라하는 것은 아님)은, 하나 또는 그 이상의 와이어들을 갖는 전기적 연결, 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 억세스 메모리(random access memory, RAM), 읽기 전용 메모리(read only memory, ROM), 소거가능 프로그램형 읽기 전용 메모리(erasable programmable read-only memory)(EPROM 또는 플래시 메모리), 광섬유, 휴대용 컴팩트 디스크 읽기 전용 메모리(CD-ROM), 광 스토리지 디바이스, 자기 스토리지 디바이스, 또는 이것들의 어떤 적절한 조합을 포함한다. 본 문서의 맥락에서, 컴퓨터 판독가능 스토리지 매체는 명령 실행 시스템, 장치, 또는 디바이스에 의해 사용하기 위한 또는 명령 실행 시스템, 장치, 또는 디바이스와 함께 사용하기 위한 프로그램을 포함, 또는 저장할 수 있는 어떤 실체적 매체일 수 있다.
컴퓨터 판독가능 매체 상에 구현되는 프로그램 코드는 어떤 적절한 매체 - 예를 들어, 무선, 유선, 광섬유 케이블, RF 등, 또는 이것들의 어떤 적절한 조합을 포함하나, 이 예들로 한정되는 것은 아님 - 를 사용하여 전송될 수 있다. 본 발명의 측면들을 위한 동작들을 수행하기 위한 컴퓨터 프로그램 코드는 하나 또는 그 이상의 프로그래밍 언어들의 어떤 조합으로 작성될 수 있는데, 이러한 프로그래밍 언어들의 예들에는, 자바(Java), 스몰토크(Smalltalk), C++ 등과 같은 객체 지향형 프로그래밍 언어, "C" 프로그래밍 언어 또는 유사 프로그래밍 언어들과 같은 전통적인 절차형 프로그래밍 언어들이 포함된다. 프로그램 코드는 사용자의 컴퓨터 상에서 전적으로, 사용자의 컴퓨터 상에서 부분적으로, 또는 원격 컴퓨터 또는 서버 상에서 전적으로 실행될 수 있다. 원격 컴퓨터 또는 서버 상에서 전적으로 실행되는 시나리오에서, 상기 원격 컴퓨터는 어떤 유형의 네트워크 - LAN(local area network) 또는 WAN(wide area network)을 포함함 - 를 통해 사용자의 컴퓨터에 연결될 수 있으며, 또는 그 연결은 외부 컴퓨터에 대해 이뤄질 수 있다(예를 들어, 인터넷 서비스 공급자를 사용하여 인터넷을 통해).
본 발명의 측면들은 발명의 실시예들에 따른 방법들, 장치들(시스템들) 및 컴퓨터 프로그램 제품들의 흐름도들 및/또는 블록도들을 참조하여 설명되어 있다. 흐름도들 및/또는 블록도들, 및 흐름도들 및/또는 블록도들 내의 블록들의 조합들은 컴퓨터 프로그램 명령들에 의해 구현될 수 있다는 것을 이해해야 할 것이다. 이들 컴퓨터 프로그램 명령들은 범용 컴퓨터, 특수 컴퓨터, 또는 다른 프로그램가능 데이터 처리 장치의 프로세서에 제공되어 머신(machine)을 생성하도록 할 수 있으며, 그리하여, 그 명령들이 컴퓨터 또는 다른 프로그램가능 데이터 처리 장치의 프로세서를 통해 실행되는 경우, 흐름도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 수행하기 위한 수단을 생성하도록 한다.
이들 컴퓨터 프로그램 명령들은 또한 컴퓨터 판독가능 매체에 저장될 수도 있는데, 이 컴퓨터 판독가능 매체는 컴퓨터, 다른 프로그램가능 데이터 처리 장치, 또는 다른 디바이스들이 특정 방식으로 기능하도록 지시할 수 있으며, 그리하여 컴퓨터 판독가능 매체 내에 저장된 명령들이 흐름도 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작을 구현하는 명령들을 포함하는 제조물품(article of manufacture)을 생성하도록 한다. 컴퓨터 프로그램 명령들은 또한 컴퓨터, 다른 프로그램가능 데이터 처리 장치, 또는 다른 디바이스들 상으로 로드되어, 일련의 동작 단계들이 컴퓨터, 다른 프로그램가능 데이터 처리 장치, 또는 다른 디바이스들 상에서 수행되도록 하여 컴퓨터로 구현된 프로세스를 생성한다. 그리하여 컴퓨터 또는 다른 프로그램가능 장치 상에서 실행되는 명령들이 흐름도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 프로세스들을 제공하도록 한다.
첨부된 도면들에서의 흐름도 및 블록도들은 본 발명의 여러 가지 실시예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍쳐, 기능, 및 동작을 도시한다. 이 점에서, 흐름도 또는 블록도들 내 각각의 블록은, 명시된 논리적 기능(들)을 구현하기 위한 하나 또는 그 이상의 실행가능 명령들을 포함하는, 모듈, 세그먼트, 코드부를 나타낼 수 있다. 또한 몇몇 다른 구현 예들에서는, 블록에 표시된 기능들이 도면들에 표시된 그 순서를 벗어나서 발생할 수도 있다는 것에 유의하여야 할 것이다. 예를 들어, 연속해서 도시된 두 개의 블록들은, 사실상, 관련된 기능에 따라, 실질적으로 동시에 실행될 수도 있고, 또는 블록들은 때로는 역순으로 실행될 수도 있다. 또한 블록도들 및/또는 흐름도의 각각의 블록, 및 블록도들 및/또는 흐름도 내 블록들의 조합들은, 특정 기능들 또는 작용들을 수행하는 특수 하드웨어 기반 시스템들, 또는 특수 하드웨어 및 컴퓨터 명령들의 조합에 의해 구현될 수 있다는 것에 유의하여야 할 것이다.
본 발명의 하나 또는 그 이상의 실시예들이 상세히 설명되고 있으나, 당해 기술 분야의 통상의 기술을 가진 자라면 이하의 청구항들에서 제시되는 본 발명의 범위를 벗어나지 않고서, 그러한 실시예들에 대한 변형 및 개조가 이뤄질 수 있다는 것을 알 수 있을 것이다.
Claims (27)
- 프로세서에 의해 컴퓨팅 환경 내 데이터 중복제거 시스템(data deduplication system)에서 데이터 리던던시(data redundancy)를 보존하는 방법으로서,
상기 데이터 중복제거 시스템을 통해 라이트(write)될 선택된 데이터 세그먼트를 암호화하는 단계 - 그리하여, 상기 선택된 데이터 세그먼트가 중복제거 동작(deduplication operation)을 받지 않도록 함 - 를 포함하는, 방법. - 청구항 1에 있어서, 상기 방법은,
상기 암호화된 선택된 데이터 세그먼트를 상기 컴퓨팅 환경을 통해 처리하는 단계 - 그리하여, 상기 선택된 데이터 세그먼트에 관해서는 상기 중복제거 동작이 수행되는 것이 보류(withhold)되도록 함 - 를 더 포함하는, 방법. - 청구항 2에 있어서, 상기 선택된 데이터 세그먼트를 암호화하는 단계는,
기본적인(underlying) 스토리지 컨트롤러 디바이스에 라이트 요청(write request)을 발행(issue)하기에 앞서, 연관된 가상 디바이스를 위한 고유의 암호화 키로 상기 선택된 데이터 세그먼트를 암호화하는 단계를 더 포함하는, 방법. - 청구항 3에 있어서, 상기 고유의 암호화 키로 상기 선택된 데이터 세그먼트를 암호화하는 단계는, 상기 선택된 데이터 세그먼트를 위한 논리적 블록 주소(logical block address, LBA)의 시작(start), 및 파일 내의 상기 선택된 데이터 세그먼트의 오프셋 중 하나와 연관되도록 상기 암호화 키를 선택하는 단계를 더 포함하며, 암호화 기능은 상기 암호화 기능을 통해 처리된 암호화된 데이터의 크기를 유지하도록 선택되는, 방법.
- 청구항 4에 있어서, 상기 선택된 데이터 세그먼트를 암호화하는 단계는, 라이트된 다수의 선택된 데이터 세그먼트들을 하나의 단위로(as a unit) 선택하는 단계 - 그리하여, 상기 다수의 선택된 데이터 세그먼트들 각각을 복호화하는 것이 각각의 세그먼트에 대한 오리지널 데이터를 리턴하는 것, 그리고 상기 다수의 선택된 데이터 세그먼트들 각각이 상기 단위로(as the unit) 복호화되는 것 중 하나가 되도록 함 - 를 포함하는, 방법.
- 청구항 2에 있어서, 상기 암호화된 선택된 데이터 세그먼트를 처리하는 단계는 상기 암호화된 선택된 데이터 세그먼트에 대한 라이트 요청(write request)을 상기 컴퓨팅 환경의 스토리지 컨트롤러에서 중복제거 엔진(deduplication engine)을 통해 발행(issue)하는 단계를 포함하는, 방법.
- 청구항 6에 있어서, 상기 암호화된 선택된 데이터 세그먼트에 대한 라이트 요청의 실행 동안, 상기 데이터 중복제거 엔진은 상기 암호화된 선택된 데이터 세그먼트를 데이터의 새로운 세그먼트로 인식하고, 상기 중복제거 동작을 수행하는 것을 보류하는, 방법.
- 청구항 1에 있어서, 상기 방법은, 상기 선택된 데이터 세그먼트에 관한 차후 리드 동작시, 상기 선택된 데이터 세그먼트를 복호화하는 단계를 더 포함하는, 방법.
- 청구항 8에 있어서, 상기 선택된 데이터 세그먼트를 복호화하는 단계는 상기 선택된 데이터 세그먼트를 약한(weak), 고유의(unique), 예측가능한 암호화 키로 복호화하는 단계를 포함하는, 방법.
- 컴퓨팅 환경 내 데이터 중복제거 시스템(data deduplication system)에서 데이터 리던던시(data redundancy)를 보존하는 시스템으로서,
파일 시스템 모듈; 및
상기 파일 시스템 모듈과 동작가능하게 통신하는 스토리지 컨트롤러를 포함하며,
상기 파일 시스템 모듈은 상기 데이터 중복제거 시스템을 통해, 라이트(write)될 선택된 데이터 세그먼트를 암호화하도록 구성되어, 상기 선택된 데이터 세그먼트가 중복제거 동작을 받지 않도록 하는, 시스템. - 청구항 10에 있어서, 상기 스토리지 컨트롤러는 상기 암호화된 선택된 데이터 세그먼트를 상기 컴퓨팅 환경을 통해 처리하도록 구성되어, 상기 중복제거 동작이 상기 선택된 데이터 세그먼트에 관해 수행되는 것이 보류(withhold)되도록 하는, 시스템.
- 청구항 11에 있어서, 상기 파일 시스템 모듈은, 상기 스토리지 컨트롤러에 라이트 요청(write request)을 발행(issue)하기에 앞서, 연관된 가상 디바이스를 위한 고유의 키(unique key)로 상기 선택된 데이터 세그먼트를 암호화하도록 더 구성되는, 시스템.
- 청구항 12에 있어서, 상기 암호화 키는 상기 선택된 데이터 세그먼트에 대한 논리적 블록 주소(logical block address, LBA)의 시작(start), 및 파일 내의 상기 선택된 데이터 세그먼트의 오프셋 중 하나와 연관되도록 선택되고, 여기서 암호화 기능은 상기 암호화 기능을 통해 처리되는 암호화된 데이터의 크기를 유지하도록 선택되는, 시스템.
- 청구항 13에 있어서, 상기 파일 시스템 모듈은 라이트된 다수의 선택된 데이터 세그먼트들을 하나의 단위로(as a unit) 선택하도록 더 구성되어, 상기 다수의 선택된 데이터 세그먼트들 각각을 복호화하는 것이, 각각의 세그먼트에 대한 오리지널 데이터를 리턴하는 것, 그리고 상기 다수의 선택된 데이터 세그먼트들 각각이 상기 단위로(as the unit) 복호화되는 것 중 하나가 되도록 하는, 시스템.
- 청구항 11에 있어서, 상기 시스템은,
상기 스토리지 컨트롤러와 연관된 데이터 중복제거 엔진을 더 포함하며,
상기 파일 시스템 모듈은 상기 데이터 중복제거 엔진을 통해 상기 암호화된 선택된 데이터 세그먼트에 대한 라이트 요청을 발행(issue)하도록 더 구성되는, 시스템. - 청구항 15에 있어서, 상기 암호화된 선택된 데이터 세그먼트에 대한 상기 라이트 요청의 실행 동안, 상기 데이터 중복제거 엔진은 상기 암호화된 선택된 데이터 세그먼트를 데이터의 새로운 세그먼트로서 인식하고 상기 중복제거 동작을 수행하는 것을 보류(withhold)하는, 시스템.
- 청구항 11에 있어서, 상기 파일 시스템 모듈은 상기 선택된 데이터 세그먼트에 관한 차후의 리드 동작시, 상기 선택된 데이터 세그먼트를 복호화하도록 더 구성되는, 시스템.
- 청구항 17에 있어서, 상기 선택된 데이터 세그먼트는 약한(weak), 고유의(unique) , 예측가능한 암호화 키로 복호화되는, 시스템.
- 프로세서에 의해 컴퓨팅 환경 내 데이터 중복제거 시스템(data deduplication system)에서 데이터 리던던시(data redundancy)를 보존하는 컴퓨터 프로그램 제품으로서, 상기 컴퓨터 프로그램 제품은 컴퓨터 판독가능 스토리지 매체 - 상기 컴퓨터 판독가능 스토리지 매체는 그 안에 저장된 컴퓨터 판독가능 프로그램 코드부들(computer-readable program code portions)을 가짐 - 를 포함하며, 상기 컴퓨터 판독가능 프로그램 코드부들은,
상기 데이터 중복제거 시스템을 통해, 라이트(write)될 선택된 데이터 세그먼트를 암호화하여, 상기 선택된 데이터 세그먼트가 중복제거 동작(deduplication operation)을 받지 않도록 하기 위한 제1 실행가능부(first executable portion)를 포함하는, 컴퓨터 프로그램 제품. - 청구항 19에 있어서, 상기 컴퓨터 프로그램 제품은, 상기 컴퓨팅 환경을 통해 상기 암호화된 선택된 데이터 세그먼트를 처리하여, 상기 중복제거 동작이 상기 선택된 데이터 세그먼트에 관해 수행되는 것이 보류되도록 하기 위한 제2 실행가능부를 더 포함하는, 컴퓨터 프로그램 제품.
- 청구항 20에 있어서, 상기 컴퓨터 프로그램 제품은, 상기 선택된 데이터 세그먼트를 암호화하는 것에 따라, 기본적인(underlying) 스토리지 컨트롤러 디바이스에 대한 라이트 요청(write request)을 발행(issue)하기에 앞서, 연관된 가상 디바이스를 위한 고유의 암호화 키로 상기 선택된 데이터 세그먼트를 암호화하기 위한, 제3 실행가능부를 더 포함하는, 컴퓨터 프로그램 제품.
- 청구항 21에 있어서, 상기 컴퓨터 프로그램 제품은, 상기 고유의 암호화 키로 상기 선택된 데이터 세그먼트를 암호화하는 것에 따라, 상기 선택된 데이터 세그먼트에 대한 논리적 블록 주소(logical block address, LBA)의 시작(start), 및 파일 내에서 상기 선택된 데이터 세그먼트의 오프셋 중 하나와 연관되도록 상기 암호화 키를 선택하기 위한 제4 실행가능부를 더 포함하며, 암호화 기능은 상기 암호화 기능을 통해 처리되는 암호화된 데이터의 크기를 유지하도록 선택되는, 컴퓨터 프로그램 제품.
- 청구항 22에 있어서, 상기 컴퓨터 프로그램 제품은, 상기 선택된 데이터 세그먼트를 암호화하는 것에 따라, 라이트된 다수의 선택된 데이터 세그먼트들을 하나의 단위(as a unit)으로 선택하여, 상기 다수의 선택된 데이터 세그먼트들 각각을 복호화하는 것이, 각각의 세그먼트에 대한 오리지널 데이터를 리턴하는 것, 그리고 상기 다수의 선택된 데이터 세그먼트들 각각은 상기 유닛으로 복호화되는 것 중 하나가 되도록 하기 위한, 제5 코드부를 더 포함하는, 컴퓨터 프로그램 제품.
- 청구항 20에 있어서, 상기 컴퓨터 프로그램 제품은, 상기 암호화된 선택된 데이터 세그먼트를 처리하는 것에 따라, 상기 컴퓨팅 환경의 스토리지 컨트롤러에서의 중복제거 엔진을 통해 상기 암호화된 선택된 데이터 세그먼트에 대한 라이트 요청을 발행(issue)하기 위한, 제3 실행가능부를 더 포함하는, 컴퓨터 프로그램 제품.
- 청구항 24에 있어서, 상기 암호화된 선택된 데이터 세그먼트에 대한 상기 라이트 요청의 실행 동안, 상기 데이터 중복제거 엔진은 상기 암호화된 선택된 데이터 세그먼트를 데이터의 새로운 세그먼트로 인식하고 상기 중복제거 동작을 수행하는 것을 보류(withhold)하는, 컴퓨터 프로그램 제품.
- 청구항 20에 있어서, 상기 컴퓨터 프로그램 제품은, 상기 선택된 데이터 세그먼트의 차후(subsequent) 리드 동작시, 상기 선택된 데이터 세그먼트를 복호화하기 위한 제3 실행가능부를 더 포함하는, 컴퓨터 프로그램 제품.
- 청구항 26에 있어서, 상기 컴퓨터 프로그램 제품은, 상기 선택된 데이터 세그먼트를 복호화하는 것에 따라, 상기 선택된 데이터 세그먼트를 약한(weak), 고유의(unique), 예측가능한 암호화 키로 복호화하기 위한, 제4 실행가능부를 더 포함하는, 컴퓨터 프로그램 제품.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/453,259 | 2012-04-23 | ||
US13/453,259 US8996881B2 (en) | 2012-04-23 | 2012-04-23 | Preserving redundancy in data deduplication systems by encryption |
PCT/CN2013/070416 WO2013159582A1 (en) | 2012-04-23 | 2013-01-14 | Preserving redundancy in data deduplication systems by encryption |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20140128403A true KR20140128403A (ko) | 2014-11-05 |
Family
ID=49381276
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20147024578A KR20140128403A (ko) | 2012-04-23 | 2013-01-14 | 암호화에 의해 데이터 중복제거 시스템에서 리던던시를 보존하는 기술 |
Country Status (7)
Country | Link |
---|---|
US (4) | US8996881B2 (ko) |
EP (1) | EP2842063A4 (ko) |
JP (1) | JP6109293B2 (ko) |
KR (1) | KR20140128403A (ko) |
CN (1) | CN104272300B (ko) |
IN (1) | IN2014CN04774A (ko) |
WO (1) | WO2013159582A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101880075B1 (ko) * | 2014-01-15 | 2018-07-20 | 인텔 코포레이션 | 중복 제거 기반 데이터 보안 |
Families Citing this family (150)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8732426B2 (en) | 2010-09-15 | 2014-05-20 | Pure Storage, Inc. | Scheduling of reactive I/O operations in a storage environment |
US8589625B2 (en) | 2010-09-15 | 2013-11-19 | Pure Storage, Inc. | Scheduling of reconstructive I/O read operations in a storage environment |
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
US8468318B2 (en) | 2010-09-15 | 2013-06-18 | Pure Storage Inc. | Scheduling of I/O writes in a storage environment |
US11275509B1 (en) | 2010-09-15 | 2022-03-15 | Pure Storage, Inc. | Intelligently sizing high latency I/O requests in a storage environment |
US8589655B2 (en) | 2010-09-15 | 2013-11-19 | Pure Storage, Inc. | Scheduling of I/O in an SSD environment |
US12008266B2 (en) | 2010-09-15 | 2024-06-11 | Pure Storage, Inc. | Efficient read by reconstruction |
US8775868B2 (en) | 2010-09-28 | 2014-07-08 | Pure Storage, Inc. | Adaptive RAID for an SSD environment |
US9244769B2 (en) | 2010-09-28 | 2016-01-26 | Pure Storage, Inc. | Offset protection data in a RAID array |
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
US11636031B2 (en) | 2011-08-11 | 2023-04-25 | Pure Storage, Inc. | Optimized inline deduplication |
US8719540B1 (en) | 2012-03-15 | 2014-05-06 | Pure Storage, Inc. | Fractal layout of data blocks across multiple devices |
US10623386B1 (en) | 2012-09-26 | 2020-04-14 | Pure Storage, Inc. | Secret sharing data protection in a storage system |
US11032259B1 (en) | 2012-09-26 | 2021-06-08 | Pure Storage, Inc. | Data protection in a storage system |
US8745415B2 (en) | 2012-09-26 | 2014-06-03 | Pure Storage, Inc. | Multi-drive cooperation to generate an encryption key |
US9442954B2 (en) * | 2012-11-12 | 2016-09-13 | Datawise Systems | Method and apparatus for achieving optimal resource allocation dynamically in a distributed computing environment |
US9646039B2 (en) | 2013-01-10 | 2017-05-09 | Pure Storage, Inc. | Snapshots in a storage system |
US11768623B2 (en) | 2013-01-10 | 2023-09-26 | Pure Storage, Inc. | Optimizing generalized transfers between storage systems |
US11733908B2 (en) | 2013-01-10 | 2023-08-22 | Pure Storage, Inc. | Delaying deletion of a dataset |
US10908835B1 (en) | 2013-01-10 | 2021-02-02 | Pure Storage, Inc. | Reversing deletion of a virtual machine |
US10365858B2 (en) | 2013-11-06 | 2019-07-30 | Pure Storage, Inc. | Thin provisioning in a storage device |
US11128448B1 (en) | 2013-11-06 | 2021-09-21 | Pure Storage, Inc. | Quorum-aware secret sharing |
US10263770B2 (en) | 2013-11-06 | 2019-04-16 | Pure Storage, Inc. | Data protection in a storage system using external secrets |
US9208086B1 (en) | 2014-01-09 | 2015-12-08 | Pure Storage, Inc. | Using frequency domain to prioritize storage of metadata in a cache |
US20150242640A1 (en) * | 2014-02-24 | 2015-08-27 | Western Digital Technologies, Inc. | Encryption key selection |
US10656864B2 (en) | 2014-03-20 | 2020-05-19 | Pure Storage, Inc. | Data replication within a flash storage array |
WO2015152935A1 (en) | 2014-04-04 | 2015-10-08 | Hewlett-Packard Development Company, L.P. | Storing and retrieving ciphertext in data storage |
US9779268B1 (en) * | 2014-06-03 | 2017-10-03 | Pure Storage, Inc. | Utilizing a non-repeating identifier to encrypt data |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US11399063B2 (en) | 2014-06-04 | 2022-07-26 | Pure Storage, Inc. | Network authentication for a storage system |
US9218407B1 (en) | 2014-06-25 | 2015-12-22 | Pure Storage, Inc. | Replication and intermediate read-write state for mediums |
US10496556B1 (en) | 2014-06-25 | 2019-12-03 | Pure Storage, Inc. | Dynamic data protection within a flash storage system |
US10296469B1 (en) | 2014-07-24 | 2019-05-21 | Pure Storage, Inc. | Access control in a flash storage system |
US9558069B2 (en) | 2014-08-07 | 2017-01-31 | Pure Storage, Inc. | Failure mapping in a storage array |
US9495255B2 (en) | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US9864761B1 (en) | 2014-08-08 | 2018-01-09 | Pure Storage, Inc. | Read optimization operations in a storage system |
US9397832B2 (en) * | 2014-08-27 | 2016-07-19 | International Business Machines Corporation | Shared data encryption and confidentiality |
US10430079B2 (en) | 2014-09-08 | 2019-10-01 | Pure Storage, Inc. | Adjusting storage capacity in a computing system |
WO2016048331A1 (en) | 2014-09-25 | 2016-03-31 | Hewlett Packard Enterprise Development Lp | Storage of a data chunk with a colliding fingerprint |
US10164841B2 (en) | 2014-10-02 | 2018-12-25 | Pure Storage, Inc. | Cloud assist for storage systems |
US10430282B2 (en) | 2014-10-07 | 2019-10-01 | Pure Storage, Inc. | Optimizing replication by distinguishing user and system write activity |
US9489132B2 (en) | 2014-10-07 | 2016-11-08 | Pure Storage, Inc. | Utilizing unmapped and unknown states in a replicated storage system |
US9727485B1 (en) | 2014-11-24 | 2017-08-08 | Pure Storage, Inc. | Metadata rewrite and flatten optimization |
US9773007B1 (en) | 2014-12-01 | 2017-09-26 | Pure Storage, Inc. | Performance improvements in a storage system |
US9588842B1 (en) | 2014-12-11 | 2017-03-07 | Pure Storage, Inc. | Drive rebuild |
US9552248B2 (en) | 2014-12-11 | 2017-01-24 | Pure Storage, Inc. | Cloud alert to replica |
US9864769B2 (en) | 2014-12-12 | 2018-01-09 | Pure Storage, Inc. | Storing data utilizing repeating pattern detection |
US10545987B2 (en) | 2014-12-19 | 2020-01-28 | Pure Storage, Inc. | Replication to the cloud |
US10296354B1 (en) | 2015-01-21 | 2019-05-21 | Pure Storage, Inc. | Optimized boot operations within a flash storage array |
US11947968B2 (en) | 2015-01-21 | 2024-04-02 | Pure Storage, Inc. | Efficient use of zone in a storage device |
US9710165B1 (en) | 2015-02-18 | 2017-07-18 | Pure Storage, Inc. | Identifying volume candidates for space reclamation |
US10082985B2 (en) | 2015-03-27 | 2018-09-25 | Pure Storage, Inc. | Data striping across storage nodes that are assigned to multiple logical arrays |
US10178169B2 (en) | 2015-04-09 | 2019-01-08 | Pure Storage, Inc. | Point to point based backend communication layer for storage processing |
US10140149B1 (en) | 2015-05-19 | 2018-11-27 | Pure Storage, Inc. | Transactional commits with hardware assists in remote memory |
JP6666540B2 (ja) | 2015-06-15 | 2020-03-18 | 富士通株式会社 | ストレージ制御装置、及びプログラム |
US10310740B2 (en) | 2015-06-23 | 2019-06-04 | Pure Storage, Inc. | Aligning memory access operations to a geometry of a storage device |
US9547441B1 (en) | 2015-06-23 | 2017-01-17 | Pure Storage, Inc. | Exposing a geometry of a storage device |
US10009243B2 (en) | 2015-08-27 | 2018-06-26 | International Business Machines Corporation | Cross-tenant analysis of similar storage environments to recommend storage policy changes |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US11269884B2 (en) | 2015-09-04 | 2022-03-08 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
KR20170028825A (ko) | 2015-09-04 | 2017-03-14 | 퓨어 스토리지, 아이앤씨. | 압축된 인덱스들을 사용한 해시 테이블들에서의 메모리 효율적인 스토리지 및 탐색 |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
US10089024B2 (en) * | 2015-11-19 | 2018-10-02 | Red Hat Israel, Ltd. | Memory deduplication protection for memory pages |
US20170220295A1 (en) * | 2016-02-02 | 2017-08-03 | Intel Corporation | Technologies for reducing duplication of stored data |
US10157153B2 (en) * | 2016-02-03 | 2018-12-18 | Qualcomm Incorporated | Inline cryptographic engine (ICE) for peripheral component interconnect express (PCIe) systems |
US10452297B1 (en) | 2016-05-02 | 2019-10-22 | Pure Storage, Inc. | Generating and optimizing summary index levels in a deduplication storage system |
US10133503B1 (en) | 2016-05-02 | 2018-11-20 | Pure Storage, Inc. | Selecting a deduplication process based on a difference between performance metrics |
US10203903B2 (en) | 2016-07-26 | 2019-02-12 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
US10235396B2 (en) | 2016-08-29 | 2019-03-19 | International Business Machines Corporation | Workload optimized data deduplication using ghost fingerprints |
US10191662B2 (en) | 2016-10-04 | 2019-01-29 | Pure Storage, Inc. | Dynamic allocation of segments in a flash storage system |
US10545861B2 (en) | 2016-10-04 | 2020-01-28 | Pure Storage, Inc. | Distributed integrated high-speed solid-state non-volatile random-access memory |
US10162523B2 (en) | 2016-10-04 | 2018-12-25 | Pure Storage, Inc. | Migrating data between volumes using virtual copy operation |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
US10481798B2 (en) | 2016-10-28 | 2019-11-19 | Pure Storage, Inc. | Efficient flash management for multiple controllers |
US10185505B1 (en) | 2016-10-28 | 2019-01-22 | Pure Storage, Inc. | Reading a portion of data to replicate a volume based on sequence numbers |
US10359942B2 (en) | 2016-10-31 | 2019-07-23 | Pure Storage, Inc. | Deduplication aware scalable content placement |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
US10452290B2 (en) | 2016-12-19 | 2019-10-22 | Pure Storage, Inc. | Block consolidation in a direct-mapped flash storage system |
US11093146B2 (en) | 2017-01-12 | 2021-08-17 | Pure Storage, Inc. | Automatic load rebalancing of a write group |
US10528488B1 (en) | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
US12045487B2 (en) | 2017-04-21 | 2024-07-23 | Pure Storage, Inc. | Preserving data deduplication in a multi-tenant storage system |
US11403019B2 (en) | 2017-04-21 | 2022-08-02 | Pure Storage, Inc. | Deduplication-aware per-tenant encryption |
US10944671B2 (en) | 2017-04-27 | 2021-03-09 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
US10831935B2 (en) | 2017-08-31 | 2020-11-10 | Pure Storage, Inc. | Encryption management with host-side data reduction |
US10776202B1 (en) | 2017-09-22 | 2020-09-15 | Pure Storage, Inc. | Drive, blade, or data shard decommission via RAID geometry shrinkage |
US10789211B1 (en) | 2017-10-04 | 2020-09-29 | Pure Storage, Inc. | Feature-based deduplication |
US10884919B2 (en) | 2017-10-31 | 2021-01-05 | Pure Storage, Inc. | Memory management in a storage system |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
US10970395B1 (en) | 2018-01-18 | 2021-04-06 | Pure Storage, Inc | Security threat monitoring for a storage system |
US11144638B1 (en) | 2018-01-18 | 2021-10-12 | Pure Storage, Inc. | Method for storage system detection and alerting on potential malicious action |
US11010233B1 (en) | 2018-01-18 | 2021-05-18 | Pure Storage, Inc | Hardware-based system monitoring |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
US11036596B1 (en) | 2018-02-18 | 2021-06-15 | Pure Storage, Inc. | System for delaying acknowledgements on open NAND locations until durability has been confirmed |
US11494109B1 (en) | 2018-02-22 | 2022-11-08 | Pure Storage, Inc. | Erase block trimming for heterogenous flash memory storage devices |
US11934322B1 (en) | 2018-04-05 | 2024-03-19 | Pure Storage, Inc. | Multiple encryption keys on storage drives |
US11995336B2 (en) | 2018-04-25 | 2024-05-28 | Pure Storage, Inc. | Bucket views |
US10678433B1 (en) | 2018-04-27 | 2020-06-09 | Pure Storage, Inc. | Resource-preserving system upgrade |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
JP7109992B2 (ja) * | 2018-05-22 | 2022-08-01 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP7048411B2 (ja) * | 2018-05-22 | 2022-04-05 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US10678436B1 (en) | 2018-05-29 | 2020-06-09 | Pure Storage, Inc. | Using a PID controller to opportunistically compress more data during garbage collection |
US11436023B2 (en) | 2018-05-31 | 2022-09-06 | Pure Storage, Inc. | Mechanism for updating host file system and flash translation layer based on underlying NAND technology |
US10776046B1 (en) | 2018-06-08 | 2020-09-15 | Pure Storage, Inc. | Optimized non-uniform memory access |
US11281577B1 (en) | 2018-06-19 | 2022-03-22 | Pure Storage, Inc. | Garbage collection tuning for low drive wear |
US10795861B2 (en) * | 2018-06-20 | 2020-10-06 | International Business Machines Corporation | Online measurement of potential deduplication efficiency |
US11869586B2 (en) | 2018-07-11 | 2024-01-09 | Pure Storage, Inc. | Increased data protection by recovering data from partially-failed solid-state devices |
US11133076B2 (en) | 2018-09-06 | 2021-09-28 | Pure Storage, Inc. | Efficient relocation of data between storage devices of a storage system |
US11194759B2 (en) | 2018-09-06 | 2021-12-07 | Pure Storage, Inc. | Optimizing local data relocation operations of a storage device of a storage system |
US10846216B2 (en) | 2018-10-25 | 2020-11-24 | Pure Storage, Inc. | Scalable garbage collection |
US11113409B2 (en) | 2018-10-26 | 2021-09-07 | Pure Storage, Inc. | Efficient rekey in a transparent decrypting storage array |
US11194473B1 (en) | 2019-01-23 | 2021-12-07 | Pure Storage, Inc. | Programming frequently read data to low latency portions of a solid-state storage array |
US11588633B1 (en) | 2019-03-15 | 2023-02-21 | Pure Storage, Inc. | Decommissioning keys in a decryption storage system |
US11334254B2 (en) | 2019-03-29 | 2022-05-17 | Pure Storage, Inc. | Reliability based flash page sizing |
US11397674B1 (en) | 2019-04-03 | 2022-07-26 | Pure Storage, Inc. | Optimizing garbage collection across heterogeneous flash devices |
US11775189B2 (en) | 2019-04-03 | 2023-10-03 | Pure Storage, Inc. | Segment level heterogeneity |
US10990480B1 (en) | 2019-04-05 | 2021-04-27 | Pure Storage, Inc. | Performance of RAID rebuild operations by a storage group controller of a storage system |
US12087382B2 (en) | 2019-04-11 | 2024-09-10 | Pure Storage, Inc. | Adaptive threshold for bad flash memory blocks |
US11099986B2 (en) | 2019-04-12 | 2021-08-24 | Pure Storage, Inc. | Efficient transfer of memory contents |
US11487665B2 (en) | 2019-06-05 | 2022-11-01 | Pure Storage, Inc. | Tiered caching of data in a storage system |
US11281394B2 (en) | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
US10929046B2 (en) | 2019-07-09 | 2021-02-23 | Pure Storage, Inc. | Identifying and relocating hot data to a cache determined with read velocity based on a threshold stored at a storage device |
US11422751B2 (en) | 2019-07-18 | 2022-08-23 | Pure Storage, Inc. | Creating a virtual storage system |
US11086713B1 (en) | 2019-07-23 | 2021-08-10 | Pure Storage, Inc. | Optimized end-to-end integrity storage system |
US11963321B2 (en) | 2019-09-11 | 2024-04-16 | Pure Storage, Inc. | Low profile latching mechanism |
US11403043B2 (en) | 2019-10-15 | 2022-08-02 | Pure Storage, Inc. | Efficient data compression by grouping similar data within a data segment |
US11226942B2 (en) * | 2019-10-16 | 2022-01-18 | International Business Machines Corporation | Controlling deduplication in a storage pool |
US12050683B2 (en) * | 2019-11-22 | 2024-07-30 | Pure Storage, Inc. | Selective control of a data synchronization setting of a storage system based on a possible ransomware attack against the storage system |
US11520907B1 (en) | 2019-11-22 | 2022-12-06 | Pure Storage, Inc. | Storage system snapshot retention based on encrypted data |
US11755751B2 (en) | 2019-11-22 | 2023-09-12 | Pure Storage, Inc. | Modify access restrictions in response to a possible attack against data stored by a storage system |
US11341236B2 (en) | 2019-11-22 | 2022-05-24 | Pure Storage, Inc. | Traffic-based detection of a security threat to a storage system |
US11615185B2 (en) | 2019-11-22 | 2023-03-28 | Pure Storage, Inc. | Multi-layer security threat detection for a storage system |
US11675898B2 (en) | 2019-11-22 | 2023-06-13 | Pure Storage, Inc. | Recovery dataset management for security threat monitoring |
US11687418B2 (en) | 2019-11-22 | 2023-06-27 | Pure Storage, Inc. | Automatic generation of recovery plans specific to individual storage elements |
US12079356B2 (en) | 2019-11-22 | 2024-09-03 | Pure Storage, Inc. | Measurement interval anomaly detection-based generation of snapshots |
US11941116B2 (en) | 2019-11-22 | 2024-03-26 | Pure Storage, Inc. | Ransomware-based data protection parameter modification |
US12050689B2 (en) | 2019-11-22 | 2024-07-30 | Pure Storage, Inc. | Host anomaly-based generation of snapshots |
US11651075B2 (en) | 2019-11-22 | 2023-05-16 | Pure Storage, Inc. | Extensible attack monitoring by a storage system |
US11625481B2 (en) | 2019-11-22 | 2023-04-11 | Pure Storage, Inc. | Selective throttling of operations potentially related to a security threat to a storage system |
US11720714B2 (en) | 2019-11-22 | 2023-08-08 | Pure Storage, Inc. | Inter-I/O relationship based detection of a security threat to a storage system |
US12067118B2 (en) | 2019-11-22 | 2024-08-20 | Pure Storage, Inc. | Detection of writing to a non-header portion of a file as an indicator of a possible ransomware attack against a storage system |
US11645162B2 (en) | 2019-11-22 | 2023-05-09 | Pure Storage, Inc. | Recovery point determination for data restoration in a storage system |
US11720692B2 (en) | 2019-11-22 | 2023-08-08 | Pure Storage, Inc. | Hardware token based management of recovery datasets for a storage system |
US11500788B2 (en) | 2019-11-22 | 2022-11-15 | Pure Storage, Inc. | Logical address based authorization of operations with respect to a storage system |
US11657155B2 (en) | 2019-11-22 | 2023-05-23 | Pure Storage, Inc | Snapshot delta metric based determination of a possible ransomware attack against data maintained by a storage system |
US12079333B2 (en) | 2019-11-22 | 2024-09-03 | Pure Storage, Inc. | Independent security threat detection and remediation by storage systems in a synchronous replication arrangement |
US12079502B2 (en) | 2019-11-22 | 2024-09-03 | Pure Storage, Inc. | Storage element attribute-based determination of a data protection policy for use within a storage system |
CN111338572B (zh) * | 2020-02-18 | 2021-09-14 | 电子科技大学 | 一种可调节加密重复数据删除方法 |
US11573929B2 (en) | 2020-04-09 | 2023-02-07 | Kyndryl, Inc. | Deduplication of encrypted data using multiple keys |
US11803648B2 (en) | 2020-12-09 | 2023-10-31 | International Business Machines Corporation | Key in lockbox encrypted data deduplication |
Family Cites Families (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001046808A1 (fr) * | 1999-12-20 | 2001-06-28 | Dai Nippon Printing Co., Ltd. | Dispositif et systeme d'archivage reparti |
WO2002065693A2 (en) * | 2001-02-14 | 2002-08-22 | Scientific Generics Limited | Cryptographic key generation apparatus and method |
EP1271951A1 (en) * | 2001-06-22 | 2003-01-02 | Octalis S.A. | Conditional access system for digital data by key decryption and re-encryption |
EP1466246B1 (en) | 2001-11-23 | 2011-03-02 | Commvault Systems, Inc. | Selective data replication system and method |
US20030115447A1 (en) * | 2001-12-18 | 2003-06-19 | Duc Pham | Network media access architecture and methods for secure storage |
US20040131182A1 (en) * | 2002-09-03 | 2004-07-08 | The Regents Of The University Of California | Block cipher mode of operation for constructing a wide-blocksize block cipher from a conventional block cipher |
US8010498B2 (en) | 2005-04-08 | 2011-08-30 | Microsoft Corporation | Virtually infinite reliable storage across multiple storage devices and storage services |
JP4620518B2 (ja) * | 2005-04-26 | 2011-01-26 | 株式会社ケンウッド | 音声データベース製造装置、音片復元装置、音声データベース製造方法、音片復元方法及びプログラム |
US20070168350A1 (en) * | 2006-01-17 | 2007-07-19 | Tom Utiger | Management of non-traditional content repositories |
US9465823B2 (en) | 2006-10-19 | 2016-10-11 | Oracle International Corporation | System and method for data de-duplication |
US7873809B2 (en) | 2007-03-29 | 2011-01-18 | Hitachi, Ltd. | Method and apparatus for de-duplication after mirror operation |
JP5060876B2 (ja) | 2007-08-30 | 2012-10-31 | 株式会社日立製作所 | ストレージシステム及びストレージシステムの消費電力低減方法 |
US8209506B2 (en) | 2007-09-05 | 2012-06-26 | Emc Corporation | De-duplication in a virtualized storage environment |
JP5026213B2 (ja) | 2007-09-28 | 2012-09-12 | 株式会社日立製作所 | ストレージ装置及びデータ重複排除方法 |
US8621138B2 (en) | 2007-12-27 | 2013-12-31 | Sandisk Enterprise Ip Llc | Flash storage controller execute loop |
US7979670B2 (en) | 2008-01-24 | 2011-07-12 | Quantum Corporation | Methods and systems for vectored data de-duplication |
US7814074B2 (en) | 2008-03-14 | 2010-10-12 | International Business Machines Corporation | Method and system for assuring integrity of deduplicated data |
US7567188B1 (en) | 2008-04-10 | 2009-07-28 | International Business Machines Corporation | Policy based tiered data deduplication strategy |
US20090319772A1 (en) * | 2008-04-25 | 2009-12-24 | Netapp, Inc. | In-line content based security for data at rest in a network storage system |
US8346730B2 (en) | 2008-04-25 | 2013-01-01 | Netapp. Inc. | Deduplication of data on disk devices based on a threshold number of sequential blocks |
US9395929B2 (en) | 2008-04-25 | 2016-07-19 | Netapp, Inc. | Network storage server with integrated encryption, compression and deduplication capability |
US7908436B1 (en) | 2008-04-25 | 2011-03-15 | Netapp, Inc. | Deduplication of data on disk devices using low-latency random read memory |
US8117464B1 (en) * | 2008-04-30 | 2012-02-14 | Netapp, Inc. | Sub-volume level security for deduplicated data |
US8219524B2 (en) * | 2008-06-24 | 2012-07-10 | Commvault Systems, Inc. | Application-aware and remote single instance data management |
US8392791B2 (en) | 2008-08-08 | 2013-03-05 | George Saliba | Unified data protection and data de-duplication in a storage system |
US8086799B2 (en) | 2008-08-12 | 2011-12-27 | Netapp, Inc. | Scalable deduplication of stored data |
US8074049B2 (en) | 2008-08-26 | 2011-12-06 | Nine Technology, Llc | Online backup system with global two staged deduplication without using an indexing database |
US8290915B2 (en) * | 2008-09-15 | 2012-10-16 | International Business Machines Corporation | Retrieval and recovery of data chunks from alternate data stores in a deduplicating system |
US8190823B2 (en) | 2008-09-18 | 2012-05-29 | Lenovo (Singapore) Pte. Ltd. | Apparatus, system and method for storage cache deduplication |
US8131687B2 (en) | 2008-11-13 | 2012-03-06 | International Business Machines Corporation | File system with internal deduplication and management of data blocks |
US9058118B1 (en) * | 2008-12-31 | 2015-06-16 | Symantec Corporation | Techniques for synchronizing and/or consolidating storage areas |
US8271718B2 (en) | 2009-03-11 | 2012-09-18 | Hitachi, Ltd. | Storage system and control method for the same, and program |
US8140491B2 (en) | 2009-03-26 | 2012-03-20 | International Business Machines Corporation | Storage management through adaptive deduplication |
US8401996B2 (en) * | 2009-03-30 | 2013-03-19 | Commvault Systems, Inc. | Storing a variable number of instances of data objects |
US8218759B2 (en) * | 2009-04-17 | 2012-07-10 | Oracle America, Inc. | System and method for encrypting data |
US8412848B2 (en) * | 2009-05-29 | 2013-04-02 | Exagrid Systems, Inc. | Method and apparatus for content-aware and adaptive deduplication |
US8731190B2 (en) | 2009-06-09 | 2014-05-20 | Emc Corporation | Segment deduplication system with encryption and compression of segments |
US8401181B2 (en) | 2009-06-09 | 2013-03-19 | Emc Corporation | Segment deduplication system with encryption of segments |
US20100333116A1 (en) * | 2009-06-30 | 2010-12-30 | Anand Prahlad | Cloud gateway system for managing data storage to cloud storage sites |
GB2472072B (en) | 2009-07-24 | 2013-10-16 | Hewlett Packard Development Co | Deduplication of encoded data |
CN101656720B (zh) * | 2009-08-12 | 2012-10-17 | 北京握奇数据系统有限公司 | 对信息系统中访问对象信息统一维护的方法及装置 |
US8200641B2 (en) | 2009-09-11 | 2012-06-12 | Dell Products L.P. | Dictionary for data deduplication |
EP2414926A1 (en) * | 2009-09-18 | 2012-02-08 | Hitachi, Ltd. | Storage system for eliminating duplicated data |
FR2952778B1 (fr) | 2009-11-17 | 2011-12-23 | Thales Sa | Procede de transmission de donnees securise et systeme de chiffrement et de dechiffrement permettant une telle transmission |
US9239843B2 (en) | 2009-12-15 | 2016-01-19 | Symantec Corporation | Scalable de-duplication for storage systems |
US8660994B2 (en) | 2010-01-28 | 2014-02-25 | Hewlett-Packard Development Company, L.P. | Selective data deduplication |
US8108447B2 (en) * | 2010-03-11 | 2012-01-31 | Symantec Corporation | Systems and methods for garbage collection in deduplicated data systems |
JP5434705B2 (ja) | 2010-03-12 | 2014-03-05 | 富士通株式会社 | ストレージ装置、ストレージ装置制御プログラムおよびストレージ装置制御方法 |
US8453031B2 (en) | 2010-03-24 | 2013-05-28 | International Business Machines Corporation | Data deduplication using CRC-seed differentiation between data and stubs |
JP4892072B2 (ja) | 2010-03-24 | 2012-03-07 | 株式会社東芝 | ホスト装置と連携して重複データを排除するストレージ装置、同ストレージ装置を備えたストレージシステム、及び同システムにおける重複排除方法 |
US8442942B2 (en) | 2010-03-25 | 2013-05-14 | Andrew C. Leppard | Combining hash-based duplication with sub-block differencing to deduplicate data |
US8954669B2 (en) | 2010-07-07 | 2015-02-10 | Nexenta System, Inc | Method and system for heterogeneous data volume |
US8886613B2 (en) | 2010-10-12 | 2014-11-11 | Don Doerner | Prioritizing data deduplication |
US20120095968A1 (en) | 2010-10-17 | 2012-04-19 | Stephen Gold | Storage tiers for different backup types |
US8380681B2 (en) | 2010-12-16 | 2013-02-19 | Microsoft Corporation | Extensible pipeline for data deduplication |
US8539148B1 (en) | 2010-12-22 | 2013-09-17 | Emc Corporation | Deduplication efficiency |
CN102156727A (zh) | 2011-04-01 | 2011-08-17 | 华中科技大学 | 一种采用双指纹哈希校验的重复数据删除方法 |
CN102281320A (zh) | 2011-04-25 | 2011-12-14 | 程旭 | 控制云存储中数据冗余的方法及装置 |
US20120317084A1 (en) | 2011-06-13 | 2012-12-13 | Beijing Z&W Technology Consulting Co., Ltd. | Method and system for achieving data de-duplication on a block-level storage virtualization device |
CN102221982B (zh) | 2011-06-13 | 2013-09-11 | 北京卓微天成科技咨询有限公司 | 块级虚拟化存储设备上实现重复数据删除的方法及系统 |
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
US8527544B1 (en) | 2011-08-11 | 2013-09-03 | Pure Storage Inc. | Garbage collection in a storage system |
US8930307B2 (en) | 2011-09-30 | 2015-01-06 | Pure Storage, Inc. | Method for removing duplicate data from a storage array |
US8468138B1 (en) | 2011-12-02 | 2013-06-18 | International Business Machines Corporation | Managing redundant immutable files using deduplication in storage clouds |
US9904565B2 (en) | 2012-02-01 | 2018-02-27 | Veritas Technologies Llc | Subsequent operation input reduction systems and methods for virtual machines |
US8712976B1 (en) | 2012-03-28 | 2014-04-29 | Emc Corporation | Managing deduplication density |
US8812456B2 (en) | 2012-03-30 | 2014-08-19 | Netapp Inc. | Systems, methods, and computer program products for scheduling processing to achieve space savings |
-
2012
- 2012-04-23 US US13/453,259 patent/US8996881B2/en active Active
-
2013
- 2013-01-14 CN CN201380021100.6A patent/CN104272300B/zh active Active
- 2013-01-14 KR KR20147024578A patent/KR20140128403A/ko not_active Application Discontinuation
- 2013-01-14 IN IN4774CHN2014 patent/IN2014CN04774A/en unknown
- 2013-01-14 EP EP13781337.4A patent/EP2842063A4/en not_active Withdrawn
- 2013-01-14 JP JP2015506079A patent/JP6109293B2/ja active Active
- 2013-01-14 WO PCT/CN2013/070416 patent/WO2013159582A1/en active Application Filing
- 2013-03-13 US US13/801,502 patent/US8990581B2/en active Active
-
2015
- 2015-02-09 US US14/617,091 patent/US9792450B2/en active Active
- 2015-02-09 US US14/617,105 patent/US9824228B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101880075B1 (ko) * | 2014-01-15 | 2018-07-20 | 인텔 코포레이션 | 중복 제거 기반 데이터 보안 |
Also Published As
Publication number | Publication date |
---|---|
IN2014CN04774A (ko) | 2015-09-18 |
US20130283058A1 (en) | 2013-10-24 |
US8990581B2 (en) | 2015-03-24 |
EP2842063A1 (en) | 2015-03-04 |
US20130283062A1 (en) | 2013-10-24 |
US9792450B2 (en) | 2017-10-17 |
US20150154411A1 (en) | 2015-06-04 |
JP2015515216A (ja) | 2015-05-21 |
JP6109293B2 (ja) | 2017-04-05 |
US8996881B2 (en) | 2015-03-31 |
CN104272300A (zh) | 2015-01-07 |
CN104272300B (zh) | 2018-12-21 |
EP2842063A4 (en) | 2015-05-06 |
US9824228B2 (en) | 2017-11-21 |
WO2013159582A1 (en) | 2013-10-31 |
US20150154410A1 (en) | 2015-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8990581B2 (en) | Preserving redundancy in data deduplication systems by encryption | |
US10691670B2 (en) | Preserving redundancy in data deduplication systems by indicator | |
US8422677B2 (en) | Storage virtualization apparatus comprising encryption functions | |
US8621241B1 (en) | Storage and recovery of cryptographic key identifiers | |
US8918651B2 (en) | Cryptographic erasure of selected encrypted data | |
US8489893B2 (en) | Encryption key rotation messages written and observed by storage controllers via storage media | |
US9225691B1 (en) | Deduplication of encrypted dataset on datadomain backup appliance | |
KR20130026517A (ko) | 저장부 할당 장치, 시스템, 및 방법 | |
US9767113B2 (en) | Preserving redundancy in data deduplication systems by designation of virtual address | |
JP2017524213A (ja) | 重複排除システムのハッシュ・ベース・マルチテナンシ | |
US10846441B2 (en) | Computer system | |
US20090202080A1 (en) | Method and system for managing encryption key | |
JP2018142314A (ja) | データを暗号化するための分散データ方法 | |
US10146703B1 (en) | Encrypting data objects in a data storage system | |
WO2015118630A1 (ja) | ストレージシステムおよびストレージシステム用キャッシュ制御装置 | |
US20220123932A1 (en) | Data storage device encryption | |
US20220045850A1 (en) | Memory system encrypting data | |
US10152486B2 (en) | Preserving redundancy in data deduplication systems by designation of virtual device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |