KR20220008214A - 결합 복원 저장 장치들을 갖는 레이드 시스템 - Google Patents

결합 복원 저장 장치들을 갖는 레이드 시스템 Download PDF

Info

Publication number
KR20220008214A
KR20220008214A KR1020210066328A KR20210066328A KR20220008214A KR 20220008214 A KR20220008214 A KR 20220008214A KR 1020210066328 A KR1020210066328 A KR 1020210066328A KR 20210066328 A KR20210066328 A KR 20210066328A KR 20220008214 A KR20220008214 A KR 20220008214A
Authority
KR
South Korea
Prior art keywords
storage device
stripe
identification number
read
storage
Prior art date
Application number
KR1020210066328A
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 KR20220008214A publication Critical patent/KR20220008214A/ko

Links

Images

Classifications

    • 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/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
    • 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
    • G06F11/1662Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
    • 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/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • 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
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • 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/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/0775Content or structure details of the error report, e.g. specific table structure, specific error fields
    • 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/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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash 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
    • 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/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/1438Restarting or rejuvenating
    • 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/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • 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/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • 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/202Error 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 processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • 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/2089Redundant storage control functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • G06F11/327Alarm or error message display
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)
  • Software Systems (AREA)
  • Retry When Errors Occur (AREA)
  • Hardware Redundancy (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

저장 시스템 및 저장 시스템을 동작시키는 방법이 개시된다. 일부 실시예에서, 상기 시스템은 제1 저장 장치 및 제2 저장 장치를 포함하며, 상기 방법은 상기 제1 저장 장치는 읽기 전용 상태에 있고, 상기 제2 저장 장치는 읽기-쓰기 상태에 있음을 결정하는 단계; 상기 저장 시스템에 대한 제1 스트라이프의 쓰기 동작을 수행하는 단계; 상기 저장 시스템으로부터의 제2 스트라이프의 읽기 동작을 수행하는 단계; 및 상기 저장 시스템으로부터의 상기 제1 스트라이프의 제2 읽기 동작을 수행하는 단계를 포함하며, 상기 쓰기 동작을 수행하는 단계는 상기 제1 스트라이프의 일부를 상기 제2 저장 장치에 쓰는 단계, 및 상기 제1 스트라이프를 위한 맵핑 테이블에 엔트리를 생성하는 단계를 포함한다.

Description

결합 복원 저장 장치들을 갖는 레이드 시스템{RAID SYSTEM WITH FAULT RESILIENT STORAGE DEVICES}
본 개시에 따른 실시예들의 하나 이상의 양태는 데이터 저장 시스템에 관한 것으로, 특히 내부 장애 조건들의 존재하에 복원성을 나타내도록 구성된 데이터 저장 시스템 및 장치에 관한 것이다.
본 배경 설명은 문맥만을 제공하기 위한 것이며, 상기 배경 설명의 어떠한 실시예 또는 개념의 개시도 상기 실시예 또는 상기 개념이 종래 기술이라는 것을 인정하는 것은 아니다.
저장 장치 및 시스템은 다양한 데이터 처리 시스템 내에서 광범위한 적용성을 갖는다. 저장 장치는 온도 센서 장애 또는 방사선에 의한(radiation-induced) 비트 플립(bit flip)을 포함하는 상당한 범위의 내부 장애 조건들에 직면할 수 있을만큼 충분히 복잡하다. 저장 장치 또는 이러한 저장 장치를 사용하는 시스템(예컨대, RAID (Redundant Array of Independent Disks))의 설계시 이러한 장애 조건을 고려하지 않으면 저장 장치의 단일 장애가 전체 저장 장치 및 가능하게는 저장 장치를 포함하는 (RAID 등의) 더 큰 시스템을 동작하지 않게 만들 수 있다.
따라서, 저장 장치 및 저장 장치를 포함하는 시스템을 위한 복원 동작을 위한 시스템 및 방법에 대한 요구가 있다.
따라서, 본 개시의 목적은 다양한 복원 모드들에서 동작할 수 있고 내부 장애에도 불구하고 부분적 기능을 유지하거나 전체 기능으로 복귀할 수 있는 결합 복원 저장 장치들을 갖는 레이드 시스템을 제공하는데 있다.
일부 실시예에서, 장애-복원 저장 장치는 다양한 복원 모드들에서 동작할 수 있고 내부 장애에도 불구하고 부분적 기능을 유지하거나 전체 기능으로 복귀할 수 있다. 저장 장치가 부분적 기능을 유지할 수 있는 방법 중 하나는 일부 상황들에서 읽기-전용 모드로 동작하는 것이며, 읽기-전용 모드에서는 저장 장치가 호스트로부터의 읽기 요청에 응답할 수 있지만 호스트로부터 쓰기 요청을 수신한다면 에러 메시지를 리턴할 수 있다. RAID-0 저장 시스템에서는, 저장 장치가 읽기-전용 모드에서 동작하는 것으로 전환할 수 있는 가능성은 저장 장치가 읽기-전용 모드에서 동작하는 것으로 전환한 후 수행되는 임의의 쓰기 동작에 대한 스트라이프를 구성하는 스트립들을 재분배함으로써 달성될 수 있다.
본 발명의 실시예에 따라 제1 저장 장치 및 제2 저장 장치를 포함하는 저장 시스템을 동작시키는 방법이 제공되는데, 상기 방법은 상기 제1 저장 장치는 읽기 전용 상태에 있고, 상기 제2 저장 장치는 읽기-쓰기 상태에 있음을 결정하는 단계; 상기 저장 시스템에 대한 제1 스트라이프의 쓰기 동작을 수행하는 단계; 상기 저장 시스템으로부터의 제2 스트라이프의 읽기 동작을 수행하는 단계; 및 상기 저장 시스템으로부터의 상기 제1 스트라이프의 제2 읽기 동작을 수행하는 단계를 포함하고, 상기 쓰기 동작을 수행하는 단계는 상기 제1 스트라이프의 일부를 상기 제2 저장 장치에 쓰는 단계, 및 상기 제1 스트라이프를 위한 맵핑 테이블에 엔트리를 생성하는 단계를 포함하고, 상기 제1 읽기 동작을 수행하는 단계는 상기 제1 저장 장치 및 상기 제2 저장 장치로부터 상기 제2 스트라이프의 일부를 읽는 단계를 포함하고, 상기 제2 읽기 동작을 수행하는 단계는 상기 맵핑 테이블은 상기 제1 스트라이프를 위한 엔트리를 포함함을 결정하는 단계, 및 상기 제2 저장 장치로부터 상기 제1 스트라이프의 일부를 읽는 단계를 포함한다.
일부 실시예에서, 상기 저장 시스템은 상기 제1 저장 장치 및 상기 제2 저장 장치를 포함하는 복수의 저장 장치들을 포함하며, 상기 제2 저장 장치가 읽기-쓰기 상태에 있음을 결정하는 단계는 상기 제1 저장 장치가 아닌 하나 이상의 잔여 저장 장치들이 읽기-쓰기 상태에 있음을 결정하는 단계를 포함하고, 상기 잔여 저장 장치들은 상기 제2 저장 장치를 포함하고, 상기 쓰기 동작을 수행하는 단계는 상기 잔여 저장 장치들에 상기 제1 스트라이프를 쓰는 단계를 포함한다.
일부 실시예에서, 상기 제1 읽기 동작을 수행하는 단계는 상기 제2 스트라이프가 상기 복수의 저장 장치들 내에서 개방-맵핑되어 있음을 결정하는 단계, 및 상기 복수의 저장 장치들로부터 상기 제2 스트라이프를 읽는 단계를 포함한다.
일부 실시예에서, 상기 방법은 상기 잔여 저장 장치들로 드라이브 식별 번호들을 재할당하는 단계를 더 포함하고, 상기 복수의 저장 장치들 각각은 원래의 드라이브 식별 번호를 가지며, 상기 재할당하는 단계는 상기 제1 저장 장치의 상기 원래의 드라이브 식별 번호보다 작은 식별 번호를 갖는 각 저장 장치에 상기 각각의 원래의 드라이브 식별 번호를 할당하는 단계; 및 상기 제1 저장 장치의 상기 원래의 드라이브 식별 번호보다 큰 식별 번호를 갖는 각 저장 장치에 1보다 작은 상기 각각의 원래의 드라이브 식별 번호를 할당하는 단계를 포함한다.
일부 실시예에서, 상기 제2 읽기 동작을 수행하는 것은 상기 잔여 저장 장치들로부터 상기 제1 스트라이프를 읽고, 상기 맵핑 테이블에 기초한 주소에서 저장 장치로부터 상기 제1 스트라이프의 스트립을 읽는 것을 포함한다.
일부 실시예에서, 상기 방법은 상기 잔여 저장 장치들로 드라이브 식별 번호들을 재할당하는 단계를 더 포함하고, 상기 복수의 저장 장치들의 각각은 원래의 드라이브 식별 번호를 가지며, 상기 재할당하는 단계는 상기 제1 저장 장치의 상기 원래의 드라이브 식별 번호보다 작은 식별 번호를 갖는 각 저장 장치에 상기 각각의 원래의 드라이브 식별 번호를 할당하는 단계를 포함한다.
일부 실시예에서, 상기 재할당하는 단계는 상기 제1 저장 장치의 상기 원래의 드라이브 식별 번호보다 큰 식별 번호를 갖는 각 저장 장치에 1보다 작은 상기 각각의 원래의 드라이브 식별 번호를 할당하는 단계를 더 포함한다.
일부 실시예에서, 상기 제1 저장 장치의 원래의 드라이브 식별 번호가 n이며, 상기 제1 스트라이프의 상기 스트립을 읽는 것은 상기 재할당된 식별 번호 n을 갖는 상기 저장 장치로부터 상기 스트립을 읽는 것을 포함한다.
본 발명의 실시예에 따라, 데이터를 저장하는 시스템이 제공되는데, 상기 시스템은 제1 저장 장치, 제2 저장 장치, 및 상기 제1 저장 장치 및 상기 제2 저장 장치에 연결된 처리 회로를 포함하며, 상기 처리 회로는 상기 제1 저장 장치는 읽기 전용 상태에 있고, 상기 제2 저장 장치는 읽기-쓰기 상태에 있음을 결정하고, 제1 스트라이프의 쓰기 동작을 수행하며, 제2 스트라이프의 제1 읽기 동작을 수행하며, 상기 제1 스트라이프의 제2 읽기 동작을 수행하도록 구성되며, 상기 쓰기 동작을 수행하는 것은 상기 제 스트라이프의 일부를 상기 제2 저장 장치에 쓰고, 상기 제1 스트라이프를 위한 맵핑 테이블에 엔트리를 생성하는 것을 포함하고, 상기 제1 읽기 동작을 수행하는 것은 상기 제1 저장 장치 및 상기 제2 저장 장치로부터 상기 제2 스트라이프의 일부를 읽는 것을 포함하고, 상기 제2 읽기 동작을 수행하는 것은 상기 맵핑 테이블이 상기 제1 스트라이프를 위한 엔트리를 포함함을 결정하고 상기 제2 저장 장치로부터 상기 제1 스트라이프의 일부를 읽는 것을 포함한다.
일부 실시예에서, 상기 시스템은 상기 제1 저장 장치 및 상기 제2 저장 장치를 포함하는 복수의 저장 장치들을 포함하며, 상기 제2 저장 장치가 읽기-쓰기 상태에 있음을 결정하는 것은 상기 제1 저장 장치가 아닌 하나 이상의 잔여 저장 장치들이 읽기-쓰기 상태에 있음을 결정하는 것을 포함하고, 상기 잔여 저장 장치들은 상기 제2 저장 장치를 포함하고, 상기 쓰기 동작을 수행하는 것은 상기 잔여 저장 장치들에 상기 제1 스트라이프를 쓰는 것을 포함한다.
일부 실시예에서, 상기 제1 읽기 동작을 수행하는 것은 상기 제2 스트라이프가 상기 복수의 저장 장치들 내에서 개방-맵핑되어 있음을 결정하고 및 상기 복수의 저장 장치들로부터 상기 제2 스트라이프를 읽는 것을 포함한다.
일부 실시예에서, 상기 처리 회로는 상기 잔여 저장 장치들로 드라이브 식별 번호들을 재할당하도록 더 구성되며, 상기 복수의 저장 장치들 각각은 원래의 드라이브 식별 번호를 가지며, 상기 재할당하는 것은 상기 제1 저장 장치의 상기 원래의 드라이브 식별 번호보다 작은 식별 번호를 갖는 각 저장 장치에 상기 각각의 원래의 드라이브 식별 번호를 할당하며, 상기 제1 저장 장치의 상기 원래의 드라이브 식별 번호보다 큰 식별 번호를 갖는 각 저장 장치에 1보다 작은 상기 각각의 원래의 드라이브 식별 번호를 할당하는 것을 포함한다.
일부 실시예에서, 상기 제2 읽기 동작을 수행하는 것은 상기 잔여 저장 장치들로부터 상기 제1 스트라이프를 읽고, 상기 맵핑 테이블에 기초한 주소에서 저장 장치로부터 상기 제1 스트라이프의 스트립을 읽는 것을 포함한다.
일부 실시예에서, 상기 처리 회로는 상기 잔여 저장 장치들로 드라이브 식별 번호들을 재할당하도록 더 구성되며, 상기 복수의 저장 장치들의 각각은 원래의 드라이브 식별 번호를 가지며, 상기 재할당하는 것은 상기 제1 저장 장치의 상기 원래의 드라이브 식별 번호보다 작은 식별 번호를 갖는 각 저장 장치에 상기 각각의 원래의 드라이브 식별 번호를 할당하는 것을 포함한다.
일부 실시예에서, 상기 처리 회로는 상기 제1 저장 장치의 상기 원래의 드라이브 식별 번호보다 큰 식별 번호를 갖는 각 저장 장치에 1보다 작은 상기 각각의 원래의 드라이브 식별 번호를 할당하도록 더 구성된다.
일부 실시예에서, 상기 제1 저장 장치의 원래의 드라이브 식별 번호는 n이며, 상기 제1 스트라이프의 상기 스트립을 읽는 것은 상기 재할당된 식별 번호 n을 갖는 상기 저장 장치로부터 상기 스트립을 읽는 것을 포함한다.
본 발명의 일 실시예에 따라, 데이터를 저장하는 시스템이 제공되는데 상기 시스템은, 제1 저장 장치, 제2 저장 장치, 및 상기 제1 저장 장치 및 상기 제2 저장 장치에 연결된 처리 수단을 포함하며, 상기 처리 수단은 상기 제1 저장 장치는 읽기 전용 상태에 있고, 상기 제2 저장 장치는 읽기-쓰기 상태에 있음을 결정하며, 제1 스트라이프의 쓰기 동작을 수행하며, 제2 스트라이프의 제1 읽기 동작을 수행하며, 상기 제1 스트라이프의 제2 읽기 동작을 수행하도록 구성되며, 상기 쓰기 동작을 수행하는 것은 상기 제 스트라이프의 일부를 상기 제2 저장 장치에 쓰고 상기 제1 스트라이프를 위한 맵핑 테이블에 엔트리를 생성하는 것을 포함하고, 상기 제1 읽기 동작을 수행하는 것은 상기 제1 저장 장치 및 상기 제2 저장 장치로부터 상기 제2 스트라이프의 일부를 읽는 것을 포함하고, 상기 제2 읽기 동작을 수행하는 것은 상기 맵핑 테이블은 상기 제1 스트라이프를 위한 엔트리를 포함함을 결정하며, 상기 제2 저장 장치로부터 상기 제1 스트라이프의 일부를 읽는 것을 포함한다.
일부 실시예에서, 상기 시스템은 상기 제1 저장 장치 및 상기 제2 저장 장치를 포함하는 복수의 저장 장치들을 포함하며, 상기 제2 저장 장치가 읽기-쓰기 상태에 있음을 결정하는 것은 상기 제1 저장 장치가 아닌 하나 이상의 잔여 저장 장치들이 읽기-쓰기 상태에 있음을 결정하는 것을 포함하고, 상기 잔여 저장 장치들은 상기 제2 저장 장치를 포함하고, 상기 쓰기 동작을 수행하는 것은 상기 잔여 저장 장치들에 상기 제1 스트라이프를 쓰는 것을 포함한다.
일부 실시예에서, 상기 제1 읽기 동작을 수행하는 것은 상기 제2 스트라이프가 상기 복수의 저장 장치들 내에서 개방-맵핑되어 있음을 결정하고 및 상기 복수의 저장 장치들로부터 상기 제2 스트라이프를 읽는 것을 포함한다.
일부 실시예에서, 상기 처리 수단은 상기 잔여 저장 장치들로 드라이브 식별 번호들을 재할당하도록 더 구성되며, 상기 복수의 저장 장치들 각각은 원래의 드라이브 식별 번호를 가지며, 상기 재할당하는 것은 상기 제1 저장 장치의 상기 원래의 드라이브 식별 번호보다 작은 식별 번호를 갖는 각 저장 장치에 상기 각각의 원래의 드라이브 식별 번호를 할당하고 상기 제1 저장 장치의 상기 원래의 드라이브 식별 번호보다 큰 식별 번호를 갖는 각 저장 장치에 1보다 작은 상기 각각의 원래의 드라이브 식별 번호를 할당하는 것을 포함한다.
본 개시의 실시 예들에 따르면, 다양한 복원 모드들에서 동작할 수 있고 내부 장애에도 불구하고 부분적 기능을 유지하거나 전체 기능으로 복귀할 수 있는 결합 복원 저장 장치들을 갖는 레이드 시스템이 제공된다.
본 명세서에서 제공된 도면들은 실시예를 설명하기 위한 것으로서, 명시적으로 개시하지 않은 다른 실시예들은 본 개시의 범위에서 배제되지 않는다.
본 개시의 이들 및 다른 특징들 및 이점들은 명세서, 청구범위 및 첨부된 도면들을 참조하여 인지되고 이해될 것이다.
도 1은 본 개시의 일 실시예에 따른 데이터 저장 시스템의 블록도이다.
도 2a는 본 개시의 일 실시예에 따른 저장 장치의 장애 상태들의 테이블이다.
도 2b는 본 개시의 일 실시예에 따른 저장 장치의 동작 모드들의 테이블이다.
도 2c는 본 개시의 일 실시예에 따른, 호스트에 의해 저장 장치로 전송하기 위한 커맨드들의 테이블이다.
도 2d는 본 개시의 일 실시예에 따른 복원 모드들의 계층 구조를 나타낸 테이블이다.
도 3a는 본 개시의 일 실시예에 따른 장애-복원 저장 장치의 동작의 제1 방법에 대한 흐름도이다.
도 3b는 본 개시의 일 실시예에 따른 장애-복원 저장 장치의 동작의 제2 방법에 대한 흐름도이다.
도 2b는 본 개시의 일 실시예에 따른 저장 장치의 개략적인 데이터 레이아웃 다이아그램이다.
도 5a는 본 개시의 일 실시예에 따른 장애-복원 판독-전용 모드에서 저장 장치의 동작의 제1 방법에 대한 흐름도이다.
도 5b는 본 개시의 일 실시예에 따른 장애-복원 판독-전용 모드에서 저장 장치의 동작의 제2 방법에 대한 흐름도이다.
도 6a는 본 개시의 일 실시예에 따른 쓰기 동작을 수행하는 RAID-0 시스템이의 개략적인 데이터 레이아웃 다이아그램이다.
도 6b는 본 개시의 일 실시예에 따른 읽기 동작을 수행하는 RAID-0 시스템이의 개략적인 데이터 레이아웃 다이아그램이다.
도 6c는 본 개시의 일 실시예에 따른 재맵핑(remapping) 및 쓰기 동작을 수행하는 RAID-0 시스템의 개략적인 데이터 레이아웃 다이아그램이다.
도 7a는 본 개시의 일 실시예에 따른 RAID-0 저장 시스템의 동작의 제1 방법에 대한 흐름도이다.
도 7b는 본 개시의 일 실시예에 따른 RAID-0 저장 시스템의 동작의 제2 방법에 대한 흐름도이다.
첨부된 도면과 관련하여 이하 설명하는 상세한 설명은 본 개시에 따라 제공되는 메모리 자원 관리 시스템 및 방법의 예시적인 실시예들을 설명하기 위한 것이며, 본 개시가 구성되고 활용되는 유일한 형태들을 나타내는 것은 아니다. 이하 설명은 도시된 실시예들와 관련하여 본 개시의 특징을 제시한다. 그러나, 동일하거나 동등한 기능들 및 구조들이 또한 본 개시의 범위 내에 포함되도록 의도된 다른 실시예들에 의해 달성될 수 있음은 이해되어야 한다. 본 명세서에서 유사한 도면 번호는 유사한 구성요소 또는 특징을 나타낸다.
일부 실시예에서, 장애-복원 저장 장치는 다양한 복원 모드들에서 동작할 수 있고 내부 장애에도 불구하고 부분적 기능을 유지하거나 전체 기능으로 복귀할 수 있다. 예를 들어, 온도 센서 장애에 대응하여 저장 장치는 감소된 속도로 동작하거나 쓰기 동작을 위한 감소된 속도로 동작할 수 있으며, 또는 쓰기 동작을 거의 수행하지 않을 수 있다. 저장 매체에 오류를 일으킬 수 있는 일시적인 장애에 응답하여, 저장 장치는 저장 매체를 다시 포맷할 수 있다. 저장 장치를 오류를 일으키지 않는 일시적인 장애에 응답하여, 저장 장치는 전원을 껐다 켤 수 있다(power cycling). 저장 장치가 부분적 기능을 유지할 수 있는 방법 중 하나는 일부 상황들에서 읽기-전용 모드로 동작하는 것이며, 읽기-전용 모드에서는 저장 장치가 호스트로부터의 읽기 요청에 응답할 수 있지만 호스트로부터 쓰기 요청을 수신한다면 에러 메시지를 리턴할 수 있다. 또한 만료 예정인 데이터를 구조 영역(rescue area)으로 이동할 수 있으므로 만료로 인해 데이터가 손실되지 않는다. RAID-0 저장 시스템에서는, 저장 장치가 읽기-전용 모드에서 동작하는 것으로 전환할 수 있는 가능성은 저장 장치가 읽기-전용 모드에서 동작하는 것으로 전환한 후 수행되는 임의의 쓰기 동작에 대한 스트라이프를 구성하는 스트립들을 재분배함으로써 달성될 수 있다.
도 1은 하나 이상의 저장 장치(110)(또는 "드라이브")에 연결된 호스트(105)를 포함하는 컴퓨팅 시스템을 도시한다. 저장 장치 (110)는 도시된 바와 같이 볼륨 매니저(115)(이하 상세히 기술됨)를 통해 호스트(105)에 연결될 수 있거나, 호스트(105)에 직접 연결될 수 있다. 일부 실시예에서, 저장 장치(110)는 내부 장애 조건을 겪을 수 있고, 저장 장치는 장애 조건의 시스템-레벨의 영향을 완화하기 위해 이하 상세히 기술된 바와 같이 다양한 복원 동작을 나타낼 수 있다. 각각의 저장 장치(110)는 솔리드 스테이트 드라이브(SSD)일 수 있고 컨트롤러(120) (또는 "제어 회로") 및 저장 매체(125)(예를 들어, 낸드(NAND) 플래시 메모리)를 포함할 수있다. 저장 장치(110)에서 지울 수 있는 가장 작은 단위는 "블록"이라고 지칭될 수 있고, 저장 장치(110)에서 가장 작은 쓰기 가능한 단위는 "페이지"라고 지칭될 수 있다. 각 저장 장치(110)는 2.5인치, 1.8인치, MO-297, MO-300, M.2 및 EDSFF(Enterprise and Data Center SSD Form Factor)를 포함하지만 이에 제한되지 않는 영구 저장 장치에 적합한 복수의 폼 팩터 중 어느 하나의 폼 팩터를 가질 수 있으며, PCI(Peripheral Component Interconnect), PCIe(PCI express), SCSI(Ethernet, Small Computer System Interface), SATA(Serial AT Attachment), 및 SAS(Serial Attached SCSI)을 포함하는 영구 저장 장치들에 적합한 복수의 인터페이스중 어느 하나인 전기적 인터페이스를 가질 수 있으며, 상기 인터페이스를 통해 호스트(105)에 접속될 수 있다.
저장 매체(125)는 보존 기간(저장 매체(125)의 사용 이력에 좌우될 수 있고, 그에 따라 저장 매체(125) 내에서 변할 수 있음)을 가지며, 보존 기간보다 오래 저장된 데이터(즉, 보존 기간을 초과하는 나이를 갖는 데이터)는 신뢰할 수 없게 되어 만료되었다고 말할 수 있다. 데이터는 블록 코드일 수 있는 에러 정정 코드를 이용하여 저장 매체(125)에 저장될 수 있다. 저장 매체(125)로부터 데이터를 읽을 때, 저장 매체(125)로부터 코드 블록 (code block)이라고 지칭되는 다량의 원시 데이터를 읽어 디코딩을 시도할 수 있다. 시도가 실패하면 추가 시도(읽기 재시도)가 이루어질 수 있다. 사용에 따라, 저장 매체(125)의 일부, 예를 들어, 블록은 보유 기간이 허용할 수 없을 정도로 짧아지는 지점까지 저하될 수 있으며, 해당 블록은 "불량 블록"으로 분류될 수 있다. 이러한 상황이 전체 저장 매체(125)를 작동 불가능하게 만드는 것을 방지하기 위해, "불량 블록 관리 예비 공간"이라고 하는 예비 공간이 존재할 수 있으며(예를 들어, 각 플래시 메모리 다이 또는 각 플래시 메모리 플레인에 포함됨), 플래시 메모리 다이 또는 플래시 메모리 플레인 내부의 컨트롤러(120) 또는 다른 컨트롤러는 예비 블록을 사용하기 시작하고 불량 블록의 사용을 중단할 수 있다.
도 2a는 각각 케이스 식별자("케이스 ID")로 라벨링된 장애 조건들 (또는 "장애 상태들")의 테이블이다. 케이스 1은 저장 장치(110)가 더 이상 읽기 또는 쓰기 동작을 수행할 수 없고 전원을 껐다 켜거나 저장 매체를 재포맷함으로써 해결할 수 없는 임의의 장애 조건이다. 저장 장치(110)가 이러한 방식으로 동작하는 상태는 예컨대, 상이한 장애 메커니즘(failure mechanism)에 각각 대응하는 다양한 서브-상태를 가질 수 있다. 이러한 상태 또는 장애 상태(저장 장치(110)가 더 이상 읽기 또는 쓰기 동작을 수행할 수 없고 전원을 껐다 켜거나 저장 매체를 재포맷하여 해결할 수 없음)는 예컨대, 손상되는 컨트롤러의 펌웨어의 일부(이 경우 컨트롤러가 손상된 명령이 실행되지 않는 안전 모드로 다시 시작할 수 있음) 또는 저장 장치(110)의 처리 회로의 장애(예컨대, 저장 매체와의 상호작용을 관리하지만 호스트 (105)와의 통신을 담당하지 않는 처리 회로의 장애)에 의해 기인할 수 있다. 이러한 타입의 장애 조건이 발생하면, 저장 장치(110)는 호스트 (105)로부터의 임의의 읽기 또는 쓰기 커맨드에 대해 에러 메시지와 함께 응답할 수 있다.
케이스 2는 (i) 저장 장치(110)가 더 이상 읽기 또는 쓰기 동작을 수행할 수 없고 (ii) 저장 장치(110)의 전원을 껐다 켜거나 저장 매체를 재포맷함으로써 복구가 가능한 임의의 장애 조건이다. 이러한 장애 상태는 예를 들어, 저장 장치(110)의 컨트롤러(120)의 프로그램 실행 에러(예: 컨트롤러(120)의 랜덤 액세스 메모리(RAM)에서 비트 플립의 결과로 범위를 벗어난 포인터 또는 비트 플립의 결과 잘못된 명령)에 의해 발생할 수 있다. 프로그램 실행 에러에 의해 컨트롤러(120)가 저장 매체(125)에 잘못된 데이터를 쓰지 않은 경우(예를 들어, 컨트롤러에 의해 저장 매체에 가장 최근의 쓰기 이후 프로그램 실행 에러가 발생한 경우), 저장 장치의 전원을 껐다가 켜는 것이 저장 장치(110)를 정상 동작으로 복원하기에 충분할 수 있으며, 프로그램 실행 에러에 의해 컨트롤러(120)가 에러 데이터를 저장 매체(125)에 쓴 경우, 저장 매체(125)를 재포맷하는 것은 저장 장치(110)를 정상 동작으로 복원하기에 충분할 수 있다.
케이스 3은 저장 장치(110)를 읽기 전용 모드로 동작시킴으로써 완화될 수 있고 저장 매체(125)를 재포맷하는 것이 전체 기능을 복원하지 않는 임의의 장애 상태이다. 이러한 장애의 예는 (i) 온도 센서 장애, (ii) 읽기 전용 모드로 전환된 저장 매체(125)의 일부를 포함한다. 온도 센서 장애의 경우, 온도 센서 판독 값이 범위를 벗어났다(예 : 임계 온도를 초과함)라고 판단하여 장애을 감지할 수 있으며, 이 경우 저장 장치(110)의 과열 위험이 읽기 동작보다 더 많은 전력을 소비할 수 있는 쓰기 동작을 회피함으로써 감소될 수 있다. 저장 매체(125)의 일부의 읽기 전용 모드로의 전환은 예컨대, 플래시 메모리 플레인 또는 다이가 런타임 불량 블록 관리에 사용되는 불량 블록 관리 예약 공간을 고갈시키는 경우, 플래시 메모리 저장 매체 (125)에 대해 발생할 수 있다. 예를 들어, 저장 장치(110)는 읽기 동작을 수행하는 것을 시도하면서, 데이터 항목을 디코딩하는 시도에 실패하고, 데이터를 저장하는 블록이 불량 블록인 것으로 판단하고 데이터를 불량 블록에서 불량 블록 관리 예비 공간으로 이동시 나머지 불량 블록 관리 예비 공간이 임계 크기보다 작으며 그에 따라 플레인 또는 다이의 신뢰성을 보장하기에 불충분하다고 결정할 수 있다. 그 다음, 저장 장치(110)는 불량 블록 관리가 더 이상 수행되고 있지 않다고 결정하고 읽기 전용 모드로 전환할 수 있다. 읽기 전용 모드의 동작은 이하 상세히 설명된다. 본 명세서에서 사용되는 바와 같이, "데이터 항목"은 하나의 동작에서 처리되는 임의의 양의 데이터이며, 예를 들어 코드 블록을 디코딩한 결과의 데이터는 데이터 항목일 수 있다.
케이스 4는 동시 쓰기(write-through) 모드에서 저장 장치(110)를 동작시킴으로써 완화될 수 있는 임의의 장애 조건이다. 예를 들어, 저장 장치(110)의 전원 공급 장치 백업 커패시터가 고장난 경우, 장치는 호스트로부터 수신된 임의의 쓰기 커맨드에 응답하여 커맨드 완료를 호스트(105)에 보내기 전에 저장 매체(125)에 대한 쓰기를 완료할 수 있으므로, 저장 매체(125)에 대한 쓰기가 완료되기 전에 전원이 고장나면, 호스트는 기록이 성공적으로 완료되었음을 부정확하게 통보받지 않는다. 동시 쓰기 모드에서 동작하는 것은 성능의 저감을 가져올 수 있다(처리량 및 지연시간의 측면에서).
케이스 5는 전력 손실을 감소시키는 방식으로 저장 장치(110)를 작동시킴으로써 완화될 수 있는 임의의 장애 조건이다. 예를 들어, 온도 센서 장애의 경우, 저장 장치(110)는 전술 한 바와 같이 읽기 전용 모드로 동작할 수 있거나, 동작들(예 : 읽기 동작보다 더 많은 전력을 소비할 수 있는 쓰기 동작)이 수행되는 속도를 감소시켜 저장 장치(110)에서의 전력 손실을 감소시킨다. 예를 들어, 저장 장치(110)는 저장 매체에 대한 첫번째 쓰기를 수행한 다음, 감소된 성능에 대응하는 간격(기다림으로 인해 쓰기 동작이 수행되는 속도가 감소함)동안 대기할 수 있으며, 그런 다음 저장 매체에 다른 쓰기(예컨대, 1초)를 수행할 수 있다.
케이스 6은 저장 장치(110)를 읽기 전용 모드로 동작시킴으로써 완화될 수 있고 저장 매체(125)를 재포맷하는 것이 전체 기능을 복원하는 임의의 장애 상태이다. 도 2a의 테이블의 세 번째 컬럼은, 각각의 경우에 대해 유효한 사용자 데이터가 이용 가능한지 여부 및 저장 장치(110)가 예컨대, 저장 매체(125)를 재포맷함으로써 완전한 기능으로 복귀될 수 있는지 여부를 나타낸다.
도 2a에 열거된 케이스들에 의해 예시된 바와 같이, 일부 실시예에서, 3가지 레벨의 장애 복원성, 즉 완전 복원 모드, 부분 복원 모드 및 취약 모드는 저장 장치(110)에 의해 달성될 수 있다. 완전 복원 모드에서, 저장 장치(110)는 "자체 복구" 특징으로 동작할 수 있으며, 저장 장치(110)는 전원 사이클링(power cycling) 또는 저장 매체(125)의 포맷과 같은 동작을 재설정함으로써 전체 기능(장치에서 사용자 데이터가 손실될 수 있다고 하더라도)을 복원할 수 있다.
부분 복원 모드에서, 저장 장치(110)는 장애 조건이 존재하는 경우 더 낮은 성능, 더 작은 용량 또는 감소된 기능으로 동작할 수 있다. 예를 들어, 전술한 같이, 전원 공급 백업 커패시터가 실패하면 데이터가 저장 매체(125)에 기록된 후에만(즉, 동기식 쓰기가 수행 될 수 있음) 모든 쓰기가 완료될 수 있으며(즉, 명령 완료가 호스트 (105)로 전송 될 수 있음), 그에 따라 저장 장치(110)의 동작을 늦추고 그 성능을 감소시킬 수 있다. 이러한 상황에서 사용자 데이터는 보존될 수 있다. 저장 장치(110)는 RTBB (bad block management run time bad block)를 위한 예비 공간이 소진되면 더 작은 용량으로 동작할 수 있다. 이러한 상황에서, 저장 장치(110)의 영향 받는 다이들은 디스크 공간에서 제외될 수 있고 전체 디스크 용량이 감소될 수 있다. 손실된 공간의 사용자 데이터가 손실될 수 있다. 예를 들어, IO 결정론(IO determinism)의 세트 또는 구역화된 이름공간(namespace)의 구역이 더 이상 새 데이터 쓰기를 허용할 수 없는 경우 세트 또는 구역이 디스크 공간에서 제외될 수 있지만 나머지 디스크 공간은 읽기 및 쓰기 동작에 대해 사용 가능한 상태로 남아있을 수 있다. 상기 영역 또는 세트의 사용자 데이터가 손실 될 수 있다.
저장 장치(110)가 쓰기 동작을 허용하지 않고 읽기 전용 모드로 전환하는 경우 저장 장치(110)는 감소된 기능으로 동작할 수 있다. 저장 장치(110)는 지속 가능한 읽기 전용 모드와 지속 불가능한 읽기 전용 모드의 두 가지 타입의 읽기 전용 모드로 동작할 수 있다. 지속 가능한 읽기 전용 모드에서, 저장 장치(110)는 저장 매체 (125)의 보존 기간을 초과하여 읽기 요청에 대해 계속해서 사용될 수 있다. 지속 불가능한 읽기 전용 모드에서, 저장 장치(110)는 저장 매체(125)의 보존 기간 동안 계속해서 읽기 요청에 대해 계속 사용할 수 있으며, 저장 장치(110)가 데이터 무결성 이슈(예를 들어, 읽기 동작 동안 데이터를 디코딩하는 하나 이상의 실패한 시도들에 의해 검출됨)에 부딪친다면, 저장 장치(110)는 유효하지 않은 데이터 영역을 리포트할 수 있다. 취약 모드에서 동작하는 저장 장치(110)는 전술한 바와 같이 읽기 또는 쓰기 동작을 수행할 수 없고 우아한 종료(graceful exit)를 수행하여 호스트로부터 커맨드를 계속 수신하고 에러를 리턴할 수 있다.
일부 실시예에서, (i) 수행 공간(P), (ii) 성능 저하 공간(UP), (iii) 읽기 전용 공간(RO), (iv) 휘발성 읽기 전용 공간(VRO) 및 (v) 액세스 불가능 공간(IA)이라고 지칭되는 5개의 논리 블록 주소(LBA) 공간 타입들이 정의될 수 있다. 수행(P) 공간은 성능 희생 없이 정상적인 방식으로 읽고 쓸 수 있는 유효한 데이터를 포함하는 LBA 공간일 수 있다. 성능 저하(UP) 공간은 정상적인 방식으로 읽고 쓸 수 있지만 성능이 저하된(예컨대, 저하된 쓰기 성능), 유효한 데이터를 포함하는 LBA 공간일 수 있다. 읽기 전용(RO) 공간은 읽기 전용인 유효한 데이터를 포함하는 LBA 공간일 수 있다. 저장 장치(110)는 이러한 타입의 LBA 공간으로 향하는 호스트로부터의 쓰기 커맨드에 대해 에러 메시지로 응답할 수 있다. 읽기 전용 공간의 데이터는 보존 기간을 초과하는 기간 동안 유효할 수 있다. 휘발성 읽기 전용(VRO) 공간은 읽기 전용일 수 있고, 저장 장치(110)는 이러한 타입의 LBA 공간으로 향하는 호스트로부터의 쓰기 커맨드에 대해 에러 메시지로 응답할 수 있다. 이러한 타입의 LBA 공간에 있는 데이터는 일시적으로 유효할 수 있으며, 만료될 때, 즉 저장 매체(125) 내의 데이터의 나이가 저장 매체(125)의 보존 기간에 도달하면 무효화될 수 있다. 액세스 불가능(IA) 공간은 호스트에서 액세스할 수 없는, 유효하지 않은 데이터를 포함하는 LBA 공간일 수 있다. 도 2b의 테이블은 상기 테이블의 첫 번째 컬럼에서 식별된 장애 조건들 각각에서 저장 장치(110)에 존재할 수 있는 LBA 공간 타입들의 조합을 보여준다. 별표(*)로 식별된 모드들은 LBA 공간에 대한 자세한 정보를 검색하기 위해 호스트가 특징 획득 커맨드(get feature command)를 사용하는 것을 지원할 수 있다. 도 2c는 저장 장치(110)로 그 상태 및 관련 파라미터의 값에 대해 저장 장치(110)에 질의하기 위해 저장 장치(110)에 전달될 수 있는 "특징 획득" 커맨드의 논의를 도시한다( "IOPS"는 초당 입력 및 출력 동작을 의미한다).
도 2d의 테이블은 호스트 (105)가 저장 장치(110)에 그 상태에 대해 질의하기 위해 사용할 수 있는 NVMe (nonvolatile memory express) 커맨드 및 저장 장치(110)가 장애 복원 특징들의 범주 내에서 응답하기 위해 사용할 수 있는 열거된 상수들(enumerated constants)의 계층 구조를 보여준다.
도 3a는 일부 실시예에서 장애 복원 모드에서 동작하기 위한 방법의 흐름도이다. 305에서, 호스트(105)는 저장 장치로부터 데이터를 전송하거나 수신하고; 310에서, 호스트(105)는 저장 장치에서 에러가 발생했는 지를 결정하고, 315에서, 저장 장치(110)는 내부 진단을 수행하고 그 장애 복원 상태(예를 들어, 완전 복원, 부분 복원 또는 취약)를 결정하고, 320에서, 저장 장치(110)는 상기 진단에 기초하여 그 성능, 용량 또는 기능(예를 들어, 읽기 전용 모드로의 전환)을 변경하고, 325에서, 저장 장치(110)는 어플리케이션 프로그래밍 인터페이스(API)에 기초하여 호스트(105)로부터의 요청에 따라 상태를 게시하고, 330에서, 호스트(105)는 상기 상태에 기초하여 주어진 대역폭에서 주어진 타입의 데이터를 저장 장치(110) 또는 다른 저장 장치(110)로 라우팅한다. 도 3B는 장애 복원 모드에서 동작하기 위한 방법의 세부사항을 보여주는 흐름도이다. 상기 방법은 335에서, 저장 장치에 의해, 저장 장치가 전원을 껐다 켜거나(power cycling) 저장 매체를 포맷함으로써 복구가 가능한 제1 장애 상태에 있음을 결정하는 단계; 340에서, 저장 장치에 의해, 저장 장치가 감소된 성능으로, 감소된 용량으로, 또는 읽기 전용 모드로 저장 장치를 동작시킴으로써 부분 복구가 가능한 제2 장애 상태에 있음을 결정하는 단계, 및 345에서, 감소된 성능으로, 감소된 용량으로, 또는 읽기 전용 모드로 저장 장치를 동작시키는 단계를 포함한다.
여기에 개시된 실시예들에 대한 다수의 실시예들 및 변형들이 또한 구성될 수 있다. FPGA (Field Programmable Gate Array) 또는 임베디드 프로세서는 내부 블록 검사를 수행하고 저장 장치(110)의 상태에 대한 비동기 업데이트를 호스트(105)로 전송할 수 있다. 이벤트가 발생하고 호스트(105)로 전송될 수 있다(예를 들어, 온도 또는 장치 내부의 다른 파라미터). 호스트(105)는 통지를 제공하기 위한 장치 드라이버 특징이 없는 경우 미리 정해진 스케줄에 따라 저장 장치들(110)을 폴링할 수 있다. FPGA 또는 임베디드 프로세서는 저장 장치(110)의 이력 성능을 모니터링하고 머신 러닝을 사용하여 예측 분석(예를 들어, 주어진 장애 복원 상태에 있을 가능성)을 제공할 수 있다. 커맨드들이 NVMe 스펙에 도입될 수 있는데, 예를 들어, NVMe 스펙의 원격 측정 정보가 (저장 장치(110)의 상태를 보고하기 위해) 확장될 수 있다. 일부 실시예들은 예컨대, 이더넷 저장 장치 또는 키-값(KV) 저장 장치에서 구현될 수 있다.
일부 실시예에서, 호스트는 (i) 저장 장치(110)의 상태(예를 들어, 이미지, 비디오, 텍스트 또는 고-우선순위 또는 저-우선순위 데이터와 같은 파일 타입들)에 기반하여 서로다른 데이터 타입들을 송신하고(예를 들어, 부분적으로 취약한 모드에서 간주되는 장치에는 고-우선순위 데이터 또는 실시간 데이터가 기록되지 않을 수 있음)(ii) 저장 장치(110)가 부분적으로 취약한 상태이고 더 낮은 성능 상태에 있는 경우 전송 속도를 감소시키고(iii) 저장 장치(110)가 부분적으로 취약하고 저-용량 상태에 있는 경우 감소된 총 데이터 양을 전송하고, (iv) 저장 장치(110)가 부분적으로 취약한 지속 불가능한 읽기 전용 모드에 있는 경우 가능한 최대 속도로 데이터를 읽고 데이터를 다른 곳에 저장하여 보존 기간을 초과하지 않도록 하며(이러한 상황에서 호스트는 복사할 데이터의 양과 보존 기간을 기준으로 필요한 데이터 속도를 계산할 수 있음), (v) 데이터가 에러를 가질 수 있으므로 취약한 저장 장치(110)로부터 데이터 "읽기"를 무시하고, 호스트(105)에 의해 수신된 데이터를 간단히 삭제하고, (vi) 호스트와 저장 장치(110) 사이에서 이러한 이벤트의 타이밍을 제어하는 메시지에 기초하여, 전원 사이클링된 또는 포맷된 완전 복원 저장 장치(110)의 캐시로 읽기/쓰기 입력 및 출력을 일시적으로 재라우팅한다. 용량이 감소한 부분적으로 취약한 SSD상의 FPGA는 들어오는 데이터 쓰기들을 필터링하고 그 데이터의 일부만을 저장 장치(110)에 쓸 수 있다. 일부 경우에, 필터링은 압축을 포함할 있다. 이러한 FPGA는 호스트(105)로부터 다양한 종류의 데이터(예를 들어, 이미지, 비디오, 텍스트 또는 고-우선순위 또는 저-우선순위 데이터와 같은 파일 타입들)를 수신하고 저장 장치 (110)의 상태에 따라 필터링할 수 있다. 예를 들어, FPGA는 부분적으로 취약한 모드에 있는 저장 장치(110)에 고-우선순위 데이터가 기록되지 않아야 한다고 결정할 수 있다. FPGA는 거부 메시지를 호스트(105)로 전송하고 거부 이유를 제공할 수 있다. 대안으로, FPGA는 부분적으로 탄력적인 저용량 상태 저장 장치(110)에 기록하기 위한 특정 타입의 데이터(예를 들어, 이미지 데이터)를 필터링할 수 있다. 예를 들어, 저장 장치(110)가 성능을 잃는 경우(예를 들어, 감소된 쓰기 속도로 동작), 지연시간에 민감한(latency-sensitive) 읽기 및 쓰기가 거부될 수 있다.
일부 실시예에서, 전술한 바와 같이, 저장 장치(110)는 "지속 가능한"(또는 "제1") 읽기 전용 모드 및 "지속 불가능한"(또는 "제2") 읽기 전용 모드로 지칭될 수 있는 2개의 읽기 전용 모드들 중 하나에서 동작할 수 있다. 지속 불가능한 읽기 전용 모드에서, 저장 장치(110)는 호스트 (105)로부터 수신할 수 있는 임의의 쓰기 커맨드르 단순히 거부할 수 있으며, (i) 만료되지 않은 데이터에 대한 읽기 커맨드를 실행하거나 (ii) 모든 읽기 커맨드들을 실행하려고 시도할 수 있으며 그에 따라, 디코딩이 성공하지 못한 경우 성공적인 디코딩 시도에 의해 발생한 데이터 및 에러 코드(데이터 항목이 판독될 수 없음을 나타내는 표시, 예컨대, 0)를 리턴할 수 있다.
지속 가능한 읽기-전용 모드에서, 저장 장치(110)는 저장 매체(125)의 보유 기간을 넘어서 외부 읽기 요청을 서비스할 수 있다. 저장 장치(110)는 호스트(105)로부터의 임의의 쓰기 커맨드에 응답하여 에러 메시지를 리턴하는 것을 제외하고는 어떠한 조치도 취할 수 없지만, 이하 설명되는 바와 같이 내부 목적을 위해 저장 매체(125)에 쓰기를 수행할 수 있다. 보존 기간 이후의 데이터 보존을 가능하게 하기 위해, 저장 장치(110)는 만료가 임박한 데이터(예컨대, 저장 매체(125)의 보존 기간에 기반한 임계 나이(예컨대, 저장 매체(125)의 보존 기간의 80%)을 초과하는 나이를 가진 데이터)를 이동할 공간을 "구조 공간"으로 지칭되는 공간을 할당할 수 있으며, 그에 따라 데이터의 만료는 구조 공간의 보존 기간만큼 연기된다. 구조 공간의 데이터는 만료될 예정인 경우 데이터 손실을 방지하기 위해 필요한 만큼 자주 구조 공간 내에서 다시 이동될 수 있다. 일부 실시예에서, 저장 장치(110)는 예를 들어 이러한 이동을 수행하기 위해 저부하(low load) 기간을 이용하여 만료 전에 데이터를 잘 이동시킨다. 전술한 바와 같이, 지속 가능한 읽기-전용 모드로의 전환은 불량 블록 관리 예약 공간의 고갈로 인해 트리거될 수 있다. 이러한 상황에서, 영향 받는 플레인 또는 다이는 읽기 전용이 될 수 있고, 여기에 저장된 모든 데이터가 구조 공간으로 재배치되면 저장 장치(110)의 물리적 주소 공간에서 제외될 수 있다.
저장 장치(110)는 전체 LBA 공간에 걸쳐 호스트(105)로부터의 읽기 커맨드에 응답할 수 있다. 저장 장치(110)의 물리적 공간이 감소될 수 있지만(예를 들어, 저장 매체(125)의 일부가 읽기 전용이 되고 그 데이터가 구조 공간으로 이동되고 있기 때문에(또는 이동되었기 때문에)), 장치의 논리적 공간은 변경되지 않기 때문에 호스트(105)가 PBA(Physical Block Address) 공간에 맵핑될 수 없는 LBA 공간 내에서 읽기 커맨드를 전송하면 저장 장치(110)는 0을 리턴할 수 있다.
상기 구조 공간은 오버프로비저닝 공간, 또는 저장 장치(110)의 사용되지 않은 공간으로부터 할당될 수 있다. IO 결정론의 세트 또는 구역화된 이름공간의 구역이 쓰기 가능하지 않은 경우 모든 데이터가 재배치되면 해당 세트 또는 구역이 읽기 전용이되고 물리적 주소 공간에서 제외될 수 있다. 구조 공간은 이름공간을 사용하여 동적으로 생성될 수 있다. 하나 이상의 이름공간이 사용자 데이터에 사용될 수 있으며, 추가적인 이름공간이 구조 공간을 위해 생성될 수 있다. 저장 장치 (110)가 지속 가능한 읽기 전용 모드로 전환할 때, 사용자 데이터를 위한 하나 이상의 이름공간은 크기가 감소될 수 있고, 구조 공간을 위한 이름공간의 크기가 증가될 수 있다.
장애에 영향 받는 저장 매체(125)의 영역(예컨대, 불량 블록 관리 예비 공간이 고갈된 영역)의 크기가 이용 가능한 구조 공간의 크기를 초과하면, 저장 장치(110)는 가장 빨리 만료될 데이터(예컨대, 가장 오래된 데이터)만을 이동하거나, 중요하거나 소정의 파일 타입(예컨대, 이미지, 비디오 또는 문서)과 관련된 것으로 태그가 지정된 데이터만을 이동하거나, 인접한 타입(contiguous type)의 데이터(예컨대, 파일에 관련된 모든 데이터)를 이동하고 다른 데이터는 남겨 둘 수 있다. 중요하다고 간주되는 파일 타입들의 세트는 사용자가 구성할 수 있다. KV 저장 장치들(110)를 사용하는 일부 실시예에서, 데이터 중요도는 키 값 쌍(key value pairs)으로 압축되거나 인코딩될 수 있다.
일부 실시예에서, 저장 장치(110)는 이용 가능한 구조 공간의 양이 임계 크기보다 작으며 그에 따라 지속 가능한 읽기 전용 모드에서의 동작을 지원하기에 불충분하다고 결정할 수 있으며, 그 결과 저장 장치(110)는 지속 불가능한 읽기 전용 모드로 전환할 수 있다. 이러한 결정은 장애가 처음 감지될 때 이루어질 수 있고, 또는 장애가 처음 감지될 때 저장 장치(110)가 초기에 지속 가능한 읽기 전용 모드로 전환하고, 일정 시간 후에 구조 공간이 이용 가능한 구조 공간이 임계 크기 미만으로 감소할 정도로 소비되어(예컨대, 저장 매체(125)의 장애 부분에서의 데이터의 계속적인 만료에 의해), 저장 장치(110)는 지속 가능한 읽기 전용 모드에서 지속 불가능한 읽기 전용 모드로 전환할 수 있다. 지속 가능한 읽기 전용 모드에서 지속 불가능한 읽기 전용 모드로 전환할 때, 저장 장치(110)는 호스트(105)에 이러한 전환을 통지할 수 있고, 호스트(105)는 데이터가 만료하기 전에 저장 장치로부터 다른 저장 장치로 가능한 한 많은 데이터를 복사하려고 시도할 수 있다.
경우에 따라, 데이터는 하루 또는 한 시간의 기간을 초과하여 손실될 수 있다. 이와 같이, 저장 장치(110)의 FPGA는 저장 장치(110)가 지속 가능한 읽기 전용 모드로 전환할 때 이전(transfer)을 용이하게 하기 위해 드라이브상의 데이터의 속성(예컨대, 오래된, 태깅된, 연속 또는 파일-타입)을 모니터링할 수 있다. FPGA는 우선 순위에 따라 데이터를 큐(queue)에 넣거나 구조 공간으로 이전할 데이터를 정리(order)할 수 있으며, 데이터가 구조 공간으로 이동할 때 데이터를 압축할 수 있다. 일부 실시예들은 예컨대, 이더넷 저장 장치 또는 키-값(KV) 저장 장치에서 구현될 수 있다.
도 4는 일부 실시예에서 저장 장치(110)의 개략적인 데이터 레이아웃 다이어그램이다. 블록 수명 테이블(405)은 저장 장치(110)의 각 블록의 보존 기간을 나열하고, 맵핑 테이블(410)은 논리적 블록 주소에서 물리적 블록 주소로의 맵핑을 나열한다. 저장 장치(110)가 지속 가능한 읽기 전용 모드로 전환할 때, 저장 장치(110)는 장애가 있는 사용 공간(415)(장애 조건에 의해 영향 받는 물리적 공간)의 데이터를 구조 공간(420)으로 복사한다. 정상 사용 공간(425)의 데이터는 저장 장치(110)가 (지속 가능한 읽기 전용 모드에 있는 대신에) 정상 동작 모드에 있었던 것처럼 처리된다. 장애 조건은 물리적 공간의 손실을 초래하기 때문에, 사용된 LBA 공간(430)의 크기에서 대응하는 감소가 있으며, 이전에 이용 가능한 LBA 공간의 일부는 미사용 LBA 공간 (435)이 된다. 컨트롤러(120)에 의해 실행되는 펌웨어(440)는 전술한 바와 같이, 데이터가 이동되고 테이블이 업데이트되도록 할 수 있다.
도 5a는 일부 실시예에서 지속 가능한 읽기 전용 모드로 전환하는 방법에 대한 흐름도이다. 505에서, 호스트(105)는 저장 장치로부터 데이터를 송수신하고, 510에서, 호스트(105)는 저장 장치에서 에러가 발생했는 지를 결정하고, 520에서, 호스트(105)는 저장 장치에 에러가 발생 하는 지를 결정하고, 525에서, 저장 장치(110)는 내부 진단을 수행하고 지속 가능한 읽기 전용 모드로 전환하며, 530에서, FPGA는 저장 장치(110)상의 유효한 데이터의 속성(nature)을 (예를 들어, 데이터 타입 또는 나이에 기초하여) 선택적으로 모니터링할 수 있으며, 535에서, 저장 장치(110)는 데이터의 나이가 보존 기간에 가까워지면 유효한 데이터를 구조 공간으로 재배치하며, 540에서, 저장 장치(110)는 구조 공간의 상태 및 내용에 대한 정보를 데이터를 플러시하는(flush) 호스트(105)로 선택적으로 전송할 수 있다. 도 5b는 지속 가능한 읽기 전용 모드에서 동작하기 위한 방법의 세부 사항을 보여주는 흐름도이다. 상기 방법은 535에서, 저장 장치에 의해 제1 읽기 전용 모드에서 저장 장치를 동작시킴으로써 상기 저장 장치가 부분 복구가 가능한 장애 상태에 있음을 결정하는 단계; 및 540에서, 저장 장치의 페이지에 저장된 제1 데이터 항목의 나이가 임계 나이를 초과했음을 결정하고 제1 데이터 항목을 저장 장치의 구조 공간으로 복사함으로써 저장 장치를 제1 읽기 전용 모드로 동작시키는 단계를 포함한다.
일부 실시예에서, 전술한 바와 같이, 저장 디바이스들(110)의 어레이 및 볼륨 매니저(115)를 포함하는 RAID-0 시스템은 RAID-0 시스템의 저장 디바이스들(110)의 어느 하나를 읽기 전용 모드(예컨대, 지속 가능한 읽기 전용 모드)로의 전환을 수용하도록 구성될 수 있다. 정상 동작에서, 볼륨 매니저(115)는 저장 장치들(110)의 어레이에 걸쳐 데이터를 스트라이핑할(striping) 책임이 있을 수 있는데, 예를 들어, 저장 장치들(110)의 어레이의 각각의 저장 장치(110)에 각 스트라이프(각 스트라이프는 이러한 스트립들로 구성됨)의 하나의 스트립을 쓸 책임이 있을 수 있다. 이러한 시스템에서, 저장 장치들(110)의 어레이 중 임의의 저장 장치는 읽기 전용 모드(또는 "읽기 전용 상태")로 전환할 때, RAID-0 시스템은 동작 모드("비상 모드"로 지칭될 수 있음)로 전환하고, 저장 장치들(110)의 어레이를 위한 볼륨 매니저(115)는 (i) 장애가 있는 저장 장치(110)로부터 메타데이터 및 복구된 사용자 데이터에 대해 남아 있는, 영향을 받지 않는 저장 장치들(110)(읽기-쓰기 상태에 있는)의 각각에 구조 공간을 할당하고, (ii) 맵핑 테이블("비상 맵핑 테이블"으로 지칭될 수 있음)을 유지한다. 각 저장 장치(110)상의 구조 공간은 n개의 스트립을 저장할 수 있는데, 여기서 n = R/(스트립 크기), R = C/M, C는 저장 장치들(110)의 어레이의 저장 장치들의 각각의 용량이다. 볼륨 매니저(115)는 호스트에서(예를 들어, 하드웨어, 소프트웨어 또는 펌웨어, 또는 하드웨어, 소프트웨어 및 펌웨어의 조합으로), 또는 RAID-0 시스템의 레이드 컨트롤러 (예컨대, 호스트와 별도의 인클로저에 수용될 수 있음)에서 구현될 수 있다. 일부 실시 예에서, 볼륨 매니저(115)는 FPGA에서 구현된다. RAID-0 시스템은 독립형일 수 있고 호스트의 관점에서 RAID-0 시스템이 단일 저장 장치(110)처럼 동작하도록 저장 장치들(110)의 어레이를 가상화할 수 있다. 일반적으로, 볼륨 매니저는 볼륨 매니저에 의해 수행되는 것으로 여기에 설명된 동작들을 수행하도록 (예를 들어, 적절한 소프트웨어 또는 펌웨어에 의해) 구성된 처리 회로(이하 상세히 기술됨)일 수 있다.
RAID-0 시스템이 비상 모드로 동작하고 있고 호스트(105)로부터 쓰기 커맨드가 수신되어 저장 장치들(110)의 어레이에 스트라이프를 쓸 것을 요구하는 경우 볼륨 매니저(115)는 비상 맵핑 테이블을 확인하여 스트라이프가 "등록되었는 지"를 판단하는데 즉, 엔트리가 스트라이프에 대해 이미 만들어 졌는지 여부를 판단한다. 아직 엔트리가 생성되지 않은 경우(즉, 스트라이프가 "개방-맵핑 된", 즉 등록되지 않은 경우), 볼륨 매니저(115)는 장애가 있는 저장 장치(110)(읽기 전용 모드로 전환된 저장 장치 (110))에 일반적으로 쓰여졌을 스트립이 쓰여질 위치를 표시하기 위해 비상 맵핑 테이블에 엔트리를 생성한다. 비상 맵핑 테이블이 이미 스트라이프에 대한 엔트리를 포함하는 경우, 엔트리는 일반적으로 장애가 있는 저장 장치(110)에 쓰여졌을 스트립이 쓰여질 위치를 결정하는 데 사용된다. 어느 경우든, 볼륨 매니저(115)는 도 6a에 도시된 바와 같이 저장 장치들(110)의 어레이에 각각의 스트립을 기록함으로써, 장애가 있는 저장 장치(110)에 일반적으로 쓰여졌을 스트립(605)을 다른 저장 장치(110)의 구조 공간에 기록한다.
읽기 커맨드가 수신되어 저장 장치들(110)의 어레이로부터 스트라이프를 읽을 것을 요구하는 경우 볼륨 매니저(115)는 비상 맵핑 테이블을 확인하여 엔트리가 스트라이프에 대해 만들어 졌는지의 여부를 판단한다. 엔트리가 전혀 만들어 지지 않은 경우,도 6b에 도시된 바와 같이, 볼륨 매니저(115)는 정상적인 동작에서 장애가 있는 저장 장치(110)를 포함하는 각각의 저장 장치(110)로부터 스트립을 읽는 것처럼 스트라이프를 읽는다. 비상 맵핑 테이블이 스트라이프에 대한 엔트리를 포함하는 경우, 엔트리는 일반적으로 장애가 있는 저장 장치(110)로부터 읽혔을 스트립이 읽을 위치를 결정하는 데 사용된다.
일반적으로 장애가 있는 저장 장치(110)에 쓰여졌을 스트립의 재맵핑은 예를 들어 다음과 같이 달성될 수 있다. 저장 장치들(110)의 어레이의 각 저장 장치(110)는 0과 M-1 사이의 숫자일 수 있는 드라이브 식별 번호(또는 "드라이브 ID")를 가질 수 있으며, 여기서 M은 저장 장치들(110)의 어레이에서 저장 장치들(110)의 개수이다. 볼륨 매니저(115)는 드라이브 식별 번호를 재할당할 수 있는데, 예를 들어, 등록된 스트라이프(등록되지 않은 스트라이프에 대한 읽기 동작은 원래의 드라이브 식별 번호를 계속 사용할 수 있음)에 대한 읽기 또는 쓰기 동작을 수행하는데 사용될 대체 드라이브 식별 번호를 저장 장치들(110)의 어레이의 각 저장 장치(110)에 할당할 수 있다. 다음 공식을 사용하여 대체 드라이브 식별 번호를 생성할 수 있다.
드라이브 ID < 장애가 있는 드라이브 ID인 경우
새 드라이브 ID = 드라이브 ID
그렇지 않으면,
새 드라이브 ID = ((드라이브 ID - 1) + (M - 1)) mod (M-1)
이 공식의 효과에 따라, (i) 장애가 있는 저장 장치의 원래 드라이브 식별 번호보다 작은 식별 번호를 가진 각 저장 장치에 각각의 원래 드라이브 식별 번호를 할당하고 (ii) 제1 저장 장치의 원래 드라이브 식별 번호보다 큰 식별 번호를 갖는 각 저장 장치에 1보다 작은 각각의 원래 드라이브 식별 번호를 할당할 수 있다.
대체 드라이브 번호를 사용하여, 일반적으로 장애가 있는 저장 장치(110)에 쓰여진 스트립이 쓰여질 수 있는 대상 드라이브는 공식 "대상 드라이브 ID(Target Drive ID) = sid % (M-1)”을 사용하여 식별될 수 있으며, 여기서 대상 드라이브 ID는 대상 드라이브의 대체 드라이브 식별 번호이고, sid는 일반적으로 장애가 있는 저장 장치(110)에 쓰여졌을 스트립의 스트립 식별자이며, "%"는 모듈로 연산자(modulo operator)이다.
도 6c는 Drive 1이 읽기 전용 모드로 전환된 4개의 저장 장치(110)(즉, M = 4)를 갖는 RAID-0 시스템의 개략도이다. Stripe 1이 쓰여질 때 대상 드라이브 ID는 다음 수식에 의해 암시적으로 결정된다.
대상 드라이브 ID = Strip ID % (M-1) = 1,
즉, 대상 드라이브는 대체 드라이브 식별 번호 1 (즉, Drive 2)을 갖는 저장 장치(110)이다. 드라이브 내에서 구조 공간은 스트립 크기와 동일한 크기의 스트립들( "구조 스트립" 또는 "R-스트립"이라고 함)으로 분할될 수 있다. 비상 맵핑 테이블은 엔트리(1,0)(첫 번째 엘리먼트가 스트라이프 ID(Stripe 1)이고 두 번째 엘리먼트가 대상 드라이브의 R-스트립 ID이다)를 포함할 수 있다. 따라서 비상 맵핑 테이블의 엔트리(1,0)는 Strip(1,1)이 R-Strip(1,0)에 맵핑되었음을 의미한다.
RAID-0 시스템은 저장 장치들(110)의 어레이 중 하나 이상에 의해 지속 가능한 읽기 전용 모드 또는 지속 불가능한 읽기 전용 모드로의 전환을 수용하도록 구성될 수 있다. 지속 불가능한 읽기 전용 모드로 전환하는 경우, 장애가 있는 저장 장치(110)의 등록된 스트립들은 다른 장치의 구조 공간에 영구적으로 쓰여질 수 있다. 지속 불가능한 읽기 전용 모드로 전환하는 경우, 예컨대, 장애가 있는 저장 장치로부터 모든 데이터를 이동하기에 충분한 속도로 볼륨 매니저(115)는 장애가 있는 저장 장치(110)로부터 영향을 받지 않는 저장 장치(110)로 데이터를 만료되기 전에 이동할 수 있다. 서버는 데이터량과 만료 이전 남은 시간을 기준으로 속도를 계산할 수 있다.
도 7a는 RAID-0 시스템을 동작시키는 방법에 대한 흐름도이다. 705에서, RAID-0 시스템의 저장 장치(110)는 장애을 가지며 읽기 전용 모드로 전환하며, 710에서, 영향 받는 저장 장치(110)는 내부 진단을 수행하고 그것의 장애 복원 상태가 부분적으로 복원되고 읽기 전용이라고 결정하며, 715에서, 볼륨 매니저(115)는 영향을 받은 저장 장치(110)가 읽기 전용 모드에 있다고 결정하고 ("제대로 기능하는") 영향 받지 않는 저장 장치의 ID를 재할당하며, 720에서, 볼륨 매니저(115)는 쓰기 동작을 수신하고, 영향 받는 장치의 스트립이 대상(영향 받지 않는) 저장 장치(110)로 재송신되고(redirected) 전체 스트립이 영향 받지 않는 저장 장치의 새로운 드라이브 ID를 기반으로 대상(영향 받지 않는)의 구조 공간에 쓰여진 것을 나타내도록 임시 맵핑 테이블에 대한 엔트리를 추가하며, 725에서, 볼륨 매니저(115)는 호스트(105)로부터 읽기 명령을 수신하고, 영향 받는 저장 장치의 스트립을 대상(영향 받지 않는) 저장 장치의 구조 공간으로부터 읽으면서 RAID 시스템의 제대로 기능하는 영향받지 않는 저장 장치(110)로부터 스트라이프의 모든 스트립을 읽는다.
도 7b는 RAID-0 저장 시스템을 동작시키는 방법의 세부사항을 보여주는 흐름도이다. 상기 방법은, 730에서, 제1 저장 장치가 읽기 전용 상태에 있고 제2 저장 장치가 읽기-쓰기 상태에 있다고 결정하는 단계; 735에서, 제1 스트라이프의 일부를 제2 저장 장치에 쓰고 제1 스트라이프에 대한 맵핑 테이블에 엔트리를 생성함으로써 저장 시스템에 대한 제1 스트라이프의 쓰기 동작을 수행하는 단계; 740에서, 제1 저장 장치 및 제2 저장 장치로부터 제2 스트라이프의 일부를 읽음으로써, 저장 시스템으로부터의 제2 스트라이프의 제1 읽기 동작을 수행하는 단계; 및 745에서, 상기 맵핑 테이블이 제1 스트라이프에 대한 엔트리를 포함한다고 결정하고 제2 저장 장치로부터 상기 제1 스트라이프의 일부를 읽음으로써 저장 시스템으로부터 상기 제1 스트라이프의 제2 읽기 동작을 수행하는 단계를 포함한다.
호스트(105) 또는 컨트롤러(120)와 같은 본 명세서에 설명된 다양한 소자들은 처리 회로이거나 처리 회로를 포함할 수 있다. 본 명세서에서, 용어 "처리 회로" 또는 "컨트롤러 수단"은 데이터 또는 디지털 신호를 처리하는 데 채용되는 하드웨어, 펌웨어 및 소프트웨어의 임의의 조합을 의미하는 데 사용된다. 처리 회로 하드웨어에는 예를 들어 주문형 집적 회로(ASIC), 범용 또는 특수 목적 중앙 처리 장치(CPU), 디지털 신호 프로세서(DSP), 그래픽 처리 장치(GPU) 및 필드 프로그래머블 게이트 어레이(FPGA)와 같은 프로그램머블 로직 장치들을 포함할 수 있다. 처리 회로에서, 본 명세서에서 사용되는 바와 같이, 각 기능은 그 기능을 수행하도록 구성된, 즉 하드-연결된(hard-wired) 하드웨어에 의해 또는 비일시적 저장 매체에 저장된 명령들을 실행하도록 구성된 CPU와 같은 더 범용의 하드웨어에 의해 수행된다. 처리 회로는 단일 인쇄 회로 기판(PCB) 상에서 제작되거나 여러 개의 상호 연결된 PCB들 상에서 분포될 수 있다. 처리 회로는 다른 처리 회로를 포함하고, 예컨대, 처리 회로는 PCB상에서 상호연결된 두 개의 프로세싱 회로들, 즉, FPGA 및 CPU를 포함할 수 있다.
본 명세서에서 사용된 바와 같이, "~의 일부"는 사물의 "적어도 일부"를 의미하고, 따라서 사물의 전부 또는 전부보다 적음을 의미할 수 있다. 이와 같이, 사물의 "일부"는 사물 전체를 특별한 경우로 포함하는데, 즉, 사물 전체가 사물의 일부에 대한 일 예이다. 여기에서 사용된 용어 "또는"은 "및/또는"으로 해석되어야 하며, 예를 들어 "A 또는 B"는 "A" 또는 "B" 또는 "A 및 B" 중 어느 하나를 의미한다.
명세서의 배경 항목에서 제공되는 배경은 맥락을 설정하기 위해서만 포함되며,이 섹션의 콘텐츠는 종래 기술인 것으로 인정하지 않는다. 설명된 임의의 컴포넌트 또는 컴포넌트들의 임의의 조합(예를 들어, 여기에 포함된 임의의 시스템 다이어그램에서)은 여기에 포함된 임의의 흐름도의 동작들 중 하나 이상을 수행하는데 사용될 수 있다. 또한, (i) 상기 동작들은 예시적인 동작들이고, 명시적으로 커버되지 않은 다양한 추가 단계를 포함할 수 있으며, (ii) 상기 동작들의 시간적 순서는 변경될 수 있다.
본 명세서에서 사용된 바와 같이, 방법(예 : 조정) 또는 제1 수량 (예 : 제1 변수)이 제2 수량 (예 : 제2 변수)에 "기반"되는 것으로 언급될 때, 이는 제2 수량이 방법에 대한 입력 또는 제1 수량에 영향을 주는데, 예를 들어, 제2 수량은 제1 수량을 계산하는 함수에 대한 입력(예 : 유일한 입력 또는 여러 입력 중 하나)이거나, 제1 수량은 제2 수량과 동일한 값을 가지거나 제2 수량과 동일할 수 있다(예를 들어, 메모리 내의 동일한 위치 또는 위치들에 저장됨).
비록 용어 "제1", "제2", "제3" 등이 본 명세서에서 다양한 소자들, 구성요소들, 영역들, 계층들 및/또는 섹션들을 설명하기 위해 사용될 수 있으며, 이러한 소자들, 구성요소들, 영역들, 계층들 및/또는 섹션들은 이들 용어로 제한되지 않음이 이해될 것이다. 이러한 용어들는 하나의 소자, 구성요소, 영역, 레이어 또는 섹션을 다른 소자, 구성요소, 영역, 레이어 또는 섹션과 구별하는 데만 사용된다. 따라서, 본 명세서에서 언급된 제1 소자, 구성요소, 영역, 계층 또는 섹션은 본 발명의 개념의 사상 및 범위를 벗어나지 않고 제2 소자, 구성요소, 영역, 계층 또는 섹션으로 지칭될 수 있다.
"바로 아래(beneath)", "아래(below)", "하위(lower)", "하부(under)", "상부(above)", "상위(upper)"등과 같은 공간적으로 상대적인 용어들은 설명의 편의를 위해 도면에 도시된 바와 같은 하나의 소자 또는 특징이 다른 소자(들) 또는 특징(들)에 대해 갖는 관계를 설명하기 위해 사용될 수 있다. 그러한 공간적으로 상대적인 용어는 도면에 도시된 방향 이외에도, 사용 또는 동작중인 장치의 다른 방향들을 포함하도록 의도된 것임을 이해할 것이다. 예를 들어, 도면의 장치가 뒤집힌 경우, 다른 소자 또는 특징의 "아래" 또는 "아래" 또는 "바로 아래"로 설명된 소자는 상기 다른 소자 또는 특징의 "상부"로 향하게 된다. 따라서, 예시적인 용어 "아래" 및 "하부"는 상부와 하부의 방향을 모두 포함할 수 있다. 상기 장치는 다르게 배치될 수 있으며 (예컨대, 90도 회전되거나 다른 방향으로) 여기에 사용된 공간적으로 상대적인 기술어(descriptor)는 그에 따라 해석되어야 한다. 또한, 한 계층이 두 계층 사이에 있는 것으로 언급될 때, 이는 두 계층 사이의 유일한 계층일 수 있거나 하나 이상의 중간층(intervening layers)이 존재할 수도 있음을 또한 이해할 것이다.
본 명세서에서 사용된 용어는 특정 실시예를 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서 사용되는 용어 "실질적으로", "약" 및 이와 유사한 용어는 정도(degree)의 용어가 아니라 근사값의 용어로 사용되며, 당업자에 의해 인지될 수 있는 측정된 또는 계산된 값의 고유한 편차를 고려하도록 의도된 것이다.
본 명세서에서 사용 된 바와 같이, 단수 형태 "a"및 "an"은 문맥상 명백하게 달리 나타내지 않는 한 복수 형태도 포함하도록 의도된다. 본 명세서에서 사용될 때 "포함한다" 및/또는 "포함하는"이라는 용어는 언급된 특징, 정수, 단계, 동작, 소자 및/또는 구성요소의 존재를 특정하지만 하나 이상의 다른 특징, 정수, 단계, 동작, 소자, 구성요소 및/또는 그 그룹의 존재 또는 추가를 배제하지는 않는다는 것이 또한 이해될 것이다. 본 명세서에서 사용되는 용어 "및/또는"은 하나 이상의 연관되어 열거된 항목들의 하나 이상의 임의의 및 모든 조합을 포함한다. "의 최소한 하나"와 같은 표현들은 소자들의 목록 앞에 올 때 소자들의 전체 목록을 변경하며 목록의 개별 소자를 변경하지 않는다. 또한, 본 발명의 실시예를 설명할 때 "할 수 있다(may)"라는 용어는 "본 개시의 하나 이상의 실시예들"을 나타낸다. 또한, "예시적인"이라는 용어는 예 또는 예시를 나타내는 것으로 의도된다. 본 명세서에서 사용되는 "사용하다", "사용하여", "사용된"이라는 용어는 각각 "활용하다", "활용하여"및 "활용된"라는 용어와 동의어로 간주될 수 있다.
구성요소 또는 계층이 다른 구성요소 또는 계층 "에 위치함", "에 연결됨", "에 결합됨" 또는 "에 인접한"것으로 언급될 때, 상기 구성요소 또는 계층이 다른 구성요소 또는 계층에 직접 위치하거나, 연결되거나 결합되거나, 인접한 것이며, 하나 이상의 개재 구성요소 또는 계층이 존재할 수 있다. 반대로, 구성요소 또는 계층이 다른 구성요소 또는 계층에 "바로 위에", "에 직접 연결됨", "에 직접 결합됨" 또는 "에 바로 인접함"이라고 언급될 때, 개재하는 구성요소 또는 계층이 존재하지 않는다.
본 명세서에서 인용된 임의의 수치 범위는 인용된 범위 내에 포함된 동일한 수치 정확성의 모든 하위 범위를 포함하도록 의도된다. 예를 들어, "1.0 내지 10.0"의 범위 또는 "1.0과 10.0 사이"의 범위는 언급된 최소값 1.0과 언급된 최대값 10.0 사이의(이들을 포함함), 즉 1.0 이상의 최소값 및 10.0 이하의 최대 값을 갖는 모든 하위범위들 예컨대, 2.4 내지 7.6의 범위를 포함한다. 본 명세서에서 언급된 임의의 최대 수치 제한은 그 안에 포함된 모든 더 낮은 수치 제한을 포함하도록 의도되고, 본 명세서에 언급된 임의의 최소 수치 제한은 그 안에 포함된 모든 더 높은 수치 제한을 포함하도록 의도된다.
저장 장치들의 복원 동작을 위한 시스템 및 방법의 예시적인 실시예가 본 명세서에서 구체적으로 설명되고 도시되었지만, 많은 수정 및 변형이 당업자에게 명백할 것이다. 따라서, 본 개시의 원리에 따라 구성된 저장 장치들의 복원 동작을 위한 시스템 및 방법과 저장 장치들을 포함하는 시스템은 본 명세서에서 구체적으로 설명된 것과 다르게 구현될 수 있음을 이해해야 한다. 본 발명은 또한 이하의 청구범위 및 그 균등물에서 정의된다.
105: 호스트
110: 저장 장치
115: 볼륨 매니저
120: 컨트롤러
125: 저장 매체

Claims (20)

  1. 제1 저장 장치 및 제2 저장 장치를 포함하는 저장 시스템을 동작시키는 방법에 있어서,
    상기 제1 저장 장치가 읽기 전용 상태에 있고, 상기 제2 저장 장치가 읽기-쓰기 상태에 있음을 결정하는 단계;
    상기 저장 시스템에 대한 제1 스트라이프의 쓰기 동작을 수행하는 단계;
    상기 저장 시스템으로부터의 제2 스트라이프의 제1 읽기 동작을 수행하는 단계; 및
    상기 저장 시스템으로부터의 상기 제1 스트라이프의 제2 읽기 동작을 수행하는 단계를 포함하고,
    상기 쓰기 동작을 수행하는 단계는:
    상기 제1 스트라이프의 일부를 상기 제2 저장 장치에 쓰는 단계, 및
    상기 제1 스트라이프를 위한 맵핑 테이블에 엔트리를 생성하는 단계를 포함하고,
    상기 제1 읽기 동작을 수행하는 단계는 상기 제1 저장 장치 및 상기 제2 저장 장치로부터 상기 제2 스트라이프의 일부를 읽는 단계를 포함하고,
    상기 제2 읽기 동작을 수행하는 단계는:
    상기 맵핑 테이블이 상기 제1 스트라이프를 위한 상기 엔트리를 포함함을 결정하는 단계, 및
    상기 제2 저장 장치로부터 상기 제1 스트라이프의 일부를 읽는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 저장 시스템은 상기 제1 저장 장치 및 상기 제2 저장 장치를 포함하는 복수의 저장 장치들을 포함하며,
    상기 제2 저장 장치가 상기 읽기-쓰기 상태에 있음을 결정하는 단계는 상기 제1 저장 장치가 아닌 하나 이상의 잔여 저장 장치들이 상기 읽기-쓰기 상태에 있음을 결정하는 단계를 포함하고, 상기 잔여 저장 장치들은 상기 제2 저장 장치를 포함하고,
    상기 쓰기 동작을 수행하는 단계는 상기 잔여 저장 장치들에 상기 제1 스트라이프를 쓰는 단계를 포함하는 방법.
  3. 제2항에 있어서,
    상기 제1 읽기 동작을 수행하는 단계는:
    상기 제2 스트라이프가 상기 복수의 저장 장치들 내에서 개방-맵핑되어 있음을 결정하는 단계, 및
    상기 복수의 저장 장치들로부터 상기 제2 스트라이프를 읽는 단계를 포함하는 방법.
  4. 제2항에 있어서,
    상기 잔여 저장 장치들에 드라이브 식별 번호들을 재할당하는 단계를 더 포함하고,
    상기 복수의 저장 장치들 각각은 원래의 드라이브 식별 번호를 가지며, 상기 재할당하는 단계는:
    상기 제1 저장 장치의 상기 원래의 드라이브 식별 번호보다 작은 식별 번호를 갖는 각 저장 장치에 상기 원래의 드라이브 식별 번호를 할당하는 단계; 및
    상기 제1 저장 장치의 상기 원래의 드라이브 식별 번호보다 큰 식별 번호를 갖는 각 저장 장치에 1 보다 작은 상기 원래의 드라이브 식별 번호를 할당하는 단계를 포함하는 방법.
  5. 제2항에 있어서,
    상기 제2 읽기 동작을 수행하는 단계는:
    상기 잔여 저장 장치들로부터 상기 제1 스트라이프를 읽는 단계, 및
    상기 맵핑 테이블에 기초한 주소에서 저장 장치로부터 상기 제1 스트라이프의 스트립을 읽는 단계를 포함하는 방법.
  6. 제5항에 있어서,
    상기 잔여 저장 장치들에 드라이브 식별 번호들을 재할당하는 단계를 더 포함하고,
    상기 복수의 저장 장치들의 각각은 원래의 드라이브 식별 번호를 가지며, 상기 재할당하는 단계는 상기 제1 저장 장치의 상기 원래의 드라이브 식별 번호보다 작은 식별 번호를 갖는 각 저장 장치에 상기 원래의 드라이브 식별 번호를 할당하는 단계를 포함하는 방법.
  7. 제6항에 있어서,
    상기 재할당하는 단계는 상기 제1 저장 장치의 상기 원래의 드라이브 식별 번호보다 큰 식별 번호를 갖는 각 저장 장치에 1보다 작은 상기 원래의 드라이브 식별 번호를 할당하는 단계를 더 포함하는 방법.
  8. 제6항에 있어서,
    상기 제1 저장 장치의 상기 원래의 드라이브 식별 번호가 n이며, 상기 제1 스트라이프의 상기 스트립을 읽는 단계는 상기 재할당된 식별 번호 n을 갖는 상기 저장 장치로부터 상기 스트립을 읽는 단계를 포함하는 방법.
  9. 데이터를 저장하는 시스템에 있어서,
    제1 저장 장치,
    제2 저장 장치, 및
    상기 제1 저장 장치 및 상기 제2 저장 장치에 연결된 처리 회로를 포함하며,
    상기 처리 회로는:
    상기 제1 저장 장치가 읽기 전용 상태에 있고, 상기 제2 저장 장치가 읽기-쓰기 상태에 있음을 결정하고,
    제1 스트라이프의 쓰기 동작을 수행하고,
    제2 스트라이프의 제1 읽기 동작을 수행하고,
    상기 제1 스트라이프의 제2 읽기 동작을 수행하도록 구성되고,
    상기 쓰기 동작을 수행하는 것은:
    상기 제1 스트라이프의 일부를 상기 제2 저장 장치에 쓰고,
    상기 제1 스트라이프를 위한 맵핑 테이블에 엔트리를 생성하는 것을 포함하고,
    상기 제1 읽기 동작을 수행하는 것은 상기 제1 저장 장치 및 상기 제2 저장 장치로부터 상기 제2 스트라이프의 일부를 읽는 것을 포함하고,
    상기 제2 읽기 동작을 수행하는 것은:
    상기 맵핑 테이블이 상기 제1 스트라이프를 위한 상기 엔트리를 포함함을 결정하고,
    상기 제2 저장 장치로부터 상기 제1 스트라이프의 일부를 읽는 것을 포함하는 시스템.
  10. 제9항에 있어서,
    상기 제1 저장 장치 및 상기 제2 저장 장치를 포함하는 복수의 저장 장치들을 포함하며,
    상기 제2 저장 장치가 상기 읽기-쓰기 상태에 있음을 결정하는 것은 상기 제1 저장 장치가 아닌 하나 이상의 잔여 저장 장치들이 상기 읽기-쓰기 상태에 있음을 결정하는 것을 포함하고, 상기 잔여 저장 장치들은 상기 제2 저장 장치를 포함하고,
    상기 쓰기 동작을 수행하는 것은 상기 잔여 저장 장치들에 상기 제1 스트라이프를 쓰는 것을 포함하는 시스템.
  11. 제10항에 있어서,
    상기 제1 읽기 동작을 수행하는 것은:
    상기 제2 스트라이프가 상기 복수의 저장 장치들 내에서 개방-맵핑되어 있음을 결정하고,
    상기 복수의 저장 장치들로부터 상기 제2 스트라이프를 읽는 것을 포함하는 시스템.
  12. 제10항에 있어서,
    상기 처리 회로는 상기 잔여 저장 장치들에 드라이브 식별 번호들을 재할당하도록 더 구성되며,
    상기 복수의 저장 장치들 각각은 원래의 드라이브 식별 번호를 가지며, 상기 재할당하는 것은:
    상기 제1 저장 장치의 상기 원래의 드라이브 식별 번호보다 작은 식별 번호를 갖는 각 저장 장치에 상기 원래의 드라이브 식별 번호를 할당하고,
    상기 제1 저장 장치의 상기 원래의 드라이브 식별 번호보다 큰 식별 번호를 갖는 각 저장 장치에 1 보다 작은 상기 원래의 드라이브 식별 번호를 할당하는 것을 포함하는 시스템.
  13. 제10항에 있어서,
    상기 제2 읽기 동작을 수행하는 것은:
    상기 잔여 저장 장치들로부터 상기 제1 스트라이프를 읽고,
    상기 맵핑 테이블에 기초한 주소에서 저장 장치로부터 상기 제1 스트라이프의 스트립을 읽는 것을 포함하는 시스템.
  14. 제13항에 있어서,
    상기 처리 회로는 상기 잔여 저장 장치들에 드라이브 식별 번호들을 재할당하도록 더 구성되고,
    상기 복수의 저장 장치들의 각각은 원래의 드라이브 식별 번호를 가지고, 상기 재할당하는 것은 상기 제1 저장 장치의 상기 원래의 드라이브 식별 번호보다 작은 식별 번호를 갖는 각 저장 장치에 상기 원래의 드라이브 식별 번호를 할당하는 것을 포함하는 시스템.
  15. 제14항에 있어서,
    상기 처리 회로는 상기 제1 저장 장치의 상기 원래의 드라이브 식별 번호보다 큰 식별 번호를 갖는 각 저장 장치에 1 보다 작은 상기 원래의 드라이브 식별 번호를 할당하도록 더 구성되는 시스템.
  16. 제14항에 있어서,
    상기 제1 저장 장치의 상기 원래의 드라이브 식별 번호가 n이고, 상기 제1 스트라이프의 상기 스트립을 읽는 것은 상기 재할당된 식별 번호 n을 갖는 상기 저장 장치로부터 상기 스트립을 읽는 것을 포함하는 시스템.
  17. 데이터를 저장하는 시스템에 있어서,
    제1 저장 장치,
    제2 저장 장치, 및
    상기 제1 저장 장치 및 상기 제2 저장 장치에 연결된 처리 수단을 포함하고,
    상기 처리 수단은:
    상기 제1 저장 장치가 읽기 전용 상태에 있고, 상기 제2 저장 장치가 읽기-쓰기 상태에 있음을 결정하고,
    제1 스트라이프의 쓰기 동작을 수행하고,
    제2 스트라이프의 제1 읽기 동작을 수행하고,
    상기 제1 스트라이프의 제2 읽기 동작을 수행하도록 구성되고,
    상기 쓰기 동작을 수행하는 것은:
    상기 제1 스트라이프의 일부를 상기 제2 저장 장치에 쓰고,
    상기 제1 스트라이프를 위한 맵핑 테이블에 엔트리를 생성하는 것을 포함하고,
    상기 제1 읽기 동작을 수행하는 것은 상기 제1 저장 장치 및 상기 제2 저장 장치로부터 상기 제2 스트라이프의 일부를 읽는 것을 포함하고,
    상기 제2 읽기 동작을 수행하는 것은:
    상기 맵핑 테이블이 상기 제1 스트라이프를 위한 상기 엔트리를 포함함을 결정하고,
    상기 제2 저장 장치로부터 상기 제1 스트라이프의 일부를 읽는 것을 포함하는 시스템.
  18. 제17항에 있어서,
    상기 제1 저장 장치 및 상기 제2 저장 장치를 포함하는 복수의 저장 장치들을 포함하고,
    상기 제2 저장 장치가 상기 읽기-쓰기 상태에 있음을 결정하는 것은 상기 제1 저장 장치가 아닌 하나 이상의 잔여 저장 장치들이 상기 읽기-쓰기 상태에 있음을 결정하는 것을 포함하고, 상기 잔여 저장 장치들은 상기 제2 저장 장치를 포함하고,
    상기 쓰기 동작을 수행하는 것은 상기 잔여 저장 장치들에 상기 제1 스트라이프를 쓰는 것을 포함하는 시스템.
  19. 제18항에 있어서,
    상기 제1 읽기 동작을 수행하는 것은:
    상기 제2 스트라이프가 상기 복수의 저장 장치들 내에서 개방-맵핑되어 있음을 결정하고,
    상기 복수의 저장 장치들로부터 상기 제2 스트라이프를 읽는 것을 포함하는 시스템.
  20. 제18항에 있어서,
    상기 처리 수단은 상기 잔여 저장 장치들에 드라이브 식별 번호들을 재할당하도록 더 구성되고,
    상기 복수의 저장 장치들 각각은 원래의 드라이브 식별 번호를 가지며, 상기 재할당하는 것은:
    상기 제1 저장 장치의 상기 원래의 드라이브 식별 번호보다 작은 식별 번호를 갖는 각 저장 장치에 상기 원래의 드라이브 식별 번호를 할당하고,
    상기 제1 저장 장치의 상기 원래의 드라이브 식별 번호보다 큰 식별 번호를 갖는 각 저장 장치에 1 보다 작은 상기 원래의 드라이브 식별 번호를 할당하는 것을 포함하는 시스템.

KR1020210066328A 2020-07-13 2021-05-24 결합 복원 저장 장치들을 갖는 레이드 시스템 KR20220008214A (ko)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
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,017 US11775391B2 (en) 2020-07-13 2020-12-01 RAID system with fault resilient storage devices
US17/109,017 2020-12-01

Publications (1)

Publication Number Publication Date
KR20220008214A true KR20220008214A (ko) 2022-01-20

Family

ID=79173657

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020210038020A KR20220008203A (ko) 2020-07-13 2021-03-24 장애 복원 읽기 전용 모드를 갖는 저장 장치
KR1020210041862A KR20220008206A (ko) 2020-07-13 2021-03-31 장애 복원 저장 장치
KR1020210066328A KR20220008214A (ko) 2020-07-13 2021-05-24 결합 복원 저장 장치들을 갖는 레이드 시스템
KR1020210091520A KR20220008237A (ko) 2020-07-13 2021-07-13 임시 스토리지에 대한 데이터 복원을 위한 시스템 및 장치

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020210038020A KR20220008203A (ko) 2020-07-13 2021-03-24 장애 복원 읽기 전용 모드를 갖는 저장 장치
KR1020210041862A KR20220008206A (ko) 2020-07-13 2021-03-31 장애 복원 저장 장치

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020210091520A KR20220008237A (ko) 2020-07-13 2021-07-13 임시 스토리지에 대한 데이터 복원을 위한 시스템 및 장치

Country Status (5)

Country Link
US (6) US20220012130A1 (ko)
JP (3) JP2022017216A (ko)
KR (4) KR20220008203A (ko)
CN (4) CN114003167A (ko)
TW (4) TW202203034A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220012130A1 (en) * 2020-07-13 2022-01-13 Samsung Electronics Co., Ltd. Storage device with fault resilient read-only mode

Family Cites Families (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10162494A (ja) 1996-12-03 1998-06-19 Internatl Business Mach Corp <Ibm> エラー回復方法
US6883126B1 (en) 2000-11-07 2005-04-19 Maxtor Corporation Method and apparatus for reducing error recovery time in hard disk drive
US6829719B2 (en) * 2001-03-30 2004-12-07 Transmeta Corporation Method and apparatus for handling nested faults
US6995943B1 (en) * 2001-12-11 2006-02-07 Maxtor Corporation Off-track error recovery method and apparatus for disk drive
US7275179B1 (en) * 2003-04-24 2007-09-25 Network Appliance, Inc. System and method for reducing unrecoverable media errors in a disk subsystem
US7415115B2 (en) 2003-05-14 2008-08-19 Broadcom Corporation Method and system for disaster recovery of data from a storage device
US20050015416A1 (en) * 2003-07-16 2005-01-20 Hitachi, Ltd. Method and apparatus for data recovery using storage based journaling
US7185222B2 (en) 2003-11-14 2007-02-27 International Business Machines Corporation Apparatus, system, and method for maintaining data in a storage array
JP4324088B2 (ja) 2004-12-17 2009-09-02 富士通株式会社 データ複製制御装置
US7536595B1 (en) 2005-10-19 2009-05-19 At&T Intellectual Property, Ii, L.P. Systems, devices, and methods for initiating recovery
TWI287190B (en) 2005-10-31 2007-09-21 Inventec Corp Stable storage method
US7774643B2 (en) * 2006-01-06 2010-08-10 Dot Hill Systems Corporation Method and apparatus for preventing permanent data loss due to single failure of a fault tolerant array
JP2007233903A (ja) 2006-03-03 2007-09-13 Hitachi Ltd 記憶制御装置及び記憶制御装置のデータ回復方法
JP2007299079A (ja) * 2006-04-28 2007-11-15 Fujitsu Ltd ストレージ装置及びその障害回復方法
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
JP2009104412A (ja) * 2007-10-23 2009-05-14 Hitachi Ltd ストレージ装置及びその制御方法
US7890504B2 (en) * 2007-12-19 2011-02-15 Netapp, Inc. Using the LUN type for storage allocation
US8706950B2 (en) * 2008-03-01 2014-04-22 Kabushiki Kaisha Toshiba Memory system
WO2009141752A2 (en) 2008-05-19 2009-11-26 Axxana (Israel) Ltd. Resilient data storage in the presence of replication faults and rolling disasters
JP2010033287A (ja) * 2008-07-28 2010-02-12 Hitachi Ltd ストレージサブシステム及びこれを用いたデータ検証方法
US8041991B2 (en) * 2008-11-18 2011-10-18 Lsi Corporation System and method for recovering solid state drive data
US20110012147A1 (en) 2009-07-15 2011-01-20 Koninklijke Philips Electronics N.V. Wavelength-converted semiconductor light emitting device including a filter and a scattering structure
US8769535B2 (en) 2009-09-24 2014-07-01 Avaya Inc. Providing virtual machine high-availability and fault tolerance via solid-state backup drives
KR20120037786A (ko) 2010-10-12 2012-04-20 삼성전자주식회사 저장 장치, 그것의 락 모드 관리 방법, 및 그것을 포함하는 메모리 시스템
US8589723B2 (en) 2010-12-22 2013-11-19 Intel Corporation Method and apparatus to provide a high availability solid state drive
US8949551B2 (en) * 2011-02-23 2015-02-03 Freescale Semiconductor, Inc. Memory protection unit (MPU) having a shared portion and method of operation
KR101854214B1 (ko) * 2011-04-27 2018-05-03 시게이트 테크놀로지 엘엘씨 라이트 방법 및 그 방법을 이용하는 저장 장치
WO2012160760A1 (ja) 2011-05-25 2012-11-29 パナソニック株式会社 情報処理装置および情報処理方法
WO2013024485A2 (en) 2011-08-17 2013-02-21 Scaleio Inc. Methods and systems of managing a distributed replica based storage
JP5887757B2 (ja) 2011-08-17 2016-03-16 富士通株式会社 ストレージシステム、ストレージ制御装置およびストレージ制御方法
US9372755B1 (en) * 2011-10-05 2016-06-21 Bitmicro Networks, Inc. Adaptive power cycle sequences for data recovery
US8782369B2 (en) * 2011-11-15 2014-07-15 Lsi Corporation Apparatus to manage efficient data migration between tiers
US10073656B2 (en) * 2012-01-27 2018-09-11 Sandisk Technologies Llc Systems and methods for storage virtualization
US10019353B2 (en) 2012-03-02 2018-07-10 Longitude Enterprise Flash S.A.R.L. Systems and methods for referencing data on a storage medium
US9164840B2 (en) * 2012-07-26 2015-10-20 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Managing a solid state drive (‘SSD’) in a redundant array of inexpensive drives (‘RAID’)
US8930663B2 (en) 2012-09-24 2015-01-06 Infinidat Ltd. Handling enclosure unavailability in a storage system
JP5910444B2 (ja) * 2012-09-28 2016-04-27 富士通株式会社 情報処理装置、起動プログラム、および起動方法
JP2014119831A (ja) * 2012-12-13 2014-06-30 Fujitsu Ltd ストレージ装置、制御方法及び制御プログラム
US9251115B2 (en) 2013-03-07 2016-02-02 Citrix Systems, Inc. Dynamic configuration in cloud computing environments
JP6005566B2 (ja) 2013-03-18 2016-10-12 株式会社東芝 情報処理システム、制御プログラムおよび情報処理装置
US9830236B2 (en) 2013-06-05 2017-11-28 Vmware, Inc. System and method for assigning memory reserved for high availability failover to virtual machines
US9397703B2 (en) * 2013-12-04 2016-07-19 Seagate Technology Llc Adaptive read error recovery for memory devices
US9378083B2 (en) * 2013-12-04 2016-06-28 Seagate Technology Llc Adaptive read error recovery for memory devices
US9542272B2 (en) * 2014-03-24 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Write redirection in redundant array of independent disks systems
JP2015210658A (ja) * 2014-04-25 2015-11-24 富士通株式会社 記憶制御装置、データ復旧プログラム、およびデータ復旧方法
US10102082B2 (en) 2014-07-31 2018-10-16 Intuit Inc. Method and system for providing automated self-healing virtual assets
US20170192886A1 (en) 2014-07-31 2017-07-06 Hewlett Packard Enterprise Development Lp Cache management for nonvolatile main memory
CN105320621A (zh) * 2014-08-04 2016-02-10 株式会社东芝 存储器系统以及信息处理装置
KR102147970B1 (ko) 2014-08-05 2020-08-25 삼성전자주식회사 비휘발성 메모리 기반의 스토리지 디바이스의 복구 방법 및 상기 스토리지 디바이스를 포함하는 전자 시스템의 동작 방법
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
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
KR102365269B1 (ko) * 2015-04-13 2022-02-22 삼성전자주식회사 데이터 스토리지 및 그것의 동작 방법
US9690651B2 (en) 2015-05-21 2017-06-27 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Controlling a redundant array of independent disks (RAID) that includes a read only flash data storage device
US9710401B2 (en) 2015-06-26 2017-07-18 Intel Corporation Processors, methods, systems, and instructions to support live migration of protected containers
US10013325B1 (en) * 2015-09-29 2018-07-03 EMC IP Holding Company LLC Providing resiliency to a raid group of storage devices
TWI547801B (zh) 2015-10-22 2016-09-01 Accelstor Inc 資料儲存系統及方法
US9766965B2 (en) * 2015-11-25 2017-09-19 Salesforce.Com, Inc. System and method for monitoring and detecting faulty storage devices
US10275160B2 (en) * 2015-12-21 2019-04-30 Intel Corporation Method and apparatus to enable individual non volatile memory express (NVME) input/output (IO) Queues on differing network addresses of an NVME controller
US10540164B2 (en) 2016-02-12 2020-01-21 Nutanix, Inc. Virtualized file server upgrade
JP6707939B2 (ja) 2016-03-25 2020-06-10 日本電気株式会社 制御装置、ストレージ装置、制御方法及びプログラム
US10445200B2 (en) 2016-05-02 2019-10-15 Samsung Electronics Co., Ltd. Storage device having various recovery methods and recovery modes
CN107797878A (zh) 2016-09-06 2018-03-13 阿里巴巴集团控股有限公司 虚拟机热迁移处理方法及系统
KR20180045220A (ko) * 2016-10-25 2018-05-04 삼성전자주식회사 읽기 요청 횟수를 줄이는 데이터 복원 동작을 수행하는 데이터 스토리지 시스템
US10223276B2 (en) 2017-02-23 2019-03-05 Red Hat, Inc. Page cache management during migration using a list of outstanding store requests transmitted to a destination host machine
JP2018170618A (ja) 2017-03-29 2018-11-01 Kddi株式会社 障害自動復旧システム、制御装置、手順作成装置およびプログラム
US10587685B2 (en) 2017-04-28 2020-03-10 Netapp Inc. Cross-platform replication of logical units
US10572161B2 (en) 2017-11-15 2020-02-25 Samsung Electronics Co., Ltd. Methods to configure and access scalable object stores using KV-SSDs and hybrid backend storage tiers of KV-SSDs, NVMe-SSDs and other flash devices
US10437517B2 (en) * 2018-02-15 2019-10-08 International Business Machines Corporation Enhanced soft fence of devices
US10719397B2 (en) 2018-06-08 2020-07-21 Samsung Electronics Co., Ltd. System, device and method for storage device assisted low-bandwidth data repair
US11869586B2 (en) * 2018-07-11 2024-01-09 Pure Storage, Inc. Increased data protection by recovering data from partially-failed solid-state devices
US11144240B2 (en) * 2018-08-24 2021-10-12 Micron Technology, Inc. Memory sub-system for increasing bandwidth for command scheduling
CN111104245B (zh) 2018-10-29 2023-07-14 建兴储存科技(广州)有限公司 固态存储装置的读取重试方法
US11003559B2 (en) 2019-03-26 2021-05-11 International Business Machines Corporation Underperforming drive handling in redundant arrays
US11099735B1 (en) 2020-02-18 2021-08-24 Vmware, Inc. Facilitating the recovery of full HCI clusters
US11636232B2 (en) 2020-05-05 2023-04-25 Lenovo (Singapore) Ltd. Pte. Apparatus, method, and program product for selectively obscuring data being displayed
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
US20220012130A1 (en) * 2020-07-13 2022-01-13 Samsung Electronics Co., Ltd. Storage device with fault resilient read-only mode
US11947838B2 (en) * 2020-11-30 2024-04-02 International Business Machines Corporation Utilizing statuses to preserve a state of data during procedures such as testing without causing functional interruptions
US11307931B1 (en) * 2021-03-19 2022-04-19 Micron Technology, Inc. Using zones to manage capacity reduction due to storage device failure

Also Published As

Publication number Publication date
JP2022017212A (ja) 2022-01-25
KR20220008237A (ko) 2022-01-20
US20220012145A1 (en) 2022-01-13
JP2022017215A (ja) 2022-01-25
US20220012147A1 (en) 2022-01-13
US20230251931A1 (en) 2023-08-10
CN114003167A (zh) 2022-02-01
US11630731B2 (en) 2023-04-18
US20220012142A1 (en) 2022-01-13
CN113934571A (zh) 2022-01-14
TW202219765A (zh) 2022-05-16
US11803446B2 (en) 2023-10-31
KR20220008206A (ko) 2022-01-20
JP2022017216A (ja) 2022-01-25
KR20220008203A (ko) 2022-01-20
TW202219766A (zh) 2022-05-16
CN113934367A (zh) 2022-01-14
US11775391B2 (en) 2023-10-03
US20220012130A1 (en) 2022-01-13
TW202203034A (zh) 2022-01-16
CN113934368A (zh) 2022-01-14
US20230244570A1 (en) 2023-08-03
TW202203037A (zh) 2022-01-16

Similar Documents

Publication Publication Date Title
US7457916B2 (en) Storage system, management server, and method of managing application thereof
US8312314B2 (en) Storage system and control method of storage system
US9891989B2 (en) Storage apparatus, storage system, and storage apparatus control method for updating stored data stored in nonvolatile memory
US20220291996A1 (en) Systems, methods, and devices for fault resilient storage
JP2001290746A (ja) I/o要求に優先順位を与える方法
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
US20230244570A1 (en) Fault resilient storage device
US20210349780A1 (en) Systems, methods, and devices for data recovery with spare storage device and fault resilient storage device
US9740423B2 (en) Computer system
JP2023137307A (ja) ストレージシステム及びストレージシステムの制御方法

Legal Events

Date Code Title Description
A201 Request for examination