KR20180045220A - 읽기 요청 횟수를 줄이는 데이터 복원 동작을 수행하는 데이터 스토리지 시스템 - Google Patents

읽기 요청 횟수를 줄이는 데이터 복원 동작을 수행하는 데이터 스토리지 시스템 Download PDF

Info

Publication number
KR20180045220A
KR20180045220A KR1020160139080A KR20160139080A KR20180045220A KR 20180045220 A KR20180045220 A KR 20180045220A KR 1020160139080 A KR1020160139080 A KR 1020160139080A KR 20160139080 A KR20160139080 A KR 20160139080A KR 20180045220 A KR20180045220 A KR 20180045220A
Authority
KR
South Korea
Prior art keywords
data
data storage
bad
lba
area
Prior art date
Application number
KR1020160139080A
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 삼성전자주식회사
Priority to KR1020160139080A priority Critical patent/KR20180045220A/ko
Priority to US15/624,745 priority patent/US10409683B2/en
Publication of KR20180045220A publication Critical patent/KR20180045220A/ko

Links

Images

Classifications

    • 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
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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/0689Disk arrays, e.g. RAID, JBOD

Abstract

읽기 요청 횟수를 줄이는 데이터 복원 동작을 수행하는 데이터 스토리지 시스템에 대하여 개시된다. 데이터 스토리지 시스템은 호스트와, 복수의 데이터 저장 장치들을 포함한 RAID 장치를 포함한다. 호스트는 복원 요청에 따라 데이터 저장 장치의 읽기 요청된 영역 내 불량이 없는 제1 영역과 불량이 있는 제2 영역의 데이터를 수신할 때, 제2 영역에 대한 불량 어드레스 리스트 정보를 함께 수신한다. 호스트는 불량 어드레스 리스트 정보에 기초하여 제2 영역의 데이터를 복원한다.

Description

읽기 요청 횟수를 줄이는 데이터 복원 동작을 수행하는 데이터 스토리지 시스템 {Data storage system for implementing data rebuild operation with reduced read request}
본 발명은 데이터 스토리지 시스템에 관한 것으로서, 더욱 상세하게는 RAID 복원 동작 (RAID rebuild operation)에서 읽기 요청 횟수(number of read request)를 줄일 수 있는 불량 주소 전송 방법들을 수행하는 데이터 스토리지 시스템에 관한 것이다.
HDD (Hard Disk Drive) 또는 SSD (Solid State Drive)에 대응하는 드라이브를 복수개 탑재하는 RAID (Redundant Arrays of Inexpensive Disks) 장치가 이용되고 있다. RAID 장치는 드라이브에 저장된 데이터를 리던던트하게 저장하도록 하여 1대의 드라이브가 불량인(failed) 경우에도 저장된 데이터를 보존할 수 있다.
RAID 복원 동작은, RAID 장치 내 불량 드라이브(failed drive)를 새로운 드라이브로 교체하기 위해 수행될 수 있다. RAID 복원 동작에서, 호스트는 불량 드라이브 전체에 대하여 데이터 복원 동작을 수행할 수 있는데, 이는 복원 시간(rebuild time)이 많이 소요되는 문제점이 있다.
RAID 복원 동작에서, 호스트는 불량 드라이브 내 불량 영역(failed portion)의 데이터에 대해서만 복원 동작을 수행할 수 있다. 이 경우, 불량 드라이브 내 불량 영역이 복수개 존재하는 경우, 불량 드라이브는 불량 영역의 불량 논리 블락 주소(failed LBA: failed Logical Block Address)에 접근할 때마다 호스트에서 요청한 데이터 읽기 동작을 종료할 수 있다. 이에 따라, 호스트는 불량 드라이브에게 다음 논리 블락 어드레스에 대한 읽기 요청을 발행(issue)해야 한다. 만약에, 불량 드라이브 내 불량 논리 블락 어드레스들의 수가 호스트에 설정된 읽기 요청 범위(read request range) 내에 존재하는 경우, 호스트는 불량 논리 블락 어드레스들에 따른 불량 드라이브의 읽기 동작 중단 때문에 여러번의 읽기 요청들을 발행해야 하는 문제점이 있다.
본 발명의 목적은 읽기 요청 횟수와 복원 시간을 줄이기 위해, 복원 요청에 응답하여 읽기 요청된 영역의 노멀 데이터와 함께 불량 주소 리스트를 호스트로 전송하도록 하는 데이터 복원 방법을 제공하는 것이다.
본 발명의 다른 목적은 상기 데이터 복원 방법을 지원하는 RAID 그룹을 제공하는 것이다.
본 발명의 실시예들에 따른 복수의 데이터 저장 장치들을 포함하는 RAID 장치의 데이터 복원 방법은, 호스트에서 복수의 데이터 저장 장치들 중 불량 데이터 저장 장치로 복원 요청(rebuild request)을 데이터 저장 장치로 보내는 단계, 호스트에서 복원 요청에 따라 불량 데이터 저장 장치의 읽기 요청된 영역 내 불량이 없는 제1 영역과 불량이 있는 제2 영역의 데이터, 그리고 제2 영역에 대한 정보를 수신하는 단계, 호스트에서 제2 영역에 대한 정보에 기초하여 불량 데이터 저장 장치의 불량 어드레스 리스트를 획득하는 단계, 그리고 호스트에서 불량 어드레스 리스트에 기초하여 제2 영역의 데이터를 복원하는 단계를 포함한다.
본 발명의 실시예들에 따른 데이터 저장 장치를 복수개 포함하는 데이터 저장 장치에서, 데이터 저장 장치는 데이터를 저장하고 검색하는 메모리들과, 메모리들의 데이터를 관리하고 외부의 읽기 요청에 응답하여 메모리들에 저장된 데이터를 읽어들여 외부로 전송하는 메모리 콘트롤러를 포함한다. 메모리 콘트롤러는 외부로부터의 복원 요청과 연계된 읽기 요청된 데이터에서 불량이 없는 제1 영역과 불량이 있는 제2 영역의 데이터를 전송할 때, 제2 영역에 대한 불량 어드레스 리스트 정보를 함께 전송한다.
본 발명의 실시예들에 따르면, 복원 요청과 연계된 읽기 요청된 논리 블락 어드레스(LBA) 데이터를 전송할 때 불량 LBA들에 대한 불량 LBA 리스트 정보가 포함되기 때문에, 호스트의 데이터 복원 동작에 따른 읽기 요청 횟수를 줄이고 데이터 복원 시간을 단축할 수 있다.
도 1은 본 발명의 실시예에 따른 데이터 스토리지 시스템을 설명하는 도면이다.
도 2 내지 도 5는 도 1의 RAID 그룹 내 데이터 저장 장치를 예시적으로 설명하는 도면들이다.
도 6은 본 발명의 개념적 실시예에 따라 데이터 스토리지 시스템에서 수행되는 데이터 복원 벙법을 설명하는 도면이다.
도 7은 도 6의 불량 LBA 리스트 정보를 포함하는 읽기 요청된 LBA 데이터를 설명하는 도면이다.
도 8은 도 6의 데이터 복원 동작을 지원하는 데이터 저장 장치를 설명하는 도면이다.
도 9 내지 도 11b는 본 발명의 실시예들에 따른 불량 LBA 리스트 정보를 포함하는 읽기 요청된 LBA 데이터들을 설명하는 도면들이다.
도 12는 본 발명의 개념적 실시예에 따라 데이터 스토리지 시스템에서 수행되는 데이터 복원 방법을 설명하는 도면이다.
도 13 및 도 14는 본 발명의 실시예들에 따라 데이터 스토리지 시스템에서 수행되는 데이터 복원 동작을 설명하는 도면들이다.
도 15 내지 도 17은 본 발명의 실시예들에 따른 데이터 복원 방법을 설명하는 도면들이다.
이하, 첨부된 도면을 참조하여 본 발명의 실시 예를 설명할것이지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이하에서 기술하는 실시 예에는 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
도 1은 본 발명의 실시예들에 따른 데이터 스토리지 시스템을 설명하는 도면이다.
도 1을 참조하면, 데이터 스토리지 시스템(100)은 호스트(110)와 RAID 그룹(120)을 포함한다. 데이터 스토리지 시스템(100)은 퍼스널 컴퓨터들, 워크스테이션들, 서버 시스템들 그리고 크라우드 스토리지 시스템(cloud storage systems)들과 같은 컴퓨터 및 네트워크 시스템에 포함될 수 있다. 데이터 스토리지 시스템(100)는 데이터를 저장하거나 저장된 데이터를 검색하는(retrieve) 용도로 이용될 수 있다.
호스트(110)와 RAID 그룹(120)은 버스(130)를 통하여 통신할 수 있다. 버스(130)는 데이터 스토리지 시스템(100)의 구성 요소들 사이에 연결되는 하나 이상의 분리된 링크들(links)로 이해될 수 있다.
예시적으로, 버스(130)는 SATA(Serial Advanced Technology Attachment), SAS(Serial Attached Small Computer System), SCSI(Small Computer System Interface), ATA(Advanced Technology Attachment), PCIe(Phripheral Component Interconnect Express), IDE(Integrated Drive Electronics), DMI(Direct Media Interface), USB(Universal Serial Bus), 무선 인터페이스 등과 같은 다양한 인터페이스들을 포함할 수 있다.
데이터 스토리지 시스템(100)은, 신뢰성(reliability)과 유효성(validity)을 획득하기 위하여, 다양한 배열과 배치로 구성된 멀티플 RAID 그룹(120)를 포함할 수 있다. 본 실시예에서, 데이터 스토리지 시스템(100)은 데이터 신뢰성을 보장하기 위하여, RAID 기법(scheme)을 사용하여 RAID 그룹(120)의 데이터를 관리하는 방법에 대하여 설명될 것이다. 데이터 스토리지 시스템(100)는 복수개의 데이터 저장 장치들(121~12n+1)이 배치된 RAID 그룹(120)을 복수개 포함하는 멀티플 RAID 장치로 구현될 수 있다. 본 발명에서는 설명의 편의를 위하여, RAID 그룹(120)이 하나의 데이터 스토리지 시스템(100)을 구성하는 것으로 설명될 것이다.
호스트(110)는 RAID 그룹(120) 내 데이터 저장 장치들(121~12n+1)에 대하여 상위 레벨에서 데이터 관리 제어(top level data management control)를 수행한다.
RAID 그룹(120)는 하나의 RAID 그룹을 나타내고, 복수개의 데이터 저장 장치들(DRV1~DRVn)을 포함한다. 예를 들어, 데이터 저장 장치들(DRV1~DRVn)은 하드 디스크 드라이브들(HDDs), 솔리드 스테이트 드라이브들(SSDs), 광학 드라이브들(optical drives), 테이프 드라이브들(tape drives), 등으로 구성될 수 있다.
RAID 그룹(120)는 RAID 기법에 따라, 제1 내지 제n-1 데이터 저장 장치들(121~12n-1)에 데이터를 저장 및 검색하고, 제n 데이터 저장 장치(12n)에 RAID 패리티 데이터를 저장할 수 있다. 예를 들어, 제1 내지 제n-1 데이터 저장 장치들(121~12n-1)에 저장되는 데이터는 사용자 데이터, 시스템 데이터, 스왑 파일 데이터 등일 수 있다.
제n 데이터 저장 장치(12n)에 저장되는 RAID 패리티 데이터는 제1 내지 제n-1 데이터 저장 장치들(121~12n-1)의 데이터들을 XOR(exclusive OR) 연산한 결과값들이다. 제n 데이터 저장 장치(12n)에 저장된 RAID 패리티 데이터는 RAID 그룹(120)에 속하는 데이터의 신뢰성을 보장하기 위하여 제공된다.
RAID 그룹(120)에서, 제1 내지 제n-1 데이터 저장 장치들(121~12n-1) 중 어느 하나가 불량이거나 불량 징후들(signs)을 나타낼 수 있다. 예시적으로, 제i 데이터 저장 장치(12i)가 불량 데이터 저장 장치라고 가정하자. 불량 데이터 저장 장치(12i)에 저장된 데이터는, 불량 데이터 저장 장치(120i)가 아직 억세스 가능하다면, RAID 그룹(120)에 미리 할당된 스페어 데이터 저장 장치(12n+1)로 전송될 수 있다. 호스트(110)는 불량 데이터 저장 장치(12i)에 저장된 데이터를 복원하여(rebuild) 스페어 데이터 저장 장치(12n+1)에 저장할 수 있다. 이에 따라, 불량 데이터 저장 장치(12i)는 스페어 데이터 저장 장치(12n+1)로 교환될 수 있다.
호스트(110)는 불량 데이터 저장 장치(12i) 내 불량이 발생하지 않은 영역의 노멀 데이터를 복사하여 스페어 데이터 저장 장치(12n+1)에 저장하고, 불량이 발생한 영역의 데이터에 대해서만 데이터 복원 동작을 수행하여 복원된 데이터를 스페어 데이터 저장 장치(12n+1)에 저장할 수 있다. 데이터 복원 동작에 의해, 불량 영역의 데이터는 제1 내지 제n 데이터 저장 장치들(121~12n) 중 불량 데이터 저장 장치(12i) 외 나머지 데이터 저장 장치들의 해당 영역의 데이터를 읽고 난 후, XOR 연산을 수행하여 얻어지는 복원된 데이터로 대체될 수 있다.
호스트(110)는, 데이터 복원 동작을 수행하기 위하여, RAID 그룹(120) 내 데이터 저장 장치들(121~12n-1)과 연관된 불량을 검출할 수 있다. 불량이 검출된 경우, 호스트(110)는 RAID 그룹(120)에 저장된 데이터를 보존하기 위해, 데이터 저장 장치(121~12n-1)로 복원 요청(Rebuild REQ)을 발행할 수 있다. 그리고, 호스트(110)는 복원 요청(Rebuild REQ)과 연계된 읽기 요청(Read Request)을 데이터 저장 장치(121~12n-1)로 발행할 수 있다. 호스트(110)는 데이터 저장 장치(121~12n-1)로부터 읽기 요청된 데이터를 수신할 수 있다. 이 때, 호스트(110)는 불량 주소 정보가 포함된 읽기 요청된 데이터를 수신할 수 있다. 호스트(110)는 수신된 불량 주소 정보에 기초하여 읽기 요청된 데이터에서 불량 영역의 데이터를 복원할 수 있다.
도 2 내지 도 5는 도 1의 RAID 그룹 내 데이터 저장 장치를 예시적으로 설명하는 도면들이다.
도 2를 참조하면, 데이터 저장 장치(DRV)는 SSD(200)를 채용할 수 있다. SSD(200)는 버스(130)를 통해 호스트(110)와 통신할 수 있다. SSD(200)는 메모리 콘트롤러(210)와 복수의 메모리들(221~22n)을 포함한다. 메모리들(221~22n)은 플래시 메모리들로 구현될 수 있다. 설명의 편의를 위하여, 메모리들(221~22n)은 플래시 메모리들(221~22n)로 칭한다.
메모리 콘트롤러(210)는 호스트(110)로부터 수신된 신호에 응답하여 복수의 플래시 메모리들(221~22n)을 제어할 수 있다. 메모리 콘트롤러(210)는 호스트(110)로부터 수신되는 읽기 요청 (또는 명령) 신호에 따라 플래시 메모리들(221~22n)에 저장되어 있는 데이터를 읽어들여 호스트(110)로 전송할 수 있다. 메모리 콘트롤러(210)는 호스트(110)로부터 수신되는 쓰기 요청 (또는 명령) 신호에 따라 호스트(110)로부터 전송되는 데이터를 플래시 메모리들(221~22n)에 저장할 수 있다. 메모리 콘트롤러(210)는 버스(130)에 구현된 인터페이스를 통하여 호스트(110)와 명령 및 데이터를 통신할 수 있다.
메모리 콘트롤러(210)는 호스트(110)로 플래시 메모리들(221~22n)의 논리 블락 주소(Logical Block Address: LBA)를 제공하고, 플래시 메모리들(221~22n)에 대해 물리 블락 어드레스(Physical Block Address: PBA)를 제공할 수 있다. 메모리 콘트롤러(210)는 물리 블락 어드레스(PBA)를 이용하여 플래시 메모리들(221~22n)을 관리하고, 물리 블락 어드레스(PBA)를 논리 블락 어드레스(LBA)로 변환할 수 있다.
메모리 콘트롤러(210)는 호스트(110)에서 수행되는 데이터 복원 동작을 지원하는 소프트웨어(800)를 포함할 수 있다. 메모리 콘트롤러(210)에 포함된 소프트웨어(800)는 이 후에 도 8을 참조하여 상세하게 설명될 것이다. 예시적으로, 소프트웨어(800)는 다수개의 프로그램 모듈들을 포함할 수 있다. 프로그램 모듈들은, 데이터 복원 동작을 지원할 것인지 여부를 결정하고, 읽기 요청에 따라 리드된 데이터에 불량 주소가 있는지 여부를 판단하고, 리드된 데이터를 불량이 없는 노멀 영역과 불량이 있는 불량 영역으로 구분하고, 노멀 영역의 데이터와 함께 불량 영역에 대한 불량 주소 정보가 포함된 읽기 요청된 데이터를 호스트(110)로 전송할 수 있도록 실행될 수 있다.
플래시 메모리(221~22n)는 도 3의 블락 다이어그램으로 설명된다.
도 3을 참조하면, 플래시 메모리(221~22n)는 메모리 셀 어레이(310), 어드레스 디코더(320), 제어 로직부(330) 그리고 입출력 회로(340)를 포함할 수 있다.
메모리 셀 어레이(310)는 워드 라인들(WL), 스트링 선택 라인들(SSL), 그라운드 선택 라인들(GSL) 및 비트 라인들(BL)에 연결될 수 있다. 메모리 셀 어레이(310)는 워드 라인들(WL), 스트링 선택 라인들(SSL) 및 그라운드 선택 라인들(GSL)을 통해 어드레스 디코더(320)에 연결되고, 비트 라인들(BL)을 통해 입출력 회로(340)에 연결될 수 있다. 메모리 셀 어레이(310)는 복수의 메모리 블록들(BLK1 내지 BLKn)을 포함할 수 있다.
각 메모리 블록(BLK1~BLKn)은 복수의 메모리 셀들 및 복수의 선택 트랜지스터들을 포함할 수 있다. 메모리 셀들은 워드라인들(WL)에 연결되고, 선택 트랜지스터들은 스트링 선택 라인들(SSL) 또는 그라운드 선택 라인들(GSL)에 연결될 수 있다. 각 메모리 블록(BLK1~BLKn)의 메모리 셀들은 1-비트 데이터를 저장하는 싱글 레벨 셀들 또는 멀티-비트 데이터를 저장하는 멀티 레벨 셀들로 구성될 수 있다. 각 메모리 블록(BLK1~BLKn)의 메모리 셀들은 기판과 수직인 방향으로 적층되어 3차원 구조를 형성할 수 있다. 메모리 블록의 구조는 도 4 및 도 5를 참조하여 상세하게 설명될 것이다.
어드레스 디코더(320)는 메모리 셀 어레이(310)의 워드라인들(WL)에 대한 선택 및 구동 동작들을 수행하도록 구성된다. 어드레스 디코더(320)는 메모리 콘트롤러(210, 도 2)로부터 어드레스(ADDR)를 수신하고, 수신된 어드레스(ADDR)를 디코딩하여 복수의 워드라인들(WL)을 구동할 수 있다.
제어 로직부(330)는 메모리 콘트롤러(210)로부터 커맨드(CMD) 및 제어 신호(CTRL)를 수신하고, 수신된 신호들에 응답하여 어드레스 디코더(320)와 입출력 회로(340)를 제어할 수 있다. 예를 들어, 제어 로직부(330)는 커맨드(CMD) 및 제어 신호(CTRL)에 응답하여 데이터(DATA)가 메모리 셀 어레이(310)에 기입되도록 어드레스 디코더(320)와 입출력 회로(340)를 제어할 수 있다. 제어 로직부(330)는 커맨드(CMD) 및 제어 신호(CTRL)에 응답하여 메모리 셀 어레이(310)에 저장된 데이터(DATA)가 출력되도록 어드레스 디코더(320)와 입출력 회로(340)를 제어할 수 있다. 제어 로직부(330)는 커맨드(CMD) 및 제어 신호(CTRL)에 응답하여 메모리 셀 어레이(310)의 일부가 소거되도록 어드레스 디코더(320)와 입출력 회로(340)를 제어할 수 있다.
제어 로직부(330)는 플래시 메모리(221~22n)가 동작하는데 요구되는 다양한 전압들을 생성하는 전압 발생기를 제어할 수 있다. 예를 들어, 전압 생성기는 복수의 선택 읽기 전압들, 복수의 비선택 읽기 전압들, 복수의 프로그램 전압들, 복수의 패스 전압들, 복수의 소거 전압들과 같은 다양한 전압들을 생성하여 어드레스 디코더(320)와 메모리 셀 어레이(310)로 제공할 수 있다.
입출력 회로(340)는 복수의 비트라인들(BL)을 통하여 메모리 셀 어레이(310)와 연결된다. 입출력 회로(340)는 메모리 콘트롤러(210)로부터 수신된 데이터(DATA)가 메모리 셀 어레이(310)에 기입되도록 복수의 비트라인들(BL)을 제어할 수 있다. 입출력 회로(340)는 메모리 셀 어레이(310)에 저장된 데이터(DATA)가 출력되도록 복수의 비트라인들(BL)을 제어할 수 있다.
도 4는 도 3의 메모리 셀 어레이(310)의 일 예를 나타내는 회로도이다. 도 4는 도 3에서 설명된 메모리 블록들(BLK1~BLKn) 중에서 제1 메모리 블록(BLK1)의 일부분에 대하여 설명되나, 본 발명의 범위가 이에 한정되는 것은 아니며, 다른 메모리 블록들(BLK2-BLKn) 또한 제1 메모리 블록(BLK1)과 동일한 구조를 가질 수 있다.
제1 메모리 블록(BLK1)은 복수의 낸드 스트링들(NS11 내지 NS22), 복수의 워드 라인들(WL1 내지 WL8), 복수의 비트 라인들(BL1, BL2), 그라운드 선택 라인들(GSL), 스트링 선택 라인(SSL) 및 공통 소스 라인(CSL)을 포함할 수 있다. 스트링 선택 라인(SSL)은 제1 및 제2 스트링 선택 라인들(SSL1, SSL2)로 분리될 수 있다. 여기서, 낸드 스트링들의 개수, 워드 라인들의 개수, 비트 라인들의 개수, 그라운드 선택 라인의 개수 및 스트링 선택 라인의 개수는 실시예에 따라 다양하게 변경될 수 있다.
제1 비트 라인(BL1)과 공통 소스 라인(CSL) 사이에 낸드 스트링들(NS11, NS21)이 제공되고, 제2 비트 라인(BL2)과 공통 소스 라인(CSL) 사이에 낸드 스트링들(NS12, NS22)이 제공된다. 각 낸드 스트링(예를 들면, NS11)은 직렬로 연결된 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1 내지 MC8) 및 그라운드 선택 트랜지스터(GST)를 포함할 수 있다.
하나의 비트 라인에 공통으로 연결된 낸드 스트링들은 하나의 칼럼을 구성한다. 예를 들어, 제1 비트 라인(BL1)에 공통으로 연결된 낸드 스트링들(NS11, NS21)은 제1 칼럼에 대응되고, 제2 비트 라인(BL2)에 공통으로 연결된 낸드 스트링들(NS12, NS22)은 제2 칼럼에 대응될 수 있다.
하나의 스트링 선택 라인에 연결되는 낸드 스트링들은 하나의 로우를 구성한다. 예를 들어, 제1 스트링 선택 라인(SSL1)에 연결된 낸드 스트링들(NS11, NS12)은 제1 로우에 대응되고, 제2 스트링 선택 라인(SSL2)에 연결된 낸드 스트링들(NS21, NS22)은 제2 로우에 대응될 수 있다.
스트링 선택 트랜지스터(SST)는 대응하는 스트링 선택 라인(SSL1, SSL2)에 연결된다. 복수의 메모리 셀들(MC1 내지 MC8)은 각각 대응하는 워드 라인(WL1 내지 WL8)에 연결된다. 그라운드 선택 트랜지스터(GST)는 대응하는 그라운드 선택 라인(GSL)에 연결된다. 스트링 선택 트랜지스터(SST)는 대응하는 비트 라인(BL1, BL2)에 연결되고, 그라운드 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결된다.
본 실시예에서, 동일 높이의 워드 라인(예를 들면, WL1)은 서로 공통으로 연결되어 있다. 예를 들어, 제 1 워드 라인(WL1)에 연결되어 있고 낸드 스트링(NS11, NS12)에 속해 있는 메모리 셀들을 프로그램하는 경우에는, 제1 워드 라인(WL1)과 제1 스트링 선택 라인(SSL1)이 선택된다.
낸드 스트링들의 칼럼들의 수는 증가 또는 감소할 수 있다. 낸드 스트링들의 칼럼들의 수가 변경됨에 따라, 낸드 스트링들의 칼럼들에 연결되는 비트라인들의 수, 그리고 하나의 스트링 선택 라인에 연결되는 낸드 스트링들의 수 또한 변경될 수 있다.
낸드 스트링들의 높이는 증가 또는 감소될 수 있다. 예를 들어, 낸드 스트링들 각각에 적층되는 메모리 셀들의 수는 증가 또는 감소될 수 있다. 낸드 스트링들 각각에 적층되는 메모리 셀들의 수가 변경됨에 따라, 워드라인들의 수 또한 변경될 수 있다. 예를 들어, 낸드 스트링들 각각에 제공되는 스트링 선택 트랜지스터 또는 접지 선택 트랜지스터의 수는 증가될 수 있다. 낸드 스트링들 각각에 제공되는 스트링 선택 트랜지스터 또는 접지 선택 트랜지스터의 수가 변경됨에 따라, 스트링 선택 라인 또는 접지 선택 라인의 수 또한 변경될 수 있다. 스트링 선택 트랜지스터 또는 접지 선택 트랜지스터의 수가 증가되면, 스트링 선택 트랜지스터들 또는 접지 선택 트랜지스터들은 메모리 셀들(MC1~MC8)과 같은 형태로 적층될 수 있다.
예시적으로, 프로그램 및 읽기 동작은 낸드 스트링들(NS11, NS12, NS21, NS22)의 로우 단위로 수행될 수 있다. 스트링 선택 라인들(SSL1, SSL2)에 의해 낸드 스트링들(NS11, NS12, NS21, NS22)이 하나의 로우 단위로 선택될 수 있다. 제1 스트링 선택 라인(SSL1)에 의해 낸드 스트링들(NS11, NS12)이 하나의 로우 단위로 선택되고, 제2 스트링 선택 라인(SSL2)에 의해 낸드 스트링들(NS21, NS22)이 하나의 로우 단위로 선택될 수 있다.
낸드 스트링들(NS11, NS12, NS21, NS22)의 선택된 로우에서, 프로그램 및 읽기 동작은 페이지 단위로 수행될 수 있다. 페이지는 하나의 워드라인에 연결된 메모리 셀들의 하나의 로우일 수 있다. 낸드 스트링들(NS11, NS21, NS21, NS22)의 선택된 로우에서, 메모리 셀들은 워드라인들(WL1-WL8)에 의해 페이지 단위로 선택될 수 있다.
도 5는 도 4의 메모리 블록에 대응하는 구조를 보여주는 사시도이다.
도 5를 참조하면, 메모리 블록(BLK1)는 기판(SUB)에 대해 수직 방향으로 형성되어 있다. 도 5에서는, 메모리 블록(BLK1)이 2개의 선택 라인들(GSL, SSL), 8개의 워드 라인들(WL1 내지 WL8), 그리고 3개의 비트 라인들(BL1 내지 BL3)을 포함하는 것으로 도시되어 있으나, 실제로는 이것들보다 더 많거나 적을 수 있다.
기판(SUB)은 제1 도전형(예를 들어, p-타입)을 가지며, 기판(SUB) 상에 제1 방향(예를 들어, Y 방향)을 따라 신장되고, 제2 도전형(예를 들어, n-타입)의 불순물들이 도핑된 공통 소스 라인(CSL)이 제공된다. 인접한 두 공통 소스 라인(CSL) 사이의 기판(SUB)의 영역 상에, 제1 방향을 따라 신장되는 복수의 절연막들(IL)이 제3 방향(예를 들어, Z 방향)을 따라 순차적으로 제공되며, 복수의 절연막들(IL)은 제3 방향을 따라 특정 거리만큼 이격된다. 예를 들어, 복수의 절연막들(IL)은 실리콘 산화물과 같은 절연 물질을 포함할 수 있다.
인접한 두 공통 소스 라인들(CSL) 사이의 기판(SUB)의 영역 상에, 제1 방향을 따라 순차적으로 배치되며, 제3 방향을 따라 복수의 절연막들(IL)을 관통하는 복수의 필라들(pillars, P)이 제공된다. 예를 들어, 복수의 필라들(P)은 복수의 절연막들(IL)을 관통하여 기판(SUB)과 컨택할 것이다. 구체적으로, 각 필라(P)의 표면층(surface layer, S)은 p-타입을 갖는 실리콘 물질을 포함할 수 있고, 채널 영역으로 기능할 수 있다. 한편, 각 필라(P)의 내부층(I)은 실리콘 산화물과 같은 절연 물질 또는 에어 갭(air gap)을 포함할 수 있다.
인접한 두 공통 소스 라인들(CSL) 사이의 영역에서, 절연막들(IL), 필라들(P) 및 기판(SUB)의 노출된 표면을 따라 전하 저장층(charge storage layer, CS)이 제공된다. 전하 저장층(CS)은 게이트 절연층(또는 '터널링 절연층'이라고 지칭함), 전하 트랩층 및 블로킹 절연층을 포함할 수 있다. 예를 들어, 전하 저장층(CS)은 ONO(oxide-nitride-oxide) 구조를 가질 수 있다. 또한, 인접한 두 공통 소스 라인들(CSL) 사이의 영역에서, 전하 저장층(CS)의 노출된 표면 상에, 선택 라인들(GSL, SSL) 및 워드 라인들(WL1 내지 WL8)과 같은 게이트 전극(GE)이 제공된다.
복수의 필라들(P) 상에는 드레인들 또는 드레인 컨택들(DR)이 각각 제공된다. 예를 들어, 드레인들 또는 드레인 컨택들(DR)은 제2 도전형을 갖는 불순물들이 도핑된 실리콘 물질을 포함할 수 있다. 드레인들(DR) 상에, 제2 방향(예를 들어, X 방향)으로 신장되고 제1 방향을 따라 특정 거리만큼 이격되어 배치된 비트 라인들(BL1 내지 BL3)이 제공된다.
각 필라(P)는 절연막(IL) 및 제3 방향을 따라 신장되는 선택 라인들(CSL, SSL)과 워드라인들(WL1 내지 WL8)과 함께 낸드 스트링(NS)을 형성한다. 낸드 스트링(NS)은 복수의 트랜지스터 구조들(TS)을 포함하고, 트랜지스터 구조들(TS) 각각은 전하 포획 플래시(Charge Trap Flash: CTF) 메모리 셀로 구성될 수 있다.
그런데, 메모리 블록(BLK1)의 전하 포획 플래시 메모리 셀은 프로그램된 후 시간에 경과함에 따라 전하 저장층에 저장된 전하가 빠져나올 수 있다. 또한, 전하 포획 플래시 메모리 셀은 프로그램 및 소거를 반복하는 회수가 증가하면 터널링 절연층이 열화되어 전하 로스(charge loss) 현상이 더 심해질 수 있다.
이러한 현상들에 영향을 받아서, 플래시 메모리(221~22n) 내 메모리 셀들에 저장된 데이터에 에러가 발생할 수 있고, 불량 메모리 셀들이 발생할 수 있다. 플래시 메모리(221~22n) 내 불량 메모리 셀들이 포함된 메모리 블락(BLK1~BLKn)이 억세스 또는 검색되면, 해당 데이터 저장 장치 (예, DRVi, 도 1)는 불량 데이터 저장 장치로 판단될 수 있다.
본 발명은 RAID 그룹(120, 도 1) 내 불량 데이터 저장 장치(DRVi)의 데이터 복원 방법을 통해 데이터 스토리지 시스템(100, 도 1)의 데이터 신뢰성을 보장하기 위하여 제공된다. 또한, 데이터 복원 동작시, 읽기 요청된 영역의 노멀 데이터와 함께 불량 주소 리스트를 호스트로 전송하도록 하여, 읽기 요청 횟수를 줄이고 빠른 데이터 복원이 가능하도록 할 수 있다.
도 6은 도 1의 데이터 스토리지 시스템에서 수행되는 데이터 복원 동작을 설명하는 도면이다.
도 1과 연계하여 도 6을 참조하면, 호스트(110)는 RAID 그룹(120)에 데이터를 저장 또는 검색하기 위하여, 데이터 저장 장치(121~12n-1)와 통신할 것이다. 통신 과정에서, RAID 그룹(120) 내 데이터 저장 장치들(121~12n-1) 중 어느 하나가 불량이거나 불량 징후들(signs)을 나타낼 수 있다. 예시적으로, 제i 데이터 저장 장치(12i)가 불량 데이터 저장 장치라고 가정한다.
호스트(110)는 RAID 그룹(120) 내 데이터 저장 장치(121~12n-1)와 연관된 불량을 검출할 수 있다(610). 호스트(110)는 데이터 저장 장치(121~12n-1)를 억세스하기 위하여, 논리 블락 어드레스(Logical Block Address: LBA, 이하 `LBA`라고 칭함)를 이용할 것이다. 데이터 저장 장치들(121~12n-1)은 LBA에 대응하는 물리 블락 주소(Physical Block Address: PBA, 이하 `PBA`)를 포함하는 맵핑 정보를 포함하고, LBA에 맵핑된 PBA의 데이터를 억세스할 것이다.
예시적으로, 호스트(110)로부터 LBA에 대응하여 억세스된 데이터 저장 장치(12i)에서, 맵핑된 PBA의 데이터가 불량일 수 있다. 이 경우, 호스트(110)는 불량 데이터 저장 장치(12i)가 불량임을 검출할 수 있다.
호스트(110)는 RAID 그룹(120)에 저장된 데이터를 보존하기 위하여, 불량 데이터 저장 장치(12i)로 복원 요청(Rebuild REQ)을 발행할 수 있다(620). 본 실시예에서 사용되는 복원 요청(Rebuild REQ)은 복원 커맨드, 복원 신호 등 다양한 형태로 제공될 수 있는 것으로, 이에 한정되는 것은 아니다. 또한 본 실시예에서 사용되는 `발행(issue)` 용어는 생성하여 제공한다는 의미로 이해될 수 있을 것이다.
불량 데이터 저장 장치(12i)는 호스트(110)로부터 복원 요청(Rebuild REQ)을 수신하고, 복원 요청(Rebuild REQ)에 응답하여 복원 모드로 진입할 수 있다(630). 불량 데이터 저장 장치(12i)는 호스트(110)의 데이터 복원 동작을 지원하는 소프트웨어(800, 도 2)를 실행시킬 수 있다. 소프트웨어(800)는 복원 요청에 따라 데이터 복원 동작을 지원할 것인지 여부를 결정하고, 호스트(110)의 읽기 요청에 따라 리드된 데이터에 불량 LBA 주소가 있는지 여부를 판단하고, 리드된 데이터를 불량이 없는 제1 영역과 불량이 있는 제2 영역으로 구분하고, 제1 영역 및 제2 영역의 데이터와 함께 제2 영역에 대한 불량 LBA 리스트 정보를 포함하는 읽기 요청된 데이터를 호스트(110)로 전송할 수 있도록 실행될 수 있다.
호스트(110)는 복원 요청(Rebuild REQ)과 연계된 읽기 요청(Read Request)을 불량 데이터 저장 장치(12i)로 발행할 수 있다(640). 본 실시예에서 사용되는 읽기 요청(Read REQ)은 읽기 커맨드, 읽기 신호 등 다양한 형태로 제공될 수 있다.
불량 데이터 저장 장치(12i)는, 불량 LBA 리스트 정보가 포함된 읽기 요청된 LBA 데이터(652)를 호스트(110)로 전송할 수 있다(650). 예를 들어, 불량 데이터 저장 장치(12i)는 읽기 요청된 LBA(LBA:N)에 응답하여 데이터를 리드(read)할 수 있다. 리드된 데이터(651)에는 불량이 없는 노멀 영역들(Normal Regions)과 불량이 있는 불량 영역들(Faulty Regions)을 포함할 수 있다. 읽기 요청된 LBA(LBA:N)에 따라 리드된 데이터(651)에서, 노멀 영역들에는 에러가 없는 데이터, 즉 양품 데이터(good data)를 포함하고, 불량 영역들에는 에러가 있는 데이터, 즉 불량 데이터(bad data)를 포함한다.
불량 데이터 저장 장치(12i)는, 읽기 요청된 LBA(LBA:N)에 따라 리드된 데이터(651)의 노멀 영역들의 양품 데이터와 함께 리드된 데이터(651)의 불량 영역들에 새로운 데이터를 실어서 호스트(110)로 전송할 수 있다. 불량 영역들의 새로운 데이터는 원래의 불량 데이터가 아닌, 리드된 데이터(651)의 불량 영역들을 나타내는 불량 LBA 리스트 정보일 수 있다. 불량 데이터 저장 장치(12i)는 도 7과 같이, 읽기 요청된 LBA에 따라 리드된 데이터(651)를 처리한 후, 읽기 요청된 LBA 데이터(652)로서 호스트(110)로 전송할 수 있다.
도 7을 참조하면, 불량 데이터 저장 장치(12i) 내에서 읽기 요청된 LBA에 따라 리드된 데이터(651)는, 양품 데이터를 포함하는 노멀 영역들과 불량 데이터를 포함하는 불량 영역들로 구분될 수 있다. 예시적으로, 리드된 데이터(651)에서, 불량 영역들의 주소들은 불량 LBA들(LBA:Nf1, LBA:Nf2, ? , LBA:Nfm)에 대응될 수 있다. 불량 데이터 저장 장치(12i)는 리드된 데이터(651)의 노멀 영역들의 양품 데이터는 그대로 복사되어 복사된 데이터가 전달되도록(handle) 할 수 있다. 불량 데이터 저장 장치(12i)는 리드된 데이터(651)의 불량 영역에는 불량 LBA들(LBA:Nf1, LBA:Nf2, ... , LBA:Nfm)에 대한 불량 LBA 리스트 정보로 대체시켜서 전달되도록 할 수 있다. 즉, 불량 데이터 저장 장치(12i)는 노멀 영역들의 복사된 데이터와 불량 영역들의 불량 LBA 리스트 정보를 포함하는 읽기 요청된 LBA 데이터(652)를 호스트(110)로 전달할 수 있다.
다시, 도 6으로 돌아가서, 호스트(110)는 불량 데이터 저장 장치(12i)로부터 불량 LBA 리스트 정보가 포함되어 있는 읽기 요청된 LBA 데이터(652)를 수신할 수 있다. 호스트(110)는 읽기 요청된 LBA 데이터(652)에 포함된 불량 LBA 리스트 정보에 기초하여 복원 동작을 시작할 수 있다(660).
호스트(110)는, 읽기 요청된 LBA 데이터(652)에 기초하여 불량 데이터 저장 장치(12i)에 저장된 데이터를 복원하여 스페어 데이터 저장 장치(12n+1)의 해당 읽기 요청된 LBA(LBA:N)에 저장할 수 있다(670). 호스트(110)는 읽기 요청된 LBA 데이터(652)에서 노멀 영역들의 복사된 데이터는 스페어 데이터 저장 장치(12n+1)의 해당 노멀 영역들에 저장되도록 할 수 있다. 호스트(110)는 불량 LBA 리스트 정보에 따라 읽기 요청된 LBA의 데이터(652)에서 불량 영역의 데이터를 복원할 수 있다.
예시적으로, 호스트(110)는 RAID 그룹(120) 내 제1 내지 제n 데이터 저장 장치들(121~12n, 도 1) 중 불량 데이터 저장 장치(12i) 외 나머지 데이터 저장 장치들에서 불량 LBA 리스트 정보에 대응하는 영역들의 데이터를 읽고 난 후, XOR 연산을 수행하여 복원된 데이터를 얻을 수 있다.
호스트(110)는 복원된 데이터를 버퍼 내의 데이터 이동 없이 읽기 요청된 LBA 데이터(652)의 불량 영역에 채워 넣을 수 있다. 호스트(110)는 읽기 요청된 LBA 데이터(652)의 불량 영역에 채워진 복원된 데이터를 스페어 데이터 저장 장치(12n+1)의 불량 LBA 리스트 정보에 대응하는 영역들에 저장되도록 할 수 있다. 이에 따라, 호스트(110)는 데이터 이동에 따른 부담(overhead)를 줄일 수 있으므로, 데이터 복원 시간을 단축시킬 수 있다.
RAID 그룹(120)에서, 스페어 데이터 저장 장치(12n+1)는 읽기 요청된 LBA데이터(652)의 노멀 영역들에 대응하는 영역들에 복사된 데이터를 저장하고, 읽기 요청된 LBA데이터(652)의 불량 영역들에 대응하는 영역에 복원된 데이터를 저장할 수 있다. 즉, 스페어 데이터 저장 장치(12n+1)는 읽기 요청된 LBA(LBA:N)에 복사된 데이터와 복원된 데이터를 포함하는 대체 데이터(Replacement Data, 671)를 저장할 수 있다.
상술한 데이터 복원 동작에서, 불량 데이터 저장 장치(12i)에서 제공되는 읽기 요청된 LBA 데이터(562)에 불량 LBA들(LBA:Nf1, LBA:Nf2, ... , LBA:Nfm)에 대한 불량 LBA 리스트 정보가 포함된다. 이에 따라, 호스트(110)는 불량 LBA들(LBA:Nf1, LBA:Nf2, ... , LBA:Nfm) 각각을 억세스하여 해당 불량 정보를 얻어야 하는 수고들(efforts)을 할 필요가 없다. 호스트(110)는 불량 LBA들(LBA:Nf1, LBA:Nf2, ... , LBA:Nfm) 각각을 억세스하기 위한 읽기 요청들을 매번 발행할 필요 없이, 불량 LBA 리스트 정보를 이용하여 해당 불량 LBA들(LBA:Nf1, LBA:Nf2, ... , LBA:Nfm)에 대한 데이터 복원 동작을 수행할 수 있다.
호스트(110)에 의한 데이터 복원 동작이 수행된 후, RAID 그룹(120)의 불량 데이터 저장 장치(12i)는 스페어 데이터 저장 장치(12n+1)로 교환될 것이다.
본 실시예에 따른 데이터 복원 방법은, 읽기 요청된 LBA 데이터(652)에 불량 LBA들(LBA:Nf1, LBA:Nf2, ... , LBA:Nfm)에 대한 불량 LBA 리스트 정보가 포함되기 때문에, 호스트의 데이터 복원 동작에 따른 읽기 요청 횟수를 줄일 수 있다. 결과적으로, 데이터 스토리지 시스템(100, 도 1)의 데이터 복원 시간을 줄일 수 있는 효과가 있다.
도 8은 도 6의 데이터 복원 동작을 지원하는 데이터 저장 장치(DRV)를 설명하는 도면이다. 데이터 저장 장치(DRV)는 도 1의 데이터 저장 장치들(121~12n+1) 중 어느 하나일 수 있다. 데이터 저장 장치(DRV)는 도 3의 블락 다이어그램과 같이 구성될 수 있다.
도 8을 참조하면, 데이터 저장 장치(DRV)는 버스(130)를 통하여 호스트(110, 도 6)와 링크될 수 있다. 데이터 저장 장치(DRV)는 데이터 복원 동작을 지원하는 소프트웨어(800)를 메모리 콘트롤러(210)에 포함할 수 있다. 소프트웨어(800)는 데이터 복원 동작을 지원하는 프로그램들(programs), 프로세스들(processes), 또는 콤포넌트들(components)을 포함할 수 있다. 소프트웨어(800)는 다른 동작들을 지원하는 프로그램 인스트럭션들(program instructions), 프로그램 모듈들(program modules), 데이터 구조들(data structures), 함수들(functions) 등을 포함할 수 있다. 또한, 소프트웨어(800)는 펌웨어(firmware) 또는 메모리 콘트롤러(210)에 의해 판독 가능한 프로세싱 인스트럭션들의 형태로 구성될 수 있다.
본 실시예에서는 소프트웨어(800)가 메모리 콘트롤러(210)에 포함되는 예에 대하여 설명하고 있지만, 이에 한정되는 것은 아니고, 데이터 저장 장치(DRV) 내부의 데이터 복원 동작을 지원하기에 동작적으로 적절한 구성 요소(operatively suitable component)에 포함될 수 있다.
소프트웨어(800)는, 호스트(110, 도 6)에서 발행된 복원 요청(Rebuild REQ, 620)에 응답하여 데이터 저장 장치(DRV)가 복원 모드(630, 도 6)에 진입하도록 하고, 복원 요청(Rebuild REQ)과 연계된 읽기 요청(Read Request)을 수신하여(640), 읽기 요청에 응답하여 리드된 데이터를 처리하여, 노멀 영역의 복사된 데이터와 불량 영역의 불량 LBA 리스트 정보가 포함된 읽기 요청된 LBA 데이터(652, 도 6 및 도 7)를 호스트(110)로 전송하도록 할 수 있다(650).
소프트웨어(800)는 다수개의 프로그램 모듈들을 포함할 수 있다. 프로그램 모듈들에는 액티베이터 모듈(810), 불량 LBA 수집 모듈(820), 읽기 모듈(830), 그리고 불량 LBA 리스트 전달 모듈(840)이 포함될 수 있다.
액티베이터 모듈(810)은, 호스트(110)의 복원 요청(Rebuild REQ)에 응답하여 데이터 저장 장치(DRV)가 복원 모드(630)에 진입하도록 할 수 있다. 액티베이터 모듈(810)은 복원 요청(Rebuild REQ)에 응답하여 도 6 및 도 7에서 설명된 읽기 요청 LBA 데이터(652)를 제공하는 데이터 복원 동작을 지원할 것인지 여부를 결정할 수 있다. 액티베이터 모듈(810)은 복원 요청(Rebuild REQ)에 응답하여 불량 LBA 수집 모듈(820)과 불량 LBA 리스트 전달 모듈(840)을 활성화시킬 수 있다.
실시예에 따라, 액티베이터 모듈(810)은, 이 후에 도 9 내지 도 11에서 설명될 읽기 요청된 LBA 데이터를 제공하는 데이터 복원 동작을 지원할 것인지 여부를 결정할 수 있다. 예시적으로, 읽기 요청된 LBA 데이터에는 노멀 영역의 복사된 데이터와 함께 불량 영역의 불량 LBA 리스트 정보가 포함되도록 설정될 수 있다. 불량 LBA 리스트 정보는 불량 영역의 불량 데이터를 대체하여 제공되거나, 센스 데이터로서 제공되거나, 읽기 요청된 LBA 데이터의 마지막 영역에 포함되어 제공되도록 설정될 수 있다.
불량 LBA 수집 모듈(820)은 호스트(110)의 읽기 요청 구간에 불량 LBA 주소가 있는지 여부를 판단할 수 있다. 불량 LBA 수집 모듈(820)은 읽기 모듈(830)과 연계되어, 데이터 저장 장치(DRV) 내 에러 또는 불량에 영향을 받은 불량 PBA들에 맵핑되는 불량 LBA들을 수집할 수 있다. 불량 LBA 수집 모듈(820)은 수집된 불량 LBA들 (예, LBA:Nf1, LBA:Nf2, ... , LBA:Nfm, 도 7)에 대한 불량 LBA 리스트 정보를 보관할 수 있다. 또는, 불량 LBA 수집 모듈(820)은 데이터 저장 장치(DRV)의 읽기 동작 중에 발생되는 불량 LBA들을 실시간으로(on-demand)으로 수집할 수 있다.
읽기 모듈(830)은 읽기 요청된 LBA 데이터(652, 도 6 및 도 7)를 호스트(110)로 전달할 수 있다. 읽기 모듈(830)은 불량 LBA 수집 모듈(820)에 수집된 불량 LBA 리스트 정보를 참고하여, 읽기 요청된 LBA데이터(652)의 노멀 영역들에 복사된 데이터를 싣고, 불량 영역들에 불량 LBA 리스트 정보를 실어서 전달할 수 있다.
실시예에 따라, 읽기 모듈(830)은 불량 LBA 수집 모듈(820)에 수집된 불량 LBA 리스트 정보를 참고하여, 읽기 요청된 LBA데이터(652)의 노멀 영역들에 복사된 데이터를 싣고, 불량 영역들에 특정 패턴의 데이터로 채워서 호스트(110)로 전달할 수 있다. 불량 영역들의 특정 패턴의 데이터는, 예를 들어, `0`으로 채워지거나(zeroed out), 또는 호스트(110)와 약속된 불량 패턴으로 마킹될 수 있다(marked with faulty pattern).
불량 LBA 리스트 전달 모듈(840)은, 읽기 요청(Read REQ)에 응답하여 데이터 저장 장치(DRV)의 불량 LBA 리스트 정보를 호스트(110)로 전달하는(handle) 방법을 제공한다. 불량 LBA 리스트 전달 모듈(840)은, 도 9 내지 도 11b에서 설명될 불량 LBA 리스트 정보 전달 방법을 이용할 수 있다.
도 8과 연계하여 도 9를 참조하면, 불량 LBA 리스트 전달 모듈(840)은 읽기 요청된 LBA(LBA:N)에 따라 리드된 데이터(651)에서 노멀 영역들에는 복사된 데이터가 실리고 불량 영역들에는 불량 LBA 리스트 정보가 실리는 읽기 요청 LBA 데이터(910)를 호스트(110)로 전달할 수 있다. 읽기 요청 LBA 데이터(910)는 도 7의 읽기 요청 LBA 데이터(652)를 좀 더 구체적으로 설명하는 것이다.
읽기 요청 LBA 데이터(910) 내 제1 불량 영역(911)에 실리는 불량 LBA 리스트 정보(920)는, 리드된 데이터(651)의 불량 LBA들 (LBA:Nf1, LBA:Nf2, ... , LBA:Nfm)의 총 개수(921), 제1 불량 LBA의 시작 어드레스(922), 제1 불량 LBA의 블락 카운트 수(923), 제m 불량 LBA의 시작 어드레스(924), 그리고 제m 불량 LBA의 블락 카운트 수(925)를 포함할 수 있다. 예시적으로, 제1 불량 LBA의 시작 어드레스(922)는 LBA:Nf1 일 것이고, 제m 불량 LBA의 시작 어드레스(924)는 LBA:Nfm 일 것이다.
한편, 리드된 데이터(651)에서 불량 영역들이 복수개 존재하는 경우, 불량 LBA 리스트 정보(920)가 1 불량 영역(911)에 다 포함될 수 없다. 이 경우, 불량 LBA 리스트 정보(920)는 다음 불량 LBA 리스트 정보가 실리는 제2 불량 영역(912)의 주소를 나타내는 다음 LBA 포인터(926)를 더 포함할 수 있다. 예시적으로, 다음 LBA 포인터(926)에는 제2 불량 영역(912)의 주소(LBA:Nf2)가 저장될 수 있다.
마찬가지로, 제2 불량 영역(912)에는 다음 불량 LBA의 시작 어드레스와 다음 불량 LBA의 블락 카운트 수가 포함되고, 선택적으로(optionally) 다음 LBA 포인터가 포함될 것이다
읽기 모듈(830)은 불량 LBA 리스트 정보(920)가 포함된 읽기 LBA 데이터(910)를 호스트(110)로 전달할 수 있다. 호스트(110)는 불량 LBA 리스트 정보(920)를 이용하여 해당 불량 LBA들(LBA:Nf1, LBA:Nf2, ... , LBA:Nfm)에 대한 데이터 복원 동작을 수행할 수 있을 것이다.
도 8과 연계하여 도 10를 참조하면, 불량 LBA 리스트 전달 모듈(840)은 읽기 요청된 LBA(LBA:N)에 따라 리드된 데이터(651)에서 노멀 영역들에는 복사된 데이터가 실리고 불량 영역들에는 특정 패턴의 데이터가 채워진, 읽기 요청 LBA 데이터(1010)를 호스트(110)로 전달할 수 있다.
예시적으로, 호스트(110)와 데이터 저장 장치(DRV) 사이의 버스(130)가 SCSI 인터페이스로 구현된다고 가정하자. SCSI 인터페이스는 디바이스 상호 간의 데이터 전송 및 백업/복구 시에, 데이터 전송 실패를 줄이기 위하여 불량 데이터 전송 시 센스 데이터와 함께 전송할 수 있다. 호스트(110)는 센스 데이터 사항들을 판독하여 불량 데이터를 복구할 수 있다. 데이터 저장 장치(DRV)는 리드된 데이터(651)에서 불량 영역들이 존재하기 때문에, 읽기 요청된 LBA 데이터(1010)와 함께 센스 데이터(1020)를 호스트(110)로 제공할 수 있다.
센스 데이터(1020)는 센스 키 필드(1021), 정보 필드(1022), 커맨드-특정 정보 필드(1023), 추가 센스 코드 필드(1024), 추가 센스 코드 구분자 필드(1024), 그리고 추가 센스 바이트들 필드(1026)로 구성될 수 있다.
센스 키 필드(1021)에는 마지막 커맨드에 따른 복구 작업이 성공적으로 완료되었음을 나타내는 복구된 에러(Recovered Error), 어드레싱된 논리 유닛(logical unit)이 억세스될 수 없음을 나타내는 낫 레디(Not Ready), 복구할 수 없는 에러 조건으로 커맨드가 종료되었음을 나타내는 미디움 에러(Medium Error), 디스크 드라이브가 복구할 수 없는 하드웨어 불량임을 나타내는 하드웨어 에러, 등을 포함할 수 있다.
예시적으로, 불량 LBA 리스트 전달 모듈(840)은 센스 키 필드(1021)에 본 실시예의 불량 LBA 리스트 정보 전달 방법을 알리는 키를 포함할 수 있다. 불량 LBA 리스트 전달 모듈(840)은 정보 필드(1022)에 불량 LBA 리스트 정보를 암시하는 힌트들을 포함할 수 있다. 예를 들어, 리드된 데이터(651)의 불량 LBA들 (LBA:Nf1, LBA:Nf2, ... , LBA:Nfm) 각각의 첫번째 주소 정보를 힌트들로 제공할 수 있다.
불량 LBA 리스트 전달 모듈(840)은, 도 9에서 설명된 불량 LBA 리스트 정보(920)를 센스 데이터(1020)의 추가 센스 바이트들 필드(1026)에 포함할 수 있다. 추가 센스 바이트들 필드(1026)의 크기는 리드된 데이터(651)의 불량 LBA들 (LBA:Nf1, LBA:Nf2, ... , LBA:Nfm)에 대한 정보를 모두 포함할 수 있을 정도로 클 것이다. 이에 따라, 추가 센스 바이트들 필드(1026)에 실리는 불량 LBA 리스트 정보(920)에는 다음 LBA 포인터(926)를 포함하지 않을 것이다.
읽기 모듈(830)은 읽기 LBA 데이터(910)와 센스 데이터(920)를 호스트(110)로 전달할 수 있다. 호스트(110)는 센스 데이터(920)를 이용하여 해당 불량 LBA들(LBA:Nf1, LBA:Nf2, ... , LBA:Nfm)에 대한 데이터 복원 동작을 수행할 수 있을 것이다.
도 8과 연계하여 도 11a를 참조하면, 불량 LBA 리스트 전달 모듈(840)은 읽기 요청된 LBA(LBA:N)에 따라 리드된 데이터(651)에서 노멀 영역들에는 복사된 데이터가 실리고 불량 영역들에는 특정 패턴의 데이터가 채워진, 읽기 요청된 LBA 데이터(1110)를 호스트(110)로 전달할 수 있다.
읽기 요청된 LBA 데이터(1110)에서, 마지막 논리 LBA(LBA:Nlast)에는 도 9에서 설명된 불량 LBA 리스트 정보를 포함할 수 있다. 여기에서, 마지막 논리 LBA(LBA:Nlast)는 호스트(110)와의 통신에서 데이터 저장 용도에 사용되지 않도록 설정될 수 있다. 예시적으로, 호스트(110)는 마지막 논리 LBA(LBA:Nlast)에는 데이터를 저장하거나 검색할 수 없도록 제어될 수 있다.
마지막 논리 LBA(LBA:Nlast)의 크기는 리드된 데이터(651)의 불량 LBA들 (LBA:Nf1, LBA:Nf2, ... , LBA:Nfm)에 대한 정보를 모두 포함할 수 있을 정도로 클 것이다. 이에 따라, 마지막 논리 LBA(LBA:Nlast)에 포함되는 불량 LBA 리스트 정보(1120)에는 불량 LBA들 (LBA:Nf1, LBA:Nf2, ... , LBA:Nfm)의 총 개수(1121), 제1 불량 LBA의 시작 어드레스(1122), 제1 불량 LBA의 블락 카운트 수(1123), 제m 불량 LBA의 시작 어드레스(1124), 그리고 제m 불량 LBA의 블락 카운트 수(1125)를 포함할 수 있다.
읽기 모듈(830)은 마지막 논리 LBA(LBA:Nlast)에 불량 LBA 리스트 정보(1120)가 포함된 읽기 요청된LBA 데이터(1110)를 호스트(110)로 전달할 수 있다. 호스트(110)는 마지막 논리 LBA(LBA:Nlast)에 불량 LBA 리스트 정보(1120)를 이용하여 해당 불량 LBA들(LBA:Nf1, LBA:Nf2, ... , LBA:Nfm)에 대한 데이터 복원 동작을 수행할 수 있을 것이다.
도 8과 연계하여 도 11b를 참조하면, 불량 LBA 리스트 전달 모듈(840)은 도 11a와 비교하여, 읽기 요청된 LBA 데이터(1110)의 첫번째 논리 LBA(LBA:Nfirst)에 불량 LBA 리스트 정보를 포함할 수 있다. 이에 따라, 첫번째 논리 LBA(LBA:Nfirst)는 호스트(110)와의 통신에서 데이터 저장 용도에 사용되지 않도록 설정될 수 있다. 예시적으로, 호스트(110)는 첫번째 논리 LBA(LBA:Nfirst)에는 데이터를 저장하거나 검색할 수 없도록 제어될 수 있다.
첫번째 논리 LBA(LBA:Nfirst)에 포함되는 불량 LBA 리스트 정보(1120)에는 불량 LBA들 (LBA:Nf1, LBA:Nf2, ... , LBA:Nfm)의 총 개수(1121), 제1 불량 LBA의 시작 어드레스(1122), 제1 불량 LBA의 블락 카운트 수(1123), 제m 불량 LBA의 시작 어드레스(1124), 그리고 제m 불량 LBA의 블락 카운트 수(1125)를 포함할 수 있다.
읽기 모듈(830)은 첫번째 논리 LBA(LBA:Nfirst)에 불량 LBA 리스트 정보(1120)가 포함된 읽기 요청된 LBA 데이터(1110)를 호스트(110)로 전달할 수 있다. 호스트(110)는 첫번째 논리 LBA(LBA:Nfirst)에 불량 LBA 리스트 정보(1120)를 이용하여 해당 불량 LBA들(LBA:Nf1, LBA:Nf2, ... , LBA:Nfm)에 대한 데이터 복원 동작을 수행할 수 있을 것이다.
도 12는 본 발명의 개념적 실시예에 따라 데이터 스토리지 시스템에서 수행되는 데이터 복원 동작을 설명하는 도면이다.
도 12를 참조하면, 호스트(110)는 RAID 그룹(120)에 데이터를 저장 또는 검색하기 위하여, 데이터 저장 장치(121~12n-1)와 통신할 것이다. 통신 과정에서, RAID 그룹(120)의 데이터 저장 장치들(121~12n-1) 중 어느 하나가 불량이거나 불량 징후들(signs)을 나타낼 수 있다. 예시적으로, 제i 데이터 저장 장치(12i)가 불량 데이터 저장 장치라고 가정하자.
호스트(110)는 불량 데이터 저장 장치(12i)와 연관된 불량을 검출할 수 있다(1210). 호스트(110)는 불량 데이터 저장 장치(12i)로 불량 LBA 리스트를 요청할 수 있다(1211). 불량 데이터 저장 장치(12i)는 요청된 불량 LBA 리스트를 호스트(110)로 전송할 수 있다(1212). 호스트(110)는 전송되는 불량 LBA 리스트를 수집할 수 있다(1213).
호스트(110)는 불량 데이터 저장 장치(12i)의 데이터를 보존하기 위하여, 불량 데이터 저장 장치(12i)로 복원 요청(Rebuild REQ)을 발행할 수 있다(1220). 불량 데이터 저장 장치(12i)는 수신된 복원 요청(Rebuild REQ)에 응답하여 복원 모드로 진입하고(1230), 호스트(110)의 데이터 복원 동작을 지원하는 소프트웨어(800, 도 2)를 실행시킬 수 있다.
호스트(110)는 불량 데이터 저장 장치(12i)로 읽기 요청(Read Request)을 발행할 수 있다(1240). 이 때, 호스트(110)는 불량 LBA 리스트를 전송하지 않도록 하는 읽기 요청(Read Request)을 불량 데이터 저장 장치(12i)로 발행할 수 있다.
불량 데이터 저장 장치(12i)는, 불량 LBA 리스트를 전송하지 않도록 하는 읽기 요청(Read Request)에 응답하여, 리드된 데이터(1251)를 호스트(110)로 전송할 수 있다. 이 때, 불량 데이터 저장 장치(12i)는 불량 LBA 리스트를 전송하지 않는다. 불량 데이터 저장 장치(12i)는, 노멀 영역들의 양품 데이터와 함께, 리드된 데이터(1251)의 불량 영역들에 특정 데이터를 실어서 호스트(110)로 전송할 수 있다. 불량 영역들에는 원래의 불량 데이터가 아닌, 특정 패턴의 데이터, 예컨대, `0`으로 채워지거나, 또는 호스트(110)와 약속된 불량 패턴 마킹으로 채워질 수 있다.
호스트(110)는 불량 데이터 저장 장치(12i)로부터 불량 영역들에 특정 데이터가 채워진 읽기 요청된 LBA 데이터(1252)를 수신할 수 있다(1250). 호스트(110)는 읽기 요청된 LBA 데이터(1252)에 포함된 불량 LBA 리스트 정보에 기초하여 복원 동작을 시작할 수 있다(1260).
호스트(110)는, 읽기 요청된 LBA 데이터(1252)에 기초하여 불량 데이터 저장 장치(12i)에 저장된 데이터를 복원하고, 복원된 데이터를 스페어 데이터 저장 장치(12n+1)의 해당 읽기 요청된 LBA(LBA:N)에 저장할 수 있다(1270). 호스트(110)는 읽기 요청된 LBA 데이터(1252)에서 노멀 영역들의 복사된 데이터는 스페어 데이터 저장 장치(12n+1)의 해당 노멀 영역들에 저장되도록 하고, 복원된 데이터는 스페어 데이터 저장 장치(12n+1)의 해당 불량 영역들에 저장되도록 할 수 있다.
스페어 데이터 저장 장치(12n+1)는 불량 데이터 저장 장치(12i)의 노멀 영역들에 대응하는 영역들에 복사된 데이터를 저장하고, 불량 데이터 저장 장치(12i)의 불량 영역들에 대응하는 영역들에 복원된 데이터를 저장할 수 있다. 스페어 데이터 저장 장치(12n+1)는 해당 LBA(LBA:N)에 복사된 데이터와 복원된 데이터가 결합된 데이터(1271)를 저장할 수 있다.
본 실시예에서, 호스트(110)는 불량 LBA 리스트 정보를 미리 수집하여 데이터 복원 동작을 수행하였으므로, 앞서 도 9 내지 도 11B에서 설명된 읽기 요청된 LBA 데이터의 전송에 불량 LBA들 (LBA:Nf1, LBA:Nf2, ... , LBA:Nfm)에 대한 정보가 함께 포함되지 않아도 될 것이다.
도 13 및 도 14는 본 발명의 실시예들에 따라 데이터 스토리지 시스템에서 수행되는 데이터 복원 동작을 설명하는 도면들이다. 도 13은 도 6의 데이터 복원 동작에서 불량 LBA 리스트 정보에 기초한 복원 동작을 설명하고, 도 14는 도 12의 데이터 복원 동작에서 불량 LBA 리스트 정보에 기초한 복원 동작을 설명한다.
도 6과 연계하여 도 13을 참조하면, 호스트(110)는 RAID 그룹(120) 내 불량 데이터 저장 장치(12i)가 불량임을 검출하고(610), 불량 데이터 저장 장치(12i)로 복원 요청(Rebuild REQ)을 발행할 수 있다(620). 불량 데이터 저장 장치(12i)는 호스트(110)로부터 복원 요청(Rebuild REQ)을 수신하고, 복원 요청(Rebuild REQ)에 응답하여 복원 모드로 진입할 수 있다(630).
호스트(110)는 복원 요청(Rebuild REQ)과 연계된 읽기 요청(Read Request)을 불량 데이터 저장 장치(12i)로 발행하고(640), 불량 데이터 저장 장치(12i)는 불량 LBA 리스트 정보가 포함된 읽기 요청된 LBA 데이터(652)를 호스트(110)로 전송할 수 있다(650). 호스트(110)는 읽기 요청된 LBA 데이터(652)에 포함된 불량 LBA 리스트 정보에 기초하여 복원 동작을 시작할 수 있다(660). 이 때, 호스트(110)는 읽기 요청된 LBA 데이터(652)에서 노멀 영역들의 데이터를 복사하여, 복사된 데이터를 제1 버퍼(예, 1510, 도 15)에 저장할 수 있다.
호스트(110)는 데이터 저장 장치들(121~12n) 중 불량 데이터 저장 장치(12i) 이외의 나머지 데이터 저장 장치들, 즉 노멀 데이터 저장 장치들로 불량 LBA 리스트 정보와 함께 읽기 요청(Read Request)을 발행할 수 있다(1340).
노멀 데이터 저장 장치들(121~12n, 12i 제외)은, 읽기 요청된 LBA에 따라 리드된 데이터(1351)에서 불량 LBA 리스트 정보에 대응하는 영역들의 데이터를 읽기 요청된 LBA 데이터(1352)로서 호스트(110)로 전송할 수 있다(1350). 읽기 요청된 LBA 데이터(1352)에서 불량 LBA 리스트 정보에 대응하는 영역들 이외에는 리드된 데이터(1351)가 실리지 않는다(No Data).
호스트(110)는 노멀 데이터 저장 장치들(121~12n, 12i 제외)로부터 전송된 읽기 요청된 LBA 데이터들(1352)에서 불량 LBA 리스트 정보에 대응하는 영역들의 데이터에 대하여 XOR 연산과 같은 패리티 연산을 수행할 수 있다. 호스트(110)는 패리티 연산 결과, 복원된 데이터를 얻을 수 있다.
호스트(110)는 불량 데이터 저장 장치(12i)의 읽기 요청된 LBA 데이터(652)로부터 얻은 복사된 데이터와 노멀 데이터 저장 장치들(121~12n, 12i 제외)의 읽기 요청된 LBA 데이터들(1252)로부터 얻은 복원된 데이터를 결합할 수 있다. 호스트(110)는 복사된 데이터와 복원된 데이터가 결합된 데이터(1371)를 스페어 데이터 저장 장치(12n+1)로 전송할 수 있다(1370).
스페어 데이터 저장 장치(12n+1)는 결합된 데이터(1371)를 수신하고, 해당 LBA (LBA:N) 내 불량 데이터 저장 장치(12i)의 노멀 영역들에 대응하는 영역들에는 복사된 데이터를 저장하고, 불량 데이터 저장 장치(12i)의 불량 영역들에 대응하는 영역들에는 복원된 데이터를 저장할 수 있다.
도 12와 연계하여 도 14를 참조하면, 호스트(110)는 RAID 그룹(120) 내 불량 데이터 저장 장치(12i)가 불량임을 검출하고(1210), 불량 데이터 저장 장치(12i)로 불량 LBA 리스트를 요청하고(1211), 불량 데이터 저장 장치(12i)로부터 불량 LBA 리스트를 수신하고(1212), 불량 LBA 리스트를 수집할 수 있다(1213). 호스트(110)는 불량 데이터 저장 장치(12i)로 복원 요청(Rebuild REQ)을 발행할 수 있다(1220). 불량 데이터 저장 장치(12i)는 호스트(110)로부터 복원 요청(Rebuild REQ)을 수신하고, 복원 요청(Rebuild REQ)에 응답하여 복원 모드로 진입할 수 있다(1230).
호스트(110)는 불량 LBA 리스트를 전송하지 않도록 하는 읽기 요청(Read Request)을 불량 데이터 저장 장치(12i)로 발행하고(1240), 불량 데이터 저장 장치(12i)는 리드된 데이터(1251)의 노멀 영역들의 양품 데이터와 함께 리드된 데이터(1251)의 불량 영역들에 예컨대, `0` 또는 불량 패턴 마킹과 같은 특정 데이터를 실어서 호스트(110)로 전송할 수 있다.
호스트(110)는 불량 데이터 저장 장치(12i)로부터 불량 영역들에 특정 데이터가 채워진 읽기 요청된 LBA 데이터(1252)를 수신할 수 있다(1250). 호스트(110)는 수집된 불량 LBA 리스트 정보에 기초하여 복원 동작을 시작할 수 있다(1260). 이 때, 호스트(110)는 불량 데이터 저장 장치(12i)의 읽기 요청된 LBA 데이터(1252)에서 노멀 영역들의 데이터를 복사하여, 복사된 데이터를 저장할 수 있다.
호스트(110)는 데이터 저장 장치들(121~12n) 중 불량 데이터 저장 장치(12i) 이외의 나머지 데이터 저장 장치들, 즉 노멀 데이터 저장 장치들로 불량 LBA 리스트 정보와 함께 읽기 요청(Read Request)을 발행할 수 있다(1440).
노멀 데이터 저장 장치들(121~12n, 12i 제외)은, 읽기 요청된 LBA에 따라 리드된 데이터(1451)에서 불량 LBA 리스트 정보에 대응하는 영역들의 데이터를 읽기 요청된 LBA 데이터(1452)로서 호스트(110)로 전송할 수 있다(1450). 읽기 요청된 LBA 데이터(1452)에서 불량 LBA 리스트 정보에 대응하는 영역들 이외에는 리드된 데이터가 실리지 않는다(No Data).
호스트(110)는 노멀 데이터 저장 장치들(121~12n, 12i 제외)로부터 전송된 읽기 요청된 LBA 데이터들(1452)에서 불량 LBA 리스트 정보에 대응하는 영역들의 데이터를 XOR 연산과 같은 패리티 연산을 수행하고, 패리티 연산 결과로 복원된 데이터를 얻을 수 있다.
호스트(110)는 불량 데이터 저장 장치(12i)의 읽기 요청된 LBA 데이터(1252)로부터 얻은 복사된 데이터와 노멀 데이터 저장 장치들(121~12n, 12i 제외)의 읽기 요청된 LBA 데이터들(1452)로부터 얻은 복원된 데이터를 결합할 수 있다. 호스트(110)는 복사된 데이터와 복원된 데이터가 결합된 데이터(1471)를 스페어 데이터 저장 장치(12n+1)로 전송할 수 있다(1470).
스페어 데이터 저장 장치(12n+1)는 결합된 데이터(1471)를 수신하고, 해당 LBA (LBA:N) 내 불량 데이터 저장 장치(12i)의 노멀 영역들에 대응하는 영역들에는 복사된 데이터를 저장하고 불량 데이터 저장 장치(12i)의 불량 영역들에 대응하는 영역들에는 복원된 데이터를 저장할 수 있다.
도 15 내지 도 17은 본 발명의 실시예들에 따른 데이터 복원 동작을 수행하는 방법을 설명하는 도면들이다.
도 13과 연계하여 도 15를 참조하면, 호스트(110)는 불량 데이터 저장 장치(12i)로부터 불량 LBA 리스트 정보가 포함되어 있는 읽기 요청된 LBA 데이터(652)를 수신할 수 있다. 호스트(110)는 읽기 요청된 LBA 데이터(652)에서 노멀 영역들의 데이터를 복사하여, 복사된 데이터를 제1 버퍼(1510)의 해당 노멀 영역들에 저장할 수 있다.
호스트(110)는 노멀 데이터 저장 장치들(121~12n, 12i 제외)로부터 읽기 요청된 LBA에 따라 리드된 데이터(1351)에서 불량 LBA 리스트 정보에 대응하는 영역들의 데이터를 읽기 요청된 LBA 데이터들(1352)로 수신할 수 있다. 호스트(110)는 읽기 요청된 LBA 데이터들(1352)에서 불량 LBA 리스트 정보에 대응하는 영역들의 데이터에 대하여 XOR 연산을 수행할 수 있다. 호스트(110)는 XOR 연산을 수행하여 얻어지는 복원된 데이터를 제2 버퍼(1520a)의 해당 불량 LBA 리스트 정보에 대응하는 영역에 저장할 수 있다.
호스트(110)는 노멀 영역들에 복사된 데이터를 저장하고 있는 제1 버퍼(1510)와 불량 LBA 리스트 정보에 대응하는 영역들에 복원된 데이터(1521)를 저장하고 있는 제2 버퍼(1520)를 결합할 수 있다. 이에 따라, 제1 버퍼(1510)에는 노멀 영역들의 복사된 데이터와 불량 LBA 리스트 정보에 대응하는 영역들의 복원된 데이터(1521)가 결합되어, 결합된 데이터(1371)가 저장될 수 있다.
호스트(110)는 복사된 데이터와 복원된 데이터가 결합된 데이터(1371)를 스페어 데이터 저장 장치(12n+1)로 전송할 수 있다(1370).
스페어 데이터 저장 장치(12n+1)는 결합된 데이터(1371)를 수신하고, 해당 LBA (LBA:N) 내 불량 데이터 저장 장치(12i)의 노멀 영역들에 대응하는 영역들에는 복사된 데이터를 저장하고, 불량 데이터 저장 장치(12i)의 불량 영역들에 대응하는 영역들에는 복원된 데이터를 저장할 수 있다.
도 16을 참조하면, 호스트(110)는 도 15와 비교하여, 제2 버퍼(1520)를 포함하지 않고, 그 대신에 패리티 연산 엑설레이터(1620)를 포함할 수 있다. 패리티 연산 엑설레이터(1620)는 노멀 데이터 저장 장치들(121~12n, 12i 제외)로부터 읽기 요청된 LBA에 따라 리드된 데이터(1351)에서 불량 LBA 리스트 정보에 대응하는 영역들의 데이터에 대하여 XOR 연산을 수행하고, XOR 연산 결과 얻어지는 복원된 데이터를 제1 버퍼(1610)에 저장되도록 할 수 있다.
예시적으로, 패리티 연산 엑설레이터(1620)는 소프트웨어 모듈, 하드웨어 모듈, 특수 목적 하드웨어 (예를 들면, 특수 용도의 하드웨어, ASIC(Application Specific Integrated Circuit), DSP(Digital Signal Processor) 등), 내장된 콘트롤러, 배선에 의한 회로 등으로 구현될 수 있다.
호스트(110)는 노멀 영역들에 복사된 데이터를 저장하고 있는 제1 버퍼(1610)에다가 패리티 연산 엑설레이터(1620)에서 복원된 데이터를 제1 버퍼(1610)에 결합할 수 있다. 이에 따라, 제1 버퍼(1610)에는 노멀 영역들의 복사된 데이터와 불량 LBA 리스트 정보에 대응하는 영역들의 복원된 데이터가 결합된 데이터(1371)를 스페어 데이터 저장 장치(12n+1)로 전송할 수 있다(1370). 스페어 데이터 저장 장치(12n+1)는 해당 LBA (LBA:N) 내 불량 데이터 저장 장치(12i)의 노멀 영역들에 대응하는 영역들에는 복사된 데이터를 저장하고, 불량 데이터 저장 장치(12i)의 불량 영역들에 대응하는 영역들에는 복원된 데이터를 저장할 수 있다.
본 실시에에서는 패리티 연산 엑설레이터(1620)를 이용하여, 노멀 데이터 저장 장치들(121~12n, 12i 제외)에서 제공되는 불량 LBA 리스트 정보에 대응하는 영역들의 데이터를 패리티 연산하여 제1 버퍼(1610)에 결합시킬 수 있다. 이에 따라, 노멀 데이터 저장 장치들(121~12n, 12i 제외)에서 제공되는 불량 LBA 리스트 정보에 대응하는 영역들의 데이터를 위한 별도의 메모리를 할당할 필요가 없다.
도 17을 참조하면, 호스트(110)는 불량 데이터 저장 장치(12i)로부터 불량 LBA 리스트 정보가 포함되어 있는 읽기 요청된 LBA 데이터(652a)를 수신할 수 있다(650). 호스트(110)는 읽기 요청된 LBA 데이터(652a)에 포함된 불량 LBA 영역들이 상대적으로 많다고 판단할 수 있다.
호스트(110)는 노멀 데이터 저장 장치들(121~12n, 12i 제외)로 읽기 요청된 LBA (LBA:N)의 리드 데이터 전체를 요청할 수 있다. 이는 노멀 데이터 저장 장치들(121~12n, 12i 제외)로부터 불량 LBA 영역들에 대한 데이터를 복구하는 동작 보다는, 노멀 데이터 저장 장치들(121~12n, 12i 제외) 전체로부터 불량 데이터 저장 장치(12i)의 데이터를 복구하는 것이 더욱 효과적일 수 있다.
호스트(110)는 노멀 데이터 저장 장치들(121~12n, 12i 제외)로부터 읽기 요청된 LBA에 따라 리드된 데이터(1351)를 수신할 수 있다. 호스트(110)는 리드된 데이터(1351)에 대하여 XOR 연산을 수행하도록 패리티 연산 엑설레이터(1620)를 구동할 수 있다.
패리티 연산 엑설레이터(1620)는 읽기 요청된 LBA에 따라 리드된 데이터(1351)에 대하여 XOR 연산을 수행하고, XOR 연산 결과 얻어지는 복원된 데이터(1771)를 제1 버퍼(1610)에 저장되도록 할 수 있다.
호스트(110)는 패리티 연산 엑설레이터(1620)에서 복원된 데이터(1771)를 스페어 데이터 저장 장치(12n+1)로 전송할 수 있다(1770). 스페어 데이터 저장 장치(12n+1)는 복원된 데이터(1771)를 수신하고, 해당 LBA(LBA:N)에 복원된 데이터(1771)를 저장할 수 있다.
상술한 바와 같이, 본 발명의 실시예들에 따른 불량 LBA 리스트 정보 전달 방법을 데이터 복원 동작에 채용함에 따라, 호스트(110)로 제공되는 읽기 요청된 LBA 데이터에 불량 LBA 리스트 정보가 포함되기 때문에, 호스트(110)는 데이터 복원 동작에 따른 읽기 요청 횟수를 줄일 수 있고 데이터 복원 시간을 단축시킬 수 있다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.

Claims (10)

  1. 복수의 데이터 저장 장치들을 포함하는 RAID 장치의 데이터 복원 방법에 있어서.
    호스트에서, 상기 복수의 데이터 저장 장치들 중 불량 데이터 저장 장치로 복원 요청을 보내는 단계;
    상기 호스트에서, 상기 복원 요청에 따라 상기 불량 데이터 저장 장치의 읽기 요청된 영역 내 불량이 없는 제1 영역과 불량이 있는 제2 영역의 데이터, 그리고 상기 제2 영역에 대한 정보를 수신하는 단계;
    상기 호스트에서, 상기 제2 영역에 대한 정보에 기초하여 상기 불량 데이터 저장 장치의 불량 어드레스 리스트를 수집하는 단계; 및
    상기 호스트에서, 상기 불량 어드레스 리스트에 기초하여 상기 제2 영역의 데이터를 복원하는 단계를 포함하는 데이터 복원 방법.
  2. 제1항에 있어서, 상기 제2 영역에 대한 정보를 수신하는 단계는,
    상기 제2 영역에 대한 정보를 상기 읽기 요청된 영역의 상기 제2 영역의 상기 데이터로서 수신하는 것을 특징으로 하는 데이터 복원 방법.
  3. 제1항에 있어서, 상기 제2 영역에 대한 정보를 수신하는 단계는,
    상기 제2 영역에 대한 정보를 상기 제1 영역의 데이터 및 상기 제2 영역의 데이터와 함께 제공되는 센스 데이터로서 수신하는 것을 특징으로 하는 데이터 복원 방법.
  4. 제1항에 있어서, 상기 제2 영역에 대한 정보를 수신하는 단계는,
    상기 읽기 요청된 영역의 첫 부분 또는 마지막 부분에 포함되어 있는 상기 제2 영역에 대한 정보를 수신하는 것을 특징으로 하는 데이터 복원 방법.
  5. 제1항에 있어서,
    상기 읽기 요청된 영역의 상기 제2 영역의 상기 데이터는 소정의 데이터 패턴으로 제공되는 것을 특징으로 하는 데이터 복원 방법.
  6. 제1항에 있어서,
    상기 불량 LBA 리스트 정보는, 상기 읽기 요청된 영역의 불량 LBA들의 총 개수와 상기 불량 LBA들 각각의 시작 어드레스 및 블락 카운트 수를 포함하는 것을 특징으로 하는 데이터 복원 방법.
  7. 제1항에 있어서, 상기 데이터 복원 방법은,
    상기 호스트에서, 상기 불량 데이터 저장 장치로부터 상기 불량 어드레스 리스트를 수집하는 단계를 더 포함하고,
    상기 복원 요청을 보낼 때, 상기 제2 영역에 대한 정보를 전송하지 않도록 하는 읽기 요청을 보내는 것을 특징으로 하는 데이터 복원 방법.
  8. 제1항에 있어서, 상기 불량 어드레스 리스트에 기초하여 상기 제2 영역의 데이터를 복원하는 단계는,
    상기 호스트에서, 상기 불량 데이터 저장 장치의 상기 제1 영역의 데이터를 복사하고, 복사된 데이터를 저장하는 단계;
    상기 호스트에서, 상기 복수의 데이터 저장 장치들 중 상기 불량 데이터 저장 장치 이외의 나머지 데이터 저장 장치들로 상기 불량 데이터 장치의 상기 제2 영역에 상응하는 영역의 데이터를 수신하고 패리티 연산하여 복원된 데이터를 생성하는 단계; 및
    상기 호스트에서, 상기 복사된 데이터와 상기 복원된 데이터를 결합하여 결합된 데이터를 스페어 데이터 저장 장치로 기입하는 단계를 더 포함하고,
    상기 복원된 데이터를 생성하는 단계는, 상기 복수의 데이터 저장 장치들 중 상기 불량 데이터 저장 장치 이외의 나머지 데이터 저장 장치들에서, 상기 불량 데이터 장치의 상기 제1 영역에 상응하는 영역에 데이터를 싣지 않는 것을 특징으로 하는 데이터 복원 방법
  9. 제1항에 있어서, 상기 데이터 복원 방법은
    상기 호스트에서, 상기 제2 영역에 대한 상기 불량 어드레스 리스트를 분석하는 단계;
    분석 결과, 상기 불량 어드레스 리스트의 불량 패턴이 상기 불량 어드레스 리스트에 기초하여 상기 불량 데이터 저장 장치의 데이터를 복원하는 것보다 상기 복수의 데이터 저장 장치들 중 상기 불량 데이터 저장 장치 이외의 나머지 데이터 저장 장치들을 이용하여 상기 불량 데이터 저장 장치의 데이터를 복원하는 것이 낫다고 판단되는 경우, 상기 나머지 데이터 저장 장치들을 이용하여 패리티 연산을 수행하는 단계; 및
    상기 패리티 연산의 결과로, 상기 불량 데이터 저장 장치의 데이터를 복원하는 단계를 더 포함하는 것을 특징으로 하는 데이터 복원 방법.
  10. 데이터 저장 장치를 복수개 포함하는 RAID 장치에 있어서,
    상기 데이터 저장 장치는
    데이터를 저장하고 검색하는 메모리들; 및
    상기 메모리들의 데이터를 관리하고, 외부의 읽기 요청에 응답하여 상기 메모리들에 저장된 데이터를 읽어들여 상기 외부로 전송하는 메모리 콘트롤러를 포함하고,
    상기 메모리 콘트롤러는 상기 외부로부터 복원 요청과 연계된 상기 읽기 요청된 데이터에서 불량이 없는 제1 영역과 불량이 있는 제2 영역의 데이터를 전송할 때, 상기 제2 영역에 대한 불량 어드레스 리스트 정보를 함께 전송하는 것을 특징으로 하는 RAID 장치.
KR1020160139080A 2016-10-25 2016-10-25 읽기 요청 횟수를 줄이는 데이터 복원 동작을 수행하는 데이터 스토리지 시스템 KR20180045220A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160139080A KR20180045220A (ko) 2016-10-25 2016-10-25 읽기 요청 횟수를 줄이는 데이터 복원 동작을 수행하는 데이터 스토리지 시스템
US15/624,745 US10409683B2 (en) 2016-10-25 2017-06-16 Data storage system configured to perform data rebuild operation via reduced read requests

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160139080A KR20180045220A (ko) 2016-10-25 2016-10-25 읽기 요청 횟수를 줄이는 데이터 복원 동작을 수행하는 데이터 스토리지 시스템

Publications (1)

Publication Number Publication Date
KR20180045220A true KR20180045220A (ko) 2018-05-04

Family

ID=61969616

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160139080A KR20180045220A (ko) 2016-10-25 2016-10-25 읽기 요청 횟수를 줄이는 데이터 복원 동작을 수행하는 데이터 스토리지 시스템

Country Status (2)

Country Link
US (1) US10409683B2 (ko)
KR (1) KR20180045220A (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10761929B2 (en) * 2017-05-25 2020-09-01 Western Digital Technologies, Inc. Data storage drive rebuild with parity generation offload using peer-to-peer data transfers
US11803446B2 (en) 2020-07-13 2023-10-31 Samsung Electronics Co., Ltd. Fault resilient storage device
US20210349780A1 (en) * 2020-05-11 2021-11-11 Samsung Electronics Co., Ltd. Systems, methods, and devices for data recovery with spare storage device and fault resilient storage device
CN115206406A (zh) * 2021-04-12 2022-10-18 伊姆西Ip控股有限责任公司 管理独立磁盘冗余阵列的方法和装置
CN113360429A (zh) * 2021-06-21 2021-09-07 群联电子股份有限公司 数据重建方法、存储器存储装置及存储器控制电路单元
KR20230030795A (ko) * 2021-08-26 2023-03-07 삼성전자주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 장치
TWI802279B (zh) * 2022-02-18 2023-05-11 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法
TWI805231B (zh) 2022-02-18 2023-06-11 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004062376A (ja) 2002-07-26 2004-02-26 Nec Corp Raidディスクリードエラー処理方式、方法及びプログラム
JP4817783B2 (ja) 2005-09-30 2011-11-16 富士通株式会社 Raidシステム及びそのリビルド/コピーバック処理方法
WO2008070191A2 (en) * 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for a reconfigurable baseboard management controller
JP4499776B2 (ja) * 2007-10-31 2010-07-07 富士通株式会社 ストレージ制御装置、方法、及びプログラム
JP2010027140A (ja) 2008-07-18 2010-02-04 Yec:Kk ハードディスクドライブ装置の読取装置及びハードディスクドライブ装置の読取装置を備えたコピー装置。
JP5721344B2 (ja) 2010-05-07 2015-05-20 キヤノン株式会社 システム、システムの制御方法、及び、プログラム
JP5768587B2 (ja) 2011-08-17 2015-08-26 富士通株式会社 ストレージシステム、ストレージ制御装置およびストレージ制御方法
JP5807458B2 (ja) 2011-08-31 2015-11-10 富士通株式会社 ストレージシステム、ストレージ制御装置およびストレージ制御方法
US8812901B2 (en) 2011-09-23 2014-08-19 Lsi Corporation Methods and apparatus for marking writes on a write-protected failed device to avoid reading stale data in a RAID storage system
US9842024B1 (en) * 2013-03-15 2017-12-12 Bitmicro Networks, Inc. Flash electronic disk with RAID controller
US9323630B2 (en) 2013-09-16 2016-04-26 HGST Netherlands B.V. Enhanced data recovery from data storage devices
KR102177421B1 (ko) 2014-10-15 2020-11-11 삼성전자주식회사 데이터 저장 시스템, 데이터 저장 장치 및 raid 컨트롤러

Also Published As

Publication number Publication date
US10409683B2 (en) 2019-09-10
US20180113761A1 (en) 2018-04-26

Similar Documents

Publication Publication Date Title
CN105739915B (zh) 存储系统中执行的条带重建方法和存储系统
KR20180045220A (ko) 읽기 요청 횟수를 줄이는 데이터 복원 동작을 수행하는 데이터 스토리지 시스템
CN107391027B (zh) 廉价磁盘冗余阵列存储设备及其管理方法
JP6916659B2 (ja) ストレージ装置、ストレージ装置の動作方法、及びストレージ装置とホスト装置とを含むコンピューティング装置の動作方法
US10496312B2 (en) Method of operating a storage device to compress or decompress data and a data storage system including the storage device
KR101459861B1 (ko) 스트라이프 기반 메모리 작동
CN104064217B (zh) 非易失性半导体存储器的检查方法及存储检查程序的记录介质
KR102549605B1 (ko) Raid 스토리지 장치의 리커버리 방법
US20160196216A1 (en) Mapping table managing method and associated storage system
US20160179422A1 (en) Method of performing garbage collection and raid storage system adopting the same
KR101925383B1 (ko) 불휘발성 메모리 장치 및 그것의 데이터 관리 방법
US10740244B2 (en) Memory system including a redirector for replacing a fail memory die with a spare memory die
US11386005B2 (en) Memory system, memory controller, and method of operating memory system for caching journal information for zone in the journal cache
KR102287760B1 (ko) 메모리 시스템 및 상기 메모리 시스템의 동작 방법
KR20130078973A (ko) 메모리 장치의 불량 저장 영역 관리 방법 및 이를 이용한 저장 장치
US10795768B2 (en) Memory reallocation during raid rebuild
KR20170120738A (ko) 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치를 액세스하는 액세스 방법
KR20140001535A (ko) 스토리지 시스템 및 그것의 데이터 관리 방법
US20210191863A1 (en) Memory system, and memory controller and method of operating the same
KR20230049858A (ko) 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
KR20220068535A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20220012435A (ko) 비휘발성 메모리 장치, 그것의 동작 방법, 그것을 제어하는 제어기, 및 그것을 포함하는 저장 장치
US11640336B2 (en) Fast cache with intelligent copyback
CN116126583A (zh) 用于控制存储器装置的存储器控制器及其操作方法
KR20220163661A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법