KR20180011365A - 저장 시스템에서의 가속된 데이터 복구 - Google Patents

저장 시스템에서의 가속된 데이터 복구 Download PDF

Info

Publication number
KR20180011365A
KR20180011365A KR1020187002334A KR20187002334A KR20180011365A KR 20180011365 A KR20180011365 A KR 20180011365A KR 1020187002334 A KR1020187002334 A KR 1020187002334A KR 20187002334 A KR20187002334 A KR 20187002334A KR 20180011365 A KR20180011365 A KR 20180011365A
Authority
KR
South Korea
Prior art keywords
storage device
lba
lbas
storage
control logic
Prior art date
Application number
KR1020187002334A
Other languages
English (en)
Other versions
KR102502352B1 (ko
Inventor
존미하엘 피. 핸즈
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20180011365A publication Critical patent/KR20180011365A/ko
Application granted granted Critical
Publication of KR102502352B1 publication Critical patent/KR102502352B1/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/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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2082Data synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • 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
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0036Small computer system interface [SCSI]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

한 실시예는 저장 시스템을 제공한다. 저장 시스템은 고장난 저장 디바이스의 검출에 응답하여 적어도 하나의 대상 저장 디바이스를 식별하고, 적어도 하나의 대상 저장 디바이스 각각으로부터 대상 디바이스 논리적 블록 어드레스(LBA)의 상태를 요구하고, 각각의 대상 저장 디바이스로부터 맵핑된 디바이스 LBA와 연관된 데이터를 판독하고, 데이터를 적어도 하나의 대체 저장 디바이스에 기입하는 저장 시스템 제어 로직을 포함한다. 또 하나의 실시예는 저장 디바이스를 제공한다. 저장 디바이스는 요구에 응답하여 대상 디바이스 논리적 블록 어드레스(LBA)의 상태를 결정하는 디바이스 제어 로직; 요구에 대한 회답을 제공하는 호스트 인터페이스 - 회답은 대상 디바이스 LBA의 상태에 관련된 상태 표시자를 포함함 -; 복수의 디바이스 LBA들 및 각각의 상태 표시자들을 포함하는 맵 테이블; 및 적어도 하나의 맵핑된 LBA에 관련된 데이터를 포함하는 비휘발성 메모리(NVM)를 포함한다.

Description

저장 시스템에서의 가속된 데이터 복구{ACCELERATED DATA RECOVERY IN A STORAGE SYSTEM}
본 개시내용은 가속된 데이터 복구, 특히, 저장 시스템에서의 가속된 데이터 복구에 관한 것이다.
RAID(독립(저가) 디스크들의 리던던트 어레이) 시스템은 단일 저장 디바이스에 대한 개선된 성능 및/또는 고장 내성을 제공하도록 구성된 복수의 저장 디바이스를 포함한다. 리던던트 저장 시스템들(예를 들어, 레벨 0 위의 RAID 시스템들), 데이터 및/또는 패리티 정보의 하나 이상의 카피가 복수의 저장 디바이스 상에 저장될 수 있다. 고장난 저장 디바이스 상에 저장된 데이터는 카피(들) 및/또는 관련된 패리티 정보로부터 복구되어 대체 저장 디바이스 상에 저장될 수 있다. 이러한 복구 및 저장 동작들은 "리빌딩"이라고 공지되어 있다. 일반적으로, 고장난 저장 디바이스를 리빌드하는 것은 고장난 저장 디바이스의 전체 어드레스 공간을 카피(들)로부터 대체 저장 디바이스에 기입하는 것을 포함한다. 저장 디바이스의 저장 용량들이 증가함에 따라, 고장난 저장 디바이스에 대한 리빌드 동작들의 시간 기간도 증가한다.
청구된 주제의 특징들 및 장점들이 그에 따르는 실시예들의 다음의 설명으로부터 분명해질 것이고, 그 설명은 첨부 도면을 참조하여 고려되어야 한다:
도 1은 본 개시내용의 다양한 실시예들에 따른 시스템의 기능적 블록도를 도시하고;
도 2는 본 개시내용의 다양한 실시예들에 따른 가속된 데이터 복구 동작들의 플로우차트이고;
도 3은 본 개시내용의 다양한 실시예들에 따른 저장 디바이스 동작들의 플로우차트이고;
도 4a 및 4b는 RAID(독립(저가) 디스크들의 리던던트 어레이) 레벨 1 시스템에서의 가속된 데이터 복구의 한 예를 도시한다.
다음의 상세한 설명이 예시적인 실시예들을 참조하여 진행할 것이지만, 그것의 많은 대체들, 수정들, 및 변형들이 본 기술 분야의 통상의 기술자에게 분명할 것이다.
일반적으로, 본 개시내용은 저장 시스템에서의 가속된 복구 방법들(및 시스템)에 관한 것이다. 저장 시스템은 고장 내성을 제공하도록 구성된 복수의 저장 디바이스를 포함할 수 있다. 저장 디바이스의 고장에 응답하여, 방법들(및 시스템들)은 고장난 저장 디바이스에 관련된 맵핑된 논리적 블록 어드레스들(LBA들)을 식별하기 위해 하나 이상의 다른 저장 디바이스(들)를 조회하도록 구성된다.
방법들 및 시스템들은 맵핑된 LBA(들)와 연관된 데이터를 판독 및 기입(즉, 카피)함으로써 대체 저장 디바이스의 가속된 리빌드를 제공하도록 더 구성된다. 바꾸어 말하면, 고장난 저장 디바이스와 연관된 모든 저장 요소들의 내용들을 대체 저장 디바이스에 카피하기보다는, 맵핑된 LBA(들)와 연관된 저장 요소들의 내용들이 카피될 수 있다. 그러므로, 고장난 저장 디바이스를 리빌드하는 것과 연관된 시간 기간은 저장 디바이스의 전체 스팬(즉, 사용자 데이터에 대해 가용한 LA들의 범위)을 카피하는 것에 비해 감소될 수 있다. 저장 디바이스(들)를 조회함으로써, 즉, 저장 디바이스(들)로부터 디바이스 LBA(들)의 상태(들)를 요구함으로써, 이러한 리빌드들은 저장 시스템에 결합된 호스트 컴퓨팅 디바이스 상에 상주할 수 있는 파일 시스템의 존재 및/또는 유형에 독립하여 수행될 수 있다. 이러한 리빌드들은 또한 예를 들어, 운영 체제(OS)에 의해, 저장 시스템의 분할과 독립하여 수행될 수 있다.
여기에 사용된 바와 같이, 비맵핑된 디바이스 LBA는 여기에 설명된 바와 같이, 그에 기입되지 않거나 또는 트림 명령(TRIM)의 대상이 아니었고 TRIM 이후에 기입되지 않은 저장 디바이스 LBA이다. 맵핑된 디바이스 LBA는 그에 기입되었고 기입된 후에 TRIM의 대상이 아니었던 저장 디바이스 LBA이다. 디바이스 LBA에 적용된 것과 같이, 맵핑되고 비맵핑된 것은 디바이스 LBA의 각각의 상태들에 대응한다. 저장 디바이스 내의 맵핑은 저장 디바이스 내에 포함된 물리적 저장 매체와 연관된 물리적 블록 어드레스(PBA)에 디바이스 LBA를 관련시키도록 구성된다. 맵핑은 또한 호스트 LBA를 디바이스 LBA에 관련시키기 위해 사용될 수 있다.
도 1은 본 개시내용의 다양한 실시예들에 따른 시스템(100)의 기능적 블록도를 도시한다. 시스템(100)은 컴퓨팅 디바이스(102) 및 저장 시스템(104)을 포함한다. 저장 시스템(104)은 저장 시스템 제어 로직(106) 및 하나 이상의 저장 디바이스(들)(110a, 110b,..., 110m)를 포함한다. 시스템(100)은 컴퓨팅 디바이스(102)에 결합된 하나 이상의 주변 디바이스(들)(140)를 포함할 수 있다. 컴퓨팅 디바이스(102)는 서버, 워크스테이션 컴퓨터, 데스크탑 컴퓨터, 랩탑 컴퓨터, 태블릿 컴퓨터(예를 들어, iPad®, GalaxyTab® 등), 울트라포터블 컴퓨터, 울트라모바일 컴퓨터, 넷북 컴퓨터 및/또는 서브노트북 컴퓨터; 스마트폰(예를 들어, iPhone®, Android®-기반 폰, Blackberry®, Symbian®-기반 폰, Plam®-기반 폰 등) 및/또는 피쳐 폰을 포함하지만, 이들로 제한되지 않는 이동 전화를 포함할 수 있지만, 이들로 제한되지 않는다.
컴퓨팅 디바이스(102)는 프로세서(120), 칩셋(122) 및 메모리(126)를 포함한다. 프로세서(120)는 하나 이상의 처리 장치(들)(예를 들어, 프로세서(들) 및 코어(들))를 포함할 수 있고 컴퓨팅 디바이스(102)와 연관된 동작들을 수행하도록 구성된다. 칩셋(122)은 저장 디바이스 인터페이스(124)를 포함할 수 있다. 칩셋(122) 및/또는 저장 디바이스 인터페이스(124)는 프로세서(120)를 저장 시스템(104), 저장 시스템 제어 로직(106) 및/또는 주변 디바이스(들)(140)에 결합하도록 구성된다. 저장 디바이스 인터페이스(124)는 하나 이상의 인터페이스 및/또는 상호접속 프로토콜들, 예를 들어, PCIe®(Peripheral Component Interconnect Express), SAS(Serial Attached SCSI(Small Computer System Interface)), ATA(Advanced Technology Attachment), SATA(Serial ATA), NVMe(Non-Volatile Memory Host Controller Interface Express) 등을 통해 저장 시스템(104), 저장 시스템 제어 로직(106) 및/또는 주변 디바이스(들)(140)와 통신하도록 구성될 수 있다. 주변 디바이스(들)(140)는 예를 들어, 디스플레이, 터치-스크린 디스플레이, 프린터, 키패드, 키보드 등을 포함하는 사용자 인터페이스 디바이스(들), 통신 로직, 유선 및/또는 무선, 하드 디스크 드라이브들, 고상 드라이브들, 착탈식 저장 매체를 포함하는 다른 저장 디바이스(들) 등을 포함할 수 있다.
메모리(126)는 캐시 및/또는 랜덤 액세스 메모리를 포함할 수 있다. 메모리(126)는 OS(130) 및 하나 이상의 애플리케이션(들)(134)을 저장하도록 구성된다. 애플리케이션(들)(134)은 저장 시스템(104)에 관련된 메모리 액세스 동작들을 개시하도록 구성될 수 있다. OS(130)는 파일 시스템(132)을 포함할 수 있다. 파일 시스템(132)은 컴퓨팅 디바이스(102)에 대한 파일 저장 및/또는 회수를 관리하도록 구성된다. 예를 들어, 파일 시스템(132)은 인터페이스 및/또는 상호접속 프로토콜들 중 하나 이상을 포함하는 저장 스택, 저장 시스템 제어 로직(106) 및 저장 시스템(104)(여기에 설명된 것과 같은, 저장 디바이스(110a) 및/또는 디바이스 제어 논리(150)) 내에 포함될 수 있다.
저장 시스템(104)은 하나 이상의 저장 디바이스(들)(110a, 110b,..., 110m)를 포함한다. 예를 들어, 저장 디바이스들(110a, 110b,..., 110m)은 고상 드라이브들(SSD들), 하드 드라이브들(HDD) 등을 포함할 수 있지만, 이들로 제한되지 않는다. 각각의 저장 디바이스, 예를 들어, 저장 디바이스(110a)는 디바이스 제어 로직(150), 호스트 인터페이스(152), 캐시 메모리(154), 비휘발성 메모리(NVM)(156) 및 맵 테이블(158)을 포함한다. 캐시 메모리(154)는 여기에 설명된 것과 같은 비휘발성 메모리(DRAM), 또는 휘발성 메모리, 예를 들어, 동적 랜덤 액세스 메모리(DRAM), 동기 DRAM(SDRAM) 등을 포함할 수 있다. 디바이스 제어 로직(150)은 저장 디바이스(110a)의 동작들을 관리하도록 구성된다. 디바이스 제어 로직(150)은 NVM(156)에 데이터를 기입하고 NVM(156)으로부터 데이터를 판독하도록 구성된다. NVM(156)은 사용자 데이터, 패리티 정보 및/또는 NVM 동작 정보를 저장하도록 구성된다. NVM 동작 정보는 저장 디바이스(110a)의 동작 및/또는 메타데이터와 연관된 로직을 포함할 수 있다. NVM(156)은 페이지들 및/또는 블록들로 구성될 수 있는 복수의 저장 요소를 포함한다. NVM(156) 내의 저장 요소들의 블록(들)은 물리적 블록 어드레스(들)(PBA(들))에 의해 식별될 수 있다. 컴퓨팅 디바이스(102) 및/또는 저장 시스템 제어 로직(106)으로부터 수신된 데이터는 디바이스 LBA(들)에 의해 식별될 수 있다. 디바이스 제어 로직(150)은 각각의 디바이스 LBA를 각각의 PBA에 관련시키고 그 결과를 맵 테이블(158) 내에 저장하도록 구성될 수 있다. 맵 테이블(158)은 각각의 디바이스 LBA와 연관된 상태 표시자를 더 포함할 수 있다. 맵 테이블(158)은 NVM(156) 및/또는 캐시(154) 내에 상주할 수 있다. 상태 표시자는 맵핑된 디바이스 LBA(예를 들어, 논리 1) 및 비맵핑된 디바이스 LBA(예를 들어, 논리 0)에 각각 대응하는 2개의 값을 가질 수 있다. 예를 들어, 디바이스 제어 로직(150)은 각각의 디바이스 LBA가 기입될 때(즉, 맵핑될 때) 연관된 상태 표시자를 논리 1로 세트하고 이전에 맵핑된 디바이스 LBA가 비맵핑될 때 연관된 상태 표시자를 논리 1로부터 논리 0으로 리셋하도록 구성될 수 있다. 그러므로, 맵 테이블(158)은 여기에 설명된 바와 같이, 각각의 디바이스 LBA(들)의 상태를 식별하기 위해 디바이스 제어 로직(150)에 의해 이용될 수 있다.
저장 디바이스(들)(110a, 110b,..., 110m)는 하드 디스크 드라이브(들)(HDD(들)) 및/또는 고상 드라이브(들)(SSD(들))에 대응할 수 있다. HDD들인 저장 디바이스들에 대해, NVM(156)은 강자성 재료를 포함할 수 있다. SSD들인 저장 디바이스들에 대해, NVM(156)은 자기저항 랜덤 액세스 메모리(MRAM), 위상 변화 메모리(PCM, PRAM), 3차원 크로스포인트 메모리, 저항 메모리, 강유전성 메모리(F-RAM, FeRAM), 스핀-트랜스퍼 토크 메모리(STT), 열적 지원 스위칭 메모리(TAS), 밀리페드 메모리, 플로팅 접합 게이트 메모리(FJG RAM), 자기 터널 접합(MTJ) 메모리, 전기화학 셀들(ECM) 메모리, 2원 산화물 필라멘트 셀 메모리, 계면 스위칭 메모리, 배터리 팩 RAM, NAND 플래시 메모리 등을 포함할 수 있지만, 이들로 제한되지 않는다.
호스트 인터페이스(152)는 컴퓨팅 디바이스(102) 및/또는 저장 시스템 제어 로직(106)으로부터 명령들 및/또는 데이터를 수신하고 응답들(즉, 회답들) 및/또는 데이터를 컴퓨팅 디바이스(102) 및/또는 저장 시스템 제어 로직(106)에 송신하도록 구성된다. 호스트 인터페이스(152)는 저장 디바이스(110a)를 저장 시스템 제어 로직(106) 및/또는 호스트 디바이스(102)에 결합하도록 구성될 수 있다. 호스트 인터페이스(152)는 여기에 설명된 바와 같이, 하나 이상의 인터페이스 및/또는 상호접속 프로토콜(들)에 따를 수 있고/또는 호환가능할 수 있다. 호스트 인터페이스(152)는 수신된 명령들 및/또는 데이터를 디코드하고 디코드된 명령들 및/또는 데이터를 디바이스 제어 로직(150)에 제공하도록 더 구성될 수 있다. 호스트 인터페이스(152)는 인터페이스 및/또는 상호접속 프로토콜(들)에 따르고/또는 호환가능한 포맷(및/또는 구문)으로 디바이스 제어 로직(150)으로부터의 데이터 및/또는 응답(들)을 인코드하도록 더 구성될 수 있다. 캐시(154)는 명령들 및/또는 데이터를 저장하도록 구성된다. 명령들 및/또는 데이터는 디코딩 전에 및/또는 인코딩 전에 캐시(154) 내에 저장될 수 있다. 수신된 데이터, 예를 들어, 컴퓨팅 디바이스(102)로부터 수신된 데이터는 NVM(156)에 기입되기 전에 캐시(154) 내에 저장될 수 있다. 그러므로, 호스트 인터페이스(152)는 저장 디바이스(110a) 및 컴퓨팅 디바이스(102) 및/또는 저장 시스템 제어 로직(106) 사이에 인터페이스, 상호접속 및/또는 통신을 제공할 수 있다.
저장 시스템 제어 로직(106)은 저장 시스템(104) 내에 상주할 수 있고, 컴퓨팅 디바이스(102)와 저장 시스템(104) 사이에 결합될 수 있고/또는 컴퓨팅 디바이스(102) 내에 상주할 수 있다. 저장 시스템 제어 로직(106)은 컴퓨팅 디바이스(102), 저장 시스템(104)(및 저장 디바이스들(110a, 110b,..., 110m)) 사이의 메모리 액세스 동작들(예를 들어, 판독 및/또는 기입 동작들)을 관리하도록 구성된다. 저장 시스템 제어 로직(106)은 저장 디바이스들(110a, 110b,..., 110m)을 컴퓨팅 디바이스(102)에 추출하도록 구성된다. 예를 들어, 저장 시스템(104)은 RAID 시스템에 대응할 수 있고 저장 시스템 제어 로직(106)은 다음에 RAID 제어기에 대응할 수 있다.
저장 시스템 제어 로직(106)은 컴퓨팅 디바이스(102)로부터(예를 들어, 파일 시스템(132)으로부터) 판독 및/또는 기입 명령들 및 연관된 호스트 LBA(들)를 수신하고 적절한 저장 디바이스(들)(110a, 110b,... , 및/또는 110m)를 호스트 LBA(들)에 적어도 부분적으로 기초하여 결정, 선택 및/또는 식별하도록 구성된다. 저장 시스템 제어 로직(106)은 각각의 호스트 LBA를 하나 이상의 각각의 디바이스 LBA(들)에 맵핑하도록 구성될 수 있다. 리던던트 저장 시스템에서, 하나의 호스트 LBA는 하나보다 많은 저장 디바이스와 연관된 디바이스 LBA들에 맵핑될 수 있다. 저장 시스템 제어 로직(106)은 호스트 LBA(들)와 연관된 사용자 데이터를 수신하도록 더 구성된다. 저장 시스템 제어 로직(106)은 하나 이상의 저장 디바이스(들)(110a, 110b, ..., 110m)로부터 판독 데이터를 수신할 수 있고 판독 데이터를 컴퓨팅 디바이스(102)에 제공할 수 있다.
기입 동작들에서, 저장 시스템 제어 로직(106)은 적절한 저장 디바이스(들)(110a, 110b,..., 및/또는 110m)를 호스트 LBA(들)에 적어도 부분적으로 기초하여 결정 및/또는 선택하도록 구성될 수 있다. 예를 들어, 저장 시스템 제어 로직(106)은 단일 저장 디바이스를 포함하는 저장 시스템과 비교하여 리던던시 및/또는 비교적 더 양호한 성능을 제공하기 위해 복수의 저장 디바이스(110a 및 110b,...., 및/또는 110m)에 걸쳐 기입 명령과 연관된 사용자 데이터를 분배하도록 구성될 수 있다. 그러므로, 이 예에서, 저장 시스템 제어 로직(106)은 수신된 호스트 LBA(들)의 서브셋들과 연관시키기 위해 복수의 저장 디바이스(110a 및 110b,..., 및/또는 110m)를 선택하도록 구성될 수 있다. 저장 시스템 제어 로직(106)은 호스트 LBA(들)의 각각의 서브셋을 각각의 저장 디바이스를 위한 각각의 복수의 디바이스 LBA(들)에 관련시키도록 더 구성될 수 있다. 저장 시스템 제어 로직(106)은 패리티 정보, 예를 들어, 체크섬을 기입될 데이터에 적어도 부분적으로 기초하여 결정하고, 저장 디바이스들(110a, 110b,..., 및/또는 110m) 중 하나 이상의 저장 디바이스의 디바이스 LBA(들)에 패리티 정보를 저장하도록 더 구성될 수 있다. 또 하나의 예에서, 저장 시스템 제어 로직(106)은 수신된 호스트 LBA들과 연관시키고 사용자 데이터를 수신하기 위해 하나의 저장 디바이스, 예를 들어, 저장 디바이스(110a)를 선택하도록 구성될 수 있다. 저장 시스템 제어 로직(106)은 패리티 정보를 기입될 데이터에 적어도 부분적으로 기초하여 결정하고, 저장 디바이스들(110b,..., 또는 110m) 중 또 하나의 저장 디바이스에 패리티 정보를 저장하도록 더 구성될 수 있다. 둘 다의 예들에서, 저장 시스템 제어 로직(106)은 명령(들), 데이터(예를 들어, 사용자 데이터 및/또는 패리티 정보) 및 연관된 디바이스 LBA(들)를 선택된 저장 디바이스들(110a, 110b,..., 및/또는 110m)에 제공하도록 구성될 수 있다.
판독 동작들에서, 저장 시스템 제어 로직(106)은 적절한 저장 디바이스(들)(110a, 110b,..., 및/또는 110m)를 식별하고 판독 명령(들) 및 연관된 디바이스 LBA(들)를 호스트 LBA(들)에 적어도 부분적으로 기초하여 식별된 저장 디바이스들(110a, 110b,..., 및/또는 110m)에 제공하도록 구성된다. 저장 시스템 제어 로직(106)은 식별된 저장 디바이스(들)(110a, 110b,..., 및/또는 110m)로부터 판독 사용자 데이터를 수신하고 판독 데이터를 컴퓨팅 디바이스(102)에 제공하도록 더 구성될 수 있다. 저장 시스템 제어 로직(106)은 판독 데이터가 판독 데이터와 연관된 패리티 및/또는 리던던트 정보에 적어도 부분적으로 기초하여 오류가 있지 않은 것을 검증하도록 구성될 수 있다. 저장 시스템 제어 로직(106)은 가능하다면, 패리티 및/또는 리던던트 정보에 적어도 부분적으로 기초하여 오류가 있는 데이터를 정정하도록 더 구성될 수 있다.
저장 시스템 제어 로직(106)은 저장 디바이스들(110a, 110b,..., 및/또는 110m) 중 하나 이상의 고장을 검출하도록 구성된다. 저장 시스템 제어 로직(106)은 검출된 고장에 응답하여 리빌드 동작들을 개시하도록 더 구성될 수 있다. 저장 시스템 제어 로직(106)은 컴퓨팅 디바이스(102)에 고장을 전달하도록 구성될 수 있다. 컴퓨팅 디바이스(102) 및/또는 OS(130)는 주변 디바이스(들)(140)를 통해 예를 들어, 사용자에게 저장 디바이스가 고장났다는 것을 통지하도록 구성될 수 있다. 이 통지는 사용자에게 고장난 저장 디바이스를 대체 저장 디바이스로 대체하라고 재촉하도록 구성된다. 예를 들어, 저장 시스템 제어 로직(106)은 대체 저장 디바이스가 저장 시스템 제어 로직(106)에 결합되었다는 표시를 컴퓨팅 디바이스(102) 및/또는 주변 디바이스(들)(140)를 통해 사용자로부터 수신하도록 구성될 수 있다. 또 하나의 예에서, 저장 시스템 제어 로직(106)은 대체 저장 디바이스가 고장난 저장 디바이스 대신에 저장 시스템 제어 로직(106)에 결합되었다는 것을 검출하도록 구성될 수 있다. 또 하나의 예에서, 저장 시스템(104)은 저장 디바이스가 고장난 경우에 이용되도록 구성된 대체 저장 디바이스를 포함할 수 있다. 대체 저장 디바이스는 저장 디바이스의 고장 전에 저장 시스템(104) 내에 존재할 수 있고/또는 고장이 검출된 후에 사용자에 의해 부가될 수 있다.
일반적으로, 리빌드 동작들이 개시될 때, 고장난 저장 디바이스는 고장난 저장 디바이스의 최대 용량 미만으로 저장할 수 있다. 바꾸어 말하면, 고장난 저장 디바이스의 스팬(즉, 사용자 데이터를 저장할 수 있는 디바이스 LBA들의 범위)보다 적은 수의 디바이스 LBA(들)가 맵핑될 수 있다. 리빌드 동작들은 고장난 저장 디바이스의 전체 스팬보다는 오히려 고장난 저장 디바이스의 맵핑된 부분들을 빌드함으로써 가속될 수 있다.
실시예에서, 저장 시스템 제어 로직(106)은 고장난 저장 디바이스에 관련된 맵핑된 디바이스 LBA들을 가질 수 있는 각각의 저장 디바이스(110a, 110b,..., 및/또는 110m)("대상 저장 디바이스(들)")로부터 대상 디바이스 LBA(들)의 각각의 상태(들)를 요구하도록 구성될 수 있다. 저장 시스템 제어 로직(106)은 대상 저장 디바이스(들)를 저장 시스템(104)의 구성에 적어도 부분적으로 기초하여 식별하도록 더 구성될 수 있다. 저장 시스템 제어 로직(106)은 대상 디바이스 LBA(들)를 저장 시스템(104)의 구성에 적어도 부분적으로 기초하여 식별하도록 더 구성될 수 있다. 예를 들어, 미러된 구성에서, 하나의 대상 저장 디바이스는 고장난 저장 디바이스에 관련된 맵핑된 LBA(들)를 포함할 수 있다. 또 하나의 예에서, 스트라이핑(예를 들어, RAID)을 구현하는 구성에서, 복수의 저장 디바이스는 고장난 저장 디바이스에 관련된 맵핑된 디바이스 LBA들을 포함할 수 있다. 복수의 저장 디바이스는 저장 풀 내에 포함될 수 있다. 저장 시스템 제어 로직(106)은 복수의 대상 저장 디바이스를 저장 풀에 적어도 부분적으로 기초하여 식별하도록 구성될 수 있다.
저장 시스템 제어 로직(106)은 저장 디바이스가 고장났다는 표시에 응답하여 대상 저장 디바이스(들)를 식별하고 대상 디바이스 LBA(들)의 상태(들)를 요구하도록 구성될 수 있다. 예를 들어, 저장 시스템(104)은 제1 저장 디바이스와 제2 저장 디바이스(예를 들어 RAID 1) 상에 저장된 데이터를 미러함으로써 리던던시를 제공하도록 구성될 수 있다. 저장 시스템 제어 로직(106)은 다음에 제1 저장 디바이스가 고장나는 경우에 제2 저장 디바이스로부터 대상 디바이스 LBA(들)의 각각의 상태(들)를 요구하도록 구성될 수 있다. 이 예에서, 리빌드 동작들은 다음에 맵핑된 디바이스 LBA(들)와 연관된 데이터를 대상 저장 디바이스(예를 들어, 제2 저장 디바이스)로부터 대체 저장 디바이스에 카피하는 것을 포함할 수 있다.
또 하나의 예에서, 저장 시스템(104)은 복수의 저장 디바이스(즉, 저장 풀)에 걸쳐 데이터의 블록들을 "스트라이프하고" 패리티 정보를 복수의 저장 디바이스(예를 들어, RAID 5)에 걸쳐 분배함으로써 고장 내성을 제공하도록 구성될 수 있다. 데이터의 스트라이프는 복수의 저장 디바이스, 즉 저장 풀에 걸쳐 분배된 논리적으로 순차적인 데이터의 세그먼트들을 포함한다. 저장 시스템 제어 로직(106)은 저장 풀 내의 복수의 저장 디바이스를 식별하도록 구성될 수 있다. 저장 시스템 제어 로직(106)은 다음에 저장 풀 내의 (고장난 저장 디바이스를 제외하고) 복수의 저장 디바이스 각각으로부터 대상 디바이스 LBA(들) 각각의 상태(들)를 요구하도록 구성될 수 있다. 대상 디바이스 LBA(들)의 상태(들)는 데이터의 스트라이프에 대해 요구될 수 있다. 스트라이프에서 대상 디바이스 LBA들을 판독 및 기입할지는 다음에 저장 풀 내의 복수의 대상 저장 디바이스에 대해 결정될 수 있다. 이 예에서, 리빌드 동작들은 저장된 데이터의 값들을 패리티 정보에 적어도 부분적으로 기초하여 결정 및/또는 검증하는 것을 포함할 수 있다. 비맵핑된 대상 디바이스 LBA들의 스트라이프들은 판독되지도 않거나 기입되지도 않을 수 있다.
일부 실시예들에서, 파일 시스템(132)은 트림(TRIM) 명령 및 연관된 호스트 LBA(들)(162)를 저장 시스템 제어 로직(106)에 제공하도록 구성될 수 있다. TRIM은 파일 시스템(132)에 의해 비맵핑된 저장 시스템(104)에 호스트 LBA들을 전달하도록 구성된다. 예를 들어, 호스트 LBA들은 예를 들어, Microsoft® Windows® OS에서의 파일의 영구적 삭제, "리사이클 빈"을 비우는 것 및/또는 "빠른 포맷"을 수행하는 것에 응답하여 비맵핑될 수 있다. TRIM은 저장 요소들에 새로운 데이터를 기입하기 전에 저장 요소들의 블록들을 소거하는 SSD들에서의 가비지 수집 및 소거 동작들을 최적화하도록 구성된다.
이들 실시예에서, 저장 시스템 제어 로직(106)은 저장 디바이스 고장에 응답하여 TRIM 요구(160)를 컴퓨팅 디바이스(102)에 보내도록 구성될 수 있다. TRIM 요구(160)는 파일 시스템(132)으로부터 TRIM 명령 및 연관된 호스트 LBA(들)(162)의 저장 시스템(104)으로의 송신을 트리거하도록 구성된다. TRIM 명령은 여기에 설명된 바와 같이, 하나 이상의 인터페이스 및/또는 상호접속 프로토콜들에 따를 수 있고/또는 호환가능할 수 있다. 예를 들어, TRIM 명령은 여기에 설명된 바와 같이, ATA DATA SET MANAGEMENT 명령, SCSI(및/또는 SAS) UNMAP 명령 및/또는 NVMe DEALLOCATE 명령에 대응할 수 있다. 저장 시스템 제어 로직(106)은 TRIM 명령 및 연관된 호스트 LBA들(162)을 수신할 수 있고 대응하는 TRIM 명령 및 연관된 디바이스 LBA들(164)을 대상 저장 디바이스(들)에 제공할 수 있다. 예를 들어, 각각의 대상 저장 디바이스의 호스트 인터페이스, 예를 들어, 저장 디바이스(110a)의 호스트 인터페이스(152)는 각각의 인터페이스 및/또는 상호접속 프로토콜에 따라 포맷된 명령(들), 데이터 및/또는 디바이스 LBA(들)를 수신하고 명령(들), 데이터 및/또는 디바이스 LBA(들)를 예를 들어, 디바이스 제어 로직(150)에 제공하도록 구성될 수 있다. 각각의 대상 저장 디바이스의 디바이스 제어 로직, 예를 들어, 디바이스 제어 로직(150)은 다음에 수신된 TRIM 명령에 대응하는 디바이스 LBA(들)를 비맵핑하도록 구성될 수 있다. 그러므로, TRIM 명령에 응답하여 대상 저장 디바이스(들)는 디바이스 LBA(들)의 가장 최신의 맵핑(또는 비맵핑)을 가질 수 있다.
저장 시스템 제어 로직(106)은 대상 디바이스 LBA(들) 명령(LBA 상태 요구 명령)(166)의 상태에 대한 요구를 각각의 대상 저장 디바이스, 예를 들어, 고장난 저장 디바이스와 연관된 저장 디바이스(110a)에 보내도록 구성된다. 실시예에서, LBA 상태 요구 명령은 하나 이상의 대상 디바이스 LBA(들)를 포함할 수 있다. 또 하나의 실시예에서, LBA 상태 요구 명령은 맵핑된 디바이스 LBA(들)의 리스팅 및/또는 비맵핑된 디바이스 LBA(들)의 리스팅을 요구할 수 있다. 저장 시스템 제어 로직(106)은 저장 디바이스, 예를 들어, 저장 디바이스(110b)의 고장에 응답하여 LBA 상태 요구 명령(166)을 보낼 수 있다. 예를 들어, LBA 상태 요구 명령(166)은 TRIM 요구 명령(160)을 먼저 보내지 않고 보내질 수 있다. 또 하나의 예에서, LBA 상태 요구 명령(166)은 TRIM 요구 명령(160)을 보낸 후 및/또는 TRIM 명령 및 연관된 호스트 LBA(들)(162)를 수신한 후 보내질 수 있다.
LBA 상태 요구 명령(166)은 여기에 설명된 바와 같이, 인터페이스 및/또는 상호접속 프로토콜들 중 하나 이상에 대응할 수 있고/또는 호환가능할 수 있다. 일부 실시예들에서, LBA 상태 요구 명령(166)은 선택된 저장 디바이스, 예를 들어, 저장 디바이스(110a)에 특정된 연관된 구문을 가질 수 있다. 특정한 구문이 명령의 사용을 선택된 저장 디바이스들(예를 들어, 판매자-특정됨)로 제한함으로써 보안의 레벨을 제공하도록 구성될 수 있다. 특정한 구문은 판매자-특정 명령을 제공하도록 더 구성될 수 있다. 예를 들어, 사용자-특정 명령은 명령 구조를 간소화할 수 있고/또는 디바이스 테스팅을 용이하게 할 수 있다.
각각의 대상 저장 디바이스, 예를 들어, 저장 디바이스(110a)는 대상 디바이스 LBA(들)의 요구된 상태(들)에 대응하는 상태 표시자(들)를 포함하는 저장 시스템 제어 로직(106)에 응답(168)(즉, 회답(168))을 제공하도록 구성될 수 있다. 회답(들)(168)은 하나 이상의 인터페이스 및/또는 상호접속 프로토콜들에 따를 수 있고/또는 호환가능할 수 있다. 예를 들어, 호스트 인터페이스(152)는 LBA 상태 요구 명령(166)를 수신하고, 명령(166)을 디코드하고 디코드된 요구를 디바이스 제어 로직(150)에 제공하도록 구성될 수 있다. 디바이스 제어 로직(150)은 대상 디바이스 LBA(들)의 상태(들)를 맵 테이블(158)에 적어도 부분적으로 기초하여 식별하도록 구성될 수 있다. 예를 들어, 맵 테이블(158)은 디바이스 LBA(들)를 NVM(156) PBA(들)에 관련시킬 수 있고 상태 표시자, 예를 들어, 연관된 디바이스 LBA의 상태에 대응하는 플래그를 더 포함할 수 있다. 예를 들어, 플래그는 비트일 수 있고 맵핑된 대상 디바이스 LBA에 대한 1(예를 들어, 참)의 값 및 비맵핑된 대상 디바이스 LBA에 대한 0(예를 들어, 거짓)의 값을 가질 수 있다. 디바이스 제어 로직(150)은 대상 디바이스 LBA(들)의 상태(들)를 식별하기 위해 맵 테이블(158) 및 연관된 표시자들을 판독하도록 구성될 수 있다. 디바이스 제어 로직(150)은 다음에 상태(들)를 호스트 인터페이스(152)에 제공하도록 구성될 수 있다. 호스트 인터페이스(152)는 다음에 대상 디바이스 LBA(들)의 상태(들)를 포함하는 회답(168)을 발생할 수 있고 응답을 저장 시스템 제어 로직(106)에 송신한다. 복수의 대상 디바이스 LBA(들)의 상태들을 포함하는 응답들은 각각의 상태 표시자를 그것의 각각의 대상 디바이스 LBA와 관련시키도록 구성될 수 있다. 회답(168)은 여기에 설명된 바와 같이, 하나 이상의 인터페이스 및/또는 상호접속 프로토콜들에 따를 수 있고/또는 호환가능할 수 있다.
실시예에서, 저장 시스템 제어 로직(106)은 맵핑된 및/또는 비맵핑된 디바이스 LBA(들) 명령(166)에 대한 요구를 갖는 대상 디바이스 LBA를 포함하도록 구성될 수 있다. 이 실시예에서, 각각의 대상 저장 디바이스는 대상 디바이스 LBA의 상태를 결정하고 회답(168)에서 저장 시스템 제어 로직(106)에 결과적인 상태 표시자를 제공하도록 구성된다. 예를 들어, 대상 디바이스 LBA를 포함하는 LBA 상태 요구 명령(166)은 리빌드 중에, 예를 들어, 각각의 대상 디바이스 LBA를 빌드하기 전에 보내질 수 있다.
또 하나의 실시예에서, 저장 시스템 제어 로직(106)은 LBA 상태 요구 명령(166)을 갖는 대상 디바이스 LBA들의 범위를 포함하도록 구성될 수 있다. 이 실시예에서, 각각의 대상 저장 디바이스는 대상 디바이스 LBA(들)의 범위 내에 포함된 각각의 디바이스 LBA의 각각의 상태를 결정하고 회답(168)에서 결과적인 상태 표시자(들)를 저장 시스템 제어 로직(106)에 제공하도록 구성될 수 있다. 예를 들어, 대상 디바이스 LBA들의 범위를 포함하는 LBA 상태 요구 명령(166)은 리빌드 전에 및/또는 중에, 예를 들어, 각각의 대상 디바이스 LBA를 빌드하기 전에 보내질 수 있다.
또 하나의 실시예에서, 저장 시스템 제어 로직(106)은 맵핑된 디바이스 LBA(들)의 리스팅 및/또는 비맵핑된 디바이스 LBA(들)의 리스팅을 요구하도록 구성될 수 있다. 이 실시예에서, 각각의 대상 저장 디바이스는 그들의 각각의 회답들(168)에서 디바이스 LBA(들) 및 연관된 상태 표시자들을 맵 테이블(158)로부터 제공하도록 구성될 수 있다. 예를 들어, 리스팅(들)에 대한 요구를 포함하는 LBA 상태 요구 명령(166)은 리빌드 전에 보내질 수 있다.
그러므로, 저장 시스템 제어 로직(106)은 고장난 저장 디바이스의 검출에 응답하여 대상 저장 디바이스(들)로부터 대상 디바이스 LBA(들)의 상태(들)를 요구할 수 있다. 대상 저장 디바이스(들)는 다음에 요구에 응답하여 대상 디바이스 LBA(들)의 상태 표시자(들)를 저장 시스템 제어 로직(106)에 제공할 수 있다. 저장 시스템 제어 로직(106)은 다음에 각각의 대상 디바이스 LBA의 각각의 상태를 식별하도록 구성될 수 있다. 예를 들어, 저장 시스템 제어 로직(106)은 각각의 상태(들)를 식별하기 위해 상태 표시자(들)와 테스트 값의 논리적 OR 연산(예를 들어, 배타적 OR(XOR))을 수행하도록 구성될 수 있다.
저장 시스템 제어 로직(106)은 다음에 고장난 저장 디바이스, 예를 들어, 저장 디바이스(110b)를 대체하도록 구성된 대체 저장 디바이스, 예를 들어, 저장 디바이스(110a)를 빌드하도록 구성될 수 있다. 예를 들어, 저장 시스템 제어 로직(106)은 맵핑된 디바이스 LBA(들)를 포함하는 판독 명령을 대상 저장 디바이스(들)에 보내고 판독 데이터를 대체 저장 디바이스(110a)의 대응하는 디바이스 LBA(들)에 기입하도록 구성될 수 있다. 비맵핑된 디바이스 LBA(들)는 판독되지 않을 수 있고 기입되지 않을 수 있다. 데이터는 여기에 설명된 바와 같이, 사용자 데이터 및/또는 패리티 정보를 포함할 수 있다. 저장 시스템 제어 로직(106)은 대체 저장 디바이스(110a)와 연관된 패리티 정보를 업데이트하도록 더 구성될 수 있다. 그러므로, 고장난 저장 디바이스(110b)의 리빌드는 맵핑된 디바이스 LBA(들)를 판독 및 기입하고 비맵핑된 디바이스 LBA(들)의 내용들을 판독 및 기입하지 않음으로써 여기에 설명된 바와 같이 가속될 수 있다. 리빌드는 파일 시스템, 예를 들어, 파일 시스템(130), 컴퓨팅 디바이스(102)에 관련된 파일 구조 및/또는 분할에 독립하여 수행될 수 있다.
도 2는 본 개시내용의 다양한 실시예들에 따른 가속된 데이터 복구 동작들의 플로우차트(200)이다. 특히, 플로우차트(200)는 고장난 저장 디바이스와 연관된 대상 디바이스 LBA(들)의 상태(들)를 취득하고 맵핑된 디바이스 LBA(들)의 내용들을 대체 저장 디바이스에 기입함으로써 대체 저장 디바이스를 빌드하는 것을 도시한다. 동작들은 예를 들어, 도 1의 저장 시스템 제어 로직(106)에 의해 수행될 수 있다.
이 실시예의 동작들은 저장 디바이스 고장 202에서 시작될 수 있다. 일부 실시예들에서, TRIM 명령은 동작 204에서 요구될 수 있다. 예를 들어, TRIM 명령은 컴퓨팅 디바이스 내에 포함된 파일 시스템, 예를 들어, 컴퓨팅 디바이스(102)의 파일 시스템(132)으로부터 요구될 수 있다. 대상 저장 디바이스(들)는 동작 206에서 식별될 수 있다. 대상 저장 디바이스(들))는 고장난 저장 디바이스에 관련된 데이터를 저장할 수 있다. 예를 들어, 미러된 시스템에서, 하나의 고장난 저장 디바이스는 하나의 대상 저장 디바이스에 대응할 수 있다. 또 하나의 예에서, 스트라이프된 시스템에서, 하나의 고장난 저장 디바이스는 복수의 대상 저장 디바이스에 관련될 수 있다. 대상 디바이스 LBA(들)는 동작 208에서 식별될 수 있다. 각각의 식별된 대상 디바이스 LBA의 각각의 상태는 동작 210에서 요구될 수 있다. 예를 들어, 각각의 상태(들)는 고장난 저장 디바이스 상에 저장된 데이터에 관련된 데이터를 포함하는 대상 저장 디바이스(들)로부터 요구될 수 있다. 요구된 상태 표시자(들)는 동작 212에서 수신될 수 있다. 맵핑된 디바이스 LBA(들)와 연관된 데이터는 동작 214에서 대상 저장 디바이스(들)로부터 판독되고 적어도 하나의 대체 저장 디바이스에 기입될 수 있다. 예를 들어, 맵핑된 디바이스 LBA(들)와 연관된 데이터는 사용자 데이터 및/또는 패리티 정보를 포함할 수 있다. 프로그램 흐름은 다음에 동작 216에서 계속될 수 있다.
그러므로, 고장난 저장 디바이스의 리빌드는 맵핑된 디바이스 LBA(들)와 연관된 데이터를 대상 저장 디바이스(들)(즉, 판독)로부터 대체 저장 디바이스(즉, 기입)에 카피함으로써 가속될 수 있다. 디바이스 LBA가 맵핑되는지 또는 비맵핑되는지는 대상 저장 디바이스(들)로부터 수신된 LBA 상태 정보에 적어도 부분적으로 기초하여 결정될 수 있다.
도 3은 본 개시내용의 다양한 실시예들에 따른 저장 디바이스 동작들의 플로우차트(300)이다. 특히, 플로우차트(300)는 TRIM 명령에 응답하여 디바이스 LBA(들)를 비맵핑하고 그들에 대한 요구에 응답하여 대상 디바이스 LBA(들)의 각각의 상태(들)를 제공하는 것을 도시한다. 동작들은 저장 디바이스, 예를 들어, 도 1의 저장 디바이스(들)(110a, 110b,..., 및/또는 110m) 중 하나 이상에 의해 수행될 수 있다.
이 실시예의 동작들은 개시 302에서 시작될 수 있다. 일부 실시예들에서, TRIM 명령은 동작 304에서 수신될 수 있다. TRIM 명령은 예를 들어, 파일 시스템에 의해 비맵핑된 호스트 LBA(들)에 대응하는 디바이스 LBA(들)를 식별하도록 구성된다. TRIM 명령과 연관된 디바이스 LBA(들)는 동작 306에서 비맵핑될 수 있다. 동작들 304 및 306이 수행되는지는 OS, 예를 들어 OS(130)가 TRIM 명령을 포함하는지에 의존할 수 있다.
이 실시예의 동작들은 동작 308에서 대상 디바이스 LBA(들)의 상태(들)에 대한 요구를 수신하는 것을 포함한다. 대상 디바이스 LBA(들)의 하나 이상의 상태(들)는 동작 310에서 요구에 응답하여 결정될 수 있다. 예를 들어, 대상 디바이스 LBA(들)의 상태(들)는 맵 테이블, 예를 들어, 도 1의 맵 테이블(158)에 적어도 부분적으로 기초하여 결정될 수 있다. 동작 312는 각각의 대상 디바이스 LBA의 상태에 관련된 각각의 상태 표시자를 포함하는 회답을 제공하는 것을 포함한다. 예를 들어, 응답은 저장 시스템 제어 로직에 제공될 수 있다. 프로그램 흐름은 동작 314에서 종료할 수 있다. 그러므로, 저장 디바이스는 예를 들어, 저장 시스템 제어 로직으로부터의 요구에 응답하여 하나 이상의 대상 디바이스 LBA(들)의 각각의 상태 표시자(들)를 제공할 수 있다.
도 2 및 3의 플로우차트들이 다양한 실시예들에 따른 동작들을 도시하지만, 도 2 및/또는 3에 도시된 동작들의 모두가 다른 실시예들에서 필요한 것은 아니라는 것을 이해하여야 한다. 또한, 본 개시내용의 다른 실시예들에서, 도 2 및/또는 3에 도시된 동작들, 및/또는 여기에 설명된 다른 동작들은 도면들 중 어디서도 구체적으로 도시하지 않은 방식으로 조합될 수 있고, 이러한 실시예들은 도 2 및/또는 3에 도시된 것보다 더 적거나 많은 수의 동작들을 포함할 수 있다는 것이 완전히 고려된다. 그러므로, 하나의 도면에 정확히 도시하지 않은 특징들 및/또는 동작들에 관한 청구범위는 본 개시내용의 범위 및 내용 안에 있는 것으로 간주된다.
도 4a 및 4b는 RAID 레벨 1(즉, 미러된) 시스템에서의 가속된 데이터 복구의 한 예를 도시한다. 도 4a는 저장된 데이터를 미러하도록 구성된 2개의 저장 디바이스(디바이스 0 및 디바이스 1)를 포함하는 RAID 1의 NVM(402, 404)의 예(400)를 도시한다. 바꾸어 말하면, 각각의 디바이스의 NVM(402, 404)은 다른 디바이스의 NVM(404, 402)과 동일한 데이터를 저장하도록 구성된다. 양 디바이스에서, 디바이스 LBA(들) A1, A2,..., AN은 맵핑되고 LBA(들) AN+1,..., AY는 비맵핑된다. 예(400)에서, 디바이스 1이 고장났다. 예(400)는 고장난 디바이스 1을 대체하도록 구성된 대체 디바이스(디바이스 R)를 더 포함한다. 디바이스 R은 비맵핑된 디바이스 LBA(들) A1, A2,..., AY를 포함하는 NVM(406)을 포함한다. 바꾸어 말하면, NVM(406)의 스팬은 비맵핑된다. 사용자는 고장난 디바이스 1을 제거하고 디바이스 1을 디바이스 R로 대체할 수 있다.
도 4b는 고장난 디바이스 1이 디바이스 R로 대체된 후의 도 4a의 예(400')를 도시한다. 저장 시스템 제어 로직, 예를 들어, 도 1의 저장 시스템 제어 로직(106)은 예를 들어, 여기에 설명된 바와 같이, LBA 상태 요구 명령을 디바이스 0에 보냄으로써, 디바이스 0으로부터 대상 디바이스 LBA(들)의 상태(들)를 요구하도록 구성된다. 디바이스 0은 여기에 설명된 바와 같이, 그 요구를 수신하고 디바이스 LBA(들), A1, A2,..., AN(즉, 맵핑된)의 각각의 상태 표시자(들)를 LBA 상태 요구 명령을 수신한 것에 응답하여 저장 시스템 제어 로직에 송신하도록 구성된다. 저장 시스템 제어 로직은 다음에 맵핑된 디바이스 LBA(들) A1, A2,..., AN과 연관된 데이터를 NVM(402)으로부터 NVM(406)으로 카피하도록 구성될 수 있다. NVM(406)의 디바이스 LBA(들) AN+1,..., AY는 비맵핑된 채로 남을 수 있다. 그러므로, 여기에 설명된 바와 같이, 고장난 저장 디바이스를 리빌드하는 것은 전체 스팬을 카피하는 것에 비해 가속될 수 있다.
도 1로 다시 돌아오면, OS(130)는 시스템(100) 리소스들을 관리하고 각각의 디바이스 및/또는 시스템, 예를 들어, 컴퓨팅 디바이스(102) 및/또는 저장 시스템(104) 상에서 실행하는 작업들을 제어하도록 구성될 수 있다. 예를 들어, OS는 Microsoft® Windows®, HP-UX®, Linux®, 또는 UNIX®를 사용하여 구현될 수 있지만, 다른 운영 체제들도 사용될 수 있다. 일부 실시예들에서, OS(130)는 하드웨어를 하나 이상의 처리 장치 상에서 실행하는 다양한 운영 체체들(가상 머신들)로 언더라잉하기 위한 추출의 계층을 제공할 수 있는 가상 머신 모니터(또는 하이퍼바이저)로 대체될 수 있다.
메모리(126)는 다음 유형들의 메모리 중 하나 이상을 포함할 수 있다: 반도체 펌웨어 메모리, 프로그래머가능한 메모리, 비휘발성 메모리, 판독 전용 메모리, 전기적으로 프로그램가능한 메모리, 랜덤 액세스 메모리, 플래시 메모리, 자기 디스크 메모리, 및/또는 광학 디스크 메모리. 부가적으로 또는 대안적으로 디바이스 메모리는 다른 및/또는 나중에 개발된 유형들의 컴퓨터 판독가능 메모리를 포함할 수 있다.
여기에 설명된 동작들의 실시예들은 하나 이상의 프로세서에 의해 실행될 때 방법들을 수행하는 명령어들이 저장되어 있는 컴퓨터 판독가능 저장 디바이스에서 구현될 수 있다. 프로세서는 예를 들어, 처리 장치 및/또는 프로그램가능한 회로를 포함할 수 있다. 저장 디바이스는 임의 유형의 실재하는, 비일시적 저장 디바이스, 예를 들어, 플로피 디스크들, 광학 디스크들, 컴팩트 디스크 판독 전용 메모리들(CD-ROM들), 재기입가능한 컴팩트 디스크(CD-RW들), 및 자기-광 디스크들을 포함하는 임의 유형의 디스크, 판독 전용 메모리들(ROM들), 동적 및 정적 RAM들과 같은 랜덤 액세스 메모리들(RAM들), 소거가능하고 프로그램가능한 판독 전용 메모리들(EPROM들), 전기적으로 소거가능하고 프로그램가능한 판독 전용 메모리들(EEPROM들), 플래시 메모리들과 같은 반도체 디바이스들, 자기 또는 광학 카드들, 또는 전자적 명령어들을 저장하기에 적합한 임의 유형의 저장 디바이스들을 포함하는 머신 판독가능 저장 디바이스를 포함할 수 있다.
여기의 어떤 실시예에서 사용된 바와 같이, 용어 "로직"은 앞서 언급된 동작들 중 어느 것을 수행하도록 구성된 앱, 소프트웨어 및/또는 회로를 참조할 수 있다. 소프트웨어는 비일시적 컴퓨터 판독가능 저장 매체 상에 기록된 소프트웨어 패키지, 코드, 명령어들, 명령어 세트들 및/또는 데이터로서 실시될 수 있다. 펌웨어는 메모리 디바이스들 내에 하드-코드된(예를 들어, 비휘발성) 코드, 명령어들 또는 명령어 세트들 및/또는 데이터로서 실시될 수 있다.
여기의 어떤 실시예에서 사용된 바와 같이, "회로"는 예를 들어, 하드와이어된 회로, 하나 이상의 개별 명령어 처리 코어를 포함하는 컴퓨터 프로세서들과 같은 프로그램가능한 회로, 상태 머신 회로, 및/또는 프로그램가능한 회로에 의해 실행되는 명령어들을 저장한 펌웨어를 단독으로 또는 임의의 조합으로 포함할 수 있다. 로직은 더 큰 시스템의 일부, 예를 들어, 집적 회로(IC), 주문형 집적 회로(ASIC), 시스템-온-칩(SoC), 데스크탑 컴퓨터들, 랩탑 컴퓨터들, 태블릿 컴퓨터들, 스마트폰들 등을 형성하는 회로로서 총체적으로 또는 개별적으로 실시될 수 있다.
컴퓨팅 디바이스(102) 및 저장 시스템(104)은 하나 이상의 인터페이스 및/또는 상호접속 프로토콜들을 통해 서로 통신하도록 구성될 수 있다. 저장 시스템 제어 로직(106) 및 저장 디바이스(들)(110a, 110b,..., 및/또는 110m)는 하나 이상의 인터페이스 및/또는 상호접속 프로토콜들을 통해 서로 통신하도록 구성될 수 있다.
한 예에서, 인터페이스 및/또는 상호접속 프로토콜은 2010년 11월, Beaverton, Oregon에서의 PCI-SIG®(PCI Special Interest Group)에 의해 릴리스된, PCI Express® Base Specification, 개정안 3.0이라고 하는 PCIe®(Peripheral Component Interconnect Express) 규격, 또는 이 규격의 후속 버전들, 예를 들어, 버전 3.1에 따를 수 있고/또는 호환가능할 수 있다.
또 하나의 예에서, 인터페이스 및/또는 상호접속 프로토콜은 2013년 11월, 국제 정보 기술 표준화 위원회(INCITS) 미국 국립 표준 기구(ANSI)에 의해 발표된, Serial Attached SCSI - 3(SAS-3) 2212-D ANSI-approved라고 하는 SAS(Serial Attached SCSI(Small Computer System Interface) 표준 SAS-3, 및/또는 이 표준의 후속 버전들에 따를 수 있고/또는 호환가능할 수 있다.
또 하나의 예에서, 인터페이스 및/또는 상호접속 프로토콜은 ANSI INCITS에 의해 2010년에 발표된, 정보 기술 - AT Attachment 8 - ATA/ATAPI Command Set(ATA8-ACS) 보정안 1이라고 하는 ATA(Advanced Technology Attachment) 표준, 문서 번호: INCITS 452-2009/AM1-2010, 및/또는 이 표준의 관련된 및/또는 후속 버전들, 예를 들어, 2012년에 발표된, 정보 기술 - ATA/ATAPI Command Set - 2(ACS-2)라고 하는 문서 번호: INCITS 482-2012, 및/또는 이 표준의 후속 및/또는 관련된 버전들에 따를 수 있고/또는 호환가능할 수 있다.
또 하나의 예에서, 인터페이스 및/또는 상호접속 프로토콜은 Beaverton, OR에서의 SATA 국제 기구(SATA-IO)에 의해 2013년 8월 릴리스된, Serial ATA 규격, 개정안 3.2라고 하는 SATA(Serial ATA(Advanced Technology Attachment) 규격, 및/또는 이 규격의 이전 및/또는 후속 버전들에 따를 수 있고/또는 호환가능할 수 있다.
또 하나의 예에서, 인터페이스 및/또는 상호접속 프로토콜은 NVM Express™ 워크 그룹에 의해 2014년 11월 3일 릴리스된, NVM Express™, 개정안 1.2라고 하는 NVMe(Non-Volatile Memory Host Controller Interface Express) 규격, 및/또는 이 규격의 이전 및/또는 후속 버전들에 따를 수 있고/또는 호환가능할 수 있다.
일부 실시예들에서, 하드웨어 기술 언어(HDL)는 여기에 설명된 다양한 로직 및/또는 회로를 위한 회로 및/또는 로직 구현(들)을 명시하기 위해 사용될 수 있다. 예를 들어, 한 실시예에서 하드웨어 기술 언어는 여기에 설명된 하나 이상의 회로 및/또는 로직의 반도체 제조를 가능하게 할 수 있는 초고속 집적 회로들(VHSIC) 하드웨어 기술 언어(VHDL)에 따를 수 있거나 호환가능할 수 있다. VHDL은 IEEE 표준 1076-1987, IEEE 표준 1076.2, IEEE1076.1, VHDL-2006의 IEEE 드래프트 3.0, VHDL-2008의 IEEE 드래프트 4.0 및/또는 IEEE VHDL 표준들의 다른 버전들 및/또는 다른 하드웨어 기술 표준들에 따를 수 있거나 호환가능할 수 있다.
그러므로, 본 개시내용의 교시들에 따라, 시스템 및 방법이 맵핑된 디바이스 LBA(들)와 연관된 데이터를 판독 및 기입(즉, 카피)함으로써 대체 저장 디바이스의 가속된 리빌드를 제공하도록 구성된다. 바꾸어 말하면, 고장난 저장 디바이스와 연관된 모든 디바이스 LBA들을 대체 저장 디바이스에 카피하기보다는, 맵핑되기로 결정된 디바이스 LBA(들)와 연관된 데이터가 카피될 수 있다. 그러므로, 고장난 저장 디바이스를 리빌드하는 것과 연관된 시간 기간은 저장 디바이스의 전체 스팬을 카피하는 것에 비해 감소될 수 있다. 저장 디바이스(들)로부터 대상 디바이스 LBA(들)의 상태(들)를 요구함으로써, 이러한 리빌드들은 저장 시스템에 결합된 호스트 컴퓨팅 디바이스 상에 상주할 수 있는 파일 시스템의 존재 및/또는 유형에 독립하여 수행될 수 있다.
예들
본 개시내용의 예들은 아래에 논의되는 바와 같이, 저장 시스템에서의 가속된 데이터 복구에 관련된 방법, 방법의 동작들을 수행하는 수단, 디바이스, 또는 장치 또는 컴퓨터 판독가능 저장 디바이스와 같은 주제를 포함한다.
예 1
이 예에 따르면, 저장 시스템이 제공된다. 상기 저장 시스템은 저장 시스템 제어 로직을 포함한다. 저장 시스템 제어 로직은 고장난 저장 디바이스의 검출에 응답하여 적어도 하나의 대상 저장 디바이스를 식별하고, 상기 적어도 하나의 대상 저장 디바이스 각각으로부터 대상 디바이스 논리적 블록 어드레스(LBA)의 상태를 요구하고, 각각의 대상 저장 디바이스로부터 맵핑된 디바이스 LBA와 연관된 데이터를 판독하고 상기 데이터를 적어도 하나의 대체 저장 디바이스에 기입하는 것이다.
예 2
이 예는 상기 저장 시스템 제어 로직이 또한 컴퓨팅 디바이스로부터의 트림 명령(TRIM)이 각각의 대상 저장 디바이스에 제공되게 요구하는, 예 1의 요소들을 포함한다.
예 3
이 예는 상기 저장 시스템 제어 로직이 또한 각각의 대상 디바이스 LBA를 식별하는, 예 1의 요소들을 포함한다.
예 4
이 예는 상기 저장 시스템 제어 로직이 또한 대상 디바이스 LBA들의 범위의 각각의 대상 디바이스 LBA의 각각의 상태를 각각의 대상 저장 디바이스로부터 요구하는, 예 1의 요소들을 포함한다.
예 5
이 예는 상기 저장 시스템 제어 로직이 또한 각각의 대상 저장 디바이스로부터 맵핑된 디바이스 LBA들의 리스팅을 요구하는, 예 1의 요소들을 포함한다.
예 6
이 예는 상기 상태가 맵핑된 또는 비맵핑된 것에 대응하는, 예 1의 요소들을 포함한다.
예 7
이 예는 상기 저장 시스템 제어 로직이 상기 고장난 저장 디바이스의 리빌드 전에 및/또는 동안 중 적어도 하나에서 각각의 대상 디바이스 LBA의 상기 상태를 요구하는, 예들 1 내지 6 중 어느 하나의 요소들을 포함한다.
예 8
이 예는 상기 요구가 각각의 대상 디바이스 LBA를 포함하고 상기 저장 시스템 제어 로직이 상기 각각의 대상 디바이스 LBA의 상기 상태에 관련된 표시자를 수신하는, 예들 1 내지 6 중 어느 하나의 요소들을 포함한다.
예 9
이 예는 상기 요구가 대상 디바이스 LBA들의 범위를 포함하고 상기 저장 시스템 제어 로직이 대상 디바이스 LBA들의 상기 범위 내의 각각의 대상 디바이스 LBA의 상기 각각의 상태에 관련된 표시자들을 수신하는, 예들 1 내지 6 중 어느 하나의 요소들을 포함한다.
예 10
이 예는 상기 저장 시스템 제어 로직이 또한 패리티 정보를 상기 맵핑된 디바이스 LBA와 연관된 상기 데이터에 적어도 부분적으로 기초하여 결정하는, 예들 1 내지 6 중 어느 하나의 요소들을 포함한다.
예 11
이 예에 따르면 저장 디바이스가 제공된다. 상기 저장 디바이스는 요구에 응답하여 대상 디바이스 논리적 블록 어드레스(LBA)의 상태를 결정하는 디바이스 제어 로직; 상기 요구에 대한 회답을 제공하는 호스트 인터페이스 - 상기 회답은 상기 대상 디바이스 LBA의 상기 상태에 관련된 상태 표시자를 포함함 -; 복수의 디바이스 LBA들 및 각각의 상태 표시자들을 포함하는 맵 테이블; 및 적어도 하나의 맵핑된 LBA에 관련된 데이터를 포함하는 비휘발성 메모리(NVM)를 포함한다.
예 12
이 예는 상기 디바이스 제어 로직이 수신한 트림 명령(TRIM)에 응답하여 디바이스 LBA를 비맵핑하는, 예 11의 요소들을 포함한다.
예 13
이 예는 상기 디바이스 제어 로직이 또한 상기 요구에 응답하여 대상 디바이스 LBA들의 범위의 각각의 대상 디바이스 LBA의 각각의 상태를 결정하는, 예 11의 요소들을 포함한다.
예 14
이 예는 상기 디바이스 제어 로직이 또한 상기 요구에 응답하여 상기 복수의 디바이스 LBA들의 각각의 디바이스 LBA의 각각의 상태를 결정하는, 예 11의 요소들을 포함한다.
예 15
이 예는 상기 회답이 상기 복수의 디바이스 LBA들의 적어도 일부를 포함하고 상기 일부 내의 각각의 디바이스 LBA의 각각의 상태가 맵핑된 것인, 예 14의 요소들을 포함한다.
예 16
이 예는 상기 상태가 맵핑된 또는 비맵핑된 것에 대응하는, 예 11의 요소들을 포함한다.
예 17
이 예는 상기 호스트 인터페이스가 PCIe®(Peripheral Component Interconnect Express), SAS(Serial Attached SCSI(Small Computer System Interface)), ATA(Advanced Technology Attachment), SATA(Serial ATA) 및/또는 NVMe(Non-Volatile Memory Host Controller Interface Express) 중 적어도 하나와 호환가능한, 예들 11 내지 16 중 어느 하나의 요소들을 포함한다.
예 18
이 예는 상기 NVM이 자기저항 랜덤 액세스 메모리(MRAM), 위상 변화 메모리(PCM, PRAM), 3차원 크로스포인트 메모리, 저항 메모리, 강유전성 메모리(F-RAM, FeRAM), 스핀-트랜스퍼 토크 메모리(STT), 열적 지원 스위칭 메모리(TAS), 밀리페드 메모리, 플로팅 접합 게이트 메모리(FJG RAM), 자기 터널 접합(MTJ) 메모리, 전기화학 셀들(ECM) 메모리, 2원 산화물 필라멘트 셀 메모리, 계면 스위칭 메모리, 배터리 팩 RAM, NAND 플래시 메모리 중 하나 이상을 포함하는, 예들 11 내지 16 중 어느 하나의 요소들을 포함한다.
예 19
이 예는 상기 호스트 인터페이스가 상기 저장 디바이스를 저장 시스템 제어 로직 및/또는 컴퓨팅 디바이스 중 적어도 하나에 결합하는, 예들 11 내지 16 중 어느 하나의 요소들을 포함한다.
예 20
이 예는 상기 요구가 저장 시스템 제어 로직으로부터 수신되고 상기 회답이 저장 시스템 제어 로직에 제공되는, 예들 11 내지 16 중 어느 하나의 요소들을 포함한다.
예 21
이 예에 따르면, 방법이 제공된다. 상기 방법은 저장 시스템 제어 로직에 의해, 고장난 저장 디바이스의 검출에 응답하여 적어도 하나의 대상 저장 디바이스를 식별하는 단계; 저장 시스템 제어 로직에 의해, 상기 적어도 하나의 대상 저장 디바이스 각각으로부터 대상 디바이스 논리적 블록 어드레스(LBA)의 상태를 요구하는 단계; 저장 시스템 제어 로직에 의해, 각각의 대상 저장 디바이스로부터 맵핑된 디바이스 LBA와 연관된 데이터를 판독하는 단계; 및 저장 시스템 제어 로직에 의해, 상기 데이터를 적어도 하나의 대체 저장 디바이스에 기입하는 단계를 포함한다.
예 22
이 예는 저장 시스템 제어 로직에 의해, 컴퓨팅 디바이스로부터의 트림 명령(TRIM)이 각각의 대상 저장 디바이스에 제공되게 요구하는 단계를 더 포함하는, 예 21의 요소들을 포함한다.
예 23
이 예는 저장 시스템 제어 로직에 의해, 각각의 대상 디바이스 LBA를 식별하는 단계를 더 포함하는, 예 21의 요소들을 포함한다.
예 24
이 예는 저장 시스템 제어 로직에 의해, 대상 디바이스 LBA들의 범위의 각각의 대상 디바이스 LBA의 각각의 상태를 각각의 대상 저장 디바이스로부터 요구하는 단계를 더 포함하는, 예 21의 요소들을 포함한다.
예 25
이 예는 저장 시스템 제어 로직에 의해, 각각의 대상 저장 디바이스로부터 맵핑된 디바이스 LBA들의 리스팅을 요구하는 단계를 더 포함하는, 예 21의 요소들을 포함한다.
예 26
이 예는 상기 상태가 맵핑된 또는 비맵핑된 것에 대응하는, 예 21의 요소들을 포함한다.
예 27
이 예는 저장 시스템 제어 로직에 의해, 상기 고장난 저장 디바이스의 리빌드 전에 및/또는 동안 중 적어도 하나에서 각각의 대상 디바이스 LBA의 상기 상태를 요구하는 단계를 더 포함하는, 예 21의 요소들을 포함한다.
예 28
이 예는 상기 요구가 각각의 대상 디바이스 LBA를 포함하고 저장 시스템 제어 로직에 의해, 상기 각각의 대상 디바이스 LBA의 상기 상태에 관련된 표시자를 수신하는 단계를 더 포함하는, 예 21의 요소들을 포함한다.
예 29
이 예는 상기 요구가 대상 디바이스 LBA들의 범위를 포함하고 저장 시스템 제어 로직에 의해, 대상 디바이스 LBA들의 상기 범위 내의 각각의 대상 디바이스 LBA의 상기 각각의 상태에 관련된 표시자들을 수신하는 단계를 더 포함하는, 예 21의 요소들을 포함한다.
예 30
이 예는 저장 시스템 제어 로직에 의해, 패리티 정보를 상기 맵핑된 디바이스 LBA와 연관된 상기 데이터에 적어도 부분적으로 기초하여 결정하는 단계를 더 포함하는, 예 21의 요소들을 포함한다.
예 31
이 예에 따르면 방법이 제공된다. 상기 방법은 디바이스 제어 로직에 의해, 복수의 디바이스 LBA들 및 각각의 상태 표시자들을 포함하는 맵 테이블에 적어도 부분적으로 기초하여 요구에 응답하여 대상 디바이스 논리적 블록 어드레스(LBA)의 상태를 결정하는 단계 - 상기 맵 테이블은 적어도 하나의 맵핑된 LBA에 관련된 데이터를 포함하는 비휘발성 메모리(NVM)에 관련됨 -; 및 호스트 인터페이스에 의해, 상기 요구에 대한 회답을 제공하는 단계 - 상기 회답은 상기 대상 디바이스 LBA의 상기 상태에 관련된 상태 표시자를 포함함 - 를 포함한다.
예 32
이 예는 상기 디바이스 제어 로직에 의해, 수신한 트림 명령(TRIM)에 응답하여 디바이스 LBA를 비맵핑하는 단계를 더 포함하는, 예 31의 요소들을 포함한다.
예 33
이 예는 상기 디바이스 제어 로직에 의해, 상기 요구에 응답하여 상기 대상 디바이스 LBA들의 범위의 각각의 대상 디바이스 LBA의 각각의 상태를 결정하는 단계를 더 포함하는, 예 31의 요소들을 포함한다.
예 34
이 예는 상기 디바이스 제어 로직에 의해, 상기 요구에 응답하여 상기 복수의 디바이스 LBA들의 각각의 디바이스 LBA의 각각의 상태를 결정하는 단계를 더 포함하는, 예 31의 요소들을 포함한다.
예 35
이 예는 상기 회답이 상기 복수의 디바이스 LBA들의 적어도 일부를 포함하고 상기 일부 내의 각각의 디바이스 LBA의 각각의 상태가 맵핑된 것인, 예 34의 요소들을 포함한다.
예 36
이 예는 상기 상태가 맵핑된 또는 비맵핑된 것에 대응하는, 예 31의 요소들을 포함한다.
예 37
이 예는 상기 회답이 PCIe®(Peripheral Component Interconnect Express), SAS(Serial Attached SCSI(Small Computer System Interface)), ATA(Advanced Technology Attachment), SATA(Serial ATA) 및/또는 NVMe(Non-Volatile Memory Host Controller Interface Express) 중 적어도 하나와 호환가능한, 예 31의 요소들을 포함한다.
예 38
이 예는 상기 NVM이 자기저항 랜덤 액세스 메모리(MRAM), 위상 변화 메모리(PCM, PRAM), 3차원 크로스포인트 메모리, 저항 메모리, 강유전성 메모리(F-RAM, FeRAM), 스핀-트랜스퍼 토크 메모리(STT), 열적 지원 스위칭 메모리(TAS), 밀리페드 메모리, 플로팅 접합 게이트 메모리(FJG RAM), 자기 터널 접합(MTJ) 메모리, 전기화학 셀들(ECM) 메모리, 2원 산화물 필라멘트 셀 메모리, 계면 스위칭 메모리, 배터리 팩 RAM, NAND 플래시 메모리 중 적어도 하나를 포함하는, 예 31의 요소들을 포함한다.
예 39
이 예는 상기 호스트 인터페이스에 의해, 상기 저장 디바이스를 저장 시스템 제어 로직 및/또는 컴퓨팅 디바이스 중 적어도 하나에 결합하는 단계를 더 포함하는, 예 31의 요소들을 포함한다.
예 40
이 예는 상기 요구가 저장 시스템 제어 로직으로부터 수신되고 상기 회답이 저장 시스템 제어 로직에 제공되는 예 31의 요소들을 포함한다.
예 41
이 예에 따르면 하나 이상의 프로세서에 의해 실행될 때 고장난 저장 디바이스의 검출에 응답하여 적어도 하나의 대상 저장 디바이스를 식별하고; 상기 적어도 하나의 대상 저장 디바이스 각각으로부터 대상 디바이스 논리적 블록 어드레스(LBA)의 상태를 요구하고; 각각의 대상 저장 디바이스로부터 맵핑된 디바이스 LBA와 연관된 데이터를 판독하고; 상기 데이터를 적어도 하나의 대체 저장 디바이스에 기입하는 것을 포함하는 동작들을 발생시키는 명령어들이 저장되어 있는 컴퓨터 판독가능 저장 디바이스가 제공된다.
예 42
이 예는 하나 이상의 프로세서에 의해 실행될 때 상기 명령어들이 컴퓨팅 디바이스로부터의 트림 명령(TRIM)이 각각의 대상 저장 디바이스에 제공되게 요구하는 것을 포함하는 추가 동작들을 발생시키는, 예 41의 요소들을 포함한다.
예 43
이 예는 하나 이상의 프로세서에 의해 실행될 때 상기 명령어들이 각각의 대상 디바이스 LBA를 식별하는 것을 포함하는 추가 동작들을 발생시키는, 예 41의 요소들을 포함한다.
예 44
이 예는 하나 이상의 프로세서에 의해 실행될 때 상기 명령어들이 대상 디바이스 LBA들의 범위의 각각의 대상 디바이스 LBA의 각각의 상태를 각각의 대상 저장 디바이스로부터 요구하는 것을 포함하는 추가 동작들을 발생시키는, 예 41의 요소들을 포함한다.
예 45
이 예는 하나 이상의 프로세서에 의해 실행될 때 상기 명령어들이 각각의 대상 저장 디바이스로부터 맵핑된 디바이스 LBA들의 리스팅을 요구하는 것을 포함하는 추가 동작들을 발생시키는, 예 41의 요소들을 포함한다.
예 46
이 예는 상기 상태가 맵핑된 또는 비맵핑된 것에 대응하는, 예 41의 요소들을 포함한다.
예 47
이 예는 하나 이상의 프로세서에 의해 실행될 때 상기 명령어들이 상기 고장난 저장 디바이스의 리빌드 전에 및/또는 동안 중 적어도 하나에서 각각의 대상 디바이스 LBA의 상기 상태를 요구하는 것을 포함하는 추가 동작들을 발생시키는, 예들 41 내지 46 중 어느 하나의 요소들을 포함한다.
예 48
이 예는 상기 요구가 각각의 대상 디바이스 LBA를 포함하고 하나 이상의 프로세서에 의해 실행될 때 상기 명령어들이 상기 각각의 대상 디바이스 LBA의 상기 상태에 관련된 표시자를 수신하는 것을 포함하는 추가 동작들을 발생시키는, 예들 41 내지 46 중 어느 하나의 요소들을 포함한다.
예 49
이 예는 상기 요구가 대상 디바이스 LBA들의 범위를 포함하고 하나 이상의 프로세서에 의해 실행될 때 상기 명령어들이 대상 디바이스 LBA들의 상기 범위 내의 각각의 대상 디바이스 LBA의 상기 각각의 상태에 관련된 표시자들을 수신하는 것을 포함하는 추가 동작들을 발생시키는, 예들 41 내지 46 중 어느 하나의 요소들을 포함한다.
예 50
이 예는 하나 이상의 프로세서에 의해 실행될 때 상기 명령어들이 패리티 정보를 상기 맵핑된 디바이스 LBA와 연관된 상기 데이터에 적어도 부분적으로 기초하여 결정하는 것을 포함하는 추가 동작들을 발생시키는, 예들 41 내지 46 중 어느 하나의 요소들을 포함한다.
예 51
이 예에 따르면 하나 이상의 프로세서에 의해 실행될 때 복수의 디바이스 LBA들 및 각각의 상태 표시자들을 포함하는 맵 테이블에 적어도 부분적으로 기초하여 요구에 응답하여 대상 디바이스 논리적 블록 어드레스(LBA)의 상태를 결정하고 - 상기 맵 테이블은 적어도 하나의 맵핑된 LBA에 관련된 데이터를 포함하는 비휘발성 메모리(NVM)에 관련됨 -; 상기 요구에 대한 회답을 제공하는 것 - 상기 회답은 상기 대상 디바이스 LBA의 상기 상태에 관련된 상태 표시자를 포함함 - 을 포함하는 동작들을 발생시키는 명령어들이 저장되어 있는 컴퓨터 판독가능 저장 디바이스가 제공된다.
예 52
이 예는 하나 이상의 프로세서에 의해 실행될 때 상기 명령어들이 수신한 트림 명령(TRIM)에 응답하여 디바이스 LBA를 비맵핑하는 것을 포함하는 추가 동작들을 발생시키는, 예 51의 요소들을 포함한다.
예 53
이 예는 하나 이상의 프로세서에 의해 실행될 때 상기 명령어들이 상기 요구에 응답하여 상기 대상 디바이스 LBA들의 범위의 각각의 대상 디바이스 LBA의 각각의 상태를 결정하는 것을 포함하는 추가 동작들을 발생시키는, 예 51의 요소들을 포함한다.
예 54
이 예는 하나 이상의 프로세서에 의해 실행될 때 상기 명령어들이 상기 요구에 응답하여 상기 복수의 디바이스 LBA들의 각각의 디바이스 LBA의 각각의 상태를 결정하는 것을 포함하는 추가 동작들을 발생시키는, 예 51의 요소들을 포함한다.
예 55
이 예는 상기 회답이 상기 복수의 디바이스 LBA들의 적어도 일부를 포함하고 상기 일부 내의 각각의 디바이스 LBA의 각각의 상태가 맵핑된 것인, 예 54의 요소들을 포함한다.
예 56
이 예는 상기 상태가 맵핑된 또는 비맵핑된 것에 대응하는, 예 51의 요소들을 포함한다.
예 57
이 예는 상기 회답이 PCIe®(Peripheral Component Interconnect Express), SAS(Serial Attached SCSI(Small Computer System Interface)), ATA(Advanced Technology Attachment), SATA(Serial ATA) 및/또는 NVMe(Non-Volatile Memory Host Controller Interface Express) 중 적어도 하나와 호환가능한, 예들 51 내지 56 중 어느 하나의 요소들을 포함한다.
예 58
이 예는 상기 NVM이 자기저항 랜덤 액세스 메모리(MRAM), 위상 변화 메모리(PCM, PRAM), 3차원 크로스포인트 메모리, 저항 메모리, 강유전성 메모리(F-RAM, FeRAM), 스핀-트랜스퍼 토크 메모리(STT), 열적 지원 스위칭 메모리(TAS), 밀리페드 메모리, 플로팅 접합 게이트 메모리(FJG RAM), 자기 터널 접합(MTJ) 메모리, 전기화학 셀들(ECM) 메모리, 2원 산화물 필라멘트 셀 메모리, 계면 스위칭 메모리, 배터리 팩 RAM, NAND 플래시 메모리 중 적어도 하나를 포함하는, 예들 51 내지 56 중 어느 하나의 요소들을 포함한다.
예 59
이 예는 하나 이상의 프로세서에 의해 실행될 때 상기 명령어들이 상기 저장 디바이스를 저장 시스템 제어 로직 및/또는 컴퓨팅 디바이스 중 적어도 하나에 결합하는 것을 포함하는 추가 동작들을 발생시키는, 예들 51 내지 56 중 어느 하나의 요소들을 포함한다.
예 60
이 예는 상기 요구가 저장 시스템 제어 로직으로부터 수신되고 상기 회답이 저장 시스템 제어 로직에 제공되는, 예들 51 내지 56 중 어느 하나의 요소들을 포함한다.
예 61
이 예에 따르면 하나 이상의 프로세서에 의해 실행될 때 예들 21 내지 30 중 어느 하나에 따른 방법을 포함하는 동작들을 발생시키는 명령어들이 저장되어 있는 컴퓨터 판독가능 저장 디바이스가 제공된다.
예 62
이 예에 따르면 하나 이상의 프로세서에 의해 실행될 때 예들 31 내지 40 중 어느 하나에 따른 방법을 포함하는 동작들을 발생시키는 명령어들이 저장되어 있는 컴퓨터 판독가능 저장 디바이스가 제공된다.
예 63
본 개시내용의 또 하나의 예는 예들 21 내지 30 중 어느 하나의 방법을 수행하도록 구성된 적어도 하나의 디바이스를 포함하는 시스템이다.
예 64
본 개시내용의 또 하나의 예는 예들 31 내지 40 중 어느 하나의 방법을 수행하도록 구성된 적어도 하나의 디바이스를 포함하는 시스템이다.
예 65
본 개시내용의 또 하나의 예는 예들 21 내지 30 중 어느 하나의 방법을 수행하는 수단을 포함하는 디바이스이다.
예 66
본 개시내용의 또 하나의 예는 예들 31 내지 40 중 어느 하나의 방법을 수행하는 수단을 포함하는 디바이스이다.
여기에서 이용된 용어들 및 표현들은 설명의 용어들로서 사용되고 제한하는 것이 아니고, 이러한 용어들 및 표현들의 사용에 있어서, 도시되고 설명된 어떤 등가물들(또는 그것의 부분들)을 배제하려는 의도는 없고, 다양한 수정들이 청구범위의 범위 내에서 가능하다는 것이 인식된다. 따라서, 청구범위는 모든 이러한 등가물들을 커버하는 것으로 의도된다.
다양한 특징들, 양태들, 및 실시예들이 여기에 설명되었다. 특징들, 양태들, 및 실시예들이 본 기술 분야의 통상의 기술자에 의해 이해되는 바와 같이, 변형 및 수정뿐만 아니라 서로 조합될 수 있다. 그러므로, 본 개시내용은 이러한 조합들, 변형들, 및 수정들을 포함하는 것으로 고려되어야 한다.

Claims (25)

  1. 명령어들이 저장된 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체로서, 상기 명령어들은, 제1 컴퓨팅 디바이스의 적어도 하나의 프로세서에 의해 실행될 때, 상기 적어도 하나의 프로세서로 하여금:
    복수의 저장 디바이스에서 고장난 저장 디바이스를 검출하고;
    상기 복수의 저장 디바이스 중 적어도 하나의 대상(target) 저장 디바이스를 식별하고;
    상기 적어도 하나의 대상 저장 디바이스의 맵핑된 논리 블록 어드레스(LBA)들을 식별하고 - 상기 적어도 하나의 대상 저장 디바이스는 연관된 맵핑된 LBA들 및 비맵핑 LBA들을 가짐 -;
    상기 고장난 저장 디바이스의 검출에 응답하여, 상기 적어도 하나의 대상 저장 디바이스로부터, 상기 맵핑된 LBA들과 연관된 데이터를 판독하고, 상기 비맵핑 LBA들과 연관된 데이터를 판독하지 않고;
    상기 고장난 저장 디바이스의 검출에 응답하여, 적어도 하나의 대체 저장 디바이스에, 상기 맵핑된 LBA들과 연관된 데이터를 기입하고, 상기 비맵핑 LBA들과 연관된 데이터를 기입하지 않는 것을 포함하는 동작들을 수행하게 하고,
    상기 비맵핑 LBA들 중 적어도 하나는 기입되지 않았거나 또는 UNMAP 명령의 대상이었고 상기 UNMAP 명령 이후에 기입되지 않은 LBA인, 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체.
  2. 제1항에 있어서, 상기 맵핑된 LBA들 중 적어도 하나는 기입 동작의 대상이었고, 상기 기입 동작 이후 UNMAP 명령의 대상이 아닌 LBA인, 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체.
  3. 제1항에 있어서, 상기 UNMAP 명령은 TRIM 명령인, 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체.
  4. 제1항에 있어서, 상기 UNMAP 명령은 SCSI(Small Computer System Interface) 명령인, 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체.
  5. 제1항에 있어서, 상기 적어도 하나의 대상 저장 디바이스는 적어도 하나의 SSD(solid state drive)인, 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체.
  6. 제1항에 있어서, 상기 명령어들은, 상기 제1 컴퓨팅 디바이스의 상기 적어도 하나의 프로세서에 의해 실행될 때, 컴퓨팅 디바이스로부터의 UNMAP 명령이 적어도 하나의 대상 저장 디바이스에 제공되게 요구하는 것을 포함하는 추가적인 동작들을 발생시키는, 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체.
  7. 제1항에 있어서, 상기 명령어들은, 상기 제1 컴퓨팅 디바이스의 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 적어도 하나의 대상 저장 디바이스 내의 적어도 하나의 LBA의 상태 - 상기 상태는 맵핑 또는 비맵핑임 - 를 식별하는 것을 포함하는 추가적인 동작들을 발생시키는, 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체.
  8. 제7항에 있어서, 상기 명령어들은, 상기 제1 컴퓨팅 디바이스의 상기 적어도 하나의 프로세서에 의해 실행될 때, 대상 저장 디바이스 LBA들의 범위에서 적어도 하나의 대상 저장 디바이스 LBA의 상태 - 상기 상태는 맵핑 또는 비맵핑임 - 를 식별하는 것을 포함하는 추가적인 동작들을 발생시키는, 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체.
  9. 제8항에 있어서, 상기 명령어들은, 상기 제1 컴퓨팅 디바이스의 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 적어도 하나의 저장 디바이스의 디바이스 제어 로직으로 하여금, 적어도 하나의 대상 저장 디바이스의 맵핑된 LBA들의 리스팅을 제공하게 하는 추가적인 동작들을 발생시키는, 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체.
  10. 제9항에 있어서, 상기 디바이스 제어 로직은 또한 UNMAP 명령에 응답하여 디바이스 LBA를 비맵핑하는, 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체.
  11. 디바이스로서,
    복수의 저장 디바이스와 통신하는 저장 디바이스 인터페이스 회로; 및
    저장 시스템 제어 로직
    을 포함하고, 상기 저장 시스템 제어 로직은:
    상기 복수의 저장 디바이스에서 고장난 저장 디바이스를 검출하고;
    상기 복수의 저장 디바이스 중 적어도 하나의 대상 저장 디바이스를 식별하고;
    상기 적어도 하나의 대상 저장 디바이스의 맵핑된 논리 블록 어드레스(LBA)들을 식별하고 - 상기 적어도 하나의 대상 저장 디바이스는 연관된 맵핑된 LBA들 및 비맵핑 LBA들을 가짐 -;
    상기 고장난 저장 디바이스의 검출에 응답하여, 상기 적어도 하나의 대상 저장 디바이스로부터, 상기 맵핑된 LBA들과 연관된 데이터를 판독하고, 상기 비맵핑 LBA들과 연관된 데이터를 판독하지 않고;
    상기 고장난 저장 디바이스의 검출에 응답하여, 적어도 하나의 대체 저장 디바이스에, 상기 맵핑된 LBA들과 연관된 데이터를 기입하고, 상기 비맵핑 LBA들과 연관된 데이터를 기입하지 않고;
    상기 비맵핑 LBA들 중 적어도 하나는 기입되지 않았거나 또는 UNMAP 명령의 대상이었고 상기 UNMAP 명령 이후 기입되지 않은 LBA인, 디바이스.
  12. 제11항에 있어서, 상기 맵핑된 LBA들 중 적어도 하나는 기입 동작의 대상이었고, 상기 기입 동작 이후 UNMAP 명령의 대상이 아닌 LBA인, 디바이스.
  13. 제11항에 있어서, 상기 UNMAP 명령은 TRIM 명령인, 디바이스.
  14. 제11항에 있어서, 상기 UNMAP 명령은 SCSI(Small Computer System Interface) 명령인, 디바이스.
  15. 제11항에 있어서, 상기 적어도 하나의 대상 저장 디바이스는 적어도 하나의 SSD(solid state drive)인, 디바이스.
  16. 제11항에 있어서, 상기 저장 시스템 제어 로직은 또한 컴퓨팅 디바이스로부터의 UNMAP 명령이 적어도 하나의 대상 저장 디바이스에 제공될 것을 요구하는, 디바이스.
  17. 제11항에 있어서, 상기 저장 시스템 제어 로직은 또한 상기 적어도 하나의 대상 저장 디바이스의 적어도 하나의 LBA의 상태 - 상기 상태는 맵핑 또는 비맵핑임 - 를 식별하는, 디바이스.
  18. 제17항에 있어서, 상기 저장 시스템 제어 로직은 또한 대상 저장 디바이스 LBA들의 범위에서 적어도 하나의 대상 저장 디바이스 LBA의 상태 - 상기 상태는 맵핑 또는 비맵핑임 - 를 식별하는, 디바이스.
  19. 제18항에 있어서, 상기 저장 시스템 제어 로직은 또한 적어도 하나의 저장 디바이스의 디바이스 제어 로직으로 하여금, 적어도 하나의 대상 저장 디바이스의 맵핑된 LBA들의 리스팅을 제공하게 하는, 디바이스.
  20. 제19항에 있어서, 상기 저장 시스템 제어 로직은 또한 UNMAP 명령에 응답하여 디바이스 LBA를 비맵핑하는, 디바이스.
  21. 시스템으로서,
    저장 시스템; 및
    컴퓨팅 디바이스
    를 포함하고, 상기 저장 시스템은:
    복수의 저장 디바이스; 및
    저장 시스템 제어 로직
    을 포함하고, 상기 저장 시스템 제어 로직은:
    복수의 저장 디바이스에서 고장난 저장 디바이스를 검출하고;
    상기 복수의 저장 디바이스 중 적어도 하나의 대상 저장 디바이스를 식별하고;
    상기 적어도 하나의 대상 저장 디바이스의 맵핑된 논리 블록 어드레스(LBA)들을 식별하고 - 상기 적어도 하나의 대상 저장 디바이스는 연관된 맵핑된 LBA들 및 비맵핑 LBA들을 가짐 -;
    상기 고장난 저장 디바이스의 검출에 응답하여, 상기 적어도 하나의 대상 저장 디바이스로부터, 상기 맵핑된 LBA들과 연관된 데이터를 판독하고, 상기 비맵핑 LBA들과 연관된 데이터를 판독하지 않고;
    상기 고장난 저장 디바이스의 검출에 응답하여, 적어도 하나의 대체 저장 디바이스에, 상기 맵핑된 LBA들과 연관된 데이터를 기입하고, 상기 비맵핑 LBA들과 연관된 데이터를 기입하지 않고,
    상기 비맵핑 LBA들 중 적어도 하나는 기입되지 않았거나 또는 UNMAP 명령의 대상이었고 상기 UNMAP 명령 이후에 기입되지 않은 LBA이고,
    상기 컴퓨팅 디바이스는:
    프로세서; 및
    상기 프로세서를 상기 저장 시스템에 결합시키기 위한 칩셋 회로
    를 포함하는, 시스템.
  22. 제21항에 있어서, 디스플레이를 더 포함하고, 상기 칩셋 회로는 또한 상기 프로세서를 상기 디스플레이에 결합시키는, 시스템.
  23. 제21항에 있어서, 상기 저장 시스템 제어 로직은 또한 상기 적어도 하나의 대상 저장 디바이스의 적어도 하나의 LBA의 상태를 식별하고, 상기 상태는 맵핑 또는 비맵핑인 것인, 시스템.
  24. 제23항에 있어서, 상기 저장 시스템 제어 로직은 또한 대상 저장 디바이스 LBA들의 범위에서 적어도 하나의 대상 저장 디바이스 LBA의 상태를 식별하고, 상기 상태는 맵핑 또는 비맵핑인 것인, 시스템.
  25. 제24항에 있어서, 상기 저장 시스템 제어 로직은 또한 적어도 하나의 저장 디바이스의 디바이스 제어 로직으로 하여금, 적어도 하나의 대상 저장 디바이스의맵핑된 LBA들의 리스팅을 제공하게 하는, 시스템.
KR1020187002334A 2014-12-12 2015-11-13 저장 시스템에서의 가속된 데이터 복구 KR102502352B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US14/568,417 2014-12-12
US14/568,417 US9575853B2 (en) 2014-12-12 2014-12-12 Accelerated data recovery in a storage system
PCT/US2015/060632 WO2016094032A1 (en) 2014-12-12 2015-11-13 Accelerated data recovery in a storage system
KR1020177012863A KR102487790B1 (ko) 2014-12-12 2015-11-13 저장 시스템에서의 가속된 데이터 복구

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020177012863A Division KR102487790B1 (ko) 2014-12-12 2015-11-13 저장 시스템에서의 가속된 데이터 복구

Publications (2)

Publication Number Publication Date
KR20180011365A true KR20180011365A (ko) 2018-01-31
KR102502352B1 KR102502352B1 (ko) 2023-02-23

Family

ID=56107932

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020187002334A KR102502352B1 (ko) 2014-12-12 2015-11-13 저장 시스템에서의 가속된 데이터 복구
KR1020177012863A KR102487790B1 (ko) 2014-12-12 2015-11-13 저장 시스템에서의 가속된 데이터 복구

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020177012863A KR102487790B1 (ko) 2014-12-12 2015-11-13 저장 시스템에서의 가속된 데이터 복구

Country Status (4)

Country Link
US (2) US9575853B2 (ko)
KR (2) KR102502352B1 (ko)
CN (2) CN108089951B (ko)
WO (1) WO2016094032A1 (ko)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10528272B2 (en) * 2015-02-20 2020-01-07 International Business Machines Corporation RAID array systems and operations using mapping information
US10157112B2 (en) * 2015-09-03 2018-12-18 Toshiba Memory Corporation Storage device
US9766965B2 (en) * 2015-11-25 2017-09-19 Salesforce.Com, Inc. System and method for monitoring and detecting faulty storage devices
WO2018041258A1 (zh) * 2016-09-05 2018-03-08 北京忆恒创源科技有限公司 去分配命令处理的方法与存储设备
US10642720B2 (en) * 2016-09-15 2020-05-05 Talend, Inc. Test case generator built into data-integration workflow editor
US11461273B1 (en) * 2016-12-20 2022-10-04 Pure Storage, Inc. Modifying storage distribution in a storage system that includes one or more storage devices
KR102395538B1 (ko) * 2017-04-28 2022-05-10 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
CN107728945A (zh) * 2017-09-30 2018-02-23 深圳市华德安科技有限公司 磁盘阵列的挂载方法、Android设备和存储介质
CN107765999A (zh) * 2017-09-30 2018-03-06 深圳市华德安科技有限公司 Raid管理方法、装置及计算机可读存储介质
CN107608637A (zh) * 2017-09-30 2018-01-19 深圳市华德安科技有限公司 Raid管理方法、装置及计算机可读存储介质
CN107704205A (zh) * 2017-09-30 2018-02-16 深圳市华德安科技有限公司 Raid管理方法、装置及计算机可读存储介质
CN107748651A (zh) * 2017-09-30 2018-03-02 深圳市华德安科技有限公司 磁盘阵列的挂载方法、Android设备和存储介质
CN107765998A (zh) * 2017-09-30 2018-03-06 深圳市华德安科技有限公司 Raid管理方法、装置及计算机可读存储介质
CN107728944A (zh) * 2017-09-30 2018-02-23 深圳市华德安科技有限公司 Raid管理方法、装置及计算机可读存储介质
CN107741830A (zh) * 2017-09-30 2018-02-27 深圳市华德安科技有限公司 磁盘阵列的挂载方法、Android设备和存储介质
CN107817949A (zh) * 2017-09-30 2018-03-20 深圳市华德安科技有限公司 磁盘阵列的挂载方法、Android设备和存储介质
CN107741829A (zh) * 2017-09-30 2018-02-27 深圳市华德安科技有限公司 Raid管理方法、装置及计算机可读存储介质
CN107678693A (zh) * 2017-09-30 2018-02-09 深圳市华德安科技有限公司 磁盘阵列的挂载方法、Android设备和存储介质
CN107728946A (zh) * 2017-09-30 2018-02-23 深圳市华德安科技有限公司 磁盘阵列的挂载方法、Android设备和存储介质
CN107608638A (zh) * 2017-09-30 2018-01-19 深圳市华德安科技有限公司 Raid管理方法、装置及计算机可读存储介质
CN107728942A (zh) * 2017-09-30 2018-02-23 深圳市华德安科技有限公司 磁盘阵列的挂载方法、Android设备和存储介质
KR102423278B1 (ko) 2017-11-28 2022-07-21 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR102586741B1 (ko) * 2018-04-23 2023-10-11 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
CN110413202B (zh) * 2018-04-28 2024-03-08 伊姆西Ip控股有限责任公司 数据复制方法、设备和计算机程序产品
CN109032859A (zh) * 2018-06-26 2018-12-18 郑州云海信息技术有限公司 一种nvme ssd逻辑块检测方法、系统及相关装置
US10409511B1 (en) * 2018-06-30 2019-09-10 Western Digital Technologies, Inc. Multi-device storage system with distributed read/write processing
WO2020000482A1 (zh) 2018-06-30 2020-01-02 华为技术有限公司 一种基于NVMe的数据读取方法、装置及系统
CN111542803B (zh) * 2018-06-30 2021-10-01 华为技术有限公司 一种基于NVMe的数据写入方法、装置及系统
US11068365B2 (en) * 2018-08-23 2021-07-20 Micron Technology, Inc. Data recovery within a memory sub-system without moving or processing the data through a host
CN112631965A (zh) * 2018-10-19 2021-04-09 华为技术有限公司 控制硬盘接入的方法和装置
CN111552435A (zh) * 2018-10-25 2020-08-18 华为技术有限公司 存储系统中数据恢复方法、系统及装置
US11531590B2 (en) * 2019-09-17 2022-12-20 Western Digital Technologies, Inc. Method and system for host-assisted data recovery assurance for data center storage device architectures
CN112764667B (zh) * 2019-10-21 2024-09-06 伊姆西Ip控股有限责任公司 用于存储管理的方法、设备、存储系统和计算机程序产品
JP7167078B2 (ja) * 2020-03-27 2022-11-08 株式会社日立製作所 分散ストレージシステム及び記憶制御方法
KR20220007212A (ko) 2020-07-10 2022-01-18 삼성전자주식회사 Raid 스토리지 장치, 호스트 장치 및 raid 시스템
CN112214356B (zh) * 2020-10-21 2024-06-18 深圳忆联信息系统有限公司 文件数据恢复方法、装置、计算机设备及存储介质
US11429543B2 (en) * 2020-10-22 2022-08-30 Micron Technology, Inc. Managed NAND flash memory region control against endurance hacking
CN113485872B (zh) * 2021-07-14 2024-10-01 北京金山云网络技术有限公司 故障处理方法、装置及分布式存储系统
CN113641437B (zh) * 2021-08-16 2023-06-16 深圳技德智能科技研究院有限公司 一种Linux兼容Android的应用界面旋转方法及装置

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090271659A1 (en) * 2008-04-24 2009-10-29 Ulf Troppens Raid rebuild using file system and block list
US20110029716A1 (en) * 2009-07-29 2011-02-03 Stec, Inc. System and method of recovering data in a flash storage system
US20120317391A1 (en) * 2011-06-10 2012-12-13 International Business Machines Corporation Releasing blocks of storage class memory
US20130290618A1 (en) * 2011-01-18 2013-10-31 Lsi Corporation Higher-level redundancy information computation
US8667248B1 (en) * 2010-08-31 2014-03-04 Western Digital Technologies, Inc. Data storage device using metadata and mapping table to identify valid user data on non-volatile media
US20140095767A1 (en) * 2012-09-28 2014-04-03 Sanjeev N. Trika Storage device trimming
US20140101480A1 (en) * 2012-10-05 2014-04-10 Lsi Corporation Common hot spare for multiple raid groups
KR101453264B1 (ko) * 2007-06-08 2014-10-21 샌디스크 테크놀로지스, 인코포레이티드 메모리 디바이스에 대한 저장 어드레스 리매핑을 위한 방법과 시스템
KR101457270B1 (ko) * 2011-12-12 2014-10-31 애플 인크. Lba 비트맵 사용

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7139931B2 (en) 2002-08-19 2006-11-21 Aristos Logic Corporation Method of controlling the system performance and reliability impact of hard disk drive rebuild
US7188212B2 (en) * 2004-05-06 2007-03-06 International Business Machines Corporation Method and system for storing data in an array of storage devices with additional and autonomic protection
US8041991B2 (en) * 2008-11-18 2011-10-18 Lsi Corporation System and method for recovering solid state drive data
US8589724B2 (en) 2011-06-30 2013-11-19 Seagate Technology Llc Rapid rebuild of a data set
JP5807458B2 (ja) * 2011-08-31 2015-11-10 富士通株式会社 ストレージシステム、ストレージ制御装置およびストレージ制御方法
TWI563383B (en) * 2012-04-25 2016-12-21 Phison Electronics Corp Memory formatting method, memory controller and memory storage apparatus
CN102708019B (zh) * 2012-04-28 2014-12-03 华为技术有限公司 一种硬盘数据恢复方法、装置及系统
JP6136460B2 (ja) * 2013-03-28 2017-05-31 富士通株式会社 情報処理装置、情報処理装置の制御プログラムおよび情報処理装置の制御方法
CN103534688B (zh) * 2013-05-29 2016-03-09 华为技术有限公司 数据恢复方法、存储设备和存储系统
CN103699457A (zh) * 2013-09-26 2014-04-02 深圳市泽云科技有限公司 基于条带化的磁盘阵列修复方法及装置
US9658923B2 (en) * 2014-09-30 2017-05-23 International Business Machines Corporation Optimization of rebuilding in solid state drives
US10528272B2 (en) * 2015-02-20 2020-01-07 International Business Machines Corporation RAID array systems and operations using mapping information

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101453264B1 (ko) * 2007-06-08 2014-10-21 샌디스크 테크놀로지스, 인코포레이티드 메모리 디바이스에 대한 저장 어드레스 리매핑을 위한 방법과 시스템
US20090271659A1 (en) * 2008-04-24 2009-10-29 Ulf Troppens Raid rebuild using file system and block list
US20110029716A1 (en) * 2009-07-29 2011-02-03 Stec, Inc. System and method of recovering data in a flash storage system
US8667248B1 (en) * 2010-08-31 2014-03-04 Western Digital Technologies, Inc. Data storage device using metadata and mapping table to identify valid user data on non-volatile media
US20130290618A1 (en) * 2011-01-18 2013-10-31 Lsi Corporation Higher-level redundancy information computation
US20120317391A1 (en) * 2011-06-10 2012-12-13 International Business Machines Corporation Releasing blocks of storage class memory
KR101457270B1 (ko) * 2011-12-12 2014-10-31 애플 인크. Lba 비트맵 사용
US20140095767A1 (en) * 2012-09-28 2014-04-03 Sanjeev N. Trika Storage device trimming
US20140101480A1 (en) * 2012-10-05 2014-04-10 Lsi Corporation Common hot spare for multiple raid groups

Also Published As

Publication number Publication date
CN108089951A (zh) 2018-05-29
US20170212814A1 (en) 2017-07-27
CN107111535B (zh) 2021-05-11
KR102502352B1 (ko) 2023-02-23
CN108089951B (zh) 2022-04-08
US9575853B2 (en) 2017-02-21
KR20170093798A (ko) 2017-08-16
US20160170846A1 (en) 2016-06-16
US10289500B2 (en) 2019-05-14
CN107111535A (zh) 2017-08-29
WO2016094032A1 (en) 2016-06-16
KR102487790B1 (ko) 2023-01-13

Similar Documents

Publication Publication Date Title
KR102502352B1 (ko) 저장 시스템에서의 가속된 데이터 복구
CN111433732B (zh) 存储设备以及由存储设备执行的计算机实现的方法
US10120769B2 (en) Raid rebuild algorithm with low I/O impact
US11474899B2 (en) Operation method of open-channel storage device
US10013307B1 (en) Systems and methods for data storage devices to use external resources
US9304685B2 (en) Storage array system and non-transitory recording medium storing control program
KR102329762B1 (ko) 메모리 데이터 보호 메커니즘을 갖는 전자 시스템 및 그것의 동작 방법
KR101678911B1 (ko) 데이터 저장 장치 및 그것을 포함하는 컴퓨팅 시스템
US9026845B2 (en) System and method for failure protection in a storage array
WO2014144384A1 (en) Vertically integrated storage
US20180173438A1 (en) Efficient data consistency verification for flash storage
US10324794B2 (en) Method for storage management and storage device
CN112513804A (zh) 一种数据处理方法及装置
US9229814B2 (en) Data error recovery for a storage device
US10031689B2 (en) Stream management for storage devices
US20140317367A1 (en) Storage apparatus and data copy control method
US11755223B2 (en) Systems for modular hybrid storage devices
US10642531B2 (en) Atomic write method for multi-transaction
CN112540869A (zh) 存储器控制器、存储装置和存储装置的操作方法
US10216597B2 (en) Recovering unreadable data for a vaulted volume
US20120159047A1 (en) Computing device and method for merging storage space of usb flash drives
US10592349B2 (en) Storage control device and storage apparatus
US9639417B2 (en) Storage control apparatus and control method
US11507276B2 (en) Systems and methods to submit unaligned IO on an alignment-required IO stack
US20140258610A1 (en) RAID Cache Memory System with Volume Windows

Legal Events

Date Code Title Description
A107 Divisional application of patent
E701 Decision to grant or registration of patent right