KR20140113565A - 저장 디바이스 보조형 데이터 중복 제거 - Google Patents

저장 디바이스 보조형 데이터 중복 제거 Download PDF

Info

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
Application number
KR1020140030596A
Other languages
English (en)
Inventor
얼 코헨
Original Assignee
엘에스아이 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엘에스아이 코포레이션 filed Critical 엘에스아이 코포레이션
Publication of KR20140113565A publication Critical patent/KR20140113565A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-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

저장 디바이스 보조형 데이터 중복 제거{STORAGE DEVICE ASSISTED DATA DE-DUPLICATION}
관련 출원들과의 상호 참조
본 특허 출원은 전체 내용이 이에 참조로서 포함되는 미국 특허 가출원 번호 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은 중복 데이터를 감소시키는 예시 시스템(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)

  1. 시스템(100)으로서,
    데이터를 기록하기 위해 입력/출력 동작을 생성하도록 동작 가능한 입력/출력 모듈(101)과,
    상기 입력/출력 모듈에 통신 가능하게 연결되고 저장 디바이스의 논리 어드레스에 상기 입력/출력 동작의 데이터를 기록하고 상기 데이터에 기초하여 서명을 생성하도록 동작 가능한 저장 디바이스(102)를 포함하되,
    상기 입력/출력 모듈은 상기 데이터가 다른 논리 어드레스에 있는지를 결정하기 위해 상기 서명을 프로세싱하도록 더 동작 가능한
    시스템.
  2. 제 1 항에 있어서,
    상기 입력/출력 모듈은 상기 데이터가 상기 다른 논리 어드레스에 있다고 결정할 시에 상기 저장 디바이스의 논리 어드레스에서의 저장 공간을 할당 해제하도록 상기 저장 디바이스에 지시하도록 더 동작 가능한
    시스템.
  3. 제 1 항에 있어서,
    상기 다른 논리 어드레스는 다른 저장 디바이스 내에 위치되는
    시스템.
  4. 제 1 항에 있어서,
    상기 저장 디바이스는 해시 코드(a hash code)를 사용하여 상기 서명을 생성하도록 더 동작 가능한
    시스템.
  5. 제 1 항에 있어서,
    상기 저장 디바이스는 상기 입력/출력 동작의 데이터를 상기 저장 디바이스의 비휘발성 메모리에 기록하고, 상기 입력/출력 동작의 상태를 상기 입력/출력 모듈에 리턴(return)하도록 더 동작 가능한
    시스템.
  6. 방법(200)으로서,
    저장 디바이스의 논리 어드레스에 데이터를 기록하기 위해 입력/출력 동작을 생성하는 단계(201)와,
    상기 데이터에 따라 상기 저장 디바이스에 의해 생성되는 서명을 수신하는 단계(202)와,
    상기 입력/출력 동작의 데이터가 기록되었다는 상기 저장 디바이스에 의한 확인응답을 수신하는 단계(203)와,
    상기 데이터가 다른 논리 어드레스에 있는지를 결정하기 위해 상기 서명을 프로세싱하는 단계(204)를 포함하는
    방법.
  7. 제 6 항에 있어서,
    상기 다른 논리 어드레스를 다른 저장 디바이스 내에서 검출하는 단계를 더 포함하는
    방법.
  8. 제 6 항에 있어서,
    상기 데이터가 상기 다른 논리 어드레스에 있다고 결정할 시에 상기 저장 디바이스의 논리 어드레스에 있는 데이터를 할당 해제하도록 상기 저장 디바이스에 지시하는 단계를 더 포함하는
    방법.
  9. 제 6 항에 있어서,
    해시 코드를 사용하여 상기 서명을 생성하는 단계를 더 포함하는
    방법.
  10. 제 6 항에 있어서,
    상기 입력/출력 동작의 데이터를 상기 저장 디바이스의 비휘발성 메모리에 기록하는 단계와,
    상기 기록이 성공했는지를 결정하기 위해 상기 저장 디바이스로부터의 상기 기록의 상태를 프로세싱하는 단계를 더 포함하는
    방법.
KR1020140030596A 2013-03-14 2014-03-14 저장 디바이스 보조형 데이터 중복 제거 KR20140113565A (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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