KR20210138502A - 오류 복구 스토리지를 위한 시스템, 방법 및 장치 - Google Patents

오류 복구 스토리지를 위한 시스템, 방법 및 장치 Download PDF

Info

Publication number
KR20210138502A
KR20210138502A KR1020210060605A KR20210060605A KR20210138502A KR 20210138502 A KR20210138502 A KR 20210138502A KR 1020210060605 A KR1020210060605 A KR 1020210060605A KR 20210060605 A KR20210060605 A KR 20210060605A KR 20210138502 A KR20210138502 A KR 20210138502A
Authority
KR
South Korea
Prior art keywords
storage device
mode
storage
read
space
Prior art date
Application number
KR1020210060605A
Other languages
English (en)
Inventor
기양석
류성욱
알랑 트란
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20210138502A publication Critical patent/KR20210138502A/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/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/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/1428Reconfiguring to eliminate the error with loss of hardware functionality
    • 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
    • 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/0706Error 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 the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error 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 the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/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/1084Degraded mode, e.g. caused by single or multiple storage removals or disk failures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • 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/1629Error detection by comparing the output of redundant processing systems
    • G06F11/165Error detection by comparing the output of redundant processing systems with continued operation after detection of the error
    • 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/0608Saving storage space on storage systems
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • 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/0629Configuration or reconfiguration of storage systems
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/85Active fault masking without idle spares

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)
  • Retry When Errors Occur (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 개시는 스토리지 장치의 오류 상태를 판별하는 단계, 스토리지 장치의 오류 상태에 기초하여, 오류 복구 모드를 선택하는 단계, 선택된 오류 복구 모드로 스토리지 장치를 작동하는 단계를 포함하는, 스토리지 장치의 동작 방법에 관한 것이다. 선택된 오류 복구 모드는 전력 순환 모드, 재포맷 모드, 용량 감소된 읽기 전용 모드, 용량 감소된 모드, 성능 감소된 모드, 읽기 전용 모드, 부분적 읽기 전용 모드, 임시 읽기 전용 모드, 임시 부분적 읽기 전용 모드, 또는 취약 모드 중 하나를 포함할 수 있다. 스토리지 장치는 호스트로부터 수신된 네임스페이스 용량 관리 명령을 수행하도록 구현될 수 있다. 네임스페이스 용량 관리 명령은 크기 재조정 서브 명령 및/또는 0-크기 네임스페이스 서브 명령을 포함할 수 있다. 스토리지 장치는 호스트로 선택된 오류 복구 모드를 보고할 수 있다.

Description

오류 복구 스토리지를 위한 시스템, 방법 및 장치 {SYSTEM, METHOD, AND DEVICE FOR FAULT RESILIENT STORAGE}
본 개시는 일반적으로 스토리지에 관한 것으로, 더 상세하게는 오류 복구 스토리지를 위한 시스템, 방법 및 장치에 관한 것이다.
스토리지 장치는, 스토리지 시스템에서 동작하는 스토리지 장치의 성능에 영향을 미칠 수 있는 오류 상태를 겪을 수 있다.
발명의 배경이 되는 기술에 개시된 정보는 발명의 배경에 대한 이해를 높이기 위한 것이므로, 선행기술에 대한 정보를 포함하지 않을 수 있다.
본 개시는 상술한 기술적 과제를 해결하기 위한 것이다. 본 개시는 스토리지 장치의 오류를 복구하는, 오류 복구 스토리지를 위한 시스템, 방법 및 장치를 제공할 수 있다.
본 개시는 스토리지 장치의 오류 상태를 판별하는 단계, 상기 스토리지 장치의 상기 오류 상태에 기초하여, 오류 복구 모드를 선택하는 단계, 및 상기 선택된 오류 복구 모드로 상기 스토리지 장치를 작동하는 단계를 포함할 수 있는 스토리지 장치의 동작 방법에 관한 것이다. 상기 선택된 오류 복구 모드는 전력 순환 모드를 포함할 수 있다. 상기 선택된 오류 복구 모드는 재포맷 모드를 포함할 수 있다. 상기 선택된 오류 복구 모드는 용량 감소된 읽기 전용 모드를 포함할 수 있다. 상기 선택된 오류 복구 모드는 용량 감소된 모드를 포함할 수 있다. 상기 선택된 오류 복구 모드는 성능 감소된 모드를 포함할 수 있다. 상기 선택된 오류 복구 모드는 읽기 전용 모드를 포함할 수 있다. 상기 선택된 오류 복구 모드는 부분적 읽기 전용 모드를 포함할 수 있다. 상기 선택된 오류 복구 모드는 임시 읽기 전용 모드를 포함할 수 있다. 상기 선택된 오류 복구 모드는 임시 부분적 읽기 전용 모드를 포함할 수 있다. 상기 선택된 오류 복구 모드는 취약 모드를 포함할 수 있다. 상기 선택된 오류 복구 모드는 일반 모드를 포함할 수 있다. 상기 스토리지 장치는, 호스트로부터 수신된 명령을 수행하도록 구현될 수 있다. 상기 명령은 네임스페이스 용량 관리 명령을 포함할 수 있다. 상기 네임스페이스 용량 관리 명령은 크기 재조정 서브 명령을 포함할 수 있다. 상기 네임스페이스 용량 관리 명령은 0-크기 네임스페이스 서브명령을 포함할 수 있다.
스토리지 장치는 스토리지 매체, 및 스토리지 컨트롤러를 포함할 수 있고, 상기 스토리지 컨트롤러는 상기 스토리지 장치의 오류 상태를 판별하고, 상기 스토리지 장치의 상기 오류 상태에 기초하여, 오류 복구 모드를 선택하고, 그리고 상기 선택된 오류 복구 모드로 상기 스토리지 장치를 작동하도록 구현될 수 있다. 상기 선택된 오류 복구 모드는 전력 순환 모드, 재포맷 모드, 용량 감소된 읽기 전용 모드, 용량 감소된 모드, 성능 감소된 모드, 읽기 전용 모드, 부분적 읽기 전용 모드, 임시 읽기 전용 모드, 임시 부분적 읽기 전용 모드, 또는 취약 모드 중 하나를 포함할 수 있다. 상기 스토리지 장치는 호스트로부터 수신된 네임스페이스 용량 관리 명령을 수행할 수 있다.
본 개시에 따른 시스템은 호스트, 및 상기 호스트와 연결된 적어도 하나의 스토리지 장치를 포함할 수 있고, 상기 스토리지 장치는, 상기 스토리지 장치의 오류 상태를 판별하고, 상기 스토리지 장치의 상기 오류 상태에 기초하여 오류 복구 모드를 선택하고, 상기 선택된 오류 복구 모드를 작동하고, 그리고 상기 호스트로 상기 선택된 오류 복구 모드를 보고하도록 구현될 수 있다.
스토리지 어레이의 동작 방법은 제 1 오류 복구 스토리지 장치의 제 1 오류 복구 동작 모드를 결정하는 단계, 스토리지 어레이의 제 2 오류 복구 스토리지 장치의 제 2 오류 복구 동작 모드를 결정하는 단계, 스토리지 어레이의 하나 이상의 추가적인 오류 복구 스토리지 장치들의 하나 이상의 복구 공간들을 할당하는 단계, 제 1 오류 복구 스토리지 장치로부터 하나 이상의 복구 공간들로 사용자 데이터를 매핑하는 단계, 및 제 2 오류 복구 스토리지 장치로부터 하나 이상의 복구 공간들로 사용자 데이터를 매핑하는 단계를 포함할 수 있다. 스토리지 어레이의 동작 방법은 하나 이상의 추가적인 오류 복구 스토리지 장치들의 하나 이상의 장치 식별자(ID; identifier)를 제 1 오류 복구 스토리지 장치의 장치 ID로 재할당하는 단계를 포함할 수 있다. 적어도 하나의 추가적인 오류 복구 스토리지 장치들의 하나 이상의 장치 식별자(ID; identifier)는, 현재의 영향을 받지 않은 장치 ID 및 현재의 오류 장치 ID에 기초하여 재할당 될 수 있다. 스토리지 어레이의 동작 방법은 제 1 오류 복구 스토리지 장치로부터 하나 이상의 추가적인 오류 복구 스토리지 장치들로, 하나 이상의 입출력들(IO)을 리다이렉팅(redirecting)하는 단계를 포함할 수 있다. 사용자 데이터는 데이터의 스트립을 포함할 수 있다. 데이터의 스트립은 사용자 데이터의 스트라이프 ID에 기초하여, 하나 이상의 추가적인 오류 복구 스토리지 장치들의 타깃 스토리지 장치들로 리다이렉트 될 수 있다. 제 1 오류 복구 스토리지 장치로부터 하나 이상의 복구 공간들로 사용자 데이터를 매핑하는 단계는, 제 1 매핑 테이블을 유지하는 단계를 포함할 수 있다. 제 2 오류 복구 스토리지 장치로부터 하나 이상의 복구 공간들로 사용자 데이터를 매핑하는 단계는, 제 2 매핑 테이블을 유지하는 단계를 포함할 수 있다. 하나 이상의 복구 공간들은 스토리지 장치 용량의 복구 공간 백분율을 가질 수 있다. 복구 공간 백분율은 스토리지 어레이에서 수용되는 오류 스토리지 장치들의 수를, 스토리지 어레이의 스토리지 장치들의 총 수량으로 나눈 값 보다 같거나 클 수 있다. 하나 이상의 복구 공간들은 정적으로 할당될 수 있다. 하나 이상의 복구 공간들은 동적으로 할당될 수 있다.
시스템은 제 1 오류 복구 스토리지 장치, 제 2 오류 복구 스토리지 장치, 하나 이상의 추가적인 오류 복구 스토리지 장치들, 및 볼륨 매니저를 포함하는 스토리지 어레이를 포함할 수 있다. 볼륨 매니저는 제 1 오류 복구 스토리지 장치의 제 1 오류 복구 모드를 결정하고, 제 2 오류 복구 스토리지 장치의 제 2 오류 복구 모드를 결정하고, 스토리지 어레이의 하나 이상의 추가적인 오류 복구 스토리지 장치들의 하나 이상의 복구 공간들을 할당하고, 제 1 오류 복구 스토리지 장치로부터 하나 이상의 복구 공간들로 사용자 데이터를 매핑하고, 그리고 제 2 오류 복구 스토리지 장치로부터 하나 이상의 복구 공간들로 사용자 데이터를 매핑하도록 구현될 수 있다. 볼륨 매니저는 하나 이상의 추가적인 오류 복구 스토리지 장치들의 적어도 하나의 장치 식별자(ID; identifier)를 제 1 오류 복구 스토리지 장치의 장치 ID로 재할당 하도록 더 구현될 수 있다. 볼륨 매니저는 제 1 오류 복구 스토리지 장치로부터 하나 이상의 추가적인 오류 복구 스토리지 장치들로, 하나 이상의 입출력들(IO)을 리다이렉트 하도록 더 구현될 수 있다. 사용자 데이터는 데이터의 스트립을 포함할 수 있고, 그리고 볼륨 매니저는 사용자 데이터의 스트라이프 ID에 기초하여, 하나 이상의 추가적인 오류 복구 스토리지 장치들의 타깃 스토리지 장치로, 데이터의 스트립을 리다이렉트하도록 더 구현될 수 있다. 하나 이상의 복구 공간들은 스토리지 장치 용량의 복구 공간 백분율을 가지고, 그리고 복구 공간 백분율은 스토리지 어레이에서 수용되는 오류 스토리지 장치들의 수를, 스토리지 어레이의 스토리지 장치들의 총 수량으로 나눈 값에 기초하여 결정될 수 있다.
장치는 스토리지 어레이에 대한 볼륨 매니저를 포함할 수 있고, 볼륨 매니저는 로직을 포함할 수 있다. 로직은 스토리지 어레이의 제 1 오류 복구 스토리지 장치의 제 1 오류 복구 동작 모드를 결정하고, 스토리지 어레이의 제 2 오류 복구 스토리지 장치의 제 2 오류 복구 동작 모드를 결정하고, 스토리지 어레이의 하나 이상의 추가적인 오류 복구 스토리지 장치들의 복구 공간들을 할당하고, 제 1 오류 복구 스토리지 장치로부터 하나 이상의 복구 공간들로 사용자 데이터를 매핑하고, 그리고 제 2 오류 복구 스토리지 장치로부터 하나 이상의 복구 공간들로 사용자 데이터를 매핑하도록 구현될 수 있다. 사용자 데이터는 데이터의 스트립을 포함할 수 있고, 그리고 데이터의 스트립은 사용자 데이터의 스트라이프 식별자(ID; identifier)에 기초하여, 하나 이상의 추가적인 오류 복구 스토리지 장치들의 타깃 스토리지 장치로 리다이렉트될 수 있다. 하나 이상의 복구 공간들은 스토리지 장치 용량의 복구 공간 백분율을 가지고, 그리고 복구 공간 백분율은 스토리지 어레이에서 수용되는 오류 스토리지 장치들의 수를, 스토리지 어레이의 스토리지 장치들의 총 수량으로 나눈 값에 기초하여 결정될 수 있다.
스토리지 어레이의 동작 방법은 스토리지 어레이의 제 1 오류 복구 스토리지 장치의 제 1 복구 공간을 할당하는 단계, 스토리지 어레이의 제 2 오류 복구 스토리지 장치의 제 2 복구 공간을 할당하는 단계, 스토리지 어레이의 제 3 오류 복구 스토리지 장치의 오류 복구 동작 모드를 결정하는 단계, 및 오류 복구 동작 모드에 기초하여 제 3 오류 복구 스토리지 장치로부터 제 1 복구 공간 및 제 2 복구 공간으로 사용자 데이터를 매핑하는 단계를 포함할 수 있다. 사용자 데이터의 제 1 블록은 제 1 복구 공간으로 매핑될 수 있고, 그리고 사용자 데이터의 제 2 블록은 제 2 복구 공간으로 매핑될 수 있다. 사용자 데이터는 데이터의 스트립을 포함할 수 있다. 데이터의 스트립의 제 1 부분은 제 1 복구 공간으로 매핑될 수 있고, 데이터 스트립의 제 1 부분은 데이터의 스트립의 크기 및 데이터 블록들의 크기에 기초한 데이터 블록들의 수를 포함할 수 있다. 데이터 블록들의 수는 스토리지 어레이의 총 스토리지 장치들의 수에 더 기초할 수 있다. 스토리지 어레이의 동작 방법은 제 3 오류 복구 스토리지 장치의 장치 ID로, 제 1 오류 복구 스토리지 장치의 장치 식별자(ID) 중 적어도 하나를 재할당하는 단계를 더 포함할 수 있다. 스토리지 어레이의 동작 방법은 제 3 오류 복구 스토리지 장치로부터, 제 1 복구 공간 및 제 2 복구 공간으로 하나 이상의 입출력들(IO)을 리다이렉팅하는 단계를 더 포함할 수 있다. 제 1 복구 공간은 제 1 오류 복구 스토리지 장치의 용량 및 스토리지 어레이의 스토리지 장치들의 총 수량에 기초한 용량을 가질 수 있다. 제 1 복구 공간은, 제 1 복구 공간의 크기 및 블록 크기에 기초한 스트립들의 용량을 가질 수 있다.
시스템은 제 1 오류 복구 스토리지 장치, 제 2 오류 복구 스토리지 장치, 제 3 오류 복구 스토리지 장치, 및 볼륨 매니저를 포함할 수 있다. 볼륨 매니저는 제 1 오류 복구 스토리지 장치의 제 1 복구 공간을 할당하고, 제 2 오류 복구 스토리지 장치의 제 2 복구 공간을 할당하고, 제 3 오류 복구 스토리지 장치의 오류 복구 동작 모드를 결정하고, 그리고 오류 복구 동작 모드를 결정하는 것에 기초하여, 제 3 오류 복구 스토리지 장치로부터 제 1 복구 공간 및 제 2 복구 공간으로 사용자 데이터를 매핑하도록 구현될 수 있다.
스토리지 어레이의 동작 방법은 스토리지 어레이의 제 1 오류 복구 스토리지 장치의 제 1 파라미터를 결정하는 단계, 스토리지 어레이의 제 2 오류 복구 스토리지 장치의 제 2 파라미터를 결정하는 단계, 제 1 파라미터 및 제 2 파라미터에 기초하여, 스토리지 어레이의 QoS(quality-of-service)를 결정하는 단계를 포함할 수 있다. 스토리지 어레이의 동작 방법은 QoS에 기초하여 제 1 파라미터를 조절하는 단계를 더 포함할 수 있다. 제 1 파라미터는 제 1 파라미터의 모니터링에 기초하여 자동으로 조절될 수 있다. 제 1 파라미터는 제 2 파라미터의 모니터링에 기초하여 자동으로 조절될 수 있다. 제 1 파라미터는 스토리지 어레이의 구성요소들을 설정하여 조절될 수 있다. 제 1 파라미터는 스토리지 어레이의 구성요소의 동작들 제어하여 조절될 수 있다. 제 1 파라미터는, 스토리지 어레이의 스토리지 장치들의 수, 제 1 오류 복구 스토리지 장치에 대한 사용자 데이터의 스트립의 데이터 블록의 수, 제 1 오류 복구 스토리지 장치로부터 제 2 오류 복구 스토리지 장치로 데이터를 리다이렉팅하는 것에 대한 쓰기 방법, 스토리지 어레이에 의해 지원되는 오류 스토리지 장치들의 수, 또는 제 1 오류 복구 스토리지 장치의 스토리지 용량 중 적어도 하나를 포함할 수 있다.
시스템은 제 1 오류 복구 스토리지 장치, 제 2 오류 복구 스토리지 장치, 및 볼륨 매니저를 포함할 수 있다. 볼륨 매니저는 제 1 오류 복구 스토리지 장치의 제 1 파라미터를 결정하고, 제 2 오류 복구 스토리지 장치의 제 2 파라미터를 결정하고, 그리고 제 1 파라미터 및 제 2 파라미터에 기초하여 스토리지 어레이의 QoS(quality-of-service)를 결정하도록 구현될 수 있다. 볼륨 매니저는 QoS에 기초하여 제 1 파라미터를 조정하도록 더 구현될 수 있다. 볼륨 매니저는 제 1 파라미터의 모니터링에 기초하여 제 1 파라미터를 자동으로 조절하도록 더 구현될 수 있다. 볼륨 매니저는 제 2 파라미터의 모니터링에 기초하여 제 1 파라미터를 자동으로 조절하도록 더 구현될 수 있다.
본 개시의 실시 예에 따르면, 오류 상태에 의한 시스템 수준의 영향을 감소시키는, 오류 복구 스토리지를 위한 시스템, 방법 및 장치가 제공된다.
도면들은 반드시 축척에 따라 그려지는 것은 아니고, 도면들 전체에 걸쳐 유사한 구성들 또는 기능들의 구성 요소들은 유사한 참조 번호들 또는 그 일부로 표현될 수 있다. 도면들은 본 개시에 설명된 다양한 실시 예들의 설명을 용이하게 하기 위한 것일 뿐이다. 도면들은 본 개시에 의해 개시된 교시들의 모든 측면을 설명하지 않고, 청구범위의 기술적 범위를 제한하지 않는다. 도면이 이해하기 힘들어지는 것을 방지하기 위해, 모든 구성 요소들, 연결들, 및 그와 유사한 것들이 드러나지 않을 수 있고, 모든 구성 요소들에 참조 번호들이 부여되지 않을 수 있다. 그러나 도면들로부터 구성 요소들의 배열 양식들은 쉽고 명백하게 드러날 수 있다. 발명의 내용과 함께 첨부 된 도면들은, 본 개시에 따른 예시적인 실시 예들을 보여주고, 그리고, 발명의 상세한 설명과 함께 본 개시의 원리들을 설명하는데 사용된다.
도 1은 본 개시의 실시 예들에 따른, 스토리지 시스템의 일 실시 예를 보여준다.
도 2a는 본 개시의 실시 예들에 따른 오류 복구 스토리지 장치의 일 실시 예에 의한 발생될 수 있는 몇몇 가능한 오류 상태들을 보여주는 표이다.
도 2b는 본 개시의 실시 예들에 따른 스토리지 장치에 의해 구현될 수 있는, 몇몇 오류 복구 모드들 및 관련된 공간 유형들의 실시 예들을 보여주는 표이다.
도 2c는 본 개시의 예시적인 실시 예들에 따른 스토리지 장치에 의해 구현될 수 있는, 몇몇 명령들 및 서브 명령들의 실시 예들을 보여주는 표이다.
도 2d는 본 개시의 실시 예들에 따른 스토리지 장치가 API를 통해 구현할 수 있는 명령들의 표이다.
도 3a는 본 개시의 실시 예들에 따른 오류 복구 모드에서의 동작 방법의 일 실시 예를 보여주는 흐름도이다.
도 3b는 본 개시의 실시 예들에 따른 스토리지 장치를 구동하는 방법의 일 실시 예를 보여주는 흐름도이다.
도 4a는 본 개시의 실시 예들에 따른 쓰기 동작을 수행하는 RAID-0 시스템의 개략적인 데이터 레이아웃 다이어그램을 보여준다.
도 4b는 본 개시의 실시 예들에 따른 읽기 동작을 수행하는 RAID-0 시스템의 개략적인 데이터 레이아웃 다이어그램을 보여준다.
도 4c는 본 개시의 실시 예들에 따른, 리매핑(remapping) 및 쓰기 동작을 수행하는 RAID-0 시스템의 개략적인 데이터 레이아웃 다이어그램을 보여준다.
도 5a는 본 개시의 실시 예들에 따른, RAID-0 시스템을 동작시키기 위한 방법의 흐름도를 보여준다.
도 5b는 본 개시의 실시 예들에 따른, RAID-0 스토리지 시스템을 동작시키기 위한 방법의 세부 사항을 보여주는 흐름도이다.
도 6은 본 개시의 실시 예들에 따른 RAID-0 시스템의 실시 예의 개략도를 보여준다.
도 7은 본 개시의 실시 예들에 따른, 데이터 블록 쓰기로 복구 공간 관리를 구현할 수 있는 RAID-0 시스템의 실시 예를 보여주는 개략도이다.
도 8은 본 개시의 실시 예들에 따른 스토리지 시스템의 QoS(quality-of service) 관리를 구현한 시스템의 실시 예를 보여준다.
도 9는 본 개시의 실시 예들에 따른 스토리지 어레이의 동작 방법의 실시 예를 보여준다.
도 10은 본 개시의 실시 예들에 따른 스토리지 어레이의 동작 방법의 다른 실시 예를 보여준다.
도 11은 본 개시의 실시 예들에 따른 스토리지 어레이의 추가적인 동작 방법의 실시 예를 보여준다.
개요
본 개시의 실시 예들에 따른 원리들의 일부는 스토리지 장치의 오류 발생시, 하나 이상의 오류 복구 모드들을 계속해서 동작할 수 있는 스토리지 장치들에 관한 것이다. 예를 들어, 스토리지 장치는, 스토리지 장치의 오류로부터 신속하게 및/또는 효율적으로 복구할 수 있도록 제한된 방식으로 계속해서 작동할 수 있다.
일부 실시 예들에서, 스토리지 장치는 이하의 FR(fault resilient) 모드들 중 임의의 수의 모드를 구현할 수 있다.
일부 실시 예들은 스토리지 장치의 전력 순환(전원을 턴-오프 하고 다시 턴-온; power cycling)에 기초한 자가 복구 기능을 포함할 수 있는, 전력 순환 모드를 구현할 수 있다.
일부 실시 예들은 스토리지 장치의 일부 또는 전부를 포맷하는 것에 기초한 자가 복구 기능을 포함하는 재포맷(reformat) 모드를 구현할 수 있다.
일부 실시 예들은 스토리지 장치의 스토리지 공간의 제 1 부분이 정상적으로 동작하고, 그리고 제 2 부분이 읽기 전용 스토리지 공간으로 동작할 수 있는, 용량 감소된 읽기 전용 모드를 구현할 수 있다.
일부 실시 예들은 스토리지 장치의 스토리지 공간의 제 1 부분이 정상적으로 동작할 수 있고, 그리고 제 2 부분이 입출력 동작들에 사용될 수 없는, 용량 감소된 모드를 구현할 수 있다.
일부 실시 예들은 스토리지 장치의 하나 이상의 성능 측면들이 감소되는 성능 감소 모드를 구현할 수 있다.
일부 실시 예들은 스토리지 장치로부터 데이터가 읽기 될 수 있으나, 스토리지 장치에 데이터가 쓰기 될 수 없는, 읽기 전용 모드를 구현할 수 있다.
일부 실시 예들은, 스토리지 장치의 스토리지 공간의 제 1 부분이 읽기 전용 스토리지 공간으로 동작할 수 있고, 그리고 제 2 부분이 정상적인 입출력 동작을 수행할 수 없는, 부분 읽기 전용 모드를 구현할 수 있다.
일부 실시 예들은 스토리지 장치의 스토리지 공간으로부터 데이터가 읽기 될 수 있지만, 스토리지 장치의 스토리지 공간에 데이터가 쓰기 될 수 없는, 일시적으로 유효할 수 있고 유효하지 않게 될 수 있는 임시 읽기 전용 모드를 구현할 수 있다.
일부 실시 예들은, 스토리지 장치의 스토리지 공간의 제 1 부분으로부터 데이터가 읽기 될 수 있으나, 스토리지 장치의 스토리지 공간의 제 1 부분에 데이터가 쓰기 될 수 없는, 일시적으로 유효할 수 있고 유효하지 않게 될 수 있는, 임시 부분 읽기 전용 모드를 구현할 수 있다. 이때 제 2 부분은 입출력 동작을 수행할 수 없다.
일부 실시 예들은 스토리지 장치가 입출력 동작에 사용될 수 없는 취약 모드를 구현할 수 있다.
일부 실시 예들은 스토리지 장치가 정상적으로 동작하는 일반 모드를 구현할 수 있다.
일부 실시 예들에서 스토리지 장치는, 스토리지 장치의 하나 이상의 기능들을 결정 및/또는 관리하기 위해 호스트에서 사용될 수 있는 하나 이상의 명령들을 구현할 수 있다. 예를 들어, 일부 실시 예들에서, 스토리지 장치는 크기 조정 및/또는 0-크기(zero-size) 서브 명령들을 포함할 수 있는 네임스페이스 용량 관리 명령을 구현할 수 있다.
이하에 개시된 원리들은 독립적인 유용성을 가지고 개별적으로 구현될 수 있고, 그리고 모든 실시 예가 모든 원리를 활용할 수 있는 것은 아니다. 그러나, 원리들은 또한 다양한 조합으로 구현될 수 있고, 그 중 일부는 시너지 효과로 개별적인 원리들의 이점들을 증폭시킬 수 있다.
스토리지 시스템
도 1은 본 개시의 실시 예들에 따른, 스토리지 시스템의 일 실시예를 보여준다. 도 1에 도시된 실시 예는 호스트(105) 및 하나 이상의 스토리지 장치들(110)을 포함할 수 있다. 하나 이상의 스토리지 장치들(110)의 일부 또는 전부는 호스트(105)에 직접 연결될 수 있고, 그리고 하나 이상의 스토리지 장치들(110)의 일부 또는 전부는 도 1에 도시된 바와 같이, 볼륨 매니저(115, volume manager)를 통해 호스트(105)에 연결될 수 있다. 각 스토리지 장치(110)는 스토리지 컨트롤러(120)(또는 컨트롤러 유닛) 및 스토리지 매체들(125)을 포함할 수 있다. 일부 실시 예들에서, 스토리지 장치(110)는 내부 오류 상태를 겪을 수 있고, 그리고 스토리지 장치(110)는 이하의 상세한 설명에서 설명되는 바와 같이, 오류 상태의 시스템 수준 영향을 완화하기 위해, 다양한 오류 회복 동작들을 나타낼 수 있다.
하나 이상의 스토리지 장치들(110)은 SSD(solid state drive), HDD(hard disk drive), 광학 드라이브(optical drive), 벌크 저항 변화를 포함한 교차 그리드 비휘발성 메모리와 같은 모든 유형의 영구 메모리를 기반으로 하는 드라이브, 및/또는 그와 유사한 것들 및/또는 그것들의 조합을 포함하는, 모든 유형의 스토리지 장치 및 관련 스토리지 매체로 구현될 수 있다. 각각의 스토리지 장치의 데이터는 블록, 키-값 구조들, 및/또는 이와 유사한 것, 및/또는 그것들의 조합으로 배열될 수 있다. 각 스토리지 장치(110)는 SATA(Small Computer System Interface), 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 chassis), 서버 랙(server rack), 데이터 룸(data room), 데이터 센터(data center), 엣지 데이터센터(edge data center), 모바일 엣지 데이터센터(mobile edge data center), 및/또는 그것들의 모든 조합, 및/또는 이와 유사한 것들과, 전체적으로 또는 부분적으로 구현되거나 및/또는 연결되는데 사용될 수 있다.
이하에서 개시되는 호스트(105), 볼륨 매니저(115), 스토리지 컨트롤러(120), 및/또는 모든 다른 구성요소들 모두는 조합 논리, 순차 논리, 하나 이상의 타이머들, 카운터들, 레지스터들, 상태 장치들, CPLD들(complex programmable logic device), FPGA들(field programmable gate array), ASIC들(application specific integrated circuits), CISC(complex instruction set computer) 프로세서들, 및/또는 RISC(reduced instruction set computer) 프로세서들 및/또는 그와 유사한 것들, DRAM(dynamic random access memory) 및/또는 SRAM(static random access memory)과 같은 휘발성 메모리들, 플래시 메모리와 같은 비휘발성 메모리들 및/또는 그와 유사한 것에 저장되는 실행 명령들, 그리고 GPU들(graphics processing unit), NPU들(neural processing unit), 및/또는 그와 유사한 것들을 포함할 수 있는, 하드웨어, 소프트웨어, 또는 그들의 모든 조합으로 구현될 수 있다.
본 발명의 원리들은 어떤 특정한 구현의 세부사항들에 한정되지 않지만, 일부 실시 예들의 설명을 위해, 각 스토리지 장치(110)는 스토리지 매체들(120)이 구현될 수 있는 SSD로 구현될 수 있고, 예를 들어, NAND 플래시 메모리, 및 각각의 스토리지 컨트롤러(120)는 FTL(flash translation layer), 스토리지 인터페이스, 및 이하에 개시된 오류 복구 기능들을 구현하는데 관련된 모든 기능을 포함하는 SSD 동작과 관련된 모든 기능이 구현될 수 있다. 스토리지 장치(110)의 가장 작은 소거 가능한 유닛은 “블록”으로 지칭될 수 있고, 스토리지 장치(110)의 가장 작은 쓰기 가능한 유닛은 “페이지”로 지칭될 수 있다.
스토리지 매체들(125)은 유지 기간(retention period)(스토리지 매체들(125)의 사용 기록에 의존할 수 있는, 그리고 스토리지 매체들(125)에 따라 달라질 수 있는)을 가질 수 있고, 유지 기간보다 오래 저장된 데이터(예를 들어, 유지 기간을 초과하는 기간 동안 저장된 데이터)는 신뢰할 수 없게 될 수 있고 만료되었다고 할 수 있다. 데이터는, 예를 들어, 블록 코드와 같은 에러 정정 코드를 사용하여, 스토리지 매체들(125)에 저장될 수 있다. 데이터가 스토리지 매체들(125)로부터 읽어질 경우, 코드 블록으로 지칭되는 많은 양의 로우 데이터(raw data)가, 스토리지 매체들(125)로부터 읽어질 수 있고, 디코딩(decoding)이 시도될 수 있다. 만약 이러한 시도가 실패하는 경우, 추가적으로 시도(예를 들어, 읽기 재시도)될 수 있다. 사용에 따라, 스토리지 매체들(125)의 일부분(예를 들어, 블록)은 유지 기간이 용인할 수 없을 정도로 짧아지는 지점까지 악화될 수 있고, 이 경우의 블록은 “불량 블록”으로 분류될 수 있다. 이러한 상황이 스토리지 매체들(125) 전체를 작동 불가능하게 만드는 것을 방지하기 위해, “불량 블록 관리 예비 공간”으로 지칭되는 예비 공간이 존재(예를 들어, 각 플래시 메모리 다이 또는 각 플래시 메모리에 포함됨)할 수 있고, 그리고 컨트롤러(120), 또는 플래시 메모리 다이(die) 또는 플래시 메모리 평면(plane) 내부의 다른 컨트롤러는 예비 공간에서 블록을 사용하기 시작하고 불량 블록을 사용하는 것을 중단할 수 있다.
도 1에 도시된 실시 예와 관련하여 설명된 동작들 및/또는 구성 요소들 뿐 아니라 이하에서 설명되는 다른 모든 실시 예들의 동작들 및/또는 구성 요소들은 예시적인 동작들 및/또는 구성 요소들이다. 일부 실시 예들에서, 일부 동작들 및/또는 구성 요소들은 생략될 수 있고, 다른 동작들 및/또는 구성 요소들이 포함될 수 있다. 또한 일부 실시 예들에서, 동작들 및/또는 구성 요소들의 시간적 및/또는 공간적 순서가 달라질 수 있다. 일부 구성요소들이 개별적인 구성요소들로 나타날 수 있으나, 일부 실시 예들에서, 일부 구성요소들은 단일한 구성 요소들로 통합될 수 있고, 일부 하나의 구성요소로 나타나는 구성요소가 복수의 구성 요소들로 구현될 수 있다.
오류 상태
도 2a는 본 개시의 실시 예들에 따른 오류 복구 스토리지 장치의 일 실시 예에 의한 발생될 수 있는 몇몇 가능한 오류 상태들을 보여주는 표이다. 각 오류 상태(또는 오류 조건)은 제1 열의 사례(case) 식별자(ID; identifier)로 라벨될 수 있다. 제2 열은 오류 상태인 스토리지의 동작 상태를 나타낼 수 있다. 표의 제3 열은 각 경우에 대해, 유효한 사용자 데이터를 사용할 수 있는지 여부를 나타낼 수 있다. 표의 제4 열은 예를 들어, 스토리지 매체들(125)의 재포맷(reformat)을 통해, 스토리지 디바이스(110)가 결국 완전한 기능으로 복구될 수 있는지 여부를 나타낼 수 있다.
제1 케이스는 스토리지 장치(110)가 더 이상 읽기 또는 쓰기 동작들을 수행할 수 없고, 그리고 전원을 껐다가 켜거나 스토리지 매체들을 재포맷(reformatting) 하더라도 복구되지 않을 수 있는 오류 상태를 포함할 수 있다. 스토리지 장치(110)이 이러한 방식으로 동작하는 상태는 예를 들어, 상이한 실패 메커니즘에 대응하는 각각의 서브-상태와 같은 다양한 서브-상태들을 포함할 수 있다. 이러한 상태 또는 오류 환경(스토리지 장치(110)이 더 이상 읽기 또는 쓰기 동작을 수행할 수 없고, 그리고 전원을 껐다가 켜거나 스토리지 매체들을 재포맷하더라도 복구되지 않을 수 있는)은 예를 들어, 컨트롤러의 펌웨어 일부가 손상되거나(컨트롤러가 안전 모드로 재시작되고, 손상된 명령들이 실행되지 않을 수 있는 경우) 또는 스토리지 장치(110)의 처리 회로(processing circuit)의 오류(예를 들어, 스토리지 매체들과의 상호 작용들을 관리하지만 호스트(105)와의 통신을 담당하지 않는 처리 회로의 장애)에 의해 발생될 수 있다. 이러한 유형의 오류 상태가 발생하면, 스토리지 장치(110)는 호스트(105)로부터의 읽기 또는 쓰기 명령에 대해, 오류 메시지와 함께 응답할 수 있다.
제2 케이스에는 (i) 스토리지 장치(110)가 더 이상 읽기 또는 쓰기 동작들을 수행할 수 없는 오류 상태, 그리고 (ii) 스토리지 장치(110)를 전력 순환(power cycling)(전원을 턴-오프하고 다시 턴-온), 스토리지 매체들(예를 들어, NVM(nonvolatile memory))을 재포맷하거나, 펌웨어를 다시 로드하거나, 및/또는 이와 유사한 방법들을 통해 복구될 수 있는 오류 상태를 포함할 수 있다. 이러한 오류 상태는 예를 들어, 스토리지 장치(110) 컨트롤러(120)의 프로그램 실행 오류(예를 들어, 컨트롤러(120)의 RAM(random-access memory)의 비트 플립의 결과로 범위를 벗어난 포인터, 또는 비트 플립의 결과로 잘못된 명령)에 의해 발생될 수 있다. 프로그램 실행 오류가, 컨트롤러(120)가 스토리지 매체들(125)에 잘못된 데이터를 쓰기하는 문제를 발생시키지 않은 경우(예를 들어, 컨트롤러가 스토리지 매체들에 가장 최근에 쓰기를 수행한 이후 프로그램 실행 오류가 발생된 경우), 스토리지 장치(110)를 정상 동작으로 복구하는 것은, 스토리지 장치를 전력 순환(power cycling)(전원을 턴-오프하고 다시 턴-온)하는 것으로 충분할 수 있다. 프로그램 실행 오류가, 컨트롤러(120) 스토리지 매체들(125)에 잘못된 데이터를 쓰기 하는 문제를 발생 시킨 경우, 스토리지 매체들(125) 재포맷, 및/또는 펌웨어 재로딩만으로 스토리지 장치(110)를 정상 동작으로 복구하기 충분할 수 있다.
제3 케이스는 스토리지 장치(110)을 읽기 전용 모드로 동작하여 완화될 수 있되, 스토리지 매체들(125)을 재포맷하더라도 전체 기능이 복구되지 않는 오류 상태를 포함할 수 있다. 이러한 오류의 예시들로 (i) 온도 센서 고장, 및 (ii) 스토리지 매체들(125)의 일부분이 읽기 전용 모드로 전환된 경우를 포함할 수 있다. 온도 센서 고장의 경우, 온도 센서 판독 값이 범위를 벗어남(예를 들어, 임계 온도를 초과한 경우)을 판단하여 감지될 수 있고, 이 경우 스토리지 장치(110)의 과열 위험은 읽기 동작들 보다 큰 전력을 소모하는 쓰기 동작들을 회피하여 감소될 수 있다. 스토리지 매체들(125) 일부의 읽기 전용 모드로의 전환은 예를 들어, 플래시 메모리 스토리지 매체들(125)의 경우 플래시 메모리 평면(plane) 또는 다이(die)가 런타임 불량 블록 관리(runtime bad block management)를 위한 불량 블록 관리 예비 공간을 소진하는 경우 발생할 수 있다. 예를 들어, 스토리지 장치(110)는 읽기 동작 수행을 시도하는 동안, 데이터 항목을 디코딩하는 시도를 실패하고, 데이터를 저장하는 블록을 불량 블록으로 판별하고, 그리고 불량 블록에서 불량 블록 관리 예비 공간으로 데이터가 이동하면, 나머지 불량 블록 예비 공간의 크기가 임계 값보다 작아 평면 또는 다이의 신뢰도가 불충분한 것으로 판단할 수 있다. 이후, 스토리지 장치(110)는 불량 블록 관리가 더 이상 수행되지 않는다고 판단하고, 읽기 전용 모드로 전환되는 것을 결정할 수 있다. 일부 실시 예들에서, 데이터 항목은 하나의 동작(예를 들어, 코드 블록을 디코딩한 결과 데이터는 데이터 항목일 수 있다.)에서 처리되는 임의의 양의 데이터를 의미할 수 있다.
제4 케이스는 쓰기-쓰루(write-through) 모드에서 스토리지 장치(110)를 작동하여 완화될 수 있는 오류 상태를 포함할 수 있다. 예를 들어, 스토리지 장치(110)의 전원 공급 백업 커패시터가 고장난 경우, 스토리지 장치(110)는 호스트로부터 수신한 쓰기 명령에 응답하여, 호스트(105)로 명령 완료 신호를 전송하기 전에 스토리지 매체들(125)로 쓰기를 완료할 수 있으므로, 스토리지 매체들(125)로 쓰기가 완료되기 전에 전력이 차단된 경우, 호스트는 쓰기가 성공적으로 완료되었다는 잘못된 오류를 수신하지 않는다. 쓰기-쓰루(write-through) 모드로의 작동은 성능 저하(예를 들어, 처리량(throughput) 및/또는 레이턴시(latency) 측면에서)를 일으킬 수 있다.
제5 케이스는 전력 소모를 줄이는 방식으로 스토리지 장치(110)를 동작하여 완화될 수 있는 오류 조건을 포함할 수 있다. 예를 들어, 온도 센서 고장의 경우, 스토리지 장치(110)는 상술된 바와 같이 읽기 전용 모드로 동작하거나, 또는 스토리지 장치(110)의 전력 소모를 감소시키기 위해 동작이 수행될 수 있는 속도(예를 들어, 읽기 동작들보다 더 많은 전력을 소비하는 쓰기 동작들)를 감소시킬 수 있다. 예를 들어, 스토리지 장치(110)는 스토리지 매체들에 제1 쓰기를 수행하고, 감소된 성능(쓰기 동작들이 수행되는 속도의 감소에 의한 대기)에 대응되는 간격 동안 기다린 후, 스토리지 매체들에 다른 쓰기(예를 들어, 제2 쓰기)를 수행할 수 있다.
제6 케이스는 스토리지 장치(110)를 읽기 전용 모드로 동작하여 완화될 수 있고, 스토리지 매체들(125)를 재포맷하여 기능을 완전히 복구할 수 있는 오류 상태를 포함할 수 있다.
오류 복구
도 2a에 개시된 케이스들에서 예시된 것들과 같은, 하나 이상의 오류 상태들에 기반하여, 일부 실시 예들에서, 다양한 수준의 오류 복구들이 본 개시의 실시 예들에 따른 스토리지 장치(110)에 의해 구현될 수 있다. 예를 들어, 일부 실시 예들은 완전 복구 모드, 부분 복구 모드, 및 취약 모드를 구현할 수 있다. 완전 복구 모드에서, 스토리지 장치(110)는 자가 복구 기능들로 동작할 수 있고, 스토리지 장치(110)은, 전력 순환(power cycling)(전원을 턴-오프하고 다시 턴-온)하거나, 펌웨어를 재로드하거나, 또는 스토리지 매체들(125)을 포맷하는 등의 리셋 동작들을 통해, (장치의 사용자 데이터가 유실될 수 있으나)전체 기능들이 복구될 수 있다.
부분 복구 모드에서, 스토리지 장치(110)는 오류 상태가 존재할 때, 감소된 성능(reduced performance), 감소된 용량(reduced capacity), 또는 감소된 능력(reduced capability)으로 동작할 수 있다. 예를 들어, 상술된 바와 같이, 전원 공급 백업 커패시터가 고장난 경우, 스토리지 매체들(125)에 데이터가 쓰여진 후(즉, 동기화된 쓰기들(synchronous writes)이 수행될 수 있다.)에만 쓰기 작업들이 완료(예를 들어, 호스트(105)로 명령 완료 신호들을 전달)될 수 있고, 스토리지 장치(110)의 동작이 느려지고 성능이 저하될 수 있다. 이러한 환경에서 사용자 데이터는 보존될 수 있다. 다른 예를 들면 스토리지 장치(110)는, 불량 블록 관리 RTBB(run time bad block)를 위한 예비 공간이 소진된 경우, 감소된 용량으로 동작할 수 있다. 이 경우 영향을 받는, 스토리지 장치(110)의 다이(die)들은, 디스크 공간에서 제외될 수 있고, 전체 디스크 용량이 감소될 수 있다. 손실된 공간의 사용자 데이터는 손실될 수 있다. 예를 들어, IO 결정론(IO determinism)의 세트 또는 구역화 된 네임스페이스(zoned namespace)의 구역(zone)이 더 이상 새로운 데이터 쓰기들을 수용하지 못하는 경우, 상기 세트 또는 구역은 디스크 공간에서 제외될 수 있으나, 나머지 디스크 공간은 쓰기 및 읽기 동작들에 사용될 수 있다. 이 경우, 제외된 구역 또는 세트의 사용자 데이터는 손실될 수 있다.
예를 들어, 스토리지 장치(110)가 쓰기 동작들을 허용하지 않고, 읽기 전용 모드로 전환된 경우, 스토리지 장치(110)는 감소된 능력(reduced capability)으로 동작할 수 있다. 일부 실시 예들에서, 스토리지 장치(110)는 지속 가능한 읽기 전용 모드(제 1 읽기 전용 모드로 지칭된다), 또는 지속 불가능한 읽기 전용 모드(제 2 읽기 전용 모드로 지칭된다)로 동작할 수 있다. 제 1 읽기 전용 모드에서, 스토리지 장치(110)는 스토리지 매체들(125)의 유지 기간(retention period)을 넘어서 읽기 요청을 계속해서 제공할 수 있다. 제 2 읽기 전용 모드는 예를 들어, 제 1 읽기 전용 모드에서 동작이 불가능할 때(예를 들어, 복구 공간(rescue space)을 설정할 사용되지 않는 스토리지 공간이 충분하지 않은 경우) 사용될 수 있다. 제 2 읽기 전용 모드로 전환되는 경우, 스토리지 장치(110)는 호스트(105)로 스토리지 장치(110)이 제 2 읽기 전용 모드(지속 불가능한 읽기 전용 모드)로 동작한다는 알림, 및 스토리지 장치(110)에 저장된 데이터 항목들이 만료(예를 들어, 각각의 유지 기간이 끝난 경우)될 수 있다는 알림을 송신할 수 있다. 제 2 읽기 전용 모드에서, 스토리지 장치(110)는 스토리지 매체들(125)의 유지 기간 동안 읽기 요청들을 계속해서 제공할 수 있고, 그리고, 스토리지 장치(110)에 데이터 무결성 문제들(integrity issue)이 발생한 경우(예를 들어, 읽기 동작들 동안 데이터를 디코딩 하는 시도가 하나 이상 실패하였음이 감지된 경우), 스토리지 장치(110)는 유효하지 않은 데이터 영역을 보고할 수 있다.
취약 모드에서 동작하는 스토리지 장치(110)는 일반적인 읽기 및/또는 쓰기 동작들을 수행할 수 없고, 예를 들어 호스트로부터 명령들을 계속하여 수신하고 에러 값들을 반환하여, 정상 종료(graceful exit)할 수 있다.
일부 실시 예들에서, 본 개시의 예시적인 실시 예에 따른, 하나 이상의 오류 복구 기능들을 포함하는 스토리지 장치는, 호스트가 체계적으로 기능들을 활용할 수 있고, 스토리지 장치가 오류 상태에도 불구하고 계속해서 동작할 수 있는 다양한 구성 및/또는 기능들로 확장될 수 있다. 예를 들어 일부 실시 예들에서, 스토리지 장치가 RAID (Redundant Array of Independent (or Inexpensive) Drives) 또는 RAIN (Redundant Array of Independent Nodes)로 사용되고, 노드(node)가 고장난 경우, 시스템은 스트라이프 페리티(stripe parity)를 계산하지 않고도, 스토리지 장치의 액세스 가능한 공간으로부터 데이터를 복사하여 손실된 데이터를 복구할 수 있다.
논리 블록 어드레스 공간 유형
일부 실시 예들에서, 다양한 논리 블록 어드레스(이하 LBA로 지칭될 수 있다; logical block address) 공간 유형들은, 본 개시의 실시 예들에 따른 오류 복구 기능을 포함하는 스토리지 장치에 의해 구현될 수 있다. 이러한 LBA 공간 유형들은 예를 들어, 도 1에 도시된 스토리지 장치 등에 의해 사용될 수 있다. LBA 공간 유형들의 몇몇 예시들은 수행 공간(P; performing space), 수행능력 저하 공간(UP; underperforming space), 읽기 전용 공간(RO; read-only space), 휘발성 읽기 전용 공간(VRO; volatile read-only space), 및 액세스 불가능 공간(IA; inaccessible space)을 포함할 수 있다. 일부 실시 예들에서, LBA공간은 페이지, 파티션, 세트, 구역, 및/또는 그와 유사한 것들과 같은 저장 공간의 임의의 단위를 지칭할 수 있다.
수행 공간(P; performing space)는 성능을 희생하지 않고 정상적인 방식으로 읽기 및 쓰기를 수행할 수 있는, 유효한 데이터를 포함하는 LBA 공간을 포함할 수 있다. 수행 공간의 데이터는 유효할 수 있다.
수행능력 저하 공간(UP; underperforming space)는 정상적인 방식으로 읽기 및 쓰기를 수행하되 성능이 감소된(예를 들어, 쓰기 성능 저하), 유효한 데이터를 포함하는 LBA 공간을 포함할 수 있다.
읽기 전용 공간(RO; read-only space)는 읽기 전용인, 유효한 데이터를 포함하는 LBA공간을 포함할 수 있다. 예를 들어, 스토리지 장치는 호스트로부터 수신된 쓰기 데이터를 거부할 수 있고, 그리고/또는 스토리지 장치는 호스트의 이러한 LBA공간에 대한 쓰기 명령들에 대하여 오류 메시지들로 응답할 수 있다. 읽기 전용 공간의 데이터는 유지 기간을 초과하는 기간 동안 유효할 수 있다.
휘발성 읽기 전용 공간(VRO; volatile read-only space)은 읽기 전용 공간을 포함할 수 있고, 그리고 스토리지 장치는 호스트의 이러한 LBA공간에 대한 쓰기 명령들에 대하여 오류 메시지들로 응답할 수 있다. 이러한 유형의 LBA 공간의 데이터는 일시적으로 유효할 수 있고, 그리고 예를 들어 스토리지 매체들의 데이터의 사용 기간이 스토리지 매체들의 유지 기간에 도달하는 것과 같이, 기간이 만료된 경우 유효하지 않을 수 있다.
액세스 불가능 공간(IA; inaccessible space)은, 호스트로부터 액세스될 수 없는, 유효하지 않은 데이터를 포함하는 LBA공간을 포함할 수 있다.
오류 복구 모드
일부 실시 예들에서, LBA 공간 유형들은 예를 들어, 오류 복구 모드들의 일부 실시 예들을 구현하기 위해 사용될 수 있다. 도 2b는 본 개시의 실시 예들에 따른 스토리지 장치에 의해 구현될 수 있는, 몇몇 오류 복구 모드들 및 관련된 LBA 공간 유형들의 실시 예들을 보여주는 표이다. 도 2b의 표에 도시된 모드(mode) 열(column)은, 예를 들어 본 개시의 실시 예들에 따라 액세스 되는 스토리지 장치의 하나 이상의 기능들을 통한 API(application programming interface)의 모드 등, 모드들을 식별하기 위해 사용되는, 오류 복구 모드의 번호 및 이름을 포함할 수 있다. 도 2b에 도시된 표의 P, UP, RO, VRO, 및 IA로 지칭되는 열(column)들은 각각 대응되는 모드에서 사용될 수 있는, 수행(P; performing), 수행 능력 저하(UP; underperforming), 읽기 전용(RO; read-only), 휘발성 읽기 전용(VRO; volatile read-only), 및 접근 불가(IA; inaccessible) LBA 공간의 양을 지칭할 수 있다.
일부 실시 예들에서, 도 2b에 도시된 모드들이, 예를 들어 API를 통해 호스트에 의해 호출될 수 있다. 일부 구현 예들에서, 도 2b의 별표(*)로 식별될 수 있는 모드들은 호스트로, 기능 가져오기 명령에 응답하여, 대응되는 모드에 의해 사용되는 LBA 공간 유형 각각에 대한 상세한 정보를 제공할 수 있다. 일부 구현 예들에서, 다른 명령들에 의해 사용되는 LBA 공간에 대한 정보는 암시적일 수 있다. 예를 들어, 전원 순환 모드(제 1 모드; power cycle mode)에서는, 모든 메모리는 수행(P; performing) 유형일 수 있다. 그러나 일부 실시 예들에서는, LBA공간 유형들의 다론 조합들 및/또는 그것들의 부분들이 사용될 수 있다.
일부 실시 예들에서 스토리지 장치는, 이하의 오류 복구 모드들 중 임의의 수의 모드들을 구현할 수 있다. 예를 들어, 장치 제조사는 다른 제품들에서, 이하의 오류 복구 모드들 및 다른 오류 복구 모드들의 다른 조합들을 구현할 수 있다.
전원 순환 모드(제 1 모드; power cycle mode)는 스토리지 장치의 전원을 껐다 켜는 것에 기반한 자가 복구 기능을 포함할 수 있다. 예를 들어, 스토리지 장치는 SRAM, DRAM 등의 메모리의, 하나 이상의 플립된 비트들(flipped bits)에 기초한 오류 상태가 발생할 수 있다. 예를 들어, 플립된 비트는 메모리 셀들을 방해할 수 있는, 안테나 또는 높은 해발고도에 의한, 노후화, 열화, 및/또는 방사선에 의해 발생될 수 있다. 오류 복구 전원 순환 모드를 포함하는 스토리지 장치는, 스토리지 장치의 전원 순환(예를 들어, 전력을 차단한 후 다시 인가하는 것)과 같은 자가 복구 기능을 포함할 수 있고, 현재 상태를 초기화하고 오류가 발생한 SSD를 정상 상태로 복구할 수 있다. 이 경우, 제출 큐(submission queue)의 하나 이상의 실행중인 명령들이 손실될 수 있다. 스토리지 장치의 사용자 데이터가 유효한지 여부는 장치의 파티셔닝(partitioning), 스토리지 컨트롤러의 서로 다른 회로들이 재설정 되는 정도, 및/또는 그와 유사한 것 등 세부적인 구현에 따라 달라질 수 있다. 일부 실시 예들에서, 전원 순환 보드에서 스토리지 장치의 전체 스토리지 공간(100퍼센트)이 정상적으로 동작(예를 들면 수행 공간(P; performing space) 공간으로서)할 수 있다.
재포맷 모드(제 2 모드; reformat mode)는 스토리지 장치의 일부 또는 전부를 포맷하는 것에 기반한 자가 복구 기능을 포함할 수 있다. 일부 실시 예들에서, 스토리지 장치를 포맷하는 것은, 현재 상태를 초기화하고 오류가 발생한 스토리지 장치를 정상 상태로 복구할 수 있다. 그러나, 상세한 구현 내용들(예를 들어, 빠른 포맷, 전체 포맷, 파티셔닝 세부사항들, 및/또는 그와 유사한 것들)에 따라 디스크의 데이터 전체가 손실될 수 있다. 일부 실시 예들의 재포맷 모드(제 2 모드; reformat mode)에서, 스토리지 장치의 전체 스토리지 공간(100 퍼센트)는 정상적으로 동작(예를 들면 수행 공간(P; performing space) 공간으로서)할 수 있다.
용량 감소된 읽기 전용 모드(제 3 모드; reduced capacity read-only mode)에서, 스토리지 장치의 스토리지 공간의 제 1 부분 (예를 들어, X퍼센트)은 정상적으로 동작(예를 들면 수행 공간(P; performing space) 공간으로서)할 수 있고, 그리고, 제 2 부분 (예를 들어, 100-X 퍼센트)는 읽기 전용(RO; read only) 스토리지 공간으로서 동작할 수 있다. 따라서, 스토리지 장치의 수행 공간(P; performing space)의 크기는 감소될 수 있고, 그리고 스토리지 장치는 해당 공간에 대해 정상 드라이브처럼 동작할 수 있으나, 읽기 전용(RO; read-only) 유형의 공간은 쓰기가 불가능할 수 있다. 일부 실시 예들에서, 스토리지 장치는, 예를 들어 기능 가져오기 명령(get feature command)에 응답하여, 수행(P; performance) 및/또는 읽기 전용(RO; read-only) 공간들에 대한 LBA 범위들의 리스트를 호스트로 제공할 수 있다. 스토리지 장치들이 IO 결정론(IO determinism)을 지원하는 경우, LBA범위는 세트(set)를 나타낼 수 있다. 스토리지 장치가 ZNS(zoned namespaces)를 지원하는 경우, LBA 범위는 구역(zone)을 나타낼 수 있다. 일부 실시 예들에서, 스토리지 장치는 기능 가져오기 명령(get feature command)에 응답하여, 세트들 및/또는 ZNS에 대한 어드레스 범위들에 대한 정보를 제공할 수 있다.
용량 감소된 모드(제 4 모드; reduced capacity mode)에서, 스토리지 장치의 스토리지 공간의 제 1 부분(예를 들어, X 퍼센트)은 정상적으로 동작(예를 들면 수행 공간(P; performing space) 공간으로서)할 수 있고, 그리고, 제 2 부분 (예를 들어, 100-X 퍼센트)은 접근 불가(IA; inaccessible) 일 수 있다. 따라서, 스토리지 장치의 수행 공간(P; performing space)의 크기는 감소될 수 있고, 그리고 스토리지 장치는 해당 공간에 대해 정상 드라이브처럼 동작할 수 있으나, 접근 불가(IA; inaccessible) 공간은 정상 입출력(IO; Input/Output)을 수행할 수 없다. 예를 들어, RTBB가 소진된 경우, 문제가 있는 다이(die)는 디스크 공간에서 제외될 수 있고, 따라서 전체적인 디스크 용량이 감소될 수 있다. 스토리지 장치는 수행(P; performing) 및/또는 접근 불가(IA; inaccessible) 공간의 유형에 대한 LBA 범위들의 리스트를 제공할 수 있다. 스토리지 장치가 IO 결정론(IO determinism)을 지원하는 경우, LBA범위는 세트(set)를 나타낼 수 있다. 스토리지 장치가 ZNS(zoned namespaces)를 지원하는 경우, LBA 범위는 구역(zone)을 나타낼 수 있다. 일부 실시 예들에서, 스토리지 장치는 기능 가져오기 명령(get feature command)에 응답하여LBA범위들, 세트들, 구역들, 및/또는 유사한 것들에 대한 정보를 제공할 수 있다.
성능 감소 모드(제 5 모드; reduced performance mode)에서 스토리지 장치의 성능에 관한 하나 이상의 측면들이 감소될 수 있다. 예를 들어, 스토리지 장치는 감소된 처리량(throughput) 및/또는 레이턴시(latency)에서, 정상 동작들을 수행할 수 있다. 일부 실시 예들에서, 스토리지 장치는 주 전원 공급 장치가 고장난 경우, 스토리지 장치가 쓰기 명령을 완료할 수 있기에 충분히 긴 시간 동안 스토리지 장치에 전력을 공급하는, 하나 이상의 백업 커패시터들을 포함할 수 있다. 이러한 하나 이상의 백업 커패시터들이 고장난 경우, 스토리지 장치는 호스트에게 데이터가 매체들에 쓰여지기 전까지 쓰기 동작이 완료되었다는 알림을 전달하지 않을 수 있다. (이는 동기 쓰기 작업(synchronous write operation)으로 지칭될 수 있다.) 이는 IOPS(input and/or output operations per second)를 감소시킬 수 있고, 그리고/또는 레이턴시(latency)를 증가시킬 수 있고, 따라서 스토리지 장치의 성능을 저하시킬 수 있다. 따라서 일부 실시 예들에서, 성능 감소 모드는 전부(100%) 성능 저하 공간(UP; underperforming space)에서 동작할 수 있다. 세부적인 구현에 따라, 사용자 데이터의 일부 또는 전부가 유효하게 남을 수 있다. 일부 실시 예들에서, 스토리지 장치는 호스트로, 오류 상태에서 시스템 수준 영향을 완화할 수 있는 방식으로, 호스트가 스토리지 장치에 쓰기 데이터를 전송시킬 수 있도록 하는, 추측 성능 정보를 제공할 수 있다.
읽기 전용 모드(제 6 모드; read-only mode)에서, 스토리지 장치는 읽기 동작들만 허용하고, 외부 쓰기 동작들을 차단할 수 있다. 세부적인 구현들에 따라, 예를 들어 유지 기간 이후에도, 읽기 전용 공간의 데이터는 유효하게 남을 수 있다. 읽기 전용 모드는 전부(100%) 읽기 전용 공간(RO; read-only space)에서 동작할 수 있다.
부분 읽기 전용 모드(제 7 모드; partial read-only mode)에서, 스토리지 장치의 스토리지 공간의 제 1 부분((예를 들어, X 퍼센트)은 읽기 전용(RO; read-only) 공간으로 동작할 수 있고, 그리고 제 2 부분(예를 들어, 100-X 퍼센트)는 액세스 불가 (IA; inaccessible) 공간으로 동작할 수 있다. 따라서, 스토리지 장치는 읽기 동작들만을 허용하고, 스토리지 공간의 제 1 부분에서 외부 쓰기 동작들은 금지될 수 있다. 세부적인 구현들에 따라, 예를 들어 유지 기간 이후에도, 읽기 전용 공간의 데이터는 유효할 수 있다. 스토리지 장치는 읽기 전용(RO; read-only) 및/또는 접근 불가(IA; inaccessible) 공간의 유형에 대한 LBA 범위들의 리스트를 제공할 수 있다. 스토리지 장치가 IO 결정론(IO determinism)을 지원하는 경우, LBA범위는 세트(set)를 나타낼 수 있다. 스토리지 장치가 ZNS(zoned namespaces)를 지원하는 경우, LBA 범위는 구역(zone)을 나타낼 수 있다. 일부 실시 예들에서, 스토리지 장치는 기능 가져오기 명령(get feature command)에 응답하여 LBA범위들, 세트들, 구역들, 및/또는 유사한 것들에 대한 정보를 제공할 수 있다.
임시 읽기 전용 모드(제 8 모드; temporary read-only mode)에서, 데이터는 전부(100 퍼센트) VRO 공간으로 동작하되 외부 쓰기 동작들이 금지될 수 있는, 스토리지 장치의 스토리지 공간으로부터 읽혀질 수 있다. 이러한 공간의 데이터는 일시적으로 유효할 수 있으나, 유지 기간 이후에는 무효화될 수 있다.
임시 부분 읽기 전용 모드(제 9 모드; temporary partial read-only mode)에서, 데이터는 외부 쓰기들이 금지되는 동안 VRO 공간으로 동작하는, 스토리지 장치의 스토리지 공간의 제 1 부분(예를 들어, X 퍼센트)으로부터 읽혀질 수 있다. 제 2 부분(예를 들어, 100-X 퍼센트)은 액세스 불가 (IA; inaccessible) 공간일 수 있다. 제 1 부분의 데이터는 일시적으로 유효하지만, 유지 기간 이후 무효화될 수 있다. 스토리지 장치가 IO 결정론(IO determinism)을 지원하는 경우, LBA범위는 세트(set)를 나타낼 수 있다. 스토리지 장치가 ZNS(zoned namespaces)를 지원하는 경우, LBA 범위는 구역(zone)을 나타낼 수 있다. 일부 실시 예들에서, 스토리지 장치는 기능 가져오기 명령(get feature command)에 응답하여 LBA범위들, 세트들, 구역들, 및/또는 유사한 것들에 대한 정보를 제공할 수 있다.
취약 모드(제 10 모드; vulnerable mode)에서, 스토리지 장치는 입출력 동작을 수행하지 못할 수 있다. 그러나, 스토리지 장치는 호스트로부터 명령들을 수신하고, 에러들을 반환하는 것을 계속할 수 있다.
정상 모드(제 11 모드; normal mode)에서, 스토리지 장치는 정상적으로 동작할 수 있다.
명령
일부 실시 예들에서, 본 개시의 실시 예들에 따른 스토리지 장치는, 예를 들어 호스트에서 스토리지 장치의 하나 이상의 기능들을 관리하거나 스토리지 장치를 쿼리(query)하는데 사용될 수 있는, 하나 이상의 명령들을 구현할 수 있다. 도 2c는 본 개시의 예시적인 실시 예들에 따른 스토리지 장치에 의해 구현될 수 있는, 몇몇 명령들 및 서브명령들의 실시 예들을 보여주는 표이다. 도 2c에 도시된 서브 명령 열은, 예를 들어 명령들 및 응답들이 전달되는 API(application programming interface)의 서브명령을 식별하는데 사용될 수 있는 이름을 나타낼 수 있다.
도 2c에 도시된 표의 서브명령을 포함하는 기능 가져오기 명령(get feature command)은, 응답의 전달과 마찬가지로, 호스트로부터 스토리지 장치로 전달될 수 있다. 일부 실시 예들에서, 스토리지 장치는 서브명령에 기초한 기능 가져오기 명령에 대해 이하와 같이 응답할 수 있다.
복구 유형 서브명령(FR_INFO_RESILIENCY_TYPE)는 오류 발생시 오류 복구 유형을 반환할 수 있다. 예를 들어 스토리지 장치는, 발생한 오류 상태에 기초하여, 도 2b에 도시된 오류 복원 모드들 중 어떤 복원 모드를 선택하였는지 나타낼 수 있다.
유지 기간 서브 명령(FR_INFO_RETENTION_PERIOD)은 스토리지 매체들을 재프로그래밍하는 것이 없는, 데이터의 평균 유지 기간을 반환할 수 있다. 일부 실시 예들에서, 이것은 스토리지 매체들의 데이터의 오류 발생 시점부터의 유지 기간의 상한선이 될 수 있다. 예를 들어, 이 서브명령은 임시 읽기 전용 모드(제 8 모드; temporary read-only mode) 및/또는 임시 부분 읽기 전용 모드(제 9 모드; temporary partial read-only mode)와 함께 사용될 수 있다.
최초 만료 서브 명령(FR_INFO_EARLIEST_EXPIRY)은 데이터 무결성(integrity)에 대하여 남은 최대 시간을 반환할 수 있다. 일부 실시 예들에서, 이것은 스토리지 매체들의 데이터의 오류 발생 시점부터의 유지 기간의 하한선이 될 수 있다. 예를 들어, 시간 단위는 패트롤 기간(patrol period)에 기반하여 결정될 수 있다. 예를 들어, 이 서브 명령은 임시 읽기 전용 모드(제 8 모드; temporary read-only mode) 및/또는 임시 부분 읽기 전용 모드(제 9 모드; temporary partial read-only mode)와 함께 사용될 수 있다.
IOPS 서브명령(FR_INFO_IOPS)은 오류 상태에 기초하여, 스토리지 장치가 처리할 수 있는 최대 IOPS의 백분율을 반환할 수 있다. 예를 들어, 이 서브 명령은 성능 감소 모드(제 5 모드; reduced performance mode)와 함께 사용될 수 있다.
대역폭 서브명령(FR_INFO_BW)는 오류 상태에 기초하여, 스토리지 장치가 처리할 수 있는 최대 대역폭의 백분율을 반환할 수 있다. 예를 들어, 이 서브 명령은 성능 감소 모드(제 5 모드; reduced performance mode)와 함께 사용될 수 있다.
공간 서브명령(FR_INFO_SPACE)는 오류 상태에 기초하여, 스토리지 장치의 가용한 스토리지 공간의 양을 반환할 수 있다. 예를 들어, 이 서브 명령은 용량 감소된 읽기 전용 모드(제 3 모드; reduced capacity read-only mode) 및/또는 용량 감소된 모드(제 4 모드; reduced capacity mode)와 함께 사용될 수 있다.
도 2c의 표에 도시된 것과 같이 서브 명령을 포함할 수 있는 네임스페이스 용량 관리 명령은 호스트로부터, 서브 명령에 의해 지칭되는 작업을 수행함으로써 응답할 수 있는 스토리지 장치로 전달될 수 있다. 일부 실시 예들에서, 스토리지 장치는 서브명령에 기초한 NCM(namespace capacity management) 명령에 이하와 같이 응답할 수 있다. 일부 실시 예들에서, 네임스페이스는 논리 블록들로 포맷될 수 있는 다수의 NVM(non-volatile memory)으로 구현될 수 있다.
크기 조정 명령(FR_NAMESPACE_RESIZE)은, 스토리지 장치가 명령에 포함될 수 있는 하나 이상의 파라미터들에 기초하여, 네임스페이스의 크기를 조정하게 할 수 있다. 일부 실시 예들에서, 이러한 서브 명령은 둘 이상의 네임스페이스들을 지원할 수 있는 스토리지 장치에 적용될 수 있다. 일부 실시 예들에서, 네임스페이스들은 NVMe 크기 조정을 조정할 수 있다.
0-크기 네임스페이스 명령(FR_NAMESPACE_ZERO_SIZE)은 스토리지 장치가 복구 공간의 크기를 0으로 줄이도록 할 수 있다.
API(application programming interface)
일부 실시 예들에서, 상술된 바와 같이, 본 개시의 실시 예들에 따른 스토리지 장치는, 호스트가 스토리지 장치를 쿼리(query) 및/또는 스토리지 장치의 하나 이상의 기능을 관리할 수 있는 API로 구현될 수 있다. 도 2d는 본 개시의 예시적인 실시 예들에 따른 스토리지 장치가 API를 통해 구현할 수 있는 명령들의 표를 보여준다. 일부 실시 예들은 스토리지 장치가 응답하기 위해 사용할 수 있는, 오류 복구 기능들의 카테고리 내의, 열거형 상수들(enumerated constant)의 계층(hierarchy)을 포함할 수 있다. 도 2d를 참조하면, 계층(hierarchy)은 완전 복구 상태, 부분 복구 상태, 및 취약 상태를 포함하는 제 1 계층을 포함할 수 있다. 또한, 서브 상태 들(sub-status), 및 서브-서브상태(sub-sub-status)가 정의될 수 있다. 예를 들어 도 2d를 참조하면, 부분 복구 상태는 능력(capability)의 손실을 나타내는 제 1 서브 상태를 포함할 수 있고, 그리고 제 1 서브 상태는 지속 가능한 읽기 전용 모드에서의 동작을 나타내는 제 1 서브-서브 상태 및 지속 불가능한 읽기 전용 모드에서의 동작을 나타내는 제 2 서브-서브 상태를 포함할 수 있다. 일부 실시 예들에서, 예를 들어 API는 NVMe 명령들을 사용하여 구현될 수 있다.
기능 명령(FAULT_RESILIENT_FEATURE)은 스토리지 장치가 지원하는 클래스 각각의, 오류 복구 클래스들 및 기능들을 반환할 수 있다.
상태 명령(FAULT_RESILIENT_STATUS)은 오류 복구가 수행된 후의 스토리지 장치의 상태를 반환할 수 있다.
휘발성 블록 명령(FAULT_RESILIENT_VOLATILE_BLOCKS (H))은 다음 H 시간 내에 유지기간에 도달하는 LBA범위들의 리스트를 반환할 수 있다. 이는 일부 실시 예들에서, 지속 불가능한 읽기 전용으로 재배치 되어야 하는 블록들을 결정하는데 사용될 수 있다.
유효하지 않은 데이터 블록 명령(FAULT_RESILIENT_INVALID_DATA_BLOCKS)은 오류 복구 모드로 전환된 이후 유효하지 않게 된, LBA 범위들의 리스트를 반환할 수 있다.
추가적인 실시 예들
도 3a는 본 개시의 실시 예들에 따른 오류 복구 모드에서의 동작 방법의 일 실시 예를 보여주는 흐름도이다. 예를 들어, 도 3a에 도시된 방법은 시스템들 및/또는 도 1에 도시된 구성요소들로 구현될 수 있다. 도 3a에 도시된 동작 방법은 300 단계에서 시작할 수 있다. 305 단계에서, 호스트(105)는 스토리지 장치(110)로 데이터를 송신하거나, 스토리지 장치로부터 데이터를 수신할 수 있다. 310 단계에서, 호스트(105)는 스토리지 장치(110)에 오류가 발생했는지 여부를 판별할 수 있다. 315 단계에서, 스토리지 장치(110)는 내부 진단을 수행하고, 오류 복구 상태(예를 들어, 완전 복구, 부분 복구, 또는 취약)를 결정할 수 있다. 320 단계에서, 스토리지 장치(110)는 진단에 기초하여, 성능, 용량, 및/또는 능력(capability)을 수정(예를 들어, 읽기 전용 모드로 전환)할 수 있다. 325 단계에서, 스토리지 장치(110)는 API(application programming interface)에 기초하여, 호스트(105)의 요청에 따라 상태를 게시할 수 있다. 330 단계에서, 호스트(105)는 게시된 상태에 기초하여 지정된 대역폭으로, 지정된 유형의 데이터를 스토리지 장치(110)로, 또는 다른 스토리지 장치(110)로 라우팅(route)할 수 있다. 도 3a에 도시된 동작 방법은 335 단계에서 종료될 수 있다.
도 3b는 본 개시의 실시 예들에 따른 스토리지 장치를 구동하는 방법의 일 실시 예를 보여주는 흐름도이다. 도 3b에 도시된 동작 방법은 350 단계에서 시작할 수 있다. 355 단계에서, 이 동작 방법은 스토리지 장치의 오류 상태를 판별할 수 있다. 360 단계에서, 이 동작 방법은 스토리지 장치의 오류 상태에 기초하여, 오류 복구 모드를 선택할 수 있다. 365 단계에서, 이 동작 방법은 선택된 오류 복구 모드로 스토리지 장치를 동작할 수 있다. 이 동작 방법은 370 단계에서 종료될 수 있다.
도 3a 및 도 3b에 도시된 실시 예에 대해 설명된 동작들 및/또는 구성 요소들 뿐 아니라, 발명의 설명의 모든 다른 실시 예들은, 예시적인 동작들 및/또는 구성 요소들이다. 일부 실시 예들에서, 일부 동작들 및/또는 구성 요소들은 생략되거나, 다른 동작들 및/또는 구성 요소들이 추가될 수 있다. 또한 일부 실시 예들에서, 동작들 및/또는 구성 요소들의 시간적 및/또는 공간적 순서는 달라질 수 있다. 일부 실시 예들에서, 일부 구성요소들이 개별적인 구성요소들로 나타날 수 있으나, 일부 구성요소들은 단일한 구성 요소들로 통합될 수 있고, 일부 하나의 구성요소로 나타나는 구성요소가 복수의 구성 요소들로 구현될 수 있다.
본 개시의 실시 예들은 다양한 실시 예들 및/또는 구현들로 변형될 수 있다. FPGA(field programmable gate array) 또는 임베디드 프로세서와 같은 스토리지 컨트롤러는 내부 블록 검사, 및 스토리지 장치(110)의 상태에 대해 호스트(105)로 비동기(asynchronous) 업데이트를 전송할 수 있다. 이벤트들이 발생할 수 있고, 호스트(105)로 전송(예를 들어, 온도, 및 장치 내부의 다른 파라미터들)될 수 있다. 예를 들어, 호스트(105)는 알림을 제공하는 장치 드라이버 기능이 없는 경우, 미리 정해진 일정에 따라 스토리지 장치들(110)을 폴링(poll)할 수 있다. 스토리지 컨트롤러는 스토리지 장치(110)의 이전 성능들을 모니터링하고, 머신 러닝을 통해 예측되는 분석들(예를 들어, 스토리지 장치가 주어진 오류 복구 상태에 있을 가능성)을 제공할 수 있다. 예를 들어, 명령들(예를 들어, NVMe 명령들)은 스토리지 장치(110)의 상태를 보고하기 위해 구현되거나 확장될 수 있다.
일부 실시 예들에서, 호스트는 (i) 스토리지 장치(110)의 상태에 기초(예를 들어, 높은 우선순위 데이터 또는 실시간 데이터는 부분 취약 모드로 고려되는 장치에 쓰여지지 않을 수 있다.)하여 다른 데이터 유형들(예를 들어, 이미지, 비디오, 텍스트, 또는 높은 우선순위 또는 낮은 우선순위 데이터 등의 파일 유형들)을 전송할 수 있고, (ii) 스토리지 장치(110)가 부분 취약 상태에 있고 낮은 성능 상태에 있는 경우, 전송률을 감소시킬 수 있고, (iii) 스토리지 장치(110)가 부분 취약 상태에 있고 낮은 용량 상태에 있는 경우, 총량이 감소된 데이터를 전송할 수 있고, (iv) 스토리지 장치(110)이 부분 취약 지속 불가능한 읽기 전용 모드에 있는 경우, 가능한 최대 속도로 데이터를 읽거나 다른 곳에 데이터를 저장하여, 유지 기간을 초과(이러한 환경에서, 호스트는 유지 기간 동안 복사될 데이터의 양에 따라 필요한 데이터 속도를 계산할 수 있다.)하는 것을 방지할 수 있고, (v) 데이터에 오류가 발생할 수 있으므로 취약한 스토리지 장치(110)으로부터 데이터 읽기를 무시하고, 그리고 호스트(105)로부터 그 데이터가 수신된 경우 삭제할 수 있고, (vi) 호스트 및 스토리지 장치들(110)간의 이벤트들의 타이밍을 제어하는 메시지들에 기초하여 일시적으로, 전력 순환 및/또는 포맷된 완전 복구 스토리지 장치(110)의 캐시에 읽기/뜨기 입출력을 다시 라우팅(route)할 수 있다. 용량이 감소된 부분 취약 스토리지 장치의 저장 컨트롤러는 입력되는 데이터 쓰기들을 필터링하고, 데이터 중 일부만 스토리지 장치(110)에 쓰기 할 수 있다. 경우에 따라, 필터링은 압축을 포함할 수 있다. 이러한 스토리지 컨트롤러는, 호스트(105)로부터 다양한 유형의 데이터(예를 들어, 이미지, 비디오, 텍스트, 또는 높은 우선순위 또는 낮은 우선순위 데이터 등의 파일 유형들)를 수신할 수 있고, 스토리지 장치(110)의 상태에 기초하여 필터링할 수 있다. 예를 들어, 스토리지 컨트롤러는 부분 취약 모드인 스토리지 장치(110)에 우선순위가 높은 데이터가 쓰여지지 않도록 결정할 수 있다. 스토리지 컨트롤러는 호스트로 거절 메시지를 전송하고, 거절의 이유를 제공할 수 있다. 대신, 스토리지 컨트롤러는 부분 복구 용량 저하 상태의 스토리지 장치(110)에 쓰기 위해, 특정 유형의 데이터(예를 들어, 이미지 데이터)를 필터링 할 수 있다. 예를 들어, 스토리지 장치(110)이 성능이 감소되는 경우(예를 들어, 감소된 쓰기 속도로 동작하는 경우), 레이턴시에 민감한(latency-sensitive) 읽기들 및 쓰기들은 거부될 수 있다.
오류 복구 스토리지 장치들을 포함하는 오류 복구 시스템
일부 실시 예들에서, 스토리지 장치들(110)의 어레이 및 볼륨 매니저(115)를 포함하는 RAID-0 시스템은 RAID-0 시스템의 오류 복구 스토리지 장치들(110)의 읽기 전용 모드로의 전환을 수용하도록 구현될 수 있다. 정상 동작에서, 볼륨 매니저(115)는 스토리지 장치들(110)의 어레이를 걸쳐 데이터를 스트라이핑(striping)하는 것을 담당(예를 들어, 스토리지 장치들(110)의 어레이 각각의 스토리지 장치(110)에 각 스트라이프(stripe)의 스트립 중 하나)할 수 있다. 이와 같은 시스템에서, 스토리지 장치들(110)의 어레이가 읽기 전용 모드로 전환되는 경우(110A로 도시된다.), RAID-0시스템은 제 2 동작 모드로 전환할 수 있고(또한, 비상 모드로 참조될 수 있다), 그리고 스토리지 장치들(110)의 어레이의 볼륨 매니저(115)는 (i) 메타 데이터 및 복구된 사용자 데이터(rescued user data)를 위해, 오류 스토리지 장치(110A)로부터 영향을 받지 않은 나머지 스토리지 장치들(110B) 각각에 복구 공간을 할당할 수 있고, (ii) 매핑 테이블(mapping table)(또한, 비상 매핑 테이블로 참조될 수 있다.)을 생성하거나 유지할 수 있다. 복구 공간은 시스템 동작 전, 동작 중 동적으로, 또는 그들의 조합에 따라, 정적으로 사전 할당될 수 있다.
스토리지 장치(110A) 각각의 복구 공간(R로 지칭될 수 있는)은 n개의 스트립들을 저장할 수 있다. 이 경우, n은 R/(스트립 크기), R=C/M을 의미할 수 있고, C는 스토리지 장치들(110)의 어레이 각각의 스토리지 장치들의 용량을 의미할 수 있고, 그리고 M은 스토리지 장치들의 총 수량을 의미할 수 있다. 일부 실시 예들에서, 볼륨 매니저(115)는 독립된 구성요소로 구현될 수 있거나, RAID-0 시스템의 RAID 컨트롤러(예를 들어, 호스트로부터 별개의 인클로저(enclosure)에 수용될 수 있는) 또는 호스트에 부분적 또는 전적으로 결합될 수 있다. 일부 실시 예들에서, 예를 들어, 볼륨 매니저(115)는 FPGA로 구현될 수 있다. RAID-0 시스템은 독립적으로 구현될 수 있고, 호스트의 관점에서 RAID-0 시스템이 단일 스토리지 장치로 보이도록, 스토리지 장치들(110)의 어레이를 가상화 할 수 있다. 일부 실시 예들에서, 볼륨 매니저는 볼륨 매니저에 의해 수행되는 것으로 묘사되는 동작들을 수행하도록 구현(예를 들어, 적절한 소프트웨어 또는 펌웨어로) 되는 프로세싱 회로로 구현(이하에서, 더 상세하게 설명된다.)될 수 있다.
RAID-0시스템이 비상 모드에서 동작하고, 그리고 스토리지 장치들(110)의 어레이의 스트라이프에 데이터 쓰기를 요청하는 쓰기 명령이 호스트로부터 수신되는 경우, 볼륨 매니저(115)는 비상 매핑 테이블을 체크하여, 스트라이프가 레지스터(register) 되었는지를(예를 들어, 스트라이프에 대한 엔트리가 이미 만들어졌는지 여부) 판별할 수 있다. 만약 엔트리가 아직 만들어지지 않은 경우(예를 들어, 스트라이프가 아직 등록되지 않는 경우, 오픈-맵(open-mapped)으로 지칭된다.), 볼륨 매니저(115)는 비상 매핑 테이블에 엔트리를 생성하여, 일반적으로 오류 스토리지 장치(110A)에 쓰여질 수 있는(읽기 전용 모드로 전환된 스토리지 장치) 스트립이 쓰여지는 위치를 표시할 수 있다. 비상 매핑 테이블이 스트라이프의 엔트리를 이미 포함하고 있는 경우, 엔트리는 일반적으로 오류 스토리지 장치(110A)에 쓰여졌을 스트립을 어디에 기입 할 것인지를 결정하는데 사용될 수 있다. 어느 경우든, 볼륨 매니저(115)는 도 4a에서 도시된 바와 같이, 일반적으로 오류(예를 들어, 읽기 전용) 스토리지 장치(110A)에 기입된 스트립(405)을 다른 스토리지 장치(110B)의 복구 공간에 기입하면서, 스토리지 장치들(110)의 어레이에 각 스트립을 기입할 수 있다.
스토리지 장치들(110)의 어레이의 스트라이프로부터 데이터 읽기를 요청하는 읽기 명령이 호스트로부터 수신되는 경우, 볼륨 매니저(115)는 비상 매핑 테이블을 체크하여, 스트라이프를 위해 엔트리가 생성되었는지를 결정할 수 있다. 엔트리가 생성되지 않는 경우, 도 4B에 도시된 바와 같이, 오류 스토리지 장치(110A)를 포함한 스토리지 장치들(110) 각각으로부터의 스트립을 읽기하는 일반적인 동작과 같이, 볼륨 매니저(115)는 스트라이프를 읽을 수 있다. 비상 매핑 테이블이 스트라이프에 대한 엔트리를 포함하는 경우, 엔트리는 일반적으로 오류 스토리지 장치(110A)로부터 읽기 되었을 스트립을 읽을 위치를 결정할 수 있다.
예를 들어, 일반적으로 오류 스토리지 디바이스(110A)에 기입 되었을 스트립들의 재매핑(remapping)은 이하와 같이 수행될 수 있다. 스토리지 디바이스들(110)의 어레이의 스토리지 디바이스(110) 각각은 0 내지 M-1의(단, M은 스토리지 디바이스들(110)의 어레이의 스토리지 디바이스(110)의 수)드라이브 식별 번호(또는 드라이브 ID, drive ID)를 가질 수 있다. 볼륨 매니저(115)는 드라이브 식별 번호들을 재할당 (예를 들어, 스토리지 장치들(110)의 어레이의 영향 받지 않은 스토리지 장치(110B)에, 등록된 스트라이프들의(등록되지 않은 스트라이프들에 대한 읽기 동작들은 기존의 드라이브 식별 번호들을 계속해서 사용할 수 있다.) 읽기 또는 쓰기 동작들을 수행하기 위해 사용되는 대체 드라이브 식별 번호를 할당)할 수 있다. 이하의 수학식1은 대체 드라이브 식별 번호를 생성하는데 사용될 수 있다.
Figure pat00001
Figure pat00002
Figure pat00003
Figure pat00004
수학식 1에 따르면 (i) 오류 스토리지 장치의 기존 드라이브 ID 번호(faulty drive ID)보다 작은 드라이브 ID 번호(drive ID)를 가진 스토리지 장치 각각에, 기존의 드라이브 ID 번호를 할당하고 (ii) 오류 스토리지 장치의 기존 드라이브 ID 번호(faulty drive ID)보다 큰 드라이브 ID 번호(drive ID)를 가진 스토리지 장치 각각에, 기존의 드라이브 ID 번호에서 1을 뺀 값을 할당할 수 있다.
대체 드라이브 번호들을 사용하여, 일반적으로 오류 스토리지 장치(110A)에 기입될 스트립이 기입될 수 있는 타깃 드라이브는, 타깃 드라이브 ID = sid % (M-1)의 공식을 사용하여 식별(예를 들어, 스트라이프 단위로)될 수 있다. 이 때, 타깃 드라이브 ID는 타깃 드라이브의 대체 드라이브 식별 번호(드라이브 ID)일 수 있고, sid는 일반적으로 오류 스토리지 장치(110)에 기입될 수 있는 스트립의 스트라이프 식별자일 수 있고, “%”는 모듈러(mod; modulo) 연산자일 수 있다.
도 4c는 본 개시의 실시 예들에 따른, 리매핑(remapping) 및 쓰기 동작을 수행하는 RAID-0 시스템의 개략적인 데이터 레이아웃 다이어그램을 보여준다. 도 4c에 도시된 실시 예는, 드라이브 1으로 식별되는, 읽기 전용 모드로 전환된 4개의 오류 복구 스토리지 장치들(110)(예를 들어, M=4)을 포함할 수 있다. 상술된 수학식 1을 사용하여, 드라이브 0은 새로운 드라이브 ID 0로 매핑된 상태로 유지되고(예를 들어, 3 mod 3), 드라이브 2는 새로운 드라이브 ID 1로 매핑되고(예를 들어 4 mod 3), 그리고 드라이브 3은 새로운 드라이브 ID 2로 매핑(예를 들어 5 mod 3)될 수 있다.
타깃 드라이브 ID(예를 들어, 읽기 또는 쓰기 작업의 경우)는 타깃 드라이브 ID = 스트라이프 ID % (M-1) 식에 의해 암시적으로 결정될 수 있다. 예를 들어, M=4 이고 스트라이프 1이 쓰기 되는 경우, 스트라이프 ID=1 이므로, 타깃 드라이브 ID = 1 % 3 =1이다. 즉, 타깃 드라이브는 대체(새로운) 드라이브 식별 번호 1인(예를 들어, 종래에는 드라이브 2인) 스토리지 장치(110B)일 수 있다. 스토리지 장치 내에서, 복구 공간은 스트립 크기와 동일한 크기들로 분할(복구 스트립들, 또는 R-스트립들로 지칭되는)될 수 있다. 일부 실시 예들에서, 비상 매핑 테이블은 각 스트립이 갖는, 제 1 요소는 스트라이프 ID이고 제 2 요소는 타깃 드라이브의 R-스트립 ID인 포맷에 대한 엔트리를 포함할 수 있다. 예를 들어, 비상 매핑 테이블의 (1,0)엔트리는 도 4c에 도시된 바와 같이, 스트립 (1,1)이 R-스트립 (1,0)에 매핑되어 있음을 나타낼 수 있다.
도 5a는 본 개시의 실시 예들에 따른, RAID-0 시스템을 동작시키기 위한 방법의 흐름도를 보여준다. 505 단계에서, RAID-0시스템의 스토리지 장치(110)는 오류가 발생하고, 읽기 전용 모드로 전환한다. 510 단계에서, 영향을 받은 스토리지 장치(110)는 내부 진단을 수행하고, 오류 복구 상태가 부분적으로 복구 가능하고 읽기 전용임을 확인한다. 515 단계에서, 볼륨 매니저(515)는 영향을 받은 스토리지 장치(110)가 읽기 전용 모드임을 확인하고, 영향을 받지 않은(live) 스토리지 장치들의 ID들을 재할당한다. 520 단계에서, 볼륨 매니저(115)는 쓰기 동작을 수신하고, 비상 매핑 테이블에 엔트리를 추가하여, 영향을 받은 스토리지 장치의 스트립이 타깃 (영향을 받지 않은) 스토리지 장치(110)로 리다이렉트(redirect)되고, 그리고 영향을 받지 않은 스토리지 장치들의 새로운 드라이브 ID들에 기초하여, 전체 스트립이 타깃(영향을 받지 않은) 스토리지 장치의 복구 공간에 기입 되는 것을 나타낼 수 있다. 525 단계에서, 볼륨 매니저(115)는 호스트(105)로부터 읽기 명령을 수신하고, 그리고 영향을 받은 스토리지 장치의 스트립이 타깃(영향을 받지 않은) 스토리지 장치의 복구 공간으로부터 읽기 되는 동안, RAID 시스템의 영향을 받지 않은(live) 스토리지 장치들(110)로부터 스트라이프의 모든 스트립들을 읽는다.
도 5b는 본 개시의 실시 예들에 따른, RAID-0 스토리지 시스템을 동작시키기 위한 방법의 세부 사항을 보여주는 흐름도이다. 이 방법은 이하의 530 단계 내지 545 단계를 포함한다. 530 단계에서, 이 방법은 제 1 스토리지 장치가 읽기 전용 상태이고, 제 2 스토리지 장치가 읽기-쓰기 상태인지 확인한다. 535 단계에서, 제 1 스트라이프의 일부를 제 2 스토리지 장치에 쓰기하고, 제 1 스트라이프에 대한 매핑 테이블에 엔트리를 생성하여, 스토리지 시스템에 제 1 스트라이프의 쓰기 동작을 수행한다. 540 단계에서, 제 1 스토리지 장치 및 제 2 스토리지 장치로부터 제 2 스트라이프의 일부를 읽기하여, 스토리지 시스템으로부터 제 2 스트라이프의 제 1 읽기 동작을 수행한다. 545 단계에서, 매핑 테이블이 제 1 스트라이프에 대한 엔트리를 포함하는지 판단하고, 제 2 스토리지 장치로부터 제 1 스트라이프의 일부를 읽음으로써, 스토리지 시스템으로부터 제 1 스트라이프의 제 2 읽기 동작을 수행한다.
N개의 장치 오류들을 복구하는 시스템
일부 실시 예들에서, RAID-0 시스템은 복수의(예를 들어, N개) 오류 복구 스토리지 장치들의 오류를 수용하도록 구현될 수 있다. 그러한 시스템의 예시적인 실시 예는 도 4a 내지 4c를 참조하여 설명된 실시 예와 유사한 방식으로 구현 및 동작할 수 있으나, 각 스토리지 장치의 복구 공간 크기 R은 시스템이 수용할 수 있는 오류 스토리지 장치들(110A)의 수 N을 고려하여 결정될 수 있다. 예를 들어, 일부 실시 예들에서, 복구 공간의 백분율(예를 들어, b 퍼센트, 예약 비율(reservation ratio)로도 지칭될 수 있는)은 각 스토리지 장치의 복구 공간 크기 R(단, R=(b/100)*C)를 결정하는데 사용될 수 있다. M개의 스토리지 장치들을 포함하고, N개의 읽기 전용 모드로 전환될 수 있는 오류 스토리지 장치들을 수용할 수 있는 시스템에 대한 일부 실시 예들에서, N/M<=b/100과 같이 설정된 b는 N개의 오류 스토리지 장치들(110A)이 남아있는 영향 받지 않은 스토리지 장치들(live 스토리지 장치들로 지칭될 수 있다)의 복구 공간에 쓰기 될 수 있도록 한다. 예를 들어, 5개의 스토리지 장치들을 포함하고, 2개의 읽기 전용 모드로 전환될 수 있는 오류 스토리지 장치들을 수용할 수 있는 시스템에서, b는 2/5=40퍼센트로 설정될 수 있다. 따라서, 각 스토리지 장치의 복구 공간 크기 R는 R=40/100*C로 설정될 수 있다. 영향 받지 않은 스토리지 장치(110A) 각각의 복구 공간 R은 n=R/(스트립 크기) 일 때 n개의 스트립들을 수용할 수 있으나, 이 실시 예에서, R은 R=(b/100)*C로 설정될 수 있다. 복구 공간은 시스템 동작 전, 동작 중 동적으로, 또는 이들의 조합에 따라 정적으로 사전 할당될 수 있다.
N개의 오류 복구 스토리지 장치의 오류들을 수용할 수 있는 시스템에서, M'는 M'<=M과 같이 영향 받지 않은(예를 들어, live) 스토리지 장치들의 수를 나타낼 수 있다. 일부 실시 예들에서, 영향 받지 않은 스토리지 장치들(110B)의 드라이브 ID는 이하의 수학식 2에 따라 재할당 될 수 있다.
Figure pat00005
Figure pat00006
Figure pat00007
Figure pat00008
대체 드라이브 번호들을 이용하여, 쓰기 동작을 위한 타깃 스토리지 장치는 타깃 드라이브 ID = sid%(M'-1) 공식을 사용하여 암시적으로 식별될 수 있고, 타깃 드라이브 ID는 타깃 스토리지 장치의 (새로운)드라이브 식별 번호를 대체할 수 있고, 그리고 sid는, 일반적으로 오류 스토리지 장치(110A)에 쓰기 되어왔고, 이제 타깃 드라이브 ID가 있는 타깃 스토리지 장치에 쓰기될 수 있는, 스트립의 스트립 식별자일 수 있다.
도 6은 본 개시의 실시 예들에 따른 RAID-0 시스템의 실시 예의 개략도를 보여준다. 도 6에 도시된 실시 예는 4개의 오류 복구 스토리지 장치들(110)(즉, M=4)를 포함할 수 있다. 4개의 오류 복구 스토리지 장치들(110)에서, 드라이브 1 및 드라이브 2로 식별되는 스토리지 장치들은 읽기 전용 모드로 전환된다. 따라서, M'=2 이다. 상술된 수학식 2를 적용하면, 드라이브 0은 새로운 드라이브 ID 0에 매핑된 상태로 유지되고(예를 들어, 1 mod 1), 그리고 드라이브 3은 새로운 드라이브 ID 1로 매핑(예를 들어, 3 mod 1)될 수 있다.
또한 타깃 드라이브 ID = sid % (M′ 공식을 이용하면, 스트라이프 1이 쓰기 되는 경우, 스트라이프 ID=1이고, 따라서 타깃 드라이브 ID = 1%2=1이다. 즉, 타깃 드라이브는 대체(새로운) 드라이브 식별 번호 1을 가진(예를 들어, 이전에는 드라이브 2인) 스토리지 장치(110B)일 수 있다.
일부 실시 예들에서, 제 1 오류 스토리지 장치(110A)가 읽기 전용 모드로 전환되는 때, RAID-0시스템은 볼륨 매니저(115)가 (i) 메타데이터(metadata) 및 오류 스토리지 장치(110A)의 복구된(rescued) 사용자 데이터를 위해, 남아 있는 영향 받지 않은 스토리지 장치들(110B) 각각에 복구 공간을 할당(적절한 복구 공간이 아직 할당되지 않았거나, 또는 불충분한 공간이 할당된 경우)하거나, (ii) 제 1 오류 스토리지 장치(110A)를 위해 제 1 매핑 테이블을 생성 및/또는 유지하여, 긴급 모드로 전환할 수 있다. RAID-0 시스템은 상술된 단일한 장치 오류의 실시 예와 유사한 방식으로 동작할 수 있다.
일부 실시 예들에서, 제 2 오류 스토리지 장치(110A)가 읽기 전용 모드로 전환하는 경우, RAID-0 시스템은 다시 한번 메타데이터(metadata) 및 오류 스토리지 장치(110A)의 복구된(rescued) 사용자 데이터를 위해, 남아 있는 영향 받지 않은 스토리지 장치들(110B) 각각에 복구 공간을 할당(적절한 복구 공간이 아직 할당되지 않았거나, 또는 불충분한 공간이 할당된 경우)할 수 있다. 일부 실시 예들에서, RAID-0 시스템은 제 2 오류 스토리지 장치(110A)에 대한 제 2 매핑 테이블을 생성 및/또는 유지할 수 있다. 매핑 테이블들 각각은 제 L 매핑 테이블(L은1,2, … ,M')로 지정될 수 있고, 제 L 매핑 테이블은 제 L 오류 스토리지 장치에 대응될 수 있다. 다른 실시 예들에서, RAID-0 시스템은, 오류 스토리지 장치들(110A) 전체의 스트립들 및/또는 데이터 스트라이프들을 영향 받지 않은 스토리지 장치(110B)로의 매핑을 위한 단일한 매핑 테이블을 생성 및/또는 수정할 수 있다. 일부 실시 예들에서, 하나 이상의 매핑 테이블은 예를 들어, RAID 구현을 위한 DDF(disk data format) 앞의 유보된(reserved) 복구 공간에 저장될 수 있다.
RAID-0 시스템은 예를 들어, 수학식 2에 기초하여, 영향 받지 않은 스토리지 장치들(110B)의 드라이브 ID들을 재할당 할 수 있고, 읽기 전용 모드로 동작하는 두 개의 오류 스토리지 장치들(110A)로 계속 동작할 수 있다.
호스트로부터 읽기 명령이 수신되면, 볼륨 매니저(115)는 하나 이상의 비상 매핑 테이블들을 확인하여, 읽기 할 스트라이프에 대한 엔트리가 생성되었는지 여부를 결정할 수 있다. 엔트리가 생성되지 않은 경우, 볼륨 매니저(115)는 정상 동작과 같이, 두 개의 오류 스토리지 장치들(110A)를 포함하는 스토리지 장치들(110) 각각으로부터 스트립을 읽기 하는 것처럼 스트라이프를 읽기할 수 있다. 하나 이상의 비상 매핑 테이블들이 스트라이프에 대한 엔트리를 포함하는 경우, 엔트리는 일반적으로 오류 스토리지 장치들(110A) 중 하나 또는 둘로부터 일반적으로 읽기 된 스트립을 읽기 할 위치를 결정하는데 사용될 수 있다.
호스트로부터 쓰기 명령이 수신되면, 볼륨 매니저(115)는 하나 이상의 비상 매핑 테이블들을 확인하여, 읽기 할 스트라이프에 대한 엔트리가 생성되었는지 여부를 결정할 수 있다. 아직 엔트리가 생성되지 않은 경우(예를 들어, 스트라이프가 등록되지 않은 경우), 볼륨 매니저(115)는 하나 이상의 비상 매핑 테이블에 엔트리를 생성하여, 일반적으로 오류 스토리지 장치들(110A)에(읽기 전용 모드로 전환된 스토리지 장치들) 쓰기 된 스트립을 기입 할 위치를 나타낼 수 있다. 하나 이상의 비상 매핑 테이블이 이미 스트라이프에 대한 엔트리를 포함하는 경우, 엔트리는 일반적으로 오류 스토리지 장치들(110A)에 쓰기 되었을 스트립들을 기록할 곳을 결정하는데 사용될 수 있다. 어느 경우든, 볼륨 매니저(115)는 일반적으로 오류 스토리지 장치들(110A)에 쓰기 되었던 스트립들을 다른 스토리지 장치들(110B)의 복구 공간에 기입하면서, 스트립들을 스토리지 장치들(110)의 어레이에 기입 할 수 있다.
데이터 블록 쓰기를 통한 복구 공간 관리
도 7은 본 개시의 실시 예들에 따른, 데이터 블록 쓰기로 복구 공간 관리를 구현할 수 있는 RAID-0 시스템의 실시 예를 보여주는 개략도이다. 도 7에 도시된 실시 예는, 읽기 전용 모드로 전환된 드라이브 1을 포함하는, 네 개의 오류 복구 스토리지 장치들(110)(예를 들어, M=4)를 포함할 수 있다. 도 7에 도시된 실시 예는, 도 4a 내지 4c를 참조하여 설명된 실시 예와 유사한 방식으로 구현 및 동작할 수 있으나, 그러나 전체 스트립을 오류 스토리지 장치(110A)로부터 단일한 영향을 받지 않은 스토리지 장치(110B)의 복구 공간으로 리디렉팅(redirecting)하는 대신, 스트립은 남아있는 영향을 받지않은 스토리지 장치들(110B)의 일부 또는 전부의 복구 공간들에 분산된 복구 블록들(또한 R-블록들로 지칭될 수 있다)로 분산될 수 있다.
각각의 스토리지 장치(110)내에서, 복구 공간의 일부 또는 전부는 복구 블록들(R-블록들로 지칭될 수 있는)로 분할될 수 있다. R-블록들의 크기는 예를 들어, 스토리지 장치에서 일반적으로 사용되는 데이터 블록의 크기와 동일한 크기로 설정될 수 있다.
일부 실시 예들에서, 볼륨 매니저(115)는 영향을 받지 않은 스토리지 장치들(110B)의 복구 공간들로 매핑된 스트라이프를 나타내기 위해, 각 엔트리가 단순히 스트라이프 ID일 수 있는, 비상 매핑 테이블을 유지할 수 있다. 예를 들어, 도 7에 도시된 실시 예에서, 드라이브 ID 1로 도시된 스토리지 장치(110A)는 읽기 전용 모드에 진입하고, (스트라이프 ID)=(1)로 나타낸 비상 매핑 테이블의 엔트리는, 스트립(1,1)이 3개의 청크들(chunk)로 분할되고, 모든 영향 받지 않은(예를 들어 live) 스토리지 장치들(110B)에 매핑되는 것을 나타낼 수 있다.
일부 실시 예들에서, 각 스토리지 장치의 복구 공간에 저장될 수 있는, 오류 스토리지 장치로부터의 스트립 부분(chunk로 지칭될 수 있는)은 strip size/block size/(M-1)과 동일 할 수 있다. 영향을 받지 않은 스토리지 장치들(110B)의 수로 균일하게 분할되지 않는 스트립 크기 및 블록 크기를 수용하기 위해, 타깃 드라이브 ID<(스트립 크기/블록 크기)mod(M-1) 공식을 만족하는 타깃 스토리지 장치(110B)의 복구 공간에 저장된 청크(chunk)는 추가 블록을 포함할 수 있다. 따라서, 도 7에 도시된 예시에 대해 스트립(1,1)은 10개의 블록들을 포함할 수 있고, 새로운 드라이브 ID 1에 저장된 스트립(1,1)의 청크는 3개의 블록들을 포함할 수 있고, 새로운 드라이브 ID 2에 저장된 청크는 3개의 블록들을 포함할 수 있으나, 새로운 드라이브 ID 0에 저장된 청크는, 새로운 드라이브 ID 0는 10 mod 3(1과 같다)보다 작기 때문에 4개의 블록들을 포함할 수 있다.
도 7에 도시된 실시 예에서, 타깃 드라이브 ID(예를 들어, 읽기 또는 쓰기 동작을 위한)는 예를 들어, M이 스토리지 장치들(110)의 수를 나타낼 때, 타깃 드라이브ID=스트라이프 ID % (M-1) 식과 같이 암시적으로 결정될 수 있다. 예를 들어, M=4 이고, 스트라이프 1이 쓰기 되는 경우, 스트라이프 ID=1 이므로, 타깃 드라이브 ID=1%3=1 이다.
도 7에 도시된 실시 예에서, 볼륨 매니저(115)는 예를 들어, 이하의 수학식 3을 사용하여, 영향을 받지 않은 스토리지 장치(110B)에 드라이브 식별 번호를 새로 할당할 수 있다.
Figure pat00009
Figure pat00010
Figure pat00011
Figure pat00012
일부 실시 예들에서, 스토리지 장치(110) 각각의 복구 공간의 크기 R은 예를 들어, R=C/M으로 설정될 수 있다. C는 스토리지 장치들(110)의 어레이의 스토리지 장치들 각각의 용량을 의미할 수 있고, 그리고 M은 스토리지 장치들의 총 수량을 의미할 수 있다. 스토리지 장치(110)의 복구 공간 R은 n=R/(블록 크기)일 때, n개의 블록들을 수용할 수 있다.
호스트로부터 읽기 명령이 수신된 경우, 볼륨 매니저(115)는 하나 이상의 비상 매핑 테이블들을 확인하여, 읽기 할 스트립의 스트라이프에 대한 엔트리가 생성되었는지 여부를 결정할 수 있다. 엔트리가 생성되지 않은 경우, 볼륨 매니저(115)는 정상 동작과 같이, 오류 스토리지 장치들(110A)를 포함하는 스토리지 장치들(110) 각각으로부터 스트립을 읽는 것처럼 스트라이프를 읽기 할 수 있다. 비상 매핑 테이블이 스트라이프에 대한 엔트리를 포함하는 경우, 오류 스토리지 장치(110A)에 대응하는(이 예시에서, 드라이브1) 스트립의 청크들은, 영향을 받지 않은 스토리지 장치들(110B)의 복구 공간으로부터 읽기 될 수 있고(이 예시에서, 새로운 드라이브 ID 0, 1, 및 2로 지칭되는 스토리지 장치들) 스트립 (1,1)로 재조합될 수 있다.
호스트로부터 쓰기 명령이 수신되면, 볼륨 매니저(115)는 비상 매핑 테이블들을 확인하여, 읽기 할 스트립의 스트라이프에 대한 엔트리가 생성되었는지 여부를 결정할 수 있다. 아직 엔트리가 생성되지 않은 경우(예를 들어, 스트라이프가 등록되지 않은 경우), 볼륨 매니저(115)는 비상 매핑 테이블에 엔트리를 생성하여, 일반적으로 오류 스토리지 장치들(110A)에(읽기 전용 모드로 전환된 스토리지 장치) 쓰기 된 스트립의 청크들을, 영향 받지 않은 스토리지 장치들(110B)에 쓰기 할 수 있음을 나타낼 수 있다. 비상 매핑 테이블이 이미 스트라이프에 대한 엔트리를 포함하는 경우, 엔트리는 일반적으로 오류 스토리지 장치들(110A)에 쓰기 되었을 스트립의 청크들을, 영향 받지 않은 스토리지 장치들(110B)에 쓰기 할 수 있음을 결정하는데 사용될 수 있다. 어느 경우든, 볼륨 매니저(115)는 도 7에 도시된 바와 같이, 드라이브 1로 의도되었던, 스트립의 청크들을 영향 받지않은 스토리지 장치들(110B)의 복구 공간으로 쓰기할 수 있다.
QoS관리를 통한 오류 복구 시스템
일부 실시 예들에서, FR-RAID-0 시스템 등의 오류 복구(FR; fault resilient) 스토리지 시스템은 본 개시의 실시 예들에 따른 하나 이상의 QoS(quality-of-service) 관리 기능을 포함할 수 있다. 예를 들어, 사용자 및/또는 볼륨 매니저는 특정 QoS 레벨을 제공하기 위해, RAID 스트라이핑(striping) 구현에서 스트립들의 크기 및/또는 RAID 구현에서 하나 이상의 스토리지 장치들의 복구 공간에 데이터를 쓰기하는데 사용되는 쓰기 기술을 조정할 수 있다.
도 8은 본 개시의 실시 예들에 따른 스토리지 시스템의 QoS(quality-of service) 관리를 구현한 시스템의 실시 예를 보여준다. 도 8에 도시된 실시 예는 예를 들어 하나 이상의 컨트롤 및/또는 설정 입력들(806)을 통해, 스토리지 어레이(804)에 대한 하나 이상의 QoS 기능들을 구현하도록 구성되는 QoS 매니저(802)를 포함할 수 있다. 예를 들어 RAID-0 어레이로 배열될 수 있는 스토리지 어레이(804)는, 임의의 수의 스토리지 장치들(810) 및 볼륨 매니저(815)를 포함할 수 있다. 일부 실시 예들에서, 스토리지 어레이(804)는 본 개시의 오류 복구 스토리지 장치들, 시스템들, 및/또는 방법들로 적어도 일부분이 구현될 수 있다.
Qos 매니저(802)는 QoS 로직(808)을 포함할 수 있다. QoS 로직(808)은 예를 들어, 스토리지 어레이(804)의 스토리지 장치들(811A)의 수, 하나의 스트립의 데이터 블록들의 수(811B), 복구 공간에서 사용되는 하나 이상의 쓰기 방법들(811C), 스토리지 어레이(804)에서 수용될 수 있는 오류 스토리지 장치들(811D)의 수, 스토리지 어레이(804)에서 사용되는 스토리지 장치들의 용량(811E), 및/또는 그와 유사한 것과 같은, 임의의 수의 QoS와 관련된 파라미터들을 수신, 활용, 제어, 설정, 지시, 알림, 및/또는 그와 유사한 것들을 할 수 있다.
예를 들어 일부 실시 예들에서, 성능과 같은 QoS 메트릭(metric)은 이하의 방식들 중 임의의 수의 방식에 의해, 파라미터들(811A 내지 811E)에 의해 영향을 받을 수 있다. 스토리지 어레이(804)의 스토리지 장치들(811A)의 수의 증가는 예를 들어, 스토리지 용량, 레이턴시(latency), 처리량(throughput), 및/또는 그와 유사한 것들의 측면에서 성능을 향상시킬 수 있다. 스트립의 데이터 블록들(811B)의 수는 예상되는 스토리지 처리들(transaction)의 유형에 기초하여 조정될 수 있다. 예를 들어, 더 큰 데이터 블록들을 사용하는 것은, 더 크고 덜 빈번한 처리들을 통해 큰 처리량들을 제공할 수 있는 반면, 더 작은 데이터 블록들은 더 작고 더 빈번한 처리들을 통해 더 큰 IOPS(input and/or output operations per second)를 제공할 수 있다. 또한, 쓰기 방법(811C)은 예를 들어, 데이터 블록들을 다수의 스토리지 장치들의 복구 공간들에 쓰는 것이, 단일한 스토리지 장치의 복구 공간에 스트립을 쓰기 하는 것보다 짧은 시간을 소요하기 때문에, 조정될 수 있다. 스토리지 어레이(804)에 의해 수용될 수 있는 오류 스토리지 장치들(811D)의 수가 증가하는 것은, 예를 들어 더 많은 오류 장치들을 수용하는 것은 스토리지 장치 용량의 더 큰 비율을 할당해야하기 때문에, 성능을 저하시킬 수 있다.
QoS 매니저(802)는 자동, 수동 또는 그것들의 조합으로 동작할 수 있다. 예를 들어 QoS 매니저(802)는 스토리지 장치(804)로부터 하나 이상의 파라미터들(812)를 모니터링하는 것에 응답하여 자동으로 동작할 수 있다. 예를 들어 QoS 매니저(802)는 사용자 인터페이스(816)을 통해 수신된 하나 이상의 파라미터들(814)에 응답하여 수동으로 동작할 수 있다. 또한, QoS 매니저(802)는 사용자 인터페이스(816)을 통해 하나 이상의 출력들(818)을 제공하여, 예를 들어 하나 이상의 스토리지 장치들(810)을 추가 및/또는 제거하기 위해, 사용자에게 하나 이상의 특정한 작업을 지시할 수 있다.
일부 실시 예들에서, 사용자로부터 시스템 요구사항들이 주어지면, QoS 매니저(802)는 스토리지 성능 정보에 기초하여 하나 이상의 파라미터들을 결정할 수 있다. 예를 들어, 사용자는 스토리지 어레이(804)가 32K 블록들에 대해 500K IOPS 및 하나의 스토리지 장치 오류를 수용할 수 있고 8TB의 스토리지 용량을 가진 RF-RAID-0 구성으로 동작할 수 있음을 지정할 수 있다. 이러한 입력들에 기초하여, QoS 매니저(802)는 지정된 성능을 제공하기 위해 사용될 수 있는 스토리지 장치들의 수에 도달하기 위해, 이하의 파라미터들을 결정할 수 있다.
스토리지 장치 용량 : 1TB;
스토리지 장치당 4K 쓰기 IOPS : 400K;
스토리지 장치당 32K 쓰기 IOPS : 200K; 및
RAID 스트립 크기 32K.
용량에 대해: (1-1/M) * 2 * (M-1) >= 8, M^2 - 6M + 1 > 0, (M-3)^2 > 8, 따라서, M=6
성능에 대해: 200 K * (M - 1) / 2 >= 500 K, 따라서 M=6.
따라서, 지정된 성능을 제공하는데 6개의 스토리지 장치들이 사용될 수 있다.
일부 실시 예들에서, QoS 매니저(802) 및/또는 QoS 로직(808)은 조합 논리, 순차 논리, 하나 이상의 타이머들, 카운터들, 레지스터들, 상태 장치들, CPLD들(complex programmable logic device), FPGA들(field programmable gate array), ASIC들(application specific integrated circuits), CISC(complex instruction set computer) 프로세서들 및/또는 RISC(reduced instruction set computer) 프로세서들 및/또는 그와 유사한 것들, DRAM(dynamic random access memory) 및/또는 SRAM(static random access memory)과 같은 휘발성 메모리들, 플래시 메모리와 같은 비휘발성 메모리들 및/또는 그와 유사한 것에 저장되는 실행 명령들, 그리고 GPU들(graphics processing unit), NPU들(neural processing unit), 및/또는 그와 유사한 것들을 포함할 수 있는, 하드웨어, 소프트웨어, 또는 그들의 임의의 조합으로 구현될 수 있다.
도 9는 본 개시의 실시 예들에 따른 스토리지 어레이의 동작 방법의 실시 예를 보여준다. 스토리지 어레이의 동작 방법은 902 단계에서 시작할 수 있다. 904 단계에서, 스토리지 어레이의 제 1 오류 복구 스토리지 장치의 제 1 오류 복구 동작 모드를 결정할 수 있다. 906 단계에서, 스토리지 어레이의 제 2 오류 복구 스토리지 장치의 제 2 오류 복구 동작 모드를 결정할 수 있다. 908 단계에서, 스토리지 어레이의 동작 방법은, 스토리지 어레이의 하나 이상의 추가적인 오류 복구 스토리지 장치들의 하나 이상의 복구 공간들을 할당할 수 있다. 910 단계에서, 스토리지 어레이의 동작 방법은, 제 1 오류 복구 스토리지 장치로부터 하나 이상의 복구 공간들로 사용자 데이터를 매핑할 수 있다. 912 단계에서, 스토리지 어레이의 동작 방법은, 제 2 오류 복구 스토리지 장치로부터 하나 이상의 복구 공간들로 사용자 데이터를 매핑할 수 있다. 스토리지 어레이의 동작 방법은 914 단계에서 종료될 수 있다.
도 10은 본 개시의 실시 예들에 따른 스토리지 어레이의 동작 방법의 다른 실시 예를 보여준다. 스토리지 어레이의 동작 방법은 1002 단계에서 시작할 수 있다. 1004 단계에서, 스토리지 어레이의 동작 방법은 스토리지 어레이의 제 1 오류 복구 스토리지 장치의 제 1 복구 공간을 할당할 수 있다. 1006 단계에서, 스토리지 어레이의 동작 방법은, 스토리지 어레이의 제 2 오류 복구 스토리지 장치의 제 2 복구 공간을 할당할 수 있다. 1008단계에서, 스토리지 어레이의 동작 방법은, 스토리지 어레이의 제 3 오류 복구 스토리지 장치의 오류 복구 동작 모드를 결정할 수 있다. 1010단계에서, 스토리지 어레이의 동작 방법은, 오류 복구 동작 모드에 기초하여, 제 3 오류 복구 스토리지 장치로부터 제 1 복구 공간 및 제 2 복구 공간으로 사용자 데이터를 매핑할 수 있다. 스토리지 어레이의 동작 방법은 1012 단계에서 종료될 수 있다.
도 11은 본 개시의 실시 예들에 따른 스토리지 어레이의 추가적인 동작 방법의 실시 예를 보여준다. 스토리지 어레이의 동작 방법은 1102 단계에서 시작할 수 있다. 1104 단계에서, 스토리지 어레이의 동작 방법은, 스토리지 어레이의 제 1 오류 복구 스토리지 장치의 제 1 파라미터를 결정할 수 있다. 1106 단계에서, 스토리지 어레이의 동작 방법은, 스토리지 어레이의 제 2 오류 복구 스토리지 장치의 제 2 파라미터를 결정할 수 있다. 1108 단계에서, 스토리지 어레이의 동작 방법은, 제 1 파라미터 및 제 2 파라미터에 기초하여, 스토리지 어레이의 QoS(quality-of-service)를 결정할 수 있다. 스토리지 어레이의 동작 방법은 1110 단계에서 종료될 수 있다.
도 9 내지 도 11에 도시된 실시 예와 관련하여 설명된 동작들 및/또는 구성 요소들 뿐 아니라 이하에서 설명되는 다른 모든 실시 예들의 동작들 및/또는 구성 요소들은 예시적인 동작들 및/또는 구성 요소들이다. 일부 실시 예들에서, 일부 동작들 및/또는 구성 요소들은 생략될 수 있고, 다른 동작들 및/또는 구성 요소들이 포함될 수 있다. 또한 일부 실시 예들에서, 동작들 및/또는 구성 요소들의 시간적 및/또는 공간적 순서가 달라질 수 있다.
상술된 실시 예들은 다양한 세부적인 구현들의 맥락에서 설명되었으나, 본 개시의 원리들은 이들 또는 다른 특정한 세부적인 구현들에 제한되지 않는다. 예를 들어, 일부 스토리지 어레이들은, 스토리지 장치들 및/또는 복구 공간들의 용량 및/또는 크기가 각 스토리지 장치들마다 동일한, 시스템의 맥락에서 설명되었으나, 스토리지 장치들 및/또는 복구 공간들의 용량 및/또는 크기가 다른 스토리지 장치들도 사용될 수 있다. 다른 예를 들면, 일부 실시 예들은 RAID-0와 같은 RAID 시스템의 맥락에서 설명되었으나, 발명의 원리에는 스토리지 어레이들의 다른 임의의 유형이 적용될 수 있다.
다른 예를 들어, 일부 기능은 특정 구성 요소에 의해 구현되는 것으로 설명되었으나, 다른 실시 예들에서, 기능은 다양한 사용자 인터페이스들을 갖는, 다른 위치에 있는 서로 다른 시스템들 및 구성 요소들로 분산되어 있을 수 있다. 특정 실시 예들은 특정한 절차들, 동작들 등을 갖는 것으로 설명되었으나, 이러한 용어들은 복수의 프로세스들, 동작들로 구현될 수 있는 특정한 프로세스, 단계를 포함할 수 있고, 단일한 프로세스, 단계로 통합될 수 있는 복수의 프로세스들, 동작들을 포함할 수 있다. 구성 요소에 대한 참조는 구성요소의 일부만을 참조할 수 있다. 예를 들어, 집적 회로에 대한 참조는, 집적회로의 전체 또는 일부 부분만을 지칭할 수 있고, 그리고 블록에 대한 참조는 전체 블록 또는 하나 이상의 서브 블록들을 지칭할 수 있다. 본 개시 및 청구범위에서 “제 1” 및 “제 2”와 같은 용어의 사용은 수식하는 것들을 구분하기 위한 목적으로만 사용될 수 있고, 문맥과 달리 명백하게 나타나지 않는 한, 공간적 또는 시간적 순서를 나타내지 않을 수 있다. 일부 실시 예들에서, “기초하여”, “기반하여”, “근거하여” 등의 용어는 “적어도 부분적으로 기초, 기반 또는 근거함”을 의미할 수 있다. 일부 실시 예들에서, “사용 불가능”은 “적어도 부분적으로 사용 불가능함”을 의미할 수 있다. 제 1 구성요소에 대한 참조는 제 2 구성요소의 존재를 의미하지 않을 수 있다. 섹션 제목들과 같은 다양한 구조적 도움들과 유사한 것들은 편의를 위해 제공될 수 있으나, 이러한 도움들에 따라 배열된 주제들 및 본 개시의 원리는 이러한 구조적 도움들에 의해 정의되거나 제한되지 않는다.
상술된 다양한 세부사항들 및 실시 예들은 본 개시의 기술적 사상들에 따라 추가적인 실시 예들을 생산하기 위해 결합될 수 있다. 본 특허 개시의 기술적 사상은 발명의 기술적 사상의 핵심에서 벗어나지 않고 배열 및 세부 사항들이 수정될 수 있기 때문에, 그러한 변경들 및 수정들은 이하의 청구범위의 권리범위에 속하는 것으로 간주된다.
105 : 호스트
115 : 볼륨 매니저
110 : 스토리지 장치
120 : 스토리지 컨트롤러
125 : 스토리지 매체

Claims (20)

  1. 스토리지 장치의 동작 방법에 있어서,
    상기 스토리지 장치의 오류 상태를 판별하는 단계;
    상기 스토리지 장치의 상기 오류 상태에 기초하여, 오류 복구 모드를 선택하는 단계; 및
    상기 선택된 오류 복구 모드로 상기 스토리지 장치를 작동하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 선택된 오류 복구 모드는 전력 순환 모드를 포함하는 방법.
  3. 제 1 항에 있어서,
    상기 선택된 오류 복구 모드는 재포맷 모드를 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 선택된 오류 복구 모드는 용량 감소된 읽기 전용 모드를 포함하는 방법.
  5. 제 1 항에 있어서,
    상기 선택된 오류 복구 모드는 용량 감소된 모드를 포함하는 방법.
  6. 제 1 항에 있어서,
    상기 선택된 오류 복구 모드는 성능 감소된 모드를 포함하는 방법.
  7. 제 1 항에 있어서,
    상기 선택된 오류 복구 모드는 읽기 전용 모드를 포함하는 방법.
  8. 제 1 항에 있어서,
    상기 선택된 오류 복구 모드는 부분적 읽기 전용 모드를 포함하는 방법.
  9. 제 1 항에 있어서,
    상기 선택된 오류 복구 모드는 임시 읽기 전용 모드를 포함하는 방법.
  10. 제 1 항에 있어서,
    상기 선택된 오류 복구 모드는 임시 부분적 읽기 전용 모드를 포함하는 방법.
  11. 제 1 항에 있어서,
    상기 선택된 오류 복구 모드는 취약 모드를 포함하는 방법.
  12. 제 1 항에 있어서,
    상기 선택된 오류 복구 모드는 일반 모드를 포함하는 방법.
  13. 제 1 항에 있어서,
    상기 스토리지 장치는, 호스트로부터 수신된 명령을 수행하도록 구현된 방법.
  14. 제 13 항에 있어서,
    상기 명령은 네임스페이스 용량 관리 명령을 포함하는 방법.
  15. 제 14 항에 있어서,
    상기 네임스페이스 용량 관리 명령은 크기 재조정 서브 명령을 포함하는 방법.
  16. 제 14 항에 있어서,
    상기 네임스페이스 용량 관리 명령은 0-크기 네임스페이스 서브명령을 포함하는 방법.
  17. 스토리지 매체; 및
    스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는:
    상기 스토리지 장치의 오류 상태를 판별하고;
    상기 스토리지 장치의 상기 오류 상태에 기초하여, 오류 복구 모드를 선택하고; 그리고
    상기 선택된 오류 복구 모드로 상기 스토리지 장치를 작동하는 스토리지 장치.
  18. 제 17 항에 있어서,
    상기 선택된 오류 복구 모드는 전력 순환 모드, 재포맷 모드, 용량 감소된 읽기 전용 모드, 용량 감소된 모드, 성능 감소된 모드, 읽기 전용 모드, 부분적 읽기 전용 모드, 임시 읽기 전용 모드, 임시 부분적 읽기 전용 모드, 또는 취약 모드 중 하나를 포함하는, 스토리지 장치.
  19. 제 17 항에 있어서,
    상기 스토리지 장치는 호스트로부터 수신된 네임스페이스 용량 관리 명령을 수행하도록 구현된, 스토리지 장치.
  20. 호스트; 및
    상기 호스트와 연결된 적어도 하나의 스토리지 장치를 포함하고,
    상기 스토리지 장치는:
    상기 스토리지 장치의 오류 상태를 판별하고;
    상기 스토리지 장치의 상기 오류 상태에 기초하여 오류 복구 모드를 선택하고;
    상기 선택된 오류 복구 모드를 작동하고; 그리고
    상기 호스트로 상기 선택된 오류 복구 모드를 보고하도록 구현된 시스템.

KR1020210060605A 2020-05-11 2021-05-11 오류 복구 스토리지를 위한 시스템, 방법 및 장치 KR20210138502A (ko)

Applications Claiming Priority (12)

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
US202063128001P 2020-12-18 2020-12-18
US63/128,001 2020-12-18
US17/232,144 US20210349782A1 (en) 2020-05-11 2021-04-15 Systems, methods, and devices for fault resilient storage
US17/232,144 2021-04-15

Publications (1)

Publication Number Publication Date
KR20210138502A true KR20210138502A (ko) 2021-11-19

Family

ID=78412659

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210060605A KR20210138502A (ko) 2020-05-11 2021-05-11 오류 복구 스토리지를 위한 시스템, 방법 및 장치

Country Status (4)

Country Link
US (3) US20210349782A1 (ko)
KR (1) KR20210138502A (ko)
CN (1) CN113641303A (ko)
TW (1) TW202147092A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11803446B2 (en) * 2020-07-13 2023-10-31 Samsung Electronics Co., Ltd. Fault resilient storage device
US20210349780A1 (en) * 2020-05-11 2021-11-11 Samsung Electronics Co., Ltd. Systems, methods, and devices for data recovery with spare storage device and fault resilient storage device
US11782791B2 (en) * 2021-08-25 2023-10-10 Western Digital Technologies, Inc. System and method for memory hang recovery using a distributed power management system

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5914967A (en) * 1997-01-18 1999-06-22 Hitachi Computer Products (America), Inc. Method and apparatus for protecting disk drive failure
US6886108B2 (en) * 2001-04-30 2005-04-26 Sun Microsystems, Inc. Threshold adjustment following forced failure of storage device
US7395452B2 (en) * 2004-09-24 2008-07-01 Microsoft Corporation Method and system for improved reliability in storage devices
US20060075185A1 (en) * 2004-10-06 2006-04-06 Dell Products L.P. Method for caching data and power conservation in an information handling system
JP2007293448A (ja) * 2006-04-21 2007-11-08 Hitachi Ltd ストレージシステム及びその電源制御方法
JP4884885B2 (ja) * 2006-08-25 2012-02-29 株式会社日立製作所 記憶制御装置及び記憶制御装置の障害回復方法
US8099623B1 (en) * 2008-10-08 2012-01-17 Netapp, Inc. Efficient distributed hot sparing scheme in a parity declustered RAID organization
US8799705B2 (en) * 2012-01-04 2014-08-05 Emc Corporation Data protection in a random access disk array
US9542272B2 (en) * 2014-03-24 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Write redirection in redundant array of independent disks systems
US9477549B2 (en) * 2014-09-15 2016-10-25 Sandisk Technologies Llc Methods, systems, and computer readable media for address and data integrity checking in flash memory operations
US9519545B2 (en) * 2014-11-11 2016-12-13 Facebook, Inc. Storage drive remediation in a raid system
US10402092B2 (en) * 2016-06-01 2019-09-03 Western Digital Technologies, Inc. Resizing namespaces for storage devices
US10210060B2 (en) * 2016-08-22 2019-02-19 Hewlett Packard Enterprise Development Lp Online NVM format upgrade in a data storage system operating with active and standby memory controllers
US10936453B2 (en) * 2017-09-19 2021-03-02 Seagate Technology Llc Data storage systems using elastic spares
US11869586B2 (en) * 2018-07-11 2024-01-09 Pure Storage, Inc. Increased data protection by recovering data from partially-failed solid-state devices
US10891068B2 (en) * 2019-06-03 2021-01-12 International Business Machines Corporation Temporary relocation of data within local storage of a dispersed storage network

Also Published As

Publication number Publication date
US20220291996A1 (en) 2022-09-15
TW202147092A (zh) 2021-12-16
US20210349782A1 (en) 2021-11-11
CN113641303A (zh) 2021-11-12
US20220269566A1 (en) 2022-08-25

Similar Documents

Publication Publication Date Title
US9378093B2 (en) Controlling data storage in an array of storage devices
US10459639B2 (en) Storage unit and storage system that suppress performance degradation of the storage unit
US20120023287A1 (en) Storage apparatus and control method thereof
KR20210138502A (ko) 오류 복구 스토리지를 위한 시스템, 방법 및 장치
US9891989B2 (en) Storage apparatus, storage system, and storage apparatus control method for updating stored data stored in nonvolatile memory
JP2001290746A (ja) I/o要求に優先順位を与える方法
US20230244570A1 (en) Fault resilient storage device
US20210349781A1 (en) Systems, methods, and devices for data recovery using parity space as recovery space
US9760296B2 (en) Storage device and method for controlling storage device
US20210349780A1 (en) Systems, methods, and devices for data recovery with spare storage device and fault resilient storage device
WO2014045329A1 (en) Storage system and storage control method
JP2015179419A (ja) キャッシュ制御装置及びその制御方法、ストレージ装置、並びにコンピュータ・プログラム
US12026055B2 (en) Storage device with fault resilient read-only mode
US20230297249A1 (en) Storage system and method of controlling storage system
US10956073B2 (en) Determination of storage area pool into which to incorporate spare storage device

Legal Events

Date Code Title Description
A201 Request for examination