KR20240001414A - 복수의 ssd를 포함하는 스토리지 시스템 및 그것의 운용 방법 - Google Patents

복수의 ssd를 포함하는 스토리지 시스템 및 그것의 운용 방법 Download PDF

Info

Publication number
KR20240001414A
KR20240001414A KR1020220078020A KR20220078020A KR20240001414A KR 20240001414 A KR20240001414 A KR 20240001414A KR 1020220078020 A KR1020220078020 A KR 1020220078020A KR 20220078020 A KR20220078020 A KR 20220078020A KR 20240001414 A KR20240001414 A KR 20240001414A
Authority
KR
South Korea
Prior art keywords
ssd
solid state
erasure coding
reliability
ssds
Prior art date
Application number
KR1020220078020A
Other languages
English (en)
Inventor
은희석
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020220078020A priority Critical patent/KR20240001414A/ko
Priority to US18/076,616 priority patent/US20230418476A1/en
Priority to CN202310539725.7A priority patent/CN117311600A/zh
Publication of KR20240001414A publication Critical patent/KR20240001414A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명에 따른 복수의 솔리드 스테이트 드라이브들을 포함하는 스토리지 시스템의 운용 방법은, 상기 복수의 솔리드 스테이트 드라이브들을 이레이저 코딩(Erasure coding)을 적용하기 위한 이레이저 코딩 세트로 구성하는 단계, 상기 복수의 솔리드 스테이트 드라이브들 각각의 신뢰성 상태를 모니터링하는 단계, 상기 복수의 솔리드 스테이트 드라이브들 중에서 상기 신뢰성 상태가 기준치보다 낮아지는 장치를 선택하여 상기 이레이저 코딩 세트에서 배제하는 단계, 그리고 상기 이레이저 코딩 세트에서 배제된 적어도 하나의 장치를 이용하여 복제 방식의 데이터 보호를 적용하기 위한 복제 세트를 구성하는 단계를 포함한다.

Description

복수의 SSD를 포함하는 스토리지 시스템 및 그것의 운용 방법{STORAGE SYSTEM INCLUDING A PLURALITY OF SSDS AND MANAGEMENT METHOD THEREOF}
본 발명은 반도체 메모리 장치에 관한 것으로, 좀 더 구체적으로는 복수의 솔리드 스테이트 드라이브(SSD)를 포함하는 스토리지 시스템 및 그것의 운용 방법에 관한 것이다.
솔리드 스테이트 드라이브(이하, SSD)는 플래시 메모리 장치와 같은 불휘발성 저장 매체에 사용자 데이터를 저장한다. 플래시 메모리 장치는 특정한 읽기 및 쓰기 단위와 내구성을 가지고 있어 신중하게 관리되어야 한다. 최근, SSD의 폭발적인 수요 증가와 함께 그 용도는 다양하게 분화되고 있다. 예를 들면, 서버용 SSD, 클라이언트용 SSD, 데이터 센터용 SSD 등으로 SSD의 용도가 세분화될 수 있다. SSD의 인터페이스는 이러한 용도에 따라 최적의 속도와 신뢰성을 제공할 수 있어야 한다.
데이터 센터나 서버에 사용되는 스토리지 시스템은 높은 데이터 신뢰성과 더불어 높은 서비스 품질을 제공하기 위한 성능(Performance) 관리가 필요하다. 이러한 스토리지 시스템에는 복수의 SSD들이 장착된다. 그리고 스토리지 시스템의 결함 허용(Fault Tolerance) 또는 고장 허용(Failure Tolerance)을 위해 RAID(Redundant Array of Independent Disks)나 패리티(Parity)를 적용하고 있다. 하지만, 시간의 경과에 따라 복수의 SSD들 각각은 상이한 웨어 레벨링(Wear leveling)을 가질 것이다. 이 경우, 고정적인 결함 허용(Fault Tolerance) 또는 고장 허용(Failure Tolerance) 방식을 적용하는 경우, 데이터 신뢰성과 서비스 품질이 함께 저하될 수밖에 없게 된다. 따라서, 스토리지 시스템의 데이터 신뢰성과 서비스 품질을 유지하기 위한 SSD들의 관리 방법이 필요한 실정이다.
(1) 미국 등록특허공보 US 9,785,364 (2017.10.10) (2) 미국 등록특허공보 US 10,552,062 (20201.02.04) (3) 미국 등록특허공보 US 11,275,762 (2022.03.15)
본 발명의 목적은 복수의 SSD들의 데이터 신뢰성과 성능을 유지할 수 있는 스토리지 시스템 및 그것의 운용 방법을 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명에 따른 복수의 솔리드 스테이트 드라이브들을 포함하는 스토리지 시스템의 운용 방법은, 상기 복수의 솔리드 스테이트 드라이브들을 이레이저 코딩(Erasure coding)을 적용하기 위한 이레이저 코딩 세트로 구성하는 단계, 상기 복수의 솔리드 스테이트 드라이브들 각각의 신뢰성 상태를 모니터링하는 단계, 상기 복수의 솔리드 스테이트 드라이브들 중에서 상기 신뢰성 상태가 기준치보다 낮아지는 장치를 선택하여 상기 이레이저 코딩 세트에서 배제하는 단계, 그리고 상기 이레이저 코딩 세트에서 배제된 적어도 하나의 장치를 이용하여 복제 방식의 데이터 보호를 적용하기 위한 복제 세트를 구성하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 스토리지 시스템은, 복수의 솔리드 스테이트 드라이브, 그리고 상기 복수의 솔리드 스테이트 드라이브를 이레이저 코딩(Erasure coding)을 적용하기 위한 이레이저 코딩 세트 또는 복제 방식의 데이터 보호를 적용하기 위한 복제 세트로 구성하여 관리하는 시스템 컨트롤러를 포함하되, 상기 시스템 컨트롤러는 상기 복수의 솔리드 스테이트 드라이브 각각의 신뢰성 상태를 모니터링하며, 상기 복수의 솔리드 스테이트 드라이브 중에서 상기 신뢰성 상태가 기준치보다 낮아지는 장치를 선택하여 상기 이레이저 코딩 세트에서 배제하고, 상기 배제된 적어도 하나의 솔리드 스테이트 드라이브를 상기 복제 세트로 할당한다.
상기 목적을 달성하기 위한 본 발명에 따른 스토리지 시스템의 운용 방법은, 제 1 데이터 보호 정책을 적용하기 위해 복수의 솔리드 스테이트 드라이브를 제 1 세트로 구성하는 단계, 상기 복수의 솔리드 스테이트 드라이브 각각의 신뢰성 상태를 모니터링하는 단계, 상기 복수의 솔리드 스테이트 드라이브 중에서 상기 신뢰성 상태가 기준치보다 낮아지는 장치를 선택하여 상기 제 1 세트에서 배제하는 단계, 그리고 상기 제 1 세트에서 배제된 적어도 하나의 장치에 대해 제 2 데이터 보호 정책을 적용하기 위한 제 2 세트를 구성하는 단계를 포함한다.
상술한 본 발명의 실시 예에 따르면, 복수의 SSD들을 포함하는 스토리지 시스템에서 데이터 신뢰성과 성능을 효과적으로 유지 및 관리할 수 있다.
도 1은 본 발명의 실시 예에 따른 시스템을 간략히 보여주는 블록도이다.
도 2는 도 1의 시스템 컨트롤러를 예시적으로 보여주는 블록도이다.
도 3은 본 발명의 장치 상태 모니터와 매퍼의 동작을 예시적으로 보여주는 도면이다.
도 4는 장치 상태 모니터에서 구성되는 각 SSD들의 신뢰성 상태를 보여주는 테이블이다.
도 5는 도 3의 매퍼에서 구성되는 각 SSD들의 데이터 보호 방식의 할당 예를 보여주는 테이블이다.
도 6은 본 발명의 스토리지 시스템에서 수행되는 동적 데이터 보호 방식의 변경 방법을 간략히 보여주는 순서도이다.
도 7은 본 발명의 데이터 보호 방식 중에서 복제(REP) 방식을 예시적으로 보여주는 도면이다.
도 8은 본 발명의 데이터 보호 방식 중에서 이레이저 코딩(EC) 방식을 예시적으로 보여주는 도면이다.
도 9는 본 발명의 실시 예에 따른 이레이저 코딩(EC)의 적용 방법을 예시적으로 보여주는 순서도이다.
도 10은 본 발명의 시스템 컨트롤러에 의한 신뢰성 상태를 체크 및 그에 따른 솔리드 스테이트 드라이브의 데이터 보호 방식 변경 예를 보여주는 도면이다.
도 11은 새로운 복제 세트(REP set)를 구성하여 복제(REP) 방식으로 관리되는 솔리드 스테이트 드라이브들을 보여주는 도면이다.
도 12 내지 도 13은 이레이저 코딩 세트에서 배제된 SSD를 대체할 새로운 SSD를 선택하는 방법을 보여주는 도면들이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
도 1은 본 발명의 실시 예에 따른 시스템을 간략히 보여주는 블록도이다. 도 1을 참조하면, 시스템(1000)은 호스트(1100)와 스토리지 시스템(1200)을 포함한다. 시스템(1000)은, 예를 들면, 서버나 데이터 센터일 수 있다.
호스트(1100)는 다양한 사용자 데이터를 스토리지 시스템(1200)을 저장할 수 있다. 호스트(1100)에 스토리지 시스템(1200)에 접근하여 저장된 데이터를 업데이트하거나 읽어온다. 예로서, 호스트(1100)는 적어도 하나의 프로세서(Processor)를 포함할 수 있다. 호스트(1100)는 프로세서 그 자체이거나, 프로세서를 포함하는 전자 장치 또는 데이터 센터나 서버의 관리 장치일 수 있다. 호스트(1100)는 서버나 데이터 센터를 구성하는 또 다른 시스템이거나 클라이언트일 수 있다.
스토리지 시스템(1200)은 시스템 컨트롤러(1210)와 복수(m 개)의 SSD(1220, 1230, 1240, 1250, 1260)를 포함할 수 있다. 시스템 컨트롤러(1210)는 복수의 SSD(1220, 1230, 1240, 1250, 1260)들과 호스트(1100)와의 인터페이싱을 수행할 수 있다. 예를 들면, 시스템 컨트롤러(1210)는 호스트(1100)와의 통신 채널을 제공한다. 시스템 컨트롤러(1210)는 호스트(1100)와 스토리지 시스템(1200)과의 물리적 연결을 제공한다. 즉, 시스템 컨트롤러(1210)는 호스트(1100)의 네트워크 인터페이스에 대응하여 스토리지 시스템(1200)과의 인터페이싱을 제공한다. 호스트(1100)의 네트워크 인터페이스는, 예를 들면, USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI), UFS(Universal Flash Storage) 및 Fibre Channel(FC) 기반 인터페이스인 NVMeoF, Ethernet, Infiniband, RoCE, iWARF 중 적어도 하나로 구성될 수 있지만, 여기의 개시에 국한되지 않는다.
특히, 시스템 컨트롤러(1210)는 복수의 SSD(1220, 1230, 1240, 1250, 1260)의 신뢰성(Reliability)을 모니터링하고, 모니터링 결과에 따라 데이터 보호 방식을 선택할 수 있다. 예를 들면, 데이터 보호 방식에는 패리티(Parity) 방식이나 복제(Replication) 방식이 사용될 수 있다. 패리티(parity) 방식은 데이터 배타적 논리합(XOR) 패리티를 사용하는 RAID5, RAID6나 심볼 단위로 인코딩하여 적어도 하나 이상의 패리티 심볼을 생성하는 이레이저 코딩(Erasure Coding) 등이 있다. 복제(Replication) 방식은 단순히 하나의 데이터 단위를 복사하여 복수의 SSD에 저장하는 방식이다. 복제 방식에는 원본 데이터와 하나의 복사본을 각기 다른 SSD에 저장하는 RAID1이나 원본과 2개 이상의 복사본을 각기 다른 SSD에 저장하는 방식들이 있다.
본 발명에서는 설명의 편의를 위하여 하나의 원본과 2개의 복사본을 사용하는 복제 방식과 이레이저 코딩(Erasure coding)을 대표적인 데이터 보호 방식의 예로서 설명될 것이다. 하지만, 본 발명의 개시는 여기에 국한되지 않으며, 다양한 데이터 보호 방식이 복수의 SSD(1220, 1230, 1240, 1250, 1260) 각각의 신뢰성(Reliability)을 기반으로 설정될 수 있음은 잘 이해될 것이다.
복수의 SSD(1220, 1230, 1240, 1250, 1260)는 각각 SSD 컨트롤러(미도시)와 복수의 플래시 메모리 장치들(미도시)을 포함할 것이다. 복수의 SSD(1220, 1230, 1240, 1250, 1260) 각각은 내부에 구비된 컨트롤러 계층에서 어드레스 맵핑이나 웨어 레벨링, 에러 정정 등의 동작을 수행할 것이다.
여기서, 설명될 레이드(RAID)는 다양한 레벨로 정의될 수 있다. 예를 들어, RAID 레벨 0(Striped set without parity or Striping), RAID 레벨 1(Mirrored set without parity or Mirroring), RAID 레벨 2(Hamming code parity), RAID 레벨 3(Striped set with dedicated parity, bit interleaved parity, or byte level parity), RAID 레벨 4(Block level parity), RAID 레벨 5(Striped set with distributed parity or interleave parity), RAID 레벨 6(Striped set with dual distributed parity), RAID 레벨 7, RAID 레벨 10, 및 RAID 레벨 53 중에서 어느 하나 또는 상기 RAID 레벨들 중에서 적어도 2개를 혼합한(Merged) RAID 레벨일 수도 있다.
복수의 SSD(1220, 1230, 1240, 1250, 1260)에 대한 데이터 보호 방식으로 복제(Replication) 방식을 사용하면 저장 공간의 효율은 저하되지만, 성능(예를 들면, 응답 속도)은 높아진다. 반면에, 데이터 보호 방식으로 이레이저 코딩을 적용하는 경우, 저장 공간의 효율은 높아지나 열화가 심각하게 진행된 SSD에서는 성능의 저하가 현저하게 나타난다. 반면, 본 발명의 스토리지 시스템(1200)에 따르면, 신뢰성 모니터링을 통해 복수의 SSD(1220, 1230, 1240, 1250, 1260) 각각의 신뢰성 상태를 모니터링하고 그 결과에 따라 복제 방식과 이레이저 코딩 방식을 동적으로 변경하거나 조정할 수 있다.
본 발명의 시스템 컨트롤러(1210)는 신뢰성 상태가 양호한 SSD들은 이레이저 코딩 방식으로 관리하고, 신뢰성 상태가 특정 상태보다 낮아지는 SSD들은 복제 방식으로 관리할 수 있다. 따라서, 스토리지 시스템(1200)의 성능을 일정 수준 이상으로 유지하면서도 신뢰성 및 저장 공간의 효율성을 보장할 수 있다.
도 2는 도 1의 시스템 컨트롤러를 예시적으로 보여주는 블록도이다. 도 2를 참조하면, 본 발명의 시스템 컨트롤러(1210)는 중앙처리장치(1211), 워킹 메모리(1213), 네트워크 인터페이스 카드(NIC, 1215), 스토리지 인터페이스(1217)를 포함할 수 있다.
중앙처리장치(1211)는 복수의 SSD(1220, 1230, 1240, 1250, 1260, 도 1 참조)에 대한 읽기/쓰기 동작에 필요한 다양한 제어 정보를 스토리지 인터페이스(1217)의 레지스터들에 전달한다. 중앙처리장치(1211)는 시스템 컨트롤러(1210)의 다양한 제어 동작을 위해 제공되는 소프트웨어나 애플리케이션(Application)에 따라 동작할 수 있다. 예를 들면, 중앙처리장치(1211)는 복수의 SSD(1220, 1230, 1240, 1250, 1260)를 관리하기 위한 데이터 보호 기능을 수행할 수 있다. 이를 위해, 중앙처리장치(1211)는 워킹 메모리(1213)에 로드된 장치 상태 모니터(1212), 그리고 매퍼(1214)와 같은 애플리케이션을 수행할 수 있다.
워킹 메모리(1213)는 중앙처리장치(1211)의 동작 메모리, 캐시 메모리 또는 버퍼 메모리로써 사용될 수 있다. 워킹 메모리(1213)는 중앙처리장치(1211)가 실행하는 코드들 및 명령들을 저장할 수 있다. 워킹 메모리(1213)는 중앙처리장치(1211)에 의해 처리되는 데이터를 저장할 수 있다. 워킹 메모리(1213)는 예시적으로 SRAM(Static RAM)으로 구현될 수 있다. 특히, 워킹 메모리(1213)에는 장치 상태 모니터(1212), 매퍼(1214), 복제 엔진(1216), 그리고 이레이저 코딩 엔진(1218)과 같은 소프트웨어나 애플리케이션이 로드될 수 있다.
장치 상태 모니터(1212)가 중앙처리장치(1211)에 의해서 실행됨에 따라, 시스템 컨트롤러(1210)는 복수의 SSD(1220, 1230, 1240, 1250, 1260) 각각의 신뢰성을 실시간으로 또는 주기적으로 모니터링할 수 있다. 즉, 장치 상태 모니터(1212)의 구동에 의해 시스템 컨트롤러(1210)는 어느 하나의 SSD에 대한 읽기 동작시 읽기 레이턴시(Read latency)가 기준값보다 길어지는지를 인식할 수 있다. 또는, 장치 상태 모니터(1212)의 구동에 의해 시스템 컨트롤러(1210)는 어느 하나의 SSD에 대한 읽기 실패(Read failure) 횟수를 카운트하고, 카운트된 횟수가 기준값을 초과하는지 판단할 수 있다.
장치 상태 모니터(1212)에 의해 복수의 SSD(1220, 1230, 1240, 1250, 1260) 각각의 신뢰성 상태(Reliability status) 정보는 테이블 형태로 관리될 수도 있을 것이다. 그리고 매퍼(1214)는 모니터링된 신뢰성 상태에 기초하여 복수의 SSD(1220, 1230, 1240, 1250, 1260) 각각의 데이터 보호 방식을 유지하거나 변경할 수 있다. 예를 들면, 매퍼(1214)는 복수의 SSD(1220, 1230, 1240, 1250, 1260) 모두의 데이터 보호 방식을 초기에는 이레이저 코딩(Erasure coding) 방식으로 관리할 수 있다. 하지만, 특정 기준치 이하로 신뢰성이 저하되는 SSD들이 발생하면, 매퍼(1214)는 이들 SSD들을 별도의 그룹으로 분리하여 복제 방식으로 관리할 수 있다.
더불어, 복제 엔진(1216)은 매퍼(1214)에 의해서 할당된 SSD들을, 복제 방식(예를 들면, RAID1)으로 관리한다. 예를 들면, 복제 엔진(1216)은 복제 방식에 할당되는 SSD들의 수가 미리 결정된 수를 충족하면, 해당 SSD들에 하나의 원본 데이터와 두 개의 복사본 데이터(또는, 청크)들이 저장되도록 관리한다. 반면, 이레이저 코딩 엔진(1218)은 이레이저 코딩 방식에 할당된 SSD들에 데이터의 입출력을 이레이저 코딩을 적용하여 관리한다. 즉, 이레이저 코딩 엔진(1218)은 쓰기 요청된 데이터를 복수의 심볼들로 분할하고, 분할된 심볼들을 이레이저 코딩으로 인코딩하여 적어도 하나의 패리티 심볼을 생성한다. 이레이저 코딩 엔진(1218)은 데이터 심볼들과 패리티 심볼들 각각을 복수의 SSD에 분할하여 저장한다. 읽기 동작시에는 이레이저 코딩의 디코딩 절차를 통하여 오류의 정정이나 데이터 복구가 가능하다.
네트워크 인터페이스 카드(1215)는 스토리지 시스템(1200)의 외부와 통신하기 위한 통신 인터페이스를 제공한다. 예를 들면, 네트워크 인터페이스 카드(1215)는 이더넷(Ethernet) 스위치 또는 이더넷 페브릭과 스토리지 시스템(1200)을 연결하기 위한 통신 인터페이스일 수 있다.
스토리지 인터페이스(1217)는 복수의 SSD(1220, 1230, 1240, 1250, 1260)와의 인터페이싱을 제공한다. 스토리지 인터페이스(1217)는 복수의 SSD(1220, 1230, 1240, 1250, 1260) 중 적어도 하나로 전달되는 데이터를 각각의 채널들을 경유하여 선택된 SSD에 기입한다.
이상에서 설명된 시스템 컨트롤러(1210)는 복수의 SSD(1220, 1230, 1240, 1250, 1260) 각각의 신뢰성 상태에 기반하여 데이터 보호 방식을 동적으로 관리할 수 있다. 예를 들면, 시스템 컨트롤러(1210)는 복수의 SSD(1220, 1230, 1240, 1250, 1260) 각각의 신뢰성 상태에 기반하여 복제 방식 또는 이레이저 코딩 방식 중 어느 하나로 변경할 수 있다. 따라서, SSD의 열화에 따라 발생하는 성능의 저하를 줄이면서도 데이터 신뢰성을 유지할 수 있다.
더불어, 장치 상태 모니터(1212), 매퍼(1214), 복제 엔진(1216), 그리고 이레이저 코딩 엔진(1218)이 상술한 설명과 같이 소프트웨어 형태로 제공될 수도 있으나, 별도의 하드웨어로 구현될 수 있을 것이다.
도 3은 본 발명의 장치 상태 모니터와 매퍼의 동작을 예시적으로 보여주는 도면이다. 도 3을 참조하면, 매퍼(1214)는 장치 상태 모니터(1212)에 의해서 신뢰성 저하 검출이 발견되기 전까지는 이레이저 코딩(EC) 방식으로 모든 SSD들을 관리할 수 있다. 설명의 편의를 위하여, 스토리지 시스템(1200)에 12개의 SSD들(SSD_1~SSD_12)이 포함되는 것으로 가정하기로 한다.
매퍼(1214)는 데이터 보호 방식의 디폴트 설정으로 이레이저 코딩(EC) 방식을 적용할 수 있다. 예를 들면, 하나의 데이터는 이레이저 인코딩에 의해서 3개의 심볼들로 분할될 수 있고, 3개의 심볼들로부터 1개 심볼의 패리티가 생성될 수 있다. 이러한 방식으로 생성된 4개 심볼의 데이터가 4개의 SSD들에 각각 분리되어 저장된다. 이러한 방식으로 이레이저 코딩(EC) 방식을 적용하면 12개의 SSD(SSD_1~SSD_12)는 3개의 이레이저 코딩 세트들(EC_Set_1, EC_Set_2, EC_Set_3)을 구성하게 된다.
제 1 이레이저 코딩 세트(EC_Set_1)는 4개의 SSD(SSD_1~SSD_4)로 구성될 수 있다. 예를 들면, 쓰기 요청이 발생하면, 쓰기 요청된 데이터는 이레이저 인코딩을 통해서 4개의 심볼(또는, 청크)들로 인코딩되고, 4개의 심볼들은 SSD들(SSD_1~SSD_4)의 제 1 유닛(UNIT1)들 각각에 분산되어 기입된다. 4개의 심볼들을 하나의 스트라이프(Stripe)를 구성한다. 여기서, 하나의 스트라이프(Stripe)를 구성하기 위한 SSD(SSD_1~SSD_4)의 유닛 할당은 랜덤하게 처리될 수도 있다. 즉, 어떤 스트라이프는 SSD들(SSD_1~SSD_2)의 제 2 유닛(UNIT3)과 SSD들(SSD_3~SSD_4)의 제 4 유닛(UNIT4)으로 구성될 수도 있다. 다른 실시 예에서, 스트라이프는 SSD들(SSD_1~SSD_3)의 제 6 유닛(UNIT6)과 SSD(SSD_4)의 제 5 유닛(UNIT5)으로 구성될 수도 있다. 하나의 유닛(UNIT)은, 예를 들면, SSD를 구성하는 플래시 메모리 장치 단위, 메모리 블록 단위, 페이지 단위들로 구성될 수 있으나, 여기의 개시에만 국한되지 않음은 잘 이해될 것이다.
제 2 이레이저 코딩 세트(EC_Set_2)는 4개의 SSD(SSD_5~SSD_8)로 구성될 수 있다. 쓰기 요청이 발생하면, 쓰기 요청된 데이터는 이레이저 인코딩을 통해서 4개의 심볼(또는, 청크)들로 인코딩되고, 4개의 심볼들은 SSD들(SSD_5~SSD_8) 각각에 유닛 단위로 분산되어 저장된다. 4개의 심볼들을 하나의 스트라이프(Stripe)를 구성한다. 제 2 이레이저 코딩 세트(EC_Set_2)의 구성 방법도 4개의 SSD(SSD_5~SSD_8)에 적용된다는 점을 제외하면 실질적으로 앞서 설명된 제 1 이레이저 코딩 세트(EC_Set_1)와 동일하다. 제 3 이레이저 코딩 세트(EC_Set_3)의 구성 방법도 4개의 SSD(SSD_9~SSD_12)에 적용된다는 점을 제외하면 실질적으로 앞서 설명된 제 1 이레이저 코딩 세트(EC_Set_1)와 동일하다.
매퍼(1214)는 상술한 3개의 이레이저 코딩 세트들(EC_Set_1, EC_Set_2, EC_Set_3)을 관리하기 위한 어드레스 맵핑을 주기적으로 업데이트할 것이다. 예를 들면, 매퍼(1214)는 어느 하나의 스트라이프 데이터가 소거된 후에는 동일한 이레이저 코딩 세트 내에서 새로운 스트라이프를 저장하기 위한 맵핑을 조정할 수 있다.
하지만, 초기에 설정된 이레이저 코딩 세트들(EC_Set_1, EC_Set_2, EC_Set_3) 각각의 SSD 할당은 장치 상태 모니터(1212)에 의한 SSD(SSD_1~SSD_12)의 신뢰성 변화가 감지되면 변경될 수 있다. 즉, SSD(SSD_1~SSD_12) 중에서 읽기 레이턴시나 읽기 실패 횟수가 기준보다 증가하는 것이 감지되면, 해당 SSD는 이레이저 코딩 세트에서 제외되고, 새로운 이레이저 코딩 세트들이 구성되어야 한다. 이러한 절차는 후술되는 도면들을 통해서 보다 구체적으로 설명될 것이다.
도 4는 장치 상태 모니터에서 구성되는 각 SSD들의 신뢰성 상태를 보여주는 테이블이다. 도 4를 참조하면, 장치 상태 모니터(1212)는 스토리지 시스템(1200) 내의 제반 SSD들(SSD_1~SSD_12)에 대한 신뢰성 변화를 모니터링하고 신뢰성 상태 테이블(1212a)을 구성하고 업데이트한다.
신뢰성 상태(Reliability Status)는 SSD들(SSD_1~SSD_12) 각각에 대해서 모니터링될 수 있다. 예시적으로, SSD들(SSD_1~SSD_12) 각각의 신뢰성 상태로서 읽기 레이턴시(RL) 또는 읽기 실패 횟수(nRF)가 사용될 수 있다. 하지만, SSD들(SSD_1~SSD_12) 각각의 신뢰성 상태는 읽기 레이턴시(RL) 또는 읽기 실패 횟수(nRF) 이외의 다양한 파라미터들이 사용될 수 있다. 예를 들면, 신뢰성 상태는 SSD를 구성하는 블록들의 평균 웨어 레벨링 값(Average Wear leveling value)이나 읽기 횟수 등에 기반하여 정의될 수도 있음은 잘 이해될 것이다.
이 실시 예에서, 읽기 레이턴시(RL) 또는 읽기 실패 횟수(nRF)가 신뢰성 상태를 지시하는 파라미터로 사용될 것이다. 읽기 레이턴시(RL)는 시스템 컨트롤러(1210)에 의한 읽기 요청에 대해 SSD들(SSD_1~SSD_12) 각각의 응답에 소요되는 시간을 나타낸다. 예컨대, 정상적인 읽기 레이턴시(RL) 값을 'x'라 가정할 수 있다. 장치 상태 모니터(1212)는 스토리지 시스템(1200) 내의 SSD들(SSD_1~SSD_12)에 대한 접근 동작이 발생하는 경우, 읽기 레이턴시(RL)를 SSD들(SSD_1~SSD_12) 각각에 대해서 체크할 수 있다. 그리고 체크된 읽기 레이턴시 값은 장치 상태 모니터(1212)에서 관리하는 신뢰성 상태 테이블(1212a)에 업데이트된다.
예를 들면, 'SSD_1'에 대한 접근이 발생하는 경우, 장치 상태 모니터(1212)는 읽기 요청이 전달된 시점으로부터 읽기 데이터나 응답이 발생하는 시점까지의 읽기 레이턴시의 크기를 측정할 수 있다. 도시된 바와 같이, 'SSD_1'에서 측정된 읽기 레이턴시(RL)가 'x+α'로 나타날 수 있다. 또한, 'SSD_4'에서 측정된 읽기 레이턴시(RL)가 'x+β'로 측정되었음을 알 수 있다. 이는, 'SSD_1'이나 'SSD_4' 내부의 열화나 에러 비트의 증가로 인해서 데이터의 신뢰성이 감소된 것에 기인할 수 있다. 반면, SSD들(SSD_2, SSD_3, SSD_5, SSD_6, SSD_12)의 읽기 레이턴시(RL)는 정상 크기 'x'에서 증가하지 않은 상태를 나타내고 있다.
또 하나의 신뢰성 상태를 지시하는 파라미터로서 읽기 실패 횟수(nRF)가 사용될 수 있다. 읽기 실패 횟수(nRF)는 시스템 컨트롤러(1210)에 의한 읽기 요청에 대해 SSD들(SSD_1~SSD_12) 각각이 자체적인 방어 코드나 오류 정정 엔진으로 해결하지 못한 실패 횟수를 나타낸다. 읽기 실패(Read Failure)가 발생하는 경우, 스토리지 시스템(1200) 차원에서의 데이터 복구 기능이 활성화되어야 한다. 읽기 실패(Read Failure)는 SSD들(SSD_1~SSD_12)의 웨어 레벨의 증가나 열화의 증가에 따라 발생하는 신뢰성 저하에 기인할 수 있다.
정상적인 경우, SSD의 읽기 실패 횟수(nRF)는 '0'라 가정할 수 있다. 장치 상태 모니터(1212)는 스토리지 시스템(1200) 내의 SSD들(SSD_1~SSD_12)에 대한 접근 동작이 발생하는 경우, SSD별로 읽기 실패(Read Failure)의 발생 여부를 모니터링할 수 있다. 그리고 모니터링된 읽기 실패 횟수(nRF)는 장치 상태 모니터(1212)에서 관리하는 신뢰성 상태 테이블(1212a)에 업데이트될 것이다.
예를 들면, SSD들(SSD_2, SSD_3, SSD_5, SSD_6, SSD_12)의 읽기 실패 횟수(nRF)는 여전히 '0'으로 나타나지만, 'SSD_1'과 'SSD_4'에서는 각각 2, 4의 읽기 실패 횟수(nRF)가 관찰되는 것으로 나타났다. 이러한 읽기 실패 횟수(nRF) 상태는 'SSD_1'이나 'SSD_4' 내부의 열화나 에러 비트의 증가로 인해서 데이터의 신뢰성이 감소된 것에 기인할 수 있다.
도 5는 도 3의 매퍼에서 구성되는 각 SSD들의 데이터 보호 방식의 할당 예를 보여주는 테이블이다. 도 5를 참조하면, 매퍼(1214)는 스토리지 시스템(1200) 내의 제반 SSD들(SSD_1~SSD_12)에 대한 신뢰성 변화에 따라 데이터 보호 방식을 변경할 수 있다. 즉, 매퍼(1214)는 제반 SSD들(SSD_1~SSD_12)의 신뢰성 상태에 따라 복제(REP) 방식과 이레이저 코딩(EC) 방식 중 어느 하나를 선택할 수 있다. 이러한 매퍼(1214)의 동작을 위해 할당 테이블(1214a)을 구성할 수 있다.
앞서 설명된 도 4에서 예시적으로 설명된 신뢰성 상태(Reliability Status)에 근거하여 매퍼(1214)는 SSD들(SSD_1~SSD_12) 각각의 데이터 보호 방식을 설정할 수 있다. 예시적으로, 매퍼(1214)가 읽기 실패 횟수(nRF)에 근거하여 데이터 보호 방식을 결정하는 것으로 설명하기로 한다. SSD들(SSD_2, SSD_3, SSD_5, SSD_6, SSD_12)의 읽기 실패 횟수(nRF)가 '0'이고, 'SSD_1'과 'SSD_4'는 각각 2 및 4의 읽기 실패 횟수(nRF)가 모니터링 되었다. 따라서, 매퍼(1214)의 맵핑 정책이 '2' 이상의 읽기 실패 횟수(nRF)에 대응하는 SSD를 복제(REP) 방식으로 할당하는 것이라면, 'SSD_1'과 'SSD_4'의 데이터 보호 방식은 복제(REP) 방식으로 할당될 것이다. 하지만, SSD들(SSD_2, SSD_3, SSD_5, SSD_6, SSD_12)의 데이터 보호 방식은 최초 할당된 이레이저 코딩(EC) 방식을 유지할 것이다.
상술한 데이터 보호 방식의 할당은 SSD들(SSD_1~SSD_12) 각각의 신뢰성 상태 변화에 따라 변경될 수 있다.
도 6은 본 발명의 스토리지 시스템에서 수행되는 동적 데이터 보호 방식의 변경 방법을 간략히 보여주는 순서도이다. 도 6을 참조하면, 스토리지 시스템(1200)은 신뢰성 상태에 따라 SSD들(SSD_1~SSD_12)의 데이터 보호 방식을 변경시킬 수 있다.
S110 단계에서, 스토리지 시스템(1200)은 모든 SSD들(SSD_1~SSD_12)의 데이터 보호 방식을 이레이저 코딩(EC) 방식으로 맵핑한다. 즉, SSD들(SSD_1~SSD_12) 각각의 디폴트 데이터 보호 방식으로 이레이저 코딩(EC)이 설정될 수 있다.
S120 단계에서, 시스템 컨트롤러(1210, 도 3 참조)의 장치 상태 모니터(1212, 도 3 참조)는 복수의 SSD들(SSD_1~SSD_12)에 대한 접근 동작이 발생하는 경우, 신뢰성 상태를 체크한다. 즉, 장치 상태 모니터(1212)는 읽기 레이턴시(RL) 또는 읽기 실패 횟수(nRF)를 체크한다.
S130 단계에서, 체크된 읽기 레이턴시(RL) 또는 읽기 실패 횟수(nRF)의 크기가 기준치(TH)를 초과하는 SSD가 존재하는지에 따라 동작 분기가 발생한다. 만일, 읽기 레이턴시(RL) 또는 읽기 실패 횟수(nRF)가 기준치(TH)를 초과하는 SSD가 존재하는 경우('Yes' 방향), 절차는 S140 단계로 이동한다. 반면에, 읽기 레이턴시(RL) 또는 읽기 실패 횟수(nRF)가 기준치(TH)를 초과하는 SSD가 검출되지 않은 경우('No' 방향), 절차는 S120 단계로 복귀한다.
S140 단계에서, 매퍼(1214)는 읽기 레이턴시(RL) 또는 읽기 실패 횟수(nRF)가 기준치(TH)를 초과하는 SSD의 데이터 보호 방식을 변경한다. 예를 들면, 매퍼(1214)는 검출된 SSD를 이레이저 코딩(EC) 세트에서 배제시킨다.
S150 단계에서, 매퍼(1214)는 이레이저 코딩(EC) 세트에서 배제된 SSD의 수가 특정 수(REF)를 만족하는지 판단한다. 만일, 이레이저 코딩(EC) 세트에서 배제된 SSD의 수가 특정 수(REF)를 만족하는 경우('Yes' 방향), 절차는 S160 단계로 이동한다. 반면, 이레이저 코딩(EC) 세트에서 배제된 SSD의 수가 특정 수(REF)를 만족하지 않는 경우('No' 방향), 절차는 읽기 레이턴시(RL) 또는 읽기 실패 횟수(nRF)의 모니터링을 지속하기 위해 S120 단계로 복귀한다.
S160 단계에서, 매퍼(1214)는 이레이저 코딩(EC) 세트에서 배제된 SSD들을 의 복제(REP) 세트로 할당한다. 이후부터 복제(REP) 세트로 할당된 SSD들에 새롭게 기입되는 데이터는 복제(REP) 방식의 데이터 보호 방식으로 관리될 것이다.
이상에서는 스토리지 시스템(1200)의 장치 상태 모니터(1212)와 매퍼(1214)에 의한 신뢰성 상태 모니터링과 그 결과를 이용한 데이터 보호 방식의 변경 방법이 예시적으로 설명되었다. 상술한 방법을 통해서 시스템 컨트롤러(1210)는 복수의 SSD 각각의 신뢰성 상태에 기반하여 복제 방식 또는 이레이저 코딩 방식을 동적으로 관리할 수 있다. 따라서, SSD의 웨어 레벨링이나 열화의 증가에 따라 발생하는 성능의 저하를 줄이면서도 데이터 신뢰성을 유지할 수 있다.
도 7은 본 발명의 데이터 보호 방식 중에서 복제(REP) 방식을 예시적으로 보여주는 도면이다. 도 7을 참조하면, 3개의 SSD(SSD_a, SSD_b, SSD_c)들이 복제 세트(REP set)로 할당되면, 원본 심볼(Original Symbol)이 하나의 솔리드 스테이트 드라이브(SSD_a)에 저장되고, 복제된 2개의 심볼은 복제 세트(REP set)의 나머지 두 솔리드 스테이트 드라이브(SSD_b, SSD_c)에 저장된다.
복제 세트(REP set)로 지정된 3개의 SSD(SSD_a, SSD_b, SSD_c)에 쓰기 데이터가 제공되면, 시스템 컨트롤러(1210)는 원본 심볼(Original Symbol)과 2개의 복제 심볼(Replication Symbol)을 구성한다. 그리고 각 심볼들을 SSD(SSD_a, SSD_b, SSD_c) 각각의 유닛(UNIT1)에 기입할 수 있다. 이 경우, 스트라이프(Stripe_1)를 구성하는 데이터는 추후 어느 하나가 소실되더라도 완전한 복원이 가능하다. 마찬가지 방식으로 나머지 스트라이프들(Stripe_2, Stripe_3, …, Stripe_i) 각각도 쓰기 요청되는 데이터를 원본 심볼(Original Symbol)과 2개의 복제 심볼(Replication Symbol)로 구성하여 기입할 수 있다.
도 8은 본 발명의 데이터 보호 방식 중에서 이레이저 코딩(EC) 방식을 예시적으로 보여주는 도면이다. 도 8을 참조하면, 쓰기 요청된 데이터(1010)는 이레이저 코딩(EC) 방식으로 인코딩되어 스토리지 시스템(1200)에 저장되고, 읽기 요청이 발생하면, 디코딩되어 데이터(1010)로 출력된다.
쓰기 요청된 데이터(1010)는 복수(n개)의 심볼 단위들로 등분되고, 인코딩에 의해서 'k' 개의 패리티 심볼들이 생성될 수 있다. 그리고 'n+k' 개의 심볼들이 스토리지 시스템(1200)의 'n+k' 개의 SSD들에 할당되어 저장된다. 만일, 읽기 요청이 제공되면, 서로 다른 SSD들로부터 읽혀진 'n+k' 개의 심볼들은 에러가 존재하는 경우에는 이레이저 디코딩에 의해서 복구될 수 있다.
도 9는 본 발명의 실시 예에 따른 다중 계층 이레이저 코딩(Multi-Layer EC)의 적용 방법을 예시적으로 보여주는 순서도이다. 도 9를 참조하면, 어느 하나의 SSD는 부화화율(Code rate)이 다른 복수의 이레이저 코딩 셋(EC Set) 중 어느 하나에 할당될 수 있다. 즉, 어느 하나의 솔리드 스테이트 드라이브(SSDj)는 검출된 신뢰성 상태(RS)의 정도에 따라 서로 다른 부호화율(Code rate) 또는 데이터 길이에 대응하는 이레이저 코딩 셋(EC)에 할당될 수 있다.
S210 단계에서, 시스템 컨트롤러(1210, 도 3 참조)는 어느 하나의 솔리드 스테이트 드라이브(SSDj)에 대한 신뢰성 상태(RS)를 체크한다. 신뢰성 상태(RS)는 읽기 레이턴시(RL)나 읽기 실패 횟수(nRF)일 수 있다. 하지만, 신뢰성 상태(RS)는 복수의 임계치(TH1, TH2, TH3)을 기준으로 정도가 식별될 수 있다.
S220 단계에서, 장치 상태 모니터(1212, 도 3 참조)는 검출된 솔리드 스테이트 드라이브(SSDj)의 신뢰성 상태(RS)가 제 1 임계치(TH1)보다 큰지 판단한다. 만일, 솔리드 스테이트 드라이브(SSDj)의 신뢰성 상태(RS)가 제 1 임계치(TH1)보다 큰 경우(Yes 방향), 절차는 S225 단계로 이동한다. 반면, 솔리드 스테이트 드라이브(SSDj)의 신뢰성 상태(RS)가 제 1 임계치(TH1)보다 크지 않은 경우(No 방향), 절차는 S230 단계로 이동한다.
S225 단계에서, 매퍼(1214)는 솔리드 스테이트 드라이브(SSDj)의 데이터 보호 방식을 제 1 이레이저 코딩 세트(EC0 set)에 할당한다. 제 1 이레이저 코딩 세트(EC0 set)는 스토리지 시스템(1200)에 포함되는 모든 SSD들이 초기에 디폴트값으로 할당되는 데이터 보호 방식일 수 있다. 제 1 이레이저 코딩 세트(EC0 set)에 포함되는 SSD들에 분할되어 저장되는 데이터 또는 스트라이프는 상대적으로 가장 적은 수의 패리티 심볼을 포함할 수 있다. 즉, 부호화된 심볼들의 길이(n+k)에 대한 메시지 심볼의 길이를 나타내는 제 1 부호화율 'n/(n+k) = RO'이 가장 큰 경우에 대응한다.
S230 단계에서, 장치 상태 모니터(1212)는 솔리드 스테이트 드라이브(SSDj)의 신뢰성 상태(RS)가 제 2 임계치보다 크고 제 1 임계치(TH1)보다 작거나 같은지 판단한다. 만일, 솔리드 스테이트 드라이브(SSDj)의 신뢰성 상태(RS)가 제 2 임계치(TH2)보다 크고 제 1 임계치(TH1)보다 작거나 같은 경우(Yes 방향), 절차는 S235 단계로 이동한다. 반면, 솔리드 스테이트 드라이브(SSDj)의 신뢰성 상태(RS)가 제 2 임계치보다 크지 않은 경우(No 방향), 절차는 S240 단계로 이동한다.
S235 단계에서, 매퍼(1214)는 솔리드 스테이트 드라이브(SSDj)의 데이터 보호 방식을 제 2 이레이저 코딩 세트(EC1 set)에 할당한다. 제 2 이레이저 코딩 세트(EC1 set)에 할당된 SSD들에 저장되는 데이터 또는 스트라이프는 제 1 부호화율 (RO)보다 작은 제 2 부호화율(R1)일 수 있다. 즉, 제 2 이레이저 코딩 세트(EC1 set)는 전체 심볼들 중에서 패리티 심볼의 비율이 제 1 이레이저 코딩 세트(EC0 set)보다 많다는 것을 의미한다. 따라서, 신뢰성 상태(RS)가 감소함에 따라 제 2 이레이저 코딩 세트(EC1 set)를 적용하여 성능은 다소 감소되더라도 데이터 신뢰성을 어느 정도 향상시킬 수 있다.
S240 단계에서, 장치 상태 모니터(1212)는 솔리드 스테이트 드라이브(SSDj)의 신뢰성 상태(RS)가 제 3 임계치보다 크고 제 2 임계치(TH1)보다 작거나 같은지 판단한다. 만일, 솔리드 스테이트 드라이브(SSDj)의 신뢰성 상태(RS)가 제 3 임계치(TH3)보다 크고 제 2 임계치(TH2)보다 작거나 같은 경우(Yes 방향), 절차는 S245 단계로 이동한다. 반면, 솔리드 스테이트 드라이브(SSDj)의 신뢰성 상태(RS)가 제 3 임계치보다 크지 않은 경우(No 방향), 절차는 S250 단계로 이동한다.
S245 단계에서, 매퍼(1214)는 솔리드 스테이트 드라이브(SSDj)의 데이터 보호 방식을 제 3 이레이저 코딩 세트(EC2 set)에 할당한다. 제 3 이레이저 코딩 세트(EC2 set)에 할당된 SSD들에 저장되는 데이터 또는 스트라이프는 제 2 부호화율 (R1)보다 작은 제 3 부호화율(R2)일 수 있다. 즉, 제 3 이레이저 코딩 세트(EC2 set)는 상대적으로 패리티의 비율이 제 2 이레이저 코딩 세트(EC1 set)보다 크다는 것을 의미한다. 따라서, 신뢰성 상태(RS)가 감소함에 따라 제 3 이레이저 코딩 세트(EC2 set)를 적용하여 성능은 다소 감소되더라도 데이터 신뢰성을 어느 정도 향상시킬 수 있다.
S250 단계에서, 매퍼(1214)는 솔리드 스테이트 드라이브(SSDj)의 데이터 보호 방식을 다중 레벨의 이레이저 코딩 세트들로부터 배제시킨다. 즉, 추후에 적정 수의 이레이저 코딩 세트에서 배제된 SSD들이 충족되면, 데이터 보호 방식을 복제(REP) 방식으로 변경하게 될 것이다.
이상에서는 SSD들을 신뢰성 상태(RS)의 레벨에 따라 서로 다른 부호화율(Code rate) 또는 데이터 길이에 대응하는 이레이저 코딩 셋(EC)으로 관리하는 방법이 설명되었다. 이러한 다중 레벨의 이레이저 코딩 세트를 사용함에 따라, 신뢰성 상태(RS)의 변화에 대해 좀더 유연한 데이터 보호 방식을 SSD에 적용할 수 있을 것이다.
도 10은 본 발명의 시스템 컨트롤러에 의한 신뢰성 상태를 체크 및 그에 따른 솔리드 스테이트 드라이브의 데이터 보호 방식 변경 예를 보여주는 도면이다. 도 10을 참조하면, 매퍼(1214)는 장치 상태 모니터(1212)에 의해서 신뢰성 저하가 검출되기 전까지는 이레이저 코딩(EC) 방식으로 모든 SSD들(SSD_1~SSD_12)을 관리한다. 그리고 장치 상태 모니터(1212)에 의해서 3개의 SSD들(SSD_2, SSD_5, SSD_10)로부터 신뢰성 저하가 검출된 것으로 가정하기로 한다.
신뢰성 저하가 검출된 솔리드 스테이트 드라이브(SSD_2)는 제 1 이레이저 코딩 세트(EC_Set_1)에 포함되어 있었다. 하지만, 장치 상태 모니터(1212)에 의해서 기준치 이하로 신뢰성이 저하된 것으로 감지되면, 솔리드 스테이트 드라이브(SSD_2)는 제 1 이레이저 코딩 세트(EC_Set_1)에서 배제(Exclude)된다.
여기서, 제 1 이레이저 코딩 세트(EC_Set_1)에서 솔리드 스테이트 드라이브(SSD_2)가 배제(Exclude)된다는 의미는 새로운 데이터의 쓰기 동작시에 제 1 이레이저 코딩 세트(EC_Set_1)에서 배제됨을 의미한다. 이미 솔리드 스테이트 드라이브(SSD_2)에 기입되어 스트라이프 단위로 관리되는 데이터는 제 1 이레이저 코딩 세트(EC_Set_1)의 데이터로서 간주된다. 즉, 솔리드 스테이트 드라이브(SSD_2)에 대한 읽기 동작시에는 여전히 제 1 이레이저 코딩 세트(EC_Set_1)로서의 자격은 유지된다.
마찬가지로 신뢰성 저하가 검출된 솔리드 스테이트 드라이브(SSD_5)는 제 2 이레이저 코딩 세트(EC_Set_2)에 포함되어 있었다. 하지만, 장치 상태 모니터(1212)에 의해서 기준치 이하로 신뢰성이 저하된 것으로 감지되면, 솔리드 스테이트 드라이브(SSD_5)는 제 2 이레이저 코딩 세트(EC_Set_2)에서 배제(Exclude)된다. 제 2 이레이저 코딩 세트(EC_Set_2)에서 솔리드 스테이트 드라이브(SSD_5)가 배제(Exclude)된다는 의미는, 새로운 데이터의 쓰기 동작시에 제 2 이레이저 코딩 세트(EC_Set_2)에서 배제됨을 의미한다. 이미 솔리드 스테이트 드라이브(SSD_5)에 기입되어 스트라이프 단위로 관리되는 데이터는 제 2 이레이저 코딩 세트(EC_Set_2)의 데이터로서 간주된다. 즉, 솔리드 스테이트 드라이브(SSD_5)에 대한 읽기 동작시에는 여전히 제 2 이레이저 코딩 세트(EC_Set_2)로서의 자격은 유지된다.
신뢰성 저하가 검출된 솔리드 스테이트 드라이브(SSD_10)는 제 3 이레이저 코딩 세트(EC_Set_3)에 포함되어 있었다. 하지만, 장치 상태 모니터(1212)에 의해서 기준치 이하로 신뢰성이 저하된 것으로 감지되면, 솔리드 스테이트 드라이브(SSD_10)는 제 3 이레이저 코딩 세트(EC_Set_3)에서 배제(Exclude)된다. 제 3 이레이저 코딩 세트(EC_Set_3)에서 솔리드 스테이트 드라이브(SSD_10)가 배제(Exclude)된다는 의미는, 새로운 데이터의 쓰기 동작시에 제 3 이레이저 코딩 세트(EC_Set_3)에서 배제됨을 의미한다. 이미 솔리드 스테이트 드라이브(SSD_10)에 기입되어 스트라이프 단위로 관리되는 데이터는 제 3 이레이저 코딩 세트(EC_Set_3)의 데이터로서 간주된다. 즉, 솔리드 스테이트 드라이브(SSD_10)에 대한 읽기 동작시에는 여전히 제 3 이레이저 코딩 세트(EC_Set_3)로서의 자격은 유지된다.
여기서, 솔리드 스테이트 드라이브들(SSD_2, SSD_5, SSD_10)이 각각 이레이저 코딩 세트들(EC_Set_1, EC_Set_2, EC_Set_3)로부터 배제된 상태를 일정 시간 유지하게 된다. 왜냐하면, 데이터 보호 방식을 복제(REP) 방식으로 운용하기 위한 복제 세트(REP set)를 구성하기 위해서는 적어도 2개 이상의 솔리드 스테이트 드라이브들이 구비되어야 하기 때문이다. 만일, 데이터 보호 방식을 복제(REP) 방식으로 운용하기 위한 복제 세트(REP set)가 3개의 솔리드 스테이트 드라이브(SSD)로 구성되는 경우, 이레이저 코딩 세트들(EC_Set_1, EC_Set_2, EC_Set_3)로부터 배제된 3개의 솔리드 스테이트 드라이브들(SSD_2, SSD_5, SSD_10)가 모여야 한다. 따라서, 솔리드 스테이트 드라이브들(SSD_2, SSD_5, SSD_10)은 새로운 복제 세트(REP set)를 구성하게 된다. 이러한 특징은 후술하는 도 11에서 보다 상세히 설명하기로 한다.
도 11은 새로운 복제 세트(REP set)를 구성하여 복제(REP) 방식으로 관리되는 솔리드 스테이트 드라이브들을 보여주는 도면이다. 도 11을 참조하면, 이레이저 코딩 세트들(EC_Set_1, EC_Set_2, EC_Set_3)로부터 배제된 3개의 솔리드 스테이트 드라이브들(SSD_2, SSD_5, SSD_10) 각각은 새로운 제 1 복제 세트(REP_Set_1)를 구성한다.
매퍼(1214)는 신뢰성 저하가 검출되어 이레이저 코딩 세트들(EC_Set_1, EC_Set_2, EC_Set_3)로부터 각각 배제된 된 3개의 SSD들(SSD_2, SSD_5, SSD_10)을 수집한다. 매퍼(1214)는 수집된 SSD들(SSD_2, SSD_5, SSD_10)을 새로운 제 1 복제 세트(REP Set_1)에 할당한다. 하지만, 제 1 복제 세트(REP Set_1)에 할당된 SSD들(SSD_2, SSD_5, SSD_10)의 심볼들(또는 청크들)에는 여전히 유효한 데이터가 저장되어 있을 수 있다. 즉, 솔리드 스테이트 드라이브(SSD_2)의 유닛들(UNIT1, UNIT3, UNIT6)은 제 1 이레이저 코딩 세트들(EC_Set_1)의 다른 SSD들과 유효한 스트라이프를 구성하고 있다. 따라서, 솔리드 스테이트 드라이브(SSD_2)의 유닛들(UNIT1, UNIT3, UNIT6)은 읽기 요청시 이레이저 코딩으로 관리되어야 한다. 마찬가지로, 솔리드 스테이트 드라이브(SSD_5)의 유닛들(UNIT2, UNIT3)도 제 2 이레이저 코딩 세트들(EC_Set_2)의 다른 SSD들과의 스트라이프 구성을 유지하고 있다. 솔리드 스테이트 드라이브(SSD_10)의 유닛들(UNIT1, UNIT2, UNIT3)도 제 3 이레이저 코딩 세트들(EC_Set_3)의 다른 SSD들과의 스트라이프 구성을 유지하고 있을 수 있다.
따라서, 새로운 제 1 복제 세트(REP_Set_1)를 구성하는 3개의 솔리드 스테이트 드라이브들(SSD_2, SSD_5, SSD_10)의 읽기 동작시에는 여전히 각각의 이레이저 코딩 세트들이 유지된다. 반면에, 새로운 제 1 복제 세트(REP_Set_1)를 구성하는 3개의 솔리드 스테이트 드라이브들(SSD_2, SSD_5, SSD_10)에 대한 쓰기 요청이 발생하는 경우, 3개의 유닛들로 구성되는 복제(REP) 스트라이프가 선택된다. 그리고 쓰기 요청된 데이터는 원본 심볼이 솔리드 스테이트 드라이브들(SSD_2)의 유닛(UNIT4)에, 복제된 심볼들은 솔리드 스테이트 드라이브들(SSD_5, SSD_10) 각각의 유닛들(UNIT4, UNIT5)에 저장될 수 있다.
도 12 내지 도 13은 이레이저 코딩 세트에서 배제된 SSD를 대체할 새로운 SSD를 선택하는 방법을 보여주는 도면들이다. 도 12를 참조하면, 제 1 이레이저 코딩 세트(EC_Set_1)에서 솔리드 스테이트 드라이브(SSD_2)의 배제에 따라 새로운 솔리드 스테이트 드라이브(SSD_α)를 추가하여 새로운 제 1 이레이저 코딩 세트(New EC_Set_1)를 구성할 수 있다.
솔리드 스테이트 드라이브(SSD_α)는 오버-프로비저닝 영역(OP area)에 할당된 솔리드 스테이트 드라이브(SSD)일 수 있다. 새로운 제 1 이레이저 코딩 세트(New EC_Set_1)의 구성에 따라 쓰기 요청이 발생하면, 솔리드 스테이트 드라이브들(SSD_1, SSD_3, SSD_4, SSD_α)에 분할되어 데이터가 기입될 것이다. 다른 실시 예에서, 솔리드 스테이트 드라이브(SSD_α)는 예비 솔리드 스테이트 드라이브(Reserved SSD)를 활용하여 제공될 수도 있을 것이다.
도 13을 참조하면, 제 3 이레이저 코딩 세트(EC_Set_3)의 솔리드 스테이트 드라이브(SSD_9)를 추가하여 새로운 제 1 이레이저 코딩 세트(New EC_Set_1)를 구성할 수 있다. 매퍼(1214)에 의해 신뢰성 저하가 감지된 솔리드 스테이트 드라이브(SSD_2)가 제 1 이레이저 코딩 세트(EC_Set_1)에서 배제되었다. 따라서, 새로운 제 1 이레이저 코딩 세트(New EC_Set_1)를 구성하기 위해 솔리드 스테이트 드라이브(SSD_2)를 대체할 장치가 필요하다. 이때, 제 3 이레이저 코딩 세트(EC_Set_3)를 구성하는 솔리드 스테이트 드라이브(SSD_9)가 사용될 수 있다.
솔리드 스테이트 드라이브(SSD_9)는 새로운 제 1 이레이저 코딩 세트(New EC_Set_1)로 할당된 후에는 일정 기간 동안 제 3 이레이저 코딩 세트(EC_Set_3)로서 사용된다. 예를 들면, 솔리드 스테이트 드라이브(SSD_9)의 유닛들(UNIT2, UNIT3)은 제 3 이레이저 코딩 세트(EC_Set_3)로 맵핑된 시점에 구성된 스트라이프들에 대응한다. 따라서, 솔리드 스테이트 드라이브(SSD_9)의 유닛들(UNIT2, UNIT3)에 대한 읽기 요청이 발생하면, 이들 유닛들은 제 3 이레이저 코딩 세트(EC_Set_3)로 맵핑된 것처럼 관리된다.
반면에, 새로운 제 1 이레이저 코딩 세트(New EC_Set_1)에 대한 쓰기 요청이 발생하면, 솔리드 스테이트 드라이브들(SSD_1, SSD_3, SSD_4, SSD_9)에 데이터가 분할되어 저장되어야 한다. 이때, 솔리드 스테이트 드라이브(SSD_9)의 비어있는 유닛들이 새로운 제 1 이레이저 코딩 세트(New EC_Set_1)의 스트라이프로 제공될 수 있다.
이상에서는 새로운 이레이저 코딩 세트를 구성하는 맵핑 방식이 간략히 설명되었다. 하지만, 상술한 실시 예들 이외에도 다양한 방법들이 배제된 SSD를 대체할 새로운 SSD를 선택하는데 사용될 수 있을 것이다.
이상에서와 같이 도면과 명세서에서 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 복수의 솔리드 스테이트 드라이브들을 포함하는 스토리지 시스템의 운용 방법에 있어서:
    상기 복수의 솔리드 스테이트 드라이브들을 이레이저 코딩(Erasure coding)을 적용하기 위한 이레이저 코딩 세트로 구성하는 단계;
    상기 복수의 솔리드 스테이트 드라이브들 각각의 신뢰성 상태를 모니터링하는 단계;
    상기 복수의 솔리드 스테이트 드라이브들 중에서 상기 신뢰성 상태가 기준치보다 낮아지는 장치를 선택하여 상기 이레이저 코딩 세트에서 배제하는 단계; 그리고
    상기 이레이저 코딩 세트에서 배제된 적어도 하나의 솔리드 스테이트 드라이브를 이용하여 복제 방식의 데이터 보호를 적용하기 위한 복제 세트를 구성하는 단계를 포함하는 운용 방법.
  2. 제 1 항에 있어서,
    상기 신뢰성 상태는 상기 복수의 솔리드 스테이트 드라이브들 각각의 읽기 레이턴시에 대응하는 운용 방법.
  3. 제 1 항에 있어서,
    상기 신뢰성 상태는 상기 복수의 솔리드 스테이트 드라이브들 각각의 읽기 실패 횟수에 대응하는 운용 방법.
  4. 제 1 항에 있어서,
    상기 복제 세트를 구성하는 단계에서, 상기 이레이저 코딩 세트에서 배제된 상기 적어도 하나의 솔리드 스테이트 드라이버의 수가 미리 결정된 수에 도달한 후에 상기 복제 세트를 구성하는 운용 방법.
  5. 제 4 항에 있어서,
    상기 복제 세트를 구성하는 단계는, 원본 데이터를 제 1 솔리드 스테이트 드라이브의 메모리 유닛에 저장하고, 상기 원본 데이터의 복제 데이터를 제 2 솔리드 스테이트 드라이브의 메모리 유닛에 저장하는 단계를 포함하는 운용 방법.
  6. 제 4 항에 있어서,
    상기 이레이저 코딩 세트에서 배제된 적어도 하나의 장치는 데이터 읽기 시에는 상기 이레이저 코딩 세트의 스트라이프로 관리되는 운용 방법.
  7. 제 1 항에 있어서,
    상기 이레이저 코딩 세트에서 배제된 적어도 하나의 솔리드 스테이트 드라이브를 제 1 이레이저 코딩 세트로 구성하는 단계를 더 포함하되,
    상기 이레이저 코딩 세트의 인코딩은 제 1 부호화율을 따르고, 상기 제 1 이레이저 코딩 세트의 인코딩은 상기 제 1 부호화율보다 작은 제 2 부호화율을 따르는 운용 방법.
  8. 제 1 항에 있어서,
    오버-프로비저닝 영역의 솔리드 스테이트 드라이브를 상기 신뢰성 상태가 기준치보다 낮아지는 장치를 대체하여 이레이저 코딩 세트를 재구성하는 단계를 더 포함하는 운용 방법.
  9. 복수의 솔리드 스테이트 드라이브; 그리고
    상기 복수의 솔리드 스테이트 드라이브를 이레이저 코딩(Erasure coding)을 적용하기 위한 이레이저 코딩 세트 또는 복제 방식의 데이터 보호를 적용하기 위한 복제 세트로 구성하여 관리하는 시스템 컨트롤러를 포함하되,
    상기 시스템 컨트롤러는 상기 복수의 솔리드 스테이트 드라이브 각각의 신뢰성 상태를 모니터링하며, 상기 복수의 솔리드 스테이트 드라이브 중에서 상기 신뢰성 상태가 기준치보다 낮아지는 어느 하나를 선택하여 상기 이레이저 코딩 세트에서 배제하고, 상기 배제된 적어도 하나의 솔리드 스테이트 드라이브를 상기 복제 세트로 할당하는 스토리지 시스템.
  10. 스토리지 시스템의 운용 방법에 있어서:
    제 1 데이터 보호 정책을 적용하기 위해 복수의 솔리드 스테이트 드라이브를 제 1 세트로 구성하는 단계;
    상기 복수의 솔리드 스테이트 드라이브 각각의 신뢰성 상태를 모니터링하는 단계;
    상기 복수의 솔리드 스테이트 드라이브 중에서 상기 신뢰성 상태가 기준치보다 낮아지는 솔리드 스테이트 드라이브를 선택하여 상기 제 1 세트에서 배제하는 단계; 그리고
    상기 제 1 세트에서 배제된 적어도 하나의 상기 솔리드 스테이트 드라이브에 대해 제 2 데이터 보호 정책을 적용하기 위한 제 2 세트를 구성하는 단계를 포함하는 운용 방법.
KR1020220078020A 2022-06-27 2022-06-27 복수의 ssd를 포함하는 스토리지 시스템 및 그것의 운용 방법 KR20240001414A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020220078020A KR20240001414A (ko) 2022-06-27 2022-06-27 복수의 ssd를 포함하는 스토리지 시스템 및 그것의 운용 방법
US18/076,616 US20230418476A1 (en) 2022-06-27 2022-12-07 Storage systems including a plurality of solid state drives and management methods thereof
CN202310539725.7A CN117311600A (zh) 2022-06-27 2023-05-15 包括多个固态驱动器的存储系统及其管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220078020A KR20240001414A (ko) 2022-06-27 2022-06-27 복수의 ssd를 포함하는 스토리지 시스템 및 그것의 운용 방법

Publications (1)

Publication Number Publication Date
KR20240001414A true KR20240001414A (ko) 2024-01-03

Family

ID=89245176

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220078020A KR20240001414A (ko) 2022-06-27 2022-06-27 복수의 ssd를 포함하는 스토리지 시스템 및 그것의 운용 방법

Country Status (3)

Country Link
US (1) US20230418476A1 (ko)
KR (1) KR20240001414A (ko)
CN (1) CN117311600A (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9785364B2 (en) 2015-10-17 2017-10-10 International Business Machines Corporation Increasing data storage reliability in a heterogeneous storage system
US10552062B2 (en) 2017-03-20 2020-02-04 Samsung Electronics Co., Ltd. System and method for storing very large key value objects
US11275762B2 (en) 2017-03-20 2022-03-15 Samsung Electronics Co., Ltd. System and method for hybrid data reliability for object storage devices

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6948102B2 (en) * 2002-04-29 2005-09-20 International Business Machines Corporation Predictive failure analysis for storage networks
JP4933722B2 (ja) * 2004-06-16 2012-05-16 富士通株式会社 ディスク制御装置、ディスクパトロール方法およびディスクパトロールプログラム
TWI369688B (en) * 2008-05-21 2012-08-01 Ite Tech Inc Integrated storage device and controlling method thereof
WO2013001581A1 (en) * 2011-06-30 2013-01-03 Hitachi, Ltd. Server system and method for controlling information system
US11513692B2 (en) * 2016-06-30 2022-11-29 EMC IP Holding Company LLC Arranging SSD resources based on estimated endurance
US10275180B2 (en) * 2017-05-08 2019-04-30 Samsung Electronics Co., Ltd. Ethernet SSD system including storage offload engine (SoE) controller and ethernet switch
US10270469B2 (en) * 2017-05-24 2019-04-23 Vmware, Inc. Efficient data write approach for distributed multi-mirror erasure coding system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9785364B2 (en) 2015-10-17 2017-10-10 International Business Machines Corporation Increasing data storage reliability in a heterogeneous storage system
US10552062B2 (en) 2017-03-20 2020-02-04 Samsung Electronics Co., Ltd. System and method for storing very large key value objects
US11275762B2 (en) 2017-03-20 2022-03-15 Samsung Electronics Co., Ltd. System and method for hybrid data reliability for object storage devices

Also Published As

Publication number Publication date
US20230418476A1 (en) 2023-12-28
CN117311600A (zh) 2023-12-29

Similar Documents

Publication Publication Date Title
US11886294B2 (en) Distributed storage system
CN111480148B (zh) 具有对等数据恢复的存储系统
US10459814B2 (en) Drive extent based end of life detection and proactive copying in a mapped RAID (redundant array of independent disks) data storage system
US7610506B2 (en) Data processing system, data processing method and storage apparatus
US9081690B2 (en) Storage system and management method of control information therein
KR101148697B1 (ko) 디스크 어레이 전체에서의 패리티 분배 방법 및 저장시스템의 디스크들 전체에서의 패리티 분배 시스템
CN112597069A (zh) 存储系统、主机系统和存储系统的操作方法
US20150378613A1 (en) Storage device
CN113176858B (zh) 数据处理方法、存储系统及存储设备
US20180275894A1 (en) Storage system
US20190205053A1 (en) Storage apparatus and distributed storage system
US9543988B2 (en) Adaptively strengthening ECC for solid state cache
US11301137B2 (en) Storage system and data arrangement method of storage system
CN111857552A (zh) 存储管理方法、电子设备和计算机程序产品
CN113641303A (zh) 用于故障弹性存储的系统、方法和设备
US20210349781A1 (en) Systems, methods, and devices for data recovery using parity space as recovery space
US10802958B2 (en) Storage device, its controlling method, and storage system having the storage device
KR20210131058A (ko) 메모리 시스템 내 데이터를 보호하는 장치 및 방법
KR20240001414A (ko) 복수의 ssd를 포함하는 스토리지 시스템 및 그것의 운용 방법
US20210349780A1 (en) Systems, methods, and devices for data recovery with spare storage device and fault resilient storage device
US9645745B2 (en) I/O performance in resilient arrays of computer storage devices
CN108932176B (zh) 数据降级存储方法及装置
US11989434B1 (en) Optimizing protection of highly deduped data for performance and availability