KR20180019051A - 스마트 스토리지 장치 내에서 데이터 스크러빙을 실행하는 방법 - Google Patents

스마트 스토리지 장치 내에서 데이터 스크러빙을 실행하는 방법 Download PDF

Info

Publication number
KR20180019051A
KR20180019051A KR1020170051804A KR20170051804A KR20180019051A KR 20180019051 A KR20180019051 A KR 20180019051A KR 1020170051804 A KR1020170051804 A KR 1020170051804A KR 20170051804 A KR20170051804 A KR 20170051804A KR 20180019051 A KR20180019051 A KR 20180019051A
Authority
KR
South Korea
Prior art keywords
data
attribute
error correction
scrubbing
storage controller
Prior art date
Application number
KR1020170051804A
Other languages
English (en)
Other versions
KR102094932B1 (ko
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 KR20180019051A publication Critical patent/KR20180019051A/ko
Application granted granted Critical
Publication of KR102094932B1 publication Critical patent/KR102094932B1/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • G06F11/106Correcting systematically all correctable errors, i.e. scrubbing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • 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
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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

Abstract

본 기재의 측면들에 따르면, 스마트 스토리지 장치는 응용들에 의해 전달되는 데이터 위치 외에 속성들을 포함하는 정보에 기반하여 지능적으로 데이터를 선택하고, 그리고 이러한 데이터에서 읽기 스크러빙을 수행하고 그리고 결과를 응용들에 보고할 수 있다.

Description

스마트 스토리지 장치 내에서 데이터 스크러빙을 실행하는 방법{METHOD OF EXECUTING DATA SCRUBBING INSIDE A SMART STORAGE DEVICE}
본 기재는 데이터 스토리지 장치들의 분야에 관한 것으로, 특히 데이터 스토리지 장치에서 데이터를 스크러빙(scrubbing)하는 것에 관한 것이다.
데이터 스크러빙(data scrubbing)은 주기적으로 에러들에 대해 메모리 또는 스토리지를 검사하고, 그리고 검사 합들(checksums), 에러 정정 코드들, 또는 데이터의 사본들의 형태인 잉여 데이터를 이용하여 에러들을 정정하는 배경 작업이다.
많은 응용들(applications)이 데이터 스크러빙을 사용한다. 예를 들어, 파일 시스템은 스토리지 장치들에 저장된 데이터의 무결성을 체크하기 위하여 데이터 스크러빙을 활용하고, 그리고 데이터베이스는 데이터베이스 기록들의 무결성을 체크하기 위하여 데이터 스크러빙을 활용할 수 있다.
데이터 스크러빙 동작의 일부로서, 응용은 일반적으로 데이터의 위치들을(예를 들어, 시작 논리 블록 어드레스 및 길이와 같은) 스토리지 장치로 전달함으로써 어느 데이터에서 스크러빙을 수행할지를 식별한다. 이후에 스토리지 장치는 지정된 데이터를 읽고 그리고 그것의 무결성을 체크할 수 있다.
이 배경 기술 섹션에서 기재된 위의 정보는 발명의 배경 기술의 이해의 확장만을 위한 것이며, 따라서 이 분야에 일반적인 기술을 가진 자에게 이미 알려진 종래 기술을 형성하지 않는다.
본 발명의 목적은 향상된 성능을 갖는 스토리지 장치를 제공하는 데에 있다.
본 기재의 측면들에 따르면, 스마트 스토리지 장치는 응용들(applications)에 의해 전달되는 정보(데이터 위치 외에 속성들을 포함하는)에 기반하여 지능적으로 데이터를 선택하고, 그리고 이러한 데이터에서 스크러빙(예를 들어, 읽기 스크러빙)을 수행하고 그리고 결과를 응용들에 보고할 수 있다.
본 기재의 일 측면에 따르면, 전자 장치가 제공된다. 전자 장치는 스크러빙 검색 기준을 수신하도록 구성되는 스토리지 제어기를 포함한다. 스토리지 제어기는 데이터 분석 엔진 및 에러 검출 엔진을 포함한다. 데이터 분석 엔진은 컴퓨터로 독출되는 매체에 포함된 데이터 요소와 연관된 데이터 속성 객체를 액세스하도록 구성된다. 각 데이터 요소는 데이터 속성 객체와 연관되어 저장되고, 각 데이터 요소는 데이터 객체 및 에러 정정 객체를 포함하고, 상기 데이터 분석 엔진은 상기 스크러빙 검색 기준에 대응하는 데이터 속성 객체들과 연관된 상기 컴퓨터로 독출되는 매체에 포함된 데이터 요소들을 검색하도록 더 구성된다. 에러 검출 엔진은 상기 스크러빙 검색 기준에 대응하는 데이터 속성 객체와 연관하여 검색된 각 데이터 요소에 대해, 상기 데이터 객체를 상기 에러 정정 객체와 비교하여 상기 데이터 객체가 에러들을 포함하는지 판단하도록 구성된다.
일 실시 예에서, 전자 장치는 상기 컴퓨터로 독출되는 매체를 더 포함한다.
일 실시 예에서, 상기 에러 검출 엔진은 어느 데이터 요소들이 에러들을 포함하는 데이터 객체들을 포함하는지 가리키는 보고를 출력하도록 더 구성된다.
일 실시 예에서, 상기 스토리지 제어기는 식별된 버퍼 위치를 수신하도록 더 구성되고, 상기 에러 검출 엔진은 상기 보고를 상기 식별된 버퍼 위치로 출력하도록 더 구성된다.
일 실시 예에서, 상기 데이터 속성 객체들에 포함된 각 속성에 대한 속성 인덱스를 더 포함한다. 상기 데이터 분석 엔진은 상기 속성 인덱스를 액세스함으로써 데이터 요소들과 연관된 데이터 속성 객체들을 액세스한다. 그리고 상기 데이터 분석 엔진은 상기 속성 인덱스를 활용함으로써 상기 스크러빙 검색 기준에 대응하는 데이터 속성 객체들과 연관된 데이터 요소들을 검색하여 어느 데이터 요소들이 상기 스크러빙 검색 기준에 대응하는지 판단한다.
일 실시 예에서, 상기 속성 인덱스는 정렬된 나무(sorted tree)이다.
일 실시 예에서, 상기 스토리지 제어기는 데이터 및 상기 데이터를 기술하는 속성 값들을 수신하도록 더 구성되고, 그리고 상기 스토리지 제어기는 새로운 데이터 요소 및 상기 새로운 데이터 요소와 연관된 새로운 데이터 속성 객체를 생성하도록 구성되고, 상기 새로운 데이터 속성 객체는 상기 수신된 속성 값들을 포함하고, 상기 새로운 데이터 요소의 상기 데이터 객체는 상기 수신된 데이터를 포함한다.
일 실시 예에서, 상기 스토리지 제어기는 하나 또는 그보다 많은 속성 값들을 생성하도록 더 구성되고, 상기 새로운 데이터 요소와 연관된 상기 새로운 데이터 속성 객체는 상기 하나 또는 그보다 많은 생성된 속성 값들을 포함한다.
일 실시 예에서, 상기 스토리지 제어기는 상기 수신된 데이터에 대응하는 에러 정정 값을 생성하도록 더 구성되고, 상기 새로운 데이터 요소의 상기 에러 정정 객체는 상기 에러 정정 값을 포함한다.
일 실시 예에서, 상기 데이터 속성 객체들에 포함된 각 속성에 대한 속성 인덱스를 더 포함하고, 상기 스토리지 제어기는 상기 새로운 데이터 요소에 대응하는 노드를 포함하도록 각 데이터 속성 인덱스를 갱신하도록 더 구성된다.
본 기재의 또 다른 측면에서, 데이터 스토리지 장치에서 스크러빙을 수행하는 방법이 제공된다. 하나 또는 그보다 많은 데이터 요소들이 상기 데이터 스토리지 장치에 저장되고, 각 데이터 요소는 하나 또는 그보다 많은 데이터 속성들과 연관되어 저장되고, 각 데이터 요소는 데이터 객체 및 에러 정정 객체를 포함한다. 방법은 프로세서에 의해 스크러빙 검색 기준을 수신하는 단계, 상기 프로세서에 의해 상기 스크러빙 검색 기준에 대응하는 데이터 속성들과 연관된 데이터 요소들의 위치를 찾는 단계, 상기 프로세서에 의해 상기 스크러빙 검색 기준에 대응하는 상기 데이터 속성들을 갖는 상기 위치가 찾아진 데이터 요소들 각각이 스크러브될 것을 필요로 하는지 판단하는 단계, 그리고 상기 프로세서에 의해 어느 데이터 요소들이 그들의 데이터 객체들에 에러들을 포함하는지 가리키는 보고를 출력하는 단계를 포함한다.
본 발명의 또 다른 측면에서, 데이터 스크러빙 장치가 제공된다. 데이터 스크러빙 장치는 데이터 요소들을 포함하는 컴퓨터로 독출 가능한 매체를 포함하고, 각 데이터 요소는 데이터 속성 객체와 연관되어 저장되고, 각 데이터 요소는 데이터 객체 및 에러 정정 객체를 포함하고, 각 데이터 속성 객체는 정해진 수의 속성들을 포함한다. 데이터 스크러빙 장치는 또한 데이터 속성 객체들에 포함된 각 속성에 대한 속성 인덱스를 포함한다. 데이터 스크러빙 장치는 또한 스크러빙(scrubbing) 검색 기준 및 식별된 버퍼 위치를 수신하도록 구성되는 스토리지 제어기를 포함한다. 스토리지 제어기는 데이터 분석 엔진 및 에러 검출 엔진을 포함한다. 데이터 분석 엔진은 속성 인덱스들을 활용하여 상기 스크러빙 검색 기준에 대응하는 데이터 속성 객체들과 연관되어 상기 컴퓨터로 독출 가능한 매체에 저장된 데이터 요소들을 검색하도록 구성된다. 에러 검출 엔진은 상기 스크러빙 검색 기준에 대응하는 데이터 속성 객체와 연관되어 검색된 각 데이터 요소에 대해 상기 데이터 객체를 상기 에러 정정 객체와 비교하여 상기 데이터 객체가 에러들을 포함하는지 판단하고, 그리고 어느 데이터 요소들이 에러들을 포함하는 데이터 객체들을 포함하는지를 가리키는 보고를 상기 식별된 버퍼 위치로 출력하도록 더 구성된다.
본 발명에 따르면, 스크러빙은 스마트 스토리지 장치에서 수행된다. 따라서, 스마트 스토리지 장치의 성능이 향상되고, 스마트 스토리지 장치를 사용하는 호스트의 작업 부하가 경감된다.
상세한 설명과 함께, 첨부된 도면들은 본 기재의 예시적인 실시 예들을 보여주며, 설명과 함께 본 발명의 원리를 설명한다.
도 1은 본 기재의 실시 예들에 따른 스토리지 장치의 블록도이다.
도 2는 본 기재의 실시 예들에 따른 데이터 속성 객체의 다이어그램이다.
도 3은 본 기재의 실시 예들에 따른 제1 및 제2 속성 인덱스들의 다이어그램이다.
도 4는 본 기재의 실시 예들에 따라 스크러브할 데이터의 위치를 찾는 절차를 설명하는 순서도이다.
도 5는 본 기재의 실시 예들에 따라 외부의 제어기로부터 수신된 쓰기 커맨드의 다이어그램이다.
도 6은 본 기재의 실시 예들에 따라 스토리지 장치에 데이터를 기입하는 것을 설명하는 순서도이다.
아래의 상세한 설명에서, 본 발명의 특정한 예시적인 실시 예들만이 예시적인 방법으로 도시 및 설명된다. 이 분야에 숙련된 자들이 알 수 있는 바와 같이, 본 발명은 수많은 상이한 형태들로 구현될 수 있으며, 여기에 제시된 실시 예들로 한정되는 것으로 해석되지 않아야 한다. 각 예시적인 실시 예의 특성들 또는 측면들의 설명들은 통상적으로 다른 예시적인 실시 예들의 다른 유사한 특성들 또는 측면들에 대해 가능한 것으로 여겨져야 한다. 유사한 참조 번호들은 상세한 설명에 걸쳐 유사한 요소들을 지칭한다.
본 기재는 스마트 스토리지 장치에 관한 것이다. 스마트 스토리지 장치는 속성(attribute) 값들과 연관하여 데이터를 저장한다. 속성 값들은 데이터 및 데이터가 오염되었는지를 판단하는 데에 사용될 수 있는 에러 정정 값을 기술한다. 스마트 스토리지 장치는 외부의 장치 또는 응용(application)으로부터 스크러빙(scrubbing) 검색 기준을 수신할 수 있다. 스크러빙 검색 기준은 스크러브(scrub) 될 데이터에 속한 속성들을 기술하지만, 그러나, 스크러브 될 데이터의 위치들을 포함하지 않을 수 있다. 스마트 스토리지 장치는 스크러빙 검색 기준에 부합하는 데이터에 대해 데이터 스크러빙을 수행하고, 스마트 스토리지 장치에 저장된 어느 데이터가 스크러빙 검색 기준에 부합하고 오염되었는지를 가리키는 보고를 출력할 수 있다.
도 1은 본 기재의 실시 예들에 따른 스토리지 장치의 블록도이다. 스토리지 장치(100)는 스토리지 제어기(110)(예를 들어, 디스크 제어기) 및 스토리지 매체(120)를 포함한다. 스토리지 제어기(110)는 외부 제어기(130)와 통신할 수 있다. 일부 실시 예들에서, 외부 제어기(130)는 스토리지 매체(120)에 보관된 데이터를 관리하는 파일 시스템을 실행할 수 있다. 다른 실시 예들에서, 외부 제어기(130)는 스토리지 매체(120)에 보관된 데이터를 데이터베이스로 관리할 수 있다.
데이터는 스토리지 매체(120)에 데이터 요소들(125a~125d)(총괄하여 "데이터 요소(125)로 참조됨)의 형태로 저장된다. 각 데이터 요소(125)는 데이터 속성 객체(121a~121d)(총괄하여 "데이터 속성 객체(121)"로 참조됨), 데이터 객체(122a~122d)(총괄하여 "데이터 객체(122)"로 참조됨), 그리고 에러 정정 객체(123a~123d)(총괄하여 "에러 정정 객체(123)"로 참조됨)(예를 들어, 검사 합(checksum) 값)를 포함한다.
데이터 객체(122)는, 외부 제어기(130)와 같은 장치가 저장 매체(120)에 저장하였던 실질적인 데이터를 포함한다.
에러 정정 객체(123)는 대응하는 데이터 객체에 포함된 데이터에 대한 잉여 데이터를 포함한다(예를 들어, 에러 정정 객체(123a)는 데이터 객체(122a)에 포함된 데이터에 대한 잉여 데이터를 포함하고, 에러 정정 객체(123b)는 데이터 객체(122b)에 저장된 데이터에 대한 잉여 데이터를 포함할 수 있다, 등등). 일부 실시 예들에서, 예를 들어, 에러 정정 객체(123)는 검사 합 값을 포함한다. 실시 예들에서, 에러 정정 객체(123)는 순환 잉여 검사(cyclic redundancy check), 소거 코드, 해시(hash) 코드, BCH 코드, 해밍 코드, 그리고/또는 다른 에러 검출 또는 정정 방법론들로부터 도출되는 값을 포함할 수 있다. 비록 "잉여 데이터"로 설명되지만, 다양한 실시 예들에서, 에러 정정 객체(123)에 저장된 데이터는 문자 그대로 대응하는 데이터 객체(122)에 포함된 데이터 또는 데이터의 부분을 포함하지 않을 수 있음에 주의하여야 한다. 다양한 실시 예들에서, 잉여 데이터는 대응하는 데이터 객체(122)에 포함된 데이터보다 작거나 또는 클 수 있다. 따라서, "잉여 데이터"는 데이터 객체(122)에 포함된 데이터보다 클 수 있다. 에러 정정 객체(123)에 포함된 데이터는 데이터 객체가 오염되었는지 판단하기 위해 대응하는 데이터 객체(122)에 포함된 데이터와 비교될 수 있다. 이 출원서의 제출 시에 이 분야에 통상적인 기술을 가진 자들은 에러 정정 객체(123)에 대한 다수의 가능한 구성들에 친숙할 것이다.
데이터 객체(122) 및 에러 정정 객체(123)가 별도의 객체들로 참조되지만, 일부 실시 예들에서 데이터 객체(123)에 저장된 데이터 및 에러 정정 객체(123)에 저장된 잉여 데이터는 분리될 수 없는 데이터의 단일 조각의 형태를 가질 수 있다. 예를 들어, 다양한 에러 검출 또는 에러 정정 코드들 또는 방법론들에서, 잉여 데이터는 데이터 내에 배치될 수 있거나 또는 잉여 데이터는 데이터를 변환하는데 사용되어, 데이터 및 잉여 데이터가 데이터 객체의 분리될 수 없는 구성 요소들을 형성하는 것을 초래할 수 있다.
데이터 속성 객체(121)는 대응하는 데이터 객체(122)를 설명하는 속성들에 대한 값들을 포함한다(예를 들어, 데이터 속성 객체(121)는 데이터 객체(122a)를 설명하는 값들을 포함하고, 데이터 속성 객체(121b)는 데이터 객체(122b)를 설명하는 값들을 포함한다). 일부 실시 예들에서, 데이터 속성 객체들(121)은 데이터 객체(122)에 포함된 데이터의 생성일, 최종 수정일, 그리고/또는 사이즈를 가리키는 값들을 포함할 수 있다. 일부 실시 예들에서, 데이터 속성 객체들(121)은 데이터 객체(122)에 포함된 데이터를 생성한 사용자 또는 프로그램, 또는 데이터 객체(122)에 포함된 데이터를 스토리지 매체(120)에 저장하려고 시도한 사용자 또는 프로그램을 가리킬 수 있다.
일 실시 예에서, 데이터 속성 객체(121)는 데이터 객체(122)에 포함된 데이터의 민감도 속성에 대한 값을 포함할 수 있다. 민감도는 임의의 레벨들로 분할될 수 있다. 중요 데이터 또는 작은 오염 에러들이 큰 문제인 데이터는 더 높은 민감도 레벨로 할당될 수 있다. 일부 실시 예들에서, 더 높은 민감도 레벨을 갖는 데이터는 더 자주 스크러브될 수 있다.
일부 실시 예들에서, 데이터 속성 객체들(121)은 데이터 객체(122)에 포함된 데이터를 스크러빙 한 마지막 시간 및 날짜를 가리키는 값들을 포함할 수 있다.
도 2는 데이터 속성 객체(200)의 일 실시 예의 다이어그램이다. 데이터 속성 객체(200)는 다음 블록(206)의 사이즈를 가리키는 값을 포함하는 블록(204)을 포함할 수 있다. 블록(206)은 데이터 속성 객체(200)를 포함하는 데이터 요소(125)에 대한 고유 식별자(이후에, 'UID')인 값을 포함한다. 스토리지 매체의 각 데이터 요소(125)는 고유한 UID를 가질 수 있다.
블록(208)은 다음 블록(210)의 사이즈를 가리키는 값을 포함한다. 블록(210)은 제1 속성으로 설명되는 데이터 속성 객체(200)에 대응하는 데이터 객체(122)의 속성(또는, 예를 들어, 그것에 포함된 데이터의 속성)을 기술하는 값을 포함할 수 있다.
데이터 속성 객체(200)와 같은 데이터 속성 객체들의 실시 예들은 다양한 다수의 속성들을 포함할 수 있다. 각 속성은 다음 블록의 사이즈를 가리키는 값을 포함하는 블록, 및 속성의 값을 포함하는 블록을 포함할 수 있다. 예를 들어, 데이터 속성 객체(200)는 X 개의 속성들을 포함한다. 따라서, 데이터 속성 객체(200)는, 제X 속성을 기술하는 값의 사이즈를 가리키는 값을 포함하는 블록(208') 및 제X 속성을 기술하는 값을 포함하는 블록(210')을 포함하여 이들까지의 블록들을 포함할 수 있다.
예시적인 데이터 속성 객체(200)에서, 대응하는 데이터 객체를 기술하는 속성들에 대한 값들은 가변적인 사이즈를 가질 수 있다. 대안적인 실시 예들에서, 각 값은 특정된 길이를 가질 수 있다. 따라서, 이러한 실시 예들에서, 데이터 속성 객체는 값의 사이즈를 기술하는 블록들을 포함하지 않을 수 있다.
도 1로 돌아가면, 스토리지 제어기(110)는 펌웨어(112), 에러 검출 엔진(114), 그리고 데이터 분석 엔진(116)을 포함한다.
스토리지 제어기(110)는 외부 제어기(130)로부터 스크러빙 검색 기준을 수신할 수 있다. 스크러빙 검색 기준은 적어도 하나의 특정된 속성, 특정된 속성의 값, 그리고 관계된 식별자(예를 들어, 더 적은, 더 큰, 같은, 같거나 더 큰, 또는 같거나 더 적은)를 포함할 수 있다. 일부 실시 예들에서, 스크러빙 검색 기준은 복수의 특정된 속성들, 대응하는 속성 값들, 그리고 대응하는 관계된 식별자들, 그리고 "논리곱(AND)", "논리합(OR)", "배타적 논리합(XOR)" 또는 각각 사이의 다른 관계들을 포함할 수 있다. 이와 함께, 수신된 임의의 스크러빙 검색 기준 및 대응하는 관계된 식별자들은 데이터 정합 규칙을 형성할 수 있다. 데이터 속성 객체(121)에 포함된 속성 값들이 데이터 정합 규칙과 비교되어, 데이터 속성 객체(121)가 데이터 정합 규칙에 부합하는지 판단할 수 있다.
예를 들어, 스크러빙 검색 규칙은 제1 속성(파일 사이즈에 대응)이 50MB보다 작고, 논리곱(AND) 제2 속성(생성일에 대응)이 2016/01/01보다 늦고, 논리곱(AND) 제2 속성이 2016/01/31 이전임을 포함할 수 있다. 따라서, 2016년 1월 동안에 생성되고 50MB보다 작은 데이터를 포함하는 데이터 객체(122)에 대응하는 데이터 속성 객체(121)는 데이터 정합 규칙을 통과한다. 2016년 1월에 생성되지 않은 데이터를 포함하거나 또는 50MB보다 큰 데이터를 포함하는 데이터 객체(122)에 대응하는 데이터 속성 객체(121)는 데이터 정합 규칙을 통과하지 못한다.
데이터 분석 엔진(116)은 데이터 속성 객체들(121)에 포함된 값들을 액세스할 수 있다. 스토리지 제어기(110)가 스크러빙 검색 기준을 수신할 때, 데이터 분석 엔진(116)은 어느 데이터 요소들(125)이 데이터 정합 규칙에 부합하는 데이터 속성 객체들(121)을 포함하는지 판단한다. 데이터 분석 엔진(116)은 데이터 정합 규칙에 부합하는 데이터 속성 객체들(121)을 갖는 것으로 검색된 데이터 요소들(125)을 에러 검출 엔진(114)에 알린다. 이는 각 데이터 요소(125)의 UID를 에러 검출 엔진(114)에 전달하는 것에 의해, 또는 적어도 데이터 객체(122)에 포함된 데이터 및 에러 정정 객체(123)를 포함하는, 데이터 요소(125)에 포함된 데이터를 에러 검출 엔진(114)으로 직접 전달하는 것에 의해 달성될 수 있다.
에러 검출 엔진(114)은, 에러 정정 객체(123)에 포함된 데이터 및 데이터 객체(122)에 포함된 데이터 사이의 비교에 기반하여, 데이터 정합 규칙에 부합하는 데이터 요소들(125)의 어느 것이 에러들을 포함하거나 또는 오염되었는지, 만약 존재한다면, 판단할 수 있다. 예를 들어, 에러 정정 객체(123)에 포함된 데이터 및 데이터 객체(122)에 포함된 데이터 사이의 비교는, 에러 정정 객체(123)에 포함된 데이터를 생성하는 데에 사용되는 코딩 스킴에 의해 촉구되는 에러 검출 방법 또는 메커니즘의 형태를 취할 수 있다. 이 분야에 통상적인 기술을 가진 자들은 이러한 비교를 수행하기 위한 방법들 또는 메커니즘들에 친숙할 것이다. 이러한 방법들 또는 메커니즘들은, 한정 없이, 검사 합들, 순환 잉여 검사들, 소거 코드들, 해시 코드들, BCH 코드들, 또는 해밍 코드들을 포함할 수 있다. 일부 실시 예들에서, 에러 검출 엔진(114)은 검사 합 엔진이다.
일부 실시 예들에서, 에러 검출 엔진(114)은 (1) 데이터 정합 규칙에 부합하는 데이터 속성 객체들(121)을 포함하고, 그리고 (2) 비교된 때에, 데이터 객체(122)에 포함된 데이터가 오염되었음을 가리키는 데이터 객체들(122) 및 에러 정정 객체들(123)을 모두 포함하는 데이터 요소들(125)을 식별하는 보고를 생성할 수 있다. 일부 실시 예들에서, 외부 제어기(130)는 스크러빙 기준과 함께 버퍼를 식별하며, 스토리지 제어기(110)는 보고를 식별된 버퍼에 기입할 수 있다. 외부 제어기(130)는 식별된 버퍼로부터 보고를 읽을 수 있다. 외부 제어기(130)는 식별된 오염된 데이터를 보수하는 단계들을 가질 수 있다.
일부 실시 예들에서, 에러 정정 객체(123)는, 오염된 것으로 판단된 때에 데이터 객체들(122)에 포함된 데이터를 보수하는 데에 충분한 잉여 데이터를 포함한다. 예를 들어, 에러 정정 객체(123)는 해밍 코드로부터 도출되는 값을 포함할 수 있다. 이러한 실시 예들에서, 데이터 객체(122)에 저장된 데이터가 오염된 것으로 판단함에 따라, 에러 검출 엔진(114)은 오염된 데이터를 보수하는 것이 가능하면 오염된 데이터를 보수할 수 있다. 일부 이러한 실시 예들에서, 보고는 (1) 에러가 검색되었고 수정되었는지, 또는 (2) 에러가 검색되었고 수정될 수 없었는지를 가리킬 수 있다.
도 3은 본 기재의 일부 실시 예들에 따른 제1 속성 인덱스(310) 및 제2 속성 인덱스(320)의 다이어그램이다. 일부 실시 예들에서, 스토리지 장치(100)는 스토리지 매체(120)에 저장된 데이터 요소들(125)의 데이터 속성 객체들(121)에 포함된 각 속성에 대한 하나의 속성 인덱스를 포함한다. 예를 들어, 도 3에서, 데이터 속성 객체들(121)은 제1 속성 및 제2 속성에 대한 값들을 포함한다. 따라서, 스토리지 장치(100)는 제1 속성에 대응하는 제1 속성 인덱스(310) 및 제2 속성에 대응하는 제2 속성 인덱스(320)를 포함한다. 이러한 실시 예들에서, 데이터 분석 엔진(116)은 데이터 속성 인덱스들을 이용하여 어느 데이터 요소들(125)이 데이터 정합 규칙에 부합하는 데이터 속성 객체들(121)을 포함하는지 판단할 수 있다.
속성 인덱스는 스토리지 매체(120)에 저장된 각 데이터 원소(125)에 대한 노드(node)를 포함한다. 특정한 데이터 요소(125)에 대한 노드는 특정한 데이터 원소(125)의 데이터 속성 객체(121)에 포함된 속성 인덱스의 대응하는 속성에 대한 값을 포함한다(예를 들어, 제1 속성에 대응하는 제1 속성 인덱스(310)의 노드들은 각 데이터 속성 객체(121)에 저장된 제1 속성 값을 포함한다). 각 노드는 또한 UID 또는 스토리지 매체(120)상의 데이터 요소의 위치에 대한 포인터와 같은 특정한 데이터 요소(125)의 식별자를 포함한다.
속성 인덱스는 노드들에 포함된 속성들의 값들에 기반하여 정렬될 수 있다. 일부 실시 예들에서, 속성 인덱스는 정렬된 나무(sorted tree)이다. 데이터 분석 엔진(116)이 특정한 속성과 스크러빙 검색 기준을 수신할 때, 데이터 분석 엔진(116)은 특정한 속성에 대응하는 속성 인덱스를 사용하여, 특정한 속성 및 관계된 식별자의 값을 만족하는 특정한 속성에 대응하는 속성에 대한 값을 갖는 모든 데이터 요소들(125)의 식별자들(UID들과 같은)을 반환할 수 있다.
일부 실시 예들에서, 속성 인덱스의 노드들은 데이터 속성 객체들(121)이다. 일부 이러한 실시 예들에서, 데이터 요소들(125)은 속성 인덱스들에 저장된 데이터 속성 객체들(121)과 연관되지만, 데이터 요소들(125)은 데이터 속성 객체들(121)을 포함하지 않고, 데이터 객체(122)에 포함된 데이터를 기술하는 속성들은 데이터 요소(125)에 저장되지 않는다.
도 4는 본 기재의 실시 예들에 따라 스크러브할 데이터의 위치를 찾는 절차를 설명하는 순서도이다. 이 절차는, 예를 들어 도 1의 장치에 의해 수행될 수 있다.
402에서, 스크러빙 검색 기준이 수신된다. 스크러빙 검색 기준은 데이터 정합 규칙을 포함한다. 예를 들어, 스크러빙 검색 기준은 적어도 하나의 특정된 속성, 특정된 속성의 특정한 값, 그리고 관계된 식별자(더 적은, 더 큰, 같은, 같거나 더 큰, 또는 같거나 더 적은과 같은)를 포함할 수 있다. 일부 실시 예들에서, 스크러빙 검색 기준은 복수의 특정된 속성들, 대응하는 속성 값들, 그리고 대응하는 관계된 식별자들, 그리고 "논리곱(AND)", "논리합(OR)", "배타적 논리합(XOR)" 또는 데이터 정합 규칙에 부합하기 위하여 반드시 만족되어야 하는 각각의 사이에 정의된 다른 관계들을 포함한다. 일부 실시 예들에서, 식별된 버퍼의 위치 또한 402에서 수신된다. 402는, 예를 들어, 스토리지 제어기(100)(또는 스토리지 제어기(110)와 연관된 프로세서)에 의해 수행될 수 있다.
404에서, 데이터 정합 규칙에 부합하는 데이터 요소들(125)의 위치가 찾아진다. 404는, 예를 들어, 데이터 분석 엔진(116)(또는 데이터 분석 엔진(116)과 연관된 프로세서)에 의해 수행될 수 있다.
일부 실시 예들에서, 데이터 요소들(125)의 위치는 도 3을 참조하여 설명된 것들과 같은 속성 인덱스들을 이용하여 찾아진다. 데이터 정합 규칙에서 각 특정된 액세스 항목에 대해, 특정된 속성의 특정된 값 및 관계된 식별자를 만족하는 노드들에 대해 동일한 속성에 대응하는 속성 인덱스가 검색된다. 일 실시 예에서, 예를 들어, 속성 인덱스는 정렬된 나무(sorted tree)이다. 특정된 속성 및 관계된 식별자를 만족하는 노드들에 대한 속성 인덱스를 검색하기 위해, 특정된 속성에 대한 특정된 값에 대응하는 새로운 노드가 정렬된 나무에 추가되고 뿌리(root) 노드로 만들어진다. 뿌리 노드의 좌측 또는 우측의 노드들에 포함된 UID들과 같은 식별자들 모두가, 관계된 식별자들(예를 들어, 더 적은 또는 더 큰)에 의존하여, 특정된 속성의 특정된 값 및 관계된 식별자를 만족하는 데이터 요소들(125)을 가리키는 것으로 반환된다. 특정된 속성의 다중의 특정된 값들이 단일 데이터 정합 규칙에 포함될 때, 일단 각각을 만족하는 데이터 요소들(125)이 찾아지면, 데이터 요소들(125)의 목록들이 "논리곱(AND)", "논리합(OR)", "배타적 논리합(XOR)" 또는 각각 사이의 다른 관계들에 기반하여 비교되어, 전체 데이터 정합 규칙을 만족하는 데이터 요소들(125)의 목록이 수립된다.
대안적인 실시 예들에서, 그러나, 스토리지 매체(120)에 포함된 각 데이터 요소(125)의 데이터 속성 객체(121)는 그것이 데이터 정합 규칙을 통과하는지 판단하기 위해 체크된다.
406에서, 404에서 위치가 찾아진 데이터 정합 규칙을 만족하는 데이터 요소들(125)이 에러들을 포함하는지 판단된다. 406은, 예를 들어, 에러 검출 엔진(114)(또는 에러 검출 엔진(114)과 연관된 프로세서)에 의해 수행될 수 있다. 데이터 객체(122)에 포함된 데이터는 에러 정정 객체(123)에 포함된 잉여 데이터와 비교된다. 이 비교에 기반하여, 데이터 객체(122)에 포함된 데이터가 오염되었는지 또는 그렇지 않으면 에러들을 갖는지 판단된다. 에러들을 포함하는 각 데이터 요소(125)의 식별자들(스토리지 매체(120) 상의 데이터 요소(125)의 위치에 대한 포인터들 또는 UID들과 같은)의 목록이 반환된다.
408에서, 위치가 찾아진 데이터 요소들(125)의 상태가 보고된다. 408은, 예를 들어, 스토리지 제어기(110)(또는 스토리지 제어기(110)와 연관된 프로세서)에 의해 수행될 수 있다. 일부 실시 예들에서, 데이터 요소들(125)의 목록이 생성된다. 목록은 각 데이터 요소(125)의 식별자(저장 매체(120) 상의 데이터 요소(125)의 위치에 대한 포인터들 또는 UID들과 같은)를 포함할 수 있다. 일부 실시 예들에서, 목록은 에러들을 갖는 것으로 찾아진 각 데이터 요소(125)를 포함할 수 있다. 에러들은 수정되지 않을 수 있다. 대안적인 실시 예들에서, 목록은 데이터 정합 규칙을 통과한 각 데이터 요소(125) 및 각 데이터 요소(125)의 상태(예를 들어, 에러들을 포함하는지 또는 포함하지 않는지)를 포함한다.
버퍼가 식별되는 일부 실시 예들에서, 402 동안에서와 같이, 보고가 식별된 버퍼 위치에 저장된다. 에러 정정 객체(123)가 충분한 잉여 데이터를 포함하는 일부 실시 예들에서, 데이터 객체들(123)에 저장된 데이터의 임의의 검출된 에러들은 보수될 수 있다.
도 5는 본 기재의 실시 예들에 따라 외부 제어기(130)로부터 스토리지 제어기(110)에 의해 수신되는 쓰기 커맨드(500)의 다이어그램이다. 커맨드는 어떤 행동이 수행될지를 스토리지 제어기(110)에 가리키는 값을 포함하는 조작 블록(502)(operation block)을 포함한다. 여기에서, 조작 블록(502) 내의 값은 스토리지 제어기가 쓰기 커맨드(500)에 응답하여 스토리지 매체에 데이터를 기입하여야 함을 가리킨다.
블록(504)은 제1 속성에 대한 값을 포함한다. 블록(506)은 제2 속성에 대한 값을 포함한다. 블록(508)은 제3 속성에 대한 값을 포함한다. 일부 실시 예들에서, 속성들에 대한 값들을 포함하는 블록들의 수가 설정되고, 각 쓰기 커맨드는 각 속성에 대한 값을 포함하여야 한다. 블록(510)은 스토리지 매체(120)에 저장될 데이터를 포함한다. 제1 속성, 제2 속성 및 제3 속성과 같은 속성들의 값들은 블록(510)에 포함된 데이터를 기술한다.
도 6은 본 기재의 실시 예들에 따라 데이터를 스토리지 장치(100)에 기입하는 것을 설명하는 순서도이다. 절차는, 예를 들어, 도 1의 장치에 의해 수행될 수 있다.
602에서, 쓰기 커맨드가 수신된다. 쓰기 커맨드는, 예를 들어, 도 5의 쓰기 커맨드(500)일 수 있다. 602는 스토리지 제어기(110)(또는 스토리지 제어기(110)와 연관된 프로세서)에 의해 수행될 수 있다. 쓰기 커맨드는 스토리지 매체(120)에 기입될 데이터 및 데이터의 속성들을 기술하는 속성 값들을 포함할 수 있다.
604에서, 에러 정정 값이 생성된다. 604는 스토리지 제어기(110)(또는 스토리지 제어기(110)와 연관된 프로세서)에 의해 수행될 수 있다. 생성에 따라, 에러 정정 값은 스토리지 매체(120)에 저장될 데이터의 값에 대응한다. 나중에 데이터가 오염되거나 또는 그렇지 않으면 에러들을 포함하면, 에러 정정 값을 데이터와 비교하는 것은 데이터가 오염되었거나 또는 그렇지 않으면 최초 형태로부터 부적절하게 변경되었음을 보여줄 수 있다. 일부 실시 예들에서, 에러 정정 값은 검사 합 값이다. 대안적인 실시 예들에서, 에러 정정 값은 데이터의 사본 또는 데이터의 부분일 수 있다. 더 대안적인 실시 예들에서, 에러 정정 값은 순환 잉여 검사들, 소거 코드들, 해시 코드들, BCH 코드들, 해밍 코드들, 그리고/또는 다른 에러 검출 또는 정정 방법론들에 의해 도출될 수 있다.
대안적인 실시 예들에서, 에러 정정 값은 쓰기 커맨드의 일부로서 602에서 수신된다.
606에서, 데이터 요소(125)가 생성된다. 606은, 예를 들어, 스토리지 제어기(110)(또는 스토리지 제어기(110)와 연관된 프로세서)에 의해 수행될 수 있다.
데이터 요소(125)는 데이터 속성 객체(121)를 포함할 수 있다. 데이터 속성 객체(121)는 데이터 요소(125)와 저장될 데이터를 기술하는 속성 값들을 포함할 수 있다. 일부 실시 예들에서, 데이터 속성 객체(121)에 포함된 속성 값들은 602에서 수신된 쓰기 커맨드에 포함된 속성 값들일 수 있다. 일부 실시 예들에서, 데이터 속성 객체(121)는 쓰기 커맨드에서 수신되지 않은 속성 값들을 추가적으로 포함할 수 있다. 예를 들어, 데이터 속성 객체(121)는 스토리지 매체(120)에 추가된 날짜 및 시간, 데이터가 에러들에 대해 검사된 마지막 날짜 및 시간, 데이터가 스크러브된 마지막 시간, 또는 쓰기 명령으로부터 수신하지 않고 알 수 있는 다른 데이터 속성들에 대한 속성 값들을 포함할 수 있다.
데이터 속성 객체(121)를 뒤따라, 데이터 요소(125)는 데이터 객체(122)를 포함할 수 있다. 데이터 객체(122)는 602에서 쓰기 커맨드의 일부로 수신된 스토리지 매체(120)에 저장될 데이터를 포함할 수 있다. 데이터 객체(122)를 뒤따라, 데이터 요소(125)는 에러 정정 객체(123)를 포함할 수 있다. 에러 정정 객체(123)는 604에서 생성된 에러 정정 값을 포함할 수 있다.
608에서, 생성된 데이터 요소(125)가 스토리지 매체(120)에 저장될 수 있다. 608은 스토리지 제어기(110)(또는 스토리지 제어기(110)와 연관된 프로세서)에 의해 수행될 수 있다.
610에서, 스토리지 장치(100)가 데이터 객체들(125)의 위치들을 찾는 데에 사용하기 위한 데이터 속성 인덱스들을 포함하는 일부 실시 예들에서, 각 속성 인덱스가 생성된 데이터 요소(125)에 대응하는 새로운 노드로 갱신된다. 각 새로운 노드는 속성 인덱스에 대응하는 데이터 속성 객체(121)에 포함된 값, 그리고 UID들 또는 스토리지 매체(120) 상의 데이터 요소의 위치에 대한 포인터와 같은 특정한 데이터 요소(125)의 식별자를 포함할 수 있다. 속성 인덱스들이 나무들로 정렬되는 실시 예들과 같은 속성 인덱스들이 정렬되는 실시 예들에서, 속성 인덱스는 정렬된 것을 유지하도록 갱신된다.
"제1", "제2", "제3" 등의 용어들이 다양한 요소들, 구성 요소들, 영역들, 계층들, 그리고/또는 섹션들을 설명하기 위해 여기에서 사용될 수 있지만, 이러한 요소들 구성 요소들, 영역들, 계층들, 그리고/또는 섹션들은 이러한 용어들에 의해 한정되지 않아야 함이 이해될 것이다. 이러한 용어들은 하나의 요소, 구성 요소, 영역, 계층 또는 섹션을 또 다른 하나의 요소, 구성 요소, 영역, 계층 또는 섹션으로부터 구별하기 위해 사용된다. 따라서, 아래에서 기술되는 제1 요소, 구성 요소, 영역, 계층 또는 섹션은 본 발명의 기술 사상 및 범위로부터 멀어지지 않으면서 제2 요소, 구성 요소, 영역, 계층 또는 섹션으로 명명될 수 있다.
하나의 요소 또는 계층이 또 다른 하나의 요소 또는 계층의 "위에" "연결" 또는 "결합"되는 것으로 참조되면, 이는 다른 요소 또는 계층의 바로 위에, 연결 또는 결합될 수 있으며, 또는 하나 또는 그보다 많은 끼어드는 요소들 또는 계층들이 존재할 수 있다. 또한, 하나의 요소 또는 계층이 두 요소들 또는 계층들의 "사이"에 있는 것으로 참조되면, 이는 두 요소들 또는 계층들 사이의 유일한 요소 또는 계층일 수 있으며, 또는 하나 또는 그보다 많은 끼어드는 요소들 또는 계층들 또한 존재할 수 있다.
여기에 사용되는 용어는 구체적인 실시 예들을 기술하는 목적을 위한 것이며, 본 발명의 제한을 의도하지 않는다. 여기에서 사용되는 바와 같이, 단수 형태들은 문맥이 명확하게 다르게 지적하지 않으면 복수 형태들 또한 포함한다. 이 명세서에서 사용될 때에, "포함한다", "포함하는"은 언급된 특성들, 정수들, 단계들, 동작들, 요소들, 그리고/꼬는 구성 요소들의 존재를 명시하며, 하나 또는 그보다 많은 다른 특성들, 정수들, 단계들, 동작들, 요소들, 구성 요소들, 그리고/또는 이들의 그룹들의 존재 또는 추가를 배제하지 않는다. 여기에서 사용되는 바와 같이, "그리고/또는"의 용어는 연관된 나열된 항목들의 하나 또는 그보다 많은 임의의 그리고 모든 조합들을 포함한다. 요소들의 나열에 선행할 때에, "적어도 하나의"와 같은 표현들은 요소들의 전체 나열을 수식하며, 나열의 개별 요소들을 수식하지 않는다.
여기에서 사용되는 바와 같이, "실질적으로", "대략", 그리고 유사한 용어들은 간략화의 용어로 사용되며 정도의 용어로 사용되지 않고, 이 분야에 통상적인 기술을 가진 자들에 의해 인식될 수 있는 특정된 또는 계산된 값들의 자명한 변경들을 설명하도록 의도된다. 또한, 본 발명의 실시 예들을 설명할 때에, "수 있다"의 사용은 "본 발명의 하나 또는 그보다 많은 실시 예들"을 참조한다. 여기에서 사용되는 바와 같이, "사용한다", "사용하는", 그리고 "사용되는"의 용어들은 "활용한다", "활용하는", 그리고 "활용된다"의 용어들과 각각 동의어인 것으로 여겨질 수 있다. 또한, "모범적인"의 용어는 예 또는 예시를 참조하는 것으로 의도된다.
여기에서 기술되는 본 발명의 실시 예들에 따른 전자 또는 전기 장치들 그리고/또는 임의의 다른 연관된 장치들 또는 구성 요소들은 적절한 하드웨어, 펌웨어(예를 들어, 주문형 반도체(application-specific integrated circuit)), 소프트웨어, 또는 소프트웨어, 펌웨어 그리고 하드웨어의 조합으로 구현될 수 있다. 예를 들어, 이러한 장치들의 다양한 구성 요소들은 하나의 집적 회로(IC) 칩에 또는 별도의 IC 칩들에 형성될 수 있다. 또한, 이러한 장치들의 다양한 구성 요소들은 플렉서블 인쇄 회로 필름(flexible printed circuit film), 테이프 캐리어 패키지(TCP)(tape carrier package), 인쇄 회로 기판(PCB)(printed circuit board), 또는 하나의 기판에 구현될 수 있다. 또한, 이러한 장치들의 다양한 구성 요소들은 컴퓨터 프로그램 명령들을 실행하고 여기에 기술된 다양한 기능들을 수행하기 위해 다른 시스템 구성 요소들과 상호 작용하는 하나 또는 그보다 많은 컴퓨팅 장치들의 하나 또는 그보다 많은 프로세서들에서 구동되는 프로세스 또는 쓰레드일 수 있다. 예를 들어, 스토리지 제어기(110)는 펌웨어(112), 에러 검출 엔진(114), 그리고 데이터 분석 엔진(116)이 구현되는 하나의 프로세서를 포함할 수 있다. 그렇지 않으면, 스토리지 제어기(110)는 펌웨어(112)가 구현되는 제1 프로세서, 에러 검출 엔진(114)이 구현되는 제2 프로세서, 그리고 데이터 분석 엔진(116)이 구현되는 제3 프로세서를 포함할 수 있다. 컴퓨터 프로그램 명령들은 컴퓨팅 장치에서, 예를 들어 랜덤 액세스 메모리(RAM)와 같은 표준 메모리 장치를 이용하여 구현되는 메모리에 저장될 수 있다. 컴퓨터 프로그램 명령들은, 예를 들어 CDROM, 플래시 드라이브 등과 같은 다른 비-임시적인 컴퓨터 독출 가능한 매체에 또한 저장될 수 있다. 또한, 이 분야에 숙련된 자는 본 발명의 예시적인 실시 예들의 기술 사상 및 범위로부터 멀어지지 않으면서, 다양한 컴퓨팅 장치들의 기능이 단일 컴퓨터 장치로 조합 또는 집적되거나, 또는 특정한 컴퓨팅 장치의 기능이 하나 또는 그보다 많은 다른 컴퓨팅 장치들로 분산될 수 있음을 인식할 수 있다.
이 발명이 예시적인 실시 예들을 구체적으로 참조하여 상세하게 기술되었지만, 여기에 기술된 실시 예들은 완전한 것으로, 또는 본 발명의 범위를 기술된 정확한 형태로 한정하는 것으로 의도되지 않는다. 아래의 청구항들 및 그와 등가적인 것들에서 설명되는 바와 같이, 이 분야 및 이 발명이 존재하는 기술에 숙련된 자들은 기술된 구조들 그리고 조립 및 동작의 방법들의 변경 및 수정이 이 발명의 원리들, 기술 사상, 그리고 범위로부터 의미 있게 멀어지지 않으면서 실시될 수 있음을 이해할 것이다.
100: 스토리지 장치
110: 스토리지 제어기
112: 펌웨어
114: 에러 검출 엔진
116: 데이터 분석 엔진
120: 스토리지 매체
130: 외부 제어기
125: 데이터 요소
121: 데이터 속성 객체
122: 데이터 객체
123: 에러 정정 객체

Claims (20)

  1. 스크러빙(scrubbing) 검색 기준을 수신하도록 구성되는 스토리지 제어기를 포함하고,
    상기 스토리지 제어기는:
    컴퓨터로 독출되는 매체에 포함된 데이터 요소와 연관된 데이터 속성 객체를 액세스하도록 구성되는 데이터 분석 엔진,
    여기서 각 데이터 요소는 데이터 속성 객체와 연관되어 저장되고, 상기 각 데이터 요소는 데이터 객체 및 에러 정정 객체를 포함하고, 상기 데이터 분석 엔진은 상기 스크러빙 검색 기준에 대응하는 데이터 속성 객체들과 연관된 상기 컴퓨터로 독출되는 매체에 포함된 데이터 요소들을 검색하도록 더 구성되고; 그리고
    상기 스크러빙 검색 기준에 대응하는 데이터 속성 객체와 연관하여 검색된 각 데이터 요소에 대해, 상기 데이터 객체를 상기 에러 정정 객체와 비교하여 상기 데이터 객체가 에러들을 포함하는지 판단하도록 구성되는 에러 검출 엔진을 포함하는 전자 장치.
  2. 제1항에 있어서,
    상기 컴퓨터로 독출되는 매체를 더 포함하는 전자 장치.
  3. 제1항에 있어서,
    상기 에러 검출 엔진은 어느 데이터 요소들이 에러들을 포함하는 데이터 객체들을 포함하는지 가리키는 보고를 출력하도록 더 구성되는 전자 장치.
  4. 제3항에 있어서,
    상기 스토리지 제어기는 식별된 버퍼 위치를 수신하도록 더 구성되고,
    상기 에러 검출 엔진은 상기 보고를 상기 식별된 버퍼 위치로 출력하도록 더 구성되는 전자 장치.
  5. 제1항에 있어서,
    상기 데이터 속성 객체들에 포함된 각 속성에 대한 속성 인덱스를 더 포함하고,
    상기 데이터 분석 엔진은 상기 속성 인덱스를 액세스함으로써 데이터 요소들과 연관된 데이터 속성 객체들을 액세스하고, 그리고
    상기 데이터 분석 엔진은 상기 속성 인덱스를 활용함으로써 상기 스크러빙 검색 기준에 대응하는 데이터 속성 객체들과 연관된 데이터 요소들을 검색하여 어느 데이터 요소들이 상기 스크러빙 검색 기준에 대응하는지 판단하는 전자 장치.
  6. 제5항에 있어서,
    상기 속성 인덱스는 정렬된 나무(sorted tree)인 전자 장치.
  7. 제1항에 있어서,
    상기 스토리지 제어기는 데이터 및 상기 데이터를 기술하는 속성 값들을 수신하도록 더 구성되고, 그리고
    상기 스토리지 제어기는 새로운 데이터 요소 및 상기 새로운 데이터 요소와 연관된 새로운 데이터 속성 객체를 생성하도록 구성되고, 상기 새로운 데이터 속성 객체는 상기 수신된 속성 값들을 포함하고, 상기 새로운 데이터 요소의 상기 데이터 객체는 상기 수신된 데이터를 포함하는 전자 장치.
  8. 제7항에 있어서,
    상기 스토리지 제어기는 하나 또는 그보다 많은 속성 값들을 생성하도록 더 구성되고,
    상기 새로운 데이터 요소와 연관된 상기 새로운 데이터 속성 객체는 상기 하나 또는 그보다 많은 생성된 속성 값들을 포함하는 전자 장치.
  9. 제7항에 있어서,
    상기 스토리지 제어기는 상기 수신된 데이터에 대응하는 에러 정정 값을 생성하도록 더 구성되고,
    상기 새로운 데이터 요소의 상기 에러 정정 객체는 상기 에러 정정 값을 포함하는 전자 장치.
  10. 제7항에 있어서,
    상기 데이터 속성 객체들에 포함된 각 속성에 대한 속성 인덱스를 더 포함하고, 상기 스토리지 제어기는 상기 새로운 데이터 요소에 대응하는 노드를 포함하도록 각 데이터 속성 인덱스를 갱신하도록 더 구성되는 전자 장치.
  11. 데이터 스토리지 장치에서 스크러빙(scrubbing)을 수행하는 방법에 있어서:
    하나 또는 그보다 많은 데이터 요소들이 상기 데이터 스토리지 장치에 저장되고, 각 데이터 요소는 하나 또는 그보다 많은 데이터 속성들과 연관되어 저장되고, 각 데이터 요소는 데이터 객체 및 에러 정정 객체를 포함하고,
    상기 방법은:
    프로세서에 의해 스크러빙 검색 기준을 수신하는 단계;
    상기 프로세서에 의해 상기 스크러빙 검색 기준에 대응하는 데이터 속성들과 연관된 데이터 요소들의 위치를 찾는 단계;
    상기 프로세서에 의해 상기 스크러빙 검색 기준에 대응하는 상기 데이터 속성들을 갖는 상기 위치가 찾아진 데이터 요소들 각각이 스크러브될 것을 필요로 하는지 판단하는 단계; 그리고
    상기 프로세서에 의해 어느 데이터 요소들이 그들의 데이터 객체들에 에러들을 포함하는지 가리키는 보고를 출력하는 단계를 포함하는 방법.
  12. 제11항에 있어서,
    상기 데이터 요소들은 컴퓨터로 독출되는 매체에 포함되는 방법.
  13. 제11항에 있어서,
    식별된 버퍼 위치를 수신하는 단계를 더 포함하고,
    상기 보고를 출력하는 단계는 상기 보고를 상기 식별된 버퍼 위치로 출력하는 단계를 포함하는 방법.
  14. 제11항에 있어서,
    상기 스크러빙 검색 기준에 대응하는 데이터 속성들과 연관된 데이터 요소들의 위치를 찾는 단계는 상기 스크러빙 검색 기준에 대응하는 노드들에 대한 속성 인덱스를 검색하는 단계를 포함하는 방법.
  15. 제14항에 있어서,
    상기 속성 인덱스는 정렬된 나무(sorted tree)인 방법.
  16. 제11항에 있어서,
    상기 프로세서에 의해 데이터 및 상기 데이터를 기술하는 속성 값들을 수신하는 단계; 그리고
    상기 프로세서에 의해 새로운 데이터 요소를 생성하는 단계를 더 포함하고,
    상기 새로운 데이터 요소는 상기 수신된 속성 값들 및 상기 수신된 데이터를 포함하는 새로운 데이터 요소의 상기 데이터 객체와 연관되어 저장되는 방법.
  17. 제16항에 있어서,
    상기 프로세서에 의해 하나 또는 그보다 많은 속성 값들을 생성하는 단계를 더 포함하고,
    상기 새로운 데이터 요소는 상기 하나 또는 그보다 많은 생성된 속성 값들과 연관되어 저장되는 방법.
  18. 제16항에 있어서,
    상기 프로세서에 의해 상기 수신된 데이터에 대응하는 에러 정정 값을 생성하는 단계를 더 포함하고,
    상기 새로운 데이터 요소의 상기 에러 정정 객체는 상기 에러 정정 값을 포함하는 방법.
  19. 제16항에 있어서,
    상기 프로세서에 의해 상기 새로운 데이터 요소에 대응하는 노드를 포함하도록 속성 인덱스를 갱신하는 단계를 더 포함하는 방법.
  20. 데이터 요소들을 포함하는 컴퓨터로 독출 가능한 매체;
    각 데이터 요소는 데이터 속성 객체와 연관되어 저장되고, 상기 각 데이터 요소는 데이터 객체 및 에러 정정 객체를 포함하고, 각 데이터 속성 객체는 정해진 수의 속성들을 포함하고;
    데이터 속성 객체들에 포함된 각 속성에 대한 속성 인덱스; 그리고
    스크러빙(scrubbing) 검색 기준 및 식별된 버퍼 위치를 수신하도록 구성되는 스토리지 제어기를 포함하고,
    상기 스토리지 제어기는,
    속성 인덱스들을 활용하여 상기 스크러빙 검색 기준에 대응하는 데이터 속성 객체들과 연관되어 상기 컴퓨터로 독출 가능한 매체에 저장된 데이터 요소들을 검색하도록 구성되는 데이터 분석 엔진; 그리고
    상기 스크러빙 검색 기준에 대응하는 데이터 속성 객체와 연관되어 검색된 각 데이터 요소에 대해 상기 데이터 객체를 상기 에러 정정 객체와 비교하여 상기 데이터 객체가 에러들을 포함하는지 판단하고, 그리고 어느 데이터 요소들이 에러들을 포함하는 데이터 객체들을 포함하는지를 가리키는 보고를 상기 식별된 버퍼 위치로 출력하도록 더 구성되는 에러 검출 엔진을 포함하는 데이터 스크러빙 장치.
KR1020170051804A 2016-08-15 2017-04-21 스마트 스토리지 장치 내에서 데이터 스크러빙을 실행하는 방법 KR102094932B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662375411P 2016-08-15 2016-08-15
US62/375,411 2016-08-15
US15/284,478 2016-10-03
US15/284,478 US10241860B2 (en) 2016-08-15 2016-10-03 Method of executing data scrubbing inside a smart storage device

Publications (2)

Publication Number Publication Date
KR20180019051A true KR20180019051A (ko) 2018-02-23
KR102094932B1 KR102094932B1 (ko) 2020-03-30

Family

ID=61160167

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170051804A KR102094932B1 (ko) 2016-08-15 2017-04-21 스마트 스토리지 장치 내에서 데이터 스크러빙을 실행하는 방법

Country Status (6)

Country Link
US (1) US10241860B2 (ko)
JP (1) JP6788554B2 (ko)
KR (1) KR102094932B1 (ko)
CN (1) CN107765994B (ko)
DE (1) DE102017122216A1 (ko)
TW (1) TWI699644B (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10437501B1 (en) * 2018-03-23 2019-10-08 EMC IP Holding Company LLC Storage system with detection and correction of reference count based leaks in physical capacity
US10901847B2 (en) * 2018-07-31 2021-01-26 EMC IP Holding Company LLC Maintaining logical to physical address mapping during in place sector rebuild
US11163886B2 (en) * 2018-09-28 2021-11-02 Dell Products L.P. Information handling system firmware bit error detection and correction
DE102020129606A1 (de) 2020-11-10 2022-05-12 nxtbase technologies GmbH Verfahren zur steuerung von prozessen mittels einer sprachbefehlseingabe

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120331207A1 (en) * 2011-06-24 2012-12-27 Lassa Paul A Controller, Storage Device, and Method for Power Throttling Memory Operations
US20140310570A1 (en) * 2013-04-11 2014-10-16 International Business Machines Corporation Stale data detection in marked channel for scrub
KR20150105323A (ko) * 2013-01-08 2015-09-16 바이올린 메모리 인코포레이티드 데이터 스토리지 방법 및 시스템
KR101609509B1 (ko) * 2015-04-10 2016-04-05 홍익대학교 산학협력단 에러를 검출하고 수정하는 컴퓨팅 방법 및 장치

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5956473A (en) * 1996-11-25 1999-09-21 Macronix International Co., Ltd. Method and system for managing a flash memory mass storage system
US7136885B2 (en) * 2002-12-20 2006-11-14 International Business Machines Corporation Free space management
US7496823B2 (en) 2005-03-16 2009-02-24 Hewlett-Packard Development Company, L.P. Hardware based memory scrubbing
US8145941B2 (en) * 2006-10-31 2012-03-27 Hewlett-Packard Development Company, L.P. Detection and correction of block-level data corruption in fault-tolerant data-storage systems
JP5076488B2 (ja) * 2006-12-22 2012-11-21 富士通株式会社 情報処理装置、履歴管理方法、履歴管理プログラム
US7661045B2 (en) 2007-12-19 2010-02-09 International Business Machines Corporation Method and system for enterprise memory management of memory modules
US8280858B2 (en) 2009-06-29 2012-10-02 Oracle America, Inc. Storage pool scrubbing with concurrent snapshots
US8407191B1 (en) * 2010-06-29 2013-03-26 Emc Corporation Priority based data scrubbing on a deduplicated data store
US8229901B2 (en) 2010-09-04 2012-07-24 International Business Machines Corporation Disk scrubbing
CN102184211B (zh) * 2011-05-03 2014-08-06 华为数字技术(成都)有限公司 文件系统和检索、写入、修改或删除文件的方法与装置
US8687421B2 (en) * 2011-11-21 2014-04-01 Sandisk Technologies Inc. Scrub techniques for use with dynamic read
KR20140001535A (ko) 2012-06-27 2014-01-07 삼성전자주식회사 스토리지 시스템 및 그것의 데이터 관리 방법
US9081693B2 (en) 2012-08-17 2015-07-14 Freescale Semiconductor, Inc. Data type dependent memory scrubbing
US9026869B1 (en) * 2012-11-01 2015-05-05 Amazon Technologies, Inc. Importance-based data storage verification
JP5971423B2 (ja) * 2014-07-23 2016-08-17 富士通株式会社 情報処理装置、メモリコントローラ、記憶装置の制御プログラム及び記憶装置の制御方法
CN105630808A (zh) * 2014-10-31 2016-06-01 北京奇虎科技有限公司 基于分布式文件系统的文件读取、写入方法及节点服务器
CN104484427B (zh) * 2014-12-19 2017-12-29 武汉长江通信智联技术有限公司 一种录像文件存储装置及方法
US10209895B2 (en) * 2016-02-18 2019-02-19 Toshiba Memory Corporation Memory system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120331207A1 (en) * 2011-06-24 2012-12-27 Lassa Paul A Controller, Storage Device, and Method for Power Throttling Memory Operations
KR20150105323A (ko) * 2013-01-08 2015-09-16 바이올린 메모리 인코포레이티드 데이터 스토리지 방법 및 시스템
US20140310570A1 (en) * 2013-04-11 2014-10-16 International Business Machines Corporation Stale data detection in marked channel for scrub
KR101609509B1 (ko) * 2015-04-10 2016-04-05 홍익대학교 산학협력단 에러를 검출하고 수정하는 컴퓨팅 방법 및 장치

Also Published As

Publication number Publication date
KR102094932B1 (ko) 2020-03-30
US20180046546A1 (en) 2018-02-15
JP6788554B2 (ja) 2020-11-25
JP2018028905A (ja) 2018-02-22
TW201807573A (zh) 2018-03-01
TWI699644B (zh) 2020-07-21
DE102017122216A1 (de) 2018-04-05
CN107765994B (zh) 2023-01-03
CN107765994A (zh) 2018-03-06
US10241860B2 (en) 2019-03-26

Similar Documents

Publication Publication Date Title
US10169383B2 (en) Method and system for scrubbing data within a data storage subsystem
US6675180B2 (en) Data updating apparatus that performs quick restoration processing
KR20180019051A (ko) 스마트 스토리지 장치 내에서 데이터 스크러빙을 실행하는 방법
US10733045B2 (en) Online repair of metadata for structured data including file systems
US8126859B2 (en) Updating a local version of a file based on a rule
US20160034487A1 (en) Selective fragmentation repair
US9354964B2 (en) Tag based selection of test scripts for failure analysis
US9262219B2 (en) Distributed processing system, distributed processing method, and distributed processing program
CN106528322B (zh) 检测数据的无记载损坏的方法和设备
US7240066B2 (en) Unicode transitional code point database
CN112882717B (zh) 一种标签名查重方法、装置、电子设备及存储介质
CN110109867B (zh) 改进在线模式检测的方法、装置和计算机程序产品
US11727057B2 (en) Network key value indexing design
KR101666455B1 (ko) 메모리 액세스 방법, 장치, 및 시스템
CN111382179B (zh) 数据处理方法、装置及电子设备
WO2012104991A1 (ja) プログラムテスト方法、プログラムテストシステム及びプログラム
CN107305582B (zh) 一种元数据处理方法及装置
US11860798B2 (en) Data access path optimization
CN116401630A (zh) 数据校验方法、装置、存储介质及计算机设备
US20090276747A1 (en) Segmenting Integrated Circuit Layout Design Files Using Speculative Parsing
CN117667504A (zh) 用于修复文件系统的方法、装置、电子设备和介质
CN117421200A (zh) 代码回归测试方法、装置、计算机设备、存储介质
CN114610644A (zh) 测试数据库的方法及装置
CN114817142A (zh) 基于散列的键值到块转换方法和系统
CN114911806A (zh) 更新数据的方法和相关装置

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant