KR20210137921A - 예비 스토리지 장치와 결함 복원형 스토리지 장치를 사용한 데이터 복구를 위한 시스템, 방법, 및 장치 - Google Patents

예비 스토리지 장치와 결함 복원형 스토리지 장치를 사용한 데이터 복구를 위한 시스템, 방법, 및 장치 Download PDF

Info

Publication number
KR20210137921A
KR20210137921A KR1020210060561A KR20210060561A KR20210137921A KR 20210137921 A KR20210137921 A KR 20210137921A KR 1020210060561 A KR1020210060561 A KR 1020210060561A KR 20210060561 A KR20210060561 A KR 20210060561A KR 20210137921 A KR20210137921 A KR 20210137921A
Authority
KR
South Korea
Prior art keywords
storage device
data
read
information
spare
Prior art date
Application number
KR1020210060561A
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 KR20210137921A publication Critical patent/KR20210137921A/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
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1032Simple parity
    • 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
    • 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
    • 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/2094Redundant storage or storage space

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)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

방법은 리던던트 어레이로 제1 스토리지 장치 및 제2 스토리지 장치를 동작시키는 단계, 제1 스토리지 장치의 결함 상태에 기반하여 적어도 부분적인 읽기 성능을 갖는 결함 복원 모드에 있는 제1 스토리지 장치를 동작시키는 단계, 그리고 제1 스토리지 장치의 결함 상태에 기반하여 예비 스토리지 장치 상에서 제1 스토리지 장치로부터 정보를 재구축하는 단계를 포함할 수 있다. 예비 스토리지 장치 상에서 제1 스토리지 장치로부터 정보를 재구축하는 단계는 제1 스토리지 장치로부터 예비 스토리지 장치로 정보를 복사하는 단계를 포함한다. 제1 스토리지 장치로부터의 정보는 데이터 및/또는 패리티 정보를 포함할 수 있다. 방법은 예비 스토리지 장치의 재구축 지점에 기반하여 제1 스토리지 장치로부터 읽기 또는 쓰기 동작에 대한 제1 정보를 읽는 단계를 더 포함할 수 있다.

Description

예비 스토리지 장치와 결함 복원형 스토리지 장치를 사용한 데이터 복구를 위한 시스템, 방법, 및 장치{SYSTEMS, METHODS, AND DEVICES FOR DATA RECOVERY WITH SPARE STORAGE DEVICE AND FAULT RESILIENT STORAGE DEVICE}
본 개시는 일반적으로 스토리지 장치들에 관련되고, 좀 더 상세하게는, 예비 스토리지 장치와 결함 복원형(resilient) 스토리지 장치를 사용한 데이터 복구(recovery)를 위한 시스템, 방법, 및 장치에 관련된다.
스토리지 시스템은 예비 스토리지 장치상에 결함이 있는 스토리지 장치로부터 데이터를 재구축함으로써, 결함 있는 스토리지 장치로부터 데이터를 복구할 수 있다.
발명의 배경이 되는 기술에 개시되는 정보는 본 개시의 배경에 대한 이해를 높이기 위한 것일 뿐이므로, 종래 기술을 구성하지 않는 정보를 포함할 수 있다.
본 발명의 목적은 예비 스토리지 장치와 결함 복원형 스토리지 장치를 사용한 데이터 복구를 위한 시스템, 방법, 및 장치를 제공하는 데 있다.
몇몇 실시 예에 있어서, 결함 복원형 스토리지 장치는 부분적 성능을 유지하면서 다양한 복원 모드들로 동작할 수 있거나, 내부 결함들에도 불구하고 완전한 기능으로 돌아갈 수 있다. 스토리지 장치가 부분적 성능을 유지할 수 있는 방법들 중 하나는, 몇몇 상황들에서 읽기 전용 모드로 동작하는 것이다. 읽기 전용 모드에서, 스토리지 장치는 호스트로부터의 읽기 요청들에 응답할 수 있으나, 호스트로부터 쓰기 요청을 수신한 경우에는 에러 메시지를 반환할 수 있다. RAID-0 스토리지 시스템에서, 스토리지 장치가 읽기 전용 모드에서 동작하도록 전환할 수 있는 가능성은, 스토리지 장치가 읽기 전용 모드에서 동작하도록 전환한 후에 수행된 쓰기 작업들에 대한 스트라이프를 구성하는 스트립들을 재분배함으로써 수용될 수 있다.
본 개시의 실시 예에 따르면, 스토리지 미디어를 포함하는 스토리지 장치를 동작하기 위한 방법이 제공된다. 해당 방법은, 스토리지 장치가 스토리지 장치의 전원을 순환하거나 스토리지 매체를 포맷함으로써 복구가 가능한 제1 결함 상태에 있음을 스토리지 장치에 의해 판단하는 단계; 스토리지 장치가 감소된 수행 능력의, 감소된 용량의, 또는 읽기 전용 모드에서의 스토리지 장치를 동작시킴으로써 부분 복구가 가능한 제2 결함 상태에 있음을 스토리지 장치에 의해 판단하는 단계; 감소된 수행 능력의, 감소된 용량의, 또는 읽기 전용 모드에서의 스토리지 장치를 동작시키는 단계를 포함한다.
몇몇 실시 예들에 있어서, 해당 방법은: 제1 결함 상태와 제2 결함 상태와 다른 제3 결함 상태에 있는 스토리지 장치임을 스토리지 장치에 의해 판단하는 단계; 읽기 및 쓰기 동작들이 수행되지 않고, 스토리지 장치가 수신된 읽기 또는 쓰기 명령들에 응답하여 에러를 반환하는 모드에서 스토리지 장치를 동작시키는 방법을 더 포함하되, 스토리지 장치는 제1 코어 및 제2 코어를 포함하는 컨트롤러를 포함하고, 제3 결함 상태는 제1 코어가 제2 코어의 장애 발생를 판단하는 서브 상태를 포함한다.
몇몇 실시 예들에 있어서, 해당 방법은 스토리지 장치의 상태에 관한 쿼리를 호스트로부터 수신하는 단계; 그리고 상태 계층에서의 상태에 대응하는 상태로 쿼리에 응답하는 단계를 더 포함한다.
몇몇 실시 예들에 있어서, 상태 계층은 제1 결함 상태에 대응하는 완전 복원 상태, 및 제2 결함 상태에 대응하는 부분 복원 상태를 포함하는 제1 레벨을 포함한다.
몇몇 실시 예들에 있어서 부분 복원 상태는 성능의 손실을 나타내는 제1 서브-상태를 포함하되, 제1 서브 상태는, 지속 가능한 읽기 전용 모드에서의 동작을 나타내는 제1 서브-서브-상태 및 지속 불가능한 읽기 전용 모드에서의 동작을 나타내는 제2 서브-서브-상태를 포함한다.
몇몇 실시 예들에 있어서, 쿼리를 수신하는 단계는, NVMe 인터페이스를 통해 쿼리를 수신하는 단계를 포함하고, 쿼리에 응답하는 단계는, NVMe 인터페이스를 통해 응답하는 단계를 포함한다.
몇몇 실시 예들에 있어서, 제1 결함 상태는 스토리지 장치의 컨트롤러의 프로그램 실행 에러는 스토리지 매체에 잘못된 데이터가 쓰여지도록 유발하는 제1 서브-상태를 포함하고, 스토리지 장치가 제1 결함 상태에 있음을 판단하는 단계는 포인터가 범위를 벗어 났음을 판단하는 단계를 포함하고, 제1 결함 상태는 컨트롤러에 의해 스토리지 매체가 가장 최근의 쓰기 이후 스토리지 장치의 컨트롤러의 프로그램 실행 에러가 발생한 제2 서브-상태를 포함한다. 본 개시의 일 실시 예에 따르면, 상기 조건은 상기 제1 풀에서 상기 제2 리소스 집합의 가용성이다.
몇몇 실시 예들에 있어서, 해당 방법은 스토리지 매체의 일부를 재 포맷하는 단계를 더 포함하고, 재 포맷은 전체 스토리지 매체를 재 포맷하는 것을 포함한다.
몇몇 실시 예들에 있어서, 감소된 수행 능력을 갖는 스토리지 장치를 동작시키는 단계를 포함한다.
몇몇 실시 예들에 있어서, 감소된 수행 능력으로 동작시키는 단계는, 스토리지 장치에 연결된 호스트로부터 데이터를 포함하는 쓰기 명령을 수신하는 단계; 스토리지 매체로 데이터를 쓰는 단계; 그리고 호스트로 명령 완료를 송신하는 단계를 포함하되, 스토리지 매체로 데이터를 쓰는 단계 및 호스트로 명령 완료를 송신하는 단계는 동기화 쓰기의 일부로 수행된다.
몇몇 실시 예들에 있어서, 감소된 수행능력으로 동작시키는 단계는, 스토리지 장치로 제1 쓰기를 수행하는 단계; 감소된 수행 능력에 대응하는 간격 동안 대기하는 단계; 및 스토리지 매체로 제2 쓰기를 수행하는 단계를 포함한다.
몇몇 실시 예들에 있어서, 해당 방법은 감소된 용량으로 스토리지 장치를 동작시키는 방법을 포함한다.
본 발명의 실시 예에 따르면, 스토리지 장치를 제공하며, 스토리지 장치는 처리 회로; 및 스토리지 매체를 포함하되, 처리 회로는: 스토리지 장치의 전원을 순환하거나 스토리지 매체를 포맷함으로써 복구가 가능한 제1 결함 상태에 있음을 판단하고; 스토리지 장치가 감소된 수행 능력의, 감소된 용량의, 또는 읽기 전용 모드에서의 스토리지 장치를 동작시킴으로써 부분 복구가 가능한 제2 결함 상태에 있음을 판단하고; 및 감소된 수행 능력의, 감소된 용량의, 또는 읽기 전용 모드에서의 스토리지 장치를 동작시키도록 구성된다.
몇몇 실시 예들에 따르면, 처리 회로는: 장치의 상태에 관한 쿼리를 호스트로부터 수신하고, 상태 계층에서의 상태에 대응하는 상태로 쿼리에 응답하도록 더 구성되고, 상태 계층은 제1 레벨을 포함하고, 제1 레벨은 제1 결함 상태에 대응하는 완전 복원 상태, 및 제2 결함 상태에 대응하는 부분 결함 상태를 포함한다.
몇몇 실시 예들에 있어서, 쿼리를 수신하는 것은, NVMe인터페이스를 통해 쿼리를 수신하는 것을 포함하고, 쿼리에 응답하는 것은, NVMe 인터페이스를 통해 응답하는 것을 포함한다.
몇몇 실시 예들에 있어서, 처리 회로는 감소된 수행 능력의 스토리지 장치를 동작시키도록 구성되되, 감소된 수행 능력으로 동작시키는 것은: 스토리지 장치로 제1 쓰기를 수행하는 것; 감소된 수행 능력에 대응하는 간격 동안 대기하는 것; 및 스토리지 매체로 제2 쓰기를 수행하는 것을 포함한다.
본 개시의 실시 예에 따르면, 스토리지 장치를 포함하는 시스템이 제공된다. 스토리지 장치는: 처리 수단; 및 스토리지 매체를 포함하되, 처리 수단은: 스토리지 장치가 스토리지 장치의 전원을 순환하거나 스토리지 매체를 포맷함으로써 복구가 가능한 제1 결함 상태에 있음을 판단하고; 스토리지 장치가 감소된 수행 능력의, 감소된 용량의, 또는 읽기 전용 모드에서의 스토리지 장치를 동작시킴으로써 부분 복구가 가능한 제2 결함 상태에 있음을 판단하고; 및 감소된 수행 능력의, 감소된 용량의, 또는 읽기 전용 모드에서의 스토리지 장치를 동작시키도록 구성된다.
몇몇 실시 예들에 있어서, 처리 수단은: 스토리지 장치의 상태에 관한 쿼리를 호스트로부터 수신하고; 상태 계층에서의 상태에 대응하는 상태로 쿼리에 응답하도록 더 구성되되, 상태 계층은 제1 결함 상태에 대응하는 완전 복원 상태, 및 제2 결함 상태에 대응하는 부분 복원 상태를 포함하는 제1 레벨을 포함한다.
몇몇 실시 예들에 있어서, 쿼리를 수신하는 것은, NVMe인터페이스를 통해 쿼리를 수신하는 것을 포함하고, 쿼리에 응답하는 것은, NVMe 인터페이스를 통해 응답하는 것을 포함한다.
몇몇 실시 예들에 있어서, 처리 수단은 감소된 수행 능력으로 스토리지 장치를 동작시키도록 구성되되, 감소된 수행 능력으로 동작시키는 것은, 스토리지 장치에 연결된 호스트로부터 데이터를 포함하는 쓰기 명령을 수신하는 것; 스토리지 매체로 데이터를 쓰는 것; 그리고 호스트로 명령 완료를 송신하는 것을 포함하되, 스토리지 매체로 데이터를 쓰는 것 및 호스트로 명령 완료를 송신하는 것은 동기화 쓰기의 일부로 수행한다.
본 발명의 실시 예에 따르면, 방법이 제공된다. 해당 방법은: 리던던트 어레이(redundant array)로 제1 스토리지 장치 및 제2 스토리지 장치를 동작시키는 단계; 제1 스토리지 장치의 결함 상태에 기반하여 적어도 부분적인 읽기 성능을 갖는 결함 복원 모드에서 제1 스토리지 장치를 동작시키는 단계, 제1 스토리지 장치의 결함 상태에 기반하여 예비 스토리지 장치 상에서 제1 스토리지 장치로부터 정보를 재구축하는 단계를 포함할 수 있다. 제1 스토리지 장치의 결함 상태에 기반하여 예비 스토리지 장치 상에서 스토리지 장치로부터 정보를 재구축하는 단계는, 제1 스토리지 장치로부터 예비 스토리지 장치로 정보를 복사하는 단계를 포함할 수 있다. 제1 스토리지 장치로부터의 정보는 데이터를 포함할 수 있다. 제1 스토리지 장치로부터의 정보는 패리티 정보를 포함할 수 있다. 해당 방법은 예비 스토리지 장치의 재구축 지점에 기반하여 제1 스토리지 장치로부터 읽기 동작에 대한 제1 데이터를 읽는 단계를 더 포함할 수 있다. 해당 방법은 예비 스토리지 장치로 제1 데이터를 쓰는 단계를 더 포함할 수 있다. 해당 방법은 쓰기 동작에 대한 쓰기 데이터를 수신하는 단계, 그리고 예삐 스토리지 장치의 재구축 지점에 기반하여 제1 스토리지 장치로부터 쓰기 동작에 대한 제1 정보를 읽는 단계를 더 포함할 수 있다. 해당 방법은 제1 정보를 이용하여 쓰기 동작에 대한 갱신된 패리티 정보를 계산하는 단계를 더 포함할 수 있다. 해당 방법은 제1 정보는 데이터를 포함하고, 예비 스토리지 장치로 쓰기 데이터를 쓰는 단계를 더 포함할 수 있다. 해당 방법은 제1 정보는 패리티 정보를 포함하고, 예비 스토리지 장치로 갱신된 패리티 정보를 쓰는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 따르면, 시스템이 제공될 수 있다. 시스템은 컨트롤러, 제1 스토리지 장치, 제2 스토리지 장치, 및 예비 스토리지 장치를 포함하되, 제1 스토리지 장치는 제1 스토리지 장치의 결함 상태에 기반하여 적어도 부분적인 읽기 성능을 갖는 복원 모드에서 동작하는 것이 가능하고, 컨트롤러는, 리던던트 어레이로 제1 스토리지 장치 및 제2 스토리지 장치를 동작시키고, 제1 스토리지 장치의; 결함 상태에 기반하여 예비 스토리지 장치 상에서 제1 스토리지 장치로부터 정보를 재구축하도록 구성될 수 있다. 컨트롤러는 제1 스토리지 장치로부터 예비 스토리지 장치로 정보를 복사하도록 더 구성될 수 있다. 컨트롤러는 예비 스토리지 장치의 재구축 지점에 기반하여 제1 스토리지 장치로부터 읽기 동작에 대한 제1 데이터를 읽도록 더 구성될 수 있다. 컨트롤러는 예비 스토리지 장치로 제1 데이터를 쓰도록 더 구성될 수 있다. 컨트롤러는, 쓰기 동작에 대한 쓰기 데이터를 수신하고, 예비 스토리지 장치의 재구축 지점에 기반하여 제1 스토리지 장치로부터 쓰기 동작에 대한 제1 정보를 읽고, 제1 정보를 사용하여 쓰기 동작에 대한 갱신된 패리티 정보를 계산하도록 더 구성될 수 있다. 제1 정보는 데이터를 포함하고, 컨트롤러는 예비 스토리지 장치로 쓰기 데이터를 쓰도록 더 구성될 수 있다. 제1 정보는 패리티 정보를 포함하고, 컨트롤러는 예비 스토리지 장치로 갱신된 패리티 정보를 쓰도록 구성될 수 있다.
본 발명의 실시 예에 따르면, 스토리지 어레이 컨트롤러가 제공된다. 해당 스토리지 어레이 컨트롤러는 로직을 포함하되, 로직은 제1 스토리지 장치, 제2 스토리지 장치, 및 제3 스토리지 장치를 패리티가 있는 RAID(redundant array of independent storage device)로 동작하고, 제1 스토리지 장치로부터 예비 스토리지 장치로 정보를 복사하여 제1 스토리지 장치의 결함 상태에 기반하여 제1 스토리지 장치로부터 정보를 재구축하도록 구성되고, 제1 스토리지 장치는 제1 스토리지 장치의 결함 상태에 기반하여 적어도 부분적인 읽기 성능을 갖는 결함 복원 모드에서 동작하도록 구성될 수 있다. 로직은 예비 스토리지 장치의 재구축 지점에 기반하여 제1 스토리지 장치로부터 읽기 동작에 대해 데이터를 읽도록 더 구성될 수 있다. 로직은 쓰기 동작에 대한 쓰기 데이터를 수신하고, 예비 스토리지 장치의 재구축 지점에 기반하여 제1 스토리지 장치로부터 쓰기 동작에 대한 제1 정보를 읽고, 제1 정보를 이용하여 쓰기 동작에 대한 갱신된 패리티 정보를 계산할 수 있다.
본 개시의 실시 예에 따르면, 결함 복원형 스토리지 장치는 부분적 성능을 유지하면서 다양한 복원 모드들로 동작하거나, 내부 결함들에도 불구하고 완전한 기능으로 돌아갈 수 있다.
도면은 반드시 일정한 비율로 그려진 것은 아니며, 유사한 구조 또는 기능의 요소들은 일반적으로 도면 전체에 걸쳐 예시를 위해 유사한 참조 번호 또는 그 일부로 표시될 수 있다. 도면은 본 명세서에서 설명된 다양한 실시 예의 설명을 용이하게 하기 위한 것일 뿐이다. 도면은 본 명세서에 개시된 교시의 모든 측면을 설명하지 않으며, 청구범위를 제한하지 않는다. 도면이 불명확하게 되는 것을 방지하지 위해, 모든 구성들, 연결부 등이 표시되지 않을 수 있으며 모든 구성이 참조 번호를 갖지 않을 수 있다. 그러나 구성의 패턴은 도면에서 쉽게 알 수 있다. 본 명세서와 함께 첨부된 도면은 본 개시의 예시적인 실시 예들을 도시하고, 설명과 함께 본 개시의 원리를 설시하는 역할을 한다.
도 1은 본 개시의 예시적인 실시 예들에 따른 데이터 스토리지 시스템의 블록도이다.
도 2a는 본 개시의 예시적인 실시 예들에 따른 스토리지 장치의 결함 상태들에 대한 표이다.
도 2b는 본 개시의 예시적인 실시 예들에 따른 호스트에 의해 스토리지 장치로 송신하기 위한 명령들에 대한 표이다.
도 2c는 본 개시의 예시적인 실시 예들에 따른 복원 모드의 계층을 보여주는 표이다.
도 3a는 본 개시의 예시적인 실시 예들에 따른 결함 복원형 스토리지 장치의 동작의 제1 방법에 대한 흐름도이다.
도 3b는 본 개시의 예시적인 실시 예들에 따른 결함 복원형 스토리지 장치의 동작의 제2 방법에 대한 흐름도이다.
도 4는 본 개시의 예시적인 실시 예들에 따른 스토리지 장치의 개략적인 데이터 레이아웃 도면이다.
도 5a는 본 개시의 예시적인 실시 예들에 따른 결함 복원형 읽기 전용 모드에 있는 스토리지 장치의 동작의 제1 방법에 대한 흐름도이다.
도 5b는 본 개시의 예시적인 실시 예들에 따른 결함 복원형 읽기 전용 모드에 있는 스토리지 장치의 동작의 제2 방법에 대한 흐름도이다.
도 6a는 본 개시의 예시적인 실시 예들에 따른 쓰기 동작을 수행하는 RAID-0 시스템의 개략적인 데이터 레이아웃 도면이다.
도 6b는 본 개시의 예시적인 실시 예들에 따른 읽기 동작을 수행하는 RAID-0 시스템의 개략적인 데이터 레이아웃 도면이다.
도 6c는 본 개시의 예시적인 실시 예들에 따른 재 맵핑 및 쓰기 동작을 수행하는 RAID-0 시스템의 개략적인 데이터 레이아웃 도면이다.
도 7a는 본 개시의 예시적인 실시 예들에 따른 RAID-0 스토리지 시스템의 동작의 제1 방법에 대한 흐름도이다.
도 7b는 본 개시의 예시적인 실시 예들에 따른 RAID-0 스토리지 시스템의 동작의 제2 방법에 대한 흐름도이다.
도 8은 본 개시의 예시적인 실시 예들에 따른 RAID-4 스토리지 시스템에 대한 맵핑 방식의 실시 예를 도시한다.
도 9는 본 개시의 예시적인 실시 예들에 따른 RAID-5 스토리지 시스템에 대한 맵핑 방식의 실시 예를 도시한다.
도 10은 본 개시의 예시적인 실시 예들에 따른 적어도 하나의 결함 복원형 스토리지 장치를 포함하는 리던던트 어레이 스토리지 시스템에 대한 맵핑 방식의 실시 예를 도시한다.
도 11은 본 개시의 예시적인 실시 예들에 따른 리던던트 어레이 스토리지 시스템의 예시적인 실시 예를 도시한다.
도 12는 본 개시의 예시적인 실시 예들에 따른 결함 복원형 스토리지 장치 없이 예비 스토리지 장치에서 재구축 동작을 수행하는 RAID-5 스토리지 시스템의 예시적인 실시 예를 도시한다.
도 13은 본 개시의 예시적인 실시 예들에 따른 결함 복원형 스토리지 장치로 예비 스토리지 장치에서 재구축 동작을 수행하는 RAID-5 스토리지 시스템의 예시적인 실시 예를 도시한다.
도 14는 본 개시의 예시적인 실시 예들에 따른 요청된 읽기 동작에 대해 하나 이상의 유효한 데이터 블록이 이용 가능할 수 있는 재구축 동작 동안 결함 있는 스토리지 장치 없이 RAID-5 스토리지 시스템에 의해 수행되는 읽기 동작의 일부 예시적인 실시 예들을 도시한다.
도 15는 본 개시의 예시적인 실시 예들에 따른 요청된 읽기 동작에 대해 유효한 데이터 블록이 이용 가능하지 않은 재구축 동작 동안 결함 복원형 스토리지 장치 없이 RAID-5 스토리지 시스템에 의해 수행되는 다른 읽기 동작의 예시적인 실시 예를 도시한다.
도 16은 요청된 읽기 동작에 대해 하나 이상의 유효한 데이터 블록들이 이용 가능할 수 있는 재구축 동작 동안 본 개시의 예시적인 실시 예에 따른 결함 복원형 스토리지 장치를 갖는 RAID-5 스토리지 시스템에 의해 수행되는 읽기 동작들의 일부 예시적인 실시 예들을 도시한다.
도 17은 재구축 지점이 요청된 읽기 동작에 대해 데이터 블록이나 패리티 블록에 도달하지 않을 수 있는 재구축 동작 동안 본 개시의 예시적인 실시 예들에 따른 결함 복원형 스토리지 장치를 갖는 RAID-5 스토리지 시스템에 의해 수행될 수 있는 읽기 동작들의 일부 추가 예시적인 실시 예들을 도시한다.
도 18은 본 개시의 예시적인 실시 예들에 따른 결함 있는 스토리지 장치를 위해 쓰기 동작이 이미 재구축된 데이터 블록 상에서 수행될 수 있는 재구축 동작 동안 결함 복원 스토리지 장치 없이 RAID-5 스토리지 시스템에 의해 수행되는 쓰기 동작의 예시적인 실시 예를 도시한다.
도 19a는 본 개시의 예시적인 실시 예에 따른, 쓰기 동작이 이전 데이터 블록이 결함 있는 스토리지 장치에 처음 있을 수 있는 갱신된 데이터 블록을 쓸 수 있는 재구축 동작 동안 결함 복원형 스토리지 장치 없이 RAID-5 스토리지 시스템에 의해 수행되는 쓰기 동작의 예시적인 실시 예를 도시한다.
도 19b는 본 개시의 예시적인 실시 예에 따른, 쓰기 동작이 패리티 블록이 결함 있는 스토리지 장치에 처음 있을 수 있는 갱신된 데이터 블록을 쓸 수 있는 재구축 동작 동안 결함 복원형 스토리지 장치 없이 RAID-5 스토리지 시스템에 의해 수행되는 쓰기 동작의 예시적인 실시 예를 도시한다.
도 20은 본 개시의 예시적인 실시 예들에 따른 결함 있는 스토리지 장치 상의 데이터 블록을 포함할 수 있는 쓰기 동작의 예시적인 실시 예를 도시한다.
도 21은 본 개시의 예시적인 실시 예들에 따른 결함 있는 스토리지 장치 상의 패리티 블록을 포함할 수 있는 쓰기 동작의 예시적인 실시 예를 도시한다.
도 22는 본 개시의 예시적인 실시 예들에 따른 스토리지 어레이를 동작시키기 위한 방법의 실시 예를 도시한다.
도 23은 본 개시의 예시적인 실시 예들에 따른 결합 복원 모드들과 스토리지 장치로 구현될 수 있는 관련 LBA(logical block address) 공간 타입들의 일부 예시적인 실시 예들에 대한 표이다.
첨부된 도면들과 관련하여 이하 발명의 설명은 본 개시에 따라 제공되는 스토리지 장치들 및 스토리지 장치들을 포함하는 시스템들의 복원 동작을 위한 시스템 및 방법의 예시적인 실시 예의 설명으로서 의도된 것이지, 본 개시가 구성되거나 활용될 수 있는 유일한 형태를 표현하기 위해 의도된 것이 아니다. 발명의 설명은 예시된 실시 예와 관련하여 본 개시의 특징들을 설명한다. 그러나, 동일하거나 동등한 기능들 및 구조들은 본 개시의 범위 내에 포함되도록 의도된 다른 실시 예들에 의해 달성될 수 있다는 것이 이해되어야 한다. 본 명세서 내에서 언급된 바와 같이, 유사한 구성요소 번호들은 유사한 구성요소들 또는 특징들을 나타내도록 의도된다.
몇몇 실시 예에 있어서, 결함 복원형(resilient) 스토리지 장치는 다양한 복원 모드들에서 동작할 수 있고, 내부 결함들에도 불구하고 부분적 기능을 유지하거나 전체 기능으로 돌아갈 수 있다. 예를 들어, 온도 센서 오류에 응답하여, 스토리지 장치는 감소된 속도로 동작하거나 쓰기 동작들에 대해서 감소된 속도로 동작할 수 있거나, 쓰기 동작을 완전히 멈출 수 있다. 스토리지 매체를 손상시킬 수 있는 일시적인 오류에 응답하여, 스토리지 장치는 스토리지 매체를 다시 포맷(format)할 수 있다. 스토리지 매체를 손상시키지 않는 일시적인 오류에 응답하여, 스토리지 장치는 전원을 순환할 수 있다. 스토리지 장치가 부분적 기능을 유지할 수 있는 방법들 중 하나는 몇몇 상황들에서 읽기 전용 모드로 동작하는 것이다. 읽기 전용(read-only) 모드에서, 스토리지 장치는 호스트로부터의 읽기 요청들에 응답할 수 있으나, 호스트로부터 쓰기 요청을 수신한 경우에는 에러 메시지를 반환할 수 있다. 또한, 스토리지 장치는 만료 직전의 데이터를 구조 영역으로 이동시킬 수 있으므로, 만료로 인해 데이터가 손실되지 않는다. RAID-0 스토리지 시스템에서, 스토리지 장치가 읽기 전용 모드에서 동작하도록 전환할 수 있는 가능성은, 스토리지 장치가 읽기 전용 모드에서 동작하도록 전환한 후에 수행된 쓰기 작업들에 대한 스트라이프를 구성하는 스트립들을 재분배함으로써 수용될 수 있다.
도 1은 본 개시의 예시적인 실시 예에 따른 하나 이상의 스토리지 장치들(110)에 연결된 호스트(105)를 포함하는 컴퓨팅 시스템을 도시한다. 스토리지 장치들(110)은 도시된 바와 같이, 볼륨 매니저(115)를 통해 호스트(105)에 연결되거나, 호스트(105)에 직접 연결될 수 있다. 몇몇 실시 예에서, 스토리지 장치(110)는 내부 결함 상태에 빠질 수 있고, 스토리지 장치(110)는 결함 상태의 시스템 수준 영향을 완화하기 위해, 이하 상세하게 설명될 다양한 복원 행동들을 나타낼 수 있다. 각각의 스토리지 장치(110)는 SSD(solid state drive)일 수 있고, 컨트롤러(120)(또는 제어 회로)와 스토리지 매체(125)(예컨대, NAND 플래시 메모리(not AND flash memory))를 포함할 수 있다. 스토리지 장치(110)에서 지울 수 있는(erasable) 가장 작은 단위를 “블록”으로 지칭할 수 있고, 스토리지 장치(110)에서 쓰기 가능한(writeable) 가장 작은 쓰기 가능한 단위를 “페이즈”로 지칭할 수 있다. 각 스토리지 장치(110)는 2.5”, 1.8”, MO-297, MO-300, M.2 및 EDSFF(enterprise and data center SSD form factor)를 포함하지만 이에 한정되지 않는 영구 스토리지 장치들에 적합한 복수의 폼 팩터(form factor)들 중 어느 하나인 폼 팩터를 가질 수 있다. 그리고, 각각의 스토리지 장치(110)는 전기 인터페이스(electrical interface)를 가질 수 있고, 전기 인터페이스를 통해, PCI(peripheral component interconnect), PCIe(PCI express), 이더넷(ethernet), SCSI(small computer system interface), SATA(serial at attachment), 및 SAS(serial attached SCSI)를 포함하는 영구 스토리지 장치에 적합한 복수의 인터페이스들 중 어느 하나인 호스트(105)에 연결될 수 있다.
스토리지 매체(125)는 보존 기간(스토리지 매체(125)의 사용 이력에 종속적일 수 있고, 그 자체로 스토리지 매체(125) 내에서 변동될 수 있음)을 가질 수 있고, 보존 기간보다 오래 저장된 데이터(예컨대, 보존 기간을 초과한 데이터)는 신뢰할 수 없게 되어 만료되었다 할 수 있다. 데이터는 블록 코드(block code)일 수 있는 에러 수정 코드를 이용하여 스토리지 매체(125)에 저장될 수 있다. 데이터를 스토리지 매체(125)로부터 읽을 때, 코드 블록(code block)으로 지칭되는 많은 양의 미가공 데이터를 스토리지 매체(125)로부터 읽어 디코딩(decoding)을 시도할 수 있다. 시도가 실패하면, 추가적인 시도(읽기 재시도)들이 수행될 수 있다. 사용에 따라, 스토리지 매체(125)의 일부, 예컨대 블록은 보존 기간이 허용할 수 없을 정도로 짧아지는 지점까지 성능이 저하될 수 있고, 해당 블록은 배드 블록(bad block)으로 분류될 수 있다. 이러한 상황이 전체 스토리지 매체(125)를 작동 불가능하게 만드는 것을 방지하기 위해, “배드 블록 관리 예비 공간”으로 지칭되는 예비 공간이 존재할 수 있고(예컨대, 각각의 플래시 메모리 다이 또는 각각의 플래시 메모리 평면에 포함됨), 컨트롤러(120), 또는 플래시 메모리 다이 또는 플래시 메모리 평면 내부의 다른 컨트롤러는 예비 블록을 사용하기 시작하고 배드 블록의 사용을 중단할 수 있다.
도 2a는 본 개시의 예시적인 실시 예들에 따라 각각 케이스 식별자(“케이스 ID”)로 라벨링된 결함 상태들(또는 결함 상황들)에 대한 표이다. 케이스 1은 스토리지 장치(110)가 더 이상 읽기 또는 쓰기 동작들을 수행할 수 없고, 전원을 순환하거나 스토리지 매체를 다시 포맷함으로써 해결할 수 없는 결함 상태다. 예를 들어, 스토리지 장치(110)가 이러한 방식으로 동작하는 상태는 상이한 오류 메커니즘에 대응하는 각각의 서브-상태와 함께 다양한 서브 상태들을 가질 수 있다. 예를 들어, 이러한(스토리지 장치(110)가 더 이상 읽기 또는 쓰기 동작들을 수행할 수 없고, 전원을 순환하거나 스토리지 매체를 다시 포맷함으로써 해결할 수 없는) 상태, 또는 결함 상태는 컨트롤러의 펌웨어가 손상(이 경우, 컨트롤러가 손상된 명령이 실행되지 않는 안전 모드로 다시 시작될 수 있음)되거나 스토리지 장치(110)의 처리 회로 오류(예컨대, 스토리지 매체와의 상호 작용들을 관리하지만 호스트(105)와의 통신을 담당하지 않는 처리 회로 오류)에 의해 유발될 수 있다. 이러한 유형의 결함 상태가 발생하면, 스토리지 장치(110)는 임의의 읽기 또는 쓰기 커맨드에 에러 메시지와 함께 응답할 수 있다.
케이스 2는 (i) 스토리지 장치(110)가 더 이상 읽기 또는 쓰기 동작들을 수행할 수 없고, (ii) 스토리지 장치(110)의 전원을 순환하거나 스토리지 매체를 다시 포맷함으로써 복원이 가능한 결함 상태이다. 예를 들어, 이러한 결함 상태는 스토리지 장치(110)의 컨트롤러(120)의 프로그램 실행 에러(예컨대, 컨트롤러(120)의 RAM(random access memory)내에서 비트 플립(bit flip)의 결과로 범위를 벗어난 포인터, 또는 비트 플립의 결과에 의한 잘못된 명령어)에 의해 유발될 수 있다. 프로그램 실행 에러로 인해 컨트롤러(120)가 잘못된 데이터를 스토리지 매체(125)에 기록하지 않은 경우(예컨대, 컨트롤러에 의해 스토리지 매체에의 가장 최근의 쓰기 이후 프로그램 실행 에러가 발생한 경우), 스토리지 장치의 전원을 순환하는 것은 스토리지 장치(110)를 정상 동작하도록 복구하기에 충분할 수 있다. 프로그램 실행 에러가 컨트롤러(120)가 스토리지 매체(125)에 에러 데이터를 쓰도록 유발한 경우. 스토리지 매체(125)를 다시 포맷하는 것은 스토리지 장치(110)를 정상 동작하도록 복구하기에 충분할 수 있다.
케이스 3은 스토리지 장치(110)를 읽기 전용 모드로 동작시킴으로써 완화될 수 있고, 스토리지 매체(125)를 다시 포맷하는 것으로 완전한 기능을 복구하지 않을 결함 상태이다. 이러한 결함들의 예시들은 (i) 온도 센서 오류와, (ii) 읽기 전용 모드로 전환된 스토리지 매체(125)의 일부를 포함한다. 온도 센서 오류의 경우, 온도 센서 판독 값이 범위를 벗어났다고 판단함으로써 오류가 감지될 수 있고(예컨대, 임계 온도를 초과한 경우), 이 경우 스토리지 장치(110)의 과열 위험은 읽기 동작들보다 더 많은 전력을 소비할 수 있는 쓰기 동작들을 방지함으로써 감소될 수 있다. 예를 들어, 플래시 메모리 다이 또는 평면이 런타임 배드 블록 관리에 사용되는 배드 블록 관리 예비 공간을 소모하는 경우, 플래시 메모리 저장 매체(125)에 대해, 스토리지 매체(125)의 일부에 대한 읽기 전용 모드로의 전환이 발생할 수 있다. 예를 들어, 스토리지 장치(110)는 읽기 동작을 시도하는 동안 데이터 항목의 디코딩에 실패하고, 데이터를 저장한 블록이 배드 블록인 것으로 판단하고, 데이터를 배드 블록에서 배드 블록 관리 예비 공간으로 이동시킬 때, 나머지 배드 블록 관리 예비 공간이 임계 값 크기보다 작아서 평면 또는 다이의 신뢰성을 보장하기에 충분하지 않은지 확인한다. 그 다음, 스토리지 장치(110)는 배드 블록 관리가 더 이상 수행되지 않는 것으로 결정하고 읽기 전용 모드로 전환할 수 있다. 읽기 전용 모드의 실행은 이하 상세하게 설명한다. 본 명세서에서 사용되는 바와 같이, “데이터 항목”은 하나의 동작에서 처리되는 임의의 양의 데이터이며, 예컨대 코드 블록을 디코딩한 결과 데이터는 데이터 항목일 수 있다.
케이스 4는 스토리지 장치(110)를 연속 기입(write through) 모드로 동작시킴으로써 완화될 수 있는 결함 상태이다. 예를 들어, 스토리지 장치(110)의 전원 공급 백업 커패시터의 장애가 발생하면, 스토리지 장치(110)는 임의의 호스트로부터 수신된 쓰기 명령들에 응답하여 명령 완료를 호스트(105)에 보내기 전에 스토리지 매체(125)에 대한 쓰기를 완료할 수 있으므로, 스토리지 매체(125)에 쓰기가 완료되기 전에 전원의 장애가 발생하면, 호스트(105)는 쓰기가 성공적으로 완료되었다는 잘못된 정보를 받지 않는다. 연속 기입 모드에서 동작하는 것은 처리량(throughput) 및 레이턴시(latency) 측면에서 성능의 저하를 유발할 수 있다.
케이스 5는 전력 손실을 감소시키는 방식으로 스토리지 장치(110)를 동작시킴으로써 완화될 수 있는 결함 상태이다. 예를 들어, 온도 센서 오류의 경우, 스토리지 장치(110)의 전력 손실을 감소시키기 위해, 스토리지 장치(110)는 전술한 바와 같이 읽기 전용 모드로 동작할 수 있거나, 동작(예컨대, 읽기 동작보다 더 많은 전력을 소비할 수 있는 쓰기 동작) 속도를 감소시킬 수 있다. 예를 들어, 스토리지 장치(110)는 스토리지 매체에 대한 제1 쓰기를 수행한 다음, 감소된 성능에 대응하는 간격 동안 대기하고(대기로 인해 쓰기 작업 수행 속도가 감소), 그 후 스토리지 매체에 다른 쓰기(예컨대, 제2 쓰기)를 수행할 수 있다.
케이스 6은 읽기 전용 모드에서 스토리지 장치(110)를 동작시킴으로써 완화될 수 있고, 스토리지 매체(125)를 다시 포맷하면 완전한 기능을 복원할 수 있는 결함 상태이다. 도 2a의 표에서 세 번째 열은 각각의 케이스에 대하여 유효한 사용자 데이터가 이용 가능한지 여부 및 스토리지 장치(110)가, 예컨대 스토리지 매체(125)를 다시 포맷함으로써, 완전한 기능으로 돌아올 수 있는지 여부를 보여준다.
도 2a에 열거된 케이스들로 예시된 것과 같이, 몇몇 실시 예에서 3가지 레벨의 결함 복원력은 스토리지 장치(110)의 완전 복원 모드, 부분 복원 모드, 및 취약 모드에 의해 달성될 수 있다. 완전 복원 모드에서, 스토리지 장치(110)는 “자가 치유” 기능들로 동작할 수 있고, 스토리지 장치(110)는 전원 순환 또는 스토리지 매체(125)의 포맷과 같은 동작 재설정을 통해 (장치의 사용자 데이터가 손실될 수 있지만)전체 기능을 복구할 수 있다.
부분 복원 모드에서, 스토리지 장치(110)는 결함 상태가 존재할 때, 더 낮은 수행능력, 더 작은 용량, 감소된 성능으로 동작할 수 있다. 예를 들어, 상술한 바와 같이, 전원 공급 백업 커패시터의 장애가 발생한 경우, 모든 쓰기는 데이터가 스토리지 매체(125)에 쓰여진 이후에만 완료되고, 스토리지 장치(110)의 동작을 늦추고 그 성능을 감소시킨다. 이러한 상황에서, 사용자 데이터는 보존될 수 있다. 스토리지 장치들(110)은 런타임 배드 블록(run time bad block; RTBB)을 위한 보존 공간이 소진되면 더 작은 용량으로 동작할 수 있다. 이러한 상황에서, 스토리지 장치(110)에서 영향 받은 다이들은 디스크(disk) 공간에서 제외될 수 있고, 전체 디스크 용량은 감소될 수 있다. 손실된 공간에서의 사용자 데이터는 손실될 수 있다. 예를 들어, IO 결정론(IO determinism)의 집합 또는 영역 지정 네임스페이스(namespace)의 영역이 더 이상 새 데이터 쓰기를 허용할 수 없는 경우 해당 집합 또는 영역이 디스크 공간에서 제외될 수 있지만 나머지 디스크 공간은 읽기 및 쓰기 작업에 사용 가능한 상태로 남아있을 수 있다. 집합 또는 영역의 사용자 데이터는 손실될 수 있다.
스토리지 장치(110)가 쓰기 동작들을 허용하지 않고, 읽기 전용 모드로 전환하는 경우, 스토리지 장치(110)는 감소된 성능으로 동작할 수 있다. 스토리지 장치(110)는 두 종류의 읽기 전용 모드로 동작할 수 있다. 지속 가능한 읽기 전용 모드(제1 읽기 전용 모드로 지칭될 수 있음)와, 지속 불가능한 읽기 전용 모드(제2 읽기 전용 모드로 지칭될 수 있음)이다. 지속 가능한 읽기 전용 모드에서, 스토리지 장치(110)는 스토리지 매체(125)의 보존 기간을 넘어서 읽기 요청을 계속해서 제공할 수 있다. 지속 불가능한 읽기 전용 모드는, 지속 가능한 읽기 전용 모드로 동작하는 것이 불가능할 때, 예컨대 후술하는 구조 공간(rescued space)을 설정하기 위해 사용되지 않은 스토리지 공간이 충분하지 않은 경우 사용될 수 있다. 지속 불가능한 읽기 전용 모드로 전환할 때, 스토리지 장치(110)는 스토리지 장치(110)가 제2 읽기 전용 모드에서 동작하고 있다는 알림 및 스토리지 장치(110)에 저장된 데이터 항목의 만료(예컨대, 개별 보존 기간의 종료)를 허용한다는 알림을 호스트(105)에 전송할 수 있다. 지속 불가능한 읽기 전용 모드에서, 스토리지 장치(110)는 스토리지 매체(125)의 보존 기간 동안 계속해서 읽기 요청을 제공할 수 있고, 스토리지 장치(110)가 데이터의 무결성 문제(예컨대, 읽기 작업 중 데이터 디코딩하는 하나 이상의 실패된 시도에 의해 감지된 경우)에 마주한 경우, 스토리지 장치(110)는 유효하지 않은 데이터 영역을 보고할 수 있다. 취약 모드에서 동작하는 스토리지 장치(110)는 전술한 바와 같이 읽기 또는 쓰기 동작을 수행할 수 없고, 호스트(105)로부터 명령을 계속 수신하고 에러들을 반환하는 단계적 종료를 수행할 수 있다.
몇몇 실시 예에서, 5개의 논리 블록 어드레스(logical block address; LBA) 공간 타입이 정의될 수 있는데, 이는 (i) 수행 공간(P타입), (ii) 성능 저하 공간(UP 타입), (iii) 읽기 전용 공간(RO 타입), (iv) 휘발성 읽기 전용 공간(VRO 타입), 및 (v) 액세스할 수 없는 공간(IA 타입)으로 지칭될 수 있다. 수행 공간(P 타입)은 성능 저하없이 정상적인 방식으로 읽고 쓸 수 있는 유효 데이터를 포함하는 LBA 공간일 수 있다. 성능 저하 공간(UP 타입)은 정상적인 방식으로 읽고 쓸 수 있지만 성능이 저하(예컨대, 쓰기 성능 저하)된 유효한 데이터를 포함하는 LBA 공간일 수 있다. 읽기 전용 공간(RO 타입)은 읽기 전용의 유효한 데이터를 포함하는 LBA 공간일 수 있다. 스토리지 장치(110)는 이러한 타입의 LBA 공간으로 향하는 호스트로부터의 쓰기 명령들에 대해 에러 메시지로 응답할 수 있다. 읽기 전용 공간의 데이터는 보존 기간을 초과하는 기간 동안 유효할 수 있다. 휘발성 읽기 전용 공간(VRO 타입)은 읽기 전용일 수 있고, 스토리지 장치(110)는 이러한 타입의 LBA 공간으로 향하는 호스트로부터의 쓰기 명령들에 대해 에러 메시지로 응답할 수 있다. 이러한 타입의 LBA 공간에 있는 데이터는 일시적으로 유효할 수 있으며, 만료될 때, 예컨대 스토리지 매체(125)의 데이터가 스토리지 매체(125)의 보존 기간에 도달하면 유효하지 않게 될 수 있다. 액세스할 수 없는 공간(IA 타입)은 호스트에서 액세스할 수 없는 잘못된 데이터가 포함된 LBA 공간이다. 도 23의 표는 본 개시의 예시적인 실시 예들에 따라 표의 첫 번째 열에서 식별된 각각의 결함 상태에서 스토리지 장치(110)에 존재할 수 있는 LBA 공간 타입의 몇몇 조합들을 보여준다. 별표(*)로 식별된 모드는 LBA 공간에 대한 자세한 정보를 검색하기 위해 “get feature” 명령을 사용하는 호스트를 지원할 수 있다. 도2b는 본 개시의 예시적인 실시 예들에 따라 그 상 태 및 관련 파라미터들(여기서, “IOPS”는 초당 입출력 동작을 의미함)의 값에 대해 스토리지 장치(110)에 쿼리(query)하기 위해 스토리지 장치(110)에 전달될 수 있는 “get feature” 명령의 인자들을 도시한다.
도 2c의 표는 본 개시의 예시적인 실시 예들에 따라 호스트(105)가 스토리지 장치(110)에 그 상태에 대해 쿼리하기 위해 사용할 수 있는 NVMe(nonvolatile memory express) 명령들과 스토리지 장치(110)가 응답하기 위해 사용할 수 있는 결함 복원 기능들의 범주 내에서 열거된 상수들의 계층을 보여준다. 도 2c에 도시된 것과 같이, 계층은 완전 복원 상태, 부분 복원 상태, 및 취약 상태를 포함하는 제1 레벨을 포함할 수 있다. 또한, 서브-상태들, 및 서브-서브-상태가 정의될 수 있다. 예를 들어, 도 2c에 도시된 것과 같이, 부분 복원 상태는 성능 상실을 나타내는 제1 서브-상태를 포함하고, 제1 서브-상태는 지속 가능한 읽기 전용 모드에서의 동작을 나타내는 제1 서브-서브-상태, 및 지속 불가능한 읽기 전용 모드에서의 동작을 나타내는 제2 서브-서브 상태를 포함한다.
도 3a는 본 개시의 예시적인 실시 예들에 따른, 결함 복원 모드에서의 동작을 위한 방법의 흐름도이다. 305 단계에서, 호스트(105)는 스토리지 장치(110)로부터 데이터를 송신하거나 수신한다. 310 단계에서, 호스트(105)는 스토리지 장치(110)에서 에러의 발생 여부를 판단한다. 315 단계에서, 스토리지 장치(110)는 내부 진단을 수행하고, 결함 복원 상태(예컨대, 완전 복원 상태, 부분 복원 상태, 또는 취약 상태)를 결정한다. 320 단계에서, 스토리지 장치(110)는 장치의 수행 능력, 용량, 또는 성능을 진단에 기반하여 수정한다. 325 단계에서, 스토리지 장치(110)는 API(application programming interface)에 기반하여 호스트(105)로부터의 요청에 따라서 상태를 게시한다. 330 단계에서, 호스트(105)는 상태에 기반하여 주어진 대역폭에서, 주어진 타입의 데이터를 상기 스토리지 장치(110) 또는 다른 스토리지 장치(110)에 라우팅한다. 상기 방법은, 335 단계에서, 스토리지 장치(110)에 의해, 스토리지 장치(110)가 스토리지 장치의 전원 순환 또는 스토리지 매체의 포맷에 의해 복구가 가능한 제1 결함 상태에 있음을 판단하는 단계, 340 단계에서, 스토리지 장치(110)에 의해, 스토리지 장치(110)가 감소된 수행 능력, 감소된 용량, 또는 읽기 전용 모드에서 스토리지 장치를 동작시킴으로써 부분 복구가 가능한 제2 결함 상태에 있음을 판단하는 단계, 그리고 345 단계에서, 스토리지 장치를 감소된 수행 능력, 감소된 용량, 또는 읽기 전용 모드에서 동작시키는 단계를 포함한다.
또한, 본 명세서에 개시된 실시 예들에 대한 다수의 실시 예들 및 그것의 변형들이 구성될 수 있다. FPGA(field programmable gate array) 또는 임베디드 프로세서는 내부 블록 검사를 수행하고 스토리지 장치(110)의 상태에 대한 동기화되지 않은 업데이트들을 호스트(105)에 송신할 수 있다. 이벤트가 발생한 경우 이벤트들(예컨대, 온도, 또는 기타 장치 내부 파라미터들)이 호스트(105)에 전송될 수 있다. 알림을 제공하는 장치 드라이버 기능이 없는 경우, 호스트(105)는 미리 정해진 스케줄에 따라 스토리지 장치들(110)을 폴링(polling)할 수 있다. FPGA 또는 임베디드 프로세서는 스토리지 장치(110)의 과거 수행 능력을 모니터링하고, 예측 분석(예컨대, 주어진 결함 복원 상태에 있을 가능성)을 제공하기 위해 머신 러닝(machine learning)을 활용할 수 있다. NVMe 사양에 명령들이 도입될 수 있다. 예를 들어, NVMe 사양의 원격 측정 정보가 (스토리지 장치(110)의 상태를 보고하기 위해) 확장될 수 있다. 예를 들어, 몇몇 실시 예들은 이더넷 스토리지 장치들 또는 키-값(key-value; KV) 스토리지 장치들로 구현될 수 있다.
몇몇 실시 예들에서, 호스트(105)는 (i) 스토리지 장치(110)의 상태에 기반하여 상이한 데이터 타입들(예컨대, 이미지, 영상, 텍스트, 또는 높은 우선순위 데이터나 낮은 우선순위 데이터와 같은 파일 타입들)을 송신하고(예를 들어, 높은 우선순위 데이터 또는 실시간 데이터는 부분 취약 모드에 있는 장치에 쓰여지지 않을 수 있다.), (ii) 스토리지 장치(110)가 부분 취약 상태와 낮은 수행 능력 상태에 있는 경우 전송 속도를 감소시키고, (iii) 스토리지 장치(110)가 부분 취약 상태와 낮은 용량 상태에 있는 경우 총량을 감소시킨 양의 데이터를 송신하고, (iv) 스토리지 장치(110)가 부분 취약 및 지속 불가능한 읽기 전용 모드에 있는 경우, 가능한 최고 속도로 데이터를 읽고 데이터를 다른 곳에 저장하여 보존 기간을 초과하지 않도록 하고, (이러한 상황에서, 호스트는 복사할 데이터의 양과 보존 기간에 기반하여 필요한 데이터 속도를 계산할 수 있다.) (v) 취약한 스토리지 장치(110)로부터의 “읽기” 데이터는 에러가 있기 때문에 무시하고, 호스트(105)로부터 수신 받은 데이터를 단순히 삭제하며, (vi) 호스트(105)와 스토리지 장치(110) 사이에서 이벤트들의 타이밍을 제어하는 메시지들에 기반하여, 전원이 순환되거나 포맷된 완전 복원형 스토리지 장치(110) 내의 캐시로 읽기/쓰기 입력 및 출력을 일시적으로 재 라우팅한다. 용량이 감소된 부분 취약 SSD 상의 FPGA는 들어오는 데이터 쓰기를 필터링하고 그 데이터의 일부만을 스토리지 장치(110)에 쓸 수 있다. 이러한 FPGA는 다양한 종류의 데이터(예컨대, 이미지, 비디오, 텍스트, 또는 높은 우선순위 데이터나 낮은 우선순위 데이터)를 호스트(105)로부터 수신하고, 스토리지 장치(110)의 상태에 기반하여 필터링할 수 있다. 예를 들어, FPGA는 높은 우선순위 데이터는 부분 취약 모드에 있는 스토리지 장치(110)에 쓰여지지 않아야 하는 것을 판단할 수 있다. FPGA는 호스트(105)로 거절 메시지를 송신하고 거절 근거를 제공할 수 있다. 대안적으로, FPGA는 부분 복원 및 낮은-용량 상태의 스토리지 장치(110)에 쓰기 위해, 특정 타입의 데이터, 예컨대 이미지 데이터를 필터링할 수 있다. 예를 들어, 스토리지 장치(110)가 수행 능력(예컨대, 감소된 쓰기 속도로 동작함)을 상실한 경우, 레이턴시에 민감한 읽기 및 쓰기들이 거절될 수 있다.
몇몇 실시 예들에 있어서, 상술한 바와 같이. 스토리지 장치(110)는 지속 가능한 읽기 전용 모드(또는 제1 읽기 전용 모드)와 지속 불가능한 읽기 전용 모드(또는 제2 읽기 전용모드)의 두 가지 읽기 전용 모드 중 어느 하나로 동작할 수 있다. 지속 불가능한 읽기 전용 모드에서, 스토리지 장치(110)는 호스트(105)로부터 수신하는 쓰기 커맨드들을 단순히 거절할 수 있고, (i) 스토리지 장치(110)는 만료되지 않은 데이터에 대한 읽기 명령들의 실행을 시도하거나, (ii) 디코딩이 성공하지 못한 경우 성공적인 디코딩 시도들과 에러 코드(데이터 항목을 읽을 수 없다는 표시, 예컨대 0)에 의한 데이터를 반환하면서, 모든 읽기 명령들의 실행을 시도할 수 있다.
지속 가능한 읽기 전용 모드에서, 스토리지 장치(110)는 스토리지 매체(125)의 보존 기간을 넘어서 외부 읽기 요청들을 제공할 수 있다. 스토리지 장치(110)는 호스트(105)로부터의 쓰기 명령들에 대한 응답으로, 에러 메시지를 반환하는 것 이외에 어떠한 조치도 취하지 않을 수 있다. 다만, 스토리지 장치(110)는 이하 설명되는 내부 목적을 위한 스토리지 매체(125)로 쓰기를 수행할 수 있다. 보존 기간을 넘어서는 데이터의 보존을 가능하게 만들기 위해, 스토리지 장치(110)는 “구조 공간”으로 지칭되는 공간을 할당할 수 있고, 스토리지 장치(110)는 만료되기 직전의 데이터(예컨대, 스토리지 매체(125)의 보존 기간에 기반하는(예컨대, 보존 기간의 80%에 해당하는), 임계 수명을 초과하는 수명을 갖는 데이터)를 구조 공간으로 이동시킬 수 있고, 따라서 데이터의 만료는 구조 공간의 보존 기간에 의해 연기될 수 있다.
스토리지 장치(110)는 전체 LBA 공간을 통관하는 호스트(105)로부터의 읽기 명령들에 응답할 수 있다. 스토리지 장치(110)의 물리 공간이 감소될 수 있지만(예컨대, 스토리지 매체(125)의 일부가 읽기 전용으로 되고, 스토리지 매체(125)의 데이터가 구조 공간으로 이동될 수 있기 때문에), 장치의 논리 공간은 변하지 않기 때문에, 스토리지 장치(110)는 호스트(105)가 PBA(physical block address) 공간에 맵핑(mapping)될 수 없는 LBA 공간 내에 읽기 명령을 송신한 경우 0을 반환할 수 있다.
구조 공간은 오버 프로비저닝(overprovisioning) 공간, 또는 스토리지 장치(110)상의 미사용 공간으로부터 할당될 수 있다. IO 결정론의 집합 또는 영역 지정 네임스페이스의 영역이 쓰기 불가능한 경우, 집합 또는 영역은 읽기 전용이 되거나 모든 데이터가 재배치되면 물리적 공간에서 제외될 수 있다. 구조 공간은 네임스페이스들을 이용하여 동적으로 생성될 수 있다. 하나 이상의 네임스페이스들은 사용자 데이터에 사용될 수 있고, 구조 공간을 위해 추가적인 네임스페이스가 생성될 수 있다. 스토리지 장치(110)가 지속 가능한 읽기 전용 모드로 전환하면, 사용자 데이터에 대한 하나 이상의 네임스페이스들은 크기가 감소될 수 있고, 구조 공간을 위한 네임스페이스의 크기는 증가될 수 있다.
결함(예컨대, 배드 블록 관리 예비 공간이 소진된 경우)에 영향을 받는 스토리지 매체(125) 영역의 크기가 가용 구조 공간의 크기를 초과하는 경우, 스토리지 장치(110)는 곧 만료되는 데이터(예컨대 가장 오래된 데이터)만을 이동시커거나, 중요하거나 주어진 파일 타입(예컨대, 이미지들, 영상들, 또는 문서들)에 관련된 것으로 태그된 데이터만을 이동시키거나, 또는 연속 타입(예컨대, 파일에 관련된 모든 데이터)의 데이터를 이동시키고, 다른 데이터는 남겨둘 수 있다. 중요한 것으로 간주되는 파일 타입들의 집합은 사용자가 구성 가능할 수 있다. 몇몇 실시 예들에 있어서, KV 스토리지 장치들(110)을 사용하는 경우, 데이터 중요도는 키-값 쌍들로 압축되거나 인코딩될 수 있다.
몇몇 실시 예들에 있어서, 스토리지 장치(110)는 가용 구조 공간의 양이 임계 값 크기보다 작은지 여부와 그에 따라 지속 가능한 읽기 전용 모드에서의 동작을 지원하기에 불충분한지 여부를 판단할 수 있고, 결과적으로 스토리지 장치(110)는 지속 불가능한 읽기 전용 모드로 전환할 수 있다. 이러한 판단은 결함이 처음 감지되었을 때 이루어질 수 있거나, 결함이 처음 감지되었을 때 스토리지 장치(110)는 먼저, 지속 가능한 읽기 전용 모드로 전환하고, 일정 시간 후에 가용 구조 공간이 임계 값 크기 미만으로 감소하는 정도까지 구조 공간이 사용되고(예컨대, 스토리지 매체(125)의 결합 부분에 있는 데이터의 계속적 만료에 의하여), 그 다음, 스토리지 장치(110)는 지속 가능한 읽기 전용 모드에서 지속 불가능한 읽기 전용 모드로 전환할 수 있다. 지속 가능한 읽기 전용 모드에서 지속 불가능한 읽기 전용 모드로 전환할 때, 스토리지 장치(110)는 호스트(105)에 전환을 통지할 수 있고, 데이터가 만료되기 전에, 호스트(105)는 스토리지 장치로부터 가능한 한 많은 데이터를 복사하려고 시도할 수 있다.
몇몇 상황들에 있어서, 데이터는 예컨대, 1일 또는 1시간의 기간 동안 손실될 수 있다. 이와 같이, 스토리지 장치(110)의 FPGA는 스토리지 장치(110)가 지속 가능한 읽기 전용 모드로 전환할 때 전송을 용이하게 하기 위해 드라이브상의 데이터의 특성(예컨대, 오래된, 태그된, 연속적인, 또는 파일 타입에 의한)을 모니터링할 수 있다. FPGA는 데이터를 큐잉(queueing)하거나, 우선순위에 따라, 구조 공간으로 전송되는 데이터를 주문할 수 있으며, 데이터가 구조 공간으로 이동될 때 데이터를 압축할 수 있다. 예를 들어, 몇몇 실시 예들은 이더넷 스토리지 장치들 또는 키-값(KV) 스토리지 장치들로 구현될 수 있다.
도 4는 본 개시의 예시적인 실시 예들에 따른 스토리지 장치(110)의 개략적인 데이터 레이아웃 도면이다. 블록 수명 테이블(405)은 스토리지 장치(110)의 각 블록의 보존 기간을 나열하고, 맵핑 테이블(410)은 논리 블록 어드레스에서 물리 블록 어드레스로의 맵핑을 나열한다. 스토리지 장치(110)이 지속 가능한 읽기 전용 모드로 전환할 때, 스토리지 장치(110)는 결함 있는 사용 공간(415)(결함 상태에 의해 영향 받은 물리 공간)에서 구조 공간(420)으로 데이터를 복사한다. 정상 사용 공간(415) 내의 데이터는 스토리지 장치(110)가 (지속 가능한 읽기 전용 모드에 있는 것 대신에) 정상 동작 모드에 있는 것처럼 처리된다. 결함 상태가 물리 공간의 손실을 유발하기 때문에, 일부 이전에 사용 가능했던 LBA 공간은 사용되지 않은 LBA 공간(435)이 되면서, 사용된 LBA 공간(430)의 크기에 있어 대응하는 감소가 발생한다. 컨트롤러(120)에 의해 실행되는 펌웨어(440)는 상술한 바와 같이 데이터를 이동시킬 수 있고, 테이블들을 업데이트시킬 수 있다.
도 5a는 본 개시의 예시적인 실시 예들에 따른, 지속 가능한 읽기 전용 모드로의 전환 방법의 흐름도이다. 505 단계에서, 호스트(105)는 스토리지 장치(110)로부터 데이터를 송수신한다. 510 단계에서, 호스트(105)는 스토리지 장치(110)에서 에러가 발생했는지 여부를 판단한다. 520 단계에서, 호스트(105)는 스토리지 장치에서 에러가 발생하는지 여부를 판단한다. 525 단계에서, 스토리지 장치(110)는 내부 진단을 수행하고 지속 가능한 읽기 전용 모드로의 전환을 수행한다. 530 단계에서, FPGA는 (예컨대, 데이터 타입, 또는 수명에 기반하여)스토리지 장치(110)상의 유효 데이터의 특성을 선택적으로 모니터링할 수 있다. 535 단계에서, 데이터 수명이 보존기간에 도달할 때, 스토리지 장치(110)는 유효 데이터를 구조 공간에 재할당한다. 540 단계에서, 스토리지 장치(110)는 데이터를 플러싱(flushing)하는 호스트(105)에 구조 공간의 상태 및 내용에 관한 정보를 선택적으로 전송할 수 있다. 도 5b는 본 개시의 예시적인 실시 예들에 따라 지속 가능한 읽기 전용 모드에서 동작하기 위한 방법의 세부 사항을 보여주는 흐름도이다. 상기 방법은, 535 단계에서, 스토리지 장치(110)가 제1 읽기 전용 모드에서 스토리지 장치(110)를 동작시킴으로써 부분 복구가 가능한 결함 상태에 있음을 스토리지 장치(110)에 의해 결정하는 단계; 그리고 540 단계에서, 스토리지 장치(110)의 페이지에 저장된 제1 데이터 항목의 수명이 임계 값 수명을 초과했다고 결정하고, 제1 데이터 항목을 스토리지 장치(110)의 구조 공간에 복사함으로써 스토리지 장치(110)를 제1 읽기 전용 모드로 동작시키는 단계를 포함한다.
몇몇 실시 예들에 있어서, 상술한 바와 같이, 스토리지 장치(110)의 어레이(array) 및 볼륨 매니저(115)를 포함하는 RAID-0 시스템은 RAID-0 시스템의 임의의 스토리지 장치들(110)의 읽기 전용 모드(예컨대, 지속 가능한 읽기 전용 모드)로의 전환을 수용하도록 구성될 수 있다. 정상 동작에서, 볼륨 매니저(115)는 스토리지 장치들(110)의 어레이를 거쳐 데이터를 스트라이핑(striping)하는 것을 담당한다. 예를 들어, 스토리지 장치들(110)의 어레이의 개별 스토리지 장치(110)에 각 스트라이프의 하나의 스트립을 기록한다(각 스트라이프는 이러한 스트립들로 구성됨). 이러한 시스템에서, 임의의 스토리지 장치들(110)의 어레이 중 임의의 어레이가 읽기 전용 모드(또는 “읽기 전용 상태”)로 전환될 때, RAID-0 시스템은 “긴급 모드”로 지칭될 수 있는 동작 모드로 전환할 수 있고, 스토리지 장치들(110)의 어레이에 대한 볼륨 매니저(115)는 (i) 나머지 영향을 받지 않는 스토리지 장치(110)(읽기-쓰기 상태로 남아 있는 장치) 각각에 구조 공간을 할당하여 결함 있는 스토리지에서 복구된 사용자 데이터와 메타 데이터를 할당하고, (ii) “비상 맵핑 테이블”로 지칭될 수 있는 맵핑 테이블을 유지한다. 각각의 스토리지 장치(110) 상의 구조 공간은 n개의 스트립을 저장할 수 있으며, 여기서 n = R/(스트립 크기), R = C/M, C는 각각의 스토리지 장치들(110)의 어레이의 각 스토리지 장치의 용량이다. 볼륨 매니저(115)는 (예컨대, 하드웨어에서, 소프트웨어나 펌웨어에서, 또는 하드웨어, 소프트웨어, 및 펌웨어의 조합으로) 호스트에서, 또는 (예컨대, 호스트와 분리된 인클로저(enclosure)에 보관될 수 있는)RAID-0 시스템의 RAID 컨트롤러에서 구현될 수 있다. 몇몇 실시 예들에서, 볼륨 매니저(115)는 FPGA에서 구현될 수 있다. 볼륨 매니저는 볼륨 매니저에 의해 수행되는 것으로 본 명세서에 설명된 동작들을 수행하도록 구성되는 (예컨대, 적절한 소프트웨어 또는 펌웨어에 의한)처리 회로(이하에서 상세하게 설명됨)일 수 있다.
RAID-0 시스템이 비상 모드로 동작하고 호스트(105)로부터 쓰기 명령이 수신되면, 스토리지 장치(110)의 어레이에 스트라이프를 기록해야 하는 경우, 볼륨 매니저(115)는 비상 맵핑 테이블을 확인하여 스트라이프가 “등록”되었는지 여부 즉, 스트라이프에 대한 엔트리(entry)가 이미 만들어졌는지 여부를 결정한다. 아직 엔트리가 생성되지 않은 경우(즉, 스트라이프가 “개방 맵핑”된 경우 즉, 등록되지 않은 경우), 볼륨 매니저(115)는 일반적으로, (읽기 전용 모드로 전환된)결함 있는 스토리지 장치(110)에 쓰여졌을 스트립이 어디에 쓰여지는지 표시하기 위해, 비상 맵핑 테이블에 엔트리를 생성한다. 비상 맵핑 테이블이 이미 스트라이프에 대한 엔트리를 포함하는 경우, 해당 엔트리는 일반적으로 결함 있는 스토리지 장치(110)에 쓰여졌을 스트립을 쓸 위치를 결정하는데 사용된다. 어느 경우에나, 볼륨 매니저(115)는 일반적으로, 결함 있는 스토리지 장치(110)에 쓰여졌을 스트립(605)을 다른 스토리지 장치(110)의 구조 공간에 씀으로써, 도 6a에서 도시된 것과 같이 스토리지 장치들(110)의 어레이에 각 스트립을 쓴다.
호스트(105)로부터 읽기 명령이 수신되어 스토리지 장치(110)의 어레이로부터 스트라이프를 읽어야 하는 경우, 볼륨 매니저(115)는 스트라이프에 대한 엔트리가 생성되었는지 여부를 결정하기 위해 비상 맵핑 테이블을 확인한다. 엔트리가 생성되지 않은 경우, 도 6b에서 도시된 것과 같이, 볼륨 매니저(115)는 정상적인 동작에서, 결함 있는 스토리지 장치(110)를 포함하는 각각의 스토리지 장치(110)로부터 스트립을 읽는 것과 같이 스트라이프를 읽는다. 비상 맵핑 테이블이 스트라이프에 대한 엔트리를 포함하는 경우, 엔트리는 일반적으로, 결함 있는 스토리지 장치(110)로부터 읽혀졌을 스트립을 읽을 위치를 결정하는데 사용된다.
일반적으로, 결합 있는 스토리지 장치(110)로부터 쓰여졌던 스트립들의 재 맵핑은 예를 들어 다음과 같이 수행될 수 있다. 스토리지 장치들(110)의 어레이의 각각의 스토리지 장치(110)는 0부터 M-1 사이의 번호일 수 있는 드라이브 식별 번호(drive ID)를 가질 수 있다. 여기서, M은 스토리지 장치들(110)의 어레이에서 스토리지 장치들(110)의 수로 정의된다. 볼륨 매니저(115)는 드라이브 식별 번호들을 재할당할 수 있다. 예컨대, 볼륨 매니저(115)는 등록된 스트라이프들에 대한 읽기 또는 쓰기 작업을 수행하는데 사용될 대체 드라이브 식별 번호를 스토리지 장치들(110)의 어레이의 각각의 스토리지 장치(110)에 할당할 수 있다.(등록되지 않은 스트라이프들에 대한 읽기 동작들은 기존 드라이브 식별 번호들을 계속 사용할 수 있다.) 다음 식들을 이용하여 대체 드라이브 식별 번호를 생성할 수 있다.
drive ID < faulty drive ID면,
new drive ID = drive ID
그 외의 경우,
new drive ID = ((drive ID - 1) + (M - 1)) mod (M-1)
이것의 효과는, (i) 결함 있는 스토리지 장치의 기존 드라이브 식별 번호보다 작은 각각의 식별 번호를 갖는 스토리지 장치에 할당 하고, (ii) 제1 스토리지 장치의 기존 드라이브 식별 번호보다 큰 식별 번호를 갖는 각각의 스토리지 장치에 할당하는 것일 수 있고, 여기서 개별의 기존 드라이브 식별 번호는 1보다 작다.
대체 드라이버 번호들을 사용하여, 일반적으로, 결함 있는 스토리지 장치(110)에 쓰여졌을 스트립이 쓰여질 수 있는 대상 드라이브는 다음과 같은 식을 사용하여 식별될 수 있다.
Target Drive ID = sid % (M-1)
여기서, Target Drive ID는 대상 드라이브의 대체 드라이브 식별 번호로 정의되고, sid는 일반적으로, 결함 있는 스토리지 장치(110)에 쓰여졌을 스트립에 대한 스트립 식별자이며, “”는 모듈로 연산자이다.
도 6c는 본 개시의 예시적인 실시 예들에 따른 제1 드라이브가 읽기 전용 모드로 전환된 4개의 스토리지 장치들(110)(즉, M = 4)을 갖는 RAID-0 시스템의 개략도이다. 제1 스트라이프가 쓰여졌을 때, 대상 드라이브 ID(target drive ID)는 다음 방정식에 의해 암시적으로 결정된다.
Target Drive ID = Strip ID % (M-1) = 1
즉, 대상 드라이브는 대체 드라이브 식별 번호 1(즉, 제2 드라이브)을 갖는 스토리지 장치(110)이다. 드라이브 내에서 구조 공간은 크기가 스트립 크기와 동일한 스트립(“구조 스트립” 또는 “R-스트립”으로 지칭될 수 있음)들로 분할될 수 있다. 비상 맵핑 테이블에는 엔트리 (1,0)를 포함할 수 있고, 엔트리의 첫 번째 구성요소는 스트라이프 ID(stripe ID)이고 제1 스트라이프를 의미하며, 두 번째 구성요소는 대상 드라이브에서의 R-스트립 ID(R-strip ID)이다. 따라서, 비상 맵핑 테이블에서 엔트리 (1,0)은 스트립 (1,1)이 R-스트립 (1,0)에 맵핑되었음을 의미한다.
RAID-0 시스템은 하나 이상의 스토리지 장치들(110)의 어레이에 의하여, 지속 가능한 읽기 전용 모드, 또는 지속 불가능한 읽기 전용 모드로의 전환을 수용하도록 구성될 수 있다. 지속 불가능한 읽기 전용 모드로 전환하는 경우, 결함 있는 스토리지 장치(110)의 등록된 스트립들은 다른 장치의 구조 공간에 영구적으로 쓰여질 수 있다. 지속 불가능한 읽기 전용 모드로 전환하는 경우, 볼륨 매니저(115)는 데이터를 결함 있는 스토리지 장치(110)로부터 영향 받지 않은 스토리지 장치들(110)로, 예컨대, 데이터가 만료하기 전에 결함 있는 스토리지 장치(110)로부터의 모든 데이터를 이동시키기에 충분한 속도로, 마이그레이션(migration)할 수 있다. 서버는 만료 전에 데이터의 양과 남은 시간에 기반하여 그 속도를 계산할 수 있다.
도 7a는 본 개시의 예시적인 실시 예들에 따른 RAID-0 시스템을 동작시키는 방법에 대한 절차 흐름도이다. 705 단계에서, RAID-0 시스템에서의 스토리지 장치(110)는 결함을 갖고, 읽기 전용 모드로 전환한다. 710 단계에서, 영향 받은 스토리지 장치(110)는 내부 진단을 수행하고, 결함 복원 상태가 부분 복원이고 읽기 전용임을 판단한다. 715 단계에서, 볼륨 매니저(115)는 결함 있는 스토리지 장치(110)가 읽기 전용 모드에 있는지를 판단하고, (“살아 있는”)영향 받지 않은 스토리지 장치들의 ID들을 재할당한다. 720 단계에서, 볼륨 매니저(115)는 쓰기 동작을 수신하고, 영향 받지 않은 장치의 스트립이 (영향 받지 않은)대상 스토리지 장치(110)로 리디렉션(redirection)됨을 나타내기 위해 비상 맵핑 테이블에 엔트리를 추가하고, 전체 스트립은 영향 받지 않은 스토리지 장치들의 새로운 드라이브 ID에 기반하여, (영향 받지 않은)대상 스토리지 장치의 구조 공간에 쓰여진다. 725 단계에서, 볼륨 매니저(115)는 호스트(105)로부터 읽기 커맨드를 수신하고, 영향 받지 않은 스토리지 장치의 스트립이 (영향 받지 않은)대상 스토리지 장치의 구조 공간으로부터 읽히는 동안, RAID 시스템에서 살아있는 영향 받지 않은 스토리지 장치들(110)로부터의 스트라이프의 모든 스트립들을 읽는다.
도 7a는 본 개시의 예시적인 실시 예들에 따른 RAID-0 스토리지 시스템을 동작시키는 방법의 세부사항을 보여주는 절차 흐름도이다. 상기 방법은, 730 단계에서, 제1 스토리지 장치가 읽기 전용 모드에 있고, 제2 스토리지 장치가 읽기-쓰기 상태에 있음을 판단하는 단계, 735 단계에서, 제2 스토리지 장치에 제1 스트라이프의 일부를 씀으로써, 스토리지 시스템에 제1 스트라이프에 대한 쓰기 동작을 수행하고, 제1 스트라이프에 대한 맵핑 테이블에 엔트리를 생성하는 단계, 740 단계에서, 제1 스토리지 장치와 제2 스토리지 장치로부터 제2 스트라이프의 일부를 읽음으로써, 스토리지 장치로부터 제2 스트라이프에 대한 제1 쓰기 동작을 수행하는 단계, 745 단계에서, 맵핑 테이플이 제1 스트라이프의 엔트리를 포함함을 판단함으로써, 스토리지 장치로부터 제1 스트라이프에 대한 제2 읽기 동작을 수행하고, 제2 스토리지 장치로부터 제1 스트라이프의 일부를 읽는 단계를 포함한다.
본 명세서에서 설명된 구성 요소들(예컨대 호스트(105) 내지 컨트롤러(120))은 처리 회로들일 수 있거나, 처리 회로들을 포함할 수 있다. 본 명세서에 사용된 “처리 회로” 또는 “처리 수단”과 같은 용어는, 데이터 또는 디지털 신호를 처리하는데 이용되는 하드웨어, 펌웨어, 및 소프트웨어 중 적어도 하나를 포함하는 조합의 의미로 사용된다. 예를 들어, 처리 회로 하드웨어는 ASIC(application specific integrated circuit), 일반 또는 특수 목적의 CPU(central processing unit), DSP(digital signal processor), GPU(graphics processing unit), 및 FPGA(field programmable gate array)와 같은 프로그램 가능한 논리 장치를 포함할 수 있다. 본 명세서에서 사용된 처리 회로에 있어서, 각 기능은 그 기능을 수행하도록 구성되는 하드웨어 즉, 하드 와이어(hard-wired)에 의해 수행되거나, CPU와 같이 보다 일반적인 목적의 하드웨어로서, 비 휘발성 스토리지 매체에 저장된 명령어들을 실행하도록 구성되는 하드웨어에 의해 수행되며, 처리 회로는 단일 PCB(printed circuit board) 기판에 제작되거나, 복수의 상호 연결된 PCB 기판에 분산될 수 있다. 처리 회로는 다른 처리 회로들을 포함할 수 있고, 예를 들어, 처리 회로는, PCB 기판 상에서 상호 연결되는FPGA 및 CPU, 두 개의 처리 회로들을 포함할 수 있다.
본 명세서에서 사용된 “일부”는 “적어도 몇몇”을 의미하고, 따라서 전부 또는 전부보다 적음을 의미할 수 있다. 따라서, 어떤 것의 “일부”는 특별 케이스로서, 그것의 전체를 포함한다. 즉, 전체는 일부의 예시이다. 본 명세서에서 사용된 “또는”은 “및/또는”으로 해석되어야 하고, 예를 들어, “A 또는 B”는 “A”, “B” 또는 “A 및 B” 중 적어도 어느 하나를 의미한다.
본 개시의 발명의 설명 중, 발명의 배경이 되는 기술에서 기재된 배경 기술은 본 개시에 있어서 그 맥락을 설정하기 위해서만 포함되고, 종래 기술인 것으로 한정되지 않는다. (예컨대, 본 명세서에 포함된 어느 시스템 도면에서)설명된 임의의 구성들 또는 그 구성들의 임의 조합은 본 명세서의 절차 흐름도에서 설명된 하나 이상의 동작들을 수행하기 위해 사용될 수 있다. 또한, (i) 동작들은 예시적인 동작들이고, 명시적으로 다루지 않은 다양한 추가 단계를 포함할 수 있으며, (ii) 동작들의 시간적 순서는 변경될 수 있다.
본 명세서에서 사용된 바와 같이, 방법(예컨대, 조정) 또는 제1 수량(예컨대, 제1 변수)이 제2 수량(예컨대, 제2 변수)에 “기반”되는 것으로 언급될 때, 제2 수량은 상기 방법에 대한 입력이거나 제1 수량에 영향을 준다. 예컨대, 제2 수량은 제1 수량을 계산하는 함수에 대한 입력(예컨대, 단일 입력, 또는 복수의 입력들 중 어느 하나)일 수 있거나, 제1 수량은 제2 수량과 동등할 수 있거나, 또는 제1 수량은 제2 수량과 동일(예컨대, 메모리에서 같은 위치 또는 위치들에 저장되는 경우)할 수 있다.
본 명세서에서 사용되는 “제1”, “제2”, “제3” 등과 같은 용어들은 다양한 구성 요소, 구성, 영역, 계층 및/또는 섹션들을 설명하기 위해 사용됨에도 불구하고, 이러한 구성 요소, 구성, 영역, 계층, 및/또는 섹션은 이러한 용어들에 제한되지 않아야 한다. 이러한 용어들은 단지 하나의 구성 요소, 구성, 영역, 계층 및/또는 섹션을 다른 구성 요소, 구성, 영역, 계층 및/또는 섹션과 구분하기 위해 사용된다. 따라서, 본 명세서에서 논의된 제1 구성 요소, 구성, 영역, 계층 및/또는 섹션은 본 개시의 기술적 사상 및 범위를 벗어나지 않으면서, 제2 구성 요소, 구성, 영역, 계층 및/또는 섹션으로 지칭될 수 있다.
본 명세서에서 사용된 “아래”, “하단”, “하부”, “밑”, “위”, “상단”,”상부” 등과 같은 공간적으로 상대적인 용어들은, 도면들에서 설명된 어떤 구성 요소 또는 특징과 다른 구성 요소(들) 또는 특징(들)과의 관계를 용이하게 설명하기 위함이다. 그러한 공간적으로 상대적인 용어는 도면에 도시된 방향에 더하여, 사용 또는 작동중인 장치의 다른 방향을 포함하도록 의도된 것임이 이해되어야 할 것이다. 예를 들어, 도면의 장치가 뒤집힌 경우, 다른 구성 요소들 또는 특징들의 “아래”, “하단”, “밑”으로 설명된 구성 요소들은 다른 구성 요소들 또는 특징들의 “위”에 존재하는 것이다. 그러므로, “아래” 그리고 “위”와 같은 예시적인 용어들은 아래와 위의 방향을 모두 포함하는 것이 가능하다. 장치가 그 외의 방향으로 회전 하는 경우(예컨대 90도 또는 다른 방향으로 회전되는 경우)에는, 본 명세서에서 사용된 공간적으로 상대적인 용어들은 그에 상응되게 해석되어야 한다. 또한, 두 계층들 “사이”에 있는 것으로 지칭되는 어느 계층의 경우, 두 계층들 사이에 단일로 존재하는 계층이거나, 하나 이상의 중간 계층들로 존재할 수 있는 것으로 이해되어야 한다.
본 명세서에서 사용되는 용어는 설명한 특정 실시 예들을 설명하기 위한 목적이고, 본 개시의 기술적 사상을 제한하도록 의도된 것이 아니다. 본 명세서에서 사용된 바와 같이, “상당하게”, “약”, 그리고 그와 유사한 용어들은 근사 값의 용어들로 사용되는 것이지, 정도의 용어들로 사용되는 것이 아니며, 통상의 기술자에 의해 인식되는 측정 또는 계산 값들의 고유 편차들을 설명하기 위해 의도된 것이다.
본 명세서에서 사용된 바와 같이, “하나”, “단일”과 같은 단수 형태들은 문맥상 명확하게 하지 않은 한, 복수 형태들을 포함하도록 의도된 것이다. 또한, “포함하는” 및/또는 “포함한”의 용어들은, 본 명세서에서 사용된 경우, 언급된 특징들, 정수들, 단계들, 동작들, 구성 요소들, 및/또는 구성들의 존재를 명시하는 것으로 이해되어야 하지만, 하나 이상의 특징들, 정수들, 단계들, 동작들, 구성 요소들, 구성들, 및/또는 그것들의 조합들의 존재나 추가를 배제하는 것이 아니다. 본 명세서에서 사용된 바와 같이, “및/또는”이라는 용어는 하나 이상의 관련되어 나열된 항목들의 임의의 및 모든 조합들을 포함한다. “적어도 어느 하나”와 같은 표현들이 구성 요소들의 목록에 앞서서 표현된 경우, 그 표현들은 구성 요소들의 전체 목록을 수정하는 것이지, 목록의 개별적인 구성 요소들을 수정하는 것이 아니다. 또한, 본 개시의 기술적 사상에 대한 실시 예들을 설명할 때, “~할 수 있다.”의 사용은 “본 개시의 하나 이상의 실시 예들”을 의미한다. 또한, “예시적인”이라는 용어는 예시 또는 설명을 지칭하는 것으로 의도된다. 본 명세서에서 사용된 바와 같이, “사용”, “사용하는”, 및 “사용되는”이라는 용어들은 각각 “활용”, “활용하는”, 및 ”활용되는”의 동의어로 간주될 수 있다.
구성 요소 또는 계층이 다른 구성 요소 또는 계층 “상에 놓인”, “과 연결된”, “과 결합된”, “에 인접한” 것으로 지칭되는 경우에는, 다른 구성 요소 또는 계층 바로 그 위에 놓여질 수 있고, 연결될 수 있고, 결합될 수 있고, 인정할 수 있는 것이고, 또는 하나 이상의 중간 구성 요소들 또는 계층들이 존재하는 것으로 이해될 수 있다. 반대로, 구성 요소 또는 계층이 다른 구성 요소 또는 계층 “상에 바로 놓인”, “과 직접 연결된”, “과 직접 결합된”, 또는 “바로 인접한” 경우, 중간 구성 요소들 또는 계층들이 존재하지 않는 것이다.
본 명세서에서 인용된 임의의 수치 범위는 인용된 범위 내에 포함된 동일한 수치 정밀도의 모든 하위 범위들을 포함하도록 의도된다. 예를 들어, “에서 10.0”또는 “과 10.0 사이”의 범위는 인용된 최소값 1.0과 인용된 최대값 10.0 사이, 즉, 최소값이 1.0 이상이고, 최대값이10.0 이하인 (예컨대, 2.4 ~ 7.6) 하위 범위를 포함한다. 본 명세서에 언급된 임의의 최대 수치 제한은 그 안에 포함된 모든 더 낮은 수치 제한을 포함하도록 의도되고, 본 명세서에 언급된 임의의 최소 수치 제한은 거기에 포함된 모든 더 높은 수치 제한을 포함하도록 의도된다.
본 개시의 몇몇 원칙들은 결함 있는 스토리지 장치의 경우에서 하나 이상의 결함 복원(fault resilient; FR) 모드들에서 계속 동작할 수 있는 스토리지 장치들에 관련한다. 예를 들어, 스토리지 장치는 스토리지 시스템을 스토리지 장치의 결함으로부터 신속하게 및/또는 효율적으로 복구할 수 있는 제한된 방식으로 계속 동작할 수 있다.
몇몇 실시 예들에 있어서, 하나 이상의 결함 복원 모드들에서 동작하는 스토리지 장치는 예를 들어, 읽기 전용 모드에서 동작함으로써 적어도 부분적인 읽기 성능을 가질 수 있다.
몇몇 실시 예들에 있어서, 적어도 부분적인 읽기 성능의, 하나 이상의 결함 복원 모드들을 갖는 스토리지 장치는 예비 스토리지 장치를 갖는 스토리지 장치 그룹에 대한 복구 방식을 구현하는데 사용될 수 있다. 예를 들어, 스토리지 장치 그룹은 단일(또는 경우에 따라 더 큰) 가상 스토리지 장치로 나타날 수 있는 리던던트 어레이에 구성될 수 있다. 스토리지 장치 결함의 경우, 리던던트 어레이는 결함 있는 스토리지 장치에서 예비 스토리지 장치로 재구축하기 위해, 하나 이상의 스토리지 장치 그룹에 저장된 패리티(parity) 정보를 사용할 수 있다. 결함 있는 스토리지 장치가 적어도 부분적인 읽기 성능의 하나 이상의 결함 있는 복구 모드들을 동작할 수 있는 경우, 스토리지 시스템은 결함 있는 스토리지 장치에서 예비 스토리지 장치로 데이터를 재구축하는 동안, 시스템이 결함 있는 스토리지 장치로부터 계속 읽을 수 있는 복구 방식을 구현할 수 있다.
몇몇 실시 예들에 있어서, 재구축 동작은 결함 있는 스토리지 장치에서 예비 스토리지 장치로 데이터를 복사할 수 있다. 읽기 동작이 재구축 동작 동안 결함 있는 장치로부터 데이터를 읽는 시도를 하는 경우, 재구축 시점에 따라서, 데이터는 결함 있는 스토리지 장치로부터 바로 읽힐 수 있다. 쓰기 동작이 (예컨대, 패티리 계산을 위해) 재구축 동작 동안 결함 있는 장치로부터 데이터를 읽는 시도를 하는 경우, 재구축 시점에 따라서, 데이터는 결함 있는 스토리지 장치로부터 바로 읽힐 수 있다. 적어도 부분적인 읽기 성능을 갖는 결함 복원 모드가 있는 스토리지 장치를 사용하는 것은, 스토리지 시스템이 다른 스토리지 장치들로부터 데이터 및 패리티 정보를 읽는 것과 결함 있는 스토리지 장치상에서 데이터를 재구성하기 위한 패리티 계산을 수행하는 것을 피할 수 있으므로, I/O 동작들 및/또는 복구 중의 처리 리소스들의 사용을 감소시킬 수 있다.
본 명세서에 개시된 원칙들은 독립적인 활용성이 있고, 개별적으로 실시될 수 있으며, 모든 실시 예가 모든 원칙을 활용하는 것은 아니다. 다만, 원칙들은 다양한 조합에 의해 실시 될 수 있으며, 그 중 일부 조합들은 개별 원칙들의 이점들을 시너지 방식으로 증폭시킬 수 있다.
몇몇 실시 예들에서, 스토리지 시스템은 가상 스토리지 장치로 나타날 수 있는 RAID(redundant array of independent drives)를 구현할 수 있다. RAID 스토리지 시스템의 몇몇 실시 예들은 장애가 발생한 드라이브로부터 데이터를 재구축하는데 사용될 수 있는 패리티 정보를 포함할 수 있다.
도 8은 본 개시의 예시적인 실시 예들에 따른 RAID-4 스토리지 시스템에 대한 맵핑 방식의 실시 예를 도시한다. 몇몇 실시 예들에 있어서, 드라이브들은 익스텐트(extent)로 지칭되는 데이터 스토리지 공간의 연속적인 영역들로 분리될 수 있다. 몇몇 실시 예들에 있어서, 익스텐트는 전체 드라이브를 포함할 수 있다. 그러므로, 몇몇 실시 예들에 있어서, 그리고 본 개시에서, 익스텐트라는 용어는 문맥상 명확하지 않은 이상, 드라이브 또는 스토리지 장치에 대하여 상호 변경 가능하게 사용될 수 있다. 각 드라이브는 복수의 드라이브들을 확장하는 스트라이프 길이를 가질 수 있는 스트라이프를 집합적으로 형성할 수 있는 하나 이상의 스트립들을 포함할 수 있다. 각 스트립은 하나 이상의 데이터 블록들로 더 분리될 수 있다. 이러한 예시는 단일한 드라이브 상에 패리티 블록들이 모두 저장될 수 있으므로, 회전하지 않는 패리티를 갖는 것으로 지칭될 수 있다.
단일 드라이브의 장애 발생의 경우, 장애가 발생한 드라이브로부터의 데이터 블록들은 상응하는 패리티 블록과 다른 건강한 드라이브들로부터의 남은 데이터 블록들의 배타적 논리합(exclusive or; XOR) 동작을 통해 복구될 수 있다. 또는, 장애가 발생한 드라이브가 패리티 블록들을 포함했을 경우, 패리티 블록은 다른 건강한 드라이브들로부터의 데이터 블록들에서의 배타적 논리합 동작을 통해 재계산될 수 있다.
도 9는 본 개시의 예시적인 실시 예들에 따른 RAID-5 스토리지 시스템에 대한 맵핑 방식의 실시 예를 도시한다. 도 9에서 도시된 실시 예는 도 8에서 도시된 실시 예와 유사할 수 있지만, 도 9에서 도시된 실시 예는 회전 패리티를 포함할 수 있고, 회전 패리티에서 패리티 블록들의 스트립은 다른 스트라이프들에 대한 다른 드라이브들로 회전할 수 있다.
도 10은 본 개시의 예시적인 실시 예들에 따른 적어도 하나의 결함 복원형 스토리지 장치를 포함하는 리던던트 어레이 스토리지 시스템에 대한 맵핑 방식의 실시 예를 도시한다. 도 10에서 도시된 실시 예는 리던던트 어레이(1000)로 구성되는, 제1 스토리지 장치(1002)와 제2 스토리지 장치(1004)를 포함할 수 있다. 또한, 도 10에서 도시된 실시 예는 스토리지 장치 결함의 경우에서, 제1 스토리지 장치(1002) 또는 제2 스토리지 장치(1004)중 어느 하나로부터의 정보를 재구축하는데 사용되는 예비 스토리지 장치(1006)를 포함할 수 있다. 복수 어레이(1000)는 맵핑 방식(1010)의 임의 타입을 이용하여 제1 스토리지 장치(1002)와 제2 스토리지 장치(1004)에 가상 스토리지 공간(1008)을 맵핑하도록 구성될 수 있다. 예를 들어, 맵핑 방식은 결함 있는 스토리지 장치로부터 정보를 재구축하는데 사용될 수 있는 패리티 정보를 포함할 수 있다.
몇몇 실시 예들에 있어서, 제1 스토리지 장치(1002)와 제2 스토리지 장치(1004)는 각각 정보 블록들(1012 및 1014)를 포함할 수 있다. 하나 이상의 정보 블록들(1012 및 1014)은 가상 스토리지 공간(1018)내에서, 대응하는 데이터 블록들(1018)로 맵핑될 수 있는 데이터 블록들로 구현될 수 있다. 하나 이상의 정보 블록들(1012 및 1014)는 데이터 블록들로 구현될 수 있는 하나 이상의 정보 블록들(1012 및 1014)을 복구하기 위해 사용되는 패리티 블록들로 구현될 수 있다.
몇몇 실시 예들은 도 10에서 타원들로 보여지는 리던던트 어레이(1000)의 부분으로 구성되는 하나 이상의 추가적인 스토리지 장치들을 더 포함할 수 있다. 몇몇 실시 예들에 있어서, 예비 스토리지 장치(1006)는 핫 스페어(hot spare)로 구현될 수 있다. 몇몇 실시 예들은 하나 이상의 추가적인 예비 스토리지 장치들을 포함할 수 있다.
제1 스토리지 장치(1002)와 제2 스토리지 장치(1004) 중 적어도 어느 하나는 하나 이상의 결함 복원 모드들로 동작할 수 있는 결함 복원형 스토리지 장치로 구현될 수 있다. 스토리지 장치는 결함 모드에서, 좀 더 상세하게 후술될 결함 상태를 마주함에도 불구하고, 동작을 지속하고 적어도 부분적인 읽기 성능을 유지할 수 있다. 예를 들어, 몇몇 실시 예들에 있어서, 결함 복원 스토리지 장치는 읽기 전용 모드에서 동작할 수 있다.
적어도 부분적인 읽기 성능을 갖는 결함 복원 모드를 보유한 스토리지 장치의 포함은 결함 있는 스토리지 장치로부터 예비 스토리지 장치로 데이터를 재구축하는 동안 스토리지 시스템이 결함 있는 스토리지 장치로부터 계속 읽을 수 있는 복구 방식을 구현한 도 10에 도시된 실시 예를 가능하게 한다. 세부적인 구현 사항에 따라, 임의의 수의 이점들, 예컨대, I/O 동작, 레이턴시, 데이터 전송 및/또는 패리티 계산을 위한 전력 소비, 및/또는 동기화 등을 제공할 수 있다. 또한, 예를 들어, 다른 스토리지 장치에서 데이터 및/또는 패리티 블록을 읽어 결함 있는 스토리지 장치에서 데이터를 재구축하는데 사용할 수 있는 I/O 대역폭을 확보함으로써, 시스템 처리량을 증가시킬 수 있다.
도 10에서 도시되는 실시 예는 RAID-4 또는 RAID-5 시스템과 같은 RAID 스토리지 시스템으로 구현하는데 사용될 수 있다. 다만, 도 10과 관련하여 본 명세서에서 서술된 원칙들은 RAID스토리지 시스템들에 한정되지 않으며, 결함 상태를 마주함에도, 동작을 지속하고 적어도 부분적인 읽기 성능을 유지할 수 있는 적어도 하나의 스토리지 장치를 갖는 리던던트 어레이로 구성되는 스토리지 장치들의 그룹을 갖는 어떠한 스토리지 시스템들에도 적용될 수 있다. 더욱이, 도 10에 도시된 실시 예가 스토리지 장치들(1002 및 1004)로 구현될 수 있음에도 불구하고, 원칙들은 익스텐트들 및/또는 리던던트 어레이 스토리지 시스템을 구현하는데 사용되는 임의의 다른 정보 단위에 적용될 수 있다. 그러므로, 몇몇 실시 예들에 있어서, 스토리지 장치는 익스텐트 및/또는 스토리지 장치 또는 스토리지 장치의 일부에 대한 임의의 다른 정보 단위로 지칭할 수 있다.
도 11은 본 개시의 예시적인 실시 예들에 따른 리던던트 어레이 스토리지 시스템의 예시적인 실시 예를 도시한다. 예를 들어, 도 11에서 도시되는 실시 예는 도 10에서 도시되는 실시 예 및/또는 본 명세서에서 개시된 다른 실시 예들을 구현하는데 사용될 수 있다.
도 11에서 도시되는 실시 예는 스토리지 어레이 컨트롤러(1115)와 하나 이상의 스토리지 장치들(1110)을 포함할 수 있다. 몇몇 실시 예에 있어서, 스토리지 어레이 컨트롤러(1115)는 호스트(1105)로부터 읽기 및/또는 쓰기 요청들과 관련된 데이터를 수신할 수 있다. 각 스토리지 장치(1110)는 제어 회로로 지칭될 수 있는 스토리지 컨트롤러(1120)와 스토리지 매체(1125)를 포함할 수 있다. 몇몇 실시 예들에 있어서, 스토리지 장치(1110)는 내부 결함 상태를 겪을 수 있고, 스토리지 장치는 결함 상태의 시스템 수준의 영향을 완화하기 위해, 상세하게 후술될 다양한 결함 복원 행동들을 나타낼 수 있다.
스토리지 어레이 컨트롤러(1115)는 정보 복구 과정, 정보 재구축 동작, 읽기 동작, 쓰기 동작, 패리티 계산, 및/또는 본 명세서에서 개시된 기타 기술들 중 적어도 어느 하나를 구현하도록 구성되는 로직(logic)(1116)을 포함할 수 있다.
하나 이상의 스토리지 장치들(1110)은 임의 종류의 스토리지 장비와 SSD(solid state drive), HDD(hard disk drive), 광학 드라이브(optical drive), 및/또는 벌크 저항 변화를 갖는 교차 격자형 비 휘발성 메모리 등과 같은 임의 유형의 영구 메모리에 기반한 드라이브 등, 및 또는 이들의 임의 조합을 포함하는 관련 스토리지 매체로 구현될 수 있다. 각 스토리지 장치 내의 데이터는 블록들, 및/또는 키-값 구조들, 및/또는 이들의 임의 조합으로 배열될 수 있다. 각 스토리지 장치(1110)는 SATA(serial at attachment), SCSI(small computer system interface), SAS(serial attached SCSI), 및/또는 U.2 등을 이용하여, 그리고 임의의 스토리지 인터페이스 및/또는 PCI(peripheral component interconnect), PCIe(PCI express), NVMe(nonvolatile memory express), NVMe-oF(NVMe-over-fabrics), 이더넷(ethernet), 인피니밴드(infiniband), 및/또는 파이버 채널(fibre channel) 등과 같은 프로토콜을 이용하여, 3.5”, 2.5”, 1.8”, M.2, MO-297, MO-300, 및/또는 EDSFF(enterprise and data center SSD form factor) 등과 같은 임의의 폼 팩터를 가질 수 있다. 몇몇 실시 예들은 서버 섀시(server shassis), 서버 랙(server rack), 데이터 룸(dataroom), 데이터 센터(datacenter), 엣지 데이터 센터(edge datacenter), 모바일 데이터 센터(mobile datacenter) 및/또는 이들의 임의 조합 등의 전체 또는 부분으로 구현될 수 있거나, 및/또는 이들과 연결되어 사용될 수 있다.
스토리지 컨트롤러들(1120) 중 적어도 어느 하나, 스토리지 어레이 컨트롤러(1115), 및/또는 로직(1116) 등은 하드웨어, 소프트웨어, 또는 이들의 임의 조합으로, 조합 로직(combination logic), 순차 로직(sequential logic), 하나 이상의 타이머(timer)들, 카운터(counter)들, 레지스터(register)들, 상태 머신(state machine)들, CPLD(complex programmable logic device)들, FPGA(field programmable gate array)들, ASIC(application specific integrated circuit)들, x86 프로세서와 같은 CISC(complex instruction set computer) 프로세서들, RISC(reduced instruction set computer) 프로세서들, 및/또는 GPU(graphics processing unit), 및/또는 NPU(neural processing unit) 등과 같이 DRAM(dynamic random access memory) 및/또는 SRAM(static random access memory)과 같은 휘발성 메모리, 및/또는 플래시 메모리(flash memory)와 같은 비 휘발성 메모리 등에 저장된 명령어들을 실행하는 구성 등을 포함하는 임의 조합으로 구현될 수 있다.
본 개시의 발명적 원리들은 특정 구현 세부 사항들에 의해 제한되지 않지만, 설명의 목적을 위해, 일부 실시 예들에서는, 각 스토리지 장치(1110)는 SSD 내부에서, 예컨대, 스토리지 매체(1125)가 NAND(not-AND) 플래시 메모리로 구현될 수 있는 SSD로 구현될 수 있고, 각 스토리지 컨트롤러(1120)는 FTL(flash translation layer), 스토리지 인터페이스, 및 본 명세서에서 개시된 결함 복원 특징이 구현된 임의 기능을 포함하는 SSD를 동작하는 것과 관련된 임의 기능을 구현할 수 있다. 스토리지 장치(1110)에서 지울 수 있는 가장 작은 단위를 블록이라 지칭할 수 있고, 스토리지 장치(1110)에서 쓸 수 있는 가장 작은 단위를 페이지라고 지칭할 수 있다.
스토리지 매체(1125)는 (스토리지 매체(1125)의 사용 이력에 의존할 수 있고, 그에 따라, 스토리지 매체(1125) 내에서 변할 수 있는)보존 기간을 가질 수 있다. 보존 기간보다 더 길게 저장되어온 데이터(즉, 보존 기간을 초과하는 수명을 갖는 데이터)는 비신뢰적일 수 있고, 만료된 것으로 일컬어질 수 있다. 데이터는 예컨대 블록 코드일 수 있는 에러 정정 코드를 사용하여 스토리지 매체(1125)에 저장될 수 있다. 데이터가 스토리지 매체(1125)로부터 읽혀진 경우, 코드 블록으로 지칭되는 다량의 미가공 데이터는 스토리지 매체(1125)로부터 읽힐 수 있고, 미가공 데이터를 해독하려는 시도가 행해질 수 있다. 그러한 시도가 실패하면, 읽기 재시도와 같은 추가적인 시도들이 행해질 수 있다. 사용함에 있어서, 스토리지 매체(1125)의 일부, 예컨대 블록은 보존 기간이 수용할 수 없을 정도로 짧아진 시점까지 퇴보할 수 있고, 이러한 블록은 배드 블록으로 분류될 수 있다. 이러한 상황이 전체 스토리지 매체(1125)가 작동 불가능하게 만드는 것을 피하기 위해, 예컨대, 각 플래시 메모리 다이 또는 각 플래시 메모리 평면에 포함되는 배드 블록 관리 예비 공간으로 지칭될 수 있는 예비 공간이 존재할 수 있고, 컨트롤러(1120) 또는 플래시 메모리 다이 또는 플래시 메모리 평면 내부의 다른 컨트롤러는 예비 블록의 사용을 시작하고 배드 블록의 사용을 중단할 수 있다.
본 명세서에서 설명된 모든 실시 예들과 마찬가지로, 도 10 및 도 11에 도시된 실시 예와 관련되어 설명된 동작들 및/또는 구성들은 예시적인 동작들 및/또는 구성들이다. 몇몇 실시 예들에 있어서, 일부 동작들 및/또는 구성들은 생략되거나, 및/또는 다른 동작들 및/또는 구성들이 포함될 수 있다. 또한, 몇몇 실시 예들에 있어서, 동작들 및/또는 구성들의 시간적 및/또는 공간적 순서는 변경될 수 있다. 일부 구성들은 개별 구성들로 도시될 수 있지만, 몇몇 실시 예들에 있어서, 분리되어 도시된 일부 구성들은 단일 구성으로 합쳐질 수 있거나, 및/또는 단일 구성으로 도시된 일부 구성들은 복수의 구성들로 구현될 수 있다. .
설명의 목적을 위해, 시스템들, 장치들, 및/또는 동작들의 일부 예시적인 실시 예들은 RAID-5 스토리지 시스템의 문맥에서 후술될 수 있다. 그러나, 발명의 원리들은 RAID-5에 제한되지 않으며, 시스템 내에서 스토리지 장치들의 그룹이 어느 정도의 중복되는 양을 제공하도록 구성되는 다른 비-RAID 타입의 리던던트 어레이 시스템뿐만 아니라, RAID-4와 같은 다른 타입의 RAID 시스템에 적용될 수 있다. 또한, 일부 실시 예들은 완전한 스토리지 장치들의 문맥에서 설명될 수 있지만, 발명의 원리들은 익스텐트들 및/또는 스토리지 에러이를 구현하도록 사용될 수 있는 정보의 임의의 다른 유닛들을 포함하는 이들의 일부들로 적용될 수 있다.
도 12는 본 개시의 예시적인 실시 예들에 따른 결함 복원형 스토리지 장치 없이 예비 스토리지 장치에서 재구축 동작을 수행하는 RAID-5 스토리지 시스템의 예시적인 실시 예를 도시한다. 도 12에서 도시된 실시 예에서, 리던던트 어레이는 건강한 스토리지 장치들(1202, 1206, 1208, 1210), 결함 있는 스토리지 장치(1204, 음영으로 표시), 및 예비 스토리지 장치(1212, 파선으로 표시)를 포함할 수 있다. 결함 있는 스토리지 장치(1204)는 결함 상태 때문에, 읽기 동작을 수행하는 것이 가능하지 않을 수 있다. 스토리지 장치들(1202, 1204, 1206, 1208, 1210)은 각각 장치 0(Dev 0), 장치 1(Dev 1), 장치 2(Dev 2), 장치 3(Dev 3), 및 장치 4(Dev 4)로 지칭될 수 있다. 몇몇 실시 예들에 있어서, 예를 들어, 예비 스토리지 장치(1212)는 핫 스페어로 구현될 수 있다.
스토리지 장치들(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 스트라이프(Stripe 1)를 형성할 수 있다. Stripe 1 내에서, Dev 1의 다음 4개의 블록들은 패리티 블록들일 수 있으며, Dev 1 및 Dev 2 내지 Dev 4의 다음 4개의 블록들은 데이터 블록들일 수 있다. 스토리지 장치들(1202, 1204, 1206, 1208, 1210)의 하단에 도시된 블록들은 타원으로 표시된 추가 블록들과 함께, 집합적으로 추가 스트라이프들을 형성할 수 있다.
도 12에서 도시된 구성에서, 시스템은 예비 스토리지 장치(1212)상에서 결함 있는 스토리지 장치(1204)(Dev 1)로부터 정보를 재구축하는 과정에 있을 수 있다. 재구축 지점은 도 12에 도시된 예비 장치(1212)의 상단의 블록에 있을 수 있다. 재구축 동작은 스토리지 장치(Dev 0), 및 각각 건강한 스토리지 장치들인 Dev 2, Dev 3, 및 Dev 4로부터 대응하는 패리티 블록 P(0,0,0)을 읽음으로써, 결함 있는 장치 Dev 1에 위치했던 데이터 블록 B0를 재구성할 수 있다. 패리티 블록 P(0,0,0)와 데이터 블록들 B4, B8, 및 B12는 데이터 블록 B0를 복구하기 위해 패리티 로직(1214)에 의해 처리될 수 있고, 데이터 블록 B0는 스토리지 장치(Spare)의 재구축 지점에 저장될 수 있다. 그리고, 재구축 동작은 Stripe 0 및/또는 하나 이상의 추가 스트라이프들, 익스텐트들이 될 때까지 대응하는 패리티 블록 P(1,0,0)와 데이터 블록들 B5, B9, 및 B13을 이용하여 데이터 블록 B1을 재구성하는 것으로 진행할 수 있으며, 및/또는 전체 스토리지 장치(1204)는 예비 스토리지 장치(1212)상에서 재구축된다.
도 12에서 도시된 바와 같이, 몇몇 실시 예들에 있어서, 데이터의 블록을 결함 있는 스토리지 장치로부터 복원하는 것은 데이터 읽기 및/또는 I/O 동작, 레이턴시, 데이터 전송에 대한 전력 소비 및/또는 패리티 계산 등을 증가시킬 수 있고, 예를 들어 다른 I/O 동작들에 의해 사용될 수 있는 I/O 대역폭을 이용함으로써 시스템 처리량을 감소시킬 수 있는 복수(예컨대, 4개)의 스토리지 장치들로부터의 패리티 블록들을 포함한다
도 13은 본 개시의 예시적인 실시 예들에 따른 결함 복원형 스토리지 장치로 예비 스토리지 장치에서 재구축 동작을 수행하는 RAID-5 스토리지 시스템의 예시적인 실시 예를 도시한다. 도 13에 도시된 실시 예는 도 12에 도시된 실시 예의 구성들과 비슷한 구성들을 포함할 수 있다. 그러나, 결함 있는 스토리지 장치(1304)는 본 개시의 예시적인 실시 예들에 따른 적어도 부분적인 읽기 성능을 갖는 결함 복구 모드에서 동작하는 스토리지 장치로 구현될 수 있다. 도 13에 도시된 예시적인 실시 예에서, 예를 들어, 결함 있는 스토리지 장치(1304)는 후술할 도 23을 참조한 하나 이상의 결함 복구모드인, FR_MODE_CAPACITY_READ_ONLY, FR_MODE_PERFORMANCE, FR_MODE_READ_ONLY, 및/또는 FR_MODE_TEMP_READ_ONLY 에서 동작함으로써, 읽기 전용 모드에서 동작할 수 있다.
도 13에서 도시된 구성에서, 시스템은 예비 스토리지 장치(1312)(Spare)상에서 결함 있는 스토리지 장치(1304)(Dev 1)로부터 정보를 재구축할 수 있다. 결함 있는 스토리지 장치(1304)는 읽기 전용 모드에서 동작할 수 있기 때문에, 정보는 예컨대, 패리티 계산 및/또는 동기화 과정 없이, 결함 있는 스토리지 장치(1304)로부터 예비 스토리지 장치(1312)로 하나 이상의 블록들을 단순히 교차 복사함으로써 빠르게 재구축될 수 있다. 예를 들어, 시스템은 순차적으로 블록들 B0, B1, 및 B2를 읽고, 도 13에 도시된 구성에서 재구축 지점이 하향 진행되면서 블록들을 예비 스토리지 장치(1312)에 쓸 수 있다.
몇몇 실시 예들에 있어서, 하나 이상의 데이터 및/또는 패리티 블록들은 재구축 지점이 블록에 도달할 때까지 예비 스토리지 장치(1312)에 이미 쓰여졌을 수 있다. 그러므로, 재구축 과정은 이 블록들을 건너 뛸 수 있다. 예를 들어, 데이터 블록 B3는 도 17과 관련하여 후술될 읽기 동작 동안 결함 있는 스토리지 장치(1304)로부터 읽혀진 후에 예비 스토리지 장치(1312)에 쓰여질 수 있다. 다른 예시로, 데이터 블록 B36은 도 20과 관련하여 후술될 이전의 쓰기 동작에 의하여, 갱신된 데이터 블록 B36'으로 예비 스토리지 장치(1312)에 쓰여질 수 있다.
몇몇 실시 예들에 있어서, 그리고 구현 세부 사항에 따라, 도 13에 도시된 실시 예들은 I/O 동작들, 레이턴시, 데이터 전송의 전력 소비, 패리티 계산, 및/또는 동기화 등을 감소시킬 수 있고, 또한, 예컨대, 다른 스토리지 장치로부터 데이터 및/또는 패리티 블록들을 읽어서 결함 있는 스토리지 장치(1304)로부터 데이터를 재구축하는데 사용될 수 있는 I/O 대역폭을 해제함으로써, 시스템 처리량을 증가시킬 수 있다.
도 14는 본 개시의 예시적인 실시 예들에 따른 요청된 읽기 동작에 대해 하나 이상의 유효한 데이터 블록이 이용 가능할 수 있는 재구축 동작 동안 결함 있는 스토리지 장치 없이 RAID-5 스토리지 시스템에 의해 수행되는 읽기 동작의 일부 예시적인 실시 예들을 도시한다. 도 14에 도시된 스토리지 시스템의 실시 예는 도 12에 도시된 실시 예에서의 구성들과 유사한 구성들을 포함할 수 있다.
데이터 블록 B16을 읽기 위한 하나의 동작에서, 데이터 블록은 건강한 장치일 수 있는 스토리지 장치(1402)(Dev 0)에 있을 수 있으므로, Dev 0에서 직접 읽을 수 있다. 결함 있는 스토리지 장치(1404)로부터 데이터 블록 B0를 읽기 위한 다른 동작에서, 데이터 블록은 이미 복구 되고, 예비 스토리지 장치(1412)에 저장될 수 있다. 그러므로, 데이터 블록 B0는 예비 스토리지 장치(1412)로부터 읽힐 수 있다.
도 15는 본 개시의 예시적인 실시 예들에 따른 요청된 읽기 동작에 대해 유효한 데이터 블록이 이용 가능하지 않은 재구축 동작 동안 결함 복원형 스토리지 장치 없이 RAID-5 스토리지 시스템에 의해 수행되는 다른 읽기 동작의 예시적인 실시 예를 도시한다. 도 15에 도시된 스토리지 시스템의 실시 예는 도 14에 도시된 실시 예에서의 구성들과 유사한 구성들을 포함할 수 있다.
결함 있는 스토리지 장치(1504)로부터 데이터 블록 B36을 읽기 위한 동작에서, 데이터 블록 B36은 재구축 과정에서 아직 복구되지 않았을 수 있다. 예를 들어, 재구축 지점은 오직 패리티 블록 P(0,1,1)에서만 동작할 수 있다. 그러므로, 데이터 블록 B36은 스토리지 장치 Dev 2로부터 대응하는 패리티 블록 P(0,2,2)와 각각 건강한 스토리지 장치들 Dev 0, Dev 3, 및 Dev 4로부터 대응하는 데이터 블록들 B32, B40, 및 B44을 읽음으로써 재구성될 수 있다. 패리티 블록 P(0,2,2)과 데이터 블록들 B32, B40, 및 B44는 데이터 블록 B36을 재구성하기 위해 패리티 로직(1514)에 의해 처리될 수 있다.
몇몇 실시 예들에 있어서, 재구성된 데이터 블록 B36은 도 15에서 파선으로 표시된 예비 스토리지 장치(1512)에 쓰여질 수 있다. 그러므로, 데이터 블록 B36은 재구축 지점이 데이터 블록 B36에 도달할 때 재구축 과정에 의해 건너 뛰어질 수 있고, 이는 재구성된 데이터 블록 B36에 대한 I/O 동작들 및/또는 패리티 계산을 다시 제거할 수 있다. 그러나, 다른 실시 예들에 있어서, 재구성된 데이터 블록 B36은 예컨대 재구성 과정을 단순화 및/또는 일관성을 유지하기 위해 호스트에 의해 읽혀 진 후에 폐기될 수 있다.
도 16은 요청된 읽기 동작에 대해 하나 이상의 유효한 데이터 블록들이 이용 가능할 수 있는 재구축 동작 동안 본 개시의 예시적인 실시 예에 따른 결함 복원형 스토리지 장치를 갖는 RAID-5 스토리지 시스템에 의해 수행되는 읽기 동작들의 일부 예시적인 실시 예들을 도시한다. 도 16에 도시된 스토리지 시스템의 실시 예는 결함 있는 스토리지 장치(1604)가 본 개시의 예시적인 실시 예들에 따른 적어도 부분적인 읽기 성능을 갖는 결함 복구 모드에서 동작하는 스토리지 장치로 구현될 수 있는 것으로 도 13에 도시된 실시 예에서의 구성들과 유사한 구성들을 포함할 수 있다. 도 16에 도시된 예시적인 실시 예에서, 결함 있는 스토리지 장치(1604)는 읽기 전용 모드에서 동작할 수 있다.
데이터 블록 B16을 읽기 위한 동작에서, 데이터 블록 B16은 건강한 장치일 수 있는 스토리지 장치(1602)(Dev 0)에 있을 수 있고, 따라서 Dev 0으로터 직접 읽혀질 수 있다. 결함 있는 스토리지 장치(1604)로부터 데이터 블록 B0을 읽기 위한 다른 동작에서, 데이터 블록은 이미 복구 되고, 예비 스토리지 장치(1612)에 저장될 수 있다. 그러므로, 데이터 블록 B0는 예비 스토리지 장치(1612)로부터 읽힐 수 있다.
도 17은 재구축 지점이 요청된 읽기 동작에 대해 데이터 블록이나 패리티 블록에 도달하지 않을 수 있는 재구축 동작 동안 본 개시의 예시적인 실시 예들에 따른 결함 복원형 스토리지 장치를 갖는 RAID-5 스토리지 시스템에 의해 수행될 수 있는 읽기 동작들의 일부 추가 예시적인 실시 예들을 도시한다. 도 17에 도시된 스토리지 시스템의 실시 예는 결함 있는 스토리지 장치(1704)가 본 개시의 예시적인 실시 예들에 따른 적어도 부분적인 읽기 성능을 갖는 결함 복구 모드에서 동작하는 스토리지 장치로 구현될 수 있는 것으로 도 16에 도시된 실시 예에서의 구성들과 유사한 구성들을 포함할 수 있다. 도 17에 도시된 예시적인 실시 예에서, 결함 있는 스토리지 장치(1704)는 읽기 전용 모드에서 동작할 수 있다.
결함 있는 스토리지 장치(1704)로부터 데이터 블록 B36을 읽기 위한 동작에서, 재구축 지점이 예비 스토리지 장치(1721)상에서 요청된 데이터 블록 B36에 도달하지 않았을지라도, 요청된 데이터 블록은 이전에 예비 스토리지 장치(1712)상에서 데이터 블록 B36'으로 갱신되었을 수 있고, 따라서 예비 스토리지 장치(1712)로부터 데이터 블록 B36'으로 읽힐 수 있다. 예를 들어, 요청된 데이터 블록 B36은 도 20과 관련하여 후술될 이전의 쓰기 동작에 의해, 예비 스토리지 장치(1712)상에서 데이터 블록 B36'으로 갱신될 수 있다.
결함 있는 스토리지 장치(1704)로부터 데이터 블록 B3를 읽기 위한 동작에서, 재구축 지점은 도 17에 도시된 것과 같이 예비 스토리지 장치(1712)상에서 요청된 데이터 블록 B3에 도달하지 않을 수 있다. 그러나, 결함 있는 스토리지 장치(1704)가 여전히 읽기 전용 모드에서 동작하고 있기 때문에, 데이터 블록 B3는 결함 있는 스토리지 장치(1704)로부터 단순히 빠르게, 예컨대 패리티 계산 없이, 읽혀 질 수 있다. 몇몇 실시 예들에 있어서, 그리고 구현 세부 사항에 따라서, 이는 I/O동작들, 레이턴시, 데이터 전송의 전력 소비, 패리티 계산, 및/또는 동기화 등을 감소시킬 수 있고, 또한 예컨대, 다른 스토리지 장치로부터 데이터 및/또는 패리티 블록들을 읽어서 결함 있는 스토리지 장치(1704)로부터 데이터를 재구축하는데 사용될 수 있는 I/O 대역폭을 해제함으로써, 시스템 처리량을 증가시킬 수 있다.
몇몇 실시 예들에서, 결함 있는 스토리지 장치(1704)는 예컨대 도 23을 참조하여 후술될 하나 이상의 결함 복원 모드인FR_MODE_CAPACITY_READ_ONLY, FR_MODE_PERFORMANCE, FR_MODE_READ_ONLY, 및/또는 FR_MODE_TEMP_READ_ONLY 에서 동작함으로써 적어도 부분적인 읽기 성능을 갖는 결함 복원 모드에서 동작할 수 있다. 몇몇 실시 예들에 있어서, 그리고 구현 세부 사항에 따라서, 도 17에 도시된 실시 예들은 도 15에 도시된 실시 예들보다 적어도 많은 경우에 있어서 더 잘 수행할 수 있다.
몇몇 실시 예들에 있어서, 결함 있는 스토리지 장치(1704)로부터 데이터 블록 B3를 읽은 후에, 데이터 블록 B3는 도 17에 파선으로 표시된 예비 스토리지 장치(1712)에 쓰여질 수 있다. 그러므로, 데이터 블록 B3는 재구축 지점이 데이터 블록 B3에 도달할 때 재구축 과정에 의해 건너 뛰어질 수 있고, 이는 재구축 과정 동안 읽기 동작을 제거할 수 있다. 그러나, 다른 실시 예들에 있어서, 예를 들어, 데이터 블록 B3는 재구축 과정을 단순화하고 일관성 있게 유지하기 위해 호스트에 의해 읽혀진 이후 폐기될 수 있다.
도 18은 본 개시의 예시적인 실시 예들에 따른 결함 있는 스토리지 장치를 위해 쓰기 동작이 이미 재구축된 데이터 블록 상에서 수행될 수 있는 재구축 동작 동안 결함 복원 스토리지 장치 없이 RAID-5 스토리지 시스템에 의해 수행되는 쓰기 동작의 예시적인 실시 예를 도시한다. 도 18에 도시된 스토리지 시스템의 실시 예는 도 12에 도시된 실시 예에서의 구성들과 유사한 구성들을 포함할 수 있다.
도 18은 이전 데이터 블록 B0가 결함 있는 스토리지 장치(1804)(Dev 1)에 처음 있었을 수 있는 갱신된 데이터 블록 B0'을 쓰기 위한 동작을 도시한다. 그러나, 데이터 블록 B0는 이전에 예비 스토리지 장치(1812)에 복구 되었을 수 있다. 그러므로, 쓰기 동작에서, 갱신된 데이터 블록 B0'는 이전의 (재구축된)데이터 블록 B0를 예비 스토리지 장치(1812)로부터 처음 읽고, 패리티 블록 P(0,0,0)을 제1 스토리지 장치(1802)(Dev 0)로부터 읽음으로써 예비 스토리지 장치(1812)로 쓰여질 수 있다. 이 두 블록들은 갱신된 패리티 블록 P'(0,0,0)을 생성하기 위해 패리티 로직(1814)를 이용하여 갱신된 데이터 블록 B0'로 처리될 수 있다. 갱신된 패리티 블록 P'(0,0,0)와 갱신된 데이터 블록 B0'는 각각 제1 스토리지 장치(1802)와 예비 스토리지 장치(1812)에 쓰여질 수 있다. 이러한 쓰기 동작에서, 결함 있는 스토리지 장치(1804)에 I/O가 없을 수 있다.
도 19a 및 도 19b는 본 개시의 예시적인 실시 예들에 따른 쓰기 동작이 결함 있는 스토리지 장치를 위해 재구축되지 않을 수 있는 데이터 블록상에서 수행될 수 있는 재구축 동작 동안 결함 복원 스토리지 장치 없이 RAID-5 스토리지 시스템에 의해 수행되는 쓰기 동작들의 예시적인 실시 예들을 도시한다. 도 19a 및 도19b에 도시된 스토리지 시스템들의 실시 예들은 도 18에 도시된 실시 예에서의 구성들과 유사한 구성들을 포함할 수 있다.
도 19a는 본 개시의 예시적인 실시 예들에 따른, 이전 데이터 블록 B36이 결함 있는 스토리지 장치(1904)에 처음 있을 수 있는 갱신된 데이터 블록(B36')을 쓰기 위한 동작을 도시한다. 갱신된 데이터 블록 B36'에 대한 패리티 정보는 건강한 스토리지 장치들(1902, 1908, 및 1910)으로부터 각각 대응하는 데이터 블록들 B32, B40, 및 B44을 읽음으로써 판단될 수 있다. 갱신된 데이터 블록 B36'과 데이터 블록들 B32, B40, 및 B44는 건강한 스토리지 장치(1906)로 쓰여질 수 있는 갱신된 패리티 블록 P'(0,2,2)을 생성하기 위해 패리티 로직(1914)에 의해 처리될 수 있다. 갱신된 데이터 블록 B36'은 예비 스토리지 장치(1912)로 쓰여질 수 있다.
도 19b는 본 개시의 예시적인 실시 예들에 따른, 이전 패리티 블록 P(2,1,1)이 결함 있는 스토리지 장치(1904)(Dev 1)상에 있을 수 있는 갱신된 데이터 블록 B18'를 쓰기 위한 동작을 도시한다. 갱신된 패리티 블록을 계산하기 위해, 데이터 블록들 B22, B26, 및 B30은 각각 건강한 스토리지 장치들(1906, 1908, 1910)으로부터 읽혀질 수 있고, 패리티 로직(1914)에 의해 갱신된 데이터 블록 B18'과 조합될 수 있다. 패리티 블록 P'(2,1,1)은 예비 스토리지 장치(1912)에 쓰여질 수 있고, 갱신된 데이터 블록 B18'은 건강한 스토리지 장치(1902)에 쓰여질 수 있다.
도 19a 및 도19b에 도시된 실시 예들에서, 결함 있는 스토리지 장치(1904)의 정보를 읽는 능력의 부재는 I/O 동작들, 레이턴시, 데이터 전송의 전력 소비, 및/또는 패리티 계산 등을 증가시킬 수 있고, 또한 예컨대 다른 I/O 동작들에 의해 사용되는 I/O 대역폭을 이용함으로써 시스템 처리량을 감소시킬 수 있다.
도 20 및 도 21은 쓰기 동작이 결함 있는 스토리지 장치에 대해 재구축되지 않을 수 있는 데이터 블록에서 수행될 수 있는 재구축 동작 동안 본 개시의 예시적인 실시 예들에 따른 결함 복원형 스토리지 장치를 갖는 RAID-5 스토리지 시스템에 의해 수행될 수 있는 쓰기 동작의 예시적인 실시 예들을 도시한다. 도 20 및 도 21에 도시된 스토리지 시스템들의 실시 예들은 본 개시의 예시적인 실시 예들에 따른 결함 있는 스토리지 장치들(2004, 2104)이 적어도 부분적인 읽기 성능을 갖는 결함 복원 모드에서 동작하는 스토리지 장치로 구현될 수 있는 도 16에 도시된 실시 예의 구성들과 유사한 구성들을 포함할 수 있다. 도 20 및 도 21에 도시된 예시적인 실시 예들에서, 결함 있는 스토리지 장치들(2004, 2104)는 읽기 전용 모드에서 동작할 수 있다.
도 20은 본 개시의 예시적인 실시 예들에 따른, 쓰기 동작이 결함 있는 스토리지 장치(2004)상의 데이터 블록을 포함할 수 있는 실시 예를 도시하는 반면, 도 21은 본 개시의 예시적인 실시 예들에 따른, 쓰기 동작이 결함 있는 스토리지 장치(2104)상의 패리티 블록을 포함할 수 있는 실시 예를 도시한다.
도 20에 도시된 쓰기 동작에서, 갱신된 데이터 블록 B36'은 예비 스토리지 장치(2012)에 쓰여질 수 있다. 이전 데이터 블록 B36은 여전히 결함 있는 스토리지 장치(2004)로부터 읽혀질 수 있기 때문에, 갱신된 패리티 블록 P'(0,2,2)는 건강한 스토리지 장치(2006)로부터 읽혀질 수 있는 이전 패리티 블록 P(0,2,2), 및 갱신된 데이터 블록 B36'을 이전 데이터 블록 B36과 조합함으로써 패리티 로직(2014)에 의해 계산될 수 있다. 갱신된 패리티 블록 P'(0,2,2)는 건강한 스토리지 장치(2006)에 쓰여질 수 있다. 그러므로, 도 20에 도시된 실시 예는 추가적인 읽기와 도 19a에 도시된 실시 예에서의 데이터 블록들B32, B40, 및 B44의 처리를 회피할 수 있다.
도 21에 도시된 쓰기 동작에 있어서, 갱신된 데이터 블록 B18'은 건강한 스토리지 장치(2102)에 쓰여질 수 있다. 이전 패리티 블록 P(2,1,1)이 여전히 결함 있는 스토리지 장치(2104)로부터 읽혀질 수 있기 때문에, 갱신된 패리티 블록 P'(2,1,1)은 건강한 스토리지 장치(2102)로부터 읽혀질 수 있는 이전 데이터 블록 B18을 이전 패리티 블록 P(211) 및 갱신된 데이터 블록 B18'과 조합함으로써 패리티 로직(2114)에 의해 계산될 수 있다. 갱신된 패리티 블록 P'(2,1,1)은 예비 스토리지 장치(2112)에 쓰여질 수 있다. 그러므로, 도 21에 도시된 실시 예는 추가적인 읽기와 도 19b 에 도시된 실시 예에서의 데이터 블록들 B22, B26, 및B30의 처리를 회피할 수 있다.
구현 세부 사항에 따라, 도 20 및 도 21에 도시된 실시 예들은 I/O 동작들, 레이턴시, 데이터 전송의 전력 소비, 패리티 계산, 및/또는 동기화 등을 감소시킬 수 있고, 또한, 예컨대, 다른 스토리지 장치로부터 데이터 및/또는 패리티 블록들을 읽어서 결함 있는 스토리지 장치들(2004 및 2104)로부터 데이터를 재구축하는데 사용될 수 있는 I/O 대역폭을 해제함으로써, 시스템 처리량을 증가시킬 수 있다.
몇몇 실시 예들에 있어서, 그리고 구현 세부 사항에 따라서, 도 20 및 도21에 도시된 실시 예들에서 사용된 스토리지 장치들의 수는 오버헤드(overhead)에 영향 받지 않을 수 있고, 이는 데이터 블록들 및/또는 패리티 블록들이 여전히 결함 있는 스토리지 장치로부터 읽혀질 수 있기 때문이다. 반면, 도 11, 19a, 및 19b에 도시된 실시 예들에 있어서, 오버헤드와, 그에 따른 실행 비용은 스토리지 장치들의 수가 증가함에 따라 증가할 수 있다.
도 22는 본 개시의 예시적인 실시 예들에 따른 스토리지 어레이를 동작하기 위한 방법의 실시 예를 도시한다. 해당 방법은 단계 2202에서 시작할 수 있다. 단계 2204에서, 해당 방법은 리던던트 어레이로서 제1 스토리지 장치와 제2 스토리지 장치를 동작시킬 수 있다. 단계 2206에서, 해당 방법은 제1 스토리지 장치의 결함 상태에 기반하여 적어도 부분적인 읽기 성능을 갖는 결함 복원 모드에서 제1 스토리지 장치를 동작시킬 수 있다. 단계 2208에서, 해당 방법은 제1 스토리지 장치의 결함 상태에 기반하여 예비 스토리지 장치 상의 제1 스토리지 장치로부터 정보를 재구축할 수 있다. 해당 방법은 단계 2210에서 종료할 수 있다.
본 명세서에서 설명된 다른 모든 실시 예들과 더불어, 도 22에 도시된 실시 예와 관련하여 설명된 동작들 및/또는 구성들은 예시적인 동작들 및/또는 구성들이다. 몇몇 실시 예들에 있어서, 일부 동작들 및/또는 구성들은 생략되거나, 및/또는 다른 동작들 및/또는 구성들이 포함될 수 있다. 또한, 몇몇 실시 예들에 있어서, 동작들 및/또는 구성들의 시간적 및/또는 공간적 순서는 변경될 수 있다. 일부 구성들은 개별 구성들로 도시될 수 있지만, 몇몇 실시 예들에 있어서, 분리되어 도시된 일부 구성들은 단일 구성으로 합쳐질 수 있거나, 및/또는 단일 구성으로 도시된 일부 구성들은 복수의 구성들로 구현될 수 있다. .
몇몇 실시 예들에 있어서, 예를 들어, LBA 공간 타입들은 결함 복원 모드의 일부 실시 예들을 구현하는데 사용될 수 있다. 도 23은 본 개시의 예시적인 실시 예들에 따른 결함 복원 모드의 일부 예시적인 실시 예들과 스토리지 장치에 의해 구현될 수 있는 관련 LBA 공간 타입들에 대한 표를 도시한다. 도 23에 도시된 표의 Mode 열은 결함 복원 모드 번호 및 API(application programming interface)를 통해 스토리지 장치의 하나 이상의 기능들이 본 개시의 예시적인 실시 예들에 따라 액세스될 수 있는 API에서의 모드를 식별하는 데 사용될 수 있는 명칭을 포함할 수 있다. 도 23에 도시된 표에서 P, UP, RO, VRO, IA로 표시된 열은 각각 대응하는 모드에서 사용될 수 있는 P(performing), UP(underperforming), RO(read-only), VRO(volatile read-only), 및 IA(inaccessible) LBA 공간의 양을 나타낸다.
몇몇 실시 예들에 있어서, 예를 들어, 도 23에 도시된 모드는 API를 통해 호스트에 의해 호출될 수 있다. 몇몇 실시 예들에 있어서, 호스트는 후술될 get feature 명령을 사용하여 스토리지 장치를 쿼리(query)할 수 있다. 몇몇 구현들에 있어서, 별표(*)로 식별되는 모드들은 호스트에 get feature 명령에 대한 응답으로 모드에 의해 사용되는 각각의LBA 공간 타입에 대한 세부 정보를 제공할 수 있다. 몇몇 구현들에 있어서, 다른 명령에 의해 사용되는 LBA 공간에 대한 정보는 암시적일 수 있다. 예를 들어, 전원 순환 모드(Mode 1)에서, 모든 메모리는 P 타입일 수 있다. 그러나, 몇몇 실시 예들에 있어서, LBA 공간 타입의 다른 조합들 및/또는 이들의 일부가 사용될 수 있다.
몇몇 실시 예들에 있어서, 스토리지 장치는 다음의 결함 복원 모드들의 임의의 번호를 구현할 수 있다. 예를 들어, 장치 제조자는 해당 결함 복원 모드들과 다른 제품들의 다른 결함 복원 모드들의 다른 조합을 구현할 수 있다.
전원 순환 모드(Mode 1)은 스토리지 장치의 전원 순환에 기반한 자가 치유를 포함할 수 있다. 예를 들어, 스토리지 장치는 SRAM 또는 DRAM과 같은 메모리의 하나 이상의 플립된 비트들에 기반한 결함 상태를 경험할 수 있다. 예를 들어, 플립된 비트는 메모리 셀을 방해할 수 있는 안테나 또는 해수면의 높은 상승에 의한 에이징(aging), 열, 및/또는 안테나 또는 방사선에 의해 유발될 수 있다. 결함 복원 전원 순환 모드에 있는 스토리지 장치는 자가 치유 성능을 가질 수 있고, 이에 따른 스토리지 장치의 전원 순환은 현재 상태를 재설정하고 장애가 발생한 SSD를 정상 상태로 복구할 수 있다. 이 경우, 서브미션 큐(submission queue)에 있는 하나 이상의 실행중인 명령들은 손실될 수 있다. 스토리지 장치의 사용자 데이터가 유효한지 여부는 장치의 파티셔닝(partitioning) 및/또는 스토리지 컨트롤러의 서로 다른 회로가 재설정되는 정도 등과 같은 구현 세부 사항에 따라 달라질 수 있다. 몇몇 실시 예들에 있어서, 전원 순환 모드에서, 스토리지 장치의 전체 스토리지 공간(100%)은 예컨대, P 공간에서 정상적으로 동작할 수 있다.
재포맷 모드(Mode 2)는 스토리지 장치의 전체 또는 일부를 포맷하는 것에 기반한 자가 치유를 포함할 수 있다. 몇몇 실시 예들에 있어서, 스토리지 장치의 포맷은 현재 상태를 재설정하고 장애가 발생한 스토리지 장치를 정상 상태로 복구할 수 있다. 그러나, 예컨대 빠른 포맷, 전체 포맷, 및/또는 파티셔닝(partitioning) 세부사항과 같은 구현 세부 사항에 따라서, 디스크에 있는 모든 데이터가 손실될 수 있다. 몇몇 실시 예들에 있어서, 재포맷 모드에서, 스토리지 장치의 전체 스토리지 공간(100%)은 예컨대 P공간에서 정상적으로 동작할 수 있다.
감소된 성능 읽기 전용 모드(Mode 3)에서, 스토리지 장치의 스토리지 공간의 제1 부분(예컨대, X%)은 예컨대 P 공간으로 정상적으로 동작할 수 있고, 제2 부분(예컨대, (100-X)%)은 읽기 전용(RO) 스토리지 공간으로 동작할 수 있다. 그러므로, 스토리지 장치에서의 P 공간의 크기는 감소될 수 있고, 스토리지 장치는 해당 공간과 관련하여 정상적인 드라이브와 같이 행동할 수 있다. 그러나, 읽기 전용(RO) 타입의 공간은 쓰기가 불가능할 수 있다. 몇몇 실시 예들에 있어서, 스토리지 장치는 예를 들어, get feature 명령에 대한 응답으로 호스트로 P 및/또는 RO 공간에 대한 LBA 범위의 목록을 제공할 수 있다. 스토리지 장치가 IO 결정론을 지원하는 경우, LBA 범위는 집합을 나타낼 수 있다. 스토리지 장치가 ZNS(zoned namespaces)를 지원하는 경우, LBA 범위는 영역을 나타낼 수 있다. 몇몇 실시 예들에 있어서, 스토리지 장치는 get feature 명령에 대한 응답으로 집합 및/또는 ZNS에 대한 어드레스 범위 정보를 제공할 수 있다.
감소된 성능 모드(Mode 4)에서, 스토리지 장치의 스토리지 공간의 제1 부분(예컨대, X%)은 예컨대 P 공간으로 정상적으로 동작할 수 있고, 제2 부분(예컨대, (100-X)%)은 액세스 불가능(IA)할 수 있다. 그러므로, 스토리지 장치의 P 공간의 크기는 감소될 수 있고, 스토리지 장치는 해당 공간과 관련하여 정상적인 드라이브와 같이 행동할 수 있지만, IA 공간은 정상적인 입력 및/또는 출력들(IOs)로 이용 가능하지 않을 수 있다. 예를 들어, RTBB가 소진되면, 문제 있는 다이는 디스크 공간에서 제외될 수 있고, 따라서, 전체적인 디스크 용량은 감소될 수 있다. 스토리지 장치는 P 및/또는 IA 타입의 공간에 대한 LBA 범위의 목록을 제공할 수 있다. 스토리지 장치가 IO 결정론을 지원하는 경우, LBA 범위는 집합을 나타낼 수 있다. 스토리지 장치가 ZNS(zoned namespaces)를 지원하는 경우, LBA 범위는 영역을 나타낼 수 있다. 몇몇 실시 예들에 있어서, 스토리지 장치는 get feature 명령에 대한 응답으로, LBA 범위, 집합, 및/또는 영역 등에 대한 정보를 제공할 수 있다.
감소된 수행 능력 모드(Mode 5)에서, 스토리지 장치의 수행 능력의 하나 이상의 측면들이 감소될 수 있다. 예를 들어, 스토리지 장치는 정상 동작들을 수행할 수 있지만, 감소된 처리량 및/또는 레이턴시에서 수행할 수 있다. 몇몇 실시 예들에 있어서, 스토리지 장치는 주 전원 공급 장치의 손실 상황에서, 스토리지 장치가 쓰기 동작을 완료하는 것을 가능하게 하는 충분히 긴 기간의 시간 동안 스토리지 장치에 전원을 제공할 수 있는 하나 이상의 백업 커패시터를 포함할 수 있다. 하나 이상의 백업 커패시터의 장애가 발생하면, 스토리지 장치는 데이터가 매체에 쓰여질 때까지 쓰기 동작이 완료되었음을 호스트에 알리지 않을 수 있다. (이것은 동기화 쓰기 동작으로 지칭될 수 있다.) 이것은 IOPS(input and/or output operations per second)를 감소시킬 수 있거나, 및/또는 레이턴시를 증가시킬 수 있고, 따라서 스토리지 장치의 수행 능력을 감소시킬 수 있다. 그러므로, 몇몇 실시 예들에서, 감소된 수행 능력 모드는 100% UP공간에서 동작할 수 있다. 구현 세부 사항에 따르면, 일부 또는 모든 유저 데이터는 유효하게 남을 수 있다. 몇몇 실시 예들에 있어서, 스토리지 장치는 결함 상태의 시스템 수준의 영향을 완화할 수 있는 방식으로 스토리지 장치에 쓰기 데이터를 전송하는 것에 대한 판단을 내릴 수 있도록 호스트에 예상 수행 능력 정보를 제공할 수 있다.
읽기 전용 모드(Mode 6)에서, 스토리지 장치는 읽기 동작들만을 허용할 수 있고, 외부 쓰기 동작들을 막을 수 있다. 구현 세부 사항에 따라서, 읽기 전용 공간의 데이터는 예컨대, 보존 기간 이후에 유효하게 남을 수 있다. 읽기 전용 모드는 100% RO 공간에서 동작할 수 있다.
부분적인 읽기 전용 모드(Mode 7)에서, 스토리지 장치의 스토리지 공간의 제1 부분(X%)는 RO 공간으로 동작할 수 있고, 제2 부분((100-X)%)은 IA 공간일 수 있다. 그러므로, 스토리지 장치는 읽기 동작들만을 허용할 수 있고, 외부 쓰기 동작들은 스토리지 공간의 제1 부분에서 금지될 수 있다. 구현 세부 사항에 따라서, 읽기 전용 공간의 데이터는 예컨대 보존 기간 이후에도 여전히 유효할 수 있다. 스토리지 장치는 RO 및/또는 IA 유형의 공간에 대한 LBA 범위의 목록을 제공할 수 있다. 스토리지 장치가 IO 결정론을 지원하는 경우, LBA 범위는 집합을 나타낼 수 있다. 스토리지 장치가 ZNS(zoned namespaces)를 지원하는 경우, LBA 범위는 영역을 나타낼 수 있다. 몇몇 실시 예들에 있어서, 스토리지 장치는 get feature 명령에 대한 응답으로, LBA 범위, 집합, 및/또는 영역 등에 대한 정보를 제공할 수 있다.
임시의 읽기 전용 모드(Mode 8)에서, 데이터는 스토리지 장치의 스토리지 공간으로부터 읽혀질 수 있고, 이것은 100% VRO 공간에서 동작할 수 있다. 그러나, 외부 쓰기는 금지될 수 있다. 이 공간의 데이터는 일시적으로 유효할 수 있지만, 보존 기간 이후에 유효하지 않게 될 수 있다.
임시의 부분적인 읽기 전용 모드(Mode 9)에서, 데이터는 스토리지 장치의 스토리지 공간의 제1 부분(예컨대, X%)로부터 읽혀질 수 있고, 이것은 VRO 공간으로 동작할 수 있으나, 외부 쓰기는 금지될 수 있다. 제2 부분(예컨대, (100-X)%)은 IA 공간일 수 있다. 제1 부분의 데이터는 일시적으로 유효할 수 있지만, 보존 기간 이후에 유효하지 않게 될 수 있다. 스토리지 장치가 IO 결정론을 지원하는 경우, LBA 범위는 집합을 나타낼 수 있다. 스토리지 장치가 ZNS(zoned namespaces)를 지원하는 경우, LBA 범위는 영역을 나타낼 수 있다. 몇몇 실시 예들에 있어서, 스토리지 장치는 get feature 명령에 대한 응답으로, LBA 범위, 집합, 및/또는 영역 등에 대한 정보를 제공할 수 있다.
취약 모드(Mode 10)에서, 스토리지 장치는 I/O 동작들에 대해 이용 가능하지 않을 수 있다. 다만, 스토리지 장치는 호스트로부터 명령들을 수신하고 에러들을 반환하는 것을 계속할 수 있다.
정상 모드(Mode 11)에서, 스토리지 장치는 정상적으로 동작할 수 있다.
상기 개시된 실시 예들은 다양한 구현 세부 사항의 문맥에서 설명되었지만, 본 개시의 원리들은 이것들 내지는 다른 구체적인 세부 사항들에 제한되지 않는다. 예를 들어, 일부 기능은 특정 구성들에 의해 구현되는 것으로 설명되었지만, 다른 실시 예들에 있어서, 해당 기능은 다른 위치에서, 그리고 다양한 사용자 인터페이스를 가지면서 다른 시스템과 구성으로 분리될 수 있다. 특정 실시 예들은 구체적인 과정, 동작 등을 가지는 것으로 설명되었지만, 이러한 용어들은 구체적인 단일 과정, 단계 등이 복수의 과정들, 동작들로 구현되거나, 복수의 과정들, 동작들 등은 단일 과정, 단계 등에 통합될 수 있는 실시 예들을 포함할 수 있다. 구성 또는 요소에 대한 참조는 구성 또는 요소의 일부만 참조할 수 있다. 예를 들어, 집적 회로에 대한 참조는 집적 회로의 모든 또는 일부만을 참조할 수 있고, 블록에 대한 참조는 전체 블록 또는 하나 이상의 서브 블록을 참조할 수 있다. 본 개시 내용 및 청구범위에서 제1, 제2과 같은 용어들의 사용은 그들이 수정하는 것을 구별하기 위한 목적일 뿐이고, 문맥에서 달리 명백하게 하지 않는 한 어떠한 공간적 또는 시간적 순서도 나타내지 않을 수 있다. 몇몇 실시 예들에서, 기반한다는 것은 적어도 부분적으로 기반한다는 것을 지칭할 수 있다. 몇몇 실시 예들에 있어서, 불가능하다는 것은 적어도 부분적으로 불가능하다는 것을 지칭할 수 있다. 제1 요소에 대한 참조는 제2 요소의 존재를 의미하지 않을 수 있다. 섹션 제목과 같은 다양한 조직적인 도구들 등은 편의를 위해 제공될 수 있지만, 본 개시의 원리들과 이러한 도구들에 따라 배열된 주제는 이러한 조직적인 도구들에 의해 정의되거나 제한되지 않는다.
상술한 다양한 세부 사항 및 실시 예들은 본 특허 개시 내용에서의 발명적 원리들에 따른 추가적인 실시 예들을 생성하기 위해 결합될 수 있다. 본 특허 개시 내용의 발명적 원리들은 본 발명의 개념을 벗어나지 않고 배열 및 세부적으로 수정될 수 있으므로, 이러한 변경 및 수정은 후술하는 청구범위 내에 있는 것으로 간주된다.
105, 1105: 호스트
110, 1002, 1004, 1110: 스토리지 장치
115: 볼륨 매니저 120, 1120: 스토리지 컨트롤러
125, 1125: 스토리지 매체
405: 블록 수명 테이블 410: 맵핑 테이블
415: 결함 있는 사용 공간 420: 구조 공간
425: 정상 사용 공간 430: 사용된 LBA 공간
435: 사용되지 않은 LBA 공간 440: 펌웨어
1006: 예비 스토리지 장치
1008: 가상 스토리지 공간 1010: 맵핑 방식
1018: 데이터 블록 1012, 1014: 정보 블록
1115: 스토리지 어레이 컨트롤러 1116: 로직

Claims (20)

  1. 리던던트 어레이(redundant array)로 제1 스토리지 장치 및 제2 스토리지 장치를 동작시키는 단계;
    상기 제1 스토리지 장치의 결함 상태에 기반하여 적어도 부분적인 읽기 성능을 갖는 결함 복원 모드에서 상기 제1 스토리지 장치를 동작시키는 단계;
    상기 제1 스토리지 장치의 상기 결함 상태에 기반하여 예비 스토리지 장치 상에서 상기 제1 스토리지 장치로부터 정보를 재구축하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 제1 스토리지 장치의 상기 결함 상태에 기반하여 예비 스토리지 장치 상에서 상기 제1 스토리지 장치로부터 정보를 재구축하는 단계는, 상기 제1 스토리지 장치로부터 상기 예비 스토리지 장치로 정보를 복사하는 단계를 포함하는 방법.
  3. 제 2 항에 있어서,
    상기 제1 스토리지 장치로부터의 상기 정보는 데이터를 포함하는 방법.
  4. 제 2 항에 있어서,
    상기 제1 스토리지 장치로부터의 상기 정보는 패리티 정보를 포함하는 방법.
  5. 제 1 항에 있어서,
    상기 예비 스토리지 장치의 재구축 지점에 기반하여 상기 제1 스토리지 장치로부터 읽기 동작에 대한 제1 데이터를 읽는 단계를 더 포함하는 방법.
  6. 제 5 항에 있어서,
    상기 예비 스토리지 장치로 상기 제1 데이터를 쓰는 단계를 더 포함하는 방법.
  7. 제 1 항에 있어서,
    쓰기 동작에 대한 쓰기 데이터를 수신하는 단계; 그리고
    상기 예비 스토리지 장치의 재구축 지점에 기반하여 상기 제1 스토리지 장치로부터 쓰기 동작에 대한 제1 정보를 읽는 단계를 더 포함하는 방법.
  8. 제 7 항에 있어서,
    상기 제1 정보를 이용하여 상기 쓰기 동작에 대한 갱신된 패리티 정보를 계산하는 단계를 더 포함하는 방법.
  9. 제 8 항에 있어서,
    상기 제1 정보는 데이터를 포함하고,
    상기 예비 스토리지 장치로 상기 쓰기 데이터를 쓰는 단계를 더 포함하는 방법.
  10. 제 8 항에 있어서,
    상기 제1 정보는 패리티 정보를 포함하고,
    상기 예비 스토리지 장치로 상기 갱신된 패리티 정보를 쓰는 단계를 더 포함하는 방법.
  11. 컨트롤러;
    제1 스토리지 장치;
    제2 스토리지 장치; 및
    예비 스토리지 장치를 포함하되,
    상기 제1 스토리지 장치는 상기 제1 스토리지 장치의 결함 상태에 기반하여 적어도 부분적인 읽기 성능을 갖는 결함 복원 모드에서 동작하는 것이 가능하고,
    상기 컨트롤러는:
    리던던트 어레이(redundant array)로 상기 제1 스토리지 장치 및 상기 제2 스토리지 장치를 동작시키고; 및
    상기 제1 스토리지 장치의 상기 결함 상태에 기반하여 상기 예비 스토리지 장치 상에서 상기 제1 스토리지 장치로부터의 정보를 재구축하도록 구성되는 시스템.
  12. 제 11 항에 있어서,
    상기 컨트롤러는 상기 제1 스토리지 장치로부터 상기 예비 스토리지 장치로 정보를 복사하도록 더 구성되는 시스템.
  13. 제 11 항에 있어서,
    상기 컨트롤러는 상기 예비 스토리지 장치의 재구축 지점에 기반하여 상기 제1 스토리지 장치로부터 읽기 동작에 대한 제1 데이터를 읽도록 더 구성되는 시스템.
  14. 제 13 항에 있어서,
    상기 컨트롤러는 상기 예비 스토리지 장치로 상기 제1 데이터를 쓰도록 더 구성되는 시스템.
  15. 제 11 항에 있어서,
    상기 컨트롤러는:
    쓰기 동작에 대한 쓰기 데이터를 수신하고;
    상기 예비 스토리지 장치의 재구축 지점에 기반하여 상기 제1 스토리지 장치로부터 상기 쓰기 동작에 대한 제1 정보를 읽고; 및
    상기 제1 정보를 사용하여 상기 쓰기 동작에 대한 갱신된 패리티 정보를 계산하도록 더 구성되는 시스템.
  16. 제 15 항에 있어서,
    상기 제1 정보는 데이터를 포함하고,
    상기 컨트롤러는 상기 예비 스토리지 장치로 쓰기 데이터를 쓰도록 더 구성되는 시스템.
  17. 제 15 항에 있어서,
    상기 제1 정보는 패리티 정보를 포함하고,
    상기 컨트롤러는 상기 예비 스토리지 장치로 갱신된 패리티 정보를 쓰도록 더 구성되는 시스템.
  18. 로직을 포함하되,
    상기 로직은:
    제1 스토리지 장치, 제2 스토리지 장치, 및 제3 스토리지 장치를 패리티가 있는 RAID(redundant array of independent storage device)로 동작하고; 및
    상기 제1 스토리지 장치로부터 예비 스토리지 장치로 정보를 복사하여 상기 제1 스토리지 장치의 결함 상태에 기반하여 상기 제1 스토리지 장치로부터 정보를 재구축하도록 구성되고,
    상기 제1 스토리지 장치는 상기 제1 스토리지 장치의 상기 결함 상태에 기반하여 적어도 부분적인 읽기 성능을 갖는 결함 복원 모드에서 동작하도록 구성되는 스토리지 어레이 컨트롤러.
  19. 제 18 항에 있어서,
    상기 로직은 상기 예비 스토리지 장치의 재구축 지점에 기반하여 상기 제1 스토리지 장치로부터 읽기 동작에 대해 데이터를 읽도록 더 구성되는 스토리지 어레이 컨트롤러.
  20. 제 18 항에 있어서,
    상기 로직은:
    쓰기 동작에 대한 쓰기 데이터를 수신하고;
    상기 예비 스토리지 장치의 재구축 지점에 기반하여 상기 제1 스토리지 장치로부터 쓰기 동작에 대한 제1 정보를 읽고; 및
    제1 정보를 이용하여 상기 쓰기 동작에 대한 갱신된 패리티 정보를 계산하는 스토리지 어레이 컨트롤러.
KR1020210060561A 2020-05-11 2021-05-11 예비 스토리지 장치와 결함 복원형 스토리지 장치를 사용한 데이터 복구를 위한 시스템, 방법, 및 장치 KR20210137921A (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
US202163137131P 2021-01-13 2021-01-13
US63/137,131 2021-01-13
US17/226,059 US20210349780A1 (en) 2020-05-11 2021-04-08 Systems, methods, and devices for data recovery with spare storage device and fault resilient storage device
US17/226,059 2021-04-08

Publications (1)

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

Family

ID=78412683

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210060561A KR20210137921A (ko) 2020-05-11 2021-05-11 예비 스토리지 장치와 결함 복원형 스토리지 장치를 사용한 데이터 복구를 위한 시스템, 방법, 및 장치

Country Status (4)

Country Link
US (1) US20210349780A1 (ko)
KR (1) KR20210137921A (ko)
CN (1) CN113641529A (ko)
TW (1) TW202211024A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024076625A1 (en) * 2022-10-04 2024-04-11 Scality, S.A. Erasure coding implementation with reduced parity calculation overhead

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1579331A4 (en) * 2002-10-07 2007-05-23 Commvault Systems Inc SYSTEM AND METHOD FOR MANAGING SAVED DATA
US7574623B1 (en) * 2005-04-29 2009-08-11 Network Appliance, Inc. Method and system for rapidly recovering data from a “sick” disk in a RAID disk group
JP2007233903A (ja) * 2006-03-03 2007-09-13 Hitachi Ltd 記憶制御装置及び記憶制御装置のデータ回復方法
US8082390B1 (en) * 2007-06-20 2011-12-20 Emc Corporation Techniques for representing and storing RAID group consistency information
JP5489434B2 (ja) * 2008-08-25 2014-05-14 株式会社日立製作所 フラッシュメモリ搭載ストレージ装置
US8103825B2 (en) * 2008-09-30 2012-01-24 Netapp, Inc. System and method for providing performance-enhanced rebuild of a solid-state drive (SSD) in a solid-state drive hard disk drive (SSD HDD) redundant array of inexpensive disks 1 (RAID 1) pair
US8812901B2 (en) * 2011-09-23 2014-08-19 Lsi Corporation Methods and apparatus for marking writes on a write-protected failed device to avoid reading stale data in a RAID storage system
US8843806B2 (en) * 2012-01-19 2014-09-23 International Business Machines Corporation Dynamic graduated memory device protection in redundant array of independent memory (RAIM) systems
US8924775B1 (en) * 2012-09-25 2014-12-30 Western Digital Technologies, Inc. Methods, devices and systems for tracking and relocating intermittently defective disk sectors to prevent indefinite recycling thereof
JP5954081B2 (ja) * 2012-09-26 2016-07-20 富士通株式会社 ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
US10725865B2 (en) * 2015-02-25 2020-07-28 Hitachi Ltd. Storage unit and storage device
US10013325B1 (en) * 2015-09-29 2018-07-03 EMC IP Holding Company LLC Providing resiliency to a raid group of storage devices
US9798473B2 (en) * 2015-10-29 2017-10-24 OWC Holdings, Inc. Storage volume device and method for increasing write speed for data streams while providing data protection
KR20180045220A (ko) * 2016-10-25 2018-05-04 삼성전자주식회사 읽기 요청 횟수를 줄이는 데이터 복원 동작을 수행하는 데이터 스토리지 시스템
US20190050161A1 (en) * 2018-06-21 2019-02-14 Intel Corporation Data storage controller
US11416298B1 (en) * 2018-07-20 2022-08-16 Pure Storage, Inc. Providing application-specific storage by a storage system
US11003559B2 (en) * 2019-03-26 2021-05-11 International Business Machines Corporation Underperforming drive handling in redundant arrays
CN112148204B (zh) * 2019-06-27 2024-02-02 伊姆西Ip控股有限责任公司 用于管理独立冗余盘阵列的方法、设备和介质
US20210349782A1 (en) * 2020-05-11 2021-11-11 Samsung Electronics Co., Ltd. Systems, methods, and devices for fault resilient storage
US11301162B2 (en) * 2020-05-31 2022-04-12 EMC IP Holding Company LLC Balancing resiliency and performance by selective use of degraded writes and spare capacity in storage systems
US11803444B1 (en) * 2022-06-15 2023-10-31 Micron Technology, Inc. Cooperative memory subsystem data recovery

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024076625A1 (en) * 2022-10-04 2024-04-11 Scality, S.A. Erasure coding implementation with reduced parity calculation overhead

Also Published As

Publication number Publication date
US20210349780A1 (en) 2021-11-11
CN113641529A (zh) 2021-11-12
TW202211024A (zh) 2022-03-16

Similar Documents

Publication Publication Date Title
CN109726033B (zh) 提供raid数据保护的方法、数据存储系统和计算机可读介质
US9378093B2 (en) Controlling data storage in an array of storage devices
US8560772B1 (en) System and method for data migration between high-performance computing architectures and data storage devices
US8930745B2 (en) Storage subsystem and data management method of storage subsystem
US9026845B2 (en) System and method for failure protection in a storage array
US8762771B2 (en) Method for completing write operations to a RAID drive pool with an abnormally slow drive in a timely fashion
US10579540B2 (en) Raid data migration through stripe swapping
US20220291996A1 (en) Systems, methods, and devices for fault resilient storage
US20230244570A1 (en) Fault resilient storage device
US20210349781A1 (en) Systems, methods, and devices for data recovery using parity space as recovery space
KR20210137921A (ko) 예비 스토리지 장치와 결함 복원형 스토리지 장치를 사용한 데이터 복구를 위한 시스템, 방법, 및 장치
Ali et al. Developed RAID DP with combined storage media

Legal Events

Date Code Title Description
A201 Request for examination