KR20170125178A - Raid 스토리지 장치 및 그것의 관리 방법 - Google Patents

Raid 스토리지 장치 및 그것의 관리 방법 Download PDF

Info

Publication number
KR20170125178A
KR20170125178A KR1020160054793A KR20160054793A KR20170125178A KR 20170125178 A KR20170125178 A KR 20170125178A KR 1020160054793 A KR1020160054793 A KR 1020160054793A KR 20160054793 A KR20160054793 A KR 20160054793A KR 20170125178 A KR20170125178 A KR 20170125178A
Authority
KR
South Korea
Prior art keywords
page
pages
chunk
valid
raid
Prior art date
Application number
KR1020160054793A
Other languages
English (en)
Other versions
KR102580123B1 (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 삼성전자주식회사
Priority to KR1020160054793A priority Critical patent/KR102580123B1/ko
Priority to US15/435,401 priority patent/US10282252B2/en
Priority to CN201710303478.5A priority patent/CN107391027B/zh
Publication of KR20170125178A publication Critical patent/KR20170125178A/ko
Application granted granted Critical
Publication of KR102580123B1 publication Critical patent/KR102580123B1/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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • 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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2058Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using more than 2 mirrored copies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명의 실시 예에 따른 레이드 방식으로 제어되는 복수의 스토리지 장치들의 관리 방법은, 상기 복수의 스토리지 장치들 중에서 페일 디스크를 검출하는 단계, 상기 검출 결과에 따라 복수의 스트라이프들 중 어느 하나를 선택하는 단계, 주소 맵핑 정보를 참조하여 상기 선택된 스트라이프의 정상 청크에 포함된 유효 페이지들과 상기 페일 디스크에 맵핑된 소실 청크의 유효 페이지를 식별하는 단계, 상기 식별된 유효 페이지에 대한 정보를 참조하여, 상기 선택된 스트라이프에 포함되는 청크들 중 상기 소실 청크의 유효 페이지를 복구하는 단계, 그리고 상기 복구된 소실 청크의 유효 페이지와 상기 정상 청크의 유효 페이지들을 새로운 스트라이프에 카피하는 단계를 포함한다.

Description

RAID 스토리지 장치 및 그것의 관리 방법{RAID STORAGE DEVICE AND MANAGEMENT METHOD THEREOF}
본 발명은 반도체 메모리 장치에 관한 것으로, 좀 더 구체적으로는 RAID 스토리지 장치 및 그것의 동작 방법에 관한 것이다.
플래시 메모리 장치는 컴퓨터, 스마트폰, PDA, 디지털 카메라, 캠코더, 보이스 리코더, MP3 플레이어, 휴대용 컴퓨터(Handheld PC)와 같은 정보 기기들의 음성 및 영상 데이터 저장 매체로서 널리 사용되고 있다. 그러나 플래시 메모리에 데이터를 기입하기 위해서는 소거 동작이 반드시 선행되어야 하며, 기입되는 데이터의 단위보다 삭제되는 데이터의 단위가 크다는 특징이 있다. 이러한 특징은 플래시 메모리가 보조기억장치로 사용되는 경우에도 일반 하드디스크용 파일 시스템(File System)을 그대로 활용하는 것을 저해하는 요인이 된다. 더불어, 이러한 특징은 플래시 메모리로의 연속적인(Sequential) 입출력 처리가 비연속적 입출력 처리보다 효율적임을 암시한다.
플래시 메모리 기반의 대용량 스토리지 장치의 예로 솔리드 스테이트 드라이브(Solid State Drive: 이하, SSD)가 대표적이다. SSD의 폭발적인 수요 증가와 함께 그 용도는 다양하게 분화되고 있다. 예를 들면, 서버용 SSD, 클라이언트용 SSD, 데이터 센터용 SSD 등으로 용도가 세분화될 수 있다. SSD의 인터페이스는 이러한 각각의 용도에 따라 최적의 속도와 신뢰성을 제공할 수 있어야 한다. 이러한 요구를 충족하기 위해서 최적의 SSD 인터페이스로 SATA(Serial Advanced Technology Attachment), PCIe(Peripheral Component Interconnect Express), SAS(Serial Attached SCSI) 등이 적용되고 있다.
더불어, 높은 신뢰성을 위해 복수의 스토리지 장치를 포함하는 스토리지 장치가 사용된다. 예로서, RAID(Redundant Array of Independent Disks) 스토리지 시스템은 하나의 데이터를 분할하고, 분할된 데이터를 복수의 스토리지 장치에 분산하여 청크(Chunk) 단위로 저장한다. 복수의 스토리지 장치가 동시에 문제를 야기하는 경우는 거의 발생하지 않기 때문에, 이러한 스토리지 장치는 데이터의 높은 신뢰성을 보장할 수 있다.
본 발명의 목적은 RAID 스토리지 장치에서 발생하는 디스크 페일 상황에서 페일 디스크의 데이터를 복구하기 위한 리빌드 동작과 가비지 컬렉션 동작을 병행하여 수행할 수 있는 메모리 관리 기술을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 레이드 방식으로 제어되는 복수의 스토리지 장치들의 관리 방법은, 상기 복수의 스토리지 장치들 중에서 페일 디스크를 검출하는 단계, 상기 검출 결과에 따라 복수의 스트라이프들 중 어느 하나를 선택하는 단계, 주소 맵핑 정보를 참조하여 상기 선택된 스트라이프의 정상 청크에 포함된 유효 페이지들과 상기 페일 디스크에 맵핑된 소실 청크의 유효 페이지를 식별하는 단계, 상기 식별된 유효 페이지에 대한 정보를 참조하여, 상기 선택된 스트라이프에 포함되는 청크들 중 상기 소실 청크의 유효 페이지를 복구하는 단계, 그리고 상기 복구된 소실 청크의 유효 페이지와 상기 정상 청크의 유효 페이지들을 새로운 스트라이프에 카피하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 레이드(RAID) 스토리지 장치는, 복수의 솔리드 스테이트 드라이브, 그리고 상기 복수의 솔리드 스테이트 드라이브와 호스트를 연결하는 호스트 인터페이스를 포함하되, 상기 복수의 솔리드 스테이트 드라이브 중 어느 하나의 페일 디스크에 포함되는 소실 청크를 패리티 청크를 사용하여 복구하는 레이드 리빌드 동작시 상시 소실 청크의 페이지들 중 유효 페이지들만이 복구된다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 복수의 솔리드 스테이트 드라이브의 관리 방법은, 상기 복수의 솔리드 스테이트 드라이브를 로그 구조 레이드 방식으로 관리하기 위해 할당되는 복수의 스트라이프들 중 어느 하나를 선택하는 단계, 상기 선택된 스트라이프에 포함되는 페이지들의 논리 주소를 물리 주소로 맵핑하는 제 1 맵 페이지와, 상기 선택된 스트라이프에 포함되는 페이지들의 상기 물리 주소를 상기 논리 주소로 맵핑하는 제 2 맵 페이지를 참조하여 상기 선택된 스트라이프의 정상 청크에 포함된 유효 페이지와 페일 디스크에 맵핑된 소실 청크의 유효 페이지를 식별하는 단계, 상기 식별된 유효 페이지에 대한 정보를 참조하여, 상기 선택된 스트라이프에 포함되는 청크들 중 상기 소실 청크의 포함되는 유효 페이지를 복구하는 단계, 그리고 상기 복구된 소실 청크의 유효 페이지와 상기 정상 청크의 유효 페이지들을 새로운 스트라이프에 카피하는 단계를 포함한다.
이상과 같은 본 발명의 실시 예에 따르면, 복수의 솔리드 스테이트 디스크를 사용하는 RAID 저장 장치에서 페일 디스크에 저장된 데이터의 복구와 가비지 컬렉션을 병행하여 수행할 수 있는 기술이 제공된다. 데이터의 복구 동작에서 무효 데이터의 페이지 카피가 감소하여 장치 수명 연장 및 높은 자원 효율성을 제공할 수 있다.
도 1은 본 발명의 실시 예에 따른 사용자 장치(10)를 보여주는 블록도이다.
도 2는 본 발명의 디스크 단위의 레이드(RAID) 구성 방법을 간략히 보여주는 블록도이다.
도 3은 도 1의 맵핑 테이블(110)의 구성 방법을 예시적으로 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 주소 맵핑 방법을 보여주는 도면이다.
도 5는 본 발명의 일 실시 예에 따른 레이드 리빌드(RAID Rebuild) 동작을 간략히 보여주는 순서도이다.
도 6은 본 발명의 실시 예에 따른 로그 구조 레이드에서 발생한 페일 디스크의 발생과 그에 따른 스트라이프 단위의 리빌드 방법을 보여주기 위한 도면이다.
도 7은 페일 디스크가 발생한 상황에서 스트라이프(ST1)에 대한 본 발명의 리빌드 방법을 보여주는 도면이다.
도 8은 물리-논리 주소의 맵핑 관계를 나타내는 리버스 맵 페이지를 복원하는 리빌드 방법을 보여주는 도면이다.
도 9는 도 5의 S140 단계를 좀더 구체적으로 보여주는 순서도이다.
도 10은 본 발명의 다른 실시 예에 따른 레이드 스토리지 시스템을 보여주는 블록도이다.
도 11은 도 10의 레이드 엔진(412)에 의한 본 발명의 레이드 리빌드 동작을 보여주는 도면이다.
도 12는 본 발명의 스토리지에 포함되는 메모리 블록들 중 제 1 메모리 블록의 예를 보여주는 회로도이다.
도 13은 본 발명의 실시 예들에 따른 불휘발성 메모리 시스템이 적용된 메모리 카드 시스템을 보여주는 블록도이다.
도 14는 본 발명에 따른 불휘발성 메모리 시스템이 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 블록도이다.
도 15는 본 발명에 따른 불휘발성 메모리 시스템이 적용된 사용자 시스템을 보여주는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 플래시 메모리 장치를 사용하는 솔리드 스테이트 드라이브(SSD)가 본 발명의 특징 및 기능을 설명하기 위한 예로서 사용될 것이다. 더불어, 솔리드 스테이트 드라이브는 서로 다른 스트라이프(Stripe)에 속하는 복수의 청크(Chunk)들을 포함할 수 있다. 각각의 청크들은 복수의 페이지들을 포함한다. 그리고 각각의 페이지는 갱신되지 않은 유효한 페이지(Valid page)와, 덮어쓰기에 의해서 무효화된 페이지(Invalid page)로 구분될 수 있다. 더불어, 본 발명에서는 솔리드 스테이트 드라이브(SSD)의 상태 중에서 페일 디스크(Fail Disk) 또는 페일 드라이브(Fail Drive)라는 용어가 등장한다. 페일 디스크(Fail Disk) 또는 페일 드라이브(Fail Drive)는 솔리드 스테이트 드라이브(SSD)가 접속 오류나 물리적인 고장에 의해서 접근이 불가한 상태를 의미한다. 이하, 본 발명의 기술적 사상이 도면들에 의거하여 상세히 설명될 것이다.
도 1은 본 발명의 실시 예에 따른 사용자 장치(10)를 간략히 보여주는 블록도이다. 도 1을 참조하면, 사용자 장치(10)는 호스트(100)와 RAID 스토리지 장치(200)를 포함한다. 사용자 장치(10)는 예를 들면 서버나 데이터 센터일 수 있다.
호스트(100)는 RAID 스토리지 장치(200)에 접근하여 데이터를 기입하거나 읽어온다. 호스트(100)는 RAID 스토리지 장치(200)에 명령어, 어드레스, 그리고 데이터를 제공할 수 있다. 호스트(100)는 RAID 스토리지 장치(200)로부터 명령어나 어드레스를 사용하여 데이터를 요청할 수 있다. 예로서, 호스트(100)는 적어도 하나의 프로세서(Processor)를 포함할 수 있다. 호스트(100)는 프로세서 그 자체이거나, 프로세서를 포함하는 전자 장치 또는 시스템일 수 있다.
특히, 호스트(100)는 RAID 방식으로 RAID 스토리지 장치(200)에 포함되는 복수의 솔리드 스테이트 드라이브들(220, 230, 240)을 관리할 수 있다. 호스트(100)는, 예를 들면, 로그 구조 기반의 레이드(Log-Structured RAID) 방식으로 복수의 솔리드 스테이트 드라이브들(220, 230, 240)을 제어할 수 있다. 로그 구조 레이드(Log-Structured RAID) 방식에 따르면, 하나의 스트라이프(Stripe) 내에서 데이터는 논리 블록 어드레스(LBA)와는 무관하게 물리적인 배열 순서에 따라 순차적으로 기록된다. 그리고 논리 블록 어드레스(LBA)와 대응하는 물리 어드레스(Physical address)의 맵핑 관계가 맵핑 테이블(110)에 저장되고 업데이트된다.
로그 구조 기반의 레이드(RAID) 방식에서는, 스트라이프(Stripe) 단위로 리소스(Resource)가 관리된다. 소거 상태의 스트라이프(Stripe)에 쓰기 요청된 데이터가 순차적으로 기입될 것이다. 그리고 순차적으로 기입된 어느 하나의 페이지에 대한 업데이트는 다음과 같이 이루어진다. 어느 하나의 페이지에 기록된 데이터는 그대로 유지되고, 업데이트되는 데이터는 다른 물리 어드레스의 페이지에 기입된다. 따라서, 업데이트된 논리 블록 어드레스에 대응하는 물리 어드레스의 맵핑 정보만 업데이트하는 것으로 데이터의 덮어쓰기가 구현된다. 이러한 논리 블록 어드레스와 물리 어드레스 사이의 맵핑 관계가 맵핑 테이블(110) 상에서 관리된다.
RAID 스토리지 장치(200)는 호스트 인터페이스(210)와 복수의 솔리드 스테이트 드라이브(220, 230, 240)를 포함할 수 있다. 호스트 인터페이스(210)는 복수의 솔리드 스테이트 드라이브(220, 230, 240)들과 호스트(100)와의 통신을 수행할 수 있다. 예를 들면, 호스트 인터페이스(210)는 호스트(100)와의 통신 채널을 제공한다. 호스트 인터페이스(210)는 호스트(100)와 RAID 스토리지 장치(200)와의 물리적 연결을 제공한다. 즉, 호스트 인터페이스(210)는 호스트(100)의 버스 포맷(Bus format)에 대응하여 RAID 스토리지 장치(200)와의 인터페이싱을 제공한다. 호스트(100)의 버스 포맷은 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI), UFS(Universal Flash Storage) 중 적어도 하나로 구성될 수 있다.
여기서, 설명될 레이드(RAID)는 다양한 레벨로 정의될 수 있다. 예를 들어, RAID 레벨 0(Striped set without parity or Striping), RAID 레벨 1(Mirrored set without parity or Mirroring), RAID 레벨 2(Hamming code parity),RAID 레벨 3(Striped set with dedicated parity, bit interleaved parity, or byte level parity), RAID 레벨 4(Block level parity), RAID 레벨 5(Striped set with distributed parity or interleave parity), RAID 레벨 6(Striped set with dual distributed parity), RAID 레벨 7, RAID 레벨 10, 및 RAID 레벨 53 중에서 어느 하나 또는 상기 RAID 레벨들 중에서 적어도 2개를 혼합한(merged) RAID 레벨(예컨대, RAID 0+1, RAID 1+0,RAID 5+0, RAID 5+1, 또는 RAID 0+1+5)일 수도 있다.
복수의 솔리드 스테이트 드라이브들(220, 230, 240)은 각각 컨트롤러와 복수의 플래시 메모리 장치들을 포함할 것이다. 복수의 솔리드 스테이트 드라이브들(220, 230, 240) 각각이 포함하는 컨트롤러 레벨에서의 맵핑이나 어드레스 관리는 본 발명에서 고려하지 않기로 한다. 본 발명에서는 호스트(100)에서 수행되는 로그 구조 레이드(Log-structured RAID) 방식으로 국한하여 본 발명의 기술적 특징이 설명될 것이다. 하지만, 본 발명의 이점이 로그 구조 레이드(Log-structured RAID) 방식의 스토리지에만 국한되지 않음은 잘 이해될 것이다.
호스트(100)는 로그 구조 기반의 레이드(Log-structured RAID) 방식으로 RAID 스토리지 장치(200)를 제어한다. 다양한 원인에 의해서 복수의 솔리드 스테이트 드라이브들(220, 230, 240) 중에서 페일 디스크(Failure Disk)가 발생할 수 있다. 호스트(100)는 맵핑 테이블(110)을 이용하여 페일 디스크가 발생하는 경우에, 페일 디스크에 저장된 청크를 복구하기 위한 레이드 리빌드(RAID Rebuild) 동작을 수행한다. 레이드 리빌드(RAID Rebuild) 동작은 페일 디스크를 제외한 나머지 디스크의 청크들을 사용하여 페일 디스크에 저장된 청크를 복원하는 동작이다. 본 발명의 호스트(100)는 레이드 리빌드(RAID Rebuild) 동작시 무효 페이지에 대해서는 복원을 시도하지 않는다. 반면, 레이드 리빌드(RAID Rebuild) 동작시 유효한 페이지의 경우에는 패리티를 사용한 복원을 시도할 것이다. 더불어, 레이드 리빌드(RAID Rebuild) 동작이 완료되면, 해당 스트라이프에서 유효 페이지만을 새로운 스트라이프에 카피하는 동작을 추가로 수행할 수 있다. 상술한 방식에 의해서 무효 페이지에 대한 페이지 카피 횟수가 획기적으로 줄어들 수 있다.
도 2는 본 발명의 디스크 단위의 레이드(RAID) 구성 방법을 간략히 보여주는 블록도이다. 도 2를 참조하면, 예시적으로 4개의 솔리드 스테이트 드라이브들(SSD0, SSD1, SSD2, SSD3)이 디스크 단위 레이드(RAID)를 구성하는 것으로 가정하기로 한다. 더불어, 레이드 스토리지 장치(200)는 페일 디스크의 발생 상황에서 수행되는 레이드 리빌드(RAID Rebuild) 동작에 의해서 생성되는 새로운 스트라이프를 저장하기 위한 적어도 하나의 리페어 디스크(rSSD)를 포함할 수 있다.
먼저, 제 1 스트라이프(ST1)는 솔리드 스테이트 드라이브들(SSD0, SSD1, SSD2, SSD3) 각각에 분산되어 저장되는 복수의 청크들(CHNK01, CHNK11, CHNK21, CHNK31)을 포함할 수 있다. 여기서, 패리티 청크(CHNK31)는 호스트(100)에 의해서 청크들(CHNK01, CHNK11, CHNK21)로부터 인코딩된 패리티들에 대응한다. 만일, 청크들 각각이 8개의 페이지들로 구성된다고 가정하면, 패리티 청크(CHNK31)의 페이지들 각각은 나머지 청크들(CHNK01, CHNK11, CHNK21)의 대응하는 페이지들을 부호화하여 생성할 수 있다. 예를 들면 레이드 레벨 5(RAID Level 5)에서는 청크들(CHNK01, CHNK11, CHNK21) 간의 배타적 논리합 연산(XOR)에 의해서 패리티 청크(CHNK31)가 생성될 수 있다. 상술한 방식에 따라 제 2 내지 제 m 스트라이프(ST2, ST3, …, STm)가 생성될 수 있고, 대응하는 메모리 영역에 저장될 수 있을 것이다.
이러한 디스크 또는 드라이브 단위의 RAID 구성이 채용되는 경우, 하나의 디스크에 페일이 발생하더라도, 페일 디스크의 데이터 청크는 스트라이프 내의 다른 청크들을 참조하여 복구될 수 있다. 예로서, 솔리드 스테이트 드라이브(SSD0)가 페일 디스크인 경우, 제 1 스트라이프(ST1)의 청크(CHNK01)는 나머지 청크들(CHNK11, CHNK21, CHNK31)을 사용하여 복구할 수 있다. 따라서, RAID 스토리지 장치(200)는 데이터의 높은 신뢰성을 보장할 수 있다.
리페어 디스크(rSSD)는 페일 디스크의 검출시 수행되는 본 발명의 레이드 리빌드(RAID Rebuild) 동작의 결과를 저장하기 위한 솔리드 스테이트 드라이브이다. 즉, 리페어 디스크(rSSD)는 더 이상 접근 또는 사용이 불가한 페일 디스크를 대체하기 위한 용도로 사용될 수 있다. 예를 들면, 레이드 리빌드(RAID Rebuild) 동작의 결과로 생성되는 복원된 데이터는 페일 디스크 대신에 리페어 디스크(rSSD)를 포함하는 스트라이프들에 저장될 것이다.
도 3은 도 1의 맵핑 테이블(110)의 구성 방법을 예시적으로 보여주는 블록도이다. 도 3을 참조하면, 로그 구조 레이드(Log-Structured RAID) 방식으로 복수의 솔리드 스테이트 드라이브들을 관리하기 위해서, 맵핑 테이블(110)은 계층적으로 구성될 수 있다.
볼륨 ID 테이블(111)은 복수의 솔리드 스테이트 드라이브(220, 230, 240)들이 구성하는 선형 메모리 영역에서, 할당된 특정 볼륨(예를 들면, 특정 LBA 범위)을 지시한다. 예를 들면, 사용자가 제 1 볼륨(Vol_ID1)에 대한 접근을 요청하면, LBA 맵 테이블(112)에서는 제 1 볼륨(Vol_ID1)에 대응하는 LBA 범위(LBA_MAP_0~LBA_MAP_j, j는 자연수)가 사용자에게 제공될 수 있다. 각각의 LBA에 대응하는 엔트리들이 LBA 맵 페이지로 제공된다. 예를 들면, 논리 주소 범위(LBA_MAP_2)에 대한 물리 주소의 맵핑은 LBA 맵 페이지(113)과 같은 형태로 구성될 수 있다. 예를 들면, 어느 하나의 RAID 스트라이프에 포함되는 페이지들의 논리 주소와의 맵핑은 LBA 맵 페이지(113)와 같이 스트라이프 ID와 오프셋(Offset)으로 나타낼 수 있다.
만일, 어느 하나의 스트라이프의 제 1 페이지 데이터가 제 2 페이지로 업데이트되는 경우를 고려하기로 하자. 이 경우에, 호스트(100)는 제 1 페이지와 다른 물리 영역에 제 2 페이지를 기입한다. 그리고 호스트(100)는 LBA 맵 페이지(113)에 관리되는 제 1 페이지의 오프셋을 제 2 페이지의 물리적 위치에 대응하는 값으로 업데이트하는 것으로 제 1 페이지는 업데이트될 수 있다. 상술한 볼륨 ID 테이블(111), LBA 맵 테이블(112), 그리고 LBA 맵 페이지(113)는 논리-물리 변환 맵(Logical to Physical Translation Map: 이하, L2P Map)으로 요약될 수 있다. 논리-물리 변환 맵(L2P Map)은 호스트(100)의 맵핑 테이블(110)에서 관리되는 논리 페이지들의 논리 주소를 물리 주소로 맵핑하는 테이블이다.
도 4는 본 발명의 실시 예에 따른 주소 맵핑 방법을 예시적으로 보여주는 도면이다. 도 4를 참조하면, 로그 구조 RAID 방식을 설명하기 위해 스트라이프 ID가 'N'인 스트라이프가 선택되는 것으로 가정하기로 한다. 선택된 스트라이프(N)에 포함되는 페이지들은 호스트(100)의 덮어쓰기 요청에 따라 업데이트될 것이다.
먼저, 스트라이프(N)에 할당된 페이지들에 데이터가 모두 기입되고 나면, 패리티 청크(CHNKm)와 리버스 맵 페이지(115)가 생성될 수 있다. 패리티 청크(CHNKm)는 레이드 레벨에 따라 다양한 방식으로 인코딩되어 생성될 수 있다. 특히, 리버스 맵 페이지(115)는 스트라이프(N)에 포함되는 모든 물리 페이지들의 물리 주소를 논리 주소로 맵핑하는 물리-논리 변환 맵(Physical to Logical Translation Map: 이하, P2L Map)으로 요약될 수 있다. 리버스 맵 페이지(115)는 스트라이프(N)가 가비지 컬렉션(Garbage collection)이나 머지(Merge)를 통해서 삭제되기 전까지는 최초 기록된 정보를 유지하게 된다.
만일, 호스트(100)가 제 1 청크(CHNK1)의 페이지들(Page1, Page3)을 업데이트하는 경우, 스트라이프(N)의 제 2 청크(CHNK2)에 업데이트되는 페이지들의 데이터가 기입될 수 있다. 따라서, 업데이트 이후 호스트(100)는 LAB 맵 페이지(113)의 오프셋을 변경함으로써 맵핑 정보를 업데이트한다. LAB 맵 페이지(113)의 오프셋 정보가 변경된 경우, 리버스 맵 페이지(115)에 저장된 맵핑 정보와의 일관성은 깨지게 된다. 본 발명에서는 상술한 LAB 맵 테이블(113)과 리버스 맵 페이지(115)를 비교하여 업데이트된 페이지를 확인할 수 있다. 따라서, LAB 맵 테이블(113)과 리버스 맵 페이지(115)를 이용하면 어느 하나의 스트라이프 내에서 유효 페이지와 무효 페이지의 식별이 가능하다.
하지만, 어느 하나의 스트라이프 내에서 유효 페이지와 무효 페이지를 식별하기 위한 방법은 상술한 기법에만 국한되는 것은 아니다. 다양한 주소 정보와 맵핑 정보 또는 변경된 방식을 사용하여 스트라이프 내에서 유효 페이지와 무효 페이지를 식별할 수 있을 것이다.
도 5는 본 발명의 일 실시 예에 따른 레이드 리빌드(RAID Rebuild) 동작을 간략히 보여주는 순서도이다. 도 5를 참조하면, 로그 구조 RAID 방식으로 관리되는 복수의 솔리드 스테이트 드라이브들 중 어느 하나에 디스크 페일(Disk failure)이 발생하면, 유효한 페이지만 선택적으로 복원되는 본 발명의 레이드 리빌드 동작이 수행된다.
S110 단계에서, 호스트(100)는 솔리드 스테이트 드라이브들 중에서 페일 디스크에 대응하는 것이 존재하는지 검출한다. 예를 들면, 솔리드 스테이트 드라이브(SSD) 중에서 접근이 불가한 페일 디스크 또는 페일 드라이브가 존재하는지 검출할 것이다.
S120 단계에서, 호스트(100)는 페일 디스크의 검출 결과에 따라 동작 분기를 수행한다. 만일, 페일 디스크가 검출되지 않으면(No 방향), 절차는 S110 단계로 복귀한다. 하지만, 페일 디스크가 검출되면(Yes 방향), 절차는 S130 단계로 이동한다.
S130 단계에서, 호스트(100)는 복수의 스트라이프들 중에서 어느 하나를 선택한다. 호스트(100)는 복수의 스트라이프들 중에서 페일 디스크에 대응하는 청크를 포함하는 스트라이프를 순차적으로 선택할 수 있다.
S140 단계에서, 호스트(100)는 선택된 스트라이프에 대응하는 논리-물리 맵 페이지(또는, LBA 맵 페이지)와 물리-논리 맵 페이지(또는, 리버스 맵 페이지)를 사용하여 유효 페이지를 선택한다. 예를 들면, 선택된 스트라이프에 포함되는 복수의 페이지들 중에서 논리-물리 맵 페이지와 물리-논리 맵 페이지가 다른 페이지들을 무효 페이지로 판단할 수 있다. 호스트(100)는 논리-물리 맵 페이지와 물리-논리 맵 페이지가 동일한 페이지들을 선택하는 방식으로 유효 페이지를 선택할 수 있다. 더불어, 리버스 맵 페이지(Reverse MP)가 페일 디스크에 포함된 청크에 저장된 경우에는, 호스트(100)는 다른 청크들과 패리티 청크를 사용하여 리버스 맵 페이지가 포함된 청크를 우선적으로 복원한다. 호스트(100)는 복원된 리버스 맵 페이지를 사용하여 유효 페이지를 선택할 수 있다.
S150 단계에서, 호스트(100)는 선택된 스트라이프 내에서 선택된 유효 페이지들을 별도로 구비된 새로운 스트라이프에 카피한다. 이때, 선택된 스트라이프 내에서 논리-물리 맵 페이지(또는, LBA 맵 페이지)와 물리-논리 맵 페이지(또는, 리버스 맵 페이지)가 다른 엔트리에 대응하는 페이지 데이터는 무효 페이지로 판단될 것이다. 무효 페이지들은 새로운 스트라이프에 카피되지 않는다. 여기서, 새로운 스트라이프(New stripe) 단위는 페일 디스크를 대체하기 위한 리페어 디스크(Repair Disk) 또는 리페어 드라이브(Repair Drive)의 메모리 영역을 사용하여 구성될 것이다. 더불어, 새로운 스트라이프(New stripe)에 저장될 데이터 단위는 우선 램(RAM)과 같은 휘발성 메모리 상에서 유효 페이지들과, 새로운 패리티 청크, 그리고 리버스 맵 페이지를 포함할 것이다. 그리고 유효 페이지들, 패리티 청크, 그리고 새로운 리버스 맵 페이지가 포함된 하나의 스트라이프 단위의 데이터는 리페어 디스크를 사용하여 구성되는 새로운 스트라이프에 저장될 것이다.
S160 단계에서, S150 단계에서 복원된 스트라이프가 복원을 위해 지정된 마지막 스트라이프인지 판단된다. 만일, S150 단계에서 처리된 스트라이프가 복수의 스트라이프들 중에서 최종 스트라이프인 경우, 제반 레이드 리빌드 절차는 종료될 것이다. 하지만, 복원할 스트라이프가 더 존재하는 경우, 절차는 스트라이프를 선택하기 위한 S130 단계로 이동한다.
이상에서, 페일 디스크의 검출시 수행되는 레이드 리빌드 동작시 유효한 페이지들만이 선택되어 새로운 스트라이프로 카피되는 본 발명의 기술이 설명되었다. 본 발명의 실시 예에 따르면, 레이드 리빌드 동작시 무효한 페이지의 카피가 차단되어 가비지 컬렉션(Garbage collection)의 부담을 줄일 수 있다. 더불어, 무효 페이지에 대한 페이지 카피의 횟수를 줄여 레이드 스토리지 장치(200)의 리소스 확보 및 수명 연장의 효과도 기대된다.
도 6은 본 발명의 실시 예에 따른 로그 구조 기반의 레이드 시스템에서 페일 디스크의 발생과 그에 따른 스트라이프 단위의 리빌드 방법을 보여주기 위한 도면이다. 도 6을 참조하면, 예시적으로 4개의 솔리드 스테이트 드라이브들(SSD0, SSD1, SSD2, SSD3)과 4개의 스트라이프(ST1, ST2, ST3, ST4) 구조에서 솔리드 스테이트 드라이브(SSD1)가 페일 디스크로 검출된 상태라 가정하기로 한다. 그리고 각각의 청크(Chunk)는 4개의 페이지들로 구성되는 것으로 가정하자.
페일 디스크(SSD1)는 4개의 스트라이프(ST1, ST2, ST3, ST4)에 포함되는 청크들(CHNK11, CHNK12, CHNK13, CHNK14)을 포함하고 있다. 청크들(CHNK11, CHNK14)은 유저 데이터가, 청크(CHNK12)에는 스트라이프(ST2)의 리버스 맵 페이지(Reverse MP)가 포함된다. 그리고 청크(CHNK13)는 스트라이프(ST3)의 청크들(CHNK03, CHNK23, CHNK33) 각각을 사용하여 생성된 패리티 청크에 대응한다.
본 발명의 레이드 리빌드 방법에 따르면, 페일 디스크(SSD1)에 의해서 소실된 청크들(CHNK11, CHNK12, CHNK13, CHNK14) 중에서 유효 페이지들만 복원할 수 있다. 업데이트에 의해서 무효 페이지로 식별된 페이지들은 복원되지 않고 새로운 스트라이프(New Stripe)로 카피되지 않을 것이다. 더불어, 본 발명의 유효 페이지와 무효 페이지의 식별은 맵핑 정보를 이용하여 이루어진다. 즉, LBA 맵 페이지와 리버스 맵 페이지를 비교하여 소실된 청크들(CHNK11, CHNK12, CHNK13, CHNK14)에 포함되는 유효 페이지만이 복원될 것이다. 그리고 각각의 스트라이프들에 포함되는 유효 페이지들만이 새로운 스트라이프(New Stripe)로 카피될 것이다. 이러한 절차는 후술하는 도면들을 통해서 상세히 설명하기로 한다.
도 7은 페일 디스크가 발생한 상황에서 스트라이프(ST1)에 대한 본 발명의 레이드 리빌드 방법을 보여주는 도면이다. 도 7을 참조하면, 스트라이프(ST1)는 4개의 청크들(CHNK01, CHNK11, CHNK21, CHNK31)을 포함한다. 청크(CHNK11)는 솔리드 스테이트 드라이브(SSD1)에 할당되어 있으며, 소실된 청크에 해당한다.
솔리드 스테이트 드라이브(SSD0)에 할당된 청크(CHNK01)에는 유효 페이지들(P0, P3)과 무효 페이지들(P1, P2)이 포함되는 것으로 간주한다. 그리고 페일 디스크에 대응하는 솔리드 스테이트 드라이브(SSD1)에 할당된 청크(CHNK11)에는 유효 페이지들(P5, P7)과 무효 페이지들(P4, P6)이 포함되는 것으로 간주한다. 솔리드 스테이트 드라이브(SSD2)에 할당된 청크(CHNK21)에는 유효 페이지들(P8, P10)과 무효 페이지(P9)가 포함되는 것으로 간주한다. 더불어, 청크(CHNK21)에는 리버스 맵 페이지(Reverse MP)가 저장되어 있다. 솔리드 스테이트 드라이브(SSD3)에 할당된 청크(CHNK31)에는 패리티 페이지들(PTY0, PTY1, PTY2, PTY3)이 포함되는 것으로 간주하자.
먼저, 호스트(100)는 청크(CHNK21)에 저장된 리버스 맵 페이지(Reverse MP)를 읽어낸다. 그리고 호스트(100)는 독출된 리버스 맵 페이지(Reverse MP)와 맵핑 테이블(110)에 구성된 LAB 맵 페이지를 비교한다. 비교 결과, 서로 다른 엔트리값을 가지는 페이지들이 무효 페이지로 식별된다. 예를 들면, 스트라이프(ST1)에 저장된 페이지들(P1, P2, P4, P6, P9)이 무효 페이지로 식별될 것이다. 리버스 맵 페이지(Reverse MP)는 유효 페이지를 식별하기 위한 용도로서의 목적을 달성한 이후이므로, 새로운 스트라이프(New stripe)에 카피될 필요가 없다. 따라서, 각 스트라이프(ST1, ST2, ST3, ST4)에서 리버스 맵 페이지(Reverse MP)는 복원되기는 하지만, 새로운 스트라이프로 카피될 필요는 없다.
유효 또는 무효 페이지의 식별이 완료되면, 유효 페이지들에 대한 새로운 스트라이프(New stripe)로의 카피가 수행된다. 여기서, 새로운 스트라이프(New stripe)로의 카피는, 앞서 설명한 바와 같이 램(RAM)과 같은 메모리에 유효 페이지들을 버퍼링하고, 버퍼링된 유효 페이지들에 대한 페리티 청크(예를 들면, CHNK25) 및 리버스 맵 페이지(Reverse MP)를 생성하는 동작을 포함할 수 있다. 유효 페이지들이 구성하는 청크들(CHNK05, CHNK15, CHNK35), 패리티 청크(CHNK25), 더불어 새로운 스트라이프(New stripe)에 대응하는 리버스 맵 페이지(Reverse MP)로 구성되는 스트라이프 단위의 데이터가 구성될 수 있다. 그리고 램(RAM)과 같은 메모리 상에서 구성된 스트라이프 단위의 데이터는 이후 새로운 스트라이프(New stripe)에 카피될 것이다.
이러한 절차는 화살표로 표시된 단계(S11)로 표시되어 있다. 소실되지 않은 청크들(CHNK01, CHNL21)에 포함되는 유효 페이지들(P0, P3, P8, P10)은 별도의 복원 절차없이 새로운 스트라이프로(New stripe)로 카피될 수 있다. 즉, 유효 페이지들(P0, P3)은 새로운 스트라이프(New stripe)의 청크(CHNK05)로 카피될 수 있다. 유효 페이지들(P8, P10)은 새로운 스트라이프(New stripe)의 청크(CHNK15)로 카피될 수 있다.
하지만, 소실된 청크(CHNK11)에 존재하는 유효 페이지들(P5, P7)은 패리티를 이용한 복원 절차를 거친 후에 새로운 스트라이프로(New stripe)로 카피될 것이다. 예를 들면, 소실된 청크(CHNK11)에 포함되는 유효 페이지(P5)는 청크(CHNK01)의 무효 페이지(P1)와 청크(CHNK21)의 무효 페이지(P9), 그리고 청크(CHNK31)의 패리티 페이지(PTY1)를 사용하여 복원된다. 즉, 소실된 유효 페이지(P5)는 페이지들(P1, P9)과 패리티 페이지(PTY1)의 배타적 논리합(XOR) 연산을 통해서 복원될 수 있다. 이러한 복원 절차는 단계(S12)로 표시되어 있다. 복원된 유효 페이지(P5)는 새로운 스트라이프(New stripe)의 청크(CHNK05)로 카피된다. 하지만, 상술한 패리티를 이용한 복원 방법은 적용된 RAID 레벨에 따라 가변될 수 있음은 잘 이해될 것이다.
소실된 청크(CHNK11)에 포함되는 유효 페이지(P7)는 청크(CHNK01)의 유효 페이지(P3)와 청크(CHNK21)의 리버스 맵 페이지(Reverse MP), 그리고 청크(CHNK31)의 패리티 페이지(PTY3)를 사용하여 복원된다. 즉, 소실된 유효 페이지(P7)는 페이지들(P1, Reverse MP)과 패리티 페이지(PTY3)의 배타적 논리합(XOR) 연산을 통해서 복원될 수 있다. 이러한 복원 절차는 단계(S13)로 표시되어 있다. 복원된 유효 페이지(P7)는 새로운 스트라이프(New stripe)의 청크(CHNK05)로 카피된다.
여기서, 무효 페이지들(P1, P2, P4, P6, P9)은 소실된 청크의 유효 페이지를 복원하기 위해서 사용될 수 있다. 하지만, 무효 페이지들(P1, P2, P4, P6, P9)에 대한 새로운 스트라이프(New stripe)로의 카피는 발생하지 않는다. 더불어, 스트라이프(ST1)에 대한 맵핑 정보를 포함하는 리버스 맵 페이지(Reverse MP)는 새로운 스트라이프(New stripe)에서는 더 이상 의미가 없으므로 카피되지 않고 폐기(Discard)될 것이다. 더불어, 패리티 청크(CHNK31)에 포함되는 패리티 페이지들(PTY0, PTY1, PTY2, PTY3)도 새로운 스트라이프로의 카피는 필요하지 않다. 패리티 페이지들(PTY0, PTY1, PTY2, PTY3)은 스트라이프(ST1)에 대한 메타 데이터이지, 새로운 스트라이프(New stripe)에서는 아무런 의미가 없기 때문이다. 따라서, 패리티 페이지들(PTY0, PTY1, PTY2, PTY3) 폐기될 것이다. 상술한 리버스 맵 페이지(Reverse MP)와 패리티 페이지들(PTY0, PTY1, PTY2, PTY3)의 폐기 절차는 단계(S14)에 도시되어 있다.
페일 디스크(Fail disk)를 대체하기 위한 리페어 디스크(Repair disk)를 사용하여 구성되는 새로운 스트라이프(New stripe)에는 복수의 스트라이프들(ST1, ST2, ST3, ST4)로부터 유효 페이지들이 카피될 수 있다. 그리고 유효 페이지들을 이용하여 생성된 새로운 패리티 청크(예를 들면, CHNK25), 새로운 리버스 맵 페이지(Reverse MP, CHNK35에 저장)가 새로운 스트라이프(New stripe)에 저장될 것이다.
도 8은 물리-논리 주소의 맵핑 관계를 나타내는 리버스 맵 페이지를 복원하는 레이드 리빌드(RAID Rebuild) 방법을 보여주는 도면이다. 도 8을 참조하면, 스트라이프(ST2)는 4개의 청크들(CHNK02, CHNK12, CHNK22, CHNK32)을 포함한다. 청크(CHNK12)는 페일 디스크(Fail disk)에 대응하는 솔리드 스테이트 드라이브(SSD1)에 할당되어 있으며, 따라서 소실된 청크에 해당한다.
솔리드 스테이트 드라이브(SSD0)에 할당된 청크(CHNK02)에는 유효 페이지들(P0, P3)과 무효 페이지들(P1, P2)이 포함되는 것으로 간주한다. 그리고 페일 디스크에 대응하는 솔리드 스테이트 드라이브(SSD1)에 할당된 청크(CHNK12)에는 유효 페이지(P5), 리버스 맵 페이지(Reverse MP), 그리고 무효 페이지들(P4, P6)이 포함될 수 있다. 솔리드 스테이트 드라이브(SSD2)에 할당된 청크(CHNK22)에는 스트라이프(ST2)의 패리티 페이지들(PTY0, PTY1, PTY2, PTY3)이 포함될 수 있다. 그리고 스트라이프(ST2)에는 유효 페이지들(P8, P10, P11)과 무효 페이지(P9)가 포함될 수 있다.
먼저, 호스트(100)는 페일 디스크가 존재하는 것을 검출하면, 본 발명의 레이드 리빌드 동작을 위해 논리-물리 변환 맵(Logical-to-Physical Address Translation Map: L2P Map)과 물리-논리 변환 맵(Physical-to-Logical Address Translation Map: P2L Map)을 읽어온다. 즉, 호스트(100)는 논리-물리 변환 맵(L2P Map)으로서 호스트에서 최근까지 업데이트된 LBA 맵 페이지(113, 도 3 참조)를 맵핑 테이블(110)이 저장된 메모리로부터 읽어낼 수 있다. 그리고 호스트(100)는 물리-논리 변환 맵(P2L Map)으로서 스트라이프(ST2) 내에 기록된 리버스 맵 페이지(Reverse MP)를 읽어내야 한다. 하지만, 리버스 맵 페이지(Reverse MP)는 소실된 청크(CHNK12)에 기록되어 있다. 따라서, 스트라이프(ST2)의 제반 페이지들의 유효 또는 무효 여부를 결정하기 위해서는 물리-논리 변환 맵(P2L Map)인 리버스 맵 페이지(Reverse MP)의 복원이 최우선적으로 수행되어야 한다.
S21 단계에서 호스트(100)는 리버스 맵 페이지(Reverse MP)를 복구하기 위한 정상 청크들(CHNK02, CHNK22, CHNK32)의 페이지들(P3, PTY3, P11)을 읽어낼 것이다. 호스트(100)는 리버스 맵 페이지(Reverse MP)가 저장된 소실된 청크(CHNK12)의 오프셋(Offset)을 참조하여 페이지들(P3, PTY3, P11)을 읽어올 수 있다. 이때, 리버스 맵 페이지(Reverse MP)를 복원하기 위해 읽어내는 페이지들의 유효 또는 무효 여부는 고려될 필요가 없다. 페이지들의 유효성의 여부는 리버스 맵 페이지(Reverse MP)의 복원 이후에 수행되어야 하기 때문이다.
S22 단계에서, 호스트(100)는 소실되지 않은 청크들로부터 읽혀진 페이지들(P3, PTY3, P11)에 대한 복구 연산을 수행한다. 예컨대, RAID 레벨 5의 경우 리버스 맵 페이지(Reverse MP)의 복구를 위해 페이지들(P3, PTY3, P11) 간의 배타적 논리합(XOR) 연산이 적용될 수 있다. 하지만, 다른 레벨의 레이드(RAID) 방식에서는 소실된 페이지를 복구하기 위한 다양한 기법들이 적용될 수 있음은 잘 이해될 것이다.
S23 단계에서, 페이지들(P3, PTY3, P11)의 복구 연산을 통해서 리버스 맵 페이지(Reverse MP)가 복원된다. 복원된 리버스 맵 페이지(Reverse MP)는 RAID 스토리지 장치(200)나 호스트(100) 내의 별도의 저장 공간에 임시로 저장될 수 있을 것이다.
S24 단계에서, 호스트(100)는 복원된 리버스 맵 페이지(Reverse MP)와 맵핑 테이블(110)에서 유지되는 LBA 맵 페이지(LBA Map page)를 비교하여 유효 페이지와 무효 페이지를 식별할 수 있다. 선택된 스트라이프(ST2) 내의 제반 페이지들에 대한 유효 또는 무효 속성의 식별이 완료되면, 이후에는 앞서 설명된 도 7의 방식에 따라 레이드 리빌드 동작이 수행될 수 있다. 즉, 유효한 페이지들만이 선택되어 새로운 스트라이프(New stripe)로 카피될 것이다.
이상에서는 소실된 청크내에 유효 페이지와 무효 페이지를 식별하는 정보(예를 들면, 리버스 맵 페이지)가 저장된 경우, 이러한 정보를 최우선적으로 복구하는 동작이 설명되었다.
도 9는 도 5의 S140 단계를 좀더 구체적으로 보여주는 순서도이다. 도 9를 참조하면, 페이지의 유효성을 식별하기 위한 정보가 소실된 청크에 포함되는지가 먼저 검출될 것이다. S130 단계에서, 리빌드 동작을 적용하기 위한 스트라이프가 선택되면 S141 단계가 이어진다.
S141 단계에서, 호스트(100)는 선택된 스트라이프의 주소 맵핑 정보를 읽어내기 위한 시도를 할 것이다. 이때, 주소 맵핑 정보에는 논리-물리 변환 맵(L2P Map page)과 물리-논리 변환 맵(P2L Map page)이 포함된다. 논리-물리 변환 맵(L2P Map page)에 대응하는 LBA 맵 페이지는 호스트(100)에서 지속적으로 업데이트되는 맵핑 정보이다. 하지만, 물리-논리 변환 맵(P2L Map page)에 대응하는 리버스 맵 페이지는 대응하는 스트라이프가 존재하는 시점까지는 업데이트되지 않는다. 이때, 호스트(100)는 물리-논리 변환 맵(P2L Map page)가 소실된 청크에 포함되는지 판단한다. 즉, 리버스 맵 페이지가 페일 디스크에 저장되어 있는지 호스트(100)가 판단할 것이다. 만일, 물리-논리 변환 맵(P2L Map page)이 소실된 청크에 저장되어 있는 것으로 판단되면(Yes 방향), 절차는 S142 단계로 이동한다. 하지만, 물리-논리 변환 맵(P2L Map page)이 소실되지 않은 정상적인 청크에 저장되어 있는 것으로 판단되면(No 방향), 절차는 S143 단계로 이동한다.
S142 단계에서, 호스트(100)는 도 8에서 설명된 방식에 따라 물리-논리 변환 맵(P2L Map page)을 최우선적으로 복구한다. 즉, 호스트(100)는 소실되지 않은 청크들의 페이지들을 읽어내어 리버스 맵 페이지(Reverse MP)를 복구하기 위한 연산을 수행할 것이다.
S143 단계에서, 호스트(100)는 논리-물리 변환 맵(L2P Map page)과 물리-논리 변환 맵(P2L Map page)을 비교하여 선택된 스트라이프 내에서 유효한 페이지들을 식별할 것이다. 즉, 논리-물리 변환 맵(L2P Map page)의 페이지 엔트리 중에서 물리-논리 변환 맵(P2L Map page)의 페이지들과 다른 값을 갖는 페이지는 무효 페이지로 판단할 수 있다. 논리-물리 변환 맵(L2P Map page)의 페이지 엔트리 중에서 물리-논리 변환 맵(P2L Map page)의 페이지들과 동일한 값으로 유지되는 페이지들은 유효한 페이지로 판단될 수 있다. 선택된 스트라이프의 페이지들 중에서 호스트(100)는 유효한 페이지들을 선택한다.
S144 단계에서, 호스트(100)는 선택된 유효 페이지의 위치가 소실된 청크에 해당하는지 판단한다. 소실된 청크에 포함되는 유효 페이지는 RAID 리빌드 연산을 통해서 복구되어야 하기 때문이다. 즉, 선택된 페이지가 소실된 청크에 포함되는 경우(Yes 방향), 절차는 S145 단계로 이동한다. 반면, 선택된 페이지가 소실된 청크가 아닌 정상적인 청크에 포함되는 경우(No 방향), 절차는 S146 단계로 이동한다.
S145 단계에서, 호스트(100)는 선택된 페이지를 복구하기 위한 레이드 리빌드(RAID rebuild) 동작을 수행한다. 즉, 호스트(100)는 소실되지 않은 청크들로부터 패리티를 포함하는 페이지들을 읽어내고, 읽혀진 페이지 데이터에 대해 레이드 리빌드 연산을 적용할 것이다. 그러면, 소실된 청크에 포함되는 유효 페이지의 복원이 완료된다. 복원된 페이지는 일시적으로 예비된 메모리(예를 들면, RAM)에 저장될 것이다.
S146 단계에서, 호스트(100)는 선택된 페이지가 소실되지 않은 청크들에 포함되는 유효한 페이지로 인식할 것이다. 그러면, 호스트(100)는 선택된 페이지를 별도의 처리없이 직접 새로운 스트라이프(New stripe)에 카피하는 것으로 지정할 것이다.
S147 단계에서, 호스트(100)는 선택된 스트라이프에서 모든 유효 페이지들이 선택되었는지 판단한다. 만일, 선택된 스트라이프에 유효 페이지가 더 존재하는 경우(No 방향), 절차는 S143 단계로 이동할 것이다. S143 단계에서 새로운 유효 페이지에 대한 선택이 수행될 것이다. 반면, 선택된 스트라이프에 유효 페이지가 더 이상 존재하지 않는 경우(Yes 방향), 절차는 S148 단계로 이동할 것이다.
S148 단계에서, 호스트(100)는 선택된 스트라이프 내의 모든 유효 페이지들을 예비된 새로운 스트라이프(New stripe)로 카피할 것이다. 이때, 유효 페이지에는 패리티 청크에 속하는 페이지들이나 물리-논리 변환 맵(P2L Map page)은 포함되지 않는다. 새로운 스트라이프(New stripe)로 카피를 위해, 호스트(100)는 우선 모든 유효 페이지들을 사용하여 스트라이프 단위의 데이터를 구성한다. 그리고 호스트(100)는 유효 페이지들을 청크 단위로 할당하고, 각 청크들에 대응하는 패리티 청크를 생성할 수 있다. 더불어, 호스트(100)는 새로운 스트라이프에 대응하는 물리-논리 변환 맵(P2L Map page, 또는 리버스 맵 페이지)을 생성할 것이다. 유효 페이지들, 패리티 청크, 그리고 물리-논리 변환 맵(P2L Map page)은 리페어 디스크를 이용하는 새로운 스트라이프에 기입될 것이다.이상의 순서도를 통해서 본 발명의 유효 또는 무효 페이지를 식별하기 위한 물리-논리 변환 맵(P2L Map page) 또는 리버스 맵 페이지의 복구 및 관리 방법이 설명되었다. 본 발명의 레이드 리빌드 동작의 실행을 위해서 가장 우선되는 것이 논리-물리 변환 맵(L2P Map page)과 물리-논리 변환 맵(P2L Map page)의 획득이다. RAID 스토리지 장치(200)에 저장된 물리-논리 변환 맵(P2L Map page)이 소실된 청크에 위치하는 경우에는, 물리-논리 변환 맵(P2L Map page)의 복구가 선행되어야 하는 이유이다.
도 10은 본 발명의 다른 실시 예에 따른 레이드 스토리지 시스템을 보여주는 블록도이다. 도 10을 참조하면, 레이드 스토리지 시스템은 호스트(300)와 레이드 스토리지 장치(400)를 포함한다. 레이드 스토리지 장치(400)는 본 발명의 실시 예에 따른 레이드 리빌드 동작을 수행하는 스토리지 컨트롤러(410), 버퍼(420), 그리고 불휘발성 메모리 장치들(430, 440, 450)을 포함할 수 있다.
호스트(300)는 RAID 스토리지 장치(400)에 데이터를 기입하거나, RAID 스토리지 장치(400)에 저장된 데이터를 읽어낸다. 호스트(300)는 RAID 스토리지 장치(400)에 명령어, 어드레스, 그리고 데이터를 제공할 수 있다. 호스트(300)는 RAID 스토리지 장치(400)로부터 명령어나 어드레스를 사용하여 데이터를 요청할 수 있다. 예로서, 호스트(300)는 적어도 하나의 프로세서를 포함할 수 있다. 호스트(300)는 프로세서 그 자체이거나, 프로세서를 포함하는 전자 장치 또는 서버와 같은 시스템일 수 있다.
스토리지 컨트롤러(410)는 불휘발성 메모리 장치들(430, 440, 450)에 대해서 칩(Chip)이나 다이(Die) 단위의 레이드(RAID) 방식으로 관리할 수 있다. 스토리지 컨트롤러(410)는 스트라이프를 구성하는 어느 하나의 불휘발성 메모리 장치에 페일(Failure)이 발생하는 경우, 본 발명의 실시 예에 따른 레이드 리빌드 동작을 수행할 수 있다. 즉, 스트라이프의 복구시에 유효 페이지들이 선택되고, 새로운 스트라이프에 카피될 수 있다. 스토리지 컨트롤러(410)는 본 발명의 레이드 리빌드 동작을 수행하는 레이드 엔진(412)과 로그 구조 레이드(Log-structured RAID) 방식의 주소 맵핑을 지원하는 맵핑 테이블(414)을 포함할 수 있다.
레이드 엔진(412)은 불휘발성 메모리 장치들(430, 440, 450) 중 어느 하나에 장치 페일이 발생하는 경우, 스트라이프를 복구할 때, 유효 페이지들에 대해서만 새로운 스트라이프에 카피하는 레이드 리빌드 동작을 수행할 수 있다. 레이드 엔진(412)은 맵핑 테이블(414)의 맵핑 정보를 참조하거나, 불휘발성 메모리 장치들(430, 440, 450)에 저장된 리버스 맵 페이지를 독출하여 상술한 본 발명의 레이드 리빌드 동작을 수행할 수 있다. 예컨대, 레이드 엔진(412)은 논리-물리 변환 맵(L2P Map page)과 물리-논리 변환 맵(P2L Map page)을 비교하여 동일한 엔트리를 가지는 페이지들을 유효 페이지로 판단할 수 있다. 그리고 레이드 엔진(412)은 유효 페이지들만을 선택하여 레이드 리빌드 동작시에 새로운 스트라이프에 카피함으로써 가비지 컬렉션(Garbage Collection)의 기능까지 수행할 수 있다.
도 11은 도 10의 레이드 엔진(412)에 의한 본 발명의 레이드 리빌드 동작을 보여주는 도면이다. 도 11을 참조하면, 레이드 엔진(412)은 불휘발성 메모리 장치들(431, 441, 451, 461)에 대해 장치 단위(또는 칩 단위)의 레이드(RAID) 동작을 제어할 수 있다.
레이드 엔진(412)은 데이터를 스트라이프(Stripe) 단위로 처리한다. 예를 들면, 하나의 스트라이프는 복수의 불휘발성 메모리 장치들(431, 441, 451, 461) 각각에 저장되는 청크들(Chunks)로 분리될 것이다. 청크들(Chunks) 중에는 나머지 청크들을 사용하여 생성한 RAID 패리티(Pa, Pb, Pc, Pd)가 하나 또는 그 이상이 포함될 수 있다. 만일, 어느 하나의 불휘발성 메모리 장치가 페일로 검출되면, 레이드 엔진(412)는 RAID 리빌드 동작을 수행하여 하나의 스트라이프들을 복구할 수 있다. 여기서, RAID 패리티들(Pa, Pb, Pc, Pd)이 어느 하나의 장치에 집중적으로 저장되는 것으로 도시되어 있으나, 본 발명은 여기에 국한되지 않는다. 즉, RAID 패리티(Pa, Pb, Pc, Pd)은 복수의 불휘발성 메모리 장치들(431, 441, 451, 461) 각각에 분산되어 저장될 수도 있을 것이다.
레이드 엔진(412)은 호스트(300)로부터 쓰기 요청되는 데이터를 청크(Chunk) 단위로 분할한다. 레이드 엔진(412)은 분할된 청크(Chunk)들을 여러 스토리지에 분산하여 저장할 수 있다. 분할된 청크(Chunk)들 중에서는 하나 이상의 패리티 청크(Chunk)가 포함될 수 있을 것이다. 복수의 장치에서 동시에 에러가 발생하는 확률은 거의 희박하기 때문에, 레이드 엔진(412)에 의해 데이터의 신뢰성을 향상시킬 수 있다.
이러한 레이드(RAID) 구성이 채용되는 경우, 하나의 불휘발성 메모리 장치에 저장된 하나의 청크(Chunk)가 소실되더라도, 소실된 청크(Chunk)는 레이드 리빌드 동작을 통해서 복구될 수 있다. 특히, 본 발명의 레이드 엔진(412)은 로그 구조 방식으로 스트라이프들의 주소를 맵핑할 수 있다. 그리고 불휘발성 메모리 장치(441)에 장치 페일이 발생하는 경우, 맵핑 테이블(414)의 논리-물리 변환 맵(L2P Map page)과 물리-논리 변환 맵(P2L Map page)을 비교하여 유효 페이지를 선택할 수 있다. 레이드 엔진(412)은 유효 페이지만을 선택하여 새로운 스트라이프에 카피함으로써 레이드 리빌드와 가비지 컬렉션 동작을 병행하여 처리할 수 있다.
도 12는 본 발명의 스토리지에 포함되는 메모리 블록들 중 제 1 메모리 블록의 예를 보여주는 회로도이다. 도 12를 참조하면, 제 1 메모리 블록(BLK1)은 복수의 셀 스트링들(CS11, CS12, CS21, CS22)을 포함한다. 복수의 셀 스트링들(CS11, CS12, CS21, CS22)은 행 방향(row direction) 및 열 방향(column direction)을 따라 배치되어 행들 및 열들을 형성할 수 있다.
예를 들어, 셀 스트링들(CS11, CS12)은 스트링 선택 라인들(SSL1a, SSL1b)와 연결되어, 제 1 행을 형성할 수 있다. 셀 스트링들(CS21, CS22)은 스트링 선택 라인들(SSL2a, SSL2b)와 연결되어 제 2 행을 형성할 수 있다.
예를 들어, 셀 스트링들(CS11, CS21)은 제 1 비트라인(BL1)과 연결되어 제 1 열을 형성할 수 있다. 셀 스트링들(CS12, CS22)은 제 2 비트라인(BL2)과 연결되어 제 2 열을 형성할 수 있다.
복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각은 복수의 셀 트랜지스터들을 포함한다. 예를 들어, 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각은 스트링 선택된 트랜지스터들(SSTa, SSTb), 복수의 메모리 셀들(MC1~MC8), 접지 선택된 트랜지스터들(GSTa, GSTb), 및 더미 메모리 셀들(DMC1, DMC2)을 포함할 수 있다. 예시적으로, 복수의 셀 스트링들(CS11, CS12, CS21, CS22)에 포함된 복수의 셀 트랜지스터들 각각은 전하 트랩형 플래시(CTF; charge trap flash) 메모리 셀일 수 있다.
복수의 메모리 셀들(MC1~MC8)은 직렬 연결되며, 행 방향 및 열 방향에 의해 형성된 평명과 수직한 방향인 높이 방향(height direction)으로 적층된다. 스트링 선택된 트랜지스터들(SSTa, SSTb)은 직렬 연결되고, 직렬 연결된 스트링 선택된 트랜지스터들(SSTa, SSTb)은 복수의 메모리 셀들(MC1~MC8) 및 비트라인(BL) 사이에 제공된다. 접지 선택된 트랜지스터들(GSTa, GSTb)은 직렬 연결되고, 직렬 연결된 접지 선택된 트랜지스터들(GSTa, GSTb)은 복수의 메모리 셀들(MC1~MC8) 및 공통 소스 라인(CSL) 사이에 제공된다.
예시적으로, 복수의 메모리 셀들(MC1~MC8) 및 접지 선택된 트랜지스터들(GSTa, GSTb) 사이에 제 1 더미 메모리 셀(DMC1)이 제공될 수 있다. 예시적으로, 복수의 메모리 셀들(MC1~MC8) 및 스트링 선택된 트랜지스터들(SSTa, SSTb) 사이에 제 2 더미 메모리 셀(DMC2)이 제공될 수 있다.
셀 스트링들(CS11, CS12, CS21, CS22)의 접지 선택된 트랜지스터들(GSTa, GSTb)은 접지 선택 라인(GSL)에 공통으로 연결될 수 있다. 예시적으로, 동일한 행의 접지 선택된 트랜지스터들은 동일한 접지 선택 라인에 연결될 수 있고, 다른 행의 접지 선택된 트랜지스터들은 다른 접지 선택 라인에 연결될 수 있다. 예를 들어, 제 1 행의 셀 스트링들(CS11, CS12)의 제 1 접지 선택된 트랜지스터들(GSTa)은 제1 접지 선택 라인에 연결될 수 있고, 제2 행의 셀 스트링들(CS21, CS22)의 제 1 접지 선택된 트랜지스터들(GSTa)은 제 2 접지 선택 라인에 연결될 수 있다.
예시적으로, 도면에 도시되지는 않았으나, 기판(미도시)으로부터 동일한 높이에 제공되는 접지 선택된 트랜지터들은 동일한 접지 선택 라인에 연결될 수 있고, 다른 높이에 제공되는 접지 선택된 트랜지스터들은 다른 접지 선택 라인에 연결될 수 있다. 예를 들어, 셀 스트링들(CS11, CS12, CS21, CS22)의 제 1 접지 선택된 트랜지스터들(GSTa)은 제 1 접지 선택 라인에 연결되고, 제 2 접지 선택 트랜지스터들(GSTb)은 제 2 접지 선택 라인에 연결될 수 있다.
기판(또는 접지 선택된 트랜지스터(GSTa, GSTb)로부터 동일한 높이의 메모리 셀들은 동일한 워드라인에 공통으로 연결되고, 서로 다른 높이의 메모리 셀들은 서로 다른 워드라인에 연결된다. 예를 들어, 셀 스트링들(CS11, CS12, CS21, CS22)의 제 1 내지 제 8 메모리 셀들(MC8)은 제 1 내지 제 8 워드라인들(WL1~WL8)에 각각 공통으로 연결된다.
동일한 높이의 제 1 스트링 선택된 트랜지스터들(SSTa) 중 동일한 행의 스트링 선택된 트랜지스터들은 동일한 스트링 선택 라인과 연결되고, 다른 행의 스트링 선택된 트랜지스터들은 다른 스트링 선택 라인과 연결된다. 예를 들어, 제 1 행의 셀 스트링들(CS11, CS12)의 제 1 스트링 선택된 트랜지스터들(SSTa)은 스트링 선택 라인(SSL1a)과 공통으로 연결되고, 제 2 행의 셀 스트링들(CS21, CS22)의 제 1 스트링 선택된 트랜지스터들(SSTa)은 스트링 선택 라인(SSL1a)과 공통으로 연결된다.
마찬가지로, 동일한 높이의 제 2 스트링 선택된 트랜지스터들(SSTb) 중 동일한 행의 스트링 선택된 트랜지스터들은 동일한 스트링 선택 라인과 연결되고, 다른 행의 스트링 선택된 트랜지스터들은 다른 스트링 선택 라인과 연결된다. 예를 들어, 제 1 행의 셀 스트링들(CS11, CS12)의 제 2 스트링 선택된 트랜지스터들(SSTb)은 스트링 선택 라인(SSL1b)과 공통으로 연결되고, 제 2 행의 셀 스트링들(CS21, CS22)의 제 2 스트링 선택된 트랜지스터들(SSTb)은 스트링 선택 라인(SSL2b)과 공통으로 연결된다.
비록 도면에 도시되지는 않았으나, 동일한 행의 셀 스트링들의 스트링 선택된 트랜지스터들은 동일한 스트링 선택 라인에 공통으로 연결될 수 있다. 예를 들어, 제 1 행의 셀 스트링들(CS11, CS12)의 제 1 및 제 2 스트링 선택된 트랜지스터들(SSTa, SSTb)은 동일한 스트링 선택 라인에 공통으로 연결될 수 있다. 제 2 행의 셀 스트링들(CS21, CS22)의 제 1 및 제 2 스트링 선택된 트랜지스터들(SSTa, SSTb)은 동일한 스트링 선택 라인에 공통으로 연결될 수 있다.
예시적으로, 동일한 높이의 더미 메모리 셀들은 동일한 더미 워드라인과 연결되고, 다른 높이의 더미 메모리 셀들은 다른 더미 워드라인과 연결된다. 예를 들어, 제 1 더미 메모리 셀들(DMC1)은 제 1 더미 워드라인(DWL1)과 연결되고, 제 2 더미 메모리 셀들(DMC2)은 제 2 더미 워드라인(DWL2)과 연결된다.
제 1 메모리 블록(BLK1)에서, 읽기 및 쓰기는 행 단위로 수행될 수 있다. 예를 들어, 스트링 선택 라인들(SSL1a, SSL1b, SSL2a, SSL2b)에 의해 메모리 블록(BLKa)의 하나의 행이 선택될 수 있다. 예를 들어, 스트링 선택 라인들(SSL1a, SSL1b)이 턴-온 전압이 공급되고 스트링 선택 라인들(SSL2a, SSL2b)에 턴-오프 전압이 공급될 때, 제 1 행의 셀 스트링들(CS11, CS12)이 비트 라인들(BL1, BL2)에 연결된다. 스트링 선택 라인들(SSL2a, SSL2b)에 턴-온 전압이 공급되고 스트링 선택 라인들(SSL1a, SSL1B)에 턴-오프 전압이 공급될 때, 제 2 행의 셀 스트링들(CS21, CS22)이 비트 라인들(BL1, BL2)에 연결되어 구동된다. 워드라인을 구동함으로써 구동되는 행의 셀 스트링의 메모리 셀들 중 동일한 높이의 메모리 셀들이 선택된다. 선택된 메모리 셀들에서 읽기 및 쓰기 동작이 수행될 수 있다. 선택된 메모리 셀들은 물리 페이지 단위를 형성할 수 있다.
제 1 메모리 블록(BLK1)에서, 소거는 메모리 블록 단위 또는 서브 블록의 단위로 수행될 수 있다. 메모리 블록 단위로 소거가 수행될 때, 제 1 메모리 블록(BLK1)의 모든 메모리 셀들(MC)이 하나의 소거 요청에 따라 동시에 소거될 수 있다. 서브 블록의 단위로 수행될 때, 제1 메모리 블록(BLK1)의 메모리 셀들(MC) 중 일부는 하나의 소거 요청에 따라 동시에 소거되고, 나머지 일부는 소거 금지될 수 있다. 소거되는 메모리 셀들에 연결된 워드 라인에 저전압(예를 들어, 접지 전압)이 공급되고, 소거 금지된 메모리 셀들에 연결된 워드 라인은 플로팅될 수 있다.
도 12에 도시된 제 1 메모리 블록(BLK1)은 예시적인 것이며, 셀 스트링들의 개수는 증가 또는 감소할 수 있으며, 셀 스트링들의 개수에 따라 셀 스트링들이 구성하는 행들 및 열들의 개수는 증가 또는 감소할 수 있다. 또한, 제 1 메모리 블록(BLK1)의 셀 트랜지스터들(GST, MC, DMC, SST 등)의 개수들는 각각 증가 또는 감소될 수 있으며, 셀 트랜지스터들의 개수들에 따라 제 1 메모리 블록(BLK1)의 높이가 증가 또는 감소할 수 있다. 또한, 셀 트랜지스터들의 개수들에 따라 셀 트랜지스터들과 연결된 라인들(GSL, WL, DWL, SSL 등)의 개수들이 증가 또는 감소될 수 있다.
도 13은 본 발명의 실시 예들에 따른 불휘발성 메모리 시스템이 적용된 메모리 카드 시스템을 보여주는 블록도이다. 도 13을 참조하면, 메모리 카드 시스템(1000)은 메모리 컨트롤러(1100), 불휘발성 메모리(1200), 및 커넥터(1300)를 포함한다.
메모리 컨트롤러(1100)는 불휘발성 메모리(1200)와 연결된다. 메모리 컨트롤러(1100)는 불휘발성 메모리(1200)를 액세스하도록 구성된다. 예를 들어, 메모리 컨트롤러(1100)는 불휘발성 메모리(1200)의 읽기, 쓰기, 소거, 그리고 배경(background) 동작을 제어하도록 구성된다. 배경(background) 동작은 마모도 관리, 가비지 콜렉션 등과 같은 동작들을 포함한다. 예시적으로, 메모리 컨트롤러(1100)는 복수의 칩들로 구성되는 불휘발성 메모리 장치를 레이드(RAID) 방식으로 관리할 수 있다. 이때, 어느 하나의 칩의 고장으로 접근이 불가한 경우, 메모리 컨트롤러(110)는 본 발명의 레이드 리빌드 동작을 수행한다. 즉, 고장난 칩에 대응하는 청크를 복구할 때, 유효 페이지들만을 복구하고, 무효 페이지들에 대해서는 특별한 경우를 제외하고는 복구하지 않는다. 특별한 경우는 선택된 스트라이프에서 페이지들의 유효성을 판단하는 데이터가 저장된 페이지의 복구에 해당한다.
더불어, 메모리 컨트롤러(1100)는 불휘발성 메모리(1200) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 메모리 컨트롤러(1100)는 불휘발성 메모리(1200)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다. 예시적으로, 메모리 컨트롤러(1100)는 램(RAM, Random Access Memory), 프로세싱 유닛(processing unit), 호스트 인터페이스(host interface), 메모리 인터페이스(memory interface), 에러 정정부와 같은 구성 요소들을 포함할 수 있다.
메모리 컨트롤러(1100)는 커넥터(1300)를 통해 외부 장치와 통신할 수 있다. 메모리 컨트롤러(1100)는 특정한 통신 규격에 따라 외부 장치(예를 들어, 호스트)와 통신할 수 있다. 예시적으로, 메모리 컨트롤러(1100)는 USB (Universal Serial Bus), MMC (multimedia card), eMMC(embedded MMC), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer small interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage), NVMe (Nonvolatile Memory express) 등과 같은 다양한 통신 규격들 중 적어도 하나를 통해 외부 장치와 통신하도록 구성된다. 예시적으로, 상술된 통신 규격들에 의해 정의된 쓰기 커맨드는 쓰기 데이터의 사이즈 정보를 포함할 수 있다.
불휘발성 메모리(1200)는 EPROM (Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM), STT-MRAM(Spin-Torque Magnetic RAM) 등과 같은 다양한 불휘발성 메모리 소자들로 구현될 수 있다.
예시적으로, 메모리 컨트롤러(1100) 및 불휘발성 메모리(1200)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 메모리 컨트롤러(1100) 및 불휘발성 메모리(1200)는 하나의 반도체 장치로 집적되어 솔리드 스테이트 드라이브(SSD, Solid State Drive)를 구성할 수 있다. 메모리 컨트롤러(1100) 및 불휘발성 메모리(1200)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 메모리 컨트롤러(1100) 및 불휘발성 메모리(1200)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro, eMMC), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
도 14는 본 발명에 따른 불휘발성 메모리 시스템이 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 블록도이다. 도 14를 참조하면, SSD 시스템(2000)은 호스트(2100) 및 SSD(2200)를 포함한다. SSD(2200)는 신호 커넥터(2001)를 통해 호스트(2100)와 신호(SIG)를 주고 받고, 전원 커넥터(2002)를 통해 전원(PWR)을 입력받는다. SSD(2200)는 SSD 컨트롤러(2210), 복수의 플래시 메모리들(2221~222n), 보조 전원 장치(2230), 및 버퍼 메모리(2240)를 포함한다.
SSD 컨트롤러(2210)는 호스트(2100)로부터 수신된 신호(SIG)에 응답하여 복수의 플래시 메모리들(2221~222n)을 제어할 수 있다. 예시적으로, SSD 컨트롤러(2210)는 도 10을 참조하여 설명된 레이드 리빌드 동작을 수행할 수 있다. SSD 컨트롤러(2210)는 어느 하나의 플래시 메모리에 대한 접근이 불가한 경우, 본 발명의 레이드 리빌드 동작을 수행한다. 즉, SD 컨트롤러(2210)는 접근 불가한 플래시 메모리에 대응하는 청크를 복구할 때, 유효 페이지들만을 복구하고, 무효 페이지들에 대해서는 특별한 경우를 제외하고는 복구하지 않는다. 특별한 경우는 선택된 스트라이프에서 페이지들의 유효성을 판단하는 데이터가 저장된 페이지에 해당한다.
보조 전원 장치(2230)는 전원 커넥터(2002)를 통해 호스트(2100)와 연결된다. 보조 전원 장치(2230)는 호스트(2100)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 보조 전원 장치(2230)는 호스트(2100)로부터의 전원 공급이 원활하지 않을 경우, SSD 시스템(2000)의 전원을 제공할 수 있다. 예시적으로, 보조 전원 장치(2230)는 SSD(2200) 내에 위치할 수도 있고, SSD(2200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(2230)는 메인 보드에 위치하며, SSD(2200)에 보조 전원을 제공할 수도 있다.
버퍼 메모리(2240)는 SSD(2200)의 버퍼 메모리로 동작한다. 예를 들어, 버퍼 메모리(2240)는 호스트(2100)로부터 수신된 데이터 또는 복수의 플래시 메모리들(2221~222n)로부터 수신된 데이터를 임시 저장하거나, 플래시 메모리들(2221~222n)의 메타 데이터(예를 들어, 매핑 테이블)를 임시 저장할 수 있다. 버퍼 메모리(2240)는 DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM, SRAM 등과 같은 휘발성 메모리 또는 FRAM ReRAM, STT-MRAM, PRAM 등과 같은 불휘발성 메모리들을 포함할 수 있다.
도 15는 본 발명에 따른 불휘발성 메모리 시스템이 적용된 사용자 시스템을 보여주는 블록도이다. 도 15를 참조하면, 사용자 시스템(3000)은 애플리케이션 프로세서(3100), 메모리 모듈(3200), 네트워크 모듈(3300), 스토리지 모듈(3400), 및 사용자 인터페이스(3500)를 포함한다.
애플리케이션 프로세서(3100)는 사용자 시스템(3000)에 포함된 구성 요소들, 운영체제(OS; Operating System)를 구동시킬 수 있다. 예시적으로, 애플리케이션 프로세서(3100)는 사용자 시스템(3000)에 포함된 구성 요소들을 제어하는 컨트롤러들, 인터페이스들, 그래픽 엔진 등을 포함할 수 있다. 애플리케이션 프로세서(3100)는 시스템-온-칩(SoC; System-on-Chip)으로 제공될 수 있다.
메모리 모듈(3200)은 사용자 시스템(3000)의 주메모리, 동작 메모리, 버퍼 메모리 또는 캐쉬 메모리로 동작할 수 있다. 메모리 모듈(3200)은 DRAM, SDRAM, DDR SDRAM, DDR2 SDRAM, DDR3 SDRAM, LPDDR SDARM, LPDDR3 SDRAM, LPDDR3 SDRAM 등과 같은 휘발성 랜덤 액세스 메모리 또는 PRAM, ReRAM, MRAM, FRAM 등과 같은 불휘발성 랜덤 액세스 메모리를 포함할 수 있다.
네트워크 모듈(3300)은 외부 장치들과 통신을 수행할 수 있다. 예시적으로, 네트워크 모듈(3300)은 CDMA(Code Division Multiple Access), GSM(Global System for Mobile communication), WCDMA(wideband CDMA), CDMA-2000, TDMA(Time Dvision Multiple Access), LTE(Long Term Evolution), Wimax, WLAN, UWB, 블루투스, WI-DI 등과 같은 무선 통신을 지원할 수 있다. 예시적으로, 네트워크 모듈(3300)은 애플리케이션 프로세서(3100)에 포함될 수 있다.
스토리지 모듈(3400)은 데이터를 저장할 수 있다. 예를 들어, 스토리지 모듈(3400)은 애플리케이션 프로세서(3100)로부터 수신한 데이터를 저장할 수 있다. 또는 스토리지 모듈(3400)은 스토리지 모듈(3400)에 저장된 데이터를 애플리케이션 프로세서(3100)로 전송할 수 있다. 예시적으로, 스토리지 모듈(3400)은 PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), NAND flash, NOR flash, 3차원 구조의 NAND 플래시 등과 같은 불휘발성 반도체 메모리 소자로 구현될 수 있다.
예시적으로, 스토리지 모듈(3400)은 도 1 또는 10을 참조하여 설명된 레이드 리빌드 동작을 수행할 수 있다. 스토리지 모듈(3400)은 애플리케이션 프로세서(3100)와 미리 정해진 인터페이스를 기반으로 통신할 수 있다. 스토리지 모듈(3400)은 애플리케이션 프로세서(3100)로부터 수신한 쓰기 커맨드를 기반으로 가비지 콜렉션의 수행 시간을 조절할 수 있다.
사용자 인터페이스(3500)는 애플리케이션 프로세서(3100)에 데이터 또는 명령어를 입력하거나 또는 외부 장치로 데이터를 출력하는 인터페이스들을 포함할 수 있다. 예시적으로, 사용자 인터페이스(3500)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 압전 소자 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(3500)는 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 표시 장치, AMOLED (Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.
이상에서와 같이 도면과 명세서에서 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 레이드 방식으로 제어되는 복수의 스토리지 장치들의 관리 방법에 있어서:
    상기 복수의 스토리지 장치들 중에서 페일 디스크를 검출하는 단계;
    상기 검출 결과에 따라 복수의 스트라이프들 중 어느 하나를 선택하는 단계;
    주소 맵핑 정보를 참조하여 상기 선택된 스트라이프의 정상 청크에 포함된 유효 페이지와 상기 페일 디스크에 맵핑된 소실 청크의 유효 페이지를 식별하는 단계;
    상기 식별된 유효 페이지에 대한 정보를 참조하여, 상기 선택된 스트라이프에 포함되는 청크들 중 상기 소실 청크의 유효 페이지를 복구하는 단계; 그리고
    상기 복구된 소실 청크의 유효 페이지와 상기 정상 청크의 유효 페이지들을 새로운 스트라이프에 카피하는 단계를 포함하는 관리 방법.
  2. 제 1 항에 있어서,
    상기 주소 맵핑 정보는 상기 복수의 스트리지 장치들의 물리 영역에 순차적으로 데이터를 기입하는 로그 구조 기반 레이드(RAID) 기법에 따라 관리되는 관리 방법.
  3. 제 2 항에 있어서,
    상기 주소 맵핑 정보는 상기 선택된 스트라이프에 포함되는 페이지들의 논리 주소를 물리 주소로 맵핑하는 제 1 맵 페이지와, 상기 선택된 스트라이프에 포함되는 페이지들의 상기 물리 주소를 상기 논리 주소로 맵핑하는 제 2 맵 페이지를 포함하는 관리 방법.
  4. 제 3 항에 있어서,
    상기 제 1 맵 페이지는 호스트의 맵핑 테이블로부터 획득되고, 상기 제 2 맵 페이지는 상기 선택된 스트라이프의 어느 하나의 페이지 영역으로부터 읽어오는 관리 방법.
  5. 제 3 항에 있어서,
    상기 유효 페이지들은 상기 제 1 맵 페이지와 상기 제 2 맵 페이지의 엔트리 값이 동일한 페이지에 대응하는 관리 방법.
  6. 제 3 항에 있어서,
    상기 제 2 맵 페이지가 상기 소실 청크에 저장되어 있는 것으로 판정되는 경우, 유효 페이지들을 식별하기 이전에 상기 제 2 맵 페이지를 레이드 리빌드 동작을 통해서 복구하는 단계를 더 포함하는 관리 방법.
  7. 제 6 항에 있어서,
    상기 복구된 제 2 맵 페이지와 상기 제 1 맵 페이지를 비교하여 상기 유효 페이지를 식별하는 관리 방법.
  8. 제 3 항에 있어서,
    상기 새로운 스트라이프에 유효 페이지들을 카피하는 단계에서, 상기 제 2 맵 페이지는 상기 새로운 스트라이프에 카피되지 않고 폐기되는 관리 방법.
  9. 제 1 항에 있어서,
    상기 정상 청크들 중에서 상기 소실 청크의 유효 페이지를 복구하기 위한 패리티 페이지들은 상기 새로운 스트라이프에 카피되지 않고 폐기되는 관리 방법.
  10. 제 1 항에 있어서,
    상기 복수의 스토리지 장치들 중 적어도 하나는 3차원 메모리 어레이를 포함하는 불휘발성 메모리 장치들을 포함하는 관리 방법.
  11. 복수의 솔리드 스테이트 드라이브; 그리고
    상기 복수의 솔리드 스테이트 드라이브와 호스트를 연결하는 호스트 인터페이스를 포함하되,
    상기 복수의 솔리드 스테이트 드라이브 중 어느 하나의 페일 디스크에 포함되는 소실 청크를 패리티 청크를 사용하여 복구하는 레이드 리빌드 동작시 상시 소실 청크의 페이지들 중 유효 페이지들만이 복구되는 레이드(RAID) 스토리지 장치.
  12. 제 11 항에 있어서,
    상기 유효 페이지들은 로그 구조 기반의 레이드 기법으로 운영되는 주소 맵핑 정보를 참조하여 선택되는 레이드(RAID) 스토리지 장치.
  13. 제 12 항에 있어서,
    상기 주소 맵핑 정보는 스트라이프에 포함되는 페이지들의 논리 주소를 물리 주소로 맵핑하는 제 1 맵 페이지와, 상기 스트라이프에 포함되는 페이지들의 상기 물리 주소를 상기 논리 주소로 맵핑하는 제 2 맵 페이지를 포함하는 레이드(RAID) 스토리지 장치.
  14. 제 13 항에 있어서,
    상기 유효 페이지들은 상기 호스트에서 업데이트되는 제 1 맵 페이지와 상기 솔리드 스테이트 드라이브에 저장된 상기 제 2 맵 페이지를 비교하여 선택되는 레이드(RAID) 스토리지 장치.
  15. 제 14 항에 있어서,
    상기 제 2 맵 페이지가 상기 소실 청크에 포함되는 경우, 상기 제 2 맵 페이지에 대한 레이드 리빌드 동작을 통한 상기 제 2 맵 페이지의 복구가 상기 유효 페이지들의 식별에 우선되는 레이드(RAID) 스토리지 장치.
  16. 제 11 항에 있어서,
    상기 레이드 리빌드 동작은 상기 호스트에서 수행되는 레이드(RAID) 스토리지 장치.
  17. 제 11 항에 있어서,
    상기 레이드 리빌드 동작을 수행하는 스토리지 컨트롤러를 더 포함하는 레이드(RAID) 스토리지 장치.
  18. 복수의 솔리드 스테이트 드라이브의 관리 방법에 있어서:
    상기 복수의 솔리드 스테이트 드라이브를 로그 구조 레이드 방식으로 관리하기 위해 할당되는 복수의 스트라이프들 중 어느 하나를 선택하는 단계;
    상기 선택된 스트라이프에 포함되는 페이지들의 논리 주소를 물리 주소로 맵핑하는 제 1 맵 페이지와, 상기 선택된 스트라이프에 포함되는 페이지들의 상기 물리 주소를 상기 논리 주소로 맵핑하는 제 2 맵 페이지를 참조하여 상기 선택된 스트라이프의 정상 청크에 포함된 유효 페이지와 페일 디스크에 맵핑된 소실 청크의 유효 페이지를 식별하는 단계;
    상기 식별된 유효 페이지에 대한 정보를 참조하여, 상기 선택된 스트라이프에 포함되는 청크들 중 상기 소실 청크의 포함되는 유효 페이지를 복구하는 단계; 그리고
    상기 복구된 소실 청크의 유효 페이지와 상기 정상 청크의 유효 페이지들을 새로운 스트라이프에 카피하는 단계를 포함하는 관리 방법.
  19. 제 18 항에 있어서,
    상기 제 2 맵 페이지가 상기 소실 청크에 포함되는 경우, 레이드 리빌드 동작을 사용하여 상기 제 2 맵 페이지를 복구하는 단계를 더 포함하는 관리 방법.
  20. 제 19 항에 있어서,
    상기 정상 청크들에 포함된 페이지들 중에서 상기 소실 청크의 유효 페이지를 복구하기 위한 패리티 페이지들과, 상기 제 2 맵 페이지는 상기 새로운 스트라이프에 카피되지 않고 폐기되는 관리 방법.
KR1020160054793A 2016-05-03 2016-05-03 Raid 스토리지 장치 및 그것의 관리 방법 KR102580123B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160054793A KR102580123B1 (ko) 2016-05-03 2016-05-03 Raid 스토리지 장치 및 그것의 관리 방법
US15/435,401 US10282252B2 (en) 2016-05-03 2017-02-17 RAID storage device and method of management thereof
CN201710303478.5A CN107391027B (zh) 2016-05-03 2017-05-03 廉价磁盘冗余阵列存储设备及其管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160054793A KR102580123B1 (ko) 2016-05-03 2016-05-03 Raid 스토리지 장치 및 그것의 관리 방법

Publications (2)

Publication Number Publication Date
KR20170125178A true KR20170125178A (ko) 2017-11-14
KR102580123B1 KR102580123B1 (ko) 2023-09-20

Family

ID=60242574

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160054793A KR102580123B1 (ko) 2016-05-03 2016-05-03 Raid 스토리지 장치 및 그것의 관리 방법

Country Status (3)

Country Link
US (1) US10282252B2 (ko)
KR (1) KR102580123B1 (ko)
CN (1) CN107391027B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210028268A (ko) * 2018-09-05 2021-03-11 후아웨이 테크놀러지 컴퍼니 리미티드 하드 디스크 고장 처리 방법, 어레이 컨트롤러, 및 하드 디스크
US11036586B2 (en) 2019-04-02 2021-06-15 SK Hynix Inc. Storage device and operating method thereof

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170131796A (ko) * 2016-05-20 2017-11-30 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10241722B1 (en) * 2016-05-27 2019-03-26 Pavilion Data Systems, Inc. Proactive scheduling of background operations for solid state drives
US11797212B2 (en) * 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US10203903B2 (en) * 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US10310752B1 (en) * 2016-12-30 2019-06-04 EMC IP Holding Company LLC Extent selection with mapped raid
US10489245B2 (en) 2017-10-24 2019-11-26 Spin Memory, Inc. Forcing stuck bits, waterfall bits, shunt bits and low TMR bits to short during testing and using on-the-fly bit failure detection and bit redundancy remapping techniques to correct them
US10656994B2 (en) * 2017-10-24 2020-05-19 Spin Memory, Inc. Over-voltage write operation of tunnel magnet-resistance (“TMR”) memory device and correcting failure bits therefrom by using on-the-fly bit failure detection and bit redundancy remapping techniques
US10481976B2 (en) 2017-10-24 2019-11-19 Spin Memory, Inc. Forcing bits as bad to widen the window between the distributions of acceptable high and low resistive bits thereby lowering the margin and increasing the speed of the sense amplifiers
US10529439B2 (en) 2017-10-24 2020-01-07 Spin Memory, Inc. On-the-fly bit failure detection and bit redundancy remapping techniques to correct for fixed bit defects
CN108121509B (zh) * 2017-12-19 2020-10-16 深圳忆联信息系统有限公司 一种提高ssd读操作时raid效率的方法及ssd
CN110058953B (zh) * 2018-01-18 2023-02-28 伊姆西Ip控股有限责任公司 用于改变存储系统的类型的方法、设备和存储介质
CN110399310B (zh) * 2018-04-18 2021-08-31 杭州宏杉科技股份有限公司 一种存储空间的回收方法及装置
TWI705329B (zh) * 2018-06-25 2020-09-21 慧榮科技股份有限公司 實體儲存對照表產生裝置及方法以及電腦程式產品
TWI661302B (zh) * 2018-06-25 2019-06-01 慧榮科技股份有限公司 實體儲存對照表產生裝置及方法以及電腦程式產品
US10831603B2 (en) * 2018-08-03 2020-11-10 Western Digital Technologies, Inc. Rebuild assist using failed storage device
US10884662B2 (en) 2018-08-06 2021-01-05 Silicon Motion, Inc. Method for performing storage control in a storage server, associated memory device and memory controller thereof, and associated storage server
CN109213450B (zh) * 2018-09-10 2021-08-31 郑州云海信息技术有限公司 一种基于闪存阵列的关联元数据删除方法、装置及设备
US10607712B1 (en) * 2018-09-28 2020-03-31 Toshiba Memory Corporation Media error reporting improvements for storage drives
CN111124746B (zh) * 2018-10-30 2023-08-11 伊姆西Ip控股有限责任公司 管理独立盘冗余阵列的方法、设备和计算机可读介质
KR20200089547A (ko) * 2019-01-17 2020-07-27 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11074130B2 (en) * 2019-03-28 2021-07-27 International Business Machines Corporation Reducing rebuild time in a computing storage environment
EP3989069B1 (en) * 2019-07-22 2023-10-25 Huawei Technologies Co., Ltd. Data reconstruction method and apparatus, computer device, storage medium, and system
CN111581022B (zh) * 2020-04-30 2022-07-08 江苏芯盛智能科技有限公司 一种数据恢复方法及系统
US11734094B2 (en) 2020-08-19 2023-08-22 Micron Technology, Inc. Memory component quality statistics
US11437119B2 (en) 2020-08-19 2022-09-06 Micron Technology, Inc. Error read flow component
CN112181298B (zh) * 2020-09-25 2022-05-17 杭州宏杉科技股份有限公司 阵列访问方法、装置、存储设备及机器可读存储介质
CN114721585A (zh) * 2021-01-06 2022-07-08 伊姆西Ip控股有限责任公司 存储管理方法、设备和计算机程序产品
CN115563026B (zh) * 2022-12-07 2023-04-14 合肥康芯威存储技术有限公司 一种映射表的重建方法及数据存储设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090113624A (ko) * 2008-04-28 2009-11-02 엘지전자 주식회사 솔리드 스테이트 드라이브 및 그 동작 제어방법
KR20120055725A (ko) * 2009-09-29 2012-05-31 마이크론 테크놀로지, 인크. 스트라이프 기반 메모리 작동
KR20130084846A (ko) * 2012-01-18 2013-07-26 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법
KR20130128685A (ko) * 2012-05-17 2013-11-27 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
KR20140094278A (ko) * 2013-01-22 2014-07-30 에스케이하이닉스 주식회사 반도체 장치 및 이의 동작 방법
KR20150067583A (ko) * 2013-12-10 2015-06-18 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법
KR20150138528A (ko) * 2014-05-29 2015-12-10 삼성전자주식회사 플래시 메모리를 기반으로 하는 스토리지 시스템 및 그것의 동작 방법

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5278838A (en) 1991-06-18 1994-01-11 Ibm Corp. Recovery from errors in a redundant array of disk drives
KR19980047273U (ko) 1996-12-28 1998-09-25 양재신 전방 길이가 조절되는 자동차의 시트 쿠션
JP3788961B2 (ja) 2002-08-30 2006-06-21 株式会社東芝 ディスクアレイ装置及び同装置におけるレイドレベル変更方法
EP2299375A3 (en) * 2002-11-14 2012-02-01 EMC Corporation Systems and methods for restriping files in a distributed file system
US7313724B1 (en) 2004-07-01 2007-12-25 Symantec Operating Corporation Method and apparatus for synchronizing redundant data with a volume
US8751862B2 (en) 2007-08-10 2014-06-10 Dell Products L.P. System and method to support background initialization for controller that supports fast rebuild using in block data
US8195912B2 (en) 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US8402217B2 (en) * 2009-09-15 2013-03-19 Marvell International Ltd. Implementing RAID in solid state memory
KR101678868B1 (ko) * 2010-02-11 2016-11-23 삼성전자주식회사 플래시 주소 변환 장치 및 그 방법
US8825950B2 (en) 2011-03-01 2014-09-02 Lsi Corporation Redundant array of inexpensive disks (RAID) system configured to reduce rebuild time and to prevent data sprawl
US9026729B1 (en) * 2011-11-15 2015-05-05 Emc Corporation Data recovery after triple disk failure
KR101445025B1 (ko) * 2012-02-09 2014-09-26 서울시립대학교 산학협력단 신뢰성 있는 ssd를 위한 효율적인 raid 기법
KR101826051B1 (ko) 2012-02-27 2018-02-07 삼성전자주식회사 비휘발성 메모리 장치의 제어 방법 및 비휘발성 메모리 시스템
KR20130111821A (ko) * 2012-04-02 2013-10-11 삼성전자주식회사 Raid 메모리 시스템
KR102072829B1 (ko) 2013-06-14 2020-02-03 삼성전자주식회사 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법
US9529674B2 (en) * 2013-06-18 2016-12-27 Dell Product, LP Storage device management of unrecoverable logical block addresses for RAID data regeneration
SG11201601215QA (en) * 2013-08-27 2016-03-30 Agency Science Tech & Res Raid parity stripe reconstruction
US20150095696A1 (en) 2013-09-27 2015-04-02 Datadirect Networks, Inc. Second-level raid cache splicing
CN103678048B (zh) * 2013-11-29 2015-11-25 华为技术有限公司 独立磁盘冗余阵列修复方法、装置和存储设备
KR102368071B1 (ko) * 2014-12-29 2022-02-25 삼성전자주식회사 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템
US9569306B1 (en) * 2015-12-18 2017-02-14 International Business Machines Corporation Recovery of multi-page failures in non-volatile memory system

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090113624A (ko) * 2008-04-28 2009-11-02 엘지전자 주식회사 솔리드 스테이트 드라이브 및 그 동작 제어방법
KR20120055725A (ko) * 2009-09-29 2012-05-31 마이크론 테크놀로지, 인크. 스트라이프 기반 메모리 작동
KR20130084846A (ko) * 2012-01-18 2013-07-26 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법
KR20130128685A (ko) * 2012-05-17 2013-11-27 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
KR20140094278A (ko) * 2013-01-22 2014-07-30 에스케이하이닉스 주식회사 반도체 장치 및 이의 동작 방법
KR20150067583A (ko) * 2013-12-10 2015-06-18 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법
KR20150138528A (ko) * 2014-05-29 2015-12-10 삼성전자주식회사 플래시 메모리를 기반으로 하는 스토리지 시스템 및 그것의 동작 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210028268A (ko) * 2018-09-05 2021-03-11 후아웨이 테크놀러지 컴퍼니 리미티드 하드 디스크 고장 처리 방법, 어레이 컨트롤러, 및 하드 디스크
US11036586B2 (en) 2019-04-02 2021-06-15 SK Hynix Inc. Storage device and operating method thereof

Also Published As

Publication number Publication date
US10282252B2 (en) 2019-05-07
KR102580123B1 (ko) 2023-09-20
CN107391027B (zh) 2022-03-22
US20170322847A1 (en) 2017-11-09
CN107391027A (zh) 2017-11-24

Similar Documents

Publication Publication Date Title
CN107391027B (zh) 廉价磁盘冗余阵列存储设备及其管理方法
CN107870740B (zh) 用于控制存储器的设备和方法
KR102549605B1 (ko) Raid 스토리지 장치의 리커버리 방법
CN111164574B (zh) 基于存储设备内部地址的冗余编码条带
KR102653401B1 (ko) 메모리 시스템 및 그의 동작방법
KR101528714B1 (ko) 메모리 유닛 동작 방법 및 메모리 제어기
US8130554B1 (en) Securely erasing flash-based memory
KR102615593B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US10409683B2 (en) Data storage system configured to perform data rebuild operation via reduced read requests
KR102564774B1 (ko) 메모리 시스템 혹은 데이터 처리 시스템의 동작을 진단하는 장치 혹은 진단을 통해 신뢰성을 확보하는 방법
KR20190106228A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20200011831A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US20200042181A1 (en) Apparatus and method for searching valid data in memory system
JP2013506903A (ja) 電源遮断管理
KR102646252B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US20200034081A1 (en) Apparatus and method for processing data in memory system
KR102666489B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20180130140A (ko) 데이터 처리 시스템 및 데이터 처리 방법
CN113900584A (zh) 存储器系统、存储器控制器以及操作存储器系统的方法
KR20200019421A (ko) 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
KR20190008643A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR102475798B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR102530262B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20190128284A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
US10942678B2 (en) Method of accessing data in storage device, method of managing data in storage device and storage device performing the same

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant