KR102665540B1 - 비휘발성 메모리를 포함하는 raid 시스템 - Google Patents
비휘발성 메모리를 포함하는 raid 시스템 Download PDFInfo
- Publication number
- KR102665540B1 KR102665540B1 KR1020160158487A KR20160158487A KR102665540B1 KR 102665540 B1 KR102665540 B1 KR 102665540B1 KR 1020160158487 A KR1020160158487 A KR 1020160158487A KR 20160158487 A KR20160158487 A KR 20160158487A KR 102665540 B1 KR102665540 B1 KR 102665540B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- rebuild
- raid
- memory chip
- data
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 237
- 238000012544 monitoring process Methods 0.000 claims description 4
- 239000007787 solid Substances 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000013403 standard screening design Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 16
- 238000000034 method Methods 0.000 description 13
- 239000004065 semiconductor Substances 0.000 description 7
- 230000004044 response Effects 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 101000934888 Homo sapiens Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Proteins 0.000 description 1
- 102100025393 Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Human genes 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 239000000919 ceramic Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1092—Rebuilding, e.g. when physically replacing a failing disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3034—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
비휘발성 메모리를 포함하는 RAID 시스템이 제공된다. RAID 시스템은 RAID로 구성되고, 데이터 청크와, 상기 데이터 청크에 대응하는 제1 및 제2 패리티를 저장하는 복수의 비휘발성 메모리를 포함하는 메모리 장치, 상기 메모리 장치의 RAID 동작 및 리빌드(rebuild) 동작을 제어하는 RAID 컨트롤러를 포함하되, 상기 RAID 컨트롤러는, 상기 메모리 장치에 저장된 제1 패리티를 이용한 제1 리빌드 동작에서, 제1 리빌드 레이트(rebuild rate)를 갖는 제1 리빌드 관리 정책을 이용하여 상기 제1 리빌드 동작을 수행하고, 상기 메모리 장치에 저장된 제1 및 제2 패리티 비트를 이용한 제2 리빌드 동작에서, 상기 제1 리빌드 레이트와 다른 제2 리빌드 레이트를 갖는 제2 리빌드 관리 정책을 이용하여 상기 제2 리빌드 동작을 수행한다.
Description
본 발명은 RAID 시스템에 관한 것이며, 더욱 구체적으로는 비휘발성 메모리를 포함하는 RAID 시스템에 관한 것이다.
RAID(Redundant Array of Inexpensive Disk)는 중요한 데이터를 가지고 있는 서버 등의 저장 매체에서 주로 사용되는 방법으로, 여러 저장 매체 중 하나의 저장 매체에 패리티(parity)를 저장하여 다른 저장 매체에 저장된 데이터에서 오류가 발생하더라도 이를 정상적인 데이터로 복원할 수 있는 방법이다. 이러한 RAID를 이용하면 입출력 작업의 균형을 이룰 수 있고 서버의 전체적인 성능이 개선될 수 있다.
한편, 데이터의 완전성을 보장하기 위한 시스템에서는 이러한 RAID의 구성 중 패리티 비트를 분산하여 저장하는 RAID 레벨 5 또는 RAID 레벨 6의 시스템이 사용되고 있다. RAID 레벨 5는 데이터 청크 당 하나의 패리티 비트가 분산되어 저장되는 방식이고, RAID 레벨 6은 데이터 청크 당 두 개의 패리티 비트가 분산되어 저장되는 방식이다. 레벨 5 또는 레벨 6의 RAID 시스템을 이용하는 경우, 각각 하나 또는 두 개의 스페어 스토리지 영역을 포함하여 고장 발생 시 해당 스페어 스토리지 영역에 리빌드를 수행한다.
이러한 리빌드 과정은, 패리티 비트 및 전체 RAID 시스템에 포함된 데이터에 접근하여 손실된 데이터를 생성하는 작업이므로, 리빌드 과정에 소요되는 시간이 길뿐만 아니라 전체 RAID 시스템의 I/O 성능에도 큰 영향을 미칠 수 있다.
따라서, RAID 시스템에 포함된 메모리 장치 또는 SSD 드라이브의 고장이 발생하여 리빌드가 발생하기 전에, 통상적인 I/O가 발생하는 동안에 미리 리빌드에 필요한 작업을 수행하여 전체적인 시스템 성능을 확보하는 동시에 신속하게 데이터를 복구하기 위한 리빌드 정책이 필요할 수 있다.
본 발명이 해결하고자 하는 기술적 과제는, RAID 시스템에 포함된 비휘발성 메모리 장치 또는 SSD의 고장 가능성에 따라 미리 리빌드에 필요한 동작을 수행함으로써 RAID 시스템의 고장 발생 시 리빌드 동작에 필요한 시간 및 I/O 요구량을 저감할 수 있는 RAID 시스템을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 RAID 시스템은 RAID(Redundant Array of Inexpensive Disk)로 구성되고, 데이터 청크를 저장하는 복수의 제1 메모리 칩과, 스페어 메모리 영역이 정의되는 제2 메모리 칩을 포함하는 비휘발성 메모리 장치, 상기 비휘발성 메모리 장치의 RAID 동작 및 리빌드(rebuild) 동작을 제어하는 RAID 컨트롤러를 포함하되, 상기 RAID 컨트롤러는, 상기 복수의 제1 메모리 칩의 고장 확률(failure probability)을 모니터링하고, 상기 제1 메모리 칩의 고장 확률을 기초로 상기 복수의 제1 메모리 칩 중 두 개 이상이 미리 정한 문턱값을 만족시킨 경우 상기 두 개 이상의 제1 메모리 칩에 저장된 데이터에 대하여 제1 리빌드를 수행하여 상기 제2 메모리 칩에 저장하고, 상기 제1 리빌드의 대상이 되는 제1 메모리 칩 중 하나에 고장(failure)이 발생한 경우, 상기 제2 메모리 칩에 저장된 데이터를 이용하여 상기 고장이 발생한 제1 메모리 칩의 데이터에 대하여 제2 리빌드를 수행한다.
상기 기술적 과제를 달성하기 위한 본 발명의 다른 실시예에 따른 RAID 시스템은, 호스트, 및 상기 호스트와 커플링되는 복수의 SSD(Solid State Drive)를 포함하되, 상기 복수의 SSD는, RAID로 구성되고, 데이터 청크를 저장하는 복수의 제1 메모리 칩과, 스페어 메모리 영역을 포함하는 제2 메모리 칩을 포함하는 비휘발성 메모리 장치, 상기 비휘발성 메모리의 RAID 동작 및 리빌드(rebuild) 동작을 제어하는 RAID 컨트롤러를 포함하되, 상기 RAID 컨트롤러는, 상기 복수의 제1 메모리 칩의 고장 확률을 모니터링하고, 상기 제1 메모리 칩의 고장 확률을 기초로 상기 복수의 제1 메모리 칩 중 두 개 이상이 미리 정한 문턱값을 만족시킨 경우 상기 두 개 이상의 제1 메모리 칩에 저장된 데이터에 대하여 제1 리빌드를 수행하여 상기 제2 메모리 칩에 저장하고, 상기 제1 리빌드의 대상이 되는 제1 메모리 칩 중 하나에 고장이 발생한 경우, 상기 스페어 메모리 칩에 저장된 데이터를 이용하여 상기 고장이 발생한 제1 메모리 칩의 데이터에 대하여 제2 리빌드를 수행한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 일 실시예에 따른 RAID 시스템의 블록도이다.
도 2는 본 발명의 일 실시예에 따른 RAID 시스템의 동작을 설명하기 위한 순서도이다.
도 3a 내지 도 3c는 본 발명의 일 실시예에 따른 RAID 시스템이 수행하는 리빌드 동작을 설명하기 위한 개념도이다.
도 4는 본 발명의 일 실시예에 따른 RAID 시스템이 수행하는 리빌드 동작을 위해 필요한 파라미터를 설명하기 위한 개념도이다.
도 5a 내지 도 5b는 본 발명의 일 실시예에 따른 RAID 시스템이 수행하는 다른 리빌드 동작을 설명하기 위한 개념도이다.
도 6a 내지 도 6b는 본 발명의 일 실시예에 따른 RAID 시스템이 수행하는 또 다른 리빌드 동작을 설명하기 위한 개념도이다.
도 7a 내지 도 7b는 본 발명의 일 실시예에 따른 RAID 시스템이 수행하는 또 다른 리빌드 동작을 설명하기 위한 개념도이다.
도 8은 본 발명의 다른 실시예에 따른 RAID 시스템을 설명하기 위한 블록도이다.
도 9는 본 발명의 일 실시예에 따른 컴퓨팅 시스템의 블록도이다.
도 2는 본 발명의 일 실시예에 따른 RAID 시스템의 동작을 설명하기 위한 순서도이다.
도 3a 내지 도 3c는 본 발명의 일 실시예에 따른 RAID 시스템이 수행하는 리빌드 동작을 설명하기 위한 개념도이다.
도 4는 본 발명의 일 실시예에 따른 RAID 시스템이 수행하는 리빌드 동작을 위해 필요한 파라미터를 설명하기 위한 개념도이다.
도 5a 내지 도 5b는 본 발명의 일 실시예에 따른 RAID 시스템이 수행하는 다른 리빌드 동작을 설명하기 위한 개념도이다.
도 6a 내지 도 6b는 본 발명의 일 실시예에 따른 RAID 시스템이 수행하는 또 다른 리빌드 동작을 설명하기 위한 개념도이다.
도 7a 내지 도 7b는 본 발명의 일 실시예에 따른 RAID 시스템이 수행하는 또 다른 리빌드 동작을 설명하기 위한 개념도이다.
도 8은 본 발명의 다른 실시예에 따른 RAID 시스템을 설명하기 위한 블록도이다.
도 9는 본 발명의 일 실시예에 따른 컴퓨팅 시스템의 블록도이다.
이하에서, 도 1 내지 도 9를 참조하여, 본 발명의 몇몇 실시예에 따른 RAID 시스템에 대해 설명하도록 한다.
도 1은 본 발명의 일 실시예에 따른 RAID 시스템의 블록도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 RAID 시스템(1)은 메모리 시스템(100) 및 RAID 컨트롤러(200)를 포함한다.
메모리 시스템(100)은 예를 들어, 복수의 비휘발성 메모리 칩들을 포함할 수 있다. 그리고 이러한 복수의 비휘발성 메모리 칩들은 예를 들어, 제1 내지 제k 채널들(CH1~CHk)을 통해 RAID 컨트롤러(200)와 통신할 수 있다.
메모리 시스템(100)에 포함된 복수의 비휘발성 메모리 칩은 예를 들어, NAND 플래시 메모리일 수 있으나 본 발명이 이에 제한되는 것은 아니다.
본 발명의 다른 몇몇 실시예에서, 메모리 시스템(100)가 포함하는 복수의 비휘발성 메모리 칩들은, 각각 하나의 SSD(Solid State Drive)일 수도 있다. 즉, 메모리 시스템(100)는 하나의 RAID로 구성된 복수의 SSD를 포함할 수 있다.
RAID 컨트롤러(200)는 호스트(HOST) 및 메모리 시스템(100)에 커플링될 수 있다. 호스트(HOST)로부터의 요청에 응답하여, RAID 컨트롤러(200)는 메모리 시스템(100)를 액세스하도록 구성될 수 있다. 예를 들어, RAID 컨트롤러(200)는 메모리 시스템(100)의 리드, 라이트, 이레이즈, 및 배경(background) 동작을 제어하도록 구성될 수 있다.
도면에 명확하게 도시하지는 않았으나, RAID 컨트롤러(200)는 메모리 시스템(100) 및 호스트(HOST) 사이에서 인터페이스를 제공하도록 구성될 수 있다. 또한, RAID 컨트롤러(200)는 메모리 시스템(100)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성될 수 있다.
예시적으로, RAID 컨트롤러(200)는 램(RAM, Random Access Memory), 프로세싱 유닛(processing unit), 호스트 인터페이스(host interface), 그리고 메모리 인터페이스(memory interface)와 같은 잘 알려진 구성 요소들을 더 포함할 수 있다. 여기서, 램(RAM)은 프로세싱 유닛의 동작 메모리, 메모리 시스템(100) 및 호스트(HOST) 사이의 캐시 메모리, 그리고 메모리 시스템 (100) 및 호스트(HOST) 사이의 버퍼 메모리 중 적어도 하나로서 이용될 수 있고, 프로세싱 유닛은 RAID 컨트롤러(200)의 제반 동작을 제어할 수 있다.
한편 본 실시예에 따른 RAID 컨트롤러(200)는, 메모리 시스템(100)에 대해 RAID 리빌드(rebuild)를 수행할 수 있다. 구체적으로, RAID 컨트롤러(200)는 메모리 시스템(100)에 대해 스트라이프(stripe) 단위로 RAID 리빌드를 수행할 수 있다. RAID 컨트롤러(200)가 메모리 시스템(100)에 대하여 수행하는 리빌드 동작과 관련하여, 이하에서 더욱 자세하게 설명한다.
호스트 인터페이스는 호스트(HOST) 및 RAID 컨트롤러(200) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함할 수 있다. 예시적으로, RAID 컨트롤러(200)는 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, 그리고 IDE (Integrated Drive Electronics) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(HOST)와 통신하도록 구성될 수 있다.
본 실시예에서, RAID 컨트롤러(200) 및 메모리 시스템(100)은 하나의 반도체 장치로 집적될 수 있다. 예시적으로, RAID 컨트롤러(200) 및 메모리 시스템(100)은 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다.
한편, RAID 컨트롤러(200) 및 메모리 시스템(100)은 하나의 반도체 장치로 집적되어 반도체 드라이브(SSD, Solid State Drive)를 구성할 수 있다. RAID 컨트롤러(200)와 메모리 시스템(100)이 하나의 반도체 장치로 집적되어 반도체 드라이브(SSD)로 이용되는 경우, 비휘발성 메모리 시스템에 연결된 호스트(HOST)의 동작 속도는 획기적으로 개선될 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니고, RAID 컨트롤러(200)와 메모리 시스템(100)은 탈착 가능하도록 물리적으로 분리되어 구성될 수 있다.
이와는 달리, RAID 컨트롤러(200) 및 메모리 시스템(100)은 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
다른 예로서, 비휘발성 메모리 시스템은 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), 3차원 수상기(3-dimensional television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등과 같은 전자 장치의 다양한 구성 요소들 중 하나로 제공될 수 있다.
예시적으로, 메모리 시스템(100) 은 다양한 형태들로 패키지화 될 수 있다. 예를 들어, 메모리 시스템(100) 은 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack Package(TQFP), Small Outline Integrated Circuit(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline Package(TSOP), Thin Quad Flatpack Package(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 방식으로 패키지화될 수 있다.
도 2는 본 발명의 실시예에 따른 RAID 시스템(1)이 수행하는 리빌드 동작을 설명하기 위한 순서도이다.
도 2를 참조하면, 본 발명의 실시예에 따른 RAID 시스템(1)은, RAID 시스템에 포함된 비휘발성 메모리의 고장 확률(failure probability)를 감지하고(S100), 비휘발성 메모리의 고장 확률이 미리 정해진 문턱값을 넘는지 여부를 결정한다(S110). 비휘발성 메모리의 고장 확률이 미리 정해진 문턱값을 넘는 경우, 고장 확률이 문턱값을 넘은 메모리의 수를 판단한다(S120).
고장 확률이 문턱값보다 큰 메모리의 수가 1 개인 경우, 해당 메모리에 저장되어 있던 데이터를 스페어 메모리에 복사한다(S130). 고장 확률이 문턱값보다 큰 메모리의 수가 1 개보다 큰 경우, 해당 메모리들에 저장되어 있던 데이터들의 패리티를 생성하여, 스페어 메모리에 저장한다(S140).
이후, 비휘발성 메모리의 고장 여부를 감지하고(S150), 타겟 메모리에 메모리 고장이 발생하는지 여부를 결정한다(S160). 여기서 타겟 메모리는, 앞서 고장 확률이 문턱값보다 큰 것으로 판단된 메모리를 의미한다.
메모리 고장의 감지 결과 타겟 메모리에 고장이 발생한 경우, 스페어 메모리에 저장된 데이터를 이용하여 고장이 발생한 메모리의 데이터를 리빌드한다(S170). 이와는 달리, 고장이 발생한 메모리가 타겟 메모리에 해당하지 않는 경우, 모든 메모리의 데이터 및 이에 대응하는 패리티를 이용하여 고장이 발생한 메모리의 데이터를 리빌드한다(S180).
이하, 도 3a 내지 도 3c를 이용하여 본 발명의 실시예에 따른 RAID 시스템(1)의 리빌드 과정을 설명한다.
도 3a 내지 도 3c는 본 발명의 일 실시예에 따른 RAID 시스템이 수행하는 리빌드 동작을 설명하기 위한 개념도이다.
도 3a을 참조하면, 본 발명의 일 실시예에 따른 RAID 시스템(1)에 포함된 메모리 시스템(100)은 데이터를 저장되는 복수의 메모리 칩(CHIP1~CHIP9)을 포함할 수 있다. 더욱 구체적으로, 메모리 시스템(100)은 데이터 청크(DATA CHUNK) 및 패리티(PARITY)를 저장하고 있는 8 개의 비휘발성 메모리(CHIP1~CHIP8)와, 비휘발성 메모리(CHIP1~CHIP8)의 고장 발생 시 해당 비휘발성 메모리에 저장된 데이터를 리빌드하기 위한 스페어 메모리(CHIP9)를 포함할 수 있다.
본 발명의 몇몇 실시예에서, 데이터를 저장하기 위한 8 개의 비휘발성 메모리(CHIP1~CHIP8)의 개수는 예시적인 것이며, 본 발명이 이에 제한되는 것은 아니다. RAID 시스템의 구성에 따라, 데이터 청크를 구성하는 데이터가 저장되는 비휘발성 메모리의 개수는 얼마든지 달라질 수 있음은 통상의 기술자에게 자명할 것이다.
또한, 본 발명의 몇몇 실시예에서, 고장이 발생한 해당 비휘발성 메모리에 저장된 데이터를 리빌드하기 위한 스페어 메모리의 개수는 1개보다 클 수 있다. 즉, 메모리 시스템(100)은 본 발명의 일 실시예에 따른 RAID 시스템(1)에 포함된 복수의 메모리 칩(CHIP1~CHIP8) 중 두 개의 메모리 칩에 고장이 발생한 경우에, 고장이 발생한 2 개의 메모리 칩을 리빌드하기 위한 2개의 스페어 메모리를 포함할 수 있다.
이를 위하여, 데이터가 저장된 복수의 메모리 칩(CHIP1~CHIP8)은 P 패리티에 더하여 Q 패리티를 더 저장하도록 구성될 수 있다. 이 때, Q 패리티는 P 패리티와는 다른 종류일 수 있으며, 다시 말하면 Q 패리티를 생성하는 방법은 데이터 청크에 대한 P 패리티를 형성하는 방법과는 다를 수 있다.
본 발명의 일 실시예에 따른 RAID 시스템에 포함된 각각의 비휘발성 메모리 칩(CHIP1~CHIP9)은, 도 3a 내지 도 3c에 도시된 데이터 구조에서 각각의 행(row)으로 구분되는 스트라이프(stripe)를 포함할 수 있다. 본 발명의 일 실시예에서, 하나의 스트라이프는 7 개의 데이터 청크(DATA CHUNK)와, 7개의 데이터 청크(DATA CHUNK)에 대응하여 생성되고 저장된 1 개의 패리티(PARITY)를 포함할 수 있다.
도 3a 내지 도 3c에서, 예를 들어, 7 개의 데이터 청크(D1~D7)가 제1 내지 제7 메모리 칩(CHIP1~CHIP7)에 저장되고, 데이터 청크(D1~D7)에 대응하는 패리티(P1-7)가 생성되어 제8 메모리 칩(CHIP8)에 저장된다. 패리티(P1-7)는 예를 들어, 7 개의 데이터 청크(D1~D7)를 XOR 연산하여 생성된 패리티일 수 있다.
그 밖에 제1 내지 제8 메모리 칩(CHIP1~CHIP8)에는 복수의 데이터 청크들(D8~D55)과, 이에 대응하는 패리티들(P8-14, P22-28, ... P43-49, P50-56)이 저장될 수 있다.
제9 메모리 칩(CHIP9)에는, 메모리 시스템(100)이 리빌드 동작이 수행되기 전에 스페어 영역(S)이 할당된다. 즉, 제9 메모리 칩(CHIP9)의 스페어 영역(S)은 메모리 시스템(100)의 리빌드 동작이 개시된 후 리빌드 대상이 되는 데이터가 저장되어야 하므로, 리빌드 개시 이전에는 비어 있는 영역이다. 이하에서, 리빌드 동작 개시 전 스페어 영역(S)이 할당되는 제9 메모리 칩(CHIP9)를 스페어 메모리 칩으로 지칭한다.
한편, 위에서 설명한 것과 같이 메모리 시스템(100)은 하나의 반도체 장치로 집적될 수 있으므로, 제1 내지 제9 메모리 칩(CHIP1~CHIP9)은 그 명칭과는 달리 하나의 반도체 패키지 안에 집적되어 있는 복수의 메모리 셀을 가리키는 것일 수도 있음은 비휘발성 메모리 분야의 통상의 기술자에게 자명할 것이다.
다시 도 2를 참조하면, 본 발명의 실시예에 따른 RAID 시스템(1)은 고장 확률을 감지한다(S100). 더욱 구체적으로, RAID 컨트롤러(200)는 메모리 시스템(100)에 포함된 각각의 메모리 칩(CHIP1~CHIP9)의 고장 확률을 계산하여 계산된 고장 확률이 문턱값(threshold)을 넘었는지 여부를 결정한다. RAID 컨트롤러(200)의 고장 확률 계산과 관련하여, 도 4를 참조하여 설명한다.
도 4는 본 발명의 일 실시예에 따른 RAID 시스템이 수행하는 리빌드 동작을 위해 필요한 파라미터를 설명하기 위한 개념도이다.
도 4를 참조하면, 메모리 칩(예를 들어 CHIP1)은 예를 들어, NAND 메모리 상태, NAND 마모도 레벨 등 메모리 칩(CHIP1)에 포함된 NAND 메모리 셀의 내구도 또는 이의 건강(health)과 관련된 파라미터를 RAID 컨트롤러(200)에 제공할 수 있다.
RAID 컨트롤러(200)는, 메모리 칩(CHIP1)으로부터 제공받은 해당 메모리 칩(CHIP1)의 상태 정보를 이용하여 메모리 칩(CHIP1)의 고장 확률을 계산할 수 있다. 본 발명의 몇몇 실시예에서, RAID 컨트롤러(200)는 메모리 칩(CHIP1)으로부터 제공받은 상태 정보와, RAID 컨트롤러(200)가 메모리 칩(CHIP1)을 제어하기 위하여 필요한 정보, 예를 들어 P/E(Program/Erase) Cycle, 고칠 수 없는 에러 카운트(Uncorrectable error count) 등의 정보를 이용하여 메모리 칩(CHIP1)의 고장 확률을 계산할 수 있다.
RAID 컨트롤러(200)는 메모리 시스템(100)에 포함된 메모리 칩(CHIP1~CHIP9) 별로 고장 확률을 계산하고, 이를 저장할 수 있다. 또한 RAID 컨트롤러(200)는 메모리 칩(CHIP1~CHIP9)의 고장 확률을 일정한 주기 마다 계산하여 저장할 수도 있다. 이와는 반대로, RAID 컨트롤러(200)는 메모리 칩(CHIP1~CHIP9)의 데이터 전송 또는 이벤트 발생 시 마다 고장 확률을 새로이 계산하여 저장할 수도 있다.
다시 도 3a를 참조하면, 위의 과정을 통하여 RAID 컨트롤러(200)가 계산한 메모리 칩(CHIP1~CHIP9)들의 고장 확률(Failure Probability)가 메모리 칩(CHIP1~CHIP9)에 저장된 데이터 구조와 함께 도시되었다. 물론, 도 3a에 도시된 각각의 칩들(CHIP1~CHIP9)의 고장 확률은 예시적인 것이며, 본 발명의 내용을 제한하는 것은 아니다.
RAID 컨트롤러(200)는, 메모리 칩들(CHIP1~CHIP9)의 고장 확률과는 별도로 고장 확률의 문턱값(threshold)를 미리 정하여 저장할 수 있다. 메모리 칩들(CHIP1~CHIP9)의 고장 확률이 문턱값보다 커지는 경우 문턱값을 초과하는 고장 확률을 갖는 메모리 칩을 대상으로 제1 리빌드를 수행할 수 있다. 이하에서 본 발명의 실시예에 따른 RAID 시스템(1)에 포함된 메모리 칩들(CHIP1~CHIP9)의 고장 확률의 문턱값은 예시적으로 0.1로 설정된 것으로 설명한다.
본 발명의 몇몇 실시예에서, 제1 리빌드는 메모리 칩(CHIP1~CHIP8)에 고장 확률이 미리 정한 문턱값을 초과하는 것으로 계산된 경우, 메모리 칩(CHIP1~CHIP8)의 고장에 대비하여 스페어 영역(S)이 할당된 메모리 칩(CHIP9)에 미리 데이터를 저장하는 과정을 의미한다.
도 3a에 도시된 것과 같이, 메모리 칩(CHIP1~8)들 가운데 제6 메모리 칩(CHIP6)의 고장 확률이 0.11로 미리 정한 문턱값(0.1)을 넘고, 제6 메모리 칩(CHIP6)이 제1 리빌드가 수행될 메모리 칩으로 결정된다.
다음으로, 고장 확률이 미리 정한 문턱값을 넘어 제1 리빌드가 수행될 메모리 칩으로 결정된 메모리 칩의 수를 판단한다(S120).
고장 확률이 문턱값보다 큰 메모리 칩의 개수를 N이라 할 때, N이 1인 경우(N = 1), 해당 메모리 칩에 저장된 데이터를 스페어 메모리 칩에 복사한다(S130). 이는 도 3b에 도시된 데이터 구조를 이용하여 설명한다.
도 3b를 참조하면, 제1 리빌드의 대상이 되는 제6 메모리 칩(CHIP6)에 저장된 데이터(10)가 스페어 영역(S)으로 할당되었던 스페어 메모리(CHIP9)로 복사되어 제공되고, 스페어 메모리(CHIP9)는 제공된 데이터(11)를 스페어 영역(S)에 각각 저장한다. 이로서, 메모리 칩(CHIIP1~9)에 대한 제1 리빌드가 완료될 수 있다.
제1 리빌드 과정이 종료되면, RAID 컨트롤러(200)는 메모리 칩(CHIP1~CHIP8)의 고장 발생 여부를 감지한다(S150, S160). 제1 리빌드가 수행되었던 타겟 메모리(CHIP6)에 고장 발생이 감지된 경우, 스페어 메모리(CHIP9)에 저장되어 있는 데이터(11)를 이용하여 고장이 발생한 메모리 칩(CHIP6)의 데이터를 복구하는 제2 리빌드를 수행한다(S170).
여기서, 앞에서 설명한 것과 같이 하나의 메모리 칩(CHIP6)에 대하여 제1 리빌드가 수행된 경우, 메모리 칩(CHIP6)에 저장된 데이터를 스페어 메모리 칩(CHIP9)으로 직접 복사하였으므로, 스페어 메모리(CHIP9)에 저장된 데이터에 대하여 별도의 리빌드 작업을 수행할 필요가 없다. 따라서 메모리 칩(CHIP6)의 고장 발생과 동시에 스페어 메모리 칩(CHIP9)에 고장이 발생한 메모리 칩(CHIP6)에 저장되어 있던 데이터의 제2 리빌드가 완료될 수 있다.
한편, 앞에서 설명한 경우와는 달리 고장이 발생한 메모리 칩이 제1 리빌드가 수행되었던 타겟 메모리 칩(CHIP6)이 아닌 경우, 고장이 발생한 메모리 칩을 제외한 모든 메모리 칩을 이용하여 고장이 발생 메모리 칩에 대한 제2 리빌드를 수행한다. 예를 들어, 제5 메모리 칩(CHIP5)에 고장이 발생한 경우, 정상적인 메모리 칩들(CHIP1~CHIP4, CHIP6~CHIP8)에 저장된 데이터 청크(DATA CHUNK)와 이에 대응하는 패리티(PARITY)를 이용하여 제2 리빌드를 수행하고, 제2 리빌드의 결과 복구된 제5 메모리 칩(CHIP5)의 데이터를 스페어 메모리 칩(CHIP9)에 저장한다.
본 발명의 일 실시예에 따른 RAID 시스템(1)은, 복수의 비휘발성 메모리를 묶어 데이터 액세스 요청에 따라 동시에 복수의 비휘발성 메모리로 입출력을 할 수 있도록 구성된다. 이는 단일의 시스템 구성보다는 빠르지만, 데이터를 내부적 또는 외부적으로 액세스할 수 있는 입출력(I/O) 대역폭(bandwidth) 또는 쓰루풋(throughput)에는 한계가 존재한다.
RAID 시스템(1)에서 리빌드 동작이 수행되는 경우, RAID 시스템(1) 외부로는 드러나지 않지만 내부적으로 손상된 비휘발성 메모리의 데이터를 리빌드하여 저장하기 위한 데이터의 리드(read), 라이트(write) 동작 및 패리티와 비교하는 동작이 지속적으로 수행될 것이다. 따라서 리빌드 동작은 호스트(HOST)로부터의 메모리 장치(100)의 접근에 대한 대역폭 및 응답 속도에 영향을 미칠 수 있다.
지금까지 설명한 것과 같이, 본 발명의 실시예에 따른 RAID 시스템(1)은 메모리 칩의 고장 확률을 기초로 메모리 칩의 고장 발생 전에 제1 리빌드를 수행한다. 고장 확률이 미리 정한 문턱값을 넘은 메모리 칩(타겟 메모리)의 개수(N)가 1인 경우, 타겟 메모리에 저장되어 있던 데이터는 스페어 메모리에 복사될 수 있다.
이후, 타겟 메모리에서 고장이 발생한 경우, 제2 리빌드가 수행될 수 있다. 제2 리빌드는 타겟 메모리에 저장되어 있던 데이터를 스페어 메모리에 복구하는 작업이므로, 상기의 경우에는 별도의 연산 없이 제2 리빌드가 완료되어 데이터 리빌드가 매우 빠르게 완료될 수 있다.
제1 리빌드가 수행될 메모리 칩으로 결정된 메모리 칩의 수 N이 1보다 큰 경우(N > 1)와 관련하여, 이하 도 5a 내지 도 5b를 이용하여 더욱 자세하게 설명한다.
도 5a 내지 도 5b는 본 발명의 일 실시예에 따른 RAID 시스템이 수행하는 다른 리빌드 동작을 설명하기 위한 개념도이다.
도 5a 및 5b를 참조하면, 본 발명의 일 실시예에 따른 RAID 시스템(1)에 포함된 메모리 시스템(100)에서, 제4 메모리 칩(CHIP4)과 제6 메모리 칩(CHIP6)의 고장 확률이 문턱값(0.1)을 넘은 것으로 감지된다. 도 5a 및 도 5b를 참조하여 기술되는 RAID 시스템(1)의 동작에서, 예시적으로 N = 2인 것으로 설명된다. 따라서, 제4 메모리 칩(CHIP4)과 제6 메모리 칩(CHIP6)에 대하여 제1 리빌드가 수행될 필요가 있다.
제1 리빌드가 수행될 메모리 칩으로 결정된 메모리 칩의 수 N이 1보다 큰 경우(N > 1)에는, 앞서 설명한 RAID 시스템(1)의 동작과 같이 타겟 메모리의 데이터를 그대로 스페어 메모리에 복사하는 것은 불가능하다. 따라서 RAID 컨트롤러(200)는, 제4 메모리 칩(CHIP4)의 데이터(21)와 제6 메모리 칩(CHIP6)의 데이터(20)를 이용하여 패리티를 생성하고, 생성된 패리티를 스페어 메모리(CHIP9)에 저장함으로써(S140) 제1 리빌드를 수행한다.
제4 메모리 칩(CHIP4)의 데이터(21)와 제6 메모리 칩(CHIP6)의 데이터(20)의 패리티를 생성하는 것은, 두 데이터(21, 20)를 XOR 연산하는 것일 수 있으나 본 발명이 이에 제한되는 것은 아니다.
한편, 본 발명의 몇몇 실시예에서, 제4 메모리 칩(CHIP4)의 데이터(21)와 제6 메모리 칩(CHIP6)의 데이터(20)의 제1 리빌드를 수행할 때, 제4 또는 제6 메모리 칩에 저장된 데이터 중 패리티에 해당하는 부분은 제외하고 스페어 메모리(CHIP9)에 저장할 수 있다.
그 이유는 다음과 같다. 두 개의 메모리 칩(CHIP4, CHIP6)에 저장된 데이터 가운데, 하나의 스트라이프의 데이터를 제1 리빌드하여 스페어 메모리(CHIP9)에 저장하는 것은, 두 번의 데이터 읽기와, 한 번의 패리티 생성 연산과, 한번의 쓰기 연산을 필요로 할 수 있다.
예를 들어, RAID 컨트롤러(200)는 동일한 스트라이프 내의 제4 메모리 칩(CHIP4)에 저장된 데이터(D4)와 제6 메모리 칩(CHIP6)에 저장된 데이터(D6)를 읽고, 패리티(P4, 6)를 생성하여 스페어 메모리 칩(CHIP9)에 쓰는 동작을 수행한다.
한편, RAID 컨트롤러(200)는 제4 메모리 칩(CHIP4)에 저장된 데이터(D18)와 제6 메모리 칩(CHIP6)에 저장된 데이터(P15-21)의 경우, 두 데이터에 대한 패리티를 생성하는 것 대신에, 제4 메모리 칩(CHIP4)에 저장된 데이터(D18)를 스페어 메모리(CHIP9)로 저장할 수 있다. 이를 통해, 한번의 패리티 생성 연산의 과정이 생략됨으로써, RAID 시스템(1)의 제1 리빌드 과정에 소요되는 시간을 단축시킬 수 있다.
스페어 메모리(CHIP9)에 패리티에 해당하는 부분을 제외하고 저장하더라도 메모리 칩 고장 발생 시 수행되는 제2 리빌드에 의하여 복구되는 데이터의 무결성은 보장될 수 있다.
즉, 본 실시예에서, 제4 메모리(CHIP4)에 고장이 발생한 경우 스페어 메모리(CHIP9)에 이미 저장된 데이터(D18)을 이용하여 추가적인 연산 없이 제2 리빌드를 완료할 수 있다. 또한, 제6 메모리 칩(CHIP6)에 고장이 발생한 경우 제6 메모리 칩(CHIP6)을 제외한 모든 메모리 칩에 저장된 데이터(D15~D21)를 이용하여 제6 메모리 칩(CHIP6)에 저장되어있던 패리티(P15-21)를 생성하는 제2 리빌드가 수행되고, 제6 메모리 칩(CHIP6)의 데이터가 복구될 수 있다.
한편, 동작 도중 고장이 발생한 메모리 칩이 상기 설명한 두 개의 타겟 메모리(CHIP4, CHIP6)가 아닌 경우, 메모리 시스템(100)에 속한 메모리 전체를 대상으로 제2 리빌드가 수행될 수 있다.
위에서 설명한 것과 같이 두 개의 메모리 칩(CHIP4, CHIP6)에 대하여 제1 리빌드가 수행하는 것에 의하여, 타겟 메모리가 2개 설정된다. 타겟 메모리가 2개로 됨으로써, 전체 메모리 칩 중 고장이 발생한 메모리 칩이 제1 리빌드가 수행된 메모리 칩일 가능성도 2 배로 증가할 수 있다.
도 6a 내지 도 6b는 본 발명의 일 실시예에 따른 RAID 시스템이 수행하는 또 다른 리빌드 동작을 설명하기 위한 개념도이다.
도 6a 및 도 6b를 참조하면, 본 발명의 일 실시예에 따른 RAID 시스템이 수행하는 리빌드 동작은, N = 3인 경우에도 이전의 실시예에 따른 RAID 시스템이 수행하는 것과 실질적으로 유사한 방식으로 수행될 수 있다.
본 발명의 일 실시예에 따른 RAID 시스템(1)에 포함된 메모리 시스템(100)에서, 제3 메모리 칩(CHIP3), 제4 메모리 칩(CHIP4) 및 제6 메모리 칩(CHIP6)의 고장 확률이 문턱값(0.1)을 넘은 것으로 감지된다. 따라서 세 개의 메모리 칩(CHIP3, CHIP4, CHIP6)에 대하여 제1 리빌드가 수행될 필요가 있다.
앞서와 마찬가지로, 제1 리빌드가 수행될 메모리 칩으로 결정된 메모리 칩의 수(N=3)가 1보다 크기 때문에, RAID 컨트롤러(200)는 제3 메모리 칩(CHIP3)의 데이터(32), 제4 메모리 칩(CHIP4)의 데이터(31) 및 제6 메모리 칩(CHIP6)의 데이터(30)를 이용하여 패리티를 생성하고, 생성된 패리티를 스페어 메모리(CHIP9)에 저장함으로써 제1 리빌드를 수행한다.
본 발명의 일 실시예에 따른 RAID 시스템(1)이 수행하는 다른 리빌드 동작에서, 제3 메모리 칩(CHIP3), 제4 메모리 칩(CHIP4) 및 제6 메모리 칩(CHIP6)의 데이터들(32, 31, 30) 가운데 패리티에 해당하는 부분은 제외하고 스페어 메모리(CHIP9)에 저장될 수 있다.
예를 들어, 하나의 스트라이프 내에 포함된 데이터들(D17, D18, P15-21)의 경우, 스페어 메모리(CHIP9)에 저장되는 데이터는 P15-21를 제외한 D17 및 D18에 대하여 패리티를 연산하여 생성한 P17, 18에 해당한다.
이로 인하여, 패리티에 해당하는 부분을 연산하지 않아 데이터들(30, 31, 32)의 제1 리빌드 작업에 필요한 시간이 감소될 수 있다.
이어서, 제3 메모리 칩(CHIP3)에 고장이 발생한 경우, 제1 리빌드를 통해 스페어 메모리(CHIP9)에 저장된 데이터(34)와, 제4 메모리 칩(CHIP4) 및 제6 메모리 칩(CHIP6)에 저장된 데이터들(31, 30)을 이용하여 제3 메모리 칩(CHIP3)에 저장된 데이터(32)를 복구하기 위한 제2 데이터 리빌드가 수행된다.
본 발명의 몇몇 실시예에서, 도 5a 내지 5b를 이용하여 설명된 RAID 시스템(1)이 수행하는 리빌드 동작과, 도 6a 내지 6b를 이용하여 설명된 RAID 시스템(1)이 수행하는 리빌드 동작은, 동일한 시퀀스(sequence)에서 수행될 수 있다.
즉, 제1 리빌드의 대상이 되는 메모리 칩의 개수 N = 2경우에 두 개의 메모리 칩에 대하여 제1 리빌드 동작이 수행되고, 제1 리빌드를 통해 두 개의 메모리 칩에 저장된 데이터의 패리티가 저장되고 스페어 메모리(CHIP9)에 저장된다.
이어서, RAID 컨트롤러(200)는 메모리 시스템(100)에 포함된 메모리 칩들의 고장 확률을 모니터링하고, 메모리 칩의 고장 확률이 미리 정한 문턱값을 넘는 메모리 칩이 추가적으로 감지되는 경우, 해당 메모리 칩을 새로운 타겟 메모리로 포함시킨 후 제1 리빌드를 수행할 수 있다.
도 5a에서 제4 메모리(CHIP4) 및 제6 메모리(CHIP6)가 타겟 메모리로 지정되어 제1 리빌드가 수행되고 스페어 메모리(CHIP9)에 제4 메모리(CHIP4)와 제6 메모리(CHIP6)에 저장된 데이터의 패리티가 저장된다. 이 때, 추가적으로 문턱값(0.1)을 넘는 메모리 칩(CHIP3)이 발견되는 경우, RAID 컨트롤러(200)는 메모리 칩(CHIP3)의 데이터(예를 들어 D3)와 스페어 메모리(CHIP9)에 저장된 데이터(예를 들어 P4, 6) 사이에 패리티 연산을 수행한다. 이를 통해 문턱값을 넘는 메모리 칩들(CHIP3, CHIP4, CHIP6)의 패리티를 다시 생성하도록 제1 리빌드를 수행할 수 있다.
도 7a 내지 도 7b는 본 발명의 일 실시예에 따른 RAID 시스템이 수행하는 또 다른 리빌드 동작을 설명하기 위한 개념도이다.
도 7a 및 7b를 참조하면, 본 발명의 일 실시예에 따른 RAID 시스템에 포함된 메모리 시스템은, 데이터 청크 및 패리티를 저장하기 위한 메모리 칩들(CHIP1~CHIP16)과, 제1 리빌드 및 제2 리빌드를 수행하고 리빌드된 데이터를 저장하기 위한 스페어 메모리(CHIP17)를 포함할 수 있다.
본 발명의 몇몇 실시예에서, RAID 컨트롤러(200)는 제1 리빌드를 수행하기 위한 타겟 메모리로 고장 확률이 높은 메모리들을 선택할 수 있다.
즉, 앞서 설명한 실시예에서 RAID 컨트롤러(200)가 미리 정해진 고장 확률의 문턱값을 기준으로 제1 리빌드가 수행되는 메모리 칩을 선택하였다. 반면에, 본 실시예에서 RAID 컨트롤러(200)는 제1 리빌드가 수행되는 메모리 칩을 선택하기 위하여, 고장 확률이 높은 N 개(예를 들어, N = 4)의 메모리 칩(CHIP3, CHIP4, CHIP6, CHIP15)들에 대하여 제1 리빌드를 수행할 수 있다.
따라서, 본 실시예에서는 각 메모리 칩들의 고장 확률이 문턱값을 넘는 것을 감지하지 않고, 고장 확률이 높은 N 개의 메모리 칩을 선택하여 제1 리빌드를 수행한다. 따라서, 제3 메모리 칩(CHIP3)에 저장된 데이터(42), 제4 메모리 칩(CHIP4)에 저장된 데이터(41), 제6 메모리 칩(CHIP6)에 저장된 데이터(40) 및 제15 메모리 칩(CHIP15)에 저장된 데이터(43)에 대하여 패리티를 생성하고, 스페어 메모리(CHIP17)에 생성된 패리티(44)를 저장한다.
이후에 예를 들어, 제1 리빌드의 대상이 되었던 제3 메모리 칩(CHIP3)에 고장이 발생한 경우, 제4 메모리 칩(CHIP4), 제6 메모리 칩(CHIP6), 제15 메모리 칩(CHIP15)에 저장된 데이터들(41, 40, 43)과 제1 리빌드에 의해 저장된 데이터(44)를 이용하여 제3 메모리 칩(CHIP3)의 데이터를 복구하는 제2 리빌드를 수행한다.
도 8은 본 발명의 또 다른 실시예에 따른 RAID 시스템(3)의 블록도이다.
도 8을 참조하면, 본 발명의 또 다른 실시예에 따른 RAID 시스템(3)은 호스트(300), SSD(150, 250, 350, 450) 및 버스(600)를 포함한다.
본 발명의 또 다른 실시예에 따른 RAID 시스템(3)의 호스트(300)는 도 1을 참조하여 설명한 RAID 컨트롤러(200)와 실질적으로 동일하게 구성 및 동작할 수 있다.
SSD(250)는 복수의 메모리 칩(125, 135, 145, 155), 메모리 컨트롤러(110)를 포함할 수 있다.
메모리 컨트롤러(110)는 복수의 메모리 칩(125, 135, 145, 155)을 제어할 수 있다. 본 발명의 몇몇 실시예에서, 복수의 메모리 칩(125, 135, 145, 155)은 앞서의 실시예에서 설명한 RAID 시스템(1)에 포함된 메모리 시스템(100)에 포함된 비휘발성 메모리들과 구성 및 동작이 동일할 수 있다. 따라서 메모리 컨트롤러(110)에 의하여 복수의 메모리 칩(125, 135, 145, 155)를 대상으로 RAID 시스템이 구성될 수 있다.
또한, 복수의 메모리 칩(125, 135, 145, 155)는 데이터 청크 및 패리티(P)가 저장되는 메모리 칩과, 스페어 메모리 칩을 포함할 수 있다. 메모리 컨트롤러(110)는 이와 같이 구성된 RAID 시스템을 대상으로 각각의 메모리 칩의 고장 확률을 모니터링하고, 메모리 칩의 고장 확률이 미리 정한 문턱값을 만족시킨 경우 메모리 칩에 저장된 데이터에 대하여 제1 리빌드를 수행하여 스페어 메모리 칩에 저장할 수 있다. 또한, 복수의 메모리 칩(125, 135, 145, 155) 중 하나에 고장이 발생한 경우, 스페어 메모리 칩에 저장된 데이터를 이용하여 고장이 발생한 메모리 칩의 데이터를 복구하는 제2 리빌드를 수행할 수 있다.
또한, 호스트(300)에 연결된 각각의 SSD를 대상으로 RAID 시스템이 구성될 수 있다. 즉, SSD(150, 250, 350, 450)는 데이터 청크 및 패리티 비트를 저장하는 SSD와, 스페어 SSD를 포함할 수 있다. 호스트(300)는 이와 같이 구성된 RAID 시스템을 대상으로 SSD의 고장 확률을 모니터링하고, SSD의 고장 확률에 따라 제1 리빌드를 수행하고, SSD의 고장 발생 시 이를 복구하기 위한 제2 리빌드를 수행할 수도 있다.
호스트(300)가 SSD의 고장 확률을 모니터링하는 것은 SSD의 S.M.A.R.T(Self-Monitoring, Analysis and Reporting Technology) 정보를 모니터링하는 것일 수 있다. 더욱 구체적으로, 호스트(300)는 S.M.A.R.T 정보 중 재할당된 섹터수(reallocated sector count), 로우 읽기 에러 발생 비율(raw read error rate) 등의 수치를 모니터링하고, 이들 수치가 소정의 기준값을 넘는 경우에 고장 확률을 계산하고, 고장 여부를 결정할 수 있다.
다음 도 9를 참조하여, 본 발명의 일 실시예에 따른 컴퓨팅 시스템에 대해 설명한다.
도 9는 본 발명의 일 실시예에 따른 컴퓨팅 시스템의 블록도이다.
도 9를 참조하면, 컴퓨팅 시스템(900)은 중앙 처리 장치(910), 램(920, RAM, Random Access Memory), 사용자 인터페이스(930), 전원(940), 그리고 메모리 시스템(800)을 포함할 수 있다.
여기서, 메모리 시스템(800)은 앞서 설명한 실시예들에 따라 컨트롤러(820)가 비휘발성 메모리 장치(810)를 컨트롤하는 시스템일 수 있다. 이러한 메모리 시스템(800)은 시스템 버스(950)를 통해, 중앙처리장치(910), 램(920), 사용자 인터페이스(930), 그리고 전원(940)에 전기적으로 연결될 수 있다. 그리고, 사용자 인터페이스(930)를 통해 제공되거나, 중앙 처리 장치(910)에 의해서 처리된 데이터는 메모리 시스템(800)에 저장될 수 있다.
비록 도 9에서는, 비휘발성 메모리 장치(810)가 컨트롤러(820)를 통해 시스템 버스(950)에 연결되는 것으로 도시되어 있으나, 본 발명의 몇몇 실시예에 따른 컴퓨팅 시스템에서, 비휘발성 메모리 장치(810)는 시스템 버스(950)에 직접 연결되도록 구성될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 메모리 시스템 200: RAID 컨트롤러
300: 호스트 150, 250, 350, 450: SSD
800: 메모리 시스템 900: 컴퓨팅 시스템
930: 사용자 인터페이스 940: 전원
300: 호스트 150, 250, 350, 450: SSD
800: 메모리 시스템 900: 컴퓨팅 시스템
930: 사용자 인터페이스 940: 전원
Claims (15)
- RAID(Redundant Array of Inexpensive Disk)로 구성되고, 데이터 청크를 저장하는 복수의 제1 메모리 칩과, 스페어 메모리 영역이 정의되는 제2 메모리 칩을 포함하는 비휘발성 메모리 장치;
상기 비휘발성 메모리 장치의 RAID 동작 및 리빌드(rebuild) 동작을 제어하는 RAID 컨트롤러를 포함하되,
상기 RAID 컨트롤러는,
상기 복수의 제1 메모리 칩의 고장 확률(failure probability)을 모니터링하고,
상기 제1 메모리 칩의 고장 확률을 기초로 상기 복수의 제1 메모리 칩 중 두 개 이상이 미리 정한 문턱값을 만족시킨 경우 상기 두 개 이상의 제1 메모리 칩에 저장된 데이터에 대하여 제1 리빌드를 수행하여 상기 제2 메모리 칩에 저장하고,
상기 제1 리빌드의 대상이 되는 제1 메모리 칩 중 하나에 고장(failure)이 발생한 경우, 상기 제2 메모리 칩에 저장된 데이터를 이용하여 상기 고장이 발생한 제1 메모리 칩의 데이터에 대하여 제2 리빌드를 수행하는 RAID 시스템. - 제 1항에 있어서,
상기 두 개 이상의 제1 메모리 칩에 대하여 상기 제1 리빌드를 수행하는 것은,
상기 두 개 이상의 제1 메모리에 저장된 데이터에 대응하는 패리티를 생성하여 상기 제2 메모리 칩에 저장하는 것을 포함하는 RAID 시스템. - 제 2항에 있어서,
상기 두 개 이상의 제1 메모리에 저장된 데이터에 대응하는 패리티를 생성하는 것은,
상기 두 개 이상의 제1 메모리 칩에 저장된 데이터를 XOR 연산하는 것을 포함하는 RAID 시스템. - 제 2항에 있어서,
상기 복수의 제1 메모리 칩은 상기 데이터 청크에 대응하는 패리티를 더 저장하고,
상기 두 개 이상의 제1 메모리 칩에 대하여 상기 제1 리빌드를 수행하는 것은,
상기 두 개 이상의 제1 메모리 칩에 저장된 상기 데이터 청크에 대응하는 패리티를 제외하고 상기 제2 메모리 칩에 저장하는 것을 포함하는 RAID 시스템. - 제 1항에 있어서,
상기 RAID 컨트롤러가 상기 두 개 이상의 제1 메모리 칩에 저장된 데이터에 대하여 제1 리빌드를 수행하는 것은,
상기 복수의 제1 메모리 칩에 고장이 발생하기 전인 RAID 시스템. - 제 1항에 있어서,
상기 RAID 컨트롤러는,
상기 두 개 이상의 제1 메모리 칩에 대하여 상기 제1 리빌드를 수행한 후,
상기 미리 정한 문턱값을 만족하는 상기 제1 메모리 칩을 추가적으로 감지한 경우,
상기 제2 메모리 칩에 저장된 상기 제1 리빌드된 데이터와, 상기 추가적으로 감지된 제1 메모리 칩 간의 패리티 계산을 수행하여 상기 제2 메모리 칩에 저장하는 RAID 시스템. - 제 1항에 있어서,
상기 RAID 컨트롤러가 상기 제2 리빌드를 수행하는 것은,
상기 제2 메모리 칩에 저장된 데이터와,
상기 제1 리빌드가 수행된 상기 두 개 이상의 제1 메모리 칩 중 상기 고장이 발생한 제1 메모리 칩을 제외한 나머지 제1 메모리 칩에 저장된 데이터를 이용하여 패리티를 계산하는 것을 포함하는 RAID 시스템. - 제 1항에 있어서,
상기 RAID 컨트롤러가 복수의 제1 메모리 칩의 고장 확률을 모니터링하는 것은,
상기 비휘발성 메모리 장치로부터 제공받은 제1 정보와, 상기 RAID 컨트롤러가 상기 비휘발성 메모리 장치에 대하여 생성하는 제2 정보를 이용하여 상기 복수의 제1 메모리 칩의 고장 확률을 계산하는 것을 포함하는 RAID 시스템. - 제 8항에 있어서,
상기 제1 정보는 NAND 메모리 상태 또는 NAND 마모도 레벨 중 적어도 하나를 포함하고,
상기 제2 정보는 P/E(Program/Erase) Cycle, 고칠 수 없는 에러 카운트 중 적어도 하나를 포함하는 RAID 시스템. - 호스트; 및
상기 호스트와 커플링되는 복수의 SSD(Solid State Drive)를 포함하되,
상기 복수의 SSD는,
RAID로 구성되고, 데이터 청크를 저장하는 복수의 제1 메모리 칩과, 스페어 메모리 영역을 포함하는 제2 메모리 칩을 포함하는 비휘발성 메모리 장치,
상기 비휘발성 메모리의 RAID 동작 및 리빌드(rebuild) 동작을 제어하는 RAID 컨트롤러를 포함하되,
상기 RAID 컨트롤러는,
상기 복수의 제1 메모리 칩의 고장 확률을 모니터링하고,
상기 제1 메모리 칩의 고장 확률을 기초로 상기 복수의 제1 메모리 칩 중 두 개 이상이 미리 정한 문턱값을 만족시킨 경우 상기 두 개 이상의 제1 메모리 칩에 저장된 데이터에 대하여 제1 리빌드를 수행하여 상기 제2 메모리 칩에 저장하고,
상기 제1 리빌드의 대상이 되는 제1 메모리 칩 중 하나에 고장이 발생한 경우, 상기 스페어 메모리 영역에 저장된 데이터를 이용하여 상기 고장이 발생한 제1 메모리 칩의 데이터에 대하여 제2 리빌드를 수행하는 RAID 시스템. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160158487A KR102665540B1 (ko) | 2016-11-25 | 2016-11-25 | 비휘발성 메모리를 포함하는 raid 시스템 |
US15/673,942 US10430278B2 (en) | 2016-11-25 | 2017-08-10 | RAID system including nonvolatile memory and operating method of the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160158487A KR102665540B1 (ko) | 2016-11-25 | 2016-11-25 | 비휘발성 메모리를 포함하는 raid 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180059201A KR20180059201A (ko) | 2018-06-04 |
KR102665540B1 true KR102665540B1 (ko) | 2024-05-10 |
Family
ID=62190799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160158487A KR102665540B1 (ko) | 2016-11-25 | 2016-11-25 | 비휘발성 메모리를 포함하는 raid 시스템 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10430278B2 (ko) |
KR (1) | KR102665540B1 (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102624911B1 (ko) | 2018-06-13 | 2024-01-12 | 삼성전자주식회사 | 개선된 메타 데이터 관리를 통한 플래시 메모리의 내구성 향상 방법 |
KR102211122B1 (ko) * | 2018-12-20 | 2021-02-02 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 시스템 |
US11237890B2 (en) * | 2019-08-21 | 2022-02-01 | International Business Machines Corporation | Analytics initiated predictive failure and smart log |
KR20220007212A (ko) | 2020-07-10 | 2022-01-18 | 삼성전자주식회사 | Raid 스토리지 장치, 호스트 장치 및 raid 시스템 |
US11693798B2 (en) | 2020-07-10 | 2023-07-04 | Samsung Electronics Co., Ltd. | Layered ready status reporting structure |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006079219A (ja) | 2004-09-08 | 2006-03-23 | Matsushita Electric Ind Co Ltd | ディスクアレイ制御装置およびディスクアレイ制御方法 |
JP2009217408A (ja) | 2008-03-07 | 2009-09-24 | Nec Corp | データ格納装置のデータ復旧方法及びその装置並びにディスクアレイシステムのデータ復旧方法及びその装置 |
US20130339784A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Error recovery in redundant storage systems |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6154853A (en) | 1997-03-26 | 2000-11-28 | Emc Corporation | Method and apparatus for dynamic sparing in a RAID storage system |
JP2006079418A (ja) * | 2004-09-10 | 2006-03-23 | Fujitsu Ltd | 記憶制御装置、制御方法及びプログラム |
CN101604250B (zh) | 2008-06-12 | 2014-07-16 | 普安科技股份有限公司 | 储存虚拟化***中更新实体储存装置的控制程序的方法 |
WO2010054410A2 (en) * | 2008-11-10 | 2010-05-14 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for predicting failures in solid-state storage |
US9619353B2 (en) | 2010-10-06 | 2017-04-11 | International Business Machines Corporation | Redundant array of independent disk (RAID) storage recovery |
US8694724B1 (en) | 2011-09-06 | 2014-04-08 | Emc Corporation | Managing data storage by provisioning cache as a virtual device |
US9256381B1 (en) | 2011-09-29 | 2016-02-09 | Emc Corporation | Managing degraded storage elements in data storage systems |
JP5744244B2 (ja) | 2011-10-19 | 2015-07-08 | 株式会社日立製作所 | ストレージシステム |
US9529670B2 (en) | 2014-05-16 | 2016-12-27 | International Business Machines Corporation | Storage element polymorphism to reduce performance degradation during error recovery |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US10078472B2 (en) * | 2015-02-27 | 2018-09-18 | International Business Machines Corporation | Rebuilding encoded data slices in a dispersed storage network |
-
2016
- 2016-11-25 KR KR1020160158487A patent/KR102665540B1/ko active IP Right Grant
-
2017
- 2017-08-10 US US15/673,942 patent/US10430278B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006079219A (ja) | 2004-09-08 | 2006-03-23 | Matsushita Electric Ind Co Ltd | ディスクアレイ制御装置およびディスクアレイ制御方法 |
JP2009217408A (ja) | 2008-03-07 | 2009-09-24 | Nec Corp | データ格納装置のデータ復旧方法及びその装置並びにディスクアレイシステムのデータ復旧方法及びその装置 |
US20130339784A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Error recovery in redundant storage systems |
Also Published As
Publication number | Publication date |
---|---|
US10430278B2 (en) | 2019-10-01 |
KR20180059201A (ko) | 2018-06-04 |
US20180150354A1 (en) | 2018-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102665540B1 (ko) | 비휘발성 메모리를 포함하는 raid 시스템 | |
KR101826051B1 (ko) | 비휘발성 메모리 장치의 제어 방법 및 비휘발성 메모리 시스템 | |
KR102177421B1 (ko) | 데이터 저장 시스템, 데이터 저장 장치 및 raid 컨트롤러 | |
KR102549605B1 (ko) | Raid 스토리지 장치의 리커버리 방법 | |
US20130262920A1 (en) | Raid memory system | |
US10409683B2 (en) | Data storage system configured to perform data rebuild operation via reduced read requests | |
KR20180008219A (ko) | Raid 리커버리를 수행하는 메모리 시스템 및 그 동작방법 | |
US11521701B2 (en) | Memory controller with read error handling | |
KR20110089728A (ko) | 솔리드 스테이트 드라이브의 에러 제어 방법 | |
CN107515731B (zh) | 一种基于固态盘的进化存储***及其工作方法 | |
KR20150006616A (ko) | 데이터 처리 시스템 및 그것의 동작 방법 | |
KR102611571B1 (ko) | 비휘발성 메모리를 포함하는 raid 시스템 | |
US11016689B2 (en) | Data storage system | |
US11455118B1 (en) | Method for redundant array of independent disks striping against programming failures and apparatus thereof | |
EP3937018A1 (en) | Raid storage device, host, and raid system | |
JP6491482B2 (ja) | 複数のフラッシュ面にわたってコード語をインターリーブするための方法および/または装置 | |
JP6052288B2 (ja) | ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラム | |
US10656987B1 (en) | Analysis system and method | |
KR20230056901A (ko) | 메모리 장치에 데이터를 프로그램하는 장치 및 방법 | |
CN112579329A (zh) | 快速处理uecc的方法及其存储设备 | |
US12050783B1 (en) | Method and apparatus for performing table management of memory device in predetermined communications architecture with aid of table error correction | |
US12050530B1 (en) | Method and apparatus for performing table management of memory device in predetermined communications architecture with aid of system-region garbage collection | |
US20240053920A1 (en) | Memory System and Method for Use In the Memory System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |