KR20140113565A - 저장 디바이스 보조형 데이터 중복 제거 - Google Patents
저장 디바이스 보조형 데이터 중복 제거 Download PDFInfo
- Publication number
- KR20140113565A KR20140113565A KR1020140030596A KR20140030596A KR20140113565A KR 20140113565 A KR20140113565 A KR 20140113565A KR 1020140030596 A KR1020140030596 A KR 1020140030596A KR 20140030596 A KR20140030596 A KR 20140030596A KR 20140113565 A KR20140113565 A KR 20140113565A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- storage device
- input
- module
- logical address
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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/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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
- Storage Device Security (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본원에서 제시되는 시스템들 및 방법들은 데이터의 중복 제거를 제공한다. 하나의 실시예(100)에서, 입력/출력 모듈(101)은 데이터를 기록하는 입력/출력 동작을 생성하도록 동작 가능하다. 저장 디바이스(102)는 입력/출력 모듈에 통신 가능하게 연결되고 저장 디바이스의 논리 어드레스에 입력/출력 동작의 데이터를 기록하고 이 데이터에 기초하여 서명을 생성하도록 동작 가능하다. 입력/출력 모듈은 데이터가 다른 논리 어드레스에 있는지를 결정하기 위하여 서명을 프로세싱하도록 더 동작 가능하다.
Description
관련 출원들과의 상호 참조
본 특허 출원은 전체 내용이 이에 참조로서 포함되는 미국 특허 가출원 번호 61/782,122(2013년 3월 14일에 제출됨)의 우선권을 주장하고 따라서 상기 출원으로부터 최선 출원일의 이점을 주장한다.
기술 분야
본 발명은 전반적으로 저장 디바이스의 입력/출력(Input/Output; I/O) 동작들에 관한 것으로 더 구체적으로 저장 디바이스에서 중복 데이터를 감소시키는 것에 관한 것이다.
중복 제거(de-duplication)는 인입하는 데이터가 중복된 것인지를 결정하기 위해 저장 디바이스 상에 이미 존재하는 데이터와 인입하는 데이터를 비교하는 프로세스이다. 인입하는 데이터가 고유한 경우, 인입하는 데이터는 저장 디바이스에 저장된다. 인입하는 데이터가 중복되면, 인입하는 데이터는 저장되지 않는다. 대신, 이미 저장된 데이터에 대한 참조가 생성된다.
본 발명의 목적은 저장 디바이스에서 중복 데이터를 감소시키는 것이다.
본원에서 제시되는 시스템들 및 방법들은 데이터의 중복 제거를 제공한다. 하나의 실시예에서, I/O 모듈은 데이터를 기록하기 위해 I/O 동작을 생성하도록 동작 가능하다. 저장 디바이스는 I/O 모듈에 통신 가능하게 연결되고 저장 디바이스의 논리 어드레스(logical address)에 I/O 동작의 데이터를 기록하고 이 데이터에 기초하여 서명을 생성하도록 동작 가능하다. I/O 모듈은 데이터가 다른 논리 어드레스(예를 들어 다른 저장 디바이스 또는 기록되고 있는 디바이스 상의)에 있는지를 결정하기 위해 서명을 프로세싱하도록 더 동작 가능하다.
본원에서 기술되는 다양한 실시예들은 설계 선택의 문제로서 다양한 방식으로 구현될 수 있다. 예를 들어, 본원의 시스템 및 방법 실시예들은 컴퓨터 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합의 형태들을 취할 수 있다. 다른 예시적인 실시예들이 후술된다.
본 발명의 일부 실시예들은 이제 단지 예를 통해서만 그리고 첨부 도면들을 참조하여 기술될 것이다. 동일한 참조 번호는 모든 도면들 상에서 동일한 요소 또는 동일한 유형의 요소를 나타낸다.
도 1은 중복 데이터를 감소시키는 예시 시스템의 블록도이다.
도 2는 도 1의 시스템으로 동작 가능한 예시 프로세스의 흐름도이다.
도 3은 도 1의 시스템으로 동작 가능한 다른 예시 프로세스의 흐름도이다.
도 4는 예시 SSD 및 이의 연관되는 디바이스 제어기 및 저장 디바이스(들)의 블록도이다.
도 5는 SSD들 및 SSD들과 연관되고 호스트 시스템과 인터페이스하는 제어기들/저장 디바이스들을 포함하는 I/O 모듈의 블록도이다.
도 1은 중복 데이터를 감소시키는 예시 시스템의 블록도이다.
도 2는 도 1의 시스템으로 동작 가능한 예시 프로세스의 흐름도이다.
도 3은 도 1의 시스템으로 동작 가능한 다른 예시 프로세스의 흐름도이다.
도 4는 예시 SSD 및 이의 연관되는 디바이스 제어기 및 저장 디바이스(들)의 블록도이다.
도 5는 SSD들 및 SSD들과 연관되고 호스트 시스템과 인터페이스하는 제어기들/저장 디바이스들을 포함하는 I/O 모듈의 블록도이다.
도면들 및 다음의 설명은 본 발명의 특정한 예시 실시예를 도시한다. 그러므로 당업자는, 본원에 명시적으로 기술되거나 도시되지 않더라도, 본 발명의 원리들을 구현하고 본 발명의 범위 내에 포함되는 다양한 배열들을 고안할 수 있을 것임이 인정될 것이다. 더욱이, 본원에서 기술되는 임의의 예들은 본 발명의 원리들의 이해를 돕도록 의도되고 그와 같은 구체적으로 열거되는 예들 및 조건들로 제한되지 않는 것으로 해석되어야만 한다. 결과적으로, 본 발명은 아래에서 기술되는 특정한 실시예들 또는 예들로 제한되지 않는다.
도 1은 중복 데이터를 감소시키는 예시 시스템(100)의 블록도이다. 자체의 기본 형태의 시스템(100)은 저장 디바이스(102)로 I/O 동작들을 수행하도록 동작 가능한 I/O 모듈(101)을 포함한다. 이렇게 되어 있으면, I/O 모듈(101)은 저장 디바이스(102) 상에 데이터를 기록 저장하기 위해 기록 I/O를 수행한다. 저장 디바이스(102)는 기록 I/O의 데이터에 기초하여 서명을 생성 및 리턴(return)하도록 동작 가능한 서명 생성기(signature generator)(103)를 포함함으로써 I/O 모듈(101)이 데이터 서명을 프로세싱하고 이 데이터가 다른 어떤 곳에 위치되어 있는지를 결정할 수 있게 된다. 즉, I/O 모듈(101)은 동일하거나 다른 저장 디바이스의 다른 논리 어드레스(logical address)에서 기록 I/O의 데이터가 중복되는지를 결정하기 위하여 데이터 서명을 프로세싱할 수 있다.
I/O 모듈(101)은 저장 디바이스(102)로 I/O 동작들을 수행하고 이로부터 데이터 서명들을 프로세싱하도록 동작 가능한 임의의 시스템, 디바이스, 소프트웨어 또는 이들의 조합이다. 이 점에 있어서, I/O 모듈(101)은 임의의 컴퓨팅 시스템으로 구성될 수 있다(예를 들어, 호스트 시스템의 호스트 인터페이스로서). 제 1 예에서, I/O 모듈(101)은 저장 디바이스(102)를 포함하는 하나 이상의 저장 디바이스들에 연결되는 호스트 버스 어댑터(Host Bus Adaptor; HBA) 또는 레이드 온 칩(RAID-On-Chip; ROC) 제어기이다. I/O 모듈(101)은 일부 실시예들에서, 여분 정렬 독립 디스크(Redundant Array of Independent Disks; RAID) 저장 시스템과 같은 하나 이상의 저장 디바이스들을 관리할 수 있다. 제 2 예에서, I/O 모듈(101)은 저장 디바이스(102)를 포함하는 하나 이상의 저장 디바이스들에 연결되는(예를 들어 주변 구성요소 상호접속 고속접속(Peripheral Component Interconnect Express connection)들을 통해) 호스트 컴퓨터이다.
저장 디바이스(102)는 데이터를 저장할 수 있는 임의의 디바이스(예를 들어 컴퓨터 디스크 디바이스들, 비휘발성 랜덤 액세스 메모리(nonvolatile random access memory; NVRAM), 고체 상태 드라이브(solid state drive; SSD)들 등)이다. 일부 실시예들에서, 저장 디바이스(102)는 I/O 모듈(101)의 제어 하에 있는 I/O들을 캐싱(caching)하도록 동작 가능한 I/O 모듈(101)에 대한 캐시 메모리이다.
서명 생성기(103)는 기록 I/O 동작으로부터 데이터를 추출하고 I/O 동작의 데이터에 기초하여 서명을 생성하도록 동작 가능한 임의의 시스템, 디바이스, 소프트웨어 또는 이들의 조합이다. 그와 같은 데이터 서명들의 예들은 해시 코드(hash code) 생성기들, 체크섬(checksum) 생성기들 등을 포함한다. 따라서, 저장 디바이스(102)는 저장 디바이스(102)에 특정한 디바이스 제어기의 능력과 같은 임의의 종류의 프로세싱 능력을 가질 수 있다. 예를 들어, SSD들은 전형적으로 I/O 동작들을 프로세싱하고, 데이터를 버퍼링하고, 데이터를 저장 디바이스 내의 논리 어드레스들에 매핑(mapping)하는 것 등을 포함하여, SSD에 특정한 다양한 기능들을 수행하도록 동작 가능한 디바이스 제어기들로 구성된다. 이 점에 있어서, 저장 디바이스(102)의 디바이스 제어기는 또한 데이터 서명을 생성하고 I/O 모듈(101)에 의한 후속 프로세싱을 위해 이 서명을 I/O 모듈(101)로 리턴(return)하는데 사용될 수 있다. 시스템(100)의 동작에 관한 추가 세부사항들은 이제 도 2 및 도 3을 참조하여 기술된다.
도 2는 도 1의 시스템(100)으로 동작 가능한 예시 프로세스(200)의 흐름도이다. 더 구체적으로, 이 프로세스(200)는 I/O 모듈(101)이 기록 I/O 동작을 수행하고 상기 I/O 동작과 관련되는 저장 디바이스(102)로부터 데이터 서명을 프로세싱할 수 있는 하나의 예시 동작을 개시한다. 이 실시예에서, I/O 모듈(101)은 프로세스 요소(201)에서, 데이터를 저장 디바이스(102)의 논리 어드레스에 기록하라는 I/O 명령을 생성한다. 기록 I/O 명령을 프로세싱하면서, 저장 디바이스(102)는 기록 I/O 명령 내에 포함되는 데이터에 기초하여 서명을 생성하고 나서 상기 데이터 서명을 I/O 모듈(101)로 전송할 수 있다.
프로세스 요소(202)에서, I/O 모듈(101)은 프로세스 요소(201)에서 생성된 기록 I/O 명령의 데이터에 따라 저장 디바이스(102)에 의해 생성되는 데이터 서명을 수신한다. 저장 디바이스(102)는 또한 기록 동작의 성공 또는 다른 상태를 나타내는 확인응답을 I/O 모듈(101)에 전송할 수 있다. 이 점에 있어서, I/O 모듈(101)은 프로세스 요소(203)에서 데이터가 저장 디바이스(102)에 성공적으로 기록되었다는 저장 디바이스(102)에 의한 확인응답을 수신한다. 그 후에, I/O 모듈(101)은 프로세스 요소(204)에서 데이터가 이미 다른 저장 위치에(예를 들어, 저장 디바이스(102)의 다른 논리 어드레스 또는 일부 다른 저장 모듈에) 있는지를 결정하기 위해 데이터 서명을 프로세싱한다. 그러므로, 데이터가 이미 저장 디바이스(102)에 기록된 후에는 데이터 중복 결정들이 수행된다.
기록 I/O이 데이터가 다른 저장 위치에 있지 않으면(즉, 데이터가 고유하면), I/O 모듈(101)은 프로세스 요소(206)에서 기록 I/O의 데이터를 데이터가 바로 기록되었던(성공적으로 기록된 것으로 가정) 저장 디바이스(102)의 논리 어드레스와 연관시킨다. 그러나, 데이터가 이미 다른 저장 위치에 있다면(즉, 데이터가 중복이면), I/O 모듈(101)은 프로세스 요소(205)에서 저장 디바이스(102)에 바로 기록된 기록 데이터의 위치를 이미 존재하는 데이터와 연관시킨다. 즉, I/O 모듈(101)은 I/O 모듈(101)의 표(105) 내의 데이터의 위치(예를 들어 데이터 구조)를 이전에 기록된 데이터의 논리 어드레스로 업데이트한다. 이에 따라, 데이터가 바로 기록되었던 저장 디바이스(102)의 저장 공간은, 상기 데이터가 중첩 기록(over write)될 수 있도록 상기 데이터를 자유롭게 하기 위하여, 할당 해제되거나 트리밍(trimming)될 수 있다. 예를 들어, 소형 컴퓨터 시스템 인터페이스(Small Computer System Interface; SCSI) 프로토콜은 UNMAP 명령을 가지며 시리얼 AT 접속(Serial AT Attachment; SATA) 프로토콜은 더 이상 필요하지 않은 저장 공간을 할당 해제하기 위해 유사한 TRIM 명령을 가진다. 어느 경우이든, 일단 데이터 중복 결정이 수행되었다면, I/O 모듈(101)은 프로세스 요소(207)에서 다음 기록 I/O가 요청될 때까지(예를 들어 호스트 시스템에 의해) 대기한다. 다음 I/O 요청을 수신하자마자, I/O 모듈(101)은 프로세스 요소(201)로 리턴되어 프로세스(200)를 반복한다.
다른 실시예들에서, 다른 저장 위치에 이미 존재하고 있는 데이터가 검출되면, 다른 저장 위치는 할당 해제되는 저장 위치이고, 그 후에 다른 데이터의 위치는 저장 디바이스(102)에 바로 기록되었던 기록 데이터와 연관된다.
도 3은 도 1의 시스템과의 다른 예시 프로세스(300)의 흐름도이다. 더 구체적으로, 프로세스(300)는 I/O 모듈(101)로부터의 기록 I/O에 응답하는 저장 디바이스(102)의 하나의 예시 동작을 개시한다. 이 실시예에서, 저장 디바이스(102)는 프로세스 요소(301)에서 기록 I/O 명령을 프로세싱한다. 예를 들어, 저장 디바이스(102)는 기록 I/O 명령으로부터 데이터를 추출하고 데이터가 저장 디바이스(102) 내에 저장될 수 있는 논리 어드레스를 결정할 수 있다.
데이터가 기록 I/O 명령으로부터 추출됨으로써, 저장 디바이스(102)는 프로세스 요소(302)에서 기록 I/O 명령의 데이터에 기초하여 서명을 계산할 수 있다. 예를 들어, I/O 명령의 데이터는 해시 코드 또는 어떤 다른 코드가 데이터를 고유하게 표현하도록 보장하는 특정한 길이의 토글 비트(toggled bit)를 가질 수 있다. 그 후에 저장 디바이스(102)는 프로세스 요소(303)에서, 기록 I/O 명령에서 식별되는 저장 디바이스(102)의 논리 어드레스에 기록 I/O 명령의 데이터를 저장한다. 저장 디바이스(102)는 그 후에 프로세스 요소(304)에서 서명을 I/O 모듈(101)로 송신함으로써, I/O 모듈(101)이 상술한 중복 결정을 수행할 수 있게 된다.
본 발명은 전적으로 하드웨어 실시예, 전적으로 소프트웨어 실시예 또는 하드웨어 및 소프트웨어 요소들 모두를 포함하는 실시예의 형태를 취할 수 있다. 도 4 및 도 5는 상술한 시스템들 및 방법들을 사용하여 동작 가능할 수 있는 하드웨어 및 소프트웨어 실시예들의 조합을 도시한다. 더 구체적으로, 도 4는 예시 SSD(400) 및 이와 연관되는 디바이스 제어기(SSD 제어기(401)) 및 저장 디바이스(495)의 블록도이다. 도 5는 SSD(400)들 및 상기 SSD들과 연관되어 호스트 시스템(502)과 인터페이스하는 제어기들(401)/저장 디바이스들(495)을 포함하는 저장 모듈(516)의 블록도이다.
도 4에서, 저장 제어기(401)는 호스트 시스템과 인터페이스하여 호스트 시스템의 I/O 동작들을 통신하도록 동작 가능한 호스트 인터페이스(111)를 포함한다. 호스트 인터페이스(411)는 개별 I/O 명령들(판독 명령 및 저장 디바이스(495) 내의 특정한 어드레스들로의 기록 명령들)의 진행을 추적하도록 동작 가능한 태그 추적 모듈(413)을 구비하여 구성될 수 있다. 태그 추적 모듈(413)은 프로세싱의 상태를 식별하기 위해 명령의 프로세싱 동안 호스트 시스템으로부터 수신되는 명령의 외부 플래그(flag)를 SSD 제어기(401)가 액세스할 수 있는 내부 플래그와 연관시킬 수 있다.
SSD 제어기(100)는 또한 서명 생성기(422) 및 프로세싱 엔진(423)을 포함하는 데이터 프로세싱 모듈(421)을 포함한다. 일반적으로, 프로세싱 엔진(423)은 호스트 인터페이스(411)로부터 수신되거나 버퍼(431) 내에 상주하는 데이터를 포맷하고, 상기 데이터를 트랜스코딩(transcoding)하는 것 등과 같이 상기 데이터에 대해 특정한 임무들을 수행하도록 동작 가능하다. 예를 들어, 프로세싱 엔진(423)은 I/O 동작의 데이터가 저장 디바이스(495)의 논리 어드레스에 기록될 수 있도록 상기 동작을 일으키는 호스트 시스템의 I/O 모듈(예를 들어, I/O 모듈(101))로부터의 I/O 동작을 프로세싱하도록 동작 가능하다. 즉, 엔진(423)은 기록 I/O 명령의 데이터를 추출하고 저장 디바이스(495) 내에 저장하기 위해 이 데이터를 준비할 수 있다. 이 점에 있어서, 도 1의 서명 생성기(103)는 호스트 시스템으로의 리턴을 위해 기록 I/O 명령의 데이터에 기초하여 서명을 생성하는 데이터 프로세싱 모듈(421)을 구비하여 구성될 수 있어서, 호스트 시스템은 I/O 동작의 데이터가 다른 논리 어드레스에 위치되어 있는지(즉 다른 곳에 중복되어 있는지)를 결정할 수 있게 된다.
버퍼(431)는 호스트 시스템으로 또는 호스트 시스템으로부터 전송되는 데이터를 저장하도록 동작 가능하다. 버퍼(431)는 또한 예를 들어 메모리(437) 내에 고레벨 RAID 기능을 포함하는 개별 플래시 디바이스들(492) 중 하나 이상을 관리하기 위해 SSD 제어기(401)에 의해 사용되는 메모리 표들과 같은 시스템 데이터를 저장할 수 있다. 다른 모듈들은 고레벨 에러 정정 및 리던던시 기능을 제공하는 에러 정정 코드(error correcting code; ECC-X) 모듈(435) 및 버퍼(431)로부터 또는 버퍼(431)로의 데이터의 이동을 제어하는 직접 메모리 액세스(Direct Memory Access; DMA) 모듈(433)을 포함할 수 있다.
SDD 제어기(401)는 또한 다양한 에러 정정 코드 기술들(예를 들어, 순환 중복 검사(cyclic redundancy check)들, 해밍코드(Hammingcode)들, Bose-Chaudhuri-Hocquenghem(BCH) 코드들, 저 밀도 패리티 검사 코드(low-density parity check code)들 등) 중 임의의 기술을 사용하여 버퍼(431) 내의 데이터의 리던던시(redundancy) 프로세싱 및 하위 레벨 에러 정정을 제공하도록 동작 가능한 에러 정정 코드 모듈(461)을 포함한다.
디바이스 인터페이스 로직 모듈(491)은 플래시 디바이스(492)의 프로토콜에 따라 데이터를 개별 플래시 디바이스들(192)로 그리고 개별 플래시 디바이스들(192)로부터 전송하도록 동작 가능하다. 디바이스 인터페이스 로직 모듈(491)은 I/O 동작들을 플래시 디바이스(192)로 큐잉(queueing)하도록 동작 가능한 스케줄링 모듈(493)을 포함한다.
본원에서의 SSD 제어기(401)는 또한 표(443)에 따라 저장 디바이스(495) 내의 위치들에 데이터 어드레싱을 수행하도록 동작 가능한 맵 모듈(441)을 포함한다. 예를 들어, 맵 모듈(441)은 논리 블록 어드레스(logical block address; LBA)들을 호스트 시스템으로부터 개별 플래시 디바이스들(492) 중 하나 이상과 관련되는 어드레스들을 블록/페이지 어드레스로 변환하기 위한 표(443)를 사용할 수 있다.
재활용기(recycler)(451)는 저장 제어기(401) 대신 쓸모 없는 데이터(garbage)의 수집을 실행한다. 예를 들어, 재활용기(401)는 맵 모듈(441)의 표(443)를 스캐닝함으로써 능동적으로 사용되는 플래시 디바이스(492)의 부분들을 결정할 수 있다. 이 점에 있어서, 재활용기(451)는 플래시 디바이스(492)의 사용되지 않거나 "할당 해제된" 부분들을 소거함으로써 이 사용되지 않은 부분들을 기록에 이용 가능하게 할 수 있다. 재활용기(451)는 또한 플래시 디바이스들(492)의 더 큰 인접 부분들을 기록에 이용 가능하게 하기 위해 플래시 디바이스들(492) 내의 데이터를 이동시킬 수 있다. 이 점에 있어서, 데이터가 중복이라고 일단 I/O 모듈(101)이 결정하면, 재활용기(451)는 저장 디바이스(495) 내의 저장 공간을 소거하거나 할당 해제할 수 있다.
SSD 제어기(401)는 또한 SSD 제어기(401)의 다양한 양태들을 제어하는 CPU(471)를 포함한다. 예를 들어, CPU(471)는 호스트 시스템으로부터 수신되는 명령들을 추적 및 제어하는 명령 관리(473)를 구현하는 명령들 또는 펌웨어를 프로세싱할 수 있다. 펌웨어는 또한 맵 모듈(441)를 제어하기 위해 버퍼(431) 및 해석 관리(translation management)(477)의 할당 및 사용을 제어하는 버퍼 관리(475)를 구현할 수 있다. 펌웨어는 또한 데이터 어드레싱의 일관성을 제어하여 외부 데이터 액세스 및 재활용되는 데이터 액세스들 사이에서 발생할 수 있는 충돌들과 같은 충돌들을 방지하는 일관성 관리(coherency management)(479)를 이용할 수 있다. 펌웨어는 또한 디바이스 인터페이스 로직(491) 및 아이덴티티(identity) 관리(482)를 제어하여 SSD 제어기(401) 내의 구성요소들의 아이덴티티 정보의 수정 및 통신을 제어하는 디바이스 관리(481)를 제공할 수 있다.
도 5에서, 호스트 시스템(502)은 소프트웨어 명령들을 프로세싱하고 저장 모듈(516)로 I/O 동작들을 수행하여 SSD들(400)로부터 판독 그리고 SSD들(400)로 기록하도록 동작 가능하다. 이 점에 있어서, 호스트 시스템(502)은 호스트 시스템(502)에 컴퓨팅 환경을 제공하는 운영 시스템(505)을 포함할 수 있다. 드라이버(507)는 저장 모듈(516)로 구성되는 다양한 SSD들(400)로 I/O 동작을 수행하기 위해 링크(506)를 통해 상기 저장 모듈(516)과 통신하도록 동작 가능하다.
다른 컴퓨팅 시스템들과 같이, 운영 시스템(505)은 관리 소프트웨어(514)(예를 들어 Bios 소프트웨어)에 의해 개시될 수 있다. 호스트 시스템(502)은 또한 호스트 시스템(502)(예를 들어 워드 프로세싱 애플리케이션들, 이미지 프로세싱 애플리케이션들 등) 대신 다양한 컴퓨팅 프로세스들을 수행하는 애플리케이션 소프트웨어(509)를 포함할 수 있다. 호스트 시스템(502)은 또한 통신 네트워크(519)(예를 들어, 인터넷, 근거리 네트워크(local area network)들, 광대역 네트워크(wide area network)들 등)를 통해 하나 이상의 서버들(518)로 I/O 동작들을 수행하도록 동작 가능한 I/O 및 저장 기능(517)을 포함할 수 있다. 이 점에 있어서, 저장 모듈(516)은 호스트 시스템(502)에 대한 I/O 동작들의 캐시 메모리 역할을 할 수 있다.
저장 모듈(516)은 호스트 시스템(502)의 다양한 I/O 동작들을 SSD들(400)의 LBA들로 스위칭하도록 동작 가능한 중간 제어기(503)로 구성될 수 있다. 이 점에 있어서, 저장 모듈(516)은 LBA들에 I/O 동작들을 수행하기 위해 중간 제어기(503)에 대한 매핑 정보를 저장하는 메모리(512)를 포함할 수 있다.
예
호스트 시스템(502)의 사용자는 애플리케이션 소프트웨어(509)를 통해 일부 데이터를 동작 또는 생성할 수 있다. 운영 시스템(505)에 의해 제공되는 운영 시스템 환경 내에서 동작하는 애플리케이션 소프트웨어(509)는 네트워크(519)(예를 들어, 인터넷, 근거리 네트워크, 광대역 네트워크 등과 같은 데이터 네트워크)를 통해 서버(518)에 전송되거나 그렇지 않으면 서버(518)에 의해 데이터를 저장할 필요가 있을 수 있다. 따라서, 애플리케이션 소프트웨어(509)는 서버(518)의 논리 어드레스로의 기록 I/O 명령을 생성하라고 I/O 및 저장 모듈(517)에 지시할 수 있다. 대안으로 또는 추가로, 애플리케이션 소프트웨어(509)는 저장 모듈(516)에 대한 기록 I/O 명령을 생성하여 데이터를 SSD들(400) 중 하나에 저장하라고 드라이버(507)에 지시할 수 있다.
중간 제어기(503)는 기록 I/O 명령을 저장 모듈(516)의 적절한 SSD(400)로 스위칭함으로써 기록 I/O 명령의 데이터가 이 SSD(400)에 기록될 수 있게 된다. 일단 기록 I/O 명령이 적절한 SSD(400)에 의해 수신되면, SSD 제어기(401)는 데이터를 추출하고 이 데이터가 저장 디바이스(495)에 어디에 저장될 수 있는지에 대한 논리 어드레스를 추출한다.
데이터가 추출되었으므로, 선택된 SSD 제어기(401)는 상기 데이터에 기초하여 서명을 생성한다. 예시하기 위해, 텍스트 스트링 "the quick brown fox jumped over the lazy dog's back"는 "145edbabf68f32da04167e63f979b60f37d49a9182e5856404c77ed3c930d8805e42d0e462e19688834117bb14bd80ace55df52e44e2e8d48935c7877ea2d931"의 고유 코드를 산출하도록 SHA-512 해시 코드 생성기에 의해 인코딩될 수 있다. 선택된 SSD 제어기(401)는 데이터를 저장 디바이스(495)의 원하는 논리 어드레스에 기록하기 위해 상기 데이터를 맵(441)을 통해 저장 디바이스(495)에 매핑한다. 그 후에 SSD 제어기(401)는 고유 해시 코드를 호스트 시스템(502)으로 리턴함으로써, 호스트 시스템(502)의 관리 소프트웨어(514)가 리턴된 해시 코드를 프로세싱하고 이 코드가 다른 곳(예를 들어, 서버(518) 및 다른 SSD(400), 또는 어떤 다른 저장 디바이스에)에 저장되는지를 결정할 수 있도록 한다.
호스트 시스템(502)은 다양한 저장 디바이스들 내에 저장되는 데이터를 나타내는 해시 코드들을 (예를 들어 해시 표에) 저장할 수 있다. 호스트 시스템(502)은 이 해시 코드들의 목록을 검사하여 수신되는 해시 코드가 이전의 해시 코드와 동일한지를 결정할 수 있다. 만일 동일하다면, 호스트 시스템(502)(예를 들어 I/O 모듈(101)을 통하는)은 표(105)를 이전에 저장된 데이터의 어드레스로 업데이트한다. 그 후에 호스트 시스템(502)은 데이터가 방금 기록되었던 저장 디바이스(495)의 논리 어드레스에서의 저장 공간이 오버라이딩(overriding)되거나 트리밍(trimming)될 수 있도록 상기 저장 공간을 할당 해제하도록 SDD(400)에 지시할 수 있다. 추가로, SSD 제어기(401)는 데이터가 적절한 SSD(400)/저장 디바이스(495)에 성공적으로 기록되었음을 호스트 시스템(502)에 보증하기 위해 기록된 데이터의 상태 메시지를 리턴할 수 있다. 다시, 수신된 코드가 실제로 고유하다고 호스트 시스템(502)이 결정하면, 호스트 시스템(502)(예를 들어 관리 소프트웨어(514)를 통한)은 저장 디바이스(495)의 논리 어드레스를 가지는 데이터의 위치를 표(105)에 저장되었던 데이터와 연관시킨다.
본원에서 기술되는 실시예들에 따르면, 서명 생성은 유용하게 레벨들을 내리기 위해 밀어 내려지고 여기서 이것은 더 유사하고 분산적인 방식으로 행해질 수 있다. 데이터는 자체의 궁극의 배치와는 관계없이 신속하게 기재되도록 추론적으로 기록된다(예를 들어 SSD(400)에서의 데이터의 후속 중첩 기록). 이것은 또한 데이터가 고도로 압축 가능한 경우 중복 제거가 무시될 수 있으므로 프로세싱 비용들의 트레이드-오프(trade-off) 비교(예를 들어 중복 제거 비용 대 압축성)를 제공한다. 예를 들어, 호스트 시스템(502)은 서명을 보고할 때 그리고/또는 기록 데이터가 고유한지를 결정할 때 기록 데이터의 압축성의 값을 구할 수 있다. 저장 모듈(516)은, 이 점에 있어서, 호스트 시스템(502)이 압축된 데이터가 충분히 고유한지를 결정할 수 있도록 기록 응답/서명과 함께 기록된 데이터의 압축비를 리턴할 수 있다. 즉, 본원에서의 실시예들은 크기 면에서 이미 축소된 중복 데이터를 추적하는 프로세싱 비용을 유용하게 축소하도록 데이터가 고도로 압축되어 있을 때 호스트 시스템(502)에 중복된 데이터를 무시하는 능력을 제공한다. 예를 들어, 모두 0인 데이터는 일반적이고 모두 0인 데이터의 중복들을 추적하는 것은 일부 예들에서, 압축을 이용하고 모두 0인 데이터를 바로 저장하는 것만큼 프로세싱 능력 측면에서 비용 효율적이지 않다.
Claims (10)
- 시스템(100)으로서,
데이터를 기록하기 위해 입력/출력 동작을 생성하도록 동작 가능한 입력/출력 모듈(101)과,
상기 입력/출력 모듈에 통신 가능하게 연결되고 저장 디바이스의 논리 어드레스에 상기 입력/출력 동작의 데이터를 기록하고 상기 데이터에 기초하여 서명을 생성하도록 동작 가능한 저장 디바이스(102)를 포함하되,
상기 입력/출력 모듈은 상기 데이터가 다른 논리 어드레스에 있는지를 결정하기 위해 상기 서명을 프로세싱하도록 더 동작 가능한
시스템.
- 제 1 항에 있어서,
상기 입력/출력 모듈은 상기 데이터가 상기 다른 논리 어드레스에 있다고 결정할 시에 상기 저장 디바이스의 논리 어드레스에서의 저장 공간을 할당 해제하도록 상기 저장 디바이스에 지시하도록 더 동작 가능한
시스템.
- 제 1 항에 있어서,
상기 다른 논리 어드레스는 다른 저장 디바이스 내에 위치되는
시스템.
- 제 1 항에 있어서,
상기 저장 디바이스는 해시 코드(a hash code)를 사용하여 상기 서명을 생성하도록 더 동작 가능한
시스템.
- 제 1 항에 있어서,
상기 저장 디바이스는 상기 입력/출력 동작의 데이터를 상기 저장 디바이스의 비휘발성 메모리에 기록하고, 상기 입력/출력 동작의 상태를 상기 입력/출력 모듈에 리턴(return)하도록 더 동작 가능한
시스템.
- 방법(200)으로서,
저장 디바이스의 논리 어드레스에 데이터를 기록하기 위해 입력/출력 동작을 생성하는 단계(201)와,
상기 데이터에 따라 상기 저장 디바이스에 의해 생성되는 서명을 수신하는 단계(202)와,
상기 입력/출력 동작의 데이터가 기록되었다는 상기 저장 디바이스에 의한 확인응답을 수신하는 단계(203)와,
상기 데이터가 다른 논리 어드레스에 있는지를 결정하기 위해 상기 서명을 프로세싱하는 단계(204)를 포함하는
방법.
- 제 6 항에 있어서,
상기 다른 논리 어드레스를 다른 저장 디바이스 내에서 검출하는 단계를 더 포함하는
방법.
- 제 6 항에 있어서,
상기 데이터가 상기 다른 논리 어드레스에 있다고 결정할 시에 상기 저장 디바이스의 논리 어드레스에 있는 데이터를 할당 해제하도록 상기 저장 디바이스에 지시하는 단계를 더 포함하는
방법.
- 제 6 항에 있어서,
해시 코드를 사용하여 상기 서명을 생성하는 단계를 더 포함하는
방법.
- 제 6 항에 있어서,
상기 입력/출력 동작의 데이터를 상기 저장 디바이스의 비휘발성 메모리에 기록하는 단계와,
상기 기록이 성공했는지를 결정하기 위해 상기 저장 디바이스로부터의 상기 기록의 상태를 프로세싱하는 단계를 더 포함하는
방법.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361782122P | 2013-03-14 | 2013-03-14 | |
US61/782,122 | 2013-03-14 | ||
US13/939,345 US20140281155A1 (en) | 2013-03-14 | 2013-07-11 | Storage device assisted data de-duplication |
US13/939,345 | 2013-07-11 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20140113565A true KR20140113565A (ko) | 2014-09-24 |
Family
ID=50486737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140030596A KR20140113565A (ko) | 2013-03-14 | 2014-03-14 | 저장 디바이스 보조형 데이터 중복 제거 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20140281155A1 (ko) |
EP (1) | EP2778890A3 (ko) |
JP (2) | JP2014179094A (ko) |
KR (1) | KR20140113565A (ko) |
CN (1) | CN104049911A (ko) |
TW (1) | TWI521425B (ko) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102140792B1 (ko) * | 2013-12-24 | 2020-08-03 | 삼성전자주식회사 | 데이터 중복 제거를 수행할 수 있는 데이터 저장 장치의 동작 방법들 |
TWI540582B (zh) * | 2014-07-10 | 2016-07-01 | 群聯電子股份有限公司 | 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置 |
US9740631B2 (en) * | 2014-10-07 | 2017-08-22 | Google Inc. | Hardware-assisted memory compression management using page filter and system MMU |
CN104391915B (zh) * | 2014-11-19 | 2016-02-24 | 湖南国科微电子股份有限公司 | 一种数据重删方法 |
US10437784B2 (en) * | 2015-01-30 | 2019-10-08 | SK Hynix Inc. | Method and system for endurance enhancing, deferred deduplication with hardware-hash-enabled storage device |
WO2017068617A1 (ja) * | 2015-10-19 | 2017-04-27 | 株式会社日立製作所 | ストレージシステム |
US9983821B2 (en) * | 2016-03-29 | 2018-05-29 | Samsung Electronics Co., Ltd. | Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application |
US10409518B1 (en) | 2017-04-20 | 2019-09-10 | Seagate Technology Llc | Reordered local data deduplication in storage devices |
US11010233B1 (en) | 2018-01-18 | 2021-05-18 | Pure Storage, Inc | Hardware-based system monitoring |
US11615185B2 (en) | 2019-11-22 | 2023-03-28 | Pure Storage, Inc. | Multi-layer security threat detection for a storage system |
US12050689B2 (en) | 2019-11-22 | 2024-07-30 | Pure Storage, Inc. | Host anomaly-based generation of snapshots |
US11520907B1 (en) | 2019-11-22 | 2022-12-06 | Pure Storage, Inc. | Storage system snapshot retention based on encrypted data |
US11675898B2 (en) | 2019-11-22 | 2023-06-13 | Pure Storage, Inc. | Recovery dataset management for security threat monitoring |
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 |
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 |
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 |
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 |
US11341236B2 (en) | 2019-11-22 | 2022-05-24 | Pure Storage, Inc. | Traffic-based detection of a security threat to a storage system |
US12079356B2 (en) | 2019-11-22 | 2024-09-03 | Pure Storage, Inc. | Measurement interval anomaly detection-based generation of snapshots |
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 |
US11651075B2 (en) | 2019-11-22 | 2023-05-16 | Pure Storage, Inc. | Extensible attack monitoring by a storage system |
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 |
US11687418B2 (en) | 2019-11-22 | 2023-06-27 | Pure Storage, Inc. | Automatic generation of recovery plans specific to individual storage elements |
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 |
US11500788B2 (en) * | 2019-11-22 | 2022-11-15 | Pure Storage, Inc. | Logical address based authorization of operations with respect to 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 |
US11941116B2 (en) | 2019-11-22 | 2024-03-26 | Pure Storage, Inc. | Ransomware-based data protection parameter modification |
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 |
KR102267477B1 (ko) * | 2020-02-20 | 2021-06-22 | 삼성전자주식회사 | 스토리지 장치 및 이의 동작 방법 |
CN114077569B (zh) | 2020-08-18 | 2023-07-18 | 富泰华工业(深圳)有限公司 | 压缩数据的方法及设备、解压缩数据的方法及设备 |
TWI758825B (zh) * | 2020-08-18 | 2022-03-21 | 鴻海精密工業股份有限公司 | 壓縮資料之方法及設備、解壓縮資料之方法及設備 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008009859A (ja) * | 2006-06-30 | 2008-01-17 | Canon Inc | 検索インデックス作成装置及び検索インデックス作成方法 |
US20110055471A1 (en) * | 2009-08-28 | 2011-03-03 | Jonathan Thatcher | Apparatus, system, and method for improved data deduplication |
CN102741800B (zh) * | 2009-09-18 | 2015-11-25 | 株式会社日立制作所 | 删除复制数据的存储系统 |
US8156306B1 (en) * | 2009-12-18 | 2012-04-10 | Emc Corporation | Systems and methods for using thin provisioning to reclaim space identified by data reduction processes |
US9223511B2 (en) * | 2011-04-08 | 2015-12-29 | Micron Technology, Inc. | Data deduplication |
-
2013
- 2013-07-11 US US13/939,345 patent/US20140281155A1/en not_active Abandoned
-
2014
- 2014-03-13 TW TW103109141A patent/TWI521425B/zh not_active IP Right Cessation
- 2014-03-13 JP JP2014050312A patent/JP2014179094A/ja active Pending
- 2014-03-14 EP EP14160056.9A patent/EP2778890A3/en not_active Withdrawn
- 2014-03-14 CN CN201410165333.XA patent/CN104049911A/zh active Pending
- 2014-03-14 KR KR1020140030596A patent/KR20140113565A/ko not_active Application Discontinuation
-
2016
- 2016-08-05 JP JP2016154509A patent/JP2016189225A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
EP2778890A2 (en) | 2014-09-17 |
TWI521425B (zh) | 2016-02-11 |
JP2014179094A (ja) | 2014-09-25 |
US20140281155A1 (en) | 2014-09-18 |
TW201506769A (zh) | 2015-02-16 |
EP2778890A3 (en) | 2017-05-03 |
CN104049911A (zh) | 2014-09-17 |
JP2016189225A (ja) | 2016-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20140113565A (ko) | 저장 디바이스 보조형 데이터 중복 제거 | |
US9996435B2 (en) | Reliability scheme using hybrid SSD/HDD replication with log structured management | |
US8850114B2 (en) | Storage array controller for flash-based storage devices | |
US9304685B2 (en) | Storage array system and non-transitory recording medium storing control program | |
US20150331624A1 (en) | Host-controlled flash translation layer snapshot | |
US9009395B2 (en) | Storage subsystem and its data processing method for reducing the amount of data to be stored in nonvolatile memory | |
CN111164574A (zh) | 基于存储设备内部地址的冗余编码条带 | |
US9026845B2 (en) | System and method for failure protection in a storage array | |
US20190324859A1 (en) | Method and Apparatus for Restoring Data after Power Failure for An Open-Channel Solid State Drive | |
KR20170125178A (ko) | Raid 스토리지 장치 및 그것의 관리 방법 | |
KR20180091296A (ko) | 손상된 메타 데이터를 처리하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법 | |
US10459803B2 (en) | Method for management tables recovery | |
JP2018073040A (ja) | メモリシステム | |
WO2019240848A1 (en) | Placement of host data based on data characteristics | |
US11893269B2 (en) | Apparatus and method for improving read performance in a system | |
US11042316B1 (en) | Reordered data deduplication in storage devices | |
US10031689B2 (en) | Stream management for storage devices | |
JP6817340B2 (ja) | 計算機 | |
US11256435B2 (en) | Method and apparatus for performing data-accessing management in a storage server | |
KR20220086934A (ko) | 비휘발성 메모리 시스템의 저널링 제어 장치 및 방법 | |
CN113687769A (zh) | 用于提高数据处理系统中的操作效率的设备和方法 | |
US9639417B2 (en) | Storage control apparatus and control method | |
WO2015118680A1 (ja) | ストレージ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application | ||
E902 | Notification of reason for refusal |