KR20210137922A - 복구 공간으로 패리티 공간을 사용한 데이터 복구 시스템, 방법 및 장치 - Google Patents

복구 공간으로 패리티 공간을 사용한 데이터 복구 시스템, 방법 및 장치 Download PDF

Info

Publication number
KR20210137922A
KR20210137922A KR1020210060571A KR20210060571A KR20210137922A KR 20210137922 A KR20210137922 A KR 20210137922A KR 1020210060571 A KR1020210060571 A KR 1020210060571A KR 20210060571 A KR20210060571 A KR 20210060571A KR 20210137922 A KR20210137922 A KR 20210137922A
Authority
KR
South Korea
Prior art keywords
storage device
data
read
space
parity
Prior art date
Application number
KR1020210060571A
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
Priority claimed from US17/109,053 external-priority patent/US11803446B2/en
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20210137922A publication Critical patent/KR20210137922A/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/1088Reconstruction on already foreseen single or plurality of spare disks
    • 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
    • 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/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/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • 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/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명의 실시 예에 따른 스토리지 장치의 동작 방법은, 결함이 있는 스토리지 장치로부터 정보를 복구하기 위해 패리티 정보를 사용하도록 구성된 리던던트 어레이(redundant array)로서 제 1 스토리지 장치 및 제 2 스토리지 장치를 동작시키는 단계; 상기 제 1 스토리지 장치의 결함 상태에 기초하여 적어도 부분적인 읽기 능력을 갖는 결함 복원 모드에서 상기 제 1 스토리지 장치를 동작시키는 단계; 및 상기 제 2 스토리지 장치의 패리티 공간에서 상기 제 1 스토리지 장치로부터 정보를 재구성하는 단계를 포함한다.

Description

복구 공간으로 패리티 공간을 사용한 데이터 복구 시스템, 방법 및 장치 {SYSTEMS, METHODS, AND DEVICES FOR DATA RECOVERY USING PARITY SPACE AS RECOVERY SPACE}
본 발명은 데이터 스토리지에 관한 것으로, 보다 구체적으로, 복구 공간으로 패리티 공간을 사용한 데이터 복구 시스템, 방법 및 장치에 관한 것이다.
스토리지 시스템은 다른 스토리지 장치로부터 패리티 정보를 이용하여 데이터를 재구성함으로써 결함이 있는 스토리지 장치로부터 데이터를 복원할 수 있다.
배경 섹션에 게시된 정보는 단지 발명의 배경의 이해를 향상시키기 위한 것이며, 따라서 종래 기술을 구성하지 않는 정보를 포함할 수 있다.
본 발명은 스토리지 장치 결함 후 스토리지 시스템이 신속하게 정상 동작으로 복귀하도록 할 수 있는 결함 복원성 스토리지 장치 및 그것의 동작 방법을 제공하는 데 있다.
일부 실시 예에서, 결함 복원 스토리지 장치는 부분 능력을 유지하면서 다양한 복원 모드에서 동작하거나 내부 결함에도 불구하고 전체 기능으로 복귀할 수 있다. 스톨지 장치가 부분 능력을 유지할 수 있는 방법 중 하나는 일부 상황에서 스토리지 장치가 호스트로부터 읽기 요청에 응답할 수 있지만 호스트로부터 기록 요청을 수신하며 에러 메시지를 반환하는 읽기 전용 모드에서 작동하는 것이다. RAID-0 스토리지 시스템에서, 스토리지 장치가 읽기 전용 모드에서 동작으로의 전환될 수 있는 가능성은 스토리지 장치가 읽기 전용 모드에서 동작으로의 전화된 후에 수행된 쓰기 동작을 위한 스트라이프를 구성하는 스트립을 재분산시킴으로써 수용될 수 있다.
본 발명의 일 실시 예에 따르면, 스토리지 매체를 포함하는 스토리지 장치의 동작 방법이 제공된다. 상기 방법은, 스토리지 장치에 의해, 스토리지 장치가 전원을 껐다 켜거나 스토리지 매체를 포맷함으로써 복구가 가능한 제 1 결함 상태에 있다고 결정하는 단계; 스토리지 장치가 성능 저하, 용량 감소 또는 읽기 전용 모드로 스토리지 장치를 동작함으로써 부분 복구가 가능한 제 2 결함 상태에 있음을 스토리지 장치가 결정하는 단계; 및 감소된 성능, 감소된 용량 또는 읽기 전용 모드로 스토리지 장치를 동작시키는 단계를 포함한다.
일부 실시 예에서, 방법은 스토리지 장치에 의해, 스토리지 장치가 제 1 결함 상태 및 제 2 결함 상태와 다른 제 3 결함 상태에 있다고 결정하는 단계; 및 읽기 및 쓰기 동작이 수행되지 않고, 수신된 읽기 또는 쓰기 명령에 응답하여 스토리지 장치가 에러를 반환하는 모드에서 스토리지 장치를 동작시키는 단계를 포함한다. 여기에서 스토리지 장치는 제 1 코어 및 제 2 코어를 포함하는 컨트롤러를 포함한다. 제 3 결함 상태는 제 1 코어가 제 2 코어가 페일되었다고 결정하는 하위 상태(sub-state)를 포함한다.
일부 실시 예에서, 방법은 스토리지 장치의 상태에 관한 쿼리를 호스트로부터 수신하고 상태 계층(status hierarchy)의 상태에 대응하는 상태로 쿼리에 응답하는 단계를 더 포함한다.
일부 실시 예에서, 상태 계층은 제 1 결함 상태에 대응하는 완전 복원 상태(fully resilient status); 및 제 2 결함 상태에 대응하는 부분 복원 상태(partially resilient status)를 포함하는 제 1 레벨을 포함한다.
일부 실시 예에서, 부분 복원 상태는 기능 상실(loss of capability)을 나타내는 제 1 하위 상태(first sub-status)를 포함한다. 제 1 하위 상태는 지속 가능한 읽기 전용 모드(sustainable read-only mode)에서의 동작을 나타내는 제 1 하위-하위 상태(first sub-sub-status); 및 지속 불가능한 읽기 전용 모드에서의 동작을 나타내는 제 2 하위-하위 상태(second sub-sub-status)를 포함한다.
일부 실시 예에서, 쿼리를 수신하는 것은 비휘발성 메모리 익스프레스(nonvolatile memory express, NVMe) 인터페이스를 통해 쿼리를 수신하는 것을 포함하고, 쿼리에 대한 응답은 비휘발성 메모리 익스프레스(NVMe) 인터페이스를 통한 응답을 포함한다.
일부 실시 예에서, 제 1 결함 상태는 스토리지 장치의 컨트롤러의 프로그램 실행 에러(program execution error)로 인해 잘못된 데이터가 스토리지 매체에 기록되도록 하는 제 1 하위 상태를 포함하고; 스토리지 장치가 제 1 결함 상태에 있다고 결정하는 것은 포인터가 범위를 벗어났다고 결정하는 것을 포함하고; 제 1 결함 상태는 컨트롤러에 의한 스토리지 매체에 가장 최근에 기록 된 이후 스토리지 장치의 컨트롤러의 프로그램 실행 에러가 발생한 제 2 서브-상태를 포함한다.
일부 실시 예에서, 방법은 스토리지 매체의 일부를 재포맷하는(reformatting) 단계를 더 포함한다. 여기에서, 재포맷은 전체 스토리지 매체를 재포맷하는 것을 포함한다.
일부 실시 예에서, 방법은 감소된 성능으로 스토리지 장치를 동작시키는 것을 포함한다.
일부 실시 예에서, 감소된 성능으로 동작하는 것은, 스토리지 장치에 연결된 호스트로부터 데이터를 포함하는 쓰기 명령을 수신하는 단계; 데이터를 스토리지 매체에 기록하는 단계; 및 명령 완료를 호스트에 전송하는 단계를 포함한다. 여기에서, 상기 데이터를 상기 스토리지 매체에 기록하고 상기 명령 완료를 상기 호스트에 전송하는 것은 동기화 쓰기(synchronous write)의 일부로서 수행될 수 있다.
일부 실시 예들에서, 감소된 성능으로 동작하는 것은, 스토리지 매체에 대한 제 1 쓰기를 수행하는 단계; 감소된 성능에 해당하는 간격 동안 대기하는 단계; 및 스토리지 매체에 대한 제 2 쓰기를 수행하는 단계를 포함한다.
일부 실시 예에서, 방법은 감소된 용량으로 스토리지 장치를 동작시키는 단계를 포함한다.
본 발명의 일 실시 예에 따르면, 스토리지 장치는 처리 회로; 및 스토리지 매체를 포함한다. 처리 회로는 스토리지 장치가 전원을 껐다 켜거나 스토리지 매체를 포맷함으로써 복구가 가능한 제 1 결함 상태에 있다고 결정하는 동작; 스토리지 장치가 성능 저하, 용량 감소 또는 읽기 전용 모드로 스토리지 장치를 동작함으로써 부분 복구가 가능한 제 2 결함 상태에 있음을 스토리지 장치가 결정하는 동작; 및 감소된 성능, 감소된 용량 또는 읽기 전용 모드로 스토리지 장치를 동작시키는 동작을 수행하도록 구성된다.
일부 실시 예에서, 처리 회로는 스토리지 장치의 상태에 관한 쿼리를 호스트로부터 수신하고 상태 계층(status hierarchy)의 상태에 대응하는 상태로 쿼리에 응답하도록 추가로 구성된다. 여기에서, 상태 계층은 제 1 결함 상태에 대응하는 완전 복원 상태(fully resilient status); 및 제 2 결함 상태에 대응하는 부분 복원 상태(partially resilient status)를 포함하는 제 1 레벨을 포함한다.
일부 실시 예에서, 쿼리를 수신하는 것은 비휘발성 메모리 익스프레스(nonvolatile memory express, NVMe) 인터페이스를 통해 쿼리를 수신하는 것을 포함하고, 쿼리에 대한 응답은 비휘발성 메모리 익스프레스(NVMe) 인터페이스를 통한 응답을 포함한다.
일부 실시 예에서, 처리 회로는 감소된 성능으로 동작하는 것은, 스토리지 매체에 대한 제 1 쓰기를 수행하는 단계; 감소된 성능에 해당하는 간격 동안 대기하는 단계; 및 스토리지 매체에 대한 제 2 쓰기를 수행하는 단계를 포함한다.
본 발명의 일 실시 예에 따르면, 시스템은 스토리지 장치를 포함한다. 스토리지 장치는 처리 수단; 및 스토리지 매체를 포함한다. 처리 수단은 스토리지 장치가 전원을 껐다 켜거나 스토리지 매체를 포맷함으로써 복구가 가능한 제 1 결함 상태에 있다고 결정하는 동작; 스토리지 장치가 성능 저하, 용량 감소 또는 읽기 전용 모드로 스토리지 장치를 동작함으로써 부분 복구가 가능한 제 2 결함 상태에 있음을 스토리지 장치가 결정하는 동작; 및 감소된 성능, 감소된 용량 또는 읽기 전용 모드로 스토리지 장치를 동작시키는 동작을 수행하도록 구성된다.
일부 실시 예에서, 처리 수단은 스토리지 장치의 상태에 관한 쿼리를 호스트로부터 수신하고 상태 계층(status hierarchy)의 상태에 대응하는 상태로 쿼리에 응답하도록 추가로 구성된다. 여기에서, 상태 계층은 제 1 결함 상태에 대응하는 완전 복원 상태(fully resilient status); 및 제 2 결함 상태에 대응하는 부분 복원 상태(partially resilient status)를 포함하는 제 1 레벨을 포함한다.
일부 실시 예에서, 쿼리를 수신하는 것은 비휘발성 메모리 익스프레스(nonvolatile memory express, NVMe) 인터페이스를 통해 쿼리를 수신하는 것을 포함하고, 쿼리에 대한 응답은 비휘발성 메모리 익스프레스(NVMe) 인터페이스를 통한 응답을 포함한다.
일부 실시 예에서, 처리 수단은 감소된 성능으로 스토리지 장치를 동작시키도록 구성되며, 감소된 성능으로 동작하는 것은, 스토리지 장치에 연결된 호스트로부터 데이터를 포함하는 쓰기 명령을 수신하는 단계; 데이터를 스토리지 매체에 기록하는 단계; 및 명령 완료를 호스트에 전송하는 단계를 포함한다. 여기에서, 상기 데이터를 상기 스토리지 매체에 기록하고 상기 명령 완료를 상기 호스트에 전송하는 것은 동기화 쓰기(synchronous write)의 일부로서 수행될 수 있다.
본 발명의 실시 예에 따른 스토리지 장치의 동작 방법은, 결함이 있는 스토리지 장치로부터 정보를 복구하기 위해 패리티 정보를 사용하도록 구성된 리던던트 어레이(redundant array)로서 제 1 스토리지 장치 및 제 2 스토리지 장치를 동작시키는 단계; 상기 제 1 스토리지 장치의 결함 상태에 기초하여 적어도 부분적인 읽기 기능을 갖는 결함 복원 모드에서 상기 제 1 스토리지 장치를 동작시키는 단계; 및 상기 제 2 스토리지 장치의 패리티 공간에서 상기 제 1 스토리지 장치로부터 정보를 재구성하는 단계를 포함한다.
상기 방법은 상기 제 2 스토리지 장치의 패리티 공간에서 상기 제 1 스토리지 장치로부터의 정보를 재구성하는 단계는 상기 제 1 스토리지 장치로부터의 정보를 상기 제 2 스토리지 장치의 패리티 공간으로 복사하는 단계를 포함할 수 있다.
상기 방법은 상기 재구성된 정보를 상기 제 2 스토리지 장치의 패리티 공간으로부터 대체 스토리지 장치로 복사하는 단계를 더 포함할 수 있다. 상기 방법은 상기 제 2 스토리지 장치의 패리티 공간에서 상기 제 1 스토리지 장치의 쓰기 동작을 위해 제 1 데이터를 업데이트하는 단계를 더 포함할 수 있다.
상기 방법은 상기 업데이트된 제 1 데이터를 상기 제 2 스토리지 장치의 패리티 공간으로부터 상기 대체 스토리지 장치로 복사하는 단계를 더 포함할 수 있다. 상기 방법은 상기 재구성된 정보의 적어도 일부에 대한 패리티 정보를 계산하는 단계를 더 포함할 수 있다.
상기 방법은 상기 제 2 스토리지 장치의 패리티 공간에서 상기 제 1 스토리지 장치로부터의 정보를 재구성는 단계는 백그라운드 프로세스에 의해 적어도 부분적으로 수행될 수 있다. 상기 방법은 상기 제 2 스토리지 장치의 패리티 공간에서 상기 제 1 스토리지 장치로부터의 정보를 재구성하는 단계는 배치 프로세스에 의해 적어도 부분적으로 수행될 수 있다. 상기 방법은 상기 제 1 스토리지 장치로부터의 정보는 데이터를 포함할 수 있다.
상기 방법은 상기 제 2 스토리지 장치의 패리티 공간의 재구성 포인트에 기초하여 상기 제 1 스토리지 장치의 읽기 동작을 위한 제 1 데이터를 읽는 단계를 더 포함할 수 있다. 상기 방법은 상기 읽기 동작을 위한 상기 제 1 데이터는 상기 제 1 스토리지 장치로부터 읽어 올 수 있다.
상기 방법은 상기 읽기 동작을 위한 상기 제 1 데이터는 상기 제 2 스토리지 장치의 패리티 공간에 있는 재구성된 정보로부터 읽어 올 수 있다. 상기 방법은 상기 제 2 스토리지 장치의 패리티 공간에서 상기 제 1 스토리지 장치의 쓰기 동작을 위해 제 1 데이터를 업데이트하는 단계; 및 상기 제 1 스토리지 장치의 읽기 동작을 위해, 상기 제 2 스토리지 장치의 패리티 공간으로부터 업데이트된 제 1 데이터를 읽는 단계를 더 포함할 수 있다. 상기 방법은 상기 제 1 스토리지 장치의 쓰기 동작을 위한 쓰기 데이터를 수신하는 단계; 및 상기 제 2 스토리지 장치의 패리티 공간에 쓰기 데이터를 기록하는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 따른 스토리지 시스템은, 컨트롤러; 제 1 스토리지 장치; 및 제 2 스토리지 장치를 포함하되, 상기 제 1 스토리지 장치는 상기 제 1 스토리지 장치의 결함 상태에 기초하여 적어도 부분적인 읽기 기능을 갖는 결함 복원 모드에서 동작하고, 상기 컨트롤러는, 결함이 있는 스토리지 장치로부터 정보를 복구하기 위해 패리티 정보를 사용하도록 구성된 리던던트 어레이(redundant array)로서 상기 제 1 스토리지 장치 및 상기 제 2 스토리지 장치를 동작시키고, 상기 제 2 스토리지 장치의 패리티 공간에서 상기 제 1 스토리지 장치로부터의 정보를 재구성하도록 구성된다.
상기 컨트롤러는 상기 제 2 스토리지 장치의 패리티 공간으로부터 대체 스토리지 장치로 상기 재구성된 정보를 복사하도록 추가로 구성될 수 있다. 상기 컨트롤러는 상기 제 2 스토리지 장치의 패리티 공간의 재구성 포인트에 기초하여 상기 제 1 스토리지 장치로부터 읽기 동작을 위한 제 1 데이터를 읽도록 추가로 구성될 수 있다. 상기 컨트롤러는 상기 제 1 스토리지 장치의 쓰기 동작을 위한 쓰기 데이터를 수신하고, 쓰기 데이터를 상기 제 2 스토리지 장치의 패리티 공간에 쓰도록 추가로 구성될 수 있다.
본 발명의 실시 예에 따른 스토리지 어레이 컨트롤러는, 제 1 스토리지 장치, 제 2 스토리지 장치 및 제 3 스토리지 장치를 패리티가 있는 RAID(redundant array of independent storage devices)로 동작하고, 상기 제 1 스토리지 장치는 제 1 스토리지 장치의 결함 상태에 기초하여 적어도 부분적 읽기 기능을 가진 결함 복원 모드에서 상기 제 1 스토리지 장치를 동작하도록 구성되고; 상기 제 1 스토리지 장치로부터의 정보를 상기 제 2 스토리지 장치의 패리티 공간에 복사함으로써 상기 제 1 스토리지 장치의 결함 상태에 기초하여 상기 제 1 스토리지 장치로부터의 정보를 재구성하도록 구성될 수 있다.
로직은 상기 제 2 스토리지 장치의 패리티 공간의 재구성 포인트에 기초하여 상기 제 1 스토리지 장치로부터 읽기 동작을 위한 데이터를 읽도록 추가로 구성될 수 있다.
일부 실시 예에서, 결함이 있는 스토리지 장치(1304)로부터 정상 스토리지 장치의 패리티 공간으로 데이터의 일부 또는 전부를 복사한 후에, 시스템은 예를 들어 패리티 정보 없이(without parity information) 동작함으로써 결함이 있는 스토리지 장치(1304)를 교체하지 않고(without replacing) 무기한 또는 일시적으로(indefinitely or temporarily) 동작할 수 있다.
그러한 실시 예에서, 시스템은 본질적으로 RAID-0 구성으로 동작할 수 있다. 따라서, 구현 세부 사항에 따라(depending on the implementation details), 결함 복원 스토리지 장치(1304) 및 재구성 동작을 위한 패리티 공간의 사용은 스토리지 장치 결함 후 스토리지 시스템이 신속하게 정상 동작으로 복귀하도록 할 수 있다.
일부 실시 예에서, 데이터는 효율성을 증가시킬 수 있는 배치 모드(batch mode)에서 결함 있는 스토리지 장치(1304)로부터 정상 스토리지 장치의 패리티 공간으로 복사될 수 있다.
도면은 반드시 일정한 비율로 도시되는 것은 아니며, 유사한 구조 또는 기능의 요소는 일반적으로 도면 전체에 걸쳐 예시적인 목적을 위해 동일한 참조 번호 또는 그 부분으로 표시 될 수 있다. 도면은 단지 본 명세서에 기술된 다양한 실시 예예의 설명을 용이하게 하기 위한 것이다.
도면은 본 명세서에 게시된 사상의 모든 측면을 기술하는 것은 아니며 청구 범위의 범위를 제한하지 않는다. 도면이 모호해지는 것을 방지하기 위해, 모든 구성 요소, 연결 등이 도시될 수는 없으며, 모든 구성 요소가 참조 번호를 가질 수 있는 것은 아니다. 그러나, 구성 요소 구성의 패턴은 도면을 통해 손쉽게 명백해 질 수 있다. 본 명세서와 함께, 첨부 도면은 본 발명의 예시적인 실시 예를 도시하며, 설명과 함께, 본 발명의 원리를 설명하는 역할을 한다.
도 1은 본 발명의 예시적인 실시 예에 따른 데이터 스토리지 시스템의 블록도이다.
도 2a는 본 발명의 예시적인 실시 예에 따른 스토리지 장치의 결함 상태표이다.
도 2b는 본 발명의 예시적인 실시 예에 따른 호스트가 스토리지 장치로 송신할 명령에 대한 표이다.
도 2c는 본 발명의 예시적인 실시 예에 따른 복원 모드의 계층 구조를 도시한 표이다.
도 3a는 본 발명의 예시적인 실시 예에 따른 결함 복원 스토리지 장치의 제 1 동작 방법에 대한 순서도이다.
도 3b는 본 발명의 예시적인 실시 예에 따른 결함 복원 스토리지 장치의 제 2 동작 방법에 대한 순서도이다.
도 4는 본 발명의 예시적인 실시 예에 따른 스토리지 장치의 개략적 데이터 배치도이다.
도 5a는 본 발명의 예시적인 실시 예에 따른 결함 복원 읽기 전용 모드에서 스토리지 장치의 제 1 동작 방법에 대한 순서도이다.
도 5b는 본 발명의 예시적인 실시 예에 따른 결함 복원 읽기 전용 모드에서 스토리지 장치의 제 2 동작 방법에 대한 순서도이다.
도 6a는 본 발명의 예시적인 실시 예에 따른 기록 동작을 수행하는 RAID-0 시스템의 개략적 데이터 배치도이다.
도 6b는 본 발명의 예시적인 실시 예에 따른 읽기 동작을 수행하는 RAID-0 시스템의 개략적 데이터 배치도이다.
도 7a는 본 발명의 예시적인 실시 예에 따른 RAID-0 스토리지 시스템의 제 1 동작 방법에 대한 순서도이다.
도 7b는 본 발명의 예시적인 실시 예에 따른 RAID-0 스토리지 시스템의 제 2 동작 방법에 대한 순서도이다.
도 8은 본 발명의 예시적인 실시 예에 따른 RAID-0 스토리지 시스템 매핑 방식의 실시 예를 도시한다.
도 9는 본 발명의 예시적인 실시 예에 따른 RAID-5 스토리지 시스템의 매핑 방식의 실시 예를 도시한다.
도 10a는 본 발명의 예시적인 실시 예에 따른 적어도 하나의 결함 복원 스토리지 장치를 포함하는 중복 어레이 스토리지 시스템스템의 매핑 방식의 실시 예를 도시한다.
도 10b는 본 발명의 예시적인 실시 예에 따른 적어도 하나의 결함 복원 스토리지 장치 및 대체 스토리지 장치를 포함하는 중복 어레이 스토리지 시스템의 매핑 방식의 실시 예를 도시한다.
도 11은 본 발명의 예시적인 실시 예에 따른 중복 어레이 스토리지 시스템의 예시적인 실시 예를 도시한다.
도 12a는 본 발명의 예시적인 실시 예에 따른 결함 복원 스토리지 장치를 구비하지 않은 RAID-5 스토리지 시스템의 예시적인 실시 예를 도시한다.
도 12b는 본 발명의 예시적인 실시 예에 따른 대체 스토리지 장치를 구비한 재구성 동작을 수행하는 도 12a의 실시 예를 도시한다.
도 13a는 본 발명의 예시적인 실시 예에 따른 결함 복원 스토리지 장치를 구비하지 않은 RAID-5 스토리지 시스템의 예시적인 실시 예를 도시한다.
도 13b는 본 발명의 예시적인 실시 예에 따른 대체 스토리지 장치를 구비한 재구성 동작을 수행하는 RAID-5 스토리지 시스템스템의 예시적인 실시 예를 도시한다.
도 13c는 본 발명의 예시적인 실시 예에 따른 대체 스토리지 장치를 구비한 결함 조건을 경험한 결함 복원 스토리지 장치를 교체한 후 재구성 동작을 수행하는 RAID-5 스토리지 시스템의 다른 예시적인 실시 예를 도시한다.
도 14는 본 발명의 일 실시 예에 따른 단일 스토리지 장치의 결함이 발생한 경우, 결함 복원 스토리지 장치를 구비하지 않는 RAID-5 스토리지 시스템에 의해 읽기 동작의 예시적인 실시 예를 도시한다.
도 15는 본 발명의 일 실시 예에 따른 단일 스토리지 장치의 결함이 발생한 경우, 결함 복원 스토리지 장치를 구비하지 않는 RAID-5 스토리지 시스템에 의해 읽기 동작의 예시적인 실시 예를 도시한다.
도 16은 본 발명의 일 실시 예에 따른 재구성 동작 중에 결함 복원 스토리지 장치를 구비한 RAID-5 스토리지 시스템에 의해 읽기 동작의 예시적인 실시 예를 도시한다.
도 17은 본 발명의 일 실시 예에 따른 재구성 동작 중에 결함 복원 스토리지 장치를 구비한 RAID-5 스토리지 시스템에 의해 읽기 동작의 예시적인 실시 예를 도시한다.
도 18은 본 발명의 예시적인 실시 예에 따른 결함 복원 스토리지 장치를 구비하지 않은 RAID-5 스토리지 시스템에 의해 수행된 기록 동작의 예시적인 실시 예를 도시한다.
도 19는 본 발명의 예시적인 실시 예에 따른 결함 복원 스토리지 장치를 구비하지 않은 RAID-5 스토리지 시스템에 의해 수행된 기록 동작의 예시적인 실시 예를 도시한다.
도 20은 본 발명의 예시적인 실시 예에 따른 결함 복원 스토리지 장치를 구비한 RAID-5 스토리지 시스템에 의해 수행된 기록 동작의 예시적인 실시 예를 도시한다.
도 21은 본 발명의 예시적인 실시 예에 따른 결함 복원 스토리지 장치를 구비한 RAID-5 스토리지 시스템에 의해 수행될 수 있는 기록 동작의 예시적인 실시 예를 도시한다.
도 22는 본 발명의 예시적인 실시 예에 따른 스토리지 어레이를 동작시키는 장법의 실시 예를 도시한다.
도 23은 본 발명의 예시적인 실시 예에 따른 스토리지 장치에 의해 구현될 수 있는 결함 복원 모드 및 연관된 논리 블록 어드레스(LBA) 공간 타입의 일부 예시적인 실시 예의 표를 도시한다.
첨부된 도면들(appended drawings)과 관련되어 아래에서 설명하는 발명의 상세한 설명(detailed description)은 본 발명에 따라 제공되는 스토리지 장치의 복원 동작(resilient operation)을 위한 시스템 및 방법과 스토리지 장치들을 포함하는 시스템의 예시적인 실시 예들을 설명할 의도이고, 단지 본 발명이 구성될 수 있거나 이용될 수 있는 형태들을 나타내기 위한 의도는 아니다.
본 명세서는 예시된 실시 예들과 관련하여 본 발명의 특징들을 설명한다. 그러나 동일하거나 등등한 기능들 및 구조들(the same or equivalent functions and structures)이 본 발명의 범위(the scope of the disclosure) 내에 포함되도록 의도된, 다른 실시 예들에 의해 달성될 수 있음을 이해해야 한다. 본 명세서의 다른 곳에서 나타낸 바와 같이, 같은 구성요소 참조번호들(like element numbers)은 같은 구성요소들 또는 특징들(like elements or features)을 나타내는 것으로 이해될 수 있다.
일부 실시 예에서, 결함 복원 스토리지 장치(fault resilient storage device)는 부분 기능(partial capability)을 유지하면서 다양한 복원 모드(resilient modes)에서 동작하거나 내부 결함(internal faults)에도 불구하고 전체 기능(full functionality)으로 복귀(returning)할 수 있다.
예를 들어, 온도 센서 고장에 대하여, 스토리지 장치는 감소된 속도 또는 감속된 쓰기 속도로 동작할 수 있거나 전체적으로 쓰기 동작을 수행하는 것을 중단할 수 있다. 스토리지 매체를 손상시킬 수 있는 일시적인 고장(transient failure)에 대하여, 스토리지 장치는 스토리지 매체를 재포맷할 수 있다. 스토리지 매체를 손상시키지 않는 일시적인 고장에 대하여, 스토리지 장치는 전원을 순환시킬 수 있다.
스토리지 장치가 부분 기능을 유지할 수 있는 방법 중 하나는 일부 상황에서 스토리지 장치가 호스트로부터 읽기 요청에 응답할 수 있지만 호스트로부터 쓰기 요청을 수신하며 에러 메시지를 반환하는 읽기 전용 모드(read-only mode)에서 동작하는 것이다. 스토리지 장치는 또한 복구 영역으로 만료되는 데이터를 이동시킬 수 있어, 데이터는 만료된 결과로 손실되지 않는다. RAID-0 스토리지 시스템에서, 스토리지 장치가 읽기 전용 모드에서 동작으로의 전환될 수 있는 가능성은 스토리지 장치가 읽기 전용 모드에서 동작으로의 전환된 후에 수행된 쓰기 동작을 위한 스트라이프를 구성하는 스트립을 재분산시킴으로써 수용될 수 있다.
도 1은 본 발명의 예시적인 실시 예에 따른 하나 이상의 스토리지 장치(110)(또는 “드라이브”)에 연결된 호스트(105)를 포함하는 컴퓨팅 시스템을 보여준다. 스토리지 장치(110)는 도시된 바와 같이 볼륨 관리자(115)(아래에서 더 상세히 논의된)를 통해 호스트(105)에 연결될 수 있거나, 호스트(115)에 직접 연결될 수 있다.
일부 실시 예에서, 스토리지 장치(110)는 내부 결함 조건(internal fault condition)을 경험할 수 있고, 스토리지 장치는 아래 더 자세히 논의된 바와 같이, 결함 조건의 시스템 레벨 영향을 완화하기 위해서 다양한 복원 행동(resilient behaviors)을 나타낼 수 있다. 각 스토리지 장치(110)는 솔리드 스테이트 드라이브(SSD, solid state drive)이며, 컨트롤러(120)(또는 “제어 회로”) 및 스토리지 매체(125)(예를 들어, not AND(NAND) 플래시 메모리)를 포함할 수 있다.
스토리지 장치(110)의 가장 작은 소거 가능한 유닛은 "블록"으로 지칭될 수 있고, 스토리지 장치(110)의 가장 작은 쓰기 가능한 유닛은 "페이지"로 지칭될 수 있다. 각 스토리지 장치(110)는 2.5”, 1.8”, MO-297, MO-300, M.2, 및 Enterprise and Data Center SSD Form Factor(EDSFF)를 포함하는 지속 스토리지 장치(persistent storage devices)에 적합한 복수의 폼 팩터 중 어느 하나인 폼 팩터를 가질 수 있으나, 그것에 제한되지는 않으며, Peripheral Component Interconnect(PCI), PCI express(PCIe), Ethernet, Small Computer System Interface(SCSI), Serial AT Attachment(SATA), and Serial Attached SCSI(SAS)를 포함하는 지속 스토리지 장치에 적합한 복수의 인터페이스 중 어느 하나인, 각 스토리지 장치가 호스트(105)에 연결되는 전기 인터페이스를 가질 수 있다.
스토리지 장치(125)는 보유 기간(retention period)(스토리지 매체(125)의 사용 이력에 의존할 수 있고, 이와 같이, 스토리지 매체(125) 내에서 변할 수 있음)를 가질 수 있으며, 보유 기간보다 긴 데이터를 저장한 데이터(즉, 보유 기간을 초과하는 연령을 초과하는 데이터)는 신뢰할 수 없어 만료될 수 있다.
데이터는 블록 코드일 수 있는 에러 정정 코드(error correcting code)를 이용하여 스토리지 매체(125)에 저장될 수 있다. 데이터가 스토리지 매체(125)로부터 판독 될 때, 코드 블록으로 언급된 다량의 원시 데이터는 스토리지 매체(125)로부터 판독될 수 있으며 해당 데이터에 대한 디코딩을 시도 할 수 있다. 시도가 실패하면, 추가 시도(읽기 재시도)가 이루어 질 수 있다.
사용과 동시에, 스토리지 매체(125)의 일부, 예를 들어, 블록은 보유 기간이 허용되지 않게 짧아지는 지점까지 분해되며, 블록은 "불량 블록"으로 분류 될 수 있다. 이러한 상황이 전체 스토리지 매체(125)를 동작하지 않도록 하는 것을 방지하기 위해, "불량 블록 관리 예비 공간(bad block management reserve space)"이라고 하는 예비 공간(reserve space)이 존재할 수이며(예를 들어, 각 플래시 메모리 다이 또는 각 플래시 메모리 플레인(flash memory plane)에 포함), 및 컨트롤러(120) 또는 플래시 메모리 다이 또는 플래시 메모리 플레인 내부의 다른 컨트롤러는 예비 블록을 사용하기 시작하고 불량 블록의 사용을 중단할 수 있다.
도 2a는 본 발명의 예시적인 실시 예에 따른 케이스 식별자("케이스 ID")로 지정된 결함 조건(또는 “결함 상태)표이다.
케이스 1은 스토리지 장치(110)가 더 이상 읽기 또는 쓰기 동작을 수행 할 수 없고, 전원을 사이클링하거나 스토리지 매체를 포맷함으로써 해결 될 수 없는 임의의 결함 조건이다. 스토리지 장치(110)가 이러한 방식으로 동작하는 상태는, 예를 들어, 다양한 하위 상태를 가질 수 있다. 각 하위 상태 상이한 결함 매커니즘에 대응할 수 있다.
이러한 상태 또는 결함 상태(스토리지 장치(110)가 더 이상 읽기 또는 쓰기 동작을 수행할 수 없고, 및 스토리지 매체를 순환 또는 재포맷함으로써 해결할 수 없는)은 예를 들어, 컨트롤러의 펌웨어의 일부가 손상되거나(컨트롤러가 손상된 명령이 실행되지 않는 안전 모드에로 재시작하지 않는 가능성이 있는 경우) 또는 스토리지 장치(110)의 처리 회로의 고장으로 인해(예를 들어, 스토리지 매체와의 상호 작용을 관리하지만 호스트(105)와의 통신에 대해서는 책임을 지지 않는 처리 회로의 고장) 유발될 수 있다. 이러 유형의 결함 조건이 발생하면, 스토리지 장치(110)는 에러 메시지를 갖는 임의의 읽기 또는 쓰기 명령에 응답할 수 있다.
케이스 2는 (i) 스토리지 장치(110)가 더 이상 읽기 또는 쓰기 동작을 수행할 수 없고, (ii) 스토리지 장치(110)의 전원을 사이클링하거나 스토리지 매체를 재포맷함으로써 복구가 가능한 임의의 결함 조건이다.
이런 결함 조건은 예를 들어, 스토리지 장치(110)의 컨트롤러(120)의 프로그램 실행 에러(program execution error, 예를 들어, 컨트롤러(120)의 랜덤 액세스 메모리(RAM)의 비트 플립의 결과로써 범위 밖의 포인터 또는 비트 플립의 결과로써 부정확한 지시)에 의해 유발될 수 있다.
프로그램 실행 에러가 부정확한 데이터를 스토리지 매체(125)에 기록하도록 하지 않는 경우(예를 들어, 컨트롤러가 가장 최근에 스토리지 매체에 기록한 이후 프로그램 실행 에러가 발생한 경우), 스토리지 장치를 사이클링하는 전원은 스토리지 장치(110)을 정상 동작(normal operation)으로 복원하기에 충분할 수 있으며, 프로그램 실행 에러가 컨트롤러가 잘못된 데이터를 스토리지 매체(125)에 기록하도록 하는 경우, 스토리지 매체(125)의 재포맷은 스토리지 장치(110)를 정상 동작으로 복원하기에 충분할 수 있다.
케이스 3은 읽기 전용 모드로 스토리지 장치(110)를 동작시킴으로써 완화 될 수 있으며, 스토리지 매체(125)를 재포맷하는 것은 전체 기능을 복원하지 않는 임의의 결함 조건이다. 이러한 결함의 예로 (i) 온도 센서 고장 및 (ii) 스토리지 매체(125)의 일부가 읽기 전용 모드로 전환되는 것을 포함한다.
온도 센서 고장의 경우, 온도 센서 판독 값이 범위를 벗어남(예를 들어, 임계 온도를 초과 함)을 판단하고, 이련 경우에, 읽기 동작보다 더 많은 전원을 방출할 수 있는 쓰기 동작을 회피함으로써 스토리지 장치(110)의 과열의 위험이 감소될 수 있다. 스토리지 매체(125)의 일부분의 읽기 전용 모드로의 전이는 예를 들어 플래시 메모리 플레인 또는 다이가 런타임 불량 블록 관리에 사용되는 불량 블록 관리에 사용된 예비 공간을 배출하는 경우, 예를 들어 플래시 메모리 스토리지 매체(125)에 대해 발생할 수 있다.
예를 들어, 스토리지 장치(110)는 읽기 동작을 수행하는 것을 시도하면서 데이터 아이템을 디코딩을 위한 실패한 시도를 할 수 있고, 데이터 항목을 저장하는 블록이 불량 블록이고 데이터를 불량 블록으로부터 불량 블록 관리 예비 공간으로 이동시키는 경우, 나머지 불량 블록 관리 예비 공간이 임계값 크기보다 적어서 플레인 또는 다이의 신뢰성을 보장하기에 불충분하다고 결정할 수 있다.
그 후, 스토리지 장치(110)은 불량 블록 관리가 더 이상 수행되지 않고 읽기 전용 모드로 전이되는 것으로 결정할 수 있다. 읽기 전용 모드의 동작은 하기에서 더 자세히 논의된다. 본 명세서에서 사용된 바와 같이, "데이터 아이템(data item)"은 하나의 동작으로 처리되는 임의의 양의 데이터이며, 예를 들어, 코드 블록을 디코딩함으로써 생성된 데이터는 데이터 아이템일 수 있다.
케이스 4는 스토리지 장치(110)를 연속 기록 모드(write-through mode)로 동작시킴으로써 완화될 수 있는 임의의 결함 조건이다. 예를 들어, 스토리지 장치(110)의 전원 백업 캐패시터가 실패하면, 스토리지 장치는 호스트로부터 수신된 임의의 쓰기 명령에 응답하여, 상기 호스트에 대한 명령 완료를 전송하기 전에 상기 스토리지 매체(125)에 기록을 완료 할 수 있어서, 스토리지 매체(125)에 대한 기록이 완료되기 전에 전원이 실패하면, 호소는 기록이 성공적으로 완료되었다고 잘못 알게 된다. 연속 쓰기 모드로 동작하면(처리량 및 지연 측면에서) 성능이 감소될 수 있다.
케이스 5는 스토리지 장치(110)을 전원 방출을 감소시키는 방식으로 동작시킴으로써 완화될 수 있는 임의의 결함 조건이다. 예를 들어, 온도 센서 고장의 경우에, 상술한 바와 같이 스토리지 장치(110)은 읽기 전용 모드로 동작할 수 있거나 스토리지 장치(110)에서 전원 방출을 감소시킬 수 있도록 동작(예를 들어, 읽기 동작보다 더 많은 전원을 방출하는 쓰기 동작)이 수행되는 속도를 감소시킬 수 있다.
예를 들어, 스토리지 장치(110)는 스토리지 매체에 대한 제 1 기록을 수행 한 다음, 감소된 성능에 대응하는 간격 동안, 대기할 수 있으며(대기로 인해 쓰기 동작이 수행되는 속도가 감소함), 그 후, 스토리지 매체에 다른(예를 들어, 제 2) 쓰기를 수행할 수 있다.
케이스 6은 읽기 전용 모드로 스토리지 장치(110)를 동작시킴으로써 완화될 수 있으며, 스토리지 매체(125)의 재포맷으로 전체 기능이 복원되는 임의의 결함 조건이다. 도 2a의 표의 제 3 열은 각각의 경우에 유효한 사용자 데이터가 이용 가능 여부 및 스토리지 장치(110)가 스토리지 매체(125)를 재포맷함으로써 완전한 기능(full functionality)으로 복귀될 수 있는지 여부를 지시한다.
도 2a에 나열된 케이스에 의해 예시된 바와 같이, 일부 실시 예에서, 3개의 결함 복원 레벨(levels of fault resiliency), 즉, 완전 복원 모드(fully resilient mode), 부분 복원 모드(partially resilient mode) 및 취약 모드(vulnerable mode)가 스토리지 장치(110)에 의해 달성될 수 있다. 완전 복원 모드에서, 스토리지 장치(110)은 “자체 복구(self-healing)” 특징으로 동작할 수 있고, 스토리지 장치(110)은 전원 사이클링(power cycling) 또는 스토리지 매체(125)의 포맷과 같은 리셋팅 동작(resetting operations)으로 완전 기능(full functionality)(장치 내 사용자 데이터가 손실될 수 있음에도 불구하고)을 복구할 수 있다.
부분 복원 모드(partially resilient mode)에서, 스토리지 장치(110)는 결함 조건이 존재하는 경우, 더 낮은 성능(lower performance), 더 작은 용량(smaller capacity) 또는 감소된 기능(reduced capabilit)으로 동작할 수 있다. 예를 들어, 전술 한 바와 같이, 전원 공급 백업 캐패시터(power supply backup capacitor)가 페일되면(failed), 데이터가 스토리지 매체(125)에 기록된 후에만 모든 쓰기가 완료될 수 있어(즉, 명령 완료는 호스트(105)로 송신될 수 있다)(즉, 동기화 기록만 수행될 수 있다), 스토리지 장치(110)의 동작을 늦추고 성능을 저하시킨다.
이 상황에서 사용자 데이터가 보유될 수 있다. 스토리지 장치(110)는 불량 블록 관리 런타임 불량 블록(RTBB; run time bad block)을 위한 예비 공간이 소모되면 더 작은 용량으로 동작할 수 있다. 이러한 상황에서, 스토리지 장치(110)에서의 영향을 받는 다이는 디스크 공간으로부터 배제 될 수 있고 전체 디스크 용량이 감소될 수 있다.
손실된 공간의 사용자 데이터가 손실될 수 있다. 예를 들어, IO 결정성(IO determinism)에 있는 세트(set) 또는 zoned namespace의 존(zone)이 더 이상 새 데이터 쓰기 동작을 수락할 수 없으면, 세트 또는 존이 디스크 공간에서 제외될 수 있지만 나머지 디스크 공간은 읽기 및 쓰기 동작에 사용될 수 있다. 해당 존이나 세트의 사용자 데이터가 손실될 수 있다.
스토리지 장치(110)는 스토리지 장치(110)가 쓰기 동작을 허용하지 않고 읽기 전용 모드로 전환하는 경우, 스토리지 장치(110)가 감소된 기능으로 동작 할 수 있다. 스토리지 장치(110)는 두 가지 유형의 읽기 전용 모드인 지속 가능 읽기 전용 모드(sustainable read-only mode)("제 1 읽기 전용 모드로 지칭 될 수 있음) 및 지속 불가능 읽기 전용 모드(unsustainable read-only mode)("제 2 읽기 전용 모드"로 지칭될 수 있음)로 동작할 수 있다.
지속 가능 읽기 전용 모드에서, 스토리지 장치(110)는 스토리지 매체(125)의 보유 기간을 초과하여 읽기 요청(read requests)을 계속 제공할 수 있다. 지속 불가능 읽기 전용 모드는 스토리지 장치(110)이 지속 가능 읽기 전용 모드로 동작할 수 없을 때, 예를 들어, 구조 공간(rescue space)을 설정하기 위한 부족한 미사용 저장 공간(insufficient unused storage space)이 있을 때(하기에서 더 자세히 논의된) 채택될 수 있다.
스토리지 장치(110)는 지속 불가능한 읽기 전용 모드로 전환할 때, 스토리지 장치(110)가 제 2(지속 불가능) 읽기 전용 모드에서 동작하고 스토리지 장치(110)에 저장된 데이터 아이템이 만료되는 것을 허용한다는(예를 들어, 각 보유 기간의 끝나면) 통지를 호스트(105)로 송신할 수 있다.
지속 블가능한 읽기 전용 모드에서, 스토리지 장치(110)는 스토리지 매체(125)의 보유 기간 동안 읽기 요청을 계속 제공할 수 있고, 스토리지 장치(110)가 데이터 무결성 문제(data integrity issues)(예를 들어, 읽기 동작 동안 데이터를 디코딩하는 하나 이상의 실패한 시도(unsuccessful attempts)에 의해 검출된 바와 같이)를 접하면, 스토리지 장치(110)는 유효하지 않은 데이터 영역(invalid data region)을 보고 할 수 있다.
취약 모드에서 동작하는 스토리지 장치(110)는 전술한 바와 같이, 읽기 또는 쓰기 동작을 수행할 수 있으며, 그레이스풀 엑시트(graceful exit), 호스트로부터의 명령의 수신을 지속 및 에러 반환을 수행할 수 있다.
일부 실시 예에서, 5개의 논리 블록 어드레스(LBA) 공간 유형(space types)은 (i) 수행 공간(P), (ii) 미수행 공간, (iii) 읽기 전용 공간(RO), (iv) 휘발성 읽기 전용 공간(VRO) 및 (v) 액세스 불가 공간(IA)으로 정의되어 지칭될 수 있다.
수행 공간(P)은 성능을 희생시키지 않으면서 정상적인 방식으로 읽고 쓸 수 있는 유효한 데이터가 포함된 LBA 공간일 수 있다.
미수행 공간(UP)는 정상적인 방식이지만 저하된 성능을 가지고(예를 들어, 저하된 기록 성능) 판독 및 기록될 수 있는 유효한 데이터가 포함된 LBA 공간일 수 있다.
읽기 전용(RO) 공간은 판독만 되는 유효한 데이터가 들어있는 LBA 공간일 수 있다. 스토리지 장치(110)는 이 유형의 LBA 공간으로 향하는 호스트로부터 명령을 기록하는 에러 메시지로 응답할 수 있다. 읽기 전용 공간의 데이터는 보유 기간을 초과하는 기간 동안 유효하게 유지될 수 있다. 휘발성 읽기 전용(VRO) 공간은 읽기 전용일 수 있고, 스토리지 장치(110)는 이 유형의 LBA 공간으로 향하는 호스트로부터의 명령을 기록하기 위해 에러 메시지로 응답할 수 있다.
이러한 유형의 LBA 공간의 데이터는 일시적으로 유효할 수 있으며, 데이터가 만료되는 경우, 즉, 스토리지 매체(125) 내의 데이터의 수명이 스토리지 매체(125)의 보유 기간에 도달하는 경우 유효하지 않을 수 있다. 액세스 불가능(IA) 공간은 호스트에서 액세스 할 수 없는 유효하지 않은 데이터가 들어있는 LBA 공간 일 수 있다.
도 23의 표는 본 발명의 예시적 실시 예에 따라 테이블의 제 1 컬럼에서 식별된 각각의 결함 조건에서 스토리지 장치(110)에 존재할 수 있는 LBA 공간 유형의 일부 조합을 보여준다. 별표(*)로 식별된 모드는 LBA 공간에 대한 자세한 정보를 검색하기 위해 호스트가 get feature command를 사용하는 것을 지원할 수 있다. 도 2b는 본 발명의 예시적 실시 예예에 따라 스토리지 장치의 상태 및 연관 파라미터(associated parameters)(“IOPS”는 초당 입력 및 출력 동작을 의미한다)의 값에 관해 스토리지 장치(110)에 쿼리(query)하기 위해 스토리지 장치(110)에 전달될 수 있는 “get feature command"의 아규먼트(arguments)를 보여준다.
도 2c의 표는 본 발명의 예시적인 실시 예에 따라 스토리지 장치(110)가 응답하기 위해 채택한 결함 복원 특징의 카테고리(category of fault resilient features) 내에서 호스트(105)가 스토리지 장치의 상태 및 열거된 상수의 계층 구조(hierarchy of enumerated constants)에 관해 스토리지 장치에(110)에 쿼리(query)하기 위해서 채택한 비휘발성 메모리 익스프레스(NVMe) 명령을 보여준다.
도 2c에 도시된 바와 같이, 계층 구조(hierarchy)는 완전 복원 상태(fully resilient status), 부분 복원 상태(partially resilient status) 및 취약 상태(vulnerable status)를 포함하는 제 1 레벨을 포함할 수 있다. 하위 상태(sub-statuses) 및 하위-하위 상태(sub-sub-statuses)가 또한 정의될 수 있다. 예를 들어, 도 2c에 도시된 바와 같이, 부분 복원 상태는 기능 손실(a loss of capability)을 나타내는 제 1 하위 상태를 포함하고, 제 1 하위 상태는 지속 가능한 읽기 전용 모드에서의 동작을 나타내는 제 1 하위 상태 및 지속 불가능한 읽기 전용 모드에서 동작을 나타내는 제 2 하위 상태를 포함한다.
도 3a는 본 발명의 예시적인 실시 예에 따른 결함-복원 모드(fault resilient mode)에서의 동작 방법을 보여주는 순서도이다.
305에서, 호스트(105)는 스토리지 장치로부터 데이터를 송수신하고, 310에서, 호스트(105)는 스토리지 장치에서 에러가 발생했는지의 여부를 결정하고, 315에서, 스토리지 장치(110)는 내부 진단(internal diagnosis)을 수행하고 결함 복원 상태(예를 들어, 완전 복원, 부분 복원 또는 취약)을 결정하고, 320에서, 스토리지 장치(110)는 진단에 기초하여 성능, 용량 또는 기능(예를 들어, 읽기 전용 모드로 전환)을 수정하고, 325에서, 스토리지 장치(110)는 애플리케이션 프로그래밍 인터페이스(API)에 기초하여 호스트(105)로부터 요청시 상태를 게시하고, 330에서, 호스트(105)는 주어진 유형의 데이터를 스토리지 장치(110)로 또는 상태에 기초하여 주어진 대역폭에서 상이한 스토리지 장치(110) 장치로 라우팅한다.
도 3b는 본 발명의 예시적인 실시 예에 따른 결함 복원 모드에서의 동작 방법의 상세하게 보여주는 순서도이다. 방법은 스토리지 장치가 스토리지 장치를 전원 사이클링하거나 스토리지 매체를 포맷하여 복구가 가능한 제 1 결함 상태에 있다는 것을 스토리지 장치가 결정하는 단계(335); 스토리지 장치가 감소된 성능 또는 감소된 기능으로 또는 읽기 전용 모드에서 스토리지 장치를 동작시켜 부분 복구가 가능한 제 2 결함 상태에 있다는 것을 스토리지 장치가 결정하는 단계(340); 및 감소된 성능 또는 감소된 기능으로 또는 읽기 전용 모드에서 스토리지 장치를 동작시키는 단계(345)를 포함한다.
본 명세서에 개시된 실시 예의 수많은 실시 예 및 변형이 또한 구성될 수 있다. 필드 프로그래머블 게이트 어레이(FPGA; field programmable gate array) 또는 임베디드 프로세서(embedded processor)는 내부 블록 검사(internal block checks)를 수행하고 스토리지 장치(110)의 상태 상의 호스트(105)에 비동기 업데이트(asynchronous updates)를 보낼 수 있다.
이벤트가 발생하여 호스트(105)(예를 들어, 온도 또는 장치 내부의 다른 파라미터)로 전송될 수 있다. 호스트(105)는 통지(notification)를 제공하기 위한 장치 드라이버 특징(device driver feature)이 없는 경우, 소정의 스케줄에 스토리지 장치(110)를 폴링(polling)할 수 있다. FPGA 또는 임베디드 프로세서는 스토리지 장치(110)의 과거 성능(historical performance)을 모니터링하고, 기계 학습(machine learning)을 사용하여 예측 분석(predictive analytics)(예를 들어, 주어진 결함 복원 상태에 있을 가능성)을 제공할 수 있다.
명령이 NVMe 사양이 도입될 수 있고, 예를 들어,(스토리지 장치(110)의 상태를 보고하기 위해서) NVMe 사양의 원격 측정 정보(telemetry information)가 확장될 수 있다. 일부 실시 예는 예를 들어 이더넷 스토리지 장치(Ethernet storage device) 또는 키 값(KV) 스토리지 장치에서 구현될 수 있다.
일부 실시 예에서, 호스트는 (i) 스토리지 장치(110)의 상태에 기초하여, 상이한 데이터 유형(예를 들어, 이미지, 영상, 텍스트 또는 우선 순위 또는 우선 순위 데이터와 같은 파일 유형)을 송신할 수 있고(예를 들어, 우선 순위가 높은 데이터 또는 실시간 데이터는 부분적으로 취약한 모드에서 고려되는 장치에 기록되지 않을 수 있음), (ii) 스토리지 장치(110)가 부분적으로 취약한 상태이고 성능 상태가 낮은 경우의 전송 속도를 감소시키며; (iii) 스토리지 장치(110)가 부분적으로 취약하고 더 낮은 용량 상태에 있는 경우의 감소된 총 데이터량을 감소시키며; (iv) 보유 기간을 초과하는 것을 회피하기 위해서, 가능한 한 가장 큰 속도로 데이터를 판독하고, 스토리지 장치(110)가 부분적으로 취약한 지속 가능한 읽기 전용 모드에 있는 경우 어디에든 데이터를 저장하며(이러한 상황에서 호스트가 복사 할 데이터의 양 및 보유 기간을 기준으로 필요한 데이터 속도를 계산할 수 있다); (v) 데이터에 오류가 있는 경우, 취약한 스토리지 장치(110)로부터 데이터 "판독”을 무시하고, 호스트(105)에 의해 수신된 데이터를 삭제하기만 하고, (vi) 호스트와 스토리지 장치(110) 사이의 이벤트 타이밍을 제어하는 메시지에 기초하여 전원 사이클되거나 포맷되는 완전 복원 스토리지 장치(110)에 캐시에 판독/기록 입력 및 출력을 일시적으로 재라우트할 수 있다.
용량이 감소한 부분 취약 SSD 상의 FPGA는 수신된 데이터 기록을 필터링하고 데이터의 일부를 스토리지 장치(110)에 기록하기만 할 수 있다. 경우에 따라서, 필터링은 압축을 포함할 수 있다. 이런 FPGA는 호스트(105)로부터 다양한 유형의 데이터(예를 들어, 이미지, 비디오, 텍스트 또는 고우선 순위 또는 저우선 순위 데이터와 같은 파일 유형)을 수신할 수 있다.
예를 들어, FPGA는 부분적 취약 모드에 있는 스토리지 장치(110)에 상위 우선 순위 데이터를 기록해서는 안 된다는 것을 결정할 수 있다. FPGA는 호스트(105)에 거절 메시지를 송신하고 거절의 이유를 제공 할 수 있다. 대안적으로, FPGA는 부분적 복원 저용량 상태 스토리지 장치(110)에 기록하기 위해 특정 유형의 데이터(예를 들어, 이미지 데이터)를 필터링 할 수 있다. 예를 들어, 스토리지 장치(110)가 성능(예를 들어, 감속된 기록 속도로 동작함), 대기에 민감한 판독 및 기록이 거절될 수 있다.
일부 실시 예에서, 전술한 바와 같이, 스토리지 장치(110)는 "지속 가능한"(또는 "제 1") 읽기 전용 모드 및 “지속 불가능”(또는 “제2”) 읽기 전용 모드로 지칭될 수 있는 두 개의 읽기 전용 모드 중 하나로 동작할 수 있다.
지속 가능한 읽기 전용 모드에서, 스토리지 장치(110)는 호스트(105)로부터 수신할 수 있는 임의의 쓰기 명령을 단순히 거부할 수 있으며, 스토리지 장치(110)는 (i) 만료되지 않은 데이터에 대한 읽기 명령을 실행하려고 시도하거나 (ii) 임의의 성공적인 디코딩 시도로부터의 데이터 및 디코딩이 성공하지 못하면 에러 코드(데이터 항목을 판독할 수 없음에 대한 지시, 예를 들어, 0)를 리턴하여 모든 읽기 명령을 실행한다.
지속 가능한 읽기 전용 모드(sustainable read-only mode)에서, 스토리지 장치(110)는 스토리지 매체(125)의 보유 기간을 초과하여 읽기 요청을 계속 제공할 수 있다. 스토리지 장치(110)는, 이하에서 설명되는 바와 같이 내부 목적을 위해 스토리지 매체(125)에 기록을 행할 수 있지만, 호스트(105)로부터 임의의 쓰기 명령에 응답하여 에러 메시지를 반환하는 것을 제외하고는 아무런 조치를 할 수 없다.
스토리지 장치(110)는 보유 기간을 초과하는 데이터의 보유을 가능하게하기 위해, 스토리지 장치(110)은 곧 만료될 데이터를 이동시키는 "구조 공간(rescue space)"이라 불리는 공간을 할당할 수 있어서(예를 들어, 임계 수명을 초과하는 수명을 갖는 데이터, 임계 수명은 스토리지 매체(125)의 보유 기간을 기반으로 한다(예를 들어, 보유 기간의80%이다)), 데이터의 만료가 구조 공간의 보유 기간에 의해 연기된다.
구조 공간에 있는 데이터가 곧 만료될 경우 데이터 손실을 방지하기 위해 필요에 따라 가끔 구조 공간 내에서 다시 이동될 수 있다. 일부 실시 예에서, 스토리지 장치(110)는 예를 들어 그러한 이동을 수행하기 위해 저부하의 주기(periods of low load)를 이용하여 만료 이전에 데이터를 잘 이동시킨다. 전술한 바와 같이, 지속 가능한 읽기 전용 모드로의 전이는 불량 블록 관리 예비 공간의 소모에 의해 트리거 될 수 있다. 이러한 상황에서, 영향을 받는 플레인 또는 다이는 읽기 전용이 될 수 있으며, 이들에 저장된 모든 데이터가 구조 공간으로 재배치되면 스토리지 장치(110)의 물리적 어드레스 공간으로부터 제외될 수 있다.
스토리지 장치(110)는 전체 LBA 공간에서 호스트(105)로부터의 읽기 명령에 응답할 수 있다. 스토리지 장치(110)의 물리적 공간(예를 들어, 스토리지 매체(125)의 일부가 읽기 전용이 되고, 그 데이터가 구조 공간으로 이동(또는 이동되어 있기)되기 때문에)이기 때문에, 장치의 논리 공간은 변경되지 않고, 스토리지 장치(110)는 호스트(105)가 물리적 블록 어드레스(PBA) 공간에 매핑될 수 없는 LBA 공간 내에서 읽기 명령을 송신하는 경우 0을 반환할 수 있다.
구조 공간은 오버 프로비저닝 공간(overprovisioning space) 또는 스토리지 장치(110) 상의 임의의 미사용 공간(unused space)으로부터 할당될 수 있다. IO 결정성(IO determinism) 내의 세트(set) 또는 존 지정된 네임스페이스(zoned namespace)의 영역이 기록 가능하지 않는 경우, 모든 데이터가 재배치되면 세트 또는 존이 읽기 전용이며 실제 주소 공간에서 제외될 수 있다.
구조 공간은 네임 스페이스를 사용하여 동적으로 생성될 수 있다. 하나 이상의 네임 스페이스가 사용자 데이터에 사용될 수 있으며 구조 공간을 위해 추가 네임 스페이스가 생성될 수 있다. 스토리지 장치(110)가 지속 가능한 읽기 전용 모드로 전환된 경우에, 사용자 데이터용 하나 이상의 네임 스페이스의 크기가 감소할 수 있으며, 구조 공간용 네임 스페이스의 크기는 증가할 수 있다.
스토리지 매체(125)의 영역의 크기가 결함(예를 들어, 불량 블록 관리 예비 공간이 소모된)이 사용 가능한 구조 공간의 크기를 초과하면, 스토리지 장치(110)는 가장 먼저 만료되는 데이터(예를 들어, 가장 오래된 데이터)만을 이동시키거나, 중요한 것으로 태그되거나 주어진 파일 형식(예를 들어, 이미지, 비디오 또는 문서)에 관련된 데이터 만을 이동시키거나, 지속 형식의 데이터(예를 들어, 파일에 관련된 모든 데이터)를 이동시키고, 다른 데이터 뒤에 남겨 둔다. 중요한 것으로 간주되는 파일 유형 세트는 사용자 구성 가능(user configurable) 일 수 있다. KV 스토리지 장치(110)를 사용하는 일부 실시 예에서, 데이터 중요도는 키 값 쌍으로 압축되거나 인코딩 될 수 있다.
일부 실시 예에서, 스토리지 장치(110)는 이용 가능한 구조 공간의 양이 임계 크기(threshold size) 미만이고 따라서 지속 가능한 읽기 전용 모드에서의 동작을 지원하기에 불충분하다고 결정할 수 있다. 그 결과 스토리지 장치(110)는 지속 불가능한 읽기 전용 모드(unsustainable read-only mode)로 전환(transition)될 수 있다.
이러한 결정은 결함이 처음 감지 될 때 이루어질 수 있거나, 결함이 처음 감지 될 때 스토리지 장치(110)가 처음에 지속 가능한 읽기 전용 모드(sustainable read-only mode)로 전환하고, 일정 시간 후에 구조 공간이 임계 크기 미만으로 감소할 때까지 소비된다는 것일 수 있다.
예를 들면, 스토리지 매체(125)의 결함 부분에서 데이터의 계속적인 만료(continuing expiration)까지 소비될 수 있다. 그리고 스토리지 장치(110)는 지속 가능한 읽기 전용 모드에서 지속 불가능한 읽기 전용 모드로 전환될 수 있다. 지속 가능한 읽기 전용 모드에서 지속 불가능한 읽기 전용 모드로 전환할 때, 스토리지 장치(110)는 호스트(105)에 전환을 통지할 수 있고, 호스트(105)는 데이터가 만료되기 전에 스토리지 장치(110)로부터 다른 스토리지 장치로, 가능한 한 많은 데이터를 복사하려고 시도할 수 있다.
경우에 따라 데이터가 하루 또는 한 시간 동안 손실될 수 있다. 이와 같이, 스토리지 장치(110)의 FPGA는 스토리지 장치(110)가 지속 가능한 읽기 전용 모드로 전환할 때 전송을 용이하게 하기 위해 드라이브 상의 데이터의 특성을 모니터링할 수 있다.
예를 들면, 데이터의 특성은 오래되거나 태그되거나 연속되거나 또는 파일 유형별 특성(e.g., old, tagged, continuous, or by file-type)일 수 있다. FPGA는 우선 순위에 따라(in order of precedence) 데이터를 큐잉(queue)하거나 구조 공간으로 전송할 데이터를 오더(order)할 수 있다. 데이터가 구조 공간으로 이동할 때 데이터를 압축할 수 있다. 일부 실시 예는 예를 들어 이더넷 스토리지 장치 또는 키-값(KV) 스토리지 장치에서 구현될 수 있다.
도 4는 본 발명의 예시적인 실시 예들에 따른 스토리지 장치(110)의 개략적인 데이터 레이아웃 다이어그램(schematic data layout diagram)이다. 블록 수명 테이블(405)은 스토리지 장치(110)의 각 블록의 보유 기간을 나열하고, 매핑 테이블(410)은 논리적 블록 주소에서 물리적 블록 주소로의 매핑을 나열한다.
스토리지 장치(110)가 지속 가능한 읽기 전용 모드로 전환되면, 스토리지 장치(110)는 결함이 있는 사용 공간(faulty used space, 415) (결함 상태의 영향을 받는 물리적 공간)의 데이터를 구조 공간(420)으로 복사한다. 정상 사용 공간(normal used space, 425)의 데이터는 스토리지 장치(110)가 (지속 가능한 읽기 전용 모드가 아닌) 정상 동작 모드에 있는 경우처럼 처리된다. 결함 조건은 물리적 공간의 손실(loss of physical space)을 초래하기 때문에, 사용된 LBA 공간(430)의 크기에 대응하는 감소가 있다. 이전에 사용 가능한 LBA 공간 중 일부는 미사용 LBA 공간(435)이 된다. 컨트롤러(120)에 의해 실행되는 펌웨어(440)는, 위에서 설명한 대로, 데이터가 이동되고 테이블이 업데이트 되도록 할 수 있다.
도 5a는 본 발명의 예시적인 실시 예에 따른 지속 가능한 읽기 전용 모드로 전환하는 방법을 보여주는 순서도이다.
505에서, 호스트(105)는 스토리지 장치로부터 데이터를 송수신한다. 510에서, 호스트(105)는 스토리지 장치에서 에러가 발생했는지를 결정한다. 515에서 스토리지 장치는 내부 진단을 수행하고 지속 가능한 읽기 전용 모드에서 결함 복원 상태를 부분 복원으로 결정한다. 520에서, 선택적으로 FPGA는 드라이브에서 유효한 데이터의 특성을, 예를 들면, 데이터 유형, 사용 기간에 근거해서 모니터링한다. 525에서, 스토리지 장치(110)는 데이터의 사용 기간(age)이 보유 기간에 가까워지면 유효한 데이터를 구조 공간으로 재배치한다; 530에서, 스토리지 장치(110)는 데이터를 플러시(flush) 하는 호스트(105)에 구조 공간의 상태 및 내용에 관한 정보를 선택적으로 전송할 수 있다.
도 5b는 본 발명의 예시적인 실시 예들에 따라 지속 가능한 읽기 전용 모드에서 동작하기 위한 방법의 세부 사항을 보여주는 순서도이다. 이 방법은 스토리지 장치가 제 1 읽기 전용 모드에서 스토리지 장치를 동작시킴으로써 부분 복구(partial recovery)가 가능한 결함 상태에 있음을 스토리지 장치에 의해 결정하는 단계(535); 및 스토리지 장치의 페이지에 저장된 제 1 데이터 아이템(data item)의 사용 기간(age)이 임계 사용 기간(threshold age)을 초과했다고 결정하고 제 1 데이터 아이템을 스토리지 장치 내의 구조 공간(rescue space)에 복사함으로써 스토리지 장치를 제 1 읽기 전용 모드로 동작시키는 단계(540)를 포함한다.
일부 실시 예에서, 위에서 언급한 바와 같이, 스토리지 장치(110)의 어레이 및 볼륨 관리자(115)를 포함하는 RAID-0 시스템은 RAID-0 시스템의 스토리지 장치(110) 중 임의의 것을 읽기 전용 모드(예를 들면, 지속 가능한 읽기 전용 모드)로의 전환을 수용하도록 구성될 수 있다. 정상 동작에서, 볼륨 관리자(115)는 스토리지 장치(110)의 어레이에 걸쳐 데이터를 스트라이핑 할 수 있다(responsible for striping). 예를 들어, 스토리지 장치(110)의 어레이의 각각의 스토리지 장치(110)에 각 스트라이프의 하나의 스트립을 기록할 수 있다. 각 스트라이프는 그러한 스트립으로 구성될 수 있다.
이러한 시스템에서, 스토리지 장치(110)의 어레이 중 임의의 어레이가 읽기 전용 모드(또는 "읽기 전용 상태")로 전환될 때, RAID-0 시스템은 동작 모드 ("비상 모드(emergency mode)"로 지칭될 수 있음)로 전환된다. 그리고 스토리지 장치(110)의 어레이를 위한 볼륨 관리자(115)는, (i) 메타 데이터 및 결함이 있는 사용자 장치(110)로부터 구조된 사용자 데이터를 위해 영향을 받지 않는 나머지 스토리지 장치(110) (읽기-쓰기 상태로 남아 있는 장치) 각각에 구조 공간을 할당한다. 그리고 (ii) 매핑 테이블( "비상 매핑 테이블"로 지칭될 수 있음)을 유지한다.
각 스토리지 장치(110) 상의 구조 공간은 n 개의 스트립을 저장할 수 있다. 여기서 n=R/(스트립 크기), R=C/M, C는 스토리지 장치(110) 어레이의 각 스토리지 장치의 용량이다. 볼륨 관리자(115)는 호스트에서 예를 들어, 하드웨어 또는 소프트웨어 또는 펌웨어에서, 또는 하드웨어, 소프트웨어 및 펌웨어의 조합으로 구현될 수 있다. 또는, RAID-0 시스템의 RAID 컨트롤러(예를 들어, 호스트와 별도의 인클로저(enclosure)에 보관될 수 있는)에서도 구현될 수 있다.
일부 실시 예에서, 볼륨 관리자(115)는 FPGA에서 구현된다. RAID-0 시스템은 독립형일 수 있고(self-contained), 호스트의 관점에서 RAID-0 시스템이 단일 스토리지 장치(110)처럼 동작하도록 스토리지 장치(110)의 어레이를 가상화(virtualize)할 수 있다. 일반적으로 볼륨 관리자는 처리 회로(아래에서 좀 더 자세하게 설명됨)일 수 있다. 처리 회로는 볼륨 관리자에 의해 수행되는 것으로 여기에 설명된 동작을 수행하도록 구성된(예를 들어, 적합한 소프트웨어 또는 펌웨어에 의해) 회로일 수 있다.
RAID-0 시스템이 비상 모드로 동작하고 호스트(105)로부터 쓰기 명령이 수신되어 스토리지 장치(110)의 어레이에 스트라이프를 기록해야 하는 경우, 볼륨 관리자(115)는 비상 매핑 테이블을 확인하여 스트라이프가 등록되었는지(registered) 여부를 결정할 수 있다. 즉, 스트라이프에 대한 항목(entry)이 이미 만들어졌는지 여부를 결정할 수 있다.
아직 엔트리가 생성되지 않은 경우 (즉, 스트라이프가 "개방 매핑된(open-mapped)", 즉 등록되지 않은 경우), 볼륨 관리자(115)는 일반적으로 스트립이 있었던 위치를 표시하기 위해 비상 매핑 테이블에 엔트리를 만들 수 있다. 그리고 엔트리는 결함이 있는 스토리지 장치(110) (읽기 전용 모드로 전환된 스토리지 장치(110))에 기록될 수 있다.
비상 매핑 테이블이 이미 스트라이프에 대한 항목을 포함하는 경우, 해당 항목은 일반적으로 결함이 있는 스토리지 장치(110)에 기록되었을 스트립을 기록할 위치를 결정하는 데 사용될 수 있다. 어느 경우에나, 볼륨 관리자 (115)는 도 6a에 도시된 바와 같이, 스토리지 장치 (110)의 어레이에 각 스트립을 기록하고, 다른 스토리지 장치(110)에 공간(space)을 구조(rescue)하기 위해 일반적으로 결함이 있는 스토리지 장치(110)에 기록되었을 스트립(605)을 기록한다.
스토리지 장치(110)의 어레이로부터 스트라이프를 읽어야 하는 읽기 명령이 호스트(105)로부터 수신되면, 볼륨 관리자(115)는 스트라이프에 대한 엔트리가 생성되었는지 여부를 결정하기 위해 비상 매핑 테이블을 확인한다.
입력이 이루어지지 않은 경우, 도 6b에 도시된 바와 같이,, 볼륨 관리자(115)는 정상적인 동작(ordinary operation)에서 결함이 있는 스토리지 장치(110)를 포함하여 각 스토리지 장치(110)로부터 스트립을 읽는 것처럼 스트라이프를 읽는다. 비상 매핑 테이블이 스트라이프에 대한 항목(entry)을 포함하면, 엔트리는 일반적으로 결함이 있는 스토리지 장치(110)로부터 판독되었을 스트립을 읽을 위치를 결정하는 데 사용된다.
일반적으로 결함이 있는 스토리지 장치(110)에 기록되었을 스트립의 재매핑은 예를 들어 다음과 같이 이루어질 수 있다. 스토리지 장치(110) 어레이의 각 스토리지 장치(110)는 0과 M-1 사이의 숫자일 수 있는 드라이브 식별 번호(drive identification number, 또는 "드라이브 ID")를 가질 수 있다. 여기서 M은 스토리지 장치들의 어레이에 있는 스토리지 장치(110)의 수이다.
볼륨 관리자(115)는 드라이브 식별 번호를 재할당(reassign)할 수 있다. 예를 들어, 스토리지 장치들(110) 어레이의 각 스토리지 장치(110)에 등록된 스트라이프에 대한 읽기 또는 쓰기 동작을 수행하는 데 사용될 대체 드라이브 식별 번호(alternate drive identification number)를 할당할 수 있다. 등록되지 않은 스트라이프를 위한 읽기 동작 경우 원래 드라이브 식별 번호를 계속 사용할 수 있다. 다음 공식은 대체 드라이브 식별 번호를 생성하는 데 사용될 수 있다.
If drive ID < faulty drive ID,
new drive ID = drive ID
Otherwise,
new drive ID =((drive ID - 1) +(M - 1)) mod(M-1)
이것의 효과는 (i) 결함이 있는 스토리지 장치의 원래 드라이브 식별 번호(original drive identification number)보다 작은 식별 번호를 가진 각 스토리지 장치에 각각의 원래 드라이브 식별 번호를 할당하고, (ii) 제 1 스토리지 장치의 원래 드라이브 식별 번호보다 큰 식별 번호를 갖는 각각의 스트로지 장치에, 각각의 원래 드라이브 식별 번호가 1 미만인 것을 할당할 수 있다.
대체 드라이브 번호(alternate drive numbers)를 사용하여, 일반적으로 결함이 있는 스토리지 장치(110)에 기록된 스트립이 기록될 수 있는 타겟 드라이브(target drive)는 공식을 사용하여 식별될 수 있다. Target Drive ID = sid %(M-1). 여기서 타겟 드라이브 ID는 타겟 드라이브의 대체 드라이브 식별 번호(alternate drive identification number)이고, sid는 일반적으로 결함이 있는 스토리지 장치(110)에 기록되었을 스트립의 스트립 식별자(strip identifier)이며, "%"는 모듈로 연산자(modulo operator)이다.
도 6c는 본 발명의 예시적인 실시 예들에 따라 드라이브 1이 읽기 전용 모드로 전환된 4 개의 스토리지 장치(110) (즉, M=4)를 갖는 RAID-0 시스템의 개략도이다. Stripe 1이 기록될 때 타겟 드라이브 ID는 방정식에 의해 암시적으로(implicitly) 결정될 수 있다. 타겟 드라이브 ID = 스트립 ID %(M-1) = 1.
즉, 타겟 드라이브는 대체 드라이브 식별 번호 1(즉, 드라이브 2)을 갖는 스토리지 장치(110)이다. 드라이브 내에서 구조 공간은 크기가 스트립 크기와 동일한 스트립( "구조 스트립(rescue strips)"또는 "R- 스트립"이라고 함)으로 분할될 수 있다. 비상 매핑 테이블은 항목(1,0) (첫 번째 요소는 스트라이프 ID(Stripe 1)이고, 두 번째 요소는 타겟 드라이브의 R- 스트립 ID)이 포함될 수 있다. 따라서 비상 매핑 테이블의 항목(1,0)은 Strip(1,1)이 R-Strip(1,0)에 매핑되었음을 의미한다.
RAID-0 시스템은 스토리지 장치(110)의 어레이 중 하나 이상에 의해 지속 가능한 읽기 전용 모드 또는 지속 불가능한 읽기 전용 모드로의 전환을 수용하도록 구성될 수 있다. 지속 불가능한 읽기 전용 모드로 전환하는 경우, 결함이 있는 스토리지 장치(110)의 등록된 스트립은 다른 장치의 구조 공간에 영구적으로 기록될 수 있다.
지속 불가능한 읽기 전용 모드로 전환하는 경우, 볼륨 관리자(115)는 결함이 있는 스토리지 장치(110)에서 영향을 받지 않는 스토리지 장치(110)로 데이터를 이동(migrate)할 수 있다. 예를 들어, 볼륨 관리자(115)는 그것이 만료되기 전에 결함이 있는 스토리지 장치(110)로부터 모든 데이터를 이동하기에 충분한 속도로 이동할 수 있다. 서버는 데이터 양과 만료 전 남은 시간을 기준으로 이 비율을 계산할 수 있다.
도 7a는 본 발명의 예시적인 실시 예들에 따른 RAID-0 시스템을 동작시키는 방법을 보여주는 순서도이다.
705에서, RAID-0 시스템의 스토리지 장치(110)는 결함(fault)을 갖고 읽기 전용 모드로 전환한다; 710에서, 영향을 받는 스토리지 장치(110)는 내부 진단을 수행하고 그 결함 복원 상태가 부분 복원이 있고 읽기 전용이라고 결정한다; 715에서, 볼륨 관리자(115)는 영향을 받은 스토리지 장치(110)가 읽기 전용 모드에 있다고 결정하고, ("라이브(live)") 영향을 받지 않은 스토리지 장치의 ID를 재할당한다(reassign); 720에서, 볼륨 관리자(115)는 쓰기 작업을 수신하고, 비상 매핑 테이블에 항목을 추가한다. 이것은 볼륨 관리자(115)가 영향을 받는 장치의 스트립이 타겟 (영향을 받지 않는) 스토리지 장치 (110)로 리디렉션되고, 전체 스트립이 영향을 받지 않은 스토리지 장치의 새로운 드라이브 ID에 기초하여 타겟 (영향을 받지 않는) 스토리지 장치의 구조 공간에 기록되는 것을 표시하기 위함이다; 그리고, 725에서, 볼륨 관리자(115)는 호스트(105)로부터 읽기 명령을 수신하고, 영향을 받는 스토리지 장치의 스트립이 타겟 (영향을 받지 않는) 스토리지 장치의 구조 공간으로부터 읽는 동안에, RAID 시스템의 영향을 받지 않는 라이브 스토리지 장치(110)로부터 스트라이프의 모든 스트립을 읽는다.
도 7b는 본 발명의 예시적인 실시 예들에 따른 RAID-0 스토리지 시스템을 동작시키기위한 방법의 세부 사항을 보여주는 순서도이다.
방법은, 730에서, 제 1 스토리지 장치가 읽기 전용 상태이고 제 2 스토리지 장치가 읽기-쓰기 상태에 있다고 결정하는 단계; 735에서, 제 1 스트라이프의 일부를 제 2 스토리지 장치에 기록하고 제 1 스트라이프에 대한 매핑 테이블에 엔트리를 생성함으로써 제 1 스트라이프의 쓰기 동작을 스토리지 시스템에 수행하는 단계; 740에서, 제 1 스토리지 장치 및 제 2 스토리지 장치로부터 제 2 스트라이프의 일부를 판독함으로써, 스토리지 시스템으로부터 제 2 스트라이프의 제 1 읽기 동작을 수행하는 단계; 및 745에서, 매핑 테이블이 제 1 스트라이프에 대한 엔트리를 포함한다고 결정하고 제 2 스토리지 장치로부터 제 1 스트라이프의 일부를 판독함으로써 스토리지 시스템으로부터 제 1 스트라이프의 제 2 판독 동작을 수행하는 단계를 포함한다.
호스트 (105) 또는 컨트롤러 (120)와 같은 본 명세서에 설명된 다양한 요소는 처리 회로일 수 있거나 이를 포함할 수 있다. "처리 회로(processing circuit) " 또는 “처리 수단(means for processing)”이 라는 용어는 본 명세서에서 데이터 또는 디지털 신호를 처리하는 데 사용되는 하드웨어, 펌웨어 및 소프트웨어의 임의의 조합을 의미하는 것으로 사용된다.
처리 회로 하드웨어(processing circuit hardware)는, 예를 들어, ASIC(application specific integrated circuits), 범용 또는 특수 목적의 중앙 처리 장치(CPUs, general purpose or special purpose central processing units), 디지털 신호 프로세서(DSPs, digital signal processors), 그래픽 처리 장치 (GPUs, graphics processing units), 및 필드 프로그램 가능한 논리 장치(FPGAs, programmable logic devices such as field programmable gate arrays)와 같은 프로그래머블 로직 장치(programmable logic devices)를 포함할 수 있다.
처리 회로에서, 본 명세서에서 사용되는 바와 같이, 각각의 기능(function)은 그 기능을 수행하도록 구성된 하드웨어, 즉, 하드 와이어(hard-wired)에 의해, 또는, 일시적인 저장 매체에 저장된 명령들을 실행하도록 구성된, CPU와 같은 보다 범용 목적의 하드웨어(general-purpose hardware)에 의해 수행된다. 처리 회로는 단일 인쇄 회로 기판(PCB) 상에 제조되거나 여러 개의 상호 연결된 PCB(interconnected PCBs)에 분산(distributed)될 수 있다. 처리 회로는 다른 처리 회로들을 포함할 수 있다. 예를 들어, 처리 회로는 PCB 상에 상호 연결된 2개의 처리 회로, FPGA 및 CPU를 포함할 수 있다.
본 명세서에서 사용된 바와 같이, 어떤 것의 "부분(a portion of)"은 그것의 "적어도 일부(at least some of)"를 의미한다. 그리고 마찬가지로, 어떤 것의 "부분(a portion of)"은 그것의 전부(all) 또는 전부보다 적음(less than all)을 의미할 수도 있다. 따라서 어떤 것의 "부분(a portion of)은 특별한 경우로서 전부(entire thing)를 포함할 수 있다. 즉, 전부(entire thing)는 그것의 부분(a portion of the thing)에 대한 예일 수 있다. 본 명세서에서 사용된 바와 같이, 용어 "또는(or)"은 "및/또는(and/or)"으로 해석되어야 한다. 예를 들어 "A 또는 B"는 "A" 또는 "B" 또는 "A 및 B" 중에서 어느 하나를 의미한다.
본 명세서의 배경 기술을 설명하는 섹션에서 제공되는 배경 기술은 맥락을 설정하기 위해서만 포함되며, 이 섹션의 내용은 종래 기술인 것으로 인정되지 않는다. 예를 들어, 본 명세서에 포함된 임의의 시스템 다이어그램(system diagrams)에서, 설명된 임의의 구성 요소(components) 또는 구성 요소의 임의의 조합(combination)은 여기에 포함된 임의의 순서도(flow chart)의 동작 중 하나 또는 그 이상을 수행하는 데 사용될 수 있다. 또한, (i) 동작은 예시적인 동작(example operations)이며, 명시적으로 다루지 않은(not explicitly covered) 다양한 추가 단계를 포함할 수 있으며, (ii) 동작의 시간적 순서(temporal order of the operations)는 변경될 수 있다.
본 명세서에서 사용된 바와 같이, 방법(예를 들면, 조절(adjustment)) 또는 제 1 수량(quantity, 예를 들어, 제 1 변수(variable))이 제 2 수량 (예를 들어, 제 2 변수)에 "기반(based on)"하는 것으로 언급될 때, 이는 제 2 수량이 제 1 수량, 예를 들어 제 2 수량에 영향을 미친다는 것을 의미한다. 제 1 수량을 계산하는 함수에 대한 입력 (예 : 단 하나의 입력 또는 여러 입력 중 하나) 일 수 있거나, 제 1 수량이 제 2 수량과 동일할 수 있거나, 제 1 수량이 예를 들어 제 2 수량과 동일한 위치 또는 메모리의 위치에 저장될 수 있다.
본 명세서에서 비록 용어 "제 1(first)", "제 2(second)", "제 3(third)" 등이 다양한 요소(elements), 구성 요소(components), 영역(regions), 층(layers) 및 또는 섹션(sections)을 설명하기 위해 사용될 수 있지만, 이러한 요소(elements), 구성 요소(components), 영역(regions), 층(layers) 및 또는 섹션(sections)은 이러한 용어에 의해 제한되어서는 안되는 것으로 해석되어 할 것이다. 이러한 용어는 단지 하나의 요소(elements), 구성 요소(components), 영역(regions), 층(layers) 및 또는 섹션(sections)을 다른 요소(elements), 구성 요소(components), 영역(regions), 층(layers) 및 또는 섹션(sections)과 구별하는 데 사용될 수 있다. 따라서, 본 명세서에서 설명된 제 1 요소, 제 1 구성 요소, 제 1 영역, 제 1 층 또는 제 1 섹션은 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서, 제 2 요소, 제 2 구성 요소, 제 2 영역, 제 2 층 또는 제 2 섹션으로 사용될 수 있다.
공간적으로 상대적인 용어인 “아래(beneath)”, “아래(below)”, “하부(lower)”, “위(above)”, “상부(upper)” 등은 도면에 도시되어 있는 것과 같이 하나의 소자 또는 특징(feature)의 다른 소자(들) 또는 특징 (들)과의 관계를 용이하게 기술하기 위하여 사용될 수 있다. 공간적으로 상대적인 용어는 도면에 도시되어 있는 방향에 더하여 사용 시 또는 동작 시 장치의 다른 방향을 포함하는 용어로 이해될 것이다.
예를 들어, 만약 도면 내의 장치가 뒤집어 진다면, “아래(below)” 또는 “아래(beneath)”로 기술된 소자는 다른 소자들 또는 특징들의 “위(above)”에 놓여질 것이다. 따라서, 예시적인 용어 “아래”는 아래와 위의 방향을 모두 포함할 수 있다. 장치는 다른 방향(90도 회전되거나 또는 다른 방향들)으로 배향될 수 있고 이에 따라 공간적으로 상대적인 설명들은 배향에 따라 해석될 수 있다. 또한, 한 층이 두 층 사이에 있는 것으로 언급될 때, 그것은 두 층 사이의 유일한 층일 수 있거나 하나 이상의 중간 층이 존재할 수도 있음을 또한 이해할 것이다.
본 명세서에서 사용된 용어는 특정 실시 예(particular embodiments)를 설명하기 위한 것이며, 본 발명을 제한하려는 의도가 아니다. 본 명세서에서 사용되는 용어인, "실질적으로(substantially)", "약(about)" 및 이와 유사한 용어(similar terms)는 정도의 용어(terms of degree)가 아니라 근사값의 용어(terms of approximation)로 사용될 수 있다. 또한, 이러한 용어는 당업자가 인식한 측정되거나 계산된 값(measured or calculated values)의 고유한 편차(inherent deviations)를 설명하기 위한 의도로 사용될 수 있다.
본 명세서에서 사용된 바와 같이, 단수 형태 "a" 및 "an"은 문맥상 명백하게 달리 나타내지 않는 한, 복수 형태도 포함하는 의도를 갖는 것으로 해석될 수 있다. 본 명세서에서 사용될 때, "포함한다(comprises)" 및/또는 "포함하는(comprising)" 이라는 용어는 언급된 특징(features), 정수(integers), 단계(steps), 연산(operations), 요소(elements) 및/또는 구성 요소(components)의 존재를 지정하지만, 하나 이상의 다른 특징(features), 정수(integers), 단계(steps), 연산(operations), 요소(elements), 구성 요소(components) 및/또는 그것들의 그룹(group)의 존재나 추가를 배제하지는 않는 것으로 해석될 수 있다.
본 명세서에서 사용되는 용어 "및/또는(and/or)"은 하나 이상의 연관된 열거된 항목들 중에서 임의의 조합 또는 모든 조합을 포함할 수 있다. "최소 하나 이상의(at least one of)"와 같은 표현은 요소 목록 앞에 올 때 전체 요소 목록을 수정하고 목록의 개별 요소를 수정하지 않는다.
또한, 본 발명의 실시 예를 설명할 때 "할 수 있다(may)"라는 용어는 "본 발명의 하나 이상의 실시 예(one or more embodiments of the present disclosure)"를 의미한다. 또한, "예시적인(exemplary)"이라는 용어는 예 또는 예시(example or illustration)를 나타내는 의도로 해석될 수 있다.
본 명세서에서 사용되는 용어 "사용하다(use)", "사용하는(using)" 및 "사용된(used)"은 각각 "활용하다(utilize)", "활용하는(utlizing)" 및 "활용된(utilized)"이라는 용어와 동의어로 간주될 수 있다.
하나의 요소 또는 계층이 다른 요소 또는 계층의 "위에 있거나(on)", "연결되거나(connected to)", "커플되거나(coupled to)" 또는 "인접한(adjacent to)" 것으로 언급될 때, 다른 요소 또는 계층과 직접적으로 위에 있거나, 직접적으로 연결되거나 커플되거나 인접할 수 있고, 또한 하나 이상의 요소 또는 계층이 그 중간에 존재할 수 있는 것으로 해석될 수 있다.
반대로, 하나의 요소 또는 계층이 다른 요소 또는 계층에 "직접 위에 있거나(directly on)", "직접 연결되거나(directly connected to)", "직접 커플되거나(directly coupled to)" 또는 "바로 인접한(immediately adjacent to)" 것으로 언급될 때, 그 중간에 다른 요소 또는 계층이 존재하지 않는 것으로 해석될 수 있다.
본 명세서에서 인용된 임의의 수치 범위(numerical range)는 인용된 범위 내에 포함된 동일한 수치 정밀도(same numerical precision)의 모든 하위 범위(sub-ranges)를 포함하도록 의도된 것으로 해석될 수 있다. 예를 들어, "1.0에서 10.0"의 범위는 언급된 최소값 1.0과 언급된 최대값 10.0 사이의 모든 하위 범위, 예를 들면, 최소값 1.0 이상이고 최대값 10.0 이하(예를 들면, 2.4~7.6)를 포함하는 것으로 해석될 수 있다.
본 명세서에 언급된 임의의 최대 수치 제한(maximum numerical limitation)은 그 안에 포함된 더 낮은 모든 수치 제한을 포함하는 의도를 갖는 것으로 해석될 수 있다. 본 명세서에 언급된 임의의 최소 수치 제한(minimum numerical limitation)은 거기에 포함된 더 높은 모든 수치 제한을 포함하는 의도를 갖는 것으로 해석될 수 있다.
본 발명의 일부 원리는 스토리지 장치의 결함의 경우에 하나 이상의 결함 복원(FR: fault resilient) 모드에서 계속 동작할 수 있는 스토리지 장치에 관한 것이다. 예를 들어, 스토리지 장치는 스토리지 장치의 결함으로부터 스토리지 시스템이 신속하게 및/또는 효율적으로 복구할 수 있도록 제한된 방식으로(in a limited manne) 계속 동작할 수 있다.
일부 실시 예에서, 하나 이상의 결함 복원 모드에서 동작하는 스토리지 장치는 예를 들어 읽기 전용 모드에서 동작함으로써 적어도 부분적인 읽기 기능을 가질 수 있다.
일부 실시 예에서, 적어도 부분적인 읽기 기능(at least partial read capability)을 갖는 하나 이상의 결함 복원 모드(fault resilient modes)를 갖는 스토리지 장치는 스토리지 장치들의 그룹에 대한 복구 체계(recovery scheme)를 구현하는 데 사용될 수 있다. 스토리지 장치들의 그룹에는 하나 이상의 패리티 공간(parity spaces)이 재구성 동작(rebuild operation)이 결함이 있는 스토리지 장치로부터 정보를 복구하기 위한 구조 공간으로 사용될 수 있다.
예를 들어, 스토리지 장치들 그룹은 단일 (경우에 따라 더 큰) 가상 스토리지 장치로 나타날 수 있는 리던던트 어레이(redundant array)에 구성될 수 있다. 적어도 부분적인 읽기 기능을 가진 결함 복원 모드를 갖는 제 1 스토리지 장치에 결함이 발생한 경우, 리던던트 어레이는 결함이 있는 스토리지 장치의 데이터가 제 1 스토리지 장치로부터의 데이터를 제 2 스토리지 장치의 패리티 공간으로 복사함으로써 제 2 스토리지 장치의 패리티 공간에서 사전 재구성될(pre-rebuilt) 있는 재구성 동작(rebuild operation)을 구현할 수 있다.
일부 실시 예에서, 스토리지 장치들 그룹은 결함이 있는 스토리지 장치의 적어도 일부를 대체(replacement)하는 것으로 동작하는 제 2 스토리지 장치의 패리티 공간의 적어도 일부와 함께 무기한으로(indefinitely) 계속 동작할 수 있다. 이러한 실시 예에서, 패리티는 제 2 스토리지 장치의 패리티 공간의 부분으로 대체될 수 있는 제 1 스토리지 장치의 부분에 대해 구현되지 않을 수 있다.
일부 실시 예에서, 재구성 동작은 제 2 스토리지 장치의 패리티 공간으로부터 대체 스토리지 장치(replacement storage device)로 사전 재구성된 데이터의 일부 또는 전부를 복사함으로써 계속될 수 있다. 스토리지 장치들 그룹은 예를 들어 결함이 있는 스토리지 장치로부터 복구된 데이터에 대해 계산되는 패리티 정보와 함께 정상 동작(normal operation)으로 돌아갈 수 있다.
일부 실시 예에서, 스토리지 시스템은 결함 있는 스토리지 장치로부터의 데이터를 제 2 스토리지 장치의 패리티 공간으로 사전 재구성하는 동안 결함 있는 스토리지 장치로부터의 읽기 동작을 계속할 수 있다. 재구성 작업 중에 읽기 작업이 결함이 있는 스토리지 장치에서 데이터를 읽으려고 하는 경우, 재구성 포인트(rebuild point)에 따라 결함 있는 스토리지 장치로부터 및/또는 제 2 스토리지 장치의 패리티 공간에 있는 해당 위치로부터 직접 읽을 수 있다.
일부 실시 예에서, 스토리지 시스템은 결함이 있는 스토리지 장치로부터의 데이터를 제 2 스토리지 장치의 패리티 공간으로 사전 재구성하는 동안에, 결함이 있는 스토리지 장치를 위한 쓰기 동작을 계속할 수 있다. 쓰기 동작이 재구성 동작 중에 결함이 있는 스토리지 장치에 데이터를 쓰려고 시도하면, 쓰기 데이터는 제 2 스토리지 장치의 패리티 공간의 해당 위치에 대신 기록될 수 있다.
구현 세부 사항에 따라, 이러한 기능 중 하나 이상은 I/O 작업, 패리티 계산(parity calculations) 등을 줄일 수 있으며, 스토리지 시스템이 패리티 계산 및/또는 동기화 없이도(without parity calculations and/or synchronization) 데이터를 신속하게 복구하도록 할 수 있다.
본 명세서에 개시된 원리는 독립적인 유용성을 가지며 개별적으로 구현될 수 있다. 모든 실시 예가 모든 원리를 이용할 수 있는 것은 아니다. 그러나 원칙은 다양한 조합으로 구현될 수도 있으며, 그 중 일부는 시너지 방식으로(in a synergistic manner) 개별 원칙의 이점을 증폭시킬 수 있다.
일부 실시 예에서, 스토리지 시스템은 가상 스토리지 장치(virtual storage device)로 나타날 수 있는 RAID(redundant array of independent drives)를 구현할 수 있다. RAID 스토리지 시스템의 일부 실시 예는 페일된 드라이브(failed drive)에서 데이터를 재구성하는 데 사용될 수 있는 패리티 정보를 포함할 수 있다.
도 8은 본 발명의 예시적인 실시 예에 따른 RAID-4 스토리지 시스템에 대한 매핑 방식의 실시 예를 보여준다. 일부 실시 예에서, 드라이브는 익스텐트(extents)라고 하는 데이터 저장 공간(data storage space)의 연속적인 영역(contiguous regions)으로 분할될 수 있다.
일부 실시 예에서, 익스텐트는 전체 드라이브(entire drive)를 포함 할 수 있다. 따라서, 일부 실시 예 및 본 명세서에서, 용어 범위는 문맥 상 달리 명백하지 않는 한 드라이브 또는 스토리지 장치와 상호 교환적으로 (interchangeably) 사용될 수 있다. 각 드라이브는 여러 드라이브에 걸쳐 있는 스트라이프 길이(stipe length)를 가질 수 있는 스트라이프를 집합적으로(collectively) 형성할 수 있는 하나 이상의 스트립을 포함할 수 있다. 각 스트립은 하나 이상의 데이터 블록으로 더 분할될 수 있다. 이 예는 패리티 블록(parity blocks)이 모두 단일 드라이브 (예를 들면, Extent 0)에 저장될 수 있기 때문에 비회전 패리티(non-rotating parity)를 갖는 것으로 지칭될 수 있다.
단일 드라이브 장애(single drive failure)가 발생한 경우, 장애가 발생한 드라이브의 데이터 블록은 해당 패리티 블록의 배타적 OR 연산(exclusive-OR operation)과 다른 정상 드라이브(healthy drives)의 나머지 데이터 블록을 통해 복구될 수 있다. 또는 페일된 드라이브에 패리티 블록이 포함된 경우 다른 정상 드라이브의 데이터 블록에 대한 배타적 OR 연산을 통해 패리티 블록을 다시 계산할 수 있다.
도 9는 본 발명의 예시적인 실시 예에 따른 RAID-5 스토리지 시스템에 대한 매핑 방식의 실시 예를 보여준다. 도 9에 도시된 실시 예는 도 8에 도시된 실시 예와 유사 할 수 있다. 그러나 도 9에 도시된 실시 예는 패리티 블록을 갖는 스트립이 다른 스트라이프에 대해 다른 드라이브로 회전할 수 있는 회전 패리티(rotating parity)를 가질 수 있다.
도 10a는 본 발명의 예시적인 실시 예들에 따른 적어도 하나의 결함 복원 스토리지 장치를 포함하는 리던던트 어레이 스토리지 시스템에 대한 매핑 방식의 실시 예를 보여준다. 도 10a에 도시된 실시 예는 리던던트 어레이(1000)로 구성된 제 1 스토리지 장치(1002) 및 제 2 스토리지 장치(1004)를 포함할 수 있다. 리던던트 어레이(1000)는 임의의 유형의 매핑 스킴(1010)을 사용하여 가상 저장 공간(1008)을 제 1 및 제 2 스토리지 장치(1002, 1004)에 매핑하도록 구성될 수 있다. 예를 들어, 매핑 스킴(1010)은 결함이 있는 스토리지 장치로부터 정보를 재구성하는데 사용될 수 있는 패리티 정보를 포함하는 매핑 방식일 수 있다.
제 1 및 제 2 스토리지 장치(1002, 1004)는 각각 정보 블록(information blocks, 1012, 1014)을 포함할 수 있다. 이들 중 하나 이상은 가상 저장 공간(1008)에서 대응하는 데이터 블록(1018)에 매핑될 수 있는 데이터 블록으로 구현될 수 있다. 더 많은 정보 블록(1012 및 1014)은 데이터 블록으로 구현될 수 있는 하나 이상의 정보 블록(1012 및 1014)을 복구하는 데 사용될 수 있는 패리티 블록으로 구현될 수 있다.
일부 실시 예는 도 10a에서 생략 부호(ellipses)로 도시된 바와 같이, 리던던트 어레이(1000)의 일부로서 구성된 최대 101n까지 하나 이상의 추가 스토리지 장치를 더 포함할 수 있다.
제 1 또는 제 2 스토리지 장치(1002 또는 1004) 중 적어도 하나는 결함 복원 스토리지 장치로서 구현될 수 있다. 결함 복원 스토리지 장치는 적어도 하나 이상의 결함 복원 모드에서 동작할 수 있다. 적어도 하나 이상의 결함 복원 모드에서, 스토리지 장치는 아래에 자세히 설명 되는 바와 같이, 결함 조건이 발생하더라도(despite encountering a fault condition) 적어도 부분 읽기 기능(partial read capability)을 계속 동작하고 유지할 수 있다. 예를 들어, 일부 실시 예에서, 결함 복원 스토리지 장치는 읽기 전용 모드에서 동작할 수 있다.
적어도 부분적인 읽기 기능을 갖는 결함 복원 모드를 갖는 스토리지 장치의 포함은 도 10a에 도시된 실시 예를 가능하게 할 수 있다. 도 10a의 실시 예는 결함 스토리지 장치의 데이터를 정상 스토리지 장치의 패리티 공간으로 재구성 또는 사전 재구성는 동안 스토리지 시스템이 결함 스토리지 장치로부터 계속 읽을 수 있는 복구 체계를 구현하기 위한 것이다. 일부 실시 예에서, 사전 재구성 동작 후, 결함이 있는 스토리지 장치는 도 10b에 도시된 바와 같이 대체 스토리지 장치(1004A)로 교체될 수 있다. 재구성 동작은 패리티 공간으로부터 사전 재구성된 데이터(pre-rebuilt data)를 대체 스토리지 장치(1004A)에 있는 하나 또는 그 이상의 정보 블록(1014A)으로 복사함으로써 계속될 수 있다.
구현 세부 사항에 따라, 이러한 기능은 예를 들어 I/O 동작, 대기 시간, 데이터 전송 및/또는 패리티 계산, 동기화 등을 위한 전원 소비를 줄이는 등의 많은 이점을 제공할 수 있다. 예를 들어 다른 작업에 사용될 수 있는 I/O 대역폭을 확보하여(freeing up) 시스템 처리량(system throughput)을 늘릴 수도 있다.
도 10b에 도시된 실시 예는 RAID-4 또는 RAID-5 시스템과 같은 RAID 스토리지 시스템을 구현하는 데 사용될 수 있다. 그러나 도 10b와 관련하여 여기에 설명된 원리는 RAID 스토리지 시스템에 국한되지 않는다. 결함 조건이 발생하더라도 계속 동작하고 적어도 부분적인 읽기 기능을 유지할 수 있는 하나 이상의 스토리지 장치가 있는 리던던트 어레이로 구성된 스토리지 장치들 그룹이 있는 모든 스토리지 시스템에 적용될 수 있다.
더욱이,도 10b에 도시된 실시 예가 스토리지 장치(1002 및 1004)로 구현 될 수 있지만, 그 원리는 또한 리던던트 어레이 스토리지 시스템을 구현하는 데 사용될 수 있는 정보의 범위(extents) 및/또는 임의의 다른 단위에 적용될 수 있다. 따라서, 일부 실시 예에서, 스토리지 장치는 스토리지 장치에 대한 정보의 범위 및/또는 임의의 다른 단위 또는 스토리지 장치의 일부를 지칭할 수 있다.
도 11은 본 발명의 예시적인 실시 예에 따른 리던던트 어레이 스토리지 시스템의 예시적인 실시 예를 보여준다. 도 11에 도시된 실시 예는 예를 들어, 도 10에 도시된 실시 예 및/또는 본 명세서에 개시된 임의의 다른 실시 예를 구현하는 데 사용될 수 있다.
도 11에 도시된 실시 예는 스토리지 어레이 컨트롤러(1115) 및 하나 이상의 스토리지 장치(1110)를 포함할 수 있다. 일부 실시 예에서, 스토리지 어레이 컨트롤러(1115)는 호스트(1105)로부터 읽기 및/또는 쓰기 요청 및 관련 데이터를 수신할 수 있다. 각 스토리지 장치(1110)는 스토리지 컨트롤러(1120) 및 스토리지 매체(1125)를 포함할 수 있다. 컨트롤러는 제어 회로로도 지칭될 수 있다.
일부 실시 예에서, 스토리지 장치(1110)는 내부 결함 상태(internal fault condition)를 경험할 수 있다. 스토리지 장치는 아래에서 더 상세히 논의되는 바와 같이, 다양한 결함 복원 동작(fault resilient behaviors)을 나타내고, 결함 상태의 시스템 수준 영향을 완화할 수 있다.
스토리지 어레이 컨트롤러(1115)는 정보 복구 프로세스(information recovery processes), 정보 재구성 동작(information rebuilding operations), 읽기 동작(reading operations), 쓰기 동작(writing operations), 패리티 계산(parity calculations), 및/또는 여기에 개시된 임의의 다른 기술 중 임의의 것을 구현하도록 구성된 로직(1116)을 포함할 수 있다.
하나 이상의 스토리지 장치(1110)는 고체 상태 드라이브(SSD), 하드 디스크 드라이브(HDD), 광학 드라이브, 벌크 저항 변화 등을 갖는 교차 그리드 비휘발성 메모리, 및/또는 이들의 임의의 조합과 같은 임의의 유형의 영구 메모리(persistent memory)에 기초한 드라이브를 포함하는 임의의 유형의 스토리지 장치 및 관련 스토리지 매체로 구현 될 수 있다.
각 스토리지 장치의 데이터는 블록, 키-값 구조 등 및/또는 이들의 임의의 조합으로 배열될 수 있다. 각각의 스토리지 장치(1110)는 3.5 인치, 2.5 인치, 1.8 인치, M.2, MO-297, MO-300, 엔터프라이즈 및 데이터 센터 SSD 폼 팩터(EDSFF) 등과 같은 임의의 폼 팩터(form factor)를 가질 수 있다.
각각의 스토리지 장치(1110)는 직렬 ATA(SATA), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), U.2 등과 같은 커넥터 구성(connector configuration)을 사용할 수 있다.
각각의 스토리지 장치(1110)는 주변 장치 구성 요소 상호 연결(PCI: Peripheral Component Interconnect), PCI 익스프레스(PCIe), 비휘발성 메모리 익스프레스(NVMe), NVMe-over-Fabrics(NVMe-oF), 이더넷, InfiniBand, 파이버 채널 등과 같은 스토리지 언터페이스 및/또는 프로토콜을 사용할 수 있다. 일부 실시 예는 서버 섀시(server chassis), 서버 랙(server rack), 데이터 룸(dataroom), 데이터 센터(datacenter), 에지 데이터 센터(edge datacenter), 모바일 에지 데이터 센터(mobile edge datacenter), 및/또는 이들의 임의의 조합 등과 함께 전체적으로 또는 부분적으로 구현되거나 이와 관련하여 사용될 수 있다.
스토리지 컨트롤러(1120), 스토리지 어레이 컨트롤러(1115), 로직(1116), 아래 설명 된 실시 예들의 패리티 로직 등은 하드웨어, 소프트웨어 또는 조합 로직, 순차 로직, 하나 이상의 타이머를 포함하는 이들의 임의의 조합으로 구현될 수 있다.
카운터, 레지스터, 상태 머신, CPLD(복합 프로그래밍 가능 논리 장치), FPGA(필드 프로그래밍 가능 게이트 어레이), ASIC(응용 프로그램 별 집적 회로), x86 프로세서 및/또는 축소된 명령 집합과 같은 복잡한 명령 집합 컴퓨터(CISC) 프로세서 컴퓨터(RISC) 프로세서 및/또는 동적 랜덤 액세스 메모리(DRAM) 및/또는 정적 랜덤 액세스 메모리(SRAM)와 같은 휘발성 메모리, 플래시 메모리 등과 같은 비휘발성 메모리 등에 저장된 명령을 실행하는 등 뿐만 아니라 그래픽 처리 장치(GPU), 신경 처리 장치(NPU) 등이 있다.
비록 본 발명의 원리가 임의의 특정 구현 세부 사항에 제한되지는 않는다. 그러나 예시의 목적을 위해, 일부 실시 예에서, 각각의 스토리지 장치(1110)는 스토리지 매체(1125)가 예를 들어 구현될 수 있는 SSD로서 구현될 수 있다. AND(NAND) 플래시 메모리, 그리고 각각의 스토리지 컨트롤러(1120)는 플래시 변환 계층(FTL), 저장 인터페이스, 및 여기에 개시된 결함 복원 기능을 구현하는 것과 관련된 임의의 기능을 포함하는 SSD를 동작하는 것과 관련된 임의의 기능을 구현할 수 있다. 스토리지 장치(1110)에서 지울 수 있는 가장 작은 단위를 블록이라고 할 수 있고, 스토리지 장치(1110)에서 가장 작은 쓰기 가능한 단위를 페이지라고 할 수 있다.
스토리지 매체(1125)는 보유 기간(retention period)을 가질 수 있다. 보유 기간은 스토리지 매체(1125)의 사용 이력(usage history)에 의존할 수 있고, 그에 따라 스토리지 매체(1125) 내에서 변할 수 있다. 보유 기간보다 오래 저장된 데이터 (즉, 보유 기간을 초과 한 데이터)는 신뢰할 수 없게 되어 만료되었다고 할 수 있다. 데이터는 예를 들어 블록 코드 일 수 있는 에러 정정 코드를 사용하여 스토리지 매체(1125)에 저장될 수 있다.
스토리지 매체(1125)로부터 데이터를 읽을 때, 스토리지 매체(1125)로부터 코드 블록(code block)이라고하는 미가공 데이터의 양을 읽어 디코딩을 시도할 수 있다. 시도가 실패하면 추가 시도 (예를 들면, 읽기 재시도)가 이루어질 수 있다. 사용에 따라, 스토리지 매체(1125)의 일부, 예를 들어, 블록은 보유 기간이 수용할 수 없을 정도로 짧아지고 블록이 불량 블록으로 분류될 수 있다. 이러한 상황이 전체 스토리지 매체(1125)를 동작 불가능하게 만드는 것을 방지하기 위해, 불량 블록 관리 예비 공간이라고 하는 예비 공간이 존재할 수 있다.
예를 들어, 각 플래시 메모리 다이 또는 각 플래시 메모리 플레인에 포함될 수 있다. 컨트롤러(1120)는, 또는 플래시 메모리 다이 또는 플래시 메모리 플레인 내부의 다른 컨트롤러가 예비 블록을 사용하기 시작하고 불량 블록 사용을 중단할 수 있다.
도 10 및 도 11에 도시된 실시 예 및 여기에 설명된 다른 모든 실시 예에 대해 설명된 동작 및/또는 구성 요소는 예시적인 동작 및/또는 구성 요소이다. 일부 실시 예에서, 일부 동작 및/또는 구성 요소는 생략될 수 있다. 그리고/또는 다른 동작 및/또는 구성 요소가 포함될 수 있다.
더욱이, 일부 실시 예에서, 동작 및/또는 구성 요소의 시간적 및/또는 공간적 순서(temporal and/or spatial order)가 변경될 수 있다. 일부 구성 요소가 개별 구성 요소로 예시될 수 있지만, 일부 실시 예에서 개별적으로 도시된 일부 구성 요소는 단일 구성 요소로 통합될 수 있다. 그리고/또는 단일 구성 요소로 도시된 일부 구성 요소는 다중 구성 요소로 구현될 수 있다.
예시를 위해, 시스템, 장치 및/또는 동작의 일부 예시적인 실시 예가 RAID-5 스토리지 시스템과 관련하여 아래에서 설명 될 수 있다. 그러나 원칙은 RAID-5 시스템에 국한되지 않으며 RAID-4와 같은 다른 유형의 RAID 시스템뿐만 아니라 스토리지 장치들 그룹을 구성할 수 있는 다른 non-RAID 유형의 리던던트 어레이 시스템에도 적용될 수 있다. 스트라이핑(striping), 데이터 재시작 및/또는 계속(data restarting and/or continuing), 회전 및/또는 비회전 패리티(rotating and/or non-rotating parity) 등에 관계없이 일정량의 리던던시(redundancy)를 제공하도록 구성될 수 있다.
더욱이, 일부 실시 예가 완전한 스토리지 장치의 맥락에서 예시될 수 있지만, 원리는 스토리지 어레이를 구현하는 데 사용될 수 있는 정보의 범위(extents) 및/또는 임의의 다른 단위를 포함하여 그 임의의 부분에 적용될 수 있다.
도 12a는 결함 복원 스토리지 장치가 없는 RAID-5 스토리지 시스템의 예시적인 실시 예를 보여준다. 도 12a에 도시된 실시 예에서, 리던던트 어레이는 정상 스토리지 장치(healthy storage devices, 1202, 1204, 1206, 1208 및 1210)를 포함할 수 있다. 정상 스토리지 장치(1202, 1204 1206, 1208 및 1210)는 장치 0(Dev 0), 장치 1(Dev 1), 장치 2(Dev 2), 장치 3(Dev 3) 및 장치 4(Dev 4)로 지정될 수 있다.
스토리지 장치(1202, 1204, 1206, 1208, 1210)의 상위 4개 블록은 집합적으로 제 1 스트라이프(Stripe 0)를 형성할 수 있다. Stripe 0 내에서 Dev 0의 상위 4개 블록은 패리티 정보를 포함할 수 있다. 예를 들면, 이러한 블록은 패리티 블록으로 지칭될 수 있다. Dev 1 내지 Dev 4의 상위 4개 블록은 스토리지 데이터를 포함할 수 있다. 예를 들면, 이러한 블록은 데이터 블록이라고 할 수 있다.
스토리지 장치(1202, 1204, 1206, 1208, 1210)의 다음 4개의 블록은 집합적으로 제 2 스트라이프(스트라이프 1)를 형성 할 수 있다. Stripe 1 내에서 Dev 1에 있는 다음 4 개 블록은 패리티 블록일 수 있고, Dev 0 및 Dev 2에서 Dev 4까지의 다음 4개 블록은 데이터 블록일 수 있다. 스토리지 장치(1202, 1204, 1206, 1208 및 1210)의 하단에 도시된 블록은 타원으로 표시된 추가 블록(additional blocks)과 함께 집합적으로 추가 스트라이프(additional stripes)를 형성할 수 있다.
도 12b는 대체 스토리지 장치로 재구성 동작을 수행하는 도 12a의 실시 예를 보여주는 다이어그램이다. 도 12b에 도시된 실시 예에서, 스토리지 장치(1204) (Dev 1)는 페일되었을 수 있고 대채 스토리지 장치(1204A)로 교체되었을 수 있다. 대체 스토리지 장치(1204A) 상의 페일된 스토리지 장치(1204)로부터 데이터 블록 B0을 재구성하기 위해, 시스템은 정상 스토리지 장치(1202, 1206, 1208, 1210)로부터 패리티 블록 P(0,0,0) 및 데이터 블록 B4, B8 및 B12를 읽을 수 있다.
패리티 논리(1214)를 사용하여 패리티 블록 P(0,0,0) 및 데이터 블록 B4, B8 및 B12에 대해 논리적 배타적 OR(XOR) 연산을 수행하여 데이터 블록 B0을 복구할 수 있다. 복구된 데이터 블록 B0은 그 후 대체 스토리지 장치(1204A)에 기록될 수 있다. 제 1 스트라이프의 나머지 데이터 블록(B1, B2, B3)도 유사한 방식으로 복구될 수 있다.
시스템은 다음 스트라이프로 진행하고 각각 정상 스토리지 장치(1202, 1206, 1208 및 1210)로부터 데이터 블록 B16, B20, B24 및 B28을 읽어 패리티 블록 P(0,1,1)를 복구할 수 있다. 그리고 패리티 로직(1214)을 사용하여 이들 데이터 블록들에 대해 XOR 연산을 수행한다. 복구된 패리티 블록 P(0,1,1)는 대체 스토리지 장치(1204A)에 기록될 수 있다. 시스템은 대체 스토리지 장치(1204A)상의 페일된 스토리지 장치(1204)로부터 나머지 데이터를 재구성하기 위해 제 2 스트라이프의 나머지 및 임의의 추가 스트라이프를 통해 진행할 수 있다.
도 12b에 도시된 바와 같이, 일부 실시 예에서, 결함이 있는 스토리지 장치에서 데이터 블록을 복구하려면 여러 스토리지 장치(이 예에서는 4 개)에서 데이터 및/또는 패리티 블록을 읽어, 이로 인해 I/O 동작, 대기 시간(latency), 데이터 전송 및/또는 패리티 계산을 위한 전원 소비(power consumption) 등을 증가시킬 수 있다. 그리고 예를 들어 다른 I/O 동작에 의해 사용될 수 있는 I/O 대역폭을 사용함으로써 시스템 처리량(system throughput)을 줄일 수도 있다.
도 13a 및 도 13b는 본 발명의 예시적인 실시 예에 따라 결함 복원 스토리지 장치(fault resilient storage device)로 재구성 동작을 수행하는 RAID-5 스토리지 시스템의 예시적인 실시 예를 보여준다. 도 13a에 도시된 실시 예는 도 12a에 도시된 실시 예와 유사한 구성 요소를 포함할 수 있다. 그러나, 스토리지 장치(1304)는 본 발명의 예시적인 실시 예들에 따라 적어도 부분적인 읽기 기능을 갖는 결함 복원 모드에서 동작할 수 있는 결함 복원 스토리지 장치로 구현될 수 있다.
도 13a에 도시된 예시적인 실시 예에서, 스토리지 장치(1304)는 예를 들어 도 23을 참조하여 아래에서 설명되는 바와 같이, 결함 복원 모드들 FR_MODE_CAPACITY_READ_ONLY, FR_MODE_PERFORMANCE, FR_MODE_READ_ONLY, 및/또는 FR_MODE_TEMP_READ_ONLY 중에서 하나 또는 그 이상에서 동작함으로써 읽기 전용 모드에서 동작하게 할 수 있는 결함(음영으로 표시됨)을 경험(expereience)할 수 있다.
결함이 있는 스토리지 장치(1304)가 읽기 전용 모드로 동작할 수 있기 때문에, 도 13a에 도시된 시스템은 결함이 있는 스토리지 장치(faulty storage device, 1304)로부터 결함 없는 정상 스트리지 장치(healthy storage device, 1302) 상의 패러티 공간(parity space)으로 제 1 스트라이프(first stripe)의 데이터 블록 B0, B1, B2 및 B3을 복사하여 사전 재구성 동작(pre-rebuild operation)을 수행할 수 있다.
사전 재구성 동작은 또한 제 3 스트라이프에서 B36으로 시작하는 데이터 블록을 정상 스토리지 장치(1306)의 패리티 공간으로 복사할 수 있다. 임의의 추가 스트라이프의 데이터 블록은 임의의 정상 스토리지 장치 상의 다른 패리티 공간에 복사될 수 있다.
일부 실시 예에서, 결함이 있는 스토리지 장치(1304)로부터 정상 스토리지 장치의 패리티 공간으로 데이터의 일부 또는 전부를 복사한 후에, 시스템은 예를 들어 패리티 정보 없이(without parity information) 동작함으로써 결함이 있는 스토리지 장치(1304)를 교체하지 않고(without replacing) 무기한 또는 일시적으로(indefinitely or temporarily) 동작할 수 있다.
그러한 실시 예에서, 시스템은 본질적으로 RAID-0 구성으로 동작할 수 있다. 따라서, 구현 세부 사항에 따라(depending on the implementation details), 결함 복원 스토리지 장치(1304) 및 재구성 동작을 위한 패리티 공간의 사용은 스토리지 장치 결함 후 스토리지 시스템이 신속하게 정상 동작으로 복귀하도록 할 수 있다. 일부 실시 예에서, 데이터는 효율성을 증가시킬 수 있는 배치 모드(batch mode)에서 결함 있는 스토리지 장치(1304)로부터 정상 스토리지 장치의 패리티 공간으로 복사될 수 있다.
일부 실시 예에서, 결함이 있는 스토리지 장치(1304)의 데이터 중 일부 또는 전부를 정상 스토리지 장치의 패리티 공간으로 복사한 후, 결함이 있는 스토리지 장치(1304)는 도 13b에서 점선으로 표시된 바와 같이 정상 대체 스토리지 장치(healthy replacement storage device, 1304A)로 대체될 수 있다.
그 다음에 시스템은 도 13b에 도시된 바와 같이 정상 스토리지 장치의 패리티 공간에서 대체 스토리지 장치(1304A)로 사전 재구성된 데이터(pre-rebuilt data, 예를 들어, B0, B1, B2, B3, B36 등)를 복사함으로써 데이터 재구성 동작(data rebuilding operation)을 계속할 수 있다. 일부 실시 예에서, 사전 재구성된 데이터는 효율성을 증가시킬 수 있는 배치 모드에서 정상 스토리지 장치로부터 대체 스토리지 장치(1304A)로 복사될 수 있다.
RAID-5 동작으로 복귀하기 위해서, 시스템은 대체 스토리지 장치(1304A)에서 패리티 블록(예를 들면, 제 1 스트라이프에 있는 P(0,1,1), P(1,1,1), P(2,1,1), and P(3,1,1))을 재구성하기 위해 패리티 계산(parity calculations)을 수행 할 수 있다. 패리티 계산은 본 발명의 예시적인 실시 예에 따라 다양한 방식으로 수행될 수 있다. 예를 들어, 일부 실시 예에서, 복사될 때 각각의 데이터 블록에 대해 일부 또는 모든 패리티 계산이 수행될 수 있다.
대안적으로 또는 추가적으로(alternatively or additionally), 일부 또는 모든 패리티 계산은 복사 동작이 완료된 후에 수행될 수 있다. 일부 실시 예에서, 일부 또는 모든 패리티 계산은 예를 들어 스토리지 서버에 의해 중앙 집중식으로(in a centralized manner) 수행될 수 있다.
대안적으로 또는 추가적으로, 일부 또는 모든 패리티 계산은 예를 들어, 스토리지 장치가 피어-투-피어(P2P) 통신 및/또는 패리티 계산 기능(parity calculation capabilities)을 갖는 경우에 개별 스토리지 장치(individual storage devices)에 의해 분산 방식으로(in a distributed manner) 수행될 수 있다.
도 13c는 본 발명의 예시적인 실시 예에 따라 결함 상태(fault condition)를 경험한 결함 복원 스토리지 장치를 대체 스토리지 장치로 교체한 후에 재구성 동작을 수행하는 RAID-5 스토리지 시스템의 다른 예시적인 실시 예를 보여준다.
도 13c에 도시된 실시 예는 도 12b에 도시된 실시 예의 구성 요소와 유사한 구성 요소를 포함할 수 있다. 그러나 대체 스토리지 장치(1304A)에 의해 교체된 결함 있는 스토리지 장치는 본 발명의 예시적인 실시 예들에 따라 적어도 부분적인 읽기 기능을 갖는 결함 복원 모드에서 동작 할 수 있는 결함 복원 스트로지 장치일 수 있다.
교체하기 전에, 데이터 블록 B0 및 B1은 결함 복원 스토리지 장치(예를 들면, 읽기 전용 모드에서 동작)에서 정상 스토리지 장치(1302)의 패리티 공간으로 복사하여 미리 재구성되어 있을 수 있다. 결함 복원 스토리지 장치가 결함 상태를 경험한 후, 데이터 블록 B0은 아래서 도 21을 참조하여 설명되는 바와 같이 정상 스토리지 장치(1302)의 패리티 공간의 대응하는 위치에 업데이트된 데이터 블록 B0'을 기록함으로써 쓰기 동작 동안에 데이터 블록 B0'에 업데이트 되어 있을 수 있다.
결함이 있는 결함 복원 스토리지 장치를 대체 스토리지 장치(1304A)로 교체한 후, 도 13c에 도시된 바와 같이 업데이트된 데이터 블록 B0'을 대체 스토리지 장치(1304A)에 복사함으로써 재구성 동작이 계속될 수 있다. 일부 실시 예에서, 패리티 로직(1314)은 정상 스토리지 장치(1302)에 기록될 수 있는 업데이트된 패러티 블록 P'(0,0,0)을 생성하기 위해 정상 스토리지 장치(1306, 1308 및 1310)로부터 각각 읽어올 수 있는 업데이트된 데이터 블록 B0' 및 데이터 블록 B4, B8 및 B12에 대한 패리티 계산을 수행할 수 있다.
도 14 및 도 15는 본 발명의 예시적인 실시 예에 따른 단일 스토리지 장치(single storage device)의 결함의 경우에 결함 복원 스토리지 장치 없이 RAID-5 스토리지 시스템에 의해 수행되는 읽기 동작의 일부 예시적인 실시 예를 보여준다. 도 14 및 도 15에 도시된 실시 예는 도 12a에 도시된 실시 예와 유사한 구성 요소를 포함할 수 있다. 도 14 및 도 15에 도시된 실시 예에서, 스토리지 장치(1404 및 1504)는 읽기 동작을 수행 할 수 없게 만드는 결함 상태를 경험할 수 있다.
도 14에 도시된 실시 예에서, 데이터 블록 B4는 정상 스토리지 장치(1406)에 위치할 수 있기 때문에 복구 동작(recovery operation)을 수행하지 않고도 읽어올 수 있다.
도 15에 도시된 실시 예에서, 데이터 블록 B0은 결함이 있는 스토리지 장치(1504)에 위치할 수 있다. 따라서 데이터 블록 B0을 읽기 위해 패리티 블록 P(0,0,0) 및 데이터 블록 B4, B8 및 B12은 정상 스토리지 장치(1502, 1506, 1508, 1510)로부터 각각 읽어 올 수 있고, 데이터 블록 B0을 복구하기 위해 패리티 로직(1514)에 의해 처리될 수 있다.
따라서 결함이 있는 스토리지 장치에서 데이터 블록을 복구하려면 여러 스토리지 장치(이 예에서는 4 개)에서 데이터 및/또는 패리티 블록을 읽어, 이로 인해 I/O 동작, 대기 시간(latency), 데이터 전송 및/또는 패리티 계산을 위한 전원 소비(power consumption) 등을 증가시킬 수 있다. 그리고 예를 들어 다른 I/O 동작에 의해 사용될 수 있는 I/O 대역폭을 사용함으로써 시스템 처리량(system throughput)을 줄일 수도 있다.
도 16 및 도 17은 본 발명의 예시적인 실시 예에 따른 재구성 동작 동안 결함 복원 스토리지 장치를 갖는 RAID 5 스토리지 시스템에 의해 수행되는 읽기 동작의 예시적인 실시 예를 보여준다.
도 16 및 도 17에 도시된 스토리지 시스템의 실시 예는 도 12a에 도시된 실시 예의 것과 유사한 구성 요소를 포함 할 수 있다. 그러나 결함이 있는 스토리지 장치(1604 및 1704)는 본 발명의 예시적인 실시 예들에 따른 적어도 부분적 읽기 기능을 갖는(with at least partial read capability) 결함 복원 모드에서 동작할 수 있는 스토리지 장치로 구현될 수 있다.
도 16 및 도 17에 도시된 예시적인 실시 예에서, 결함이 있는 스토리지 장치(1604 및 1704)는 도 23을 참조하여 아래에서 설명되는 바와 같이, 예를 들어, 결함 복원 모드 FR_MODE_CAPACITY_READ_ONLY, FR_MODE_PERFORMANCE, FR_MODE_READ_ONLY, 및/또는 FR_MODE_TEMP_READ_ONLY 중에서 하나 또는 그 이상으로 동작함으로서 읽기 전용 모드(read-only mode)로 동작할 수 있다.
도 16 및 도 17에 도시된 실시 예에서, 시스템은 재구성 지점이 아래쪽으로 진행됨에 따라(as the pre-rebuild point progresses downward), 결함이 있는 스토리지 장치(1604 및 1704)로부터 데이터를 정상 스토리지 장치(1602 및 1702)의 패리티 공간에 각각 복사함으로써 사전 재구성하는 과정에 있을 수 있다.
읽어올 데이터 블록이 정상 스토리지 장치에 있는 경우, 도 14에 도시된 것과 유사한 방식으로 읽어올 수 있다. 그러나 구현 세부 사항에 따라, 읽을 데이터 블록이 결함이 있는 스토리지 장치(1604)에 위치하면, 도 16 및 도 17에 도시된 바와 같이 패리티 계산 및/또는 동기화 없이(without a parity calculation and/or synchronization) 신속하게 복구될 수 있다.
도 16에 도시된 실시 예에서, 읽어올 데이터 블록(예를 들어, 데이터 블록 B0)은 이미 미리 재구성되어 있을 수 있는 패리티 공간의 일부에 위치할 수 있다. 따라서, 정상 스토리지 장치(1602)의 패리티 공간 내의 대응하는 위치로부터 읽어올 수 있다.
도 17에 도시된 실시 예에서, 데이터 블록 B2는 정상 스토리지 장치(1702)의 패리티 공간에 아직 사전 재구성되지 않았을 수 있는 결함 있는 스토리지 장치(1704)의 일부에 위치할 수 있다. 그러나 결함이 있는 스토리지 장치(1704)가 읽기 전용 모드로 동작할 수 있고, 데이터 블록 B2는 결함이 있는 스토리지 장치(1704)로부터 직접 읽을 수 있다.
데이터 블록 B3은 또한 정상 스토리지 장치(1702)의 패리티 공간에서 아직 사전 재구성되지 않았을 수 있는 결함 있는 스토리지 장치(1704)의 일부에 위치할 수 있다. 그러나 데이터 블록 B3은 도 21과 관련하여 아래에서 설명되는 것과 같은 쓰기 동작에 의해 정상 스토리지 장치(1702)의 패리티 공간 내의 대응하는 위치에서 데이터 블록 B3'로 업데이트 될 수 있다. 따라서 업데이트된 데이터 블록 B3'는 정상 스토리지 장치(1702)로부터 읽어올 수 있다.
일부 실시 예에서, 그리고 구현 세부 사항에 따라, 도 16 및 도 17에 도시된 실시 예는 I/O 동작, 대기 시간, 데이터 전송 및/또는 패리티 계산, 동기화 등을 위한 전원 소비를 감소시킬 수 있다. 또한, 예를 들어 다른 I/O 동작에 사용될 수 있는 I/O 대역폭을 확보하여(freeing up) 시스템 처리량(system throughput)을 증가시킬 수 있다.
도 18 및 도 19는 본 발명의 예시적인 실시 예에 따른 결함 복원 스토리지 장치 없이 RAID-5 스토리지 시스템에 의해 수행되는 쓰기 동작의 예시적인 실시 예를 보여준다. 도 18 및 도 19에 도시된 실시 예는도 12a에 도시된 실시 예와 유사한 구성 요소를 포함할 수 있다. 도 18 및 도 19에 도시된 실시 예에서, 스토리지 장치(1804 및 1904)는 읽기 또는 쓰기 동작을 수행 수 없게 만드는 결함 조건(fault conditions)을 경험할 수 있다.
도 18은 본 발명의 예시적인 실시 예들에 따라 업데이트된 데이터 블록 B4'를 정상 스토리지 장치(1806)에 기록하는 동작을 보여준다. 원래 데이터 블록 B4와 대응하는 패리티 블록 P(0,0,0)이 결함이 있는 스토리지 장치(1804)에 위치하지 않기 때문에, 업데이트된 데이터 블록 B4'는 스토리지 장치(1806)에 기록될 수 있다.
대응하는 업데이트된 패리티 블록 P'(0,0,0)은 원래 패리티 블록 P(0,0,0)를 읽고, 패러티 로직(1814)을 사용하여 스토리지 장치(1806)에서 읽은 원래 데이터 블록 B4와 업데이트된 데이터 블록 B4'을 가지고 패리티 계산을 수행함으로 계산될 수 있다. 업데이트된 패리티 블록 P '(0,0,0)은 그 후 정상 스토리지 장치(1802)에 기록될 수 있다.
도 19는 본 발명의 예시적인 실시 예에 따라 데이터 블록 또는 대응하는 패리티 블록이 결함이 있는 스토리지 장치(1904) 상에 위치하는 쓰기 동작의 예시적인 실시 예를 보여준다. 업데이트된 데이터 블록 B16'을 쓰는 경우, 해당 패리티 블록 P(0,1,1)은 결함이 있는 스토리지 장치(1904)에 위치한다. 따라서 업데이트된 데이터 블록 B16'은 스트라이프를 위한 패리티 계산 또는 다른 데이터 블록 읽기을 읽지 않고(without calculating parity for the stripe or reading any other data blocks), 정상 스토리지 장치(1902)에 기록될 수 있다.
업데이트된 데이터 블록 B0'를 쓰는 경우, 정상 스토리지 장치(1902)에서 원래 패리티 블록 P(0,0,0)를 읽어 원래 데이터 블록 B0을 복구할 수 있다. 그리고 데이터 블록 B4, B8, B12는 정상 드라이브(1906, 1908 및 1910)에서 각각 읽어올 수 있고, 패리티 로직(1914)으로 그것들을 처리할 수 있다.
업데이트된 패리티 블록 P'(0,0,0)는 그 다음에 업데이트된 데이터 블록 B0'을 사용하여 계산되고 정상 스토리지(1902)에 기록될 수 있다. 업데이트된 데이터 블록 B0'은 결함이 있는 스토리지 장치(1904)에 기록되지 않을 수 있지만, 업데이트된 패리티 블록 P'(0,0,0) 데이터 블록 B4, B8 및 B12에 대한 패리티 계산을 읽고 수행함으로써 향후 읽기 동작에서 복구될 수 있다.
도 19에 도시된 실시 예에서, 결함이 있는 스토리지 장치(1904)로부터 정보를 읽는 기능의 부족은 I/O 동작, 대기 시간, 데이터 전송 및/또는 패리티 계산 등을 위한 전원 소비를 증가시킬 수 있다. 또한 예를 들어 다른 I/O 동작에서 사용할 수 있는 I/O 대역폭을 사용하여 시스템 처리량을 줄일 수 있다.
도 20 및 도 21은 본 발명의 예시적인 실시 예에 따른 결함 복원 스토리지 장치를 갖는 RAID-5 스토리지 시스템에 의해 수행될 수 있는 쓰기 동작의 예시적인 실시 예를 보여준다.
도 20 및 도 21에 도시된 스토리지 시스템의 실시 예는 결함이 있는 스토리지 장치(2004 및 2104)가 결함 복원 모드에서 동작할 수 있는 스토리지 장치로 구현될 수 있는 도 16에 도시된 실시 예의 구성 요소와 유사한 구성 요소를 포함할 수 있다.
도 20 및 도 21에 도시된 예시적인 실시 예에서, 결함이 있는 스토리지 장치(2004 및 2104)는 도 23을 참조하여 아래에서 설명되는 바와 같이, 예를 들어, 결함 복원 모드 FR_MODE_CAPACITY_READ_ONLY, FR_MODE_PERFORMANCE, FR_MODE_READ_ONLY, 및/또는 FR_MODE_TEMP_READ_ONLY 중에서 하나 또는 그 이상으로 동작함으로서 읽기 전용 모드(read-only mode)로 동작할 수 있다.
도 20 및 도 21에 도시된 실시 예에서, 데이터는 예를 들어 백그라운드 동작에서 결함이 있는 스토리지 장치(2004 및 2104)로부터 각각 정상 스토리지 장치(2002 및 2102) 상의 대응하는 패리티 공간으로 복사될 수 있다. 결함이 있는 스토리지 장치(2004 또는 2104)에서 대응하는 패리티 공간으로 데이터를 복사하기 전, 도중 또는 후에 언제든지, 시스템은 RAID-0 시스템과 유사한 방식으로 패리티 없이 무기한 또는 일시적으로 동작할 수 있다.
도 20은 본 발명의 예시적인 실시 예들에 따라 쓰기 동작이 정상 스토리지 장치 상의 데이터 블록과 관련될 수 있는 실시 예를 보여준다. 이 경우, 업데이트된 데이터 블록 B4'는 패리티 계산 없이(without calculating parity) 정상 스토리지 장치(2006)에 기록될 수 있다.
일부 실시 예들에서, 시스템은 또한 결함이 있는 스토리지 장치(2004)로부터 정상 스토리지 장치(2002)의 패리티 공간 내의 대응하는 위치로 데이터 블록 B0을 사전에 복사 할 수 있다. 이것은 시스템이 스트라이프의 해당 부분에 대해 패리티 없이(예를 들어, RAID-0 시스템과 유사한 방식으로) 동작하도록 할 수 있다. 대안적으로, 시스템은 사전 구성 프로세스가 시작될 때까지 결함 있는 스토리지 장치(2004)로부터 정상 스토리지 장치(2002)의 패리티 공간 내의 대응하는 위치로 데이터 블록 B0을 복사하는 것을 연기할 수 있다.
도 21은 본 발명의 예시적인 실시 예들에 따라 업데이트된 쓰기 데이터 또는 대응하는 패리티 블록이 결함이 있는 스토리지 장치(2104) 상에 위치될 수 있고, 사전 재구성 프로세스가 아직 시작되지 않은 쓰기 동작들의 실시 예들을 보여준다.
업데이트된 데이터 블록 B16'은 패리티를 계산하지 않고 정상 스토리지 장치(2102) 상의 정상적인 위치에 기록될 수 있다. 업데이트된 데이터 블록 B0'은 다시 패리티를 계산하지 않고 정상 스토리지 장치(2102) 상의 패리티 공간의 대응하는 위치에 기록될 수 있다. 이는 시스템이 스트라이프의 해당 부분에 대해 패리티 없이(예를 들면, RAID-0 시스템과 유사한 방식으로) 동작할 수 있게 한다.
구현 세부 사항에 따라, 도 20 및 도 21에 도시된 실시 예는 I/O 동작, 대기 시간, 데이터 전송 및/또는 패리티 계산, 동기화 등을 위한 전원 소비를 감소시킬 수 있다. 또한, 예를 들어 다른 I/O 동작에 사용될 수 있는 I/O 대역폭을 확보하여(freeing up) 시스템 처리량(system throughput)을 증가시킬 수 있다.
도 22는 본 발명의 예시적인 실시 예에 따른 스토리지 어레이를 동작시키기 위한 방법의 실시 예를 보여준다. 방법은 동작 2202에서 시작될 수 있다. 동작 2204에서, 방법은 결함이 있는 스토리지 장치로부터 정보를 복구하기 위해 패리티 정보를 사용하도록 구성된 리던던트 어레이(redundant array)로서 제 1 스토리지 장치 및 제 2 스토리지 장치를 동작시킬 수 있다.
동작 2206에서, 방법은 제 1 스토리지 장치의 결함 상태에 기초하여 적어도 부분적인 읽기 기능을 갖는 결함 복원 모드에서 제 1 스토리지 장치를 동작시킬 수 있다. 동작 2208에서, 방법은 제 2 스토리지 장치의 패리티 공간에서 제 1 스토리지 장치로부터 정보를 재구성 할 수 있다. 방법은 동작 2210에서 종료될 수 있다.
도 22에 도시된 실시 예 및 여기에 설명된 다른 모든 실시 예에 대해 설명된 동작 및/또는 구성 요소는 예시적인 동작 및/또는 구성 요소이다. 일부 실시 예에서, 일부 동작 및/또는 구성 요소는 생략될 수 있다. 그리고/또는 다른 동작 및/또는 구성 요소가 포함될 수 있다.
더욱이, 일부 실시 예에서, 동작 및/또는 구성 요소의 시간적 및/또는 공간적 순서(temporal and/or spatial order)가 변경될 수 있다. 일부 구성 요소가 개별 구성 요소로 예시될 수 있지만, 일부 실시 예에서 개별적으로 도시된 일부 구성 요소는 단일 구성 요소로 통합될 수 있다. 그리고/또는 단일 구성 요소로 도시된 일부 구성 요소는 다중 구성 요소로 구현될 수 있다.
일부 실시 예에서, LBA 공간 유형(space types)은 예를 들어 결함 복원 모드의 일부 실시 예를 구현하기 위해 사용될 수 있다. 도 23은 본 발명의 예시적인 실시 예에 따른 스토리지 장치에 의해 구현될 수 있는 결함 복원 모드 및 연관된 LBA 공간 유형의 일부 예시적인 실시 예의 표를 보여준다.
도 23에 도시된 표의 모드 열(mode column)에는 결함 복원 모드 번호와 모드를 식별하는 데 사용될 수 있는 이름이 포함될 수 있다. 예를 들어, 이러한 것들은 본 발명의 예시적인 실시 예들에 따라 스토리지 장치의 하나 이상의 특징들이 액세스될 수 있는 애플리케이션 프로그래밍 인터페이스(API)에서 사용될 수 있다. 도 23에 도시된 표에서 P, UP, RO, VRO 및 IA로 표시된 열은 수행 량(amount of performing, P), 성능 저하(underperforming, UP), 읽기 전용(read-only, RO), 휘발성 읽기 전용(volatile read-only, VRO), 그리고 액세스 불가능(inaccessible, IA)을 나타낼 수 있다. 이것들은 각각 해당 모드에서 사용될 수 있다.
일부 실시 예에서, 도 23에 도시된 모드는 예를 들어 API를 통해 호스트에 의해 호출될 수 있다. 일부 실시 예에서, 호스트는 후술하는 바와 같이 get feature command를 사용하여 스토리지 장치에 쿼리(query)할 수 있다. 일부 구현에서, 별표(*)로 식별되는 모드는 get feature command에 응답하여 모드에 의해 사용되는 각 유형의 LBA 공간에 대한 자세한 정보를 호스트에 제공할 수 있다.
일부 구현에서, 다른 명령에 의해 사용되는 LBA 공간에 대한 정보는 암시적(implicit)일 수 있다. 예를 들어, 전원 순환 모드(power cycle mode, 모드 1)에서 모든 메모리는 수행(P) 유형일 수 있다. 그러나 일부 실시 예에서, LBA 공간 유형의 다른 조합 및/또는 그것의 일부분이 사용될 수 있다.
일부 실시 예에서, 스토리지 장치는 다음의 결함 복원 모드 중 임의의 수를 구현할 수 있다. 예를 들어, 장치 제조업체(device manufacturer)는 서로 다른 제품에서 이러한 모드와 기타 결함 복원 모드의 서로 다른 조합을 구현할 수 있다.
전원 순환 모드(모드 1)에는 스토리지 장치의 전원 순환을 기반으로 한 자체 복구(self-healing)가 포함될 수 있다. 예를 들어, 스토리지 장치는 SRAM 또는 DRAM과 같은 메모리에서 하나 이상의 플립된 비트(flipped bits)를 기반으로 결함 상태를 경험할 수 있다. 플립된 비트는 예를 들어 메모리 셀들과 간섭(interfere)을 일으킬 수 있는 안테나 또는 해발 높은 고도로 인한 노화(aging), 가열(heating) 및/또는 복사(radiation)에 의해 발생할 수 있다.
결함 복원 전원 순환 모드(fault resilient power cycle mode)를 사용하는 스토리지 장치는 자체 복구 기능(self-healing capabilities)을 가질 수 있다. 스토리지 장치의 전원을 껐다가 켜는(예를 들면, 전원 제거 후 다시 전원을 인가) 현재 상태를 재설정하고 페일된 SSD를 정상 상태로 복원할 수 있는 자체 복구 기능을 가질 수 있다. 이 경우에 제출 대기열(submission queue)에서 하나 이상의 실행중인 명령(inflight commands)이 손실될 수 있다.
스토리지 장치의 사용자 데이터가 유효한지 여부는 장치의 분할(partitioning of the device), 스토리지 컨트롤러의 서로 다른 회로가 재설정되는 정도 등과 같은 구현 세부 사항에 따라 달라질 수 있다. 일부 실시 예에서, 전원 순환 모드에서, 스토리지 장치의 전체 스토리지 공간(100 %)은 정상적으로(예를 들어, 수행(P) 공간으로) 동작할 수 있다.
재포맷 모드(reformat mode, 모드 2)에는 스토리지 장치의 전체 또는 일부를 포맷하는 데 기반한 차체 복구(self-healing)가 포함될 수 있다. 일부 실시 예에서, 스토리지 장치를 포맷하면 현재 상태를 재설정하고 페일된 스토리지 장치를 정상 상태로 복원할 수 있다.
그러나 구현 세부 정보, 예를 들면, 빠른 포맷(quick format), 전체 포맷(full format), 분할 세부 정보(partitioning details) 등에 따라 디스크의 모든 데이터가 손실될 수 있다. 일부 실시 예에서, 재포맷 모드에서, 스토리지 장치의 전체 스토리지 공간(100 %)은 정상적으로(예를 들어, 수행(P) 공간으로) 동작할 수 있다.
감소된 용량 읽기 전용 모드(reduced capacity read-only mode, 모드 3)에서, 스토리지 장치의 스토리지 공간의 제 1 부분(예를 들면, X%)은 정상적으로(예를 들면, 수행(P) 공간으로) 동작할 수 있고, 제 2 부분(예를 들면,(100-X)%)은 읽기 전용(RO) 스토리지 공간으로 동작할 수 있다. 따라서 스토리지 장치에서 성능(P) 공간의 크기가 줄어들 수 있으며, 스토리지 장치는 해당 공간에 대해 일반 드라이브처럼 동작할 수 있다. 그러나 읽기 전용(RO) 유형의 공간은 쓰기가 불가능할 수 있다.
일부 실시 예에서, 스토리지 장치는 성능(P) 및/또는 읽기 전용(RO) 공간에 대한 LBA 범위의 목록을 예를 들어, get feature command에 응답하여 호스트에 제공할 수 있다. 스토리지 장치가 IO 결정성(IO determinism)을 지원하는 경우 LBA 범위는 세트(set)를 나타낼 수 있다. 스토리지 장치가 ZNS(Zoned Namespaces)를 지원하는 경우, LBA 범위는 존(zone)을 나타낼 수 있다. 일부 실시 예에서, 스토리지 장치는 또한 get feature command에 응답하여 세트 및/또는 ZNS에 대한 주소 범위에 대한 정보를 제공할 수 있다.
감소된 용량 모드(reduced capacity mode, 모드 4)에서, 스토리지 장치의 스토리지 공간의 제 1 부분(예를 들면, X %)은 정상적으로(예를 들면, 수행(P) 공간) 동작할 수 있고, 제 2 부분(예를 들면,(100-X) %)은 액세스할 수 없다(IA). 따라서 스토리지 장치의 성능(P) 공간 크기가 줄어들 수 있으며 스토리지 장치는 해당 공간에 대해 일반 드라이브처럼 동작할 수 있다. 그러나 액세스 불가능(IA) 공간은 일반 입력 및/또는 출력(IOs)에 사용할 수 없다.
예를 들어, RTBB가 소진되면(exhausted), 문제가 있는 다이(problematic die)가 디스크 공간에서 제외되어 전체 디스크 용량이 줄어들 수 있다. 스토리지 장치는 성능(P) 및/또는 액세스 불가능(IA) 유형의 공간에 대한 LBA 범위 목록을 제공할 수 있다. 스토리지 장치가 IO 결정성(IO determinism)을 지원하는 경우 LBA 범위는 세트(set)를 나타낼 수 있다. 스토리지 장치가 ZNS(Zoned Namespaces)를 지원하는 경우, LBA 범위는 존(zone)을 나타낼 수 있다. 일부 실시 예에서, 스토리지 장치는 또한 get feature command에 응답하여 LBA 범위(ranges), 세트(sets), 존(zones) 등에 대한 주소 범위에 대한 정보를 제공할 수 있다.
감소된 성능 모드(reduced performance mode, 모드 5)에서 스토리지 장치의 성능의 하나 이상의 측면이 감소될 수 있다. 예를 들어, 스토리지 장치는 정상적인 동작을 수행할 수 있지만, 감소된 처리량 및/또는 대기 시간에서 수행할 수 있다. 일부 실시 예에서, 스토리지 장치는 하나 이상의 백업 커패시터(back-up capacitors)를 포함할 수 있다.
주 전원 공급(main power supply)이 중단된 경우에, 백업 커패시터는 스토리지 장치가 쓰기 동작을 완료할 수 있도록 충분한 시간 동안에 스토리지 장치에 전원을 제공할 수 있다. 이러한 백업 커패시터 중 하나 이상이 페일되면(failed), 스토리지 장치는 데이터가 미디어에 기록될 때까지 쓰기 동작이 완료되었음을 호스트에 알리지 않을 수 있다. 이를 동기식 쓰기 동작(synchronous write operation)이라고 할 수 있다. 이는 초당 입력 및/또는 출력 동작(IOPS)을 줄이거나 대기 시간을 증가시켜 스토리지 장치의 성능을 저하시킬 수 있다. 따라서, 일부 실시 예에서, 성능 저하 모드는 100% 성능 저하(UP) 공간으로 동작할 수 있다.
구현 세부 사항에 따라 사용자 데이터의 일부 또는 전체가 유효할 수 있다. 일부 실시 예에서, 스토리지 장치는 호스트가 결함 상태의 시스템 레벨 영향을 완화(mitigate)할 수 있는 방식으로 스토리지 장치에 쓰기 데이터를 전송하는 것에 대한 결정을 내릴 수 있도록 호스트에 추측 성능 정보(speculative performance information)를 제공할 수 있다.
읽기 전용 모드(read-only mode, 모드 6)에서 스토리지 장치는 읽기 동작만 허용하고 외부 쓰기 동작을 차단할 수 있다. 구현 세부 정보에 따라 읽기 전용 공간의 데이터는 예를 들어 보유 기간(retention period) 이후에도 유효할 수 있다. 읽기 전용 모드는 100% 읽기 전용(RO) 공간으로 동작할 수 있다.
부분 읽기 전용 모드(partial read-only mode, 모드 7)에서, 스토리지 장치의 스토리지 공간의 제 1 부분(예를 들면, X%)은 읽기 전용(RO) 공간으로 동작할 수 있으며, 제 2 부분(예를 들면,(100-X)%)는 액세스 불가능(IA) 공간일 수 있다. 따라서, 스토리지 장치는 읽기 동작만을 허용할 수 있고 스토리지 공간의 제 1 부분에서 외부 쓰기 동작이 금지될 수 있다.
구현 세부 정보에 따라 읽기 전용 공간의 데이터가 여전히 유효할 수 있다. 예를 들면, 보유 기간 이후에도 유효할 수 있다. 스토리지 장치는 읽기 전용(RO) 및/또는 액세스 불가능(IA) 유형의 공간에 대한 LBA 범위 목록(list of LBA ranges)을 제공할 수 있다. 스토리지 장치가 IO 결정성(IO determinism)을 지원하는 경우 LBA 범위는 세트(set)를 나타낼 수 있다. 스토리지 장치가 ZNS(Zoned Namespaces)를 지원하는 경우, LBA 범위는 존(zone)을 나타낼 수 있다. 일부 실시 예에서, 스토리지 장치는 또한 get feature command에 응답하여 LBA 범위(ranges), 세트(sets), 존(zones) 등에 대한 주소 범위에 대한 정보를 제공할 수 있다.
임시 읽기 전용 모드(temporary read-only mode, 모드 8)에서는 100% VRO 공간으로 동작할 수 있는 스토리지 장치의 스토리지 공간에서 데이터를 읽을 수 있지만 외부 쓰기(external writes)는 금지될 수 있다. 이 공간의 데이터는 일시적으로 유효하지만 보유 기간이 지나면 무효화될 수 있다.
임시 부분 읽기 전용 모드(temporary partial read-only mode, 모드 9)에서 데이터는 VRO 공간으로 동작할 수 있는 스토리지 장치의 스토리지 공간의 제 1 부분(예를 들면, X%)에서 읽을 수 있는 반면, 외부 쓰기는 금지될 수 있다. 제 2 부분(예를 들면,(100-X)%)은 액세스 불가능(IA) 공간일 수 있다. 제 1 부분의 데이터는 일시적으로 유효할 수 있지만 보유 기간이 지나면 무효화될 수 있다.
스토리지 장치가 IO 결정성(IO determinism)을 지원하는 경우 LBA 범위는 세트(set)를 나타낼 수 있다. 스토리지 장치가 ZNS(Zoned Namespaces)를 지원하는 경우, LBA 범위는 존(zone)을 나타낼 수 있다. 일부 실시 예에서, 스토리지 장치는 또한 get feature command에 응답하여 LBA 범위(ranges), 세트(sets), 존(zones) 등에 대한 주소 범위에 대한 정보를 제공할 수 있다.
취약 모드(vulnerable mode, 모드 10)에서는 스토리지 장치가 I/O 동작에 사용될 수 없다. 그러나 호스트로부터 명령을 계속 수신하고 에러(errors)를 리턴(return)할 수 있다.
일반 모드(normal mode, 모드 11)에서는 스토리지 장치가 정상적으로 동작할 수 있다.
위에 개시된 실시 예는 다양한 구현 세부 사항의 맥락에서 설명되었지만, 본 발명의 원리는 이들 또는 임의의 다른 특정 세부 사항에 제한되지 않는다. 예를 들어, 일부 기능은 특정 구성 요소에 의해 구현되는 것으로 설명되었지만, 다른 실시 예에서, 기능은 서로 다른 위치에 있고 다양한 사용자 인터페이스를 갖는 서로 다른 시스템 및 구성 요소 간에 분산될 수 있다.
특정 실시 예는 특정 프로세스, 동작 등을 갖는 것으로 설명되었지만, 이러한 용어는 또한 특정 프로세스, 단계 등이 다중 프로세스, 동작 등으로 구현될 수 있거나, 다중 프로세스, 동작 등이 단일 프로세스, 단계 등에 통합될 수 있다. 구성 요소 또는 요소에 대한 참조는 구성 요소 또는 요소의 일부만 참조할 수 있다.
예를 들어, 집적 회로에 대한 참조는 집적 회로의 전부 또는 일부만을 참조할 수 있고, 블록에 대한 참조는 전체 블록 또는 하나 이상의 서브 블록을 참조할 수 있다. 본 발명의 내용 및 청구 범위에서 제 1 및 제 2 용어의 사용은 그것들이 변경(modify)하는 것을 구별하기 위한 목적일 뿐이고 문맥에서 달리 명백하지 않는 한 어떠한 공간적 또는 시간적 순서도 나타내지 않을 수 있다.
일부 실시 예에서, "기초하는(based on)"은 적어도 부분적으로 기초하는 것을 지칭할 수 있다. 일부 실시 예에서, "할 수 없는(disabled)"은 적어도 부분적으로 할 수 없는 것을 지칭 할 수 있다. 제 1 요소에 대한 참조는 제 2 요소의 존재를 의미하지 않을 수 있다. 섹션 표제(section headings) 등과 같은 다양한 조직 지원(organizational aids)은 편의상 제공될 수 있지만, 이러한 지원 및 본 발명의 원칙에 따라 배열된 주제는 이러한 조직 지원에 의해 정의되거나 제한되지 않는다.
전술한 다양한 세부 사항 및 실시 예는 본 발명의 원리에 따라 추가 실시 예를 생성하기 위해 결합될 수 있다. 본 특허 발명의 발명 원리는 본 발명의 개념을 벗어나지 않고 배열 및 세부적으로 수정될 수 있으므로, 이러한 변경 및 수정은 다음의 청구항의 범위 내에 있는 것으로 간주될 수 있다.
105: 호스트
115: 볼륨 관리자
110: 스토리지 장치
120: 컨트롤러
125: 스토리지 매체
405: 블록 수명 테이블
410: 맵핑 테이블
415: 결함이 있는 사용 공간
420: 구조 공간
425: 정상 사용 공간
430: 사용된 LBA 공간
435: 미사용 LBA 공간
1000: 리던던트 어레이
1002, 1004: 스토리지 장치
1008: 가상 저장 공간
1012, 1014: 정보 블록
1110: 스토리지 장치
1115: 스토리지 어레이 컨트롤러
1120: 스토리지 컨트롤러
1125: 스토리지 매체

Claims (20)

  1. 결함이 있는 스토리지 장치로부터 정보를 복구하기 위해 패리티 정보를 사용하도록 구성된 리던던트 어레이(redundant array)로서 제 1 스토리지 장치 및 제 2 스토리지 장치를 동작시키는 단계;
    상기 제 1 스토리지 장치의 결함 상태에 기초하여 적어도 부분적인 읽기 능력을 갖는 결함 복원 모드에서 상기 제 1 스토리지 장치를 동작시키는 단계; 및
    상기 제 2 스토리지 장치의 패리티 공간에서 상기 제 1 스토리지 장치로부터 정보를 재구성하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 제 2 스토리지 장치의 패리티 공간에서 상기 제 1 스토리지 장치로부터의 정보를 재구성하는 단계는 상기 제 1 스토리지 장치로부터의 정보를 상기 제 2 스토리지 장치의 패리티 공간으로 복사하는 단계를 포함하는 방법.
  3. 상기 재구성된 정보를 상기 제 2 스토리지 장치의 패리티 공간으로부터 대체 스토리지 장치로 복사하는 단계를 더 포함하는 방법.
  4. 제 3 항에 있어서,
    상기 제 2 스토리지 장치의 패리티 공간에서 상기 제 1 스토리지 장치의 쓰기 동작을 위해 제 1 데이터를 업데이트하는 단계를 더 포함하는 방법.
  5. 제 4 항에 있어서,
    상기 업데이트된 제 1 데이터를 상기 제 2 스토리지 장치의 패리티 공간으로부터 상기 대체 스토리지 장치로 복사하는 단계를 더 포함하는 방법.
  6. 제 3 항에 있어서,
    상기 재구성된 정보의 적어도 일부에 대한 패리티 정보를 계산하는 단계를 더 포함하는 방법.
  7. 제 1 항에 있어서,
    상기 제 2 스토리지 장치의 패리티 공간에서 상기 제 1 스토리지 장치로부터의 정보를 재구성는 단계는 백그라운드 프로세스에 의해 적어도 부분적으로 수행되는 방법.
  8. 제 1 항에 있어서,
    상기 제 2 스토리지 장치의 패리티 공간에서 상기 제 1 스토리지 장치로부터의 정보를 재구성하는 단계는 배치 프로세스에 의해 적어도 부분적으로 수행되는 방법.
  9. 제 1 항에 있어서,
    상기 제 1 스토리지 장치로부터의 정보는 데이터를 포함하는 방법.
  10. 제 1 항에 있어서,
    상기 제 2 스토리지 장치의 패리티 공간의 재구성 포인트에 기초하여 상기 제 1 스토리지 장치의 읽기 동작을 위한 제 1 데이터를 읽는 단계를 더 포함하는 방법.
  11. 제 10 항에 있어서,
    상기 읽기 동작을 위한 상기 제 1 데이터는 상기 제 1 스토리지 장치로부터 읽어 오는 방법.
  12. 제 10 항에 있어서,
    상기 읽기 동작을 위한 상기 제 1 데이터는 상기 제 2 스토리지 장치의 패리티 공간에 있는 재구성된 정보로부터 읽어 오는 방법.
  13. 제 1 항에 있어서,
    상기 제 2 스토리지 장치의 패리티 공간에서 상기 제 1 스토리지 장치의 쓰기 동작을 위해 제 1 데이터를 업데이트하는 단계; 및
    상기 제 1 스토리지 장치의 읽기 동작을 위해, 상기 제 2 스토리지 장치의 패리티 공간으로부터 업데이트된 제 1 데이터를 읽는 단계를 더 포함하는 방법.
  14. 제 1 항에 있어서,
    상기 제 1 스토리지 장치의 쓰기 동작을 위한 쓰기 데이터를 수신하는 단계; 및
    상기 제 2 스토리지 장치의 패리티 공간에 쓰기 데이터를 기록하는 단계를 더 포함하는 방법.
  15. 시스템에 있어서,
    컨트롤러;
    제 1 스토리지 장치; 및
    제 2 스토리지 장치를 포함하되,
    상기 제 1 스토리지 장치는 상기 제 1 스토리지 장치의 결함 상태에 기초하여 적어도 부분적인 읽기 능력을 갖는 결함 복원 모드에서 동작하고,
    상기 컨트롤러는,
    결함이 있는 스토리지 장치로부터 정보를 복구하기 위해 패리티 정보를 사용하도록 구성된 리던던트 어레이(redundant array)로서 상기 제 1 스토리지 장치 및 상기 제 2 스토리지 장치를 동작시키고, 상기 제 2 스토리지 장치의 패리티 공간에서 상기 제 1 스토리지 장치로부터의 정보를 재구성하도록 구성되는 시스템.
  16. 제 15 항에 있어서,
    상기 컨트롤러는 상기 제 2 스토리지 장치의 패리티 공간으로부터 대체 스토리지 장치로 상기 재구성된 정보를 복사하도록 추가로 구성되는 시스템.
  17. 제 15 항에 있어서,
    상기 컨트롤러는 상기 제 2 스토리지 장치의 패리티 공간의 재구성 포인트에 기초하여 상기 제 1 스토리지 장치로부터 읽기 동작을 위한 제 1 데이터를 읽도록 추가로 구성되는 시스템.
  18. 제 15 항에 있어서,
    상기 컨트롤러는 상기 제 1 스토리지 장치의 쓰기 동작을 위한 쓰기 데이터를 수신하고, 쓰기 데이터를 상기 제 2 스토리지 장치의 패리티 공간에 쓰도록 추가로 구성되는 시스템.
  19. 스토리지 어레이 컨트롤러에 있어서,
    제 1 스토리지 장치, 제 2 스토리지 장치 및 제 3 스토리지 장치를 패리티가 있는 RAID(redundant array of independent storage devices)로 동작하고, 상기 제 1 스토리지 장치는 제 1 스토리지 장치의 결함 상태에 기초하여 적어도 부분적 읽기 능력을 가진 결함 복원 모드에서 상기 제 1 스토리지 장치를 동작하도록 구성되고;
    상기 제 1 스토리지 장치로부터의 정보를 상기 제 2 스토리지 장치의 패리티 공간에 복사함으로써 상기 제 1 스토리지 장치의 결함 상태에 기초하여 상기 제 1 스토리지 장치로부터의 정보를 재구성하도록 구성되는 스토리지 어레이 컨트롤러.
  20. 제 19 항에 있어서,
    로직은 상기 제 2 스토리지 장치의 패리티 공간의 재구성 포인트에 기초하여 상기 제 1 스토리지 장치로부터 읽기 동작을 위한 데이터를 읽도록 추가로 구성되는 스토리지 어레이 컨트롤러.
KR1020210060571A 2020-05-11 2021-05-11 복구 공간으로 패리티 공간을 사용한 데이터 복구 시스템, 방법 및 장치 KR20210137922A (ko)

Applications Claiming Priority (14)

Application Number Priority Date Filing Date Title
US202063023243P 2020-05-11 2020-05-11
US63/023,243 2020-05-11
US202063051158P 2020-07-13 2020-07-13
US63/051,158 2020-07-13
US202063052854P 2020-07-16 2020-07-16
US63/052,854 2020-07-16
US202063057744P 2020-07-28 2020-07-28
US63/057,744 2020-07-28
US17/109,053 2020-12-01
US17/109,053 US11803446B2 (en) 2020-07-13 2020-12-01 Fault resilient storage device
US202163137133P 2021-01-13 2021-01-13
US63/137,133 2021-01-13
US17/227,262 US20210349781A1 (en) 2020-05-11 2021-04-09 Systems, methods, and devices for data recovery using parity space as recovery space
US17/227,262 2021-04-09

Publications (1)

Publication Number Publication Date
KR20210137922A true KR20210137922A (ko) 2021-11-18

Family

ID=78412657

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210060571A KR20210137922A (ko) 2020-05-11 2021-05-11 복구 공간으로 패리티 공간을 사용한 데이터 복구 시스템, 방법 및 장치

Country Status (4)

Country Link
US (1) US20210349781A1 (ko)
KR (1) KR20210137922A (ko)
CN (1) CN113641528A (ko)
TW (1) TW202145011A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111857549A (zh) * 2019-04-29 2020-10-30 伊姆西Ip控股有限责任公司 用于管理数据的方法、设备和计算机程序产品
US20240111623A1 (en) * 2022-10-04 2024-04-04 Scality, S.A. Extended protection storage system put operation

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6154853A (en) * 1997-03-26 2000-11-28 Emc Corporation Method and apparatus for dynamic sparing in a RAID storage system
KR101490327B1 (ko) * 2006-12-06 2015-02-05 퓨전-아이오, 인크. 뱅크 인터리브를 이용한 솔리드-스테이트 스토리지의 명령 관리 장치, 시스템 및 방법
US8443134B2 (en) * 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
US8458515B1 (en) * 2009-11-16 2013-06-04 Symantec Corporation Raid5 recovery in a high availability object based file system
US8788755B2 (en) * 2010-07-01 2014-07-22 Infinidat Ltd. Mass data storage system and method of operating thereof
US8839028B1 (en) * 2011-12-23 2014-09-16 Emc Corporation Managing data availability in storage systems
US9823840B1 (en) * 2012-05-07 2017-11-21 Amazon Technologies, Inc. Data volume placement techniques
US20140281689A1 (en) * 2013-03-15 2014-09-18 Teradata Corporation Method and system for rebuilding data following a disk failure within a raid storage system
US9122405B1 (en) * 2013-03-15 2015-09-01 Western Digital Technologies, Inc. Fast initialization of storage device
JP6209926B2 (ja) * 2013-10-09 2017-10-11 富士通株式会社 ストレージ制御装置、およびストレージ装置の制御プログラム
US20170060421A1 (en) * 2015-08-31 2017-03-02 Dell Products, Lp System and Method to Support Shingled Magnetic Recording Hard Drives in a Storage System
US10296255B1 (en) * 2015-12-16 2019-05-21 EMC IP Holding Company LLC Data migration techniques
US20220019366A1 (en) * 2017-04-21 2022-01-20 Pure Storage, Inc. Providing Data Services During Migration
CN109753223B (zh) * 2017-11-03 2022-07-08 伊姆西Ip控股有限责任公司 用于检测存储系统中的慢存储设备操作的方法和系统
US10929229B2 (en) * 2018-06-21 2021-02-23 International Business Machines Corporation Decentralized RAID scheme having distributed parity computation and recovery
US11069425B2 (en) * 2018-08-21 2021-07-20 Intel Corporation Multi-level memory repurposing technology to process a request to modify a configuration of a persistent storage media
US11055172B2 (en) * 2018-10-05 2021-07-06 Texas Instruments Incorporated Systems, methods, and apparatus to detect address faults
CN112148204B (zh) * 2019-06-27 2024-02-02 伊姆西Ip控股有限责任公司 用于管理独立冗余盘阵列的方法、设备和介质
US11256428B2 (en) * 2019-07-11 2022-02-22 Dell Products L.P. Scaling raid-based storage by redistributing splits
US11163459B2 (en) * 2019-10-28 2021-11-02 EMC IP Holding Company LLC Rekeying information on storage devices using a proactive copy service
US11231859B2 (en) * 2019-10-29 2022-01-25 EMC IP Holding Company LLC Providing a RAID resiliency set from a plurality of storage devices
US11281535B2 (en) * 2020-03-06 2022-03-22 Dell Products L.P. Method and system for performing a checkpoint zone operation for a spare persistent storage

Also Published As

Publication number Publication date
US20210349781A1 (en) 2021-11-11
TW202145011A (zh) 2021-12-01
CN113641528A (zh) 2021-11-12

Similar Documents

Publication Publication Date Title
CN109726033B (zh) 提供raid数据保护的方法、数据存储系统和计算机可读介质
US10067844B2 (en) Method of channel content rebuild in ultra-high capacity SSD
US9891989B2 (en) Storage apparatus, storage system, and storage apparatus control method for updating stored data stored in nonvolatile memory
US20150074371A1 (en) Storage array system and non-transitory recording medium storing control program
US9223655B2 (en) Storage system and method for controlling storage system
US10324782B1 (en) Hiccup management in a storage array
US20220291996A1 (en) Systems, methods, and devices for fault resilient storage
US20230251931A1 (en) System and device for data recovery for ephemeral storage
KR20210137922A (ko) 복구 공간으로 패리티 공간을 사용한 데이터 복구 시스템, 방법 및 장치
US9256490B2 (en) Storage apparatus, storage system, and data management method
US20210349780A1 (en) Systems, methods, and devices for data recovery with spare storage device and fault resilient storage device
WO2016006108A1 (ja) ストレージおよびその制御方法
US12026055B2 (en) Storage device with fault resilient read-only mode
Ali et al. Developed RAID DP with combined storage media

Legal Events

Date Code Title Description
A201 Request for examination