KR102574324B1 - 가용 용량의 손실없이 키-값 스토리지 서버의 취약 윈도우를 줄이는 방법 - Google Patents

가용 용량의 손실없이 키-값 스토리지 서버의 취약 윈도우를 줄이는 방법 Download PDF

Info

Publication number
KR102574324B1
KR102574324B1 KR1020200014532A KR20200014532A KR102574324B1 KR 102574324 B1 KR102574324 B1 KR 102574324B1 KR 1020200014532 A KR1020200014532 A KR 1020200014532A KR 20200014532 A KR20200014532 A KR 20200014532A KR 102574324 B1 KR102574324 B1 KR 102574324B1
Authority
KR
South Korea
Prior art keywords
data
data set
redundancy
redundant
amount
Prior art date
Application number
KR1020200014532A
Other languages
English (en)
Other versions
KR20200103535A (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 KR20200103535A publication Critical patent/KR20200103535A/ko
Application granted granted Critical
Publication of KR102574324B1 publication Critical patent/KR102574324B1/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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/353Adaptation to the channel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1461Backup scheduling policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/154Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/373Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 일 특징에 따른 시스템은, 데이터 세트에 대응하는 데이터 액세스 요청을 수신하도록 구성된 데이터 인터페이스 회로를 포함할 수 있다. 시스템은 각각 데이터를 저장하도록 구성된 복수의 스토리지 장치들을 포함하되, 상기 복수의 스토리지 장치들은 가용 저장 공간의 양, 사용된 저장 공간의 양, 그리고 리던던트 저장 공간의 양을 가진다. 시스템은, 상기 복수의 스토리지 장치들 내에서 가용 저장 공간의 양을 모니터링하고, 하나 이상의 데이터 세트에 대해, 각각의 데이터 세트에 대응할 리던던시 레벨을 결정하고, 상기 데이터 세트들 중에서 제 1 데이터 세트에 대해, 상기 제 1 데이터 세트에 대응할 리던던트 데이터 부분을 생성하고, 적어도 부분적으로, 상기 가용 저장 공간의 양에 기초하여, 상기 제 1 데이터 세트에 대응할 상기 리던던시 레벨을 동적으로 조정하도록 구성되는 데이터 관리 회로를 포함한다.

Description

가용 용량의 손실없이 키-값 스토리지 서버의 취약 윈도우를 줄이는 방법{REDUCING VULNERABILITY WINDOW IN KEY VALUE STORAGE SERVER WITHOUT SACRIFICING USABLE CAPACITY}
본 발명은 데이터 스토리지에 관한 것으로, 보다 구체적으로는 가용 용량의 손실없이 키-값 스토리지 서버의 취약성 윈도우를 줄이는 것과 관련이 있다.
폭발적인 데이터 증가는 잘 알려져 있다. 일부 영역에서 이와 같은 트렌드는 비용 효율성을 높이고 세밀화된 데이터 분할(finer granular)을 위한 분할 스토리지(disaggregated storage) 및 컴퓨터 아키텍처로 진척되고 있다. 이는 컴퓨터 장치가 병치된 시스템(collocated system)에서와 달리 네트워크를 통해 스토리지 장치의 임시 데이터를 저장하고 액세스함을 의미할 수 있다. 분할 스토리지(disaggregated storage)는 각 노드가 로컬 디스크의 공간으로 제한되는 병치된 스토리지(collocated storage)보다 많은 장점을 갖는다. 분할 스토리지에서 시스템은 네트워크를 통해 무수한 리소스를 사용할 수 있다.
코딩 이론에서, 소거 코드는 비트 소거(비트 에러가 아닌)를 전제로 한 전진 에러 정정(Forward Error Correction: FEC) 코드이며, 이는 k 심볼의 메시지를 n 심볼을 갖는 더 긴 메시지(코드 워드)로 변환하여 원래의 메시지가 n 개의 심볼의 서브 세트로부터 복구될 수 있도록 한다. 여기서, 'r = k / n'을 코드율이라 한다. k'/k(k'는 복구에 필요한 심볼의 수를 나타냄)를 수신 효율이라 한다. 소거 코드의 한 형태는 최대 거리 분리 가능 코드(MDS 코드)이다.
본 발명의 목적은 미러링 그리고/또는 소거 코딩을 사용하여 효율적인 리던던시를 적용하는 메모리 관리 기술을 제공하는데 있다.
본 발명의 일 특징에 따르면, 시스템은 각각 데이터 세트에 대응하는 데이터 액세스 요청들을 수신하도록 구성된 데이터 인터페이스 회로를 포함할 수 있다. 시스템은 각각 데이터를 저장하도록 구성된 복수의 스토리지 장치들을 포함하되, 상기 복수의 스토리지 장치들은 가용 저장 공간의 양, 사용된 저장 공간의 양, 그리고 리던던트 저장 공간의 양을 가진다. 시스템은, 데이터 관리 회로를 포함하되, 상기 데이터 관리 회로는, 상기 복수의 스토리지 장치들 내에서 가용 저장 공간의 양을 모니터링하고, 하나 이상의 데이터 세트에 대해, 각각의 데이터 세트에 대응할 리던던시 레벨을 결정하고, 상기 데이터 세트들 중에서 제 1 데이터 세트에 대해, 상기 제 1 데이터 세트에 대응할 리던던트 데이터 부분을 생성하고, 적어도 부분적으로, 상기 가용 저장 공간의 양에 기초하여, 상기 제 1 데이터 세트에 대응할 상기 리던던시 레벨을 동적으로 조정하도록 설정된다.
본 발명의 다른 특징에 따르면, 장치는 각각 데이터 세트들을 저장하도록 구성된 복수의 스토리지 장치들을 포함하되, 상기 복수의 스토리지 장치들은 가용 저장 공간의 양, 사용된 저장 공간의 양, 그리고 리던던트 저장 공간의 양을 가진다. 장치는 데이터 관리 회로를 포함할 수 있다. 상기 데이터 관리 회로는, 상기 복수의 스토리지 장치들 내에서의 상기 가용 저장 공간의 양을 측정하도록 구성된 스토리지 모니터 회로를 포함할 수 있다. 상기 데이터 관리 회로는, 하나 이상의 데이터 세트에 대해, 제 1 데이터 세트에 대응할 리던던시 레벨을 결정하고, 적어도 부분적으로, 상기 가용 저장 공간의 양에 기초하여 상기 제 1 데이터 세트에 대응할 상기 리던던시 레벨을 동적으로 조정하도록 구성되는 리던던시 할당 회로를 포함할 수 있다. 상기 데이터 관리 회로는 상기 제 1 데이터 세트에 대해, 각각의 데이터 세트에 대응할, 존재할 수 있는, 리던던트 데이터 부분을 생성하도록 구성된 적어도 하나의 리던던시 코드 발생기를 포함할 수 있다.
본 발명의 또 다른 특징에 따르면, 장치는 각각 데이터 세트들을 저장하도록 구성된 복수의 스토리지 장치들을 포함하되, 상기 복수의 스토리지 장치들은 가용 저장 공간의 양, 사용된 저장 공간의 양, 그리고 리던던트 저장 공간의 양을 가지며, 상기 리던던트 저장 공간은 사용된 저장 공간에 대응한다. 장치는 적어도 부분적으로 상기 가용 저장 공간의 양에 기초하여, 상기 사용된 저장 공간에 대한 상기 리던던트 저장 공간의 비율을 동적으로 조정하도록 구성된 데이터 관리 회로를 포함할 수 있다.
하나 이상의 구현의 세부 사항은 첨부된 도면 및 이하의 설명에서 설명된다. 다른 특징들은 상세한 설명 및 도면 및 청구 범위로부터 명백해질 것이다.
데이터 저장을 위해, 제시된 바와 같이 적어도 하나의 도면들과 관련하여 도시되고/되거나 기술된 바와 같이, 가용 용량을 희생시키지 않으면서도 키-값 저장 서버에서 취약성 윈도우를 감소시키기 위한 시스템 그리고/또는 방법이 청구 범위에서 보다 구체적으로 설명될 것이다.
상술한 특징에 따른 본 발명의 시스템은, 가용 용량을 그대로 유지하면서 더 높은 수준의 성능과 가용성/신뢰성을 제공할 수 있다. 따라서, 시스템 비용을 크게 절감할 수 있다.
도 1은 개시된 주제에 따른 시스템의 예시적인 실시 예의 블록도이다.
도 2는 개시된 주제에 따른 시스템의 예시적인 실시 예의 블록도이다.
도 3a는 개시된 주제에 따른 시스템의 예시적인 실시 예의 블록도이다.
도 3b는 개시된 주제에 따른 시스템의 예시적인 실시 예의 블록도이다.
도 3c는 개시된 주제에 따른 시스템의 예시적인 실시 예의 블록도이다.
도 3d는 개시된 주제에 따른 시스템의 예시적인 실시 예의 블록도이다.
도 4는 개시된 주제에 따른 시스템의 예시적인 실시 예의 블록도이다.
도 5는 개시된 주제의 원리에 따라 형성된 장치를 포함할 수 있는 정보 처리 시스템의 개략적인 블록도이다.
이하, 일부 예시적인 실시 예들이 도시된 첨부된 도면을 참조하여 다양한 예시적인 실시 예들을 더 상세히 설명될 것이다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며, 여기에서 설명하는 실시 예에 한정되지 않는다. 오히려, 이들 예시적인 실시 예는 본 개시가 철저하고 완전하도록 제공되며, 본 개시 내용의 범위를 당업자에게 완전히 전달할 것이다. 도면에서, 층 및 영역의 크기 및 상대 크기는 명확성을 위해 과장될 수 있다.
요소 또는 층이 다른 요소 또는 층 “에”, “에 연결된”, “에 결합된” 것으로 언급되는 때, 그것은 다른 요소 또는 층“에 직접적으로”, “에 직접적으로 연결된”, “에 직접적으로 결합된”일 수 있다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어"있다거나 "직접 접속되어"있다거나 "직접 결합되어"있다고 언급될 때에는, 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 동일한 참조 번호는 전체에 걸쳐 동일한 요소를 지칭한다. 여기서 사용된 용어 "그리고/또는"은 하나 이상의 관련된 열거 항목의 임의의 및 모든 조합을 포함한다.
비록 여기에서 제 1, 제 2, 제3 등의 용어들은 다양한 요소들, 성분들, 영역들, 층들 그리고/또는 섹션들을 설명하기 위해 사용되지만, 이러한 요소들, 성분들, 영역들, 층들 그리고/또는 섹션들은 이러한 용어들로 인해 제한되지 않는 것으로 이해될 것이다. 이러한 용어들은 다른 요소, 성분, 영역, 층, 또는 섹션으로부터 하나의 요소, 구성, 영역, 층 또는 섹션을 구별하기 위해 사용된다. 따라서, 후술하는 제 1 구성 요소, 성분, 영역, 층, 또는 섹션은 본 발명의 사상 및 범위를 벗어나지 않고, 제 2 구성 요소, 성분, 영역, 층, 또는 섹션을 지칭할 수 있다.
하나의 요소 또는 도면에서 도시된 다른 구성 요소(들) 또는 특징(들)과의 특징적인 관계를 설명하기 위한 설명을 용이하게 하기 위해 “아래의”, “아래”, “낮은”, “특정 부분 아래”, “위에”, “상부”와 같은 공간적이고 상대적인 용어들이 여기에서 사용될 수 있다. 공간적이고 상대적인 용어들은 도면에서 묘사된 방향에 더해 사용 또는 동작에서 장치의 다른 방향들을 포함하도록 의도된 것이 이해될 것이다. 예를 들면, 만약 도면의 장치가 뒤집어지면, 다른 구성 요소들 또는 특징들의 “아래” 또는 “아래의” 또는 “특정 부분 아래”로 설명된 구성요소들은 다른 구성 요소들 또는 특징들의 “위로” 맞춰지게 된다. 따라서, “아래의” 또는 “특정 부분 아래”의 예시적인 용어들은 위 또는 아래 방향 모두를 포함할 수 있다. 장치는 다르게 맞춰질 수 있으며(예를 들면, 90도 도는 다른 방향으로 회전됨) 그리고 공간적으로 상대적인 기술어들은 그에 따라 해석되어야 한다.
마찬가지로, "높은", "낮은", "풀업", "풀다운", "1", "0"등과 같은 전기 용어들은 도면에 도시된 바와 같이 다른 전압 레벨 또는 다른 요소(들) 또는 특징(들)에 대하여 전압 레벨 또는 전류를 설명하기 위해 설명의 편의를 위해 여기에서 사용될 수 있다. 전기적 상대 용어는 도면에 도시된 전압 또는 전류에 더하여 사용 또는 동작중인 장치의 상이한 기준 전압을 포함하는 것으로 이해될 것이다. 예를 들어, 도면의 장치 또는 신호가 반전되거나 다른 기준 전압, 전류 또는 전하를 사용하는 경우, "높은" 또는 "풀업"으로 설명된 요소는 새로운 기준 전압 또는 전류에 비해 "낮은" 또는 "풀다운"된 것이다. 따라서, 예시적인 용어 "높은"은 비교적 저전압 또는 고전압 또는 전류를 모두 포함할 수 있다. 장치는 다른 전기 기준 프레임 및 본 명세서에서 사용된 전기적 상대 디스크립터에 기초하여 해석될 수 있다.
본 명세서에서 사용된 용어들은 단지 특정한 실시 예들을 설명하기 위한 것이고, 본 발명을 제한하려는 것으로 의도되지 않았다. 본 명세서에서 사용된 바와 같이, 문맥상 명백하게 다르게 뜻하지 않는 한, 단수 형태 “하나”는 복수의 형태도 포함하는 것으로 의도된다. “구성되는”, “구성되고 있는”, “포함하는”, 그리고 “포함하고 있는” 용어들이 본 명세서에서 사용될 때, 이러한 용어들은 정해진 특징들, 정수들, 단계들, 동작들, 요소들, 그리고/또는 성분들이 존재를 명시하나, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 성분들, 그리고/또는 그것들의 그룹들의 추가 또는 존재를 불가능하게 하지 않는다.
예시적인 실시 예는 이상화된 예시적인 실시 예(및 중간 구조)의 개략적인 단면도를 참조하여 본 명세서에 기술된다. 따라서, 예를 들어 제조 기술 그리고/또는 공차(tolerances)의 결과로서 도시의 형태로부터의 변형이 예상된다. 따라서, 예시적인 실시 예는 본 명세서에 예시된 영역의 특정 형상으로 제한되는 것으로 해석되어서는 안되며, 예를 들어 제조에 기인한 형상의 편차를 포함해야 한다. 예를 들어, 직사각형으로 예시된 주입 영역은 전형적으로, 주입 영역에서 주입되지 않은 영역으로의 이진 변화가 아니라 그 에지에서의 주입 농도의 원형 또는 곡선 그리고/또는 기울기를 가질 것이다. 마찬가지로, 주입에 의해 형성된 매립 영역은 매립 영역과 주입이 이루어지는 표면 사이의 영역에서 일부 주입을 야기할 수 있다. 따라서, 도면에 도시된 영역은 본질적으로 개략적이며, 이들의 형상은 장치의 영역의 실제 형상을 설명하기 위한 것이 아니며 본 개시 내용의 범위를 제한하려는 것이 아니다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 또한, 일반적으로 사용되는 사전에 정의된 용어와 같은 용어는 관련 기술의 맥락에서 그 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며 이상적이지 않거나 지나치게 공식적인 의미로 해석되지 않을 것임을 이해할 것이다.
이하, 첨부 된 도면을 참조하여 본 발명의 바람직한 실시 예를 상세히 설명하기로 한다.
도 1은 분할 스토리지 클러스터(예를 들어, 도 4에 도시된 바와 같이) 의 일부를 포함할 수 있는 시스템(100)의 예시적인 블록도이다. 일부 실시 예들에서, 시스템(100)은 데이터를 저장하기 위해 이용될 수 있다.
전술한 바와 같이, 다양한 실시 예에서, 데이터가 네트워크 내의 다수의 장치에 걸쳐 저장되는 분산, 원격 또는 분리(분할) 시스템이 존재할 수 있다. 이러한 실시 예에서, 호스트 장치(예를 들어, 서버 컴퓨터, 개인용 컴퓨터, 태블릿, 또는 다른 컴퓨팅 장치 또는 가상 머신)는 데이터가 분할된 시스템에 저장되도록 요구할 수 있다(일상적으로 "클라우드" 또는 이와 같은 마케팅 용어로 언급됨). 이 분할된 시스템은 시스템(100)과 같은 하나 이상의 로컬화된 데이터 저장 클러스터 또는 노드를 포함할 수 있다.
도시된 실시 예에서, 시스템(100)은 복수의 스토리지 장치들(106)을 포함할 수 있다. 이들 스토리지 장치들(106) 각각은 데이터(예를 들어, 데이터 세트(101) 그리고/또는 데이터 조각(111))를 저장하도록 구성될 수 있다. 스토리지 장치들(106)은 이종 또는 동종일 수 있다. 이들은 예를 들어, 영구 메모리 장치, 솔리드 스테이트 메모리 또는 장치(SSD), 자기 메모리(하드 드라이브 또는 HDD), 또는 광학 메모리와 같은 많은 다른 기술 중 하나 이상을 포함할 수 있다. 다양한 실시 예에서, 저장(스토리지) 장치는 휘발성 또는 비휘발성일 수 있다. 상기 내용은 개시된 주제가 제한되지 않는 단지 몇몇 예시적인 예인 것으로 이해되어야 한다.
다양한 실시 예에서, 시스템(100)은 많은 소형 폼팩터 스토리지 장치들(106)을 포함하거나 수용할 수 있다. 이들 스토리지 장치들(106)은 비교적 높은 저장 능력을 가질 수 있다. 또한, 확률 법칙 및 그들의 수(특히 많은 시스템(100)이 사용되는 경우)로 인해, 스토리지 장치들(106)은 사소한 고장률 (예를 들어, 10 % 미만)을 겪을 것으로 예상할 수 있다. 개시된 주제는 복구 기간을 감소시키려는, 고장난 스토리지 장치(106) 상에 저장된 데이터를 재 구축하기 위한 처리 오버헤드를 감소시키려는, 스토리지 장치들(106)로부터 재 구축 또는 판독에 필요한 데이터 이동량을 최소화하려는, 그리고 재 구축 동작들의 분산 처리를 활성화 시키는 시도를 포함하는, 이러한 실패율의 영향을 다룰 수 있다. 또한, 도시된 실시 예에서, 시스템(100)은 데이터 리던던시 및 이 오버헤드로 손실된 공간에 전용으로 할당된 스토리지 양의 균형을 맞추려고 시도할 수 있다.
도시된 실시 예에서, 시스템(100)은 데이터 액세스를 수신하도록 구성된 데이터 인터페이스 회로(102)를 포함할 수 있다. 다양한 실시 예들에서, 데이터 액세스는 읽기(또는 Get) 명령, 또는 쓰기(또는 Put) 명령을 포함할 수 있다. 각각의 데이터 액세스는 데이터 세트(101)와 연관될 수 있다. 도시된 실시 예에서, 3 개의 데이터 세트들(101a, 101b 및 101c)이 도시되어 있다. 이들 데이터 세트(101)는 (쓰기 명령의 경우) 요청하는 호스트 시스템 또는 서버에 의해 제공될 수 있다.
도시된 실시 예에서, 데이터 인터페이스 회로(102)는 버스트 버퍼 메모리(112)를 포함할 수 있다. 버스트 버퍼 메모리(112)는 입력되는 데이터 세트(101)이 데이터 관리 회로(104)에 의해 동작되는 동안, 입력되는 데이터 세트(101)을 캐싱 또는 임시 저장하도록 구성될 수 있다. 후술되는 바와 같이, 다양한 실시 예에서, 데이터 세트(101)는 더 작은 부분으로 분리되고 리던던트 데이터와 관련될 수 있다. 이 리던던트 데이터는 스토리지 장치(106)가 고장나는 경우 데이터 세트가 재구성될 수 있게 한다.
또한, 버스트 버퍼 메모리(112)에 데이터 세트(101)을 즉시 저장함으로써, 리던던트 데이터를 생성함으로써 발생 된 시간 또는 레이턴시는 숨겨 지거나 효과적으로 감소 될 수 있다. 다른 실시 예에서, 데이터 세트(101)이 다수의 스토리지 장치(106)에 저장되면(예를 들어, 미러링됨), 데이터 세트(101)을 다수의 위치에 기록하는데 걸리는 시간은 더 큰 분할 시스템으로부터 숨겨 질 수 있다. 버스트 버퍼 메모리(112)는 또한 다수의 작은 데이터 세트(101)이 더 큰 보다 효율적인 데이터 세트로 결합될 수 있게 한다.
도시된 실시 예에서, 데이터 인터페이스 회로(102)는 쓰기 어헤드 로그(write ahead log, 114)를 포함할 수 있다. 이러한 실시 예에서, 쓰기 어헤드 로그(114)는 시스템(100)에 의해 수행되는 동작을 기록할 수 있어서, 시스템(100) 내에서의 고장의 경우에 수행된 동작(및 그들의 성공)이 결정될 수 있다. 이는 장애 발생 후 작업 복구에 도움이 될 수 있다. 쓰기 어헤드 로그(114)는 매우 낮은 레이턴시 또는 표준 스토리지 장치들(106)을 위해 영구 메모리를 사용하는 비휘발성 듀얼 인라인 메모리 모듈 (NVDIMM) 또는 유사한 유형의 낮은 레이턴시/고대역폭 장치들로 구현될 수 있다.
도시된 실시 예에서, 시스템(100)은 데이터 관리 회로(104)를 포함할 수 있다. 이러한 실시 예에서, 데이터 관리 회로(104)는 복수의 스토리지 장치들(106)와 협력하여 (외부 호스트 서버에 대해) 단일 스토리지 유닛으로 동작하도록 할 수 있다. 이것은 다양한 스토리지 장치들(106)에 장애가 발생하고 교체될 수 있다는 사실에도 불구하고 가능하다.
데이터 관리 회로(104) 및 그 기능은 후속 도면과 관련하여 설명될 것이다. 즉각적인 도시를 위해, 시스템의 기본 기능이 설명될 것이다.
도시된 실시 예에서, 데이터 관리 회로(104)는 데이터 세트(101)을 복수의 데이터 조각들(111)로 분리할 수 있다. 이들 데이터 조각들(111) 각각은 개별 스토리지 장치들(106)에 저장될 수 있다. 이러한 실시예에서, 데이터 세트(101)는 복수의 스토리지 장치들(106)의 일부 또는 전부에 걸쳐 분산될 수 있다. 예를 들어, 데이터 조각(111A)은 스토리지 장치(106A)에 저장될 수 있고, 데이터 조각(111B)는 스토리지 장치(106B)에 저장될 수 있고, 데이터 조각(111C)는 스토리지 장치(106C)에 저장될 수 있고, 데이터 조각(111H)이 스토리지 장치(106H)에 저장될 수 있을 때까지 이러한 방식으로 저장 될 수 있다. 상술한 내용은 개시된 주제가 제한되지 않는 단지 하나의 예시적인 예인 것으로 이해되어야 한다. 다양한 실시 예에서, 이들 데이터 조각들(111)은 후술되는 바와 같이 하나 이상의 리던던트 데이터의 조각을 포함할 수 있다.
읽기 또는 획득(Get) 데이터 액세스가 발생하면, 데이터 관리 회로(104)는 스토리지 장치(106)로부터 데이터 세트(101)를 검색(회수)할 수 있다. 다양한 실시 예에서, 이는 데이터 조각들(111)로부터 데이터 세트(101)을 재구성하는 것을 포함할 수 있다. 그 후, 데이터 세트(101)는 데이터 인터페이스 회로(102) 또는 다른 인터페이스 회로 또는 포트(도시되지 않음)를 통해 요청 장치(예를 들어, 서버)로 전송될 수 있다.
도 2는 본 발명의 개시된 주제에 따른 시스템(100)의 예시적인 실시 예를 보여주는 블록도이다. 도 2는 복수의 스토리지 장치들(106) 및 데이터 관리 회로(104)에 의한 관리를 보다 개념적으로 도시 한 것이다.
도시된 실시 예에서, 복수의 스토리지 장치들(106)에 의해 제공되는 스토리지는 스토리지(254)로서 도시되어 있다. 도시된 실시 예에서, 스토리지 장치(254)의 4 가지 가능한 상태가 도시되어 있다. 상기 내용은 개시된 주제가 제한되지 않는 단지 몇몇 예시적인 예인 것으로 이해되어야 한다.
이러한 실시 예에서, 스토리지(254, 상태 254A로 예시됨)는 두 부분 또는 유형의 스토리지를 포함할 수 있다. 프리 스페이스(214)는 데이터가 저장되지 않았던 스토리지 공간일 수 있다. 반면에 사용된 또는 사용자 스페이스(224)는 데이터가 저장되는 스토리지(254)의 일부이다. 데이터 세트(101)이 시스템(100) 및 스토리지(254)에 기록됨에 따라, 프리 스페이스(214)는 사용된 스페이스(224)으로 변환될 수 있다. 이와 같이 스토리지 장치들(106)은 프리 스페이스(214)의 양 및 사용된 스페이스(224)의 양을 포함할 수 있다. 스토리지 장치들(106)은 이러한 양을 집합적(복수로서)으로 그리고 개별적으로 가질 수 있다.
도시된 실시 예에서, 데이터 관리 회로(104)는 프리 스페이스(214) 및 사용된 스페이스(224)의 양을 모니터링하도록 구성된 스토리지 모니터 회로(222)를 포함할 수 있다. 다양한 실시 예들에서, 스토리지 모니터 회로(222)는 이들 스토리지 디바이스들(106)이 전체적으로 그리고 개별적으로 얼마나 많이 갖는지를 모니터링할 수 있다. 이러한 실시 예에서, 프리 스페이스(214)가 어디에 있는지 아는 것은 데이터 관리 회로(104)가 주어진 데이터 세트 또는 그 일부를 저장하기 위해 어떤 특정 스토리지 장치들(106)이 사용될 것인지에 대한 선택을 할 수 있게 한다.
전술한 바와 같이, 스토리지 장치들(106)의 장애가 예상될 수 있다. 따라서, 시스템(100)이 리던던트 스토리지 기술을 이용하는 것에 신중할 수 있다. 이러한 리던던트 스토리지 기술은 추가 데이터 조각을 생성하여 데이터 세트의 일부가 누락되거나 오류가 있는 경우, 전체 데이터 세트가 재구성될 수 있도록 한다.
도시된 실시 예에서, 상태(254B)는 사용된 스페이스(224) 및 프리 스페이스(214)을 포함하는 경우를 도시한다. 사용된 스페이스(224)가 프리 스페이스(214)의 크기보다 작기 때문에, 데이터 관리 회로(104)는 리던던트 데이터(리던던트 스페이스 234를 점유하는)를 생성할 수 있다. 이러한 실시 예에서, 사용된 스페이스(224)의 각 데이터의 조각은 리던던트 스페이스(234)의 대응하는 리던던트 데이터와 관련될 수 있다.
일 실시 예에서, 예를 들어, (사용된 스페이스(224)에서) 각각의 사용자 데이터의 조각은 리던던트 스페이스(234)에서 대응하는 리던던트 데이터의 조각과 관련될 수 있다. 이러한 실시 예에서, 충분한 미사용 또는 프리 스페이스(214)가 미러링 될 수 있도록 존재한다면, 사용된 스페이스(224)은 미러링될 수 있다.
도시된 실시 예에서, 상태(254C)는 사용된 스페이스(224) 및 리던던트 스페이스(234)의 양이 증가하고, 그리고 프리 스페이스(214)의 양이 축소되거나 감소된 예를 도시한다. 이러한 실시 예에서, 프리 스페이스(214)의 양은 주어진 임계값(예를 들어, 임계값(225a)) 아래로 떨어질 수 있고, 데이터 관리 회로(104)는 더 넓거나 비싼 리던던시 방식이 더 이상 바람직하지 않다고 판단할 수 있다.
예시된 실시 예에서, 시스템(100)은 리던던시 할당 또는 할당기 회로(225)를 갖는 데이터 관리 회로(104)를 포함할 수 있다. 이러한 실시 예에서, 리던던시 할당 또는 할당기 회로(225)는 주어진 데이터 세트 또는 스토리지(254)와 연관된 리던던시 레벨을 결정하도록 구성될 수 있다.
이러한 실시 예에서, 스토리지(254)가 상대적으로 비어있고 충분한 양의 프리 스페이스(214)를 갖기 때문에, 시스템(100)은 고가의 또는 복원력있는 리던던시 방식(예를 들어, 미러링)을 이용할 수 있다. 그러나, 스토리지(254)가 채워지고 프리 스페이스(214)가 감소함에 따라, 시스템(100)은 덜 비싸고 복원력이 적은 리던던시 방식을 사용하기 시작할 수 있다. 예를 들어, 소거 또는 에러 인코딩이 적용될 수 있다.
도시된 실시 예에서, 상태(254D)는 사용된 스페이스(224)와 리던던트 스페이스(234)의 양이 더 이상 동일하지 않은 예를 보여준다. 대신 리던던시 레벨이 감소하였다. 리던던시 레벨의 이러한 감소는 리던던트 스페이스(234)의 양의 증가율을 감소 시키거나 또는 단순히(간단히) 줄일 수 있다. 예를 들어, 일 실시 예에서, 사용된 스페이스(224) 대 리던던트 스페이스(234)의 비는 8:1 일 수 있다. 다양한 리던던시 방식이 도 3a, 3b, 그리고 3c를 참조하여 논의된다. 상술한 내용은 개시된 주제가 제한되지 않는 단지 하나의 예시적인 예인 것으로 이해되어야 한다.
이러한 실시 예에서, 현재 리던던시 방식 그리고/또는 리던던시 레벨의 변경은 동적으로 발생할 수 있다. 현재의 리던던시 방식 그리고/또는 레벨을 변경하기 위해 명시적인 사용자 개입이 요구되지 않을 수 있다. 대신에, 데이터 관리 회로(104)는 프리 스페이스(214)의 양이 임계값을 넘었음을 검출하고, 규칙 세트에 기초하여, 새로운 리던던시 레벨 또는 방식을 선택한다. 일부 실시 예들에서, 동일한 리던던시 방식(예를 들어, 소거 인코딩)이 유지될 수 있지만, 사용자 데이터의 바이트 당 리던던트 비트의 수가 감소될 수 있다. 마찬가지로, 프리 스페이스(214)의 양 또는 다른 트리거 이벤트가 증가함에 따라 리던던시 레벨이 증가될 수 있다.
예시된 실시 예에서, 데이터 관리 회로(104)는 하나 이상의 리던던시 코드 발생(생성) 회로(들)(226)을 포함할 수 있다. 이러한 실시 예에서, 리던던시 코드 발생 회로(들)(226)는 각 데이터 세트(101)와 연관된 임의의 리던던트 조각들을 생성하도록 구성될 수 있다. 다양한 실시 예들에서, 리던던시 코드 발생 회로(들)(226)는 각각 특정 코드 생성 기술들에 특화된 상이한 코드 생성 회로들(예를 들어, 회로들(226a & 226b))을 포함할 수 있다.
이러한 실시 예에서, 데이터 세트(101)는 버스트 버퍼 메모리(112)에 초기에 그리고 일시적으로 저장될 수 있다. 이 시점에서, 시스템(100)은 데이터 세트(101)가 스토리지 장치들(106)에 완전히 저장되지 않았음에도 불구하고 쓰기 또는 Put 명령이 성공적인 것으로 보고할 수 있다.
데이터 관리 회로(104)는 이 데이터 세트(101)에 사용하기 위한 리던던시 레벨 및 사용할 인코딩 방식을 결정할 수 있다. 리던던시 코드 발생 회로(들)(226)는 버스트 버퍼 메모리(112)로부터 데이터 세트(101)을 판독하고, 선택된 리던던시 동작을 수행하고, 개별 데이터 조각들(사용자 데이터 및 리던던트 데이터)을 개별 스토리지 장치(106)에 기록할 수 있다. 이러한 실시 예에서, 데이터의 리던던시 조각들을 계산하고 이것들을 타겟 스토리지 장치들(106)에 기록하는데 필요한 레이턴시는 기록(쓰기) 또는 Put 명령을 개시한 호스트 서버로부터 숨겨질 수 있다.
다양한 실시 예들에서, 각각의 데이터 세트(101)는 주어진 리던던시 레벨과 관련될 수 있다. 다른 실시 예에서, 스토리지(254)는 전체로서 리던던시 레벨과 관련될 수 있다. 또 다른 실시 예에서, 데이터 세트(101)는 특성(예를 들어, 데이터 유형, 서비스 품질, 최종 액세스 시간)에 의해 그룹화되고, 리던던시 레벨과 연계될 수 있다. 상기 내용은 개시된 주제가 제한되지 않는 단지 몇몇 예시적인 예인 것으로 이해되어야 한다.
다양한 실시 예들에서, 데이터 관리 회로(104)는 공간을 확보하기 위해 리던던트 데이터의 조각들을 삭제할 수 있다. 예를 들어, 일부 데이터 세트(101)는 리던던시를 필요로하지 않는 것으로 간주될 수 있고, 그들의 대응하는 리던던트 데이터가 삭제될 수 있다. 다양한 실시 예들에서, 이것은 프리 스페이스(214)의 양이 주어진 임계 레벨에 도달할 때 발생할 수 있다. 이러한 실시 예에서, (모든 임계 레벨들 처럼) 임계 레벨은 프로그램 가능하거나 설정 가능할 수 있다. 이러한 실시 예에서, 이들 데이터 세트는 보호되지 않을 수 있지만, 더 큰 스토리지 클러스터(도 4 참조) 내의 다른 스토리지 시스템들 (시스템(100)과 같은)에서의 리던던시로 인해 적어도 부분적으로는 복구 가능할 수 있다.
다양한 실시 예들에서, 데이터 관리 회로(104)는 다양한 특성들에 적어도 부분적으로 근거하여 어느 데이터 세트가 그들의 리던던트 비트를 제거 할 것인지를 선택할 수 있다. 일부 실시 예에서, 특성들은 데이터 세트(101)의 크기, 데이터 세트(101)의 최종 액세스 시간, 사용 빈도, 데이터 유형, 데이터 세트(101)와 관련된 서비스 품질 등을 포함할 수 있다. 상기 내용은 개시된 주제가 제한되지 않는 단지 몇몇 예시적인 예인 것으로 이해되어야 한다.
시스템(100)이 용량이 부족하기 시작하면, 데이터 관리 회로(104)는 더 많은 용량을 이용 가능하게 하기 위해 리던던트 데이터를 삭제하기 시작할 때 특정(조정 가능한) 임계값을 결정할 수 있다. 이것은 시스템(100)이 최대 용량까지 저장할 수 있게 한다.
일부 실시 예들에서, 데이터 관리 회로(104)가 사용자 데이터가 재구성될 수 있거나, 스토리지 클러스터 내의 다른 시스템에 의해 리던던시로(중복되게) 저장될 수 있다는 것을 데이터 관리 회로(104)가 알고 있는 경우, 시스템(100)은 사용자 데이터를 심지어 삭제할 수도 있다. 이러한 실시 예에서, 시스템(100)은 스토리지 클러스터 내의 다른 시스템과 통신하도록 구성될 수 있다.
다양한 실시 예들에서, 데이터 관리 회로(104)는 데이터 세트와 연관된 리던던트 데이터를 완전히 삭제하지 않고, 덜 탄력적인 데이터로 교체하기로 결정할 수 있다. 예를 들어, 제 1 방식이 8 비트의 사용자 데이터마다 4 비트의 리던던트 데이터를 사용하는 경우, 리던던시 레벨은 8 개의 사용자 데이터 비트마다 2 개의 리던던트 비트를 사용하는 방식으로 감소될 수 있다(사용자 데이터의 8 비트당 2 비트의 자유도 상향). 이러한 실시 예에서, 시스템(100)은 새로운 또는 2 비트 방식의 제 2 방식을 사용하여 사용자 데이터를 복원하기 전에 오래된 리던던트 데이터를 삭제할 수 있다. 상기 내용은 개시된 주제가 제한되지 않는 단지 하나의 예시적인 예인 것으로 이해되어야 한다.
다양한 실시 예에서, 이전에 저장된 사용자 데이터 및 이들의 리던던시 레벨에 대한 이러한 변경은 시스템(100)이 이상적일 때(즉, 읽기 또는 쓰기가 발생하지 않을 때) 발생할 수 있다. 이러한 실시 예에서, 이전에 저장된 데이터를 변경하는데 필요한 프로세싱 및 리소스 사용량은 임의의 호스트 서버 또는 장치들로부터 숨겨질 수 있다.
다양한 실시 예들에서, 시스템(100)은 컨트롤러 또는 장치 프로세서와 같은 프로세서(도시되지 않음)를 포함할 수 있다. 이러한 실시 예에서, 상술한 동작들 중 일부 또는 전부는 소프트웨어, 펌웨어 또는 이들의 조합에 의해 실행될 수 있다.
도3a는 개시된 주제에 따른 시스템(100)의 예시적인 실시 예를 보여주는 블록도이다. 도시된 실시 예에서, 예시적인 리던던시 방식이 사용된다. 상기 내용은 개시된 주제가 제한되지 않는 단지 하나의 예시적인 예인 것으로 이해되어야 한다.
도시된 실시 예에서, 충분한 용량 또는 프리 스페이스가 이용 가능할 때(예를 들어, 임계값을 사용하여 결정됨), 기록 또는 PUT 동작이 미러링될 수 있다. 도시된 실시 예에서, 각각의 데이터 조각(101A)은 스토리지 장치들(106D 및 106E) 모두에 미러링될 수 있다. 따라서, 2 개의 스토리지 장치들(106D & 106E) 중 하나에 장애가 발생하면, 시스템(100)은 데이터 조각(101A)의 다른 사본을 복원할 수 있을 것이다. 이것은 데이터를 재구성하거나 성능을 저하시킬 필요없이 수행될 수 있다. 마찬가지로, 데이터의 여러 사본 또는 미러링이 생성될 수 있다.
다양한 실시 예에서, 미러링된 데이터(101A)는 랑데부 해시(rendezvous hash) 또는 유사한 기술을 사용하여 스토리지 장치들(106)에 분배될 수 있다. 도시된 실시 예에서, 데이터 세트(101)는 8 개의 예시된 장치들(106) 중 2 개에만 저장되는 것을 알 수 있다. 따라서, 다양한 실시 예에서, 모든 스토리지 장치들(106)이 특정 데이터 세트(101)을 저장하기 위해 이용될 필요는 없다. 데이터 조각들은 스토리지 장치들(106)의 서브 세트에 할당될 수 있고, 할당은 상이한 서브 세트에 걸쳐 상이한 데이터 세트를 중첩시키는 것을 포함할 수 있다.
이러한 실시 예에서, 시스템(100)의 분산 해시 기술의 사용은 용량이 시스템(100)의 모든 스토리지 장치들(106)에 걸쳐 계속 균일하게 채워짐을 의미할 수 있다. 이러한 실시 예에서, 미러링(또는 저장)을 수행하기 위해 해시 기반 방법을 사용하는 것은 가용한 스토리지 장치(106)에 데이터를 분배하고 성능 저하를 완화시킨다. 다양한 실시 예들에서, 이는 시스템(100)의 모든 스토리지 장치들(106)이 임의의 데이터 세트 재구성 프로세스에 참여할 수 있기 때문에 복구 시간을 또한 개선할 수 있다.
도 3b는 개시된 주제에 따른 시스템(100)의 예시적인 실시 예를 보여주는 블록도이다. 예시된 실시 예에서, 보다 복잡한 예시적인 리던던시 방식이 사용된다. 상기 내용은 개시된 주제가 제한되지 않는 단지 하나의 예시적인 예인 것으로 이해되어야 한다.
전술한 바와 같이, 다른 실시 예에서, 시스템(100)은 보다 복잡한 리던던시 인코딩 방식(예를 들어, 소거 인코딩)을 이용할 수 있다. 이러한 실시 예에서, 패리티 비트 또는 데이터 조각은 데이터 관리 회로(104)에 의해 생성되고 데이터 세트(101)와 관련될 수 있다.
도시된 실시 예에서, 6 비트의 사용자 데이터(데이터 111A, 111B, 111C, 111E, 111F, 및 111G)마다, 2 비트의 리던던시 데이터(데이터 111D 및 111H)가 생성되고 스토리지 장치들(106)에 저장된다. 도시된 실시 예에서, 이들 데이터 조각(111)은 다수의 스토리지 장치들(106)에 걸쳐 저장된다.
이러한 실시 예에서, 시스템(100)은 2 개 까지의 스토리지 장치들(예를 들어, 106B 및 106H)을 소실하거나 페일로 사용할 수 없게 될 수 있고, 여전히 데이터 세트(101)을 재생성할 수 있을 것이다. 다양한 실시 예에서, 다른 형태 리던던시 인코딩이 사용될 수 있다.
도 3c는 개시된 주제에 따른 시스템(100)의 예시적인 실시 예를 보여주는 블록도이다. 예시된 실시 예에서, 보다 복잡한 예시적인 리던던시 방식이 사용된다. 상기 내용은 개시된 주제가 제한되지 않는 단지 하나의 예시적인 예인 것으로 이해되어야 한다.
시스템(100)에서 디스크가 고장 났을 때 복원력을 제공하기 위한 다른 리던던시 방식은 스토리지 장치(106A)에 완전히 저장된 데이터 세트의 제 1 카피와, 한 세트의 스토리지 장치들(106)(예를 들어, 장치(106B, 106C, 106D, 106E, 106F, 106G 및 106H)에 걸쳐 소거 코딩된 데이터의 제 2 카피를 가질 수 있다. 이러한 실시 예에서, 데이터 세트(101)는 그것의 원래 형태 (장치(106A)의 제 1 카피)로 해시된 위치에 저장될 수 있지만, 제 2 카피는 소거 코딩되어 정의된 장치 세트(106B-106H)에 걸쳐 분배될 것이다.
이러한 방식은 시스템(100)이 스토리지 장치들(106)의 하나 이상의 장치의 고장을 지원하는 반면, 읽기/GET 동작 동안 데이터 세트(101)를 재조합하는데 필요한 레이턴시 지연을 발생시키지 않을 수 있다. 이러한 실시 예에서, 읽기/GET 동작이 발생할 때, 소거 인코딩된 카피(스토리지 장치들(106B-106H))로부터 데이터 세트를 재조합하는 대신, 데이터 세트(101)는 간단히 전체 카피(스토리지 장치(106a))로부터 독출될 수 있다.
복원력 목표 또는 레벨에 따라, 사용자 및 리던던시 비트 또는 데이터 조각의 수가 결정될 수 있다. 소거 코딩된 데이터 세트 또는 카피는 원래 데이터 세트(스토리지 장치(106A))와 겹치지 않을 수 있다. 키-값 저장(스토리지) 시스템이 사용되는 다양한 실시 예들에서, 이는 동일한 데이터 조각들이 동일한 키를 사용하고, 각 장치는 개별 장치에서 그 키의 하나의 버전만을 가져야하기 때문일 수 있다. 랑데부 해싱 및 가중치를 사용하여, 시스템(100)은 소거 코드 세트에 속하는 모든 데이터를 복구할 수 있다. 데이터 및 용량 분배 목표를 유지하기 위해 모든 데이터 조각이 시스템의 모든 스토리지 장치들(106)에 걸쳐 여전히 분산될 수 있음에 유의해야 한다.
상술한 바와 유사하게, 시스템(100)의 용량이 부족하기 시작하면, 데이터 세트의 하나의 사본이 삭제될 수 있다. 다양한 실시 예에서, 각각의 읽기/GET 동작에 대해 다수의 스토리지 장치(106)를 판독하는 것은 성능을 저하시킬 수 있기 때문에 소거 코딩된 카피는 삭제된다.
도 3d는 개시된 주제에 따른 시스템(100)의 예시적인 실시 예를 보여주는 블록도이다. 도시된 실시 예에서, 시스템(100)은 손실된 데이터를 재구성한다.
도시된 실시 예에서, 시스템(100)은 스토리지 장치(106E)를 잃어 버렸을 수 있다(도 3a에 도시됨). 이러한 실시 예에서, 스토리지 장치(106E)는 시스템(100)으로부터 수동으로 제거되었을 수 있다. 스토리지 장치(106E)는 하드웨어 장애(예를 들어, 단선 등)를 입었을 수 있다. 또는 시스템(100)은 스토리지 장치(106E)와 통신하는 능력을 상실했을 수 있다(예를 들어, 플러그가 뽑힌 케이블에 의해). 상기 내용은 개시된 주제가 제한되지 않는 단지 몇몇 예시적인 예인 것으로 이해되어야 한다.
도시된 실시 예에서, 스토리지 장치(106R)는 고장난 스토리지 장치(106E)를 대체하기 위해 시스템(100) 내에 추가되거나, 활성화될 수 있다. 일부 실시 예들에서, 시스템(100)은 핫 스페어 시스템(hot spare system)을 이용할 수 있다. 상기 내용은 개시된 주제가 제한되지 않는 단지 몇몇 예시적인 예인 것으로 이해되어야 한다.
다양한 실시 예에서, 모든 데이터 세트 재구성 동작은 개별 시스템(100)에 의해 처리될 수 있다. 따라서, 더 큰 클러스터는 상이한 시스템(100) 상의 다수의 스토리지 장치(106)가 재구성 동작을 동시에 처리할 수 있는 분산 재구성 이벤트를 가능하게 할 수 있다.
미러 리던던시 방식을 포함하는 예시된 실시 예에서, 재구성 동작은 데이터 세트(101a)를 미러링된 스토리지 장치(106) 중 하나로부터 타겟 또는 교체된 스토리지 장치(106R)로 복사하는 단계를 포함할 수 있다. 마찬가지로, 다른 리던던시 방식(소거 코딩과 같은)에서, 재구성은 원본 또는 사용자 데이터 및 리던던트 데이터 조각들을 모두 사용하여 실패 또는 누락된 데이터 조각을 계산하는 것을 포함할 수 있다.
예시된 실시 예에서, 미러링을 사용하면, 스토리지 장치들(106) 중 하나를 소실하고도 여전히 장애로부터 복구할 수 있다. 이 실시 예에서, 데이터 세트(101A)는 시스템(100)이 이상적이거나 스페어 리소스를 가질 때 하나의 스토리지 장치(106D)로부터 다른 스토리지 장치(106R)로 복사될 수 있다. 예를 들면, 재구성은 시스템(100)에 대한 읽기/쓰기 동작이 달리 발생하지 않을 때 발생할 수 있다. 또는, 다른 실시 예에서, 시스템(100)이 다수의 동시 데이터 액세스 동작들(예를 들어, 2 개의 동시 동작들)을 지원할 수 있는 경우, 호스트 서버에 의해서 하나의 데이터 액세스 동작이 요청되는 경우에만 재구성이 발생할 수 있다.
도 4는 개시된 주제에 따른 시스템(400)의 예시적인 실시 예를 보여주는 블록도이다. 시스템(400)은 도 1에 도시된 바와 같이 복수의 장치들 또는 저장 시스템들을 포함할 수 있다.
전술한 바와 같이, 개시된 주제는 더 큰 분할된 스토리지 클러스터 아키텍처의 일부일 수 있다. 이러한 시스템(400)은 더 큰 지리적 영역에 걸쳐 분산되거나 원격으로 배치되는 다수의 장치 또는 서브 시스템을 이용할 수 있다.
이러한 실시 예에서, 시스템(400)은 시스템(400)에 데이터를 읽고 쓰도록 구성된 많은 수 또는 복수의 호스트 서버(402)를 포함할 수 있다. 이들 서버(402)는 데이터 액세스, 읽기/쓰기, Get/Put 요청들 또는 위에서 설명한 동작들을 개시할 수 있다.
도시된 실시 예에서, 시스템(400)은 하나 이상의 네트워크 스위치(404)를 포함할 수 있다. 네트워크 스위치(404)는 스토리지 시스템(406)과 호스트 서버들(402) 사이에서 이들 데이터 액세스 및 관련 데이터 세트를 라우팅할 수 있다.
예시된 실시 예에서, 시스템(400)은 복수의 스토리지 시스템들(406)을 포함할 수 있다. 이들 스토리지 시스템들(406)은 스토리지 클러스터들(408)로 구성될 수 있다. 이러한 실시 예에서, 이들 스토리지 클러스터들(408)은 전술한 스토리지 장치(106)와 다소 유사하게 동작할 수 있다. 호스트 서버(402)는 전체적으로 더 큰 데이터 세트들(401)을 클러스터(408)에 저장할 수 있다. 클러스터(408)는 이러한 큰 데이터 세트들(401)을 더 작은 데이터 세트(411)로 나누고, 각각의 스토리지 시스템(406)에 더 큰 데이터 세트(401)의 일부를 저장할 수 있다. 더 큰 데이터 세트들(401)은 스토리지 시스템(406)이 시스템(400)으로부터 제거될 때, 더 큰 데이터 세트들(401)이 나머지 클러스터(408)를 사용하여 복구 될 수 있도록, 사용자-데이터 데이터 세트(백색으로 표시됨) 및 리던던시-데이터 데이터 세트(회색으로 표시됨) 모두를 사용하여 클러스터 레벨에서 인코딩될 수 있다. 마찬가지로, 이들 더 작은 스토리지 시스템(406) 레벨의 데이터 세트들(411)은 전술한 바(데이터 조각 (421))와 같이 스토리지 시스템(400)의 스토리지 장치에 리던던트 방식으로 저장될 수 있다. 이러한 실시 예에서, 복수의 리던던시 계층이 적용될 수 있다.
개시된 주제는 예를 들어 미러링 그리고/또는 소거 코딩을 사용하여 시간적 또는 "최선의 노력" 리던던시를 위한 기술 및 장치를 제공한다. 이 기술은 가용 용량을 그대로 유지하면서 더 높은 수준의 성능과 가용성/신뢰성을 제공하므로 시스템 비용을 크게 절감할 수 있다. 게다가, 다양한 실시 예에서, 개시된 주제는 시스템의 용량이 채워짐에 따라 정상 동작 동안 및 점진적 삭제 동작 동안 모두에서 높은 대역폭 및 초당 입출력 동작(IOPS) 성능을 달성할 수 있다. 개시된 주제는 리던던시 데이터를 포함하여 비교적 높은 수준의 가용 용량을 달성하기 위해 서버 시스템의 모든 스토리지 장치들(예를 들어, SSD)에 걸쳐 데이터를 균등하게 분배할 수 있다. 이 리던던시는 사용자가 원하는 리던던시 레벨에 따라 프로그램 가능하거나 구성 가능하며 동적으로 조정될 수 있다.
개시된 주제는 또한 액세스될 가능성이 가장 적은 리던던트 데이터를 삭제 또는 제거하는 능력을 제공하여, 향상된 성능을 달성할 수 있다. 개시된 주제는 완전한 가용 용량을 유지하고 가용성/신뢰성을 더 잘 지원할 수 있다. 개시된 주제는 하나 이상의 저장 장치가 고장났을 때, 데이터 가용성을 유지할 수 있다. 고장에 응답하여, 개시된 주제는 고장난 드라이브가 교체될 때 자동으로 재구성 작업을 수행할 수 있고, 성능에 최소한의 영향을 미치는 방식으로 수행할 수 있다.
전술한 바와 같이, 일 실시 예에서, 개시된 주제는 리던던시와 성능에 대한 최소한의 영향을 모두 가지는 키-값(KV) SSD에 데이터를 저장하기 위해 사용될 수 있다. 이러한 실시 예에서, 개시된 주제는 용량이 시스템에 채워짐에 따라 더 긴 시간 동안 리던던시를 유지하기 위해 점진적 방식으로 데이터를 삭제 또는 제거할 수 있다. 랑데부(Rendezvous) 또는 HRW(Highest Random Weight) 해싱 기술을 사용하여 데이터 또는 보다 구체적으로 (키, 값) 쌍을 스토리지 장치에 균등하게 분배할 수 있다.
도 5는 개시된 주제의 원리에 따라 형성된 반도체 장치를 포함할 수 있는 정보 처리 시스템(500)의 개략적인 블록도이다.
도 5를 참조하면, 정보 처리 시스템(500)은 개시된 주제의 원리에 따라 구성된 장치들 중 하나 이상을 포함할 수 있다. 다른 실시 예에서, 정보 처리 시스템(500)은 개시된 주제의 원리에 따라 하나 이상의 기술을 사용하거나 실행할 수 있다.
다양한 실시 예에서, 정보 처리 시스템(500)은 예를 들어 랩탑, 데스크탑, 워크 스테이션, 서버, 블레이드 서버, 개인 휴대 정보 단말기, 스마트 폰, 태블릿 및 다른 적절한 컴퓨터와 같은 컴퓨팅 장치 또는 가상 머신 또는 이들을 사용하는 가상 컴퓨팅 장치를 포함할 수 있다. 다양한 실시 예들에서, 정보 처리 시스템(500)은 사용자(미도시)에 의해 사용될 수 있다.
개시된 주제에 따른 정보 처리 시스템(500)은 중앙 처리 장치(CPU), 논리 회로 또는 프로세서(510)를 더 포함할 수 있다. 일부 실시 예에서, 프로세서 (510)는 하나 이상의 기능 유닛 블록(FUB) 또는 조합 논리 블록(CLB, 515)을 포함할 수 있다. 이러한 실시 예에서, 조합 논리 블록은 다양한 부울 논리 연산(예를 들어, NAND, NOR, NOT, XOR), 안정화 논리 장치(예를 들어, 플립 플롭, 래치), 다른 논리 장치, 또는 이들의 조합을 포함할 수 있다. 이들 조합 논리 연산은 원하는 결과를 달성하기 위해 입력 신호를 처리하도록 단순하거나 복잡한 방식으로 구성될 수 있다. 동기식 조합 논리 연산의 몇몇 예시적인 예가 설명되었지만, 개시된 주제는 그렇게 제한되지 않으며 비동기 연산 또는 이들의 조합물을 포함할 수 있는 것으로 이해되어야 한다. 일 실시 예에서, 조합 논리 블록(CLB, 515)은 복수의 상보형 금속 산화물 반도체(CMOS) 트랜지스터를 포함할 수 있다. 다양한 실시 예에서, 이들 CMOS 트랜지스터는 논리 동작을 수행하는 게이트로 배열될 수 있으며, 그렇지만 다른 기술이 사용될 수 있으며, 이는 개시된 주제의 범위 내에 있는 것으로 이해되어야 한다.
개시된 주제에 따른 정보 처리 시스템(500)은 휘발성 메모리(520) (예를 들어, 랜덤 액세스 메모리(RAM))를 더 포함할 수 있다. 개시된 주제에 따른 정보 처리 시스템(500)은 불휘발성 메모리(530, 예를 들면, 하드 드라이브, 광 메모리, NAND 또는 플래시 메모리)를 더 포함할 수 있다. 일부 실시 예에서, 휘발성 메모리(520), 불휘발성 메모리(530) 또는 이들의 조합 또는 일부는 "저장 매체"로 지칭될 수 있다. 다양한 실시 예들에서, 휘발성 메모리(520) 그리고/또는 불휘발성 메모리(530)는 반영구적 또는 실질적으로 영구적인 형태로 데이터를 저장하도록 구성될 수 있다.
다양한 실시 예들에서, 정보 처리 시스템(500)은 정보 처리 시스템(500)이 통신 네트워크의 일부이고 통신 네트워크를 통해 통신하도록 구성된 하나 이상의 네트워크 인터페이스(540)를 포함할 수 있다. Wi-Fi 프로토콜의 예는 IEEE 802.11n, IEEE (Institute of Electrical and Electronics Engineers) 802.11g를 포함할 수 있지만 이에 제한되지는 않는다. 셀룰러 프로토콜의 예는 IEEE 802.16m(일명 Wireless-MAN(Metropolitan Area Network) Advanced, LTE (Long Term Evolution) Advanced, GSM (Global System for Mobile Communications) Evolution)의 향상된 데이터 속도를 포함하지만, 이에 제한되지 않는다. 유선 프로토콜의 예는 IEEE 802.3 (일명 이더넷), 파이버 채널, 전력선 통신(예를 들어, HomePlug, IEEE 1901)을 포함할 수 있지만, 이에 제한되지는 않는다. 상기 내용은 개시된 주제가 제한되지 않는 단지 몇몇 예시적인 예인 것으로 이해된다.
개시된 주제에 따른 정보 처리 시스템(500)은 사용자 인터페이스 유닛(550, 예를 들면, 디스플레이 어댑터, 햅틱 인터페이스, 휴먼 인터페이스 장치)을 더 포함할 수 있다. 다양한 실시 예들에서, 이 사용자 인터페이스 유닛(550)은 사용자로부터 입력을 수신하거나 그리고/또는 사용자에게 출력을 제공하도록 구성될 수 있다. 사용자와의 상호 작용을 제공하기 위해 다른 종류의 장치가 사용될 수도 있다. 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 감각 피드백, 예를 들어 시각적 피드백, 청각 피드백 또는 촉각 피드백 일 수 있고; 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다.
다양한 실시 예에서, 정보 처리 시스템(500)은 하나 이상의 다른 장치 또는 하드웨어 장치들(560, 예를 들면, 디스플레이 또는 모니터, 키보드, 마우스, 카메라, 지문 판독기, 비디오 프로세서)을 포함할 수 있다. 상기 내용은 개시된 주제가 제한되지 않는 단지 몇몇 예시적인 예인 것으로 이해되어야 한다.
개시된 주제에 따른 정보 처리 시스템(500)은 하나 이상의 시스템 버스(505)를 더 포함할 수 있다. 이러한 실시 예에서, 시스템 버스(505)는 프로세서 그리고/또는 로직(510)과 휘발성 메모리(520), 휘발성 메모리(530), 네트워크 인터페이스(540), 사용자 인터페이스 유닛(550) 및 하나 이상의 하드웨어 장치들(560)을 통신 가능하게 연결하도록 구성될 수 있다. 프로세서 (510)에 의해 처리된 데이터 또는 불휘발성 메모리(530)의 외부로부터 입력된 데이터는 휘발성 메모리(520) 또는 불휘발성 메모리(530)에 저장될 수 있다.
다양한 실시 예에서, 정보 처리 시스템(500)은 하나 이상의 소프트웨어 컴포넌트(570)를 포함하거나 실행할 수 있다. 일부 실시 예에서, 소프트웨어 컴포넌트(570)는 운영 체제(OS) 그리고/또는 애플리케이션을 포함할 수 있다. 일부 실시 예들에서, 운영 체제(OS)는 하나 이상의 서비스를 애플리케이션에 제공하고 애플리케이션과 정보 처리 시스템(500)의 다양한 하드웨어 구성 요소들 (예를 들어, 프로세서(510), 네트워크 인터페이스(540)) 사이의 중개자로서 관리하거나 행동하도록 구성될 수 있다. 이러한 실시 예에서, 정보 처리 시스템(500)은 로컬(예를 들어, 불휘발성 메모리(530) 내에)에 설치될 수 있고 프로세서(510)에 의해 직접 실행되고 운영 체제(OS)와 직접 상호 작용하도록 구성될 수 있는 하나 이상의 네이티브 애플리케이션을 포함할 수 있다. 이러한 실시 예에서, 네이티브 애플리케이션은 사전 컴파일된 머신 실행 가능 코드를 포함할 수 있다. 일부 실시 예에서, 네이티브 애플리케이션은 소스 또는 객체 코드를 실행 가능한 코드로 변환하여 프로세서(510)에 의해 실행되는 스크립트 해석기(예를 들어, C 쉘(csh), AppleScript, 오토 핫키) 또는 가상 실행 머신(VM) (예를 들어, Java 가상 머신, Microsoft 공용 언어 런타임)을 포함할 수 있다.
전술한 반도체 장치는 다양한 패키징 기술을 사용하여 캡슐화될 수 있다. 예를 들어, 개시된 주제의 원리에 따라 구성된 반도체 디바이스는 패키지 온 패키지(POP) 기술, 볼 그리드 어레이(BGA) 기술, 칩 스케일 패키지(CSP) 기술, 플라스틱 리드 칩 캐리어(PLCC) 기술, 플라스틱 이중 인라인 패키지(PDIP) 기술, 다이 인 와플 팩 기술, 다이 인 웨이퍼 형태 기술, 칩 온 보드(COB) 기술, 세라믹 듀얼 인라인 패키지(CERDIP) 기술, PMQFP(plastic metric quad flat package) 기술, PQFP(plastic quad flat package) 기술, SOIC(small outline package) 기술, SSOP(shrink small outline package) 기술, 얇은 작은 윤곽선 패키지(TSOP) 기술, TQFP(thin quad flat package) 기술, SI (system in package) 기술, 다중 칩 패키지(MCP) 기술, 웨이퍼 레벨 가공 패키지(WFP) 기술, 웨이퍼 레벨 처리 스택 패키지(WSP) 기술 또는 당 업계에서 숙련된 기술자에게 잘 알려진 다른 기술 중 어느 하나를 사용하여 캡슐화될 수 있다.
방법 단계들은 입력 데이터를 조작하고 출력을 생성함으로써 기능을 수행하기 위해 컴퓨터 프로그램을 실행하는 하나 이상의 프로그램 가능한 프로세서에 의해 수행될 수 있다. 방법 단계들은 또한 필드 프로그램 가능 게이트 어레이(FPGA) 또는 애플리케이션 특정 집적 회로(ASIC)과 같은 특수 목적 논리 회로에 의해 수행될 수 있고 장치가 구현될 수 있다.
다양한 실시 예에서, 컴퓨터 읽기 가능 매체는 실행될 때 장치로 하여금 방법 단계의 적어도 일부를 수행하게 하는 명령어를 포함할 수 있다. 일부 실시 예들에서, 컴퓨터 읽기 가능 매체는 자기 매체, 광학 매체, 다른 매체 또는 이들의 조합(예를 들어, CD-ROM, 하드 드라이브, 판독 전용 메모리, 플래시 드라이브)에 포함될 수 있다. 이러한 실시 예에서, 컴퓨터 읽기 가능 매체는 유형적으로 그리고 비일시적으로 구현된 제조 물품일 수 있다.
개시된 주제의 원리가 예시적인 실시 예를 참조하여 설명되었지만, 이들 개시된 개념의 사상 및 범위를 벗어나지 않고 다양한 변경 및 변형이 이루어질 수 있음은 당업자에게 명백할 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야 한다. 따라서, 개시된 개념의 범위는 다음의 청구 범위 및 그 등가물의 가장 넓은 허용 가능한 해석에 의해 결정되며, 전술한 설명에 의해 제한되거나 제한되어서는 안된다. 그러므로, 첨부된 청구 범위는 실시 예의 범위 내에 있는 그러한 모든 수정 및 변경을 포함하도록 의도된다는 것을 이해해야 한다.

Claims (10)

  1. 데이터 세트와 관련된 데이터 액세스 요청을 수신하도록 구성된 데이터 인터페이스 회로;
    상기 데이터 세트를 저장하도록 구성된 스토리지 장치, 상기 스토리지 장치는 가용 저장 공간 양을 포함하고; 및
    데이터 관리 회로를 포함하되,
    상기 데이터 관리 회로는:
    상기 스토리지 장치 내에서 상기 가용 저장 공간 양을 모니터하고,
    상기 데이터 세트에 대해, 상기 데이터 세트에 대응할 리던던시 레벨을 결정하고,
    상기 데이터 세트에 대해, 상기 데이터 세트에 대응할 리던던트 데이터 부분을 생성하고, 및
    적어도 부분적으로, 상기 가용 저장 공간 양에 기초하여, 상기 스토리지 장치 내의 동일한 위치에서 상기 리던던트 데이터 부분의 부분들을 삭제하고 상기 데이터 세트의 하나 이상의 부분들을 유지함으로써, 상기 데이터 세트에 대응하는 상기 리던던시 레벨을 줄임으로써 상기 리던던시 레벨을 동적으로 조정하도록 구성된 시스템.
  2. 제 1 항에 있어서,
    상기 데이터 관리 회로는:
    상기 리던던트 데이터 부분을 생성하기 위해 적어도 두개의 리던던시 방식들 중 하나를 적용하고; 및
    적어도 부분적으로, 상기 가용 저장 공간의 양에 기초하여, 상기 리던던트 데이터 부분을 생성할 때 사용하기 위해 상기 적어도 두개의 리던던시 방식들 중 제1 하나를 선택하도록 구성된 시스템.
  3. 제 2 항에 있어서,
    상기 데이터 관리 회로는:
    상기 가용 저장 공간의 양이 제 1 임계치를 초과할 때, 데이터 미러링을 포함하는 상기 적어도 두개의 리던던시 방식들 중 상기 제1 하나를 사용하도록 구성된 시스템.
  4. 제 1 항에 있어서,
    상기 데이터 관리 회로는:
    저장된 데이터 세트의 데이터의 하나 이상의 부분들의 오류를 검출하고;
    상기 오류의 검출에 응답하여, 상기 저장된 데이터 세트에 대응하는 상기 리던던트 데이터 부분에, 적어도 부분적으로, 기초하여 상기 저장된 데이터 세트를 자동으로 재구성하도록 구성된 시스템.
  5. 제 1 항에 있어서,
    상기 데이터 인터페이스 회로는:
    상기 데이터 세트를 일시적으로 저장하고, 적어도 부분적으로 상기 리던던트 데이터 부분의 상기 생성에 의해 야기된 지연들을 숨기도록 구성된 버스트 버퍼 메모리 회로; 그리고
    미리 쓰기 로그를 포함하는 시스템.
  6. 제 1 항에 있어서,
    상기 데이터 관리 회로는, 상기 데이터 세트에 대응하는 상기 리던던트 데이터 부분의 제1 부분이 삭제될 때:
    상기 데이터 세트에 대응하는 상기 리던던트 데이터 부분의 제2 부분을 생성하도록 구성되고,
    상기 데이터 세트에 대응하는 상기 리던던트 데이터 부분의 상기 제2 부분은 상기 리던던트 데이터 부분의 상기 제1 부분보다 더 작은 리던던시 레벨을 포함하는 시스템.
  7. 제 1 항에 있어서,
    상기 데이터 관리 회로는:
    데이터 조각에 기초하여 리던던시 코드를 생성하도록 구성된 특화된 리던던시 코드 발생기를 포함하는 시스템.
  8. 데이터 세트를 저장하도록 구성된 스토리지 장치를 포함하되, 상기 스토리지 장치는 가용 저장 공간의 양을 가지며; 및
    데이터 관리 회로를 포함하되,
    상기 데이터 관리 회로는:
    상기 스토리지 장치 내에서의 상기 가용 저장 공간의 양을 측정하도록 구성된 스토리지 모니터 회로;
    상기 데이터 세트에 대해, 상기 데이터 세트에 대응할 리던던시 레벨을 결정하도록 구성된 리던던시 할당 회로; 및
    상기 데이터 세트에 대해, 상기 데이터 세트에 대응할 리던던트 데이터 부분을 생성하도록 구성된 적어도 하나의 리던던시 코드 발생기를 포함하고,
    상기 리던던시 코드 발생기는, 적어도 부분적으로, 상기 가용 저장 공간 양에 기초하여, 상기 스토리지 장치 내의 동일한 위치에서 상기 리던던트 데이터 부분의 부분들을 삭제하고 상기 데이터 세트의 하나 이상의 부분들을 유지함으로써, 상기 데이터 세트에 대응하는 상기 리던던시 레벨을 줄임으로써 상기 리던던시 레벨을 동적으로 조정하도록 구성된 장치.
  9. 제8 항에 있어서,
    상기 리던던시 할당 회로는:
    적어도 부분적으로, 상기 가용 저장 공간의 양에 기초하여, 상기 리던던트 데이터 부분을 생성할 때 사용하기 위해 리던던시 방식을 선택하도록 구성된 장치.
  10. 제9 항에 있어서,
    상기 데이터 관리 회로는:
    상기 가용 저장 공간의 양이 제 1 임계치를 초과할 때, 데이터 미러링을 포함하는 리던던시 방식을 사용하도록 구성된 장치.
KR1020200014532A 2019-02-25 2020-02-06 가용 용량의 손실없이 키-값 스토리지 서버의 취약 윈도우를 줄이는 방법 KR102574324B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962810373P 2019-02-25 2019-02-25
US62/810,373 2019-02-25
US16/389,907 US11171671B2 (en) 2019-02-25 2019-04-19 Reducing vulnerability window in key value storage server without sacrificing usable capacity
US16/389,907 2019-04-19

Publications (2)

Publication Number Publication Date
KR20200103535A KR20200103535A (ko) 2020-09-02
KR102574324B1 true KR102574324B1 (ko) 2023-09-04

Family

ID=72141938

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200014532A KR102574324B1 (ko) 2019-02-25 2020-02-06 가용 용량의 손실없이 키-값 스토리지 서버의 취약 윈도우를 줄이는 방법

Country Status (3)

Country Link
US (1) US11171671B2 (ko)
KR (1) KR102574324B1 (ko)
CN (1) CN111610932B (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112148791B (zh) * 2020-09-15 2024-05-24 张立旭 一种分布式数据动态调整存储方法及系统
US11829269B2 (en) * 2021-01-28 2023-11-28 EMC IP Holding Company LLC Storage array disk recovery

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110208933A1 (en) 2008-10-27 2011-08-25 Kaminario Technologies Ltd. Mass-Storage System Utilizing Solid-State Storage and Non-Solid-State Storage
US20130073895A1 (en) 2010-12-01 2013-03-21 Lsi Corporation Fractional redundant array of silicon independent elements
US20130073901A1 (en) 2010-03-01 2013-03-21 Extas Global Ltd. Distributed storage and communication
US20140040530A1 (en) 2012-08-02 2014-02-06 Lsi Corporation Mixed granularity higher-level redundancy for non-volatile memory

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5664187A (en) * 1994-10-26 1997-09-02 Hewlett-Packard Company Method and system for selecting data for migration in a hierarchic data storage system using frequency distribution tables
US5542065A (en) * 1995-02-10 1996-07-30 Hewlett-Packard Company Methods for using non-contiguously reserved storage space for data migration in a redundant hierarchic data storage system
US6055604A (en) * 1997-08-26 2000-04-25 Hewlett-Packard Company Forced transaction log posting using a least busy storage media without maintaining redundancy of the transaction log
US6553509B1 (en) * 1999-07-28 2003-04-22 Hewlett Packard Development Company, L.P. Log record parsing for a distributed log on a disk array data storage system
US6516425B1 (en) * 1999-10-29 2003-02-04 Hewlett-Packard Co. Raid rebuild using most vulnerable data redundancy scheme first
US7539828B2 (en) * 2000-08-08 2009-05-26 Faronics Corporation Method and system for automatically preserving persistent storage
US7089395B2 (en) * 2002-10-03 2006-08-08 Hewlett-Packard Development Company, L.P. Computer systems, virtual storage systems and virtual storage system operational methods
US8219777B2 (en) * 2002-10-03 2012-07-10 Hewlett-Packard Development Company, L.P. Virtual storage systems, virtual storage methods and methods of over committing a virtual raid storage system
US7152142B1 (en) * 2002-10-25 2006-12-19 Copan Systems, Inc. Method for a workload-adaptive high performance storage system with data protection
US7370248B2 (en) * 2003-11-07 2008-05-06 Hewlett-Packard Development Company, L.P. In-service raid mirror reconfiguring
WO2006052829A2 (en) * 2004-11-05 2006-05-18 Trusted Data Corporation Dynamically upgradeable fault-tolerant storage system permitting variously sized storage devices and method
US7958303B2 (en) * 2007-04-27 2011-06-07 Gary Stephen Shuster Flexible data storage system
US8166257B1 (en) * 2008-01-24 2012-04-24 Network Appliance, Inc. Automated continuous provisioning of a data storage system
EP2338155A4 (en) * 2008-10-23 2016-08-17 Hewlett Packard Development Co DIRECTLY INSTALLED STORAGE SYSTEM AND METHOD FOR IMPLEMENTING MULTIPLE SIMULTANEOUS MEMORY CHEMAS
JP5458938B2 (ja) * 2010-02-17 2014-04-02 富士通株式会社 情報処理装置、情報処理プログラムおよび情報処理方法
US9619472B2 (en) * 2010-06-11 2017-04-11 International Business Machines Corporation Updating class assignments for data sets during a recall operation
US8386841B1 (en) * 2010-07-21 2013-02-26 Symantec Corporation Systems and methods for improving redundant storage fault tolerance
US9229808B2 (en) * 2010-10-01 2016-01-05 Pure Storage, Inc. Reconstruct reads in a raid array with dynamic geometries
US8239584B1 (en) * 2010-12-16 2012-08-07 Emc Corporation Techniques for automated storage management
US8886904B2 (en) * 2011-04-14 2014-11-11 Kaminario Technologies Ltd. Managing a solid-state storage device
US8688909B2 (en) * 2011-06-07 2014-04-01 Hitachi, Ltd. Storage apparatus and data management method
US10082959B1 (en) * 2011-12-27 2018-09-25 EMC IP Holding Company LLC Managing data placement in storage systems
US8903959B2 (en) * 2013-01-08 2014-12-02 Lyve Minds, Inc. Storage network data distribution
US9774401B1 (en) 2013-07-15 2017-09-26 Paul Borrill Entangled links, transactions and trees for distributed computing systems
US10255137B1 (en) * 2013-12-16 2019-04-09 EMC IP Holding Company LLC Point-in-time recovery on deduplicated storage
US9678678B2 (en) * 2013-12-20 2017-06-13 Lyve Minds, Inc. Storage network data retrieval
US9584160B2 (en) * 2014-02-20 2017-02-28 Quantum Corporation Dynamically configuring erasure code redundancy and distribution
US20150288783A1 (en) * 2014-04-08 2015-10-08 Lyve Minds, Inc. Storage agent status
TW201606746A (zh) * 2014-05-09 2016-02-16 萊芙麥斯公司 照片分享裝置顯示器上之影像捲動
US9781206B2 (en) * 2014-05-09 2017-10-03 Lyve Minds, Inc. Blended storage allocation on a storage agent
US9531610B2 (en) * 2014-05-09 2016-12-27 Lyve Minds, Inc. Computation of storage network robustness
US9348695B2 (en) * 2014-05-21 2016-05-24 Sandisk Technologies Inc. System and method of storing redundancy data
US9923970B2 (en) 2014-08-22 2018-03-20 Nexenta Systems, Inc. Multicast collaborative erasure encoding and distributed parity protection
GB2529670A (en) * 2014-08-28 2016-03-02 Ibm Storage system
GB2529669B8 (en) * 2014-08-28 2017-03-15 Ibm Storage system
US10437783B1 (en) * 2014-09-25 2019-10-08 EMC IP Holding Company LLC Recover storage array using remote deduplication device
US10324798B1 (en) * 2014-09-25 2019-06-18 EMC IP Holding Company LLC Restoring active areas of a logical unit
WO2016051512A1 (ja) * 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム
US9600377B1 (en) * 2014-12-03 2017-03-21 EMC IP Holding Company LLC Providing data protection using point-in-time images from multiple types of storage devices
US10387248B2 (en) 2016-03-29 2019-08-20 International Business Machines Corporation Allocating data for storage by utilizing a location-based hierarchy in a dispersed storage network
US10409511B1 (en) * 2018-06-30 2019-09-10 Western Digital Technologies, Inc. Multi-device storage system with distributed read/write processing
JP7312251B2 (ja) * 2018-10-15 2023-07-20 ネットアップ,インコーポレイテッド 様々なデータ冗長性スキームを備えた、システムにおける利用可能なストレージ空間を改善すること
US10891066B2 (en) * 2018-12-28 2021-01-12 Intelliflash By Ddn, Inc. Data redundancy reconfiguration using logical subunits

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110208933A1 (en) 2008-10-27 2011-08-25 Kaminario Technologies Ltd. Mass-Storage System Utilizing Solid-State Storage and Non-Solid-State Storage
US20130073901A1 (en) 2010-03-01 2013-03-21 Extas Global Ltd. Distributed storage and communication
US20130073895A1 (en) 2010-12-01 2013-03-21 Lsi Corporation Fractional redundant array of silicon independent elements
US20140040530A1 (en) 2012-08-02 2014-02-06 Lsi Corporation Mixed granularity higher-level redundancy for non-volatile memory

Also Published As

Publication number Publication date
CN111610932A (zh) 2020-09-01
US11171671B2 (en) 2021-11-09
KR20200103535A (ko) 2020-09-02
CN111610932B (zh) 2022-04-26
US20200274556A1 (en) 2020-08-27

Similar Documents

Publication Publication Date Title
US20200042223A1 (en) System and method for facilitating a high-density storage device with improved performance and endurance
US20210173741A1 (en) Distributed multi-level protection in a hyper-converged infrastructure
USRE48222E1 (en) Reconstruct reads in a raid array with dynamic geometries
US10503611B1 (en) Data protection management for distributed storage
US10353622B2 (en) Internal copy-back with read-verify
US10936419B2 (en) Method, device and computer readable medium for managing a storage system
KR102491112B1 (ko) Msr 코드를 위한 fpga 가속 시스템
US11086525B2 (en) Resilient external memory
US11940875B2 (en) System, device and method for storage device assisted low-bandwidth data repair
CN111435292A (zh) 利用自适应写缓冲区释放的存储介质编程
KR102574324B1 (ko) 가용 용량의 손실없이 키-값 스토리지 서버의 취약 윈도우를 줄이는 방법
CN109725823B (zh) 用于管理混合存储盘阵列的方法和设备
CN110597654A (zh) 用于超快的具有奇偶校验的纠错码的系统和方法
CN113805794A (zh) 存储系统和用于在存储系统中迁移数据的方法
KR102426047B1 (ko) 폴라 부호 복호화 장치 및 방법
KR20210131058A (ko) 메모리 시스템 내 데이터를 보호하는 장치 및 방법
US20160253092A1 (en) I/o performance in resilient arrays of computer storage devices
US20210191818A1 (en) Preliminary data protection using composite copies of data in a data storage system

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant