KR20150008440A - 분산형 데이터 저장 시스템에서 데이터 저장 및 보수 방법 및 대응하는 디바이스 - Google Patents

분산형 데이터 저장 시스템에서 데이터 저장 및 보수 방법 및 대응하는 디바이스 Download PDF

Info

Publication number
KR20150008440A
KR20150008440A KR1020147033940A KR20147033940A KR20150008440A KR 20150008440 A KR20150008440 A KR 20150008440A KR 1020147033940 A KR1020147033940 A KR 1020147033940A KR 20147033940 A KR20147033940 A KR 20147033940A KR 20150008440 A KR20150008440 A KR 20150008440A
Authority
KR
South Korea
Prior art keywords
storage device
storage
data blocks
data
cluster
Prior art date
Application number
KR1020147033940A
Other languages
English (en)
Inventor
안-마리 케흐마렉
에르완 르 메레
쥘 스트홉
알렉썽드르 방 캉팡
Original Assignee
톰슨 라이센싱
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 톰슨 라이센싱 filed Critical 톰슨 라이센싱
Publication of KR20150008440A publication Critical patent/KR20150008440A/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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 일반적으로는 분산형 데이터 저장 시스템에 관한 것이다. 구체적으로는, 본 발명은 분산형 데이터 저장 시스템에 데이터를 저장하는 방법에 관한 것으로서, 저장 방법에 대해서도, 연관된 수복 방법에 대해서도, 디바이스 간 통신 비용 및 필요 저장 공간의 관점에서 분산형 데이터 저장 시스템을 효율적이게 하는 데이터 블록의 클러스터링 및 데이터 블록의 랜덤 선형 결합의 사용을 포함한다.

Description

분산형 데이터 저장 시스템에서 데이터 저장 및 보수 방법 및 대응하는 디바이스{METHOD OF DATA STORING AND MAINTENANCE IN A DISTRIBUTED DATA STORAGE SYSTEM AND CORRESPONDING DEVICE}
본 발명은 일반적으로는 분산형 데이터 저장 시스템에 관한 것이다. 구체적으로는, 본 발명은, 네트워크 저장 디바이스 간 데이터의 교환에 필요로 되는 대역폭의 관점에서 그리고 데이터의 아이템을 저장하는데 필요로 되는 네트워크 저장 디바이스의 수의 관점에서, 네트워크 및 데이터 저장 자원에 대한 낮은 충격과 높은 데이터 가용성을 결합하는 분산형 데이터 저장 시스템 내 데이터 저장 방법에 관한 것이다. 본 발명은 또한 그러한 분산형 데이터 저장 시스템 내 고장난 저장 디바이스의 수복(repair) 방법에 관한 것이다.
비디오 및 이미지 취급 디바이스와 같이 대용량 데이터 취급 디바이스의 급속한 보급 배치로, 직접 저장을 위해 또는 백업 저장의 일부분으로서, 막대한 양의 데이터의 신뢰할만한 저장이 요구된다. 점점 더 많은 디바이스에 네트워크 접속성이 제공됨에 따라, 네트워크 접속된 디바이스('저장 디바이스') 내 데이터의 분산형 저장이 비용 효과적 솔루션으로서 고려된다. 인터넷 상에서와 같이 비-관리형 네트워크를 통해 배치될 수 있는 그러한 분산형 데이터 저장 시스템에 있어서는, 데이터 손실에 대한 장애허용력 및 데이터 가용성을 보장하기 위해 데이터의 동일한 아이템을 다수의 네트워크 접속된 디바이스에 복사하는 방법이 개발되어 왔다. 이것은 소위 데이터 복제 또는 리던던시 부가이다. 리던던시는 폭넓은 의미로 받아들여져야 하고, 단순 데이터 중복과 더불어 (장애허용력을 위해 저장 디바이스 상에 인코딩된 데이터가 놓이는 경우) 코드 재발생 또는 삭제와 같은 코딩 기술의 사용도 포함한다. 디바이스 고장에 기인하는 영구적 데이터 손실 또는 일시적 디바이스 이용불가에 기인하는 일시적 데이터 손실의 위험에 대처하기 위해서는, 높은 리던던시가 요망된다. 그렇지만, 필요로 되는 통신 및 저장 사이즈의 관점에서 비용(소위 복제 비용)을 줄이기 위해서는, 오히려 낮은 리던던시를 갖는 것이 요망된다.
그리하여 리던던시는 신뢰할 수 없는 컴포넌트에 기반하여 신뢰할만한 서비스를 제공하여야 하는 어느 실제 시스템에 대해서라도 핵심 측면이다. 저장 시스템은 불가피한 디스크 이용불가 및 고장을 가리도록 리던던시를 사용하는 서비스의 전형적 예이다. 위에서 논의된 바와 같이, 이러한 리던던시는 기본 복제 또는 코딩 기술을 사용하여 제공될 수 있다. 삭제 코드는 기본 복제보다 훨씬 더 좋은 효율을 제공할 수 있지만 그들은 현재 시스템에서는 충분히 배치되어 있지 않다. 삭제 코드를 사용할 때 주된 관심사는, 코딩-디코딩 연산에 기인하는 복잡도 증가를 제외하고는, 고장난 저장 디바이스의 보수로부터 유래한다. 실제로, 저장 디바이스가 고장날 때, 그것이 저장한 여러 다른 파일의 블록 전부는 데이터 내구성을 보장하기 위해 교체되어야 한다. 이것은 각각의 손실 블록에 대해 이 블록이 기원해 오는 파일 전체가 단지 하나의 새로운 블록을 재생성하기 위해 다운로드 및 디코딩되어야 함을 의미한다. 기본 데이터 복제에 비해 대역폭 및 디코딩 연산의 관점에서 이러한 오버헤드는 고장 및 그리하여 수복이 예외라기보다는 통상인 시스템에서는 삭제 코드의 사용을 상당히 제한한다. 그럼에도 불구하고, 네트워크 코딩은 보수 프로세스 동안 필요 대역폭을 크게 줄이도록 사용될 수 있다. 이것은 인코딩된 파일의 보수를 다루도록 특히 설계되어 그리하여 그 알려져 있는 결점을 경감하면서 삭제 코드의 효율에 지렛대 효과를 발휘하는 신규 분산형 저장 시스템에 대한 분위기를 조성한다.
필요로 되는 것은 높은 레벨의 데이터 가용성을 달성하는 그리고 가용성 요건과 복제 비용을 공동으로 고려하는 분산형 데이터 저장 솔루션이다.
본 발명은 종래 기술의 불편함 중 일부를 완화하는 것을 목적으로 한다.
분산형 데이터 저장 시스템에서 데이터 저장을 최적화하기 위하여, 본 발명은 네트워크 내 상호접속된 저장 디바이스를 포함하는 분산형 데이터 저장 시스템에서의 데이터 저장 방법을 제안하며, 그 방법은, 분산형 데이터 저장 시스템에 저장할 데이터 파일의 각각에 대해 실행되는,
- 데이터 파일을 k개의 데이터 블록으로 분할하고, k개의 데이터 블록의 랜덤 선형 결합을 통해 이들 k개의 데이터 블록으로부터의 적어도 n개의 인코딩된 데이터 블록을 생성하는 단계; 및
- 동일 저장 디바이스 클러스터의 일부분인 적어도 n개의 저장 디바이스에 걸쳐 파일의 적어도 n개의 인코딩된 데이터 블록을 분산함으로써 적어도 n개의 인코딩된 데이터 블록을 저장하는 단계를 포함하되,
각각의 클러스터는 별개의 저장 디바이스 세트를 포함하고, 파일의 적어도 n개의 인코딩된 데이터 블록은 각각의 저장 디바이스 클러스터가 적어도 2개의 다른 파일로부터의 인코딩된 데이터 블록을 저장하도록 그리고 저장 디바이스 클러스터의 저장 디바이스의 각각이 적어도 2개의 다른 파일로부터의 인코딩된 데이터 블록을 저장하도록 저장 디바이스 클러스터의 적어도 n개의 저장 디바이스에 걸쳐 분배된다.
본 발명은 또한 데이터가 본 발명의 저장 방법에 따라 저장되고 저장된 파일이 k개의 데이터 블록으로 분할되는 분산형 데이터 저장 시스템에서 고장난 저장 디바이스를 수복하는 방법을 포함하며, 그 방법은,
- 고장난 저장 디바이스가 속하는 저장 디바이스 클러스터에 교체 저장 디바이스를 부가하는 단계;
- 저장 디바이스 클러스터 내 k+1개의 남아있는 저장 디바이스 중 어느 하나로부터, k+1개의 저장 디바이스의 각각에 의해 저장된 2개의 다른 파일(X, Y)로부터의 2개의 인코딩된 데이터 블록으로부터 발생된 k+1개의 새로운 랜덤 선형 결합을, 교체 저장 디바이스에 의해, 수신하는 단계;
- 대수적 연산을 사용하여 X에만 관련된 하나의 블록과 Y에만 관련된 다른 하나의 블록인 2개의 블록이 획득되는 2개의 선형 결합을 획득하도록 수신된 새로운 랜덤 선형 결합을 서로 간 결합하는 단계; 및
- 2개의 선형 결합을 교체 저장 디바이스에 저장하는 단계를 포함한다.
수복하는 방법의 변형 실시예에 의하면, 그 수복하는 방법은 분산형 데이터 시스템에 복귀하는 상기 고장난 저장 디바이스를 저장 디바이스 클러스터에 재통합하는 단계를 포함한다.
본 발명은 또한 네트워크 내 상호접속된 저장 디바이스를 포함하는 분산형 데이터 저장 시스템에 데이터 파일의 저장을 관리하기 위한 디바이스를 포함하며, 그 디바이스는 데이터 파일을 k개의 데이터 블록으로 분할하고, 그리고 k개의 데이터 블록의 랜덤 선형 결합을 통해 이들 k개의 데이터 블록으로부터의 적어도 n개의 인코딩된 데이터 블록을 생성하기 위한 데이터 스플리터를 포함하고, 그 디바이스는 동일 저장 디바이스 클러스터의 일부분인 적어도 n개의 저장 디바이스에 걸쳐 파일의 적어도 n개의 인코딩된 데이터 블록을 분산함으로써 적어도 n개의 인코딩된 데이터 블록을 저장하기 위한 저장 분배기를 더 포함하되, 각각의 클러스터는 별개의 저장 디바이스 세트를 포함하고, 파일의 적어도 n개의 인코딩된 데이터 블록은 각각의 저장 디바이스 클러스터가 적어도 2개의 다른 파일로부터의 인코딩된 데이터 블록을 저장하도록 그리고 저장 디바이스 클러스터의 저장 디바이스의 각각이 적어도 2개의 다른 파일로부터의 인코딩된 데이터 블록을 저장하도록 저장 디바이스 클러스터의 적어도 n개의 저장 디바이스에 걸쳐 분배된다.
또한 본 발명은 데이터가 본 발명의 저장 방법에 따라 저장되는 분산형 데이터 저장 시스템에서 고장난 저장 디바이스의 수복을 관리하기 위한 디바이스에 관한 것이다. 수복을 관리하기 위한 디바이스는 고장난 저장 디바이스가 속하는 저장 디바이스 클러스터에 교체 저장 디바이스를 부가하기 위한 교체기; 저장 디바이스 클러스터 내 k+1개의 남아있는 저장 디바이스 중 어느 하나로부터, k+1개의 저장 디바이스의 각각에 의해 저장된 2개의 다른 파일(X, Y)로부터의 2개의 인코딩된 데이터 블록으로부터 발생된 k+1개의 새로운 랜덤 선형 결합을 교체 저장 디바이스에 분배하기 위한 분배기; 대수적 연산을 사용하여 X에만 관련된 하나의 블록과 Y에만 관련된 다른 하나의 블록인 2개의 블록이 획득되는 2개의 선형 결합을 획득하도록 수신된 새로운 랜덤 선형 결합을 서로 간 결합하기 위한 결합기; 및 2개의 선형 결합을 교체 저장 디바이스에 저장하기 위한 데이터 라이터를 포함한다.
본 발명의 더 많은 이점은 본 발명의 구체적이고 비-제한적인 실시예의 설명을 통하여 나타날 것이다.
실시예는 이하의 도면을 참조하여 설명될 것이다.
도 1은 본 발명의 저장 방법의 특정 상세도;
도 2는 본 발명의 저장 방법에 따른 데이터 클러스터링의 예시도;
도 3은 저장 디바이스 고장의 수복 프로세스 표시도;
도 4는 본 발명을 구현할 수 있는 디바이스의 예시도;
도 5는 본 발명의 방법의 특정 실시예를 구현하는 알고리즘;
도 6a는 네트워크에서 상호접속된 저장 디바이스를 포함하는 분산형 데이터 시스템에서 데이터 파일의 저장을 관리하기 위한 디바이스;
도 6b는 데이터가 본 발명의 저장 방법에 따라 저장되는 분산형 데이터 저장 시스템에서 고장난 저장 디바이스의 수복을 관리하기 위한 디바이스.
앞서 언급된 바와 같이, 이제 삭제 코드가 데이터 저장 시스템에서 기본 복제보다 훨씬 더 좋은 효율을 제공할 수 있음이 이해된다. 그러한 저장 시스템에서 그들의 응용은 명확한 이점에도 불구하고 실제로는 아직 널리 보급되어 있지 않다. 그들 응용이 상대적으로 부족한 이유 중 하나는 최첨단 코딩 방법은 새로운 저장 디바이스가 블록이 삽입되거나 수복될 필요가 있을 때마다 찾아내어질 수 있다고 생각하기 때문이다, 즉, 저장 디바이스의 자원이 무한히 존재한다고 상정된다. 더욱, 저장 디바이스의 가용성은 고려되지 않는다. 그들 2개의 전제조건은 현재 분산형 데이터 저장 시스템에서 삭제 코드의 단순 응용에 대한 실제적 장벽을 이루고, 그들 핵심 문제에 답하는 설계 선택이 이루어져야 할 때 혼동을 주고 있다. 이들 결점을 없애기 위하여, 본 발명은 분산형 데이터 저장 시스템에서 리던던시를 이루고 있는 데이터의 블록의 호스팅을 담당하는 저장 디바이스의 클러스터링을 제안하며 삭제 코드를 사용 및 배치하는 실용적 수단을 더 제안한다. 그리고 나면, 본 발명은 단순 복제 및 코딩 스킴 둘 다에 비할 때 유의미한 성능 이득을 가능하게 한다. 본 발명에 따른 클러스터링은 단일 파일 레벨에서 대신에 저장 디바이스 레벨(즉, 여러 파일의 여러 블록을 포함하는 저장 디바이스)에서 일어나는 보수를 가능하게 하고, 삭제 코드의 응용은 효율적 데이터 복제를 가능하게 하고, 그리하여 다중 수복에 지렛대 효과를 발휘하고 분산형 데이터 저장 시스템의 성능 이득을 개선한다.
삭제 코드의 효율은 소위 '최적'인 MDS(Maximum Distance Separable) 코드가 사용될 때 최대이다. 이것은, 소정 저장 오버헤드에 대하여, MDS 코드가 데이터 가용성의 관점에서 최상의 가능 효율을 제공함을 의미한다. MDS 코드는 n개 중 k개의 리던던시 블록(=인코딩된 데이터 블록)의 어떠한 서브세트라도 손실 데이터의 복원에 충분하게 되는 그러한 코드이다. 이것은 M 바이트의 파일을 복원하기 위하여 누구든 정확히 M 바이트를 다운로드할 필요가 있음을 의미한다. RS(Reed Solomon)는 MDS 코드의 고전적 예이다. 랜덤화는 MDS 코드를 구성하는 유연한 방법이다.
본 발명은 네트워크 내 상호접속된 저장 디바이스를 포함하는 분산형 데이터 저장 시스템에 데이터 파일을 저장하는 특정 방법을 제안한다. 그 방법은 분산형 데이터 저장 시스템에 저장할 데이터 파일의 각각에 대해 실행되는 이하의 단계를 포함한다:
- 데이터 파일을 k개의 데이터 블록으로 분할하고, k개의 데이터 블록의 랜덤 선형 결합을 통해 이들 k개의 데이터 블록으로부터의 n개의 인코딩된 데이터 블록을 생성하는 단계; 및
- 동일 저장 디바이스 클러스터의 일부분인 n개의 저장 디바이스에 걸쳐 파일의 n개의 인코딩된 데이터 블록을 분산하는 단계, 각각의 클러스터는 별개의 저장 디바이스 세트를 포함하고, 파일의 n개의 인코딩된 데이터 블록은 각각의 저장 디바이스 클러스터가 적어도 2개의 다른 파일로부터의 인코딩된 데이터 블록을 저장하도록 그리고 저장 디바이스 클러스터의 저장 디바이스의 각각이 적어도 2개의 다른 파일로부터의 인코딩된 데이터 블록을 저장하도록 저장 디바이스 클러스터의 n개의 저장 디바이스에 걸쳐 분배된다.
도 1은 본 발명의 저장 방법의 특정 예를 도시하고 있으며, 이 경우 파일은 k=2 데이터 블록으로 분할되고 그 연관된 선형 결합 방법은 n=4 인코딩된 데이터 블록을 발생시킨다. 그것은 다음과 같이 진행된다: 각각의 파일(X)(10)은 동등한 사이즈의 k개의 데이터 블록(12, 13)으로 청크되고 그 후 n개의 인코딩된 데이터 블록(Xj)(15, 16, 17, 18)이 이들 k개의 블록의 랜덤 선형 결합으로서 생성된다. 분산형 저장 시스템의 각각의 저장 디바이스(j)는 그 후 이들 k개의 데이터 블록의 랜덤 선형 결합인 인코딩된 데이터 블록(Xj)을 저장한다. 연관된 랜덤 계수(
Figure pct00001
)(예컨대, 블록(15)에 대해 2 및 7)는 필드(Fq)에서 랜덤으로 균등하게 선택된다, 즉, Fq는 q개의 원소를 갖는 "유한 필드"를 의미한다. 유한 필드의 이용은 에러 정정 코드의 구현에 필요하고, 당업자에 의해 알려져 있다. 요컨대, 유한 필드는 이산 수들의 세트와 같이 수들의 세트이지만, 이산 수들에 대해 흔히 알려져 있는 것과는 다른 덧셈 및 곱셈에 대한 규칙을 갖는다.
n개의 인코딩된 데이터 블록(Xj)(15-18)의 저장에 부가하여, 연관된 랜덤 계수(
Figure pct00002
)가 저장될 필요가 있다. 그들의 사이즈는 블록(Xj)의 사이즈에 비해 무시할만하므로, 이들 계수를 저장하는데 필요로 되는 저장 공간도 무시할만하다. 일반적으로, 워딩 (랜덤) 선형 결합이 여기서 사용될 때, 이것은 연관된 계수를 포함한다.
실용적 예로서, 파일(X)(10)이 M=1 기가바이트의 사이즈를 갖는다고 생각해 보자. 파라미터(k)(파일 청크의 수) 및 n(k개의 파일 청크의 랜덤 선형 결합의 수)는 코드 구현이 존재하게 되도록, 예컨대 k=2 및 n=4로 선택된다. 연관된 랜덤 계수(
Figure pct00003
)는 1 내지 q 범위 내 이산 수를 발생시키도록 파라미터화되는 종래 기술 난수 발생기로 발생될 수 있다.
n/k는 분산형 저장 시스템의 설계자에 의해 요망되는 리던던시 레벨에 따라 선택된다. 예컨대, 코드 k=2, n=4에 대하여, n/k=2이고 그리하여 1Gb의 파일을 저장하기 위해, 시스템은 2Gb의 저장 공간을 필요로 한다. 부가적으로, n/k는 시스템이 용인할 수 있는 고장의 수(고장난 저장 디바이스의 수)를 표현한다. k=2, n=4의 소정 예에 대하여, 원래 파일은 k=2개의 인코딩된 데이터 블록이 남아있는 한 복구될 수 있다. 그리하여 도입되는 리던던시의 수량과 분산형 저장 시스템의 장애 허용성 간 절충점이 존재한다.
분산형 저장 시스템에 그렇게 저장된 파일의 복원은 다음과 같이 행해진다. 수학적 관점에서, k개의 데이터 블록으로부터 랜덤 선형 결합으로부터 그렇게 생성된 n개의 인코딩된 데이터 블록(Xj)의 각각은 k개의 데이터 블록에 의해 스패닝된 서브스페이스의 랜덤 벡터로서 표현될 수 있다. 파일(X)의 복원에 대해, 그리하여 이러한 서브스페이스에서 k개의 독립 벡터를 획득하는 것으로 충분하다. 독립성 요건은 연관된 랜덤 계수(
Figure pct00004
)가, 파일(X)의 저장 동안, 위에서 언급된 난수 발생기에 의해 미리 발생되었기 때문에 이행된다. 실제로, 선형 독립적인 k개의 벡터의 모든 패밀리마다 역이 가능한 비-특이 매트릭스를 형성하고, 그리하여 파일(X)은 매우 높은 확률(즉, 1에 가까움)로 또는 더 공식적 항으로 복원될 수 있다: D는 n개의 리던던트 블록(Xj) 또는 그렇지 않으면 상기 n개의 랜덤 벡터에 의해 스패닝되는 서브스페이스의 차원을 표시하는 랜덤 변수로서, Fq n에 속한다고 하자. 그때 다음과 같이 나타낼 수 있다:
Figure pct00005
그 식은 m개의 랜덤 벡터에 의해 스패닝되는 서브스페이스의 차원이 정확히 n이고 그리고 그렇게 이들 n개의 벡터의 패밀리가 선형 독립적일 확률을 준다. 이러한 확률은 실용적 필드 사이즈, 전형적으로는 28 또는 216을 사용할 때 모든 n마다 1에 매우 가까운 것으로 나타난다. 언급된 바와 같이, 필드 사이즈는 유한 필드(Fq) 내 원소의 수이다. 값(28 또는 216)은 유한 필드의 하나의 원소가 각각 1개 또는 2개의 바이트(8 비트 또는 16 비트)에 대응하기 때문에 실용적 값이다. 예컨대 216의 필드 사이즈에 대하여 그리고 n=16에 대하여, 이들은 고전적이고 실용적인 값이고, 정확히 n=16 저장 디바이스에 접촉할 때, 파일(X)을 복원할 수 있을 확률은 0.999985이다. 그리하여 랜덤(MDS) 코드는 데이터를 최적으로 인코딩하는 유연한 방법을 제공한다. 그것들은, 고정식 인코딩 매트릭스를 사용하고 그리하여 고정식 레이트 k/n를 갖는 고전적 삭제 코드에 비해서는 다르다, 즉, 그때 리던던시 시스템은 고정된 수의 리던던트 및 독립적 블록보다 더 많이 생성할 수 없다. 실제로, 본 발명에서 제안된 바와 같은 랜덤 코드를 사용할 때, 레이트의 개념은 사라지는데, 누구든, 단지 파일(X)의 k개의 블록(Xj)의 새로운 랜덤 결합을 만드는 것에 의해, 필요만큼 많은 리던던트 블록(Xj)을 발생시킬 수 있기 때문이다. 이러한 속성은 랜덤 코드를 레이트 없는 코드, 또한 소위 파운틴 코드로 만든다. 이러한 레이트 없는 속성은 이들 코드가 분산형 저장 시스템의 컨텍스트에서 매우 적합하게 만드는데, 그것이, 앞으로 더 논의될 바와 같이, 잘못 '손실된' 저장 디바이스의 재통합을 가능하게 하기 때문이다.
손실 데이터의 수복을 쉽고 효율적이게 하는 (위에서 논의된 바와 같은 파라미터(k,n)의) MDS 삭제 코드의 논의된 사용과 함께, 본 발명은 다수의 파일에 속하는 손실 데이터의 동시적 수복에 지렛대 효과를 발휘하는 특정 데이터 클러스터링 방법의 채용을 제안한다. 클러스터의 사이즈는 코드의 유형에 의존한다. 더 정밀하게는 MDS 코드가 k개의 블록으로부터 n개의 인코딩된 데이터 블록을 발생시키고 있으면, 클러스터의 사이즈는 정확히 n일 것이다. 본 발명의 저장 방법에 따른 그러한 클러스터링의 일례가 도 2에 예시되어 있다. 모든 저장 디바이스의 세트는 디스조인트 클러스터로 파티셔닝된다. 그리하여 각각의 저장 디바이스는 하나의 클러스터에만 속한다. 그렇게 편성된 분산형 저장 시스템에 저장할 각각의 파일은 그 후 특정 클러스터 내에 저장된다. 클러스터는 여러 다른 파일로부터의 데이터를 포함한다. 저장 디바이스는 여러 다른 파일로부터의 데이터를 포함한다. 더욱 저장 디바이스는 그 클러스터 상에 저장된 모든 파일마다로부터 하나씩의 데이터 블록을 포함한다. 도 2는 6개의 파일(X1 내지 X6)에 대한 일례를 제공하는데, 각각의 파일은 이들 파일의 k개의 블록의 랜덤 선형 결합인 n=3개의 인코딩된 데이터 블록(Xj)을 포함한다. 2개의 저장 클러스터는 각각 3개의 저장 디바이스의 세트를 포함한다: 제1 클러스터 1(20)는 저장 디바이스 1, 2 및 3(200, 201, 202)를 포함하고, 제2 클러스터 2(21)는 3개의 저장 디바이스 4, 5 및 6(210, 211, 212)를 포함한다. 파일(X1)의 3개(n=3)의 인코딩된 데이터 블록(Xj)은 클러스터 1(20)에 저장된다: 저장 디바이스 1(200) 상의 제1 블록(2000), 저장 디바이스 2(201) 상의 제2 블록(2010) 및 저장 디바이스 3(202) 상의 제3 블록(2020). 파일(X2)의 3개의 인코딩된 데이터 블록(Xj)은 클러스터 2(21)에 저장된다: 저장 디바이스 4(210) 상의 제1 블록(2100), 저장 디바이스 5(211) 상의 제2 블록(2110) 및 저장 디바이스 6(212) 상의 제3 블록(2120). 마찬가지로, 클러스터 1은 또한 파일(X3)(2001, 2011, 2021)의 인코딩된 데이터 블록(Xj), 및 파일(X5)(2002, 2012, 2022)의 인코딩된 데이터 블록(Xj)을 저장 디바이스 1, 2 및 3(각각, 200, 201, 202)에 저장한다. 마찬가지로, 클러스터 2는 또한 파일(X4)(2101, 2111, 2121)의 그리고 파일(X6)(2102, 2112, 2122)의 인코딩된 데이터 블록(Xj)을 저장 디바이스 4, 5 및 6(각각, 210, 211, 212)에 저장한다. 그 파일들은 선택된 부하 균형 정책에 따라 도착 순서로 저장된다(예컨대, 클러스터 1 상에 파일(X1), 클러스터 2 상에 파일(X2), 클러스터 1 상에 파일(X3) 등).
이들 파일을 관리하기 위하여, 2개의 인덱스를 유지하는 것으로 충분하다: 각각의 파일을 클러스터에 매핑하는 것 하나, 및 각각의 저장 디바이스를 클러스터에 매핑하는 것 하나. 본 발명의 특정 실시예에 의하면, 저장 디바이스는 그들의 IP(인터넷 프로토콜) 주소에 의해 식별될 수 있다.
본 발명의 데이터 블록 배치 전략은 분산형 저장 시스템에 저장된 파일의 수로 잘 스케일링하는 단순 파일 관리를 암시하는 한편, 앞으로 더 설명될 바와 같이 그러한 시스템의 보수 프로세스를 직접 서비스 제공한다. 클러스터가 어떻게 구성되는지 클러스터가 여러 다른 파일로 어떻게 채워지는지에 관한 방법은 특정 프로토콜 사용 또는 균등 샘플링처럼 어떠한 정책에 따라서라도 행해질 수 있다. 실로, 최첨단의 다양한 배치 전략이 존재하며, 예를 들면 어떤 것은 부하 균형에 초점을 두고 어떤 다른 것은 가용성에 초점에 둔다.
배치 전략 및 보수(수복) 프로세스는 통상 독립적으로 설계되는 2개의 빌딩 블록으로서 고려된다. 본 발명으로는, 앞으로 더 설명될 바와 같이 배치 전략은 보수 프로세스를 직접 서비스 제공한다. 분산형 데이터 저장 시스템은 단지 그러한 시스템의 상업적 구현의 사이즈에 기인하여 고장나기 쉽다. 전형적으로, 이 서비스에 대한 인터넷 가입자로부터의 데이터를 저장하도록 서비스 제공하는 분산형 데이터 저장 시스템은 하드 디스크 드라이브를 구비한 수천의 저장 디바이스를 채용한다. 그래서 이들 고장에 의해 야기된 데이터 손실을 수복하기 위해서는 신뢰할만한 보수 메커니즘이 요건으로 된다. 그렇게 행하기 위하여, 시스템은 저장 디바이스를 모니터링할 필요가 있고 전통적으로는 수복이 수행되어야 하는지 결정하도록 타임아웃-기반 트리거링 메커니즘을 사용한다. 본 발명의 클러스터링 방법의 제1 실용주의적 포인트는, 필요로 될 때 스스로 모니터링 및 재발생(즉, 데이터 손실을 수복)하는 자율적 클러스터를 생성함으로써, 저장 디바이스의 클러스터가 관리하기 쉽고 모니터링이 완전히 분산적 방식으로 구현될 수 있다는 것이다. 이것은 현재의 저장 시스템과는 대조적인데, 그 경우는 고장난 저장 디바이스를 수복하기 위해, 고장난 저장 디바이스를 교체하는 저장 디바이스는 고장난 저장 디바이스가 저장하고 있었던 리던던트 블록의 각각에 연관된 파일 전부에 액세스할 필요가 있다; 그 후 접촉할 저장 디바이스는 자의적 위치에 위치할 수 있어서, 수복 이전에, 교체 저장 디바이스가 우선 그들의 위치에 대해 질의할 것을 요건으로 한다. 이것은 본 발명에서는, 소정 클러스터에서, 배치가 구조화되므로 일어나지 않는다.
이러한 종래 기술에 따라 각각의 저장된 파일로의 액세스가 독립적 이벤트로 고려되면, 이는 전형적으로는 저장 디바이스의 충분히 큰 세트 상에 데이터의 균등 랜덤 배치를 사용할 때의 경우인데, 그때 그 세트 내 이들 저장 디바이스 전부와 접촉하는데 성공할 확률은 여러 다른 파일의 리던던트 블록이 저장 디바이스의 동일한 세트 상에 저장되어 있지 않으면 블록의 수에 따라 감소한다. 이것은 각각의 호스트 저장 디바이스가 어떤 확률로 실제 이용가능하고, 그때 증가하는 수의 그러한 호스트 저장 디바이스에 액세스하는 것은 소정 시점에서 필요로 되는 블록 전부에 액세스할 수 있을 확률을 감소시킨다는 사실로부터 유래한다. 위에서 설명된 종래 기술 솔루션과는 대조적으로, 본 발명의 클러스터링된 배치 방법을 사용하면, 저장 디바이스는 그들이 교체 저장 디바이스에 대해 중대 블록을 공동으로 호스팅하는 그러한 방식으로 그룹화되어 있으므로, 수복이 성공할 확률은 고장난 저장 디바이스에 의해 저장된 블록의 수에 더 이상 의존하지 않는다. 부가적으로, 교체 저장 디바이스가 접촉할 필요가 있는 저장 디바이스의 수는 고장난 저장 디바이스에 의해 저장되어 있었던 블록의 수에 의존하지 않는다. 그 대신, 이러한 수는 시스템 운영자에 의해 미리 정해지고 고정되는 클러스터 사이즈에 의존하고, 그리하여 교체 저장 디바이스가 유지할 필요가 있는 커넥션의 수를 감축한다.
그 저장 방법의 특정 효율은 고장난 저장 디바이스의 수복을 예시하고 앞으로 더 논의될 도 3의 도움으로 가장 잘 설명된다.
도 3에 의해 예시된 발명의 방법과는 대조적으로, 종래-기술 수복 프로세스는, 고전적 삭제 코드를 사용할 때, 다음과 같다: 소정 파일의 하나의 데이터 블록을 수복하기 위하여, 교체 저장 디바이스는 할 수 있는 충분한 리던던트, 삭제 코드 인코딩된 블록을 다운로드하고, (인코딩되지 않은 플레인 데이터) 파일을 재생성하기 위해, 그것들을 디코딩하여야 한다. 이러한 연산이 행해지고 나면, 교체 저장 디바이스는 파일을 재-인코딩하고 손실 리던던트 데이터 블록을 재발생할 수 있는데, 재-인코딩은 각각의 손실 블록에 대해 반복되어야 한다. 이러한 종래 기술 방법은 이들 유형의 코드의 사용에 의해 야기되는 이하의 결점을 갖는다:
1. 하나의 블록, 즉, 파일의 작은 부분을 수복하기 위해, 교체 저장 디바이스는 파일의 블록을 저장하고 있는 다른 저장 디바이스에 의해 저장된 블록 전부를 다운로드하여야 한다. 이것은 통신의 관점에서 비용이 들고, 이러한 제1 단계가 완료되지 않았을 때 (이후의) 제2 단계가 관여될 수 없으므로 시간 소비적이다.
2. 제1 단계가 완료되고 나면, 교체 저장 디바이스는 인코딩되지 않은 플레인 데이터 파일을 재발생시킬 수 있도록 그 다운로드된 블록을 파악하여야 한다. 이것은 계산-집약적 연산이며, 큰 파일에 대해서는 더더욱 그렇다.
3. 그 후, 인코딩 알고리즘을 사용하여, 손실 블록은 재발생된 플레인 데이터 파일로부터 그것을 인코딩함으로써 재생성되어야 한다.
이러한 종래 기술 방법과는 대조적으로, 본 발명의 저장 방법의 클러스터링된 배치 전략 및 랜덤 코드의 사용은 수복 프로세스 동안 중요한 이점을 허용한다. 도시되었던 바와 같이, 종래 기술 수복 방법에 의하면, 동일 파일의 다수의 블록이 그들 중에서 결합된다. 본 발명의 방법에 의하면, 네트워크 코딩이 파일 레벨이 아니라 그보다는 시스템 레벨에서 사용된다, 즉, 본 발명의 수복 방법은 다수의 파일의 데이터 블록의 결합을 포함하며, 이는 수복 동안 저장 디바이스 간 교환되는 메시지의 수를 상당히 감축한다. 저장 디바이스에 의해 저장된 인코딩된 데이터 블록(Xj)은 단지 대수적 원소이고, 그에 대해서는 대수적 연산이 수행될 수 있다.
수복 프로세스의 종료시, 수복 프로세스의 종료시에 획득되어야 하는 것은 고장난 저장 디바이스의 수복이다. 현재 발명의 컨텍스트에 있어서, 고장난 저장 디바이스의 수복은 고장난 저장 디바이스가 그 인코딩된 데이터 블록(Xj)을 저장하였던 각각의 파일에 대한 랜덤 벡터의 생성을 의미한다. 어느 랜덤 벡터라도 리던던트 또는 인코딩된 데이터 블록이다. 그리하여 고장난 저장 디바이스의 수복 프로세스에 요구되는 연산은 고장난 저장 디바이스에 저장되었던 바로 그 데이터를 교체하는 것이 아니라 그보다는 고장난 저장 디바이스에 의해 손실되었던 데이터의 양을 재발생시키는 것이다. 이러한 선택은 소위 저장 디바이스 재통합에 관한 부가적 이점을 제공함이 앞으로 더 논의될 것이다.
도 3은 본 발명에 따라 고장난 저장 디바이스의 수복을 예시하고 있으며, 본 발명의 데이터 저장 방법을 사용하는 분산형 데이터 저장 시스템에 기반하고 있다. 여기서, 클러스터(30000)는 초기에는 4개의 저장 디바이스(30, 31, 32, 33)를 포함한다. 각각의 저장 디바이스는 2개의 파일, 파일(X) 및 파일(Y)의 랜덤 코드 블록(Xj)을 저장한다. 파일(X, Y) 둘 다에 대해 k=2이다(즉, 파일(X, Y)은 k=2개의 블록으로 청크된다). 제1 저장 디바이스(30)는 랜던 코드 블록(=인코딩된 데이터 블록)(300, 301)을 저장한다. 제2 저장 디바이스(31)는 랜덤 코드 블록(310, 311)을 저장한다. 제3 저장 디바이스(32)는 랜덤 코드 블록(320, 321)을 저장한다. 제4 저장 디바이스(33)는 랜덤 코드 블록(330, 331)을 저장한다. 제4 저장 디바이스(33)가 고장나서 수복되어야 한다고 상정한다. 이것은 다음과 같이 행해진다:
1. 제5의, 교체 저장 디바이스(39)가 클러스터(30000)에 부가된다. 교체 저장 디바이스는, 클러스터 내 k+1개의 잔여 저장 디바이스로부터, 각각의 저장 디바이스에 의해 저장된 랜덤 코드로부터 발생되는 이들 랜덤 코드의 새로운 랜덤 선형 결합(연관된 계수(
Figure pct00006
)를 가짐)을 수신한다. 이것은 직사각형(34-36) 및 화살표(3000-3005)에 의해 예시되어 있다.
2. 결과적으로 발생된 새로운 랜덤 선형 결합은 인수 X, Y가 각각 소거되는 2개의 선형 결합이 남아있게 되는 그러한 방식으로 그들 중에서 결합된다. 즉, X에만 관련되는 하나의 선형 결합 및 Y에만 관련되는 다른 하나의 결합. 이러한 소거는, 예를 들어 고전적 "가우시안 소거" 대수적 연산을 사용하여, 이들 결합의 계수를 유의하여 선택함으로써 행해진다.
3. 남아있는 2개의 선형 결합은 교체 저장 디바이스(39)에 저장된다. 이것은 화살표(3012, 3013)에 의해 예시되어 있다.
이제, 수복 연산이 완료되었고, 시스템은 다시 안정적 동작 상태에 있다고 생각된다.
대부분의 분산형 저장 시스템에 있어서, 저장 디바이스를 고장 디바이스라고 선언하는 결정은 타임아웃을 사용하여 수행된다. 이것은 불확실성 하의 결정이어서, 에러가 나기 쉽다는 점이다. 실제로, 저장 디바이스는 부당하게 타임-아웃 될 수 있고 수복이 종료된 후에 예상치 못하게 재접속할 수 있다. 물론 타임아웃이 길수록, 에러는 더 적게 난다. 그렇지만, 긴 타임아웃을 사용하는 것은 위험한데, 저장 시스템의 반응성이 감축되어, 고장 버스트가 일어날 때 불치의 데이터 손실에 이를 가능성이 있기 때문이다. 재통합의 아이디어는 부당하게 타임-아웃된 저장 디바이스를 재통합하는 것이다. 재통합은 삭제 코드를 사용할 때는 아직 다뤄지지 않았다. 재통합이 구현되지 않으면, 부당하게 고장인 것으로 생각되었던 저장 디바이스의 수복은 불필요한 것이었고, 그리하여 그것이 부가적 고장을 용인하는데 기여할 수 없으므로 자원의 낭비이다. 이것은 수복된 저장 디바이스가 다른 저장 디바이스로부터의 독립적 리던던시를 포함하고 있지 않다는 사실로부터 유래하고, 그리하여 그것은 부가적 리던던시 이점을 가져오지 못한다.
본 발명의 특정 유익한 실시예는 부당한 고장난 저장 디바이스, 즉, 예를 들어 검출된 커넥션 타임-아웃 시 분산형 데이터 저장에 의해 고장이라고 생각되었지만 시스템에 재접속하는 것인 디바이스의 재통합을 포함한다. 본 발명으로는, 그러한 재통합이 가능한데, 그것이 단지 더 많은 리던던트 데이터를 클러스터에 부가하고 부당한 고장난 저장 디바이스의 수복이, 일견 불필요하기는 하지만, 클러스터의 리던던시에 부가하고, 동일 클러스터의 어느 저장 디바이스가 고장나는 다음번에는, 그리하여 수복을 실행하는 것이 필요치 않기 때문이다. 이것은, 본 발명에 따른 클러스터링 스킴과 함께, 랜덤 코드의 속성으로부터 유도된다. 그리하여 재통합은 분산형 데이터 저장 시스템의 자원 사용에 관하여 효율을 부가한다.
저장 디바이스 재통합의 이러한 개념을 활용하는 본 발명의 여러 다른 변형 실시예가 가능하다.
제1 변형 실시예에 의하면, 클러스터의 사이즈는 정확히 n개의 저장 디바이스에서 유지된다. 저장 디바이스가 고장나면, 그것은 교체 저장 디바이스에 의해 교체되어, 본 발명의 고장난 저장 디바이스를 수복하는 방법에 따라 인코딩된 데이터 블록을 제공받는다. 고장난 저장 디바이스가 복귀하면(즉, 그것이 단지 일시적 이용불가이었으면), 그것은 클러스터의 저장 디바이스 중 하나로서 클러스터에 재통합되지 않고, 그보다는 그것은, 필요로 될 때, 이러한 클러스터에 대한 교체 디바이스로서, 또는 변형에 따라 다른 것을 위해 사용될 수 있는 저장 디바이스의 풀 내에 자유 디바이스로서 통합된다.
제2 변형 실시예에 의하면, 수복되었고, 즉 다른, 교체 저장 디바이스로 교체되었고 클러스터로 복귀하는 고장 디바이스는 클러스터에 재통합될 것이다. 이것은 클러스터가 이제 특정 시간 기간 동안(즉, 다음 고장까지) n+1개의 저장 디바이스의 레벨에서 유지될 것임을 의미하며, 이 경우 그것은 이전에 n개의 저장 디바이스를 갖고 있었다. 2가지의 경우가 적용된다: 고장 디바이스의 일시적 부재 동안, n개의 노드 상에서 데이터는 변경되지 않았고, 그 노드는 이미 클러스터의 부분인 n개의 저장 노드에 단순히 부가될 수 있다. 대조적으로, 데이터가 변경되었으면, 고장 노드는 클러스터의 n개의 노드의 나머지와 동기화될 필요가 있다. 이러한 동기화는, 고장 노드의 완전한 수복에 대해 요구되는 연산을 필요로 하기보다는, 단지, 도 1의 도움으로 설명되어 있는 바와 같이, 디바이스의 부재 동안 클러스터에 의해 저장되었던 각각의 새로운 파일에 대해 하나의 블록의 새로운 랜덤 선형 결합의 발생, 및 그 발생된 새로운 랜덤 선형 결합의 고장난 저장 디바이스에 의한 저장을 요건으로 한다. 물론, 클러스터가 n+1개의 저장 디바이스의 레벨에 남아있으면, 클러스터에 부가되는 어느 새로운 파일이라도 클러스터의 n+1개의 노드에 걸쳐 분산되어야 한다. 이것은 디바이스 고장이 없는 한 계속된다. 다음 디바이스 고장 후에, 클러스터의 사이즈는 다시 n으로 감축될 것이다.
언급된 바와 같이, 변형 실시예에 의하면, n개의 저장 디바이스를 포함하는 대신에, 클러스터는 n+1개의 저장 디바이스, 또는 n+2 또는 n+10 또는 n+m개를 포함할 수 있으며, m은 어떠한 정수라도 된다. 이것은 본 발명의 데이터 저장 방법을 변경하지 않고, 수복 방법도 변경하지 않고, 단지, 저장 방법에서는 k개의 데이터 블록으로 분할된 파일로부터 n개가 아니라 n+m개의 인코딩된 데이터 블록이 생성되는 것이며, 클러스터의 n+m개의 저장 디바이스 부분에 걸쳐 분산되는 것임을 고려하기만 하면 된다. 클러스터에 n개보다 많은 저장 디바이스를 갖는 것은 클러스터에서 더 많은 리던던시를 갖는 이점을 갖지만, 그것은 더 많은 데이터 저장 오버헤드를 생성한다.
도 4는 본 발명에 따라 데이터 아이템의 저장 방법을 구현하는 분산형 저장 시스템에서의 저장 디바이스로서 사용될 수 있는 디바이스를 도시하고 있다. 디바이스(400)는 저장 디바이스의 관리 디바이스의 역할도 하는 범용 디바이스일 수 있다. 디바이스는 디지털 데이터- 및 주소 버스(414)에 의해 상호접속되는 이하의 컴포넌트를 포함한다.
- 프로세싱 유닛(411)(또는 중앙 프로세싱 유닛에 대한 CPU);
- 비-휘발성 메모리(NVM)(410);
- 휘발성 메모리(VM)(420);
- 디바이스(400)의 컴포넌트 간 동작의 동기화를 위한 그리고 타이밍 목적을 위한 참조 클록 신호를 제공하는 클록(412);
- 커넥션(415)을 통해 네트워크에서 접속된 다른 디바이스에 디바이스(400)의 상호접속을 위한 네트워크 인터페이스(413).
메모리(410, 420)의 설명에서 사용되는 단어 "레지스터"는 언급된 메모리의 각각에 있어서 몇몇 2진 데이터를 저장할 수 있는 저-용량 메모리 존과 더불어, 실행가능한 프로그램 또는 전 데이터 세트를 저장할 수 있는 고-용량 메모리 존도 지명함이 주목된다.
프로세싱 유닛(411)은 마이크로프로세서, 커스텀 칩, 전용 (마이크로-) 컨트롤러 등으로서 구현될 수 있다. 비-휘발성 메모리(NVM)(410)는 하드 디스크, 비-휘발성 램, EPROM(Erasable Programmable ROM) 등과 같이 비-휘발성 메모리의 형태로 구현될 수 있다.
비-휘발성 메모리(NVM)(410)는 주목할만하게는 본 발명에 따른 바로 그 수복 방법을 포함하는 실행가능한 프로그램을 표현하는 프로그램을 유지하는 레지스터(4201) 및 영속적 파라미터를 포함하는 레지스터(4202)를 포함한다. 전원이 켜질 때, 프로세싱 유닛(411)은 NVM 레지스터(4101)에 포함된 명령어를 로딩하고, 그들을 VM 레지스터(4201)에 복사하고, 그들을 실행한다.
VM 메모리(420)는 주목할만하게는 다음을 포함한다:
- NVM 레지스터(4101)의 프로그램 'prog'의 복사본을 포함하는 레지스터(4201);
- 데이터 저장소(4202).
디바이스(400)와 같은 디바이스는 데이터 아이템을 저장하는 본 발명의 방법을 구현하는데 적당하고, 그 디바이스는,
- 데이터 파일을 k개의 데이터 블록으로 분할하기 위한 그리고 k개의 데이터 블록의 랜덤 선형 결합을 통해 이들 k개의 블록으로부터 n개의 인코딩된 데이터 블록을 생성하기 위한 수단(CPU(411), VM 레지스터(4202));
- 동일 저장 디바이스 클러스터의 일부분인 n개의 저장 디바이스에 걸쳐 파일의 n개의 인코딩된 데이터 블록을 분산하기 위한 수단(CPU(411), 네트워크 인터페이스(413)), 각각의 클러스터는 별개의 저장 디바이스 세트를 포함하고, 파일의 n개의 인코딩된 데이터 블록은 각각의 저장 디바이스 클러스터가 적어도 2개의 다른 파일로부터의 인코딩된 데이터 블록을 저장하도록 그리고 저장 디바이스 클러스터의 저장 디바이스의 각각이 적어도 2개의 다른 파일로부터의 인코딩된 데이터 블록을 저장하도록 저장 디바이스 클러스터의 n개의 저장 디바이스에 걸쳐 분배된다.
변형 실시예에 의하면, 본 발명은 전적으로 하드웨어로, 예컨대, 전용 컴포넌트로(예컨대, ASIC, FPGA 또는 VLSI로)(각자 <<Application Specific Integrated Circuit>>, <<Field-Programmable Gate Array>> 및 <<Very Large Scale Integration>>) 또는 디바이스에 집적된 별개의 전자 컴포넌트로서 또는 하드웨어와 소프트웨어의 혼합의 형태로 구현된다.
도 5a는 순서도 형태로 본 발명에 따라 분산형 데이터 저장 시스템에 데이터 파일을 저장하는 방법을 도시하고 있다.
제1 단계(500)에서는, 방법이 초기화된다. 이러한 초기화는 방법의 적용에 요구되는 메모리 공간 및 변수의 초기화를 포함한다. 단계(501)에서는, 저장할 파일이 k개의 데이터 블록으로 분할되고, n개의 인코딩된 데이터 블록은 k개의 데이터 블록의 랜덤 선형 결합을 통해 이들 k개의 데이터 블록으로부터 생성된다. 단계(502)에서, 파일의 n개의 데이터 블록은 분산형 데이터 저장 시스템에서 동일 저장 디바이스 클러스터의 일부분인 저장 디바이스에 걸쳐 분산된다. 분산형 데이터 저장 시스템 내 각각의 클러스터는 별개의 저장 디바이스 세트를 포함한다. 파일의 n개의 인코딩된 데이터 블록은, 각각의 저장 디바이스 클러스터가 2개 이상의 파일로부터의 인코딩된 데이터 블록을 저장하도록 그리고 저장 디바이스 클러스터의 저장 디바이스의 각각이 적어도 2개의 다른 파일로부터의 인코딩된 데이터를 저장하도록, 동일 저장 디바이스 클러스터에 걸쳐 분배된다(또는 앞서 사용된 워딩을 사용하도록 분산된다), 또한 도 2 및 그 설명을 참조하라. 단계(503)에서는, 그 방법이 종료된다.
본 발명에 따라 분산형 데이터 저장 시스템에서의 이들 단계의 실행은 그러한 시스템에서의 디바이스에 의해 여러 다른 방식으로 행해질 수 있다.
예컨대, 단계(501)는 관리 디바이스, 즉, 분산형 데이터 저장 시스템을 관리하는 관리 디바이스, 또는 특정 클러스터를 관리하는 관리 디바이스에 의해 실행된다. 특정 디바이스인 대신에, 그러한 관리 디바이스는 관리 디바이스의 역할도 하는, 저장 디바이스와 같은, 어떠한 디바이스라도 될 수 있다.
도 5b는, 순서도 형태로, 본 발명의 저장 방법에 따라 파일이 k개의 데이터 블록으로 분할되어 데이터가 저장되는 분산형 데이터 저장 시스템에서 고장난 저장 디바이스를 수복하는 방법을 도시하고 있다.
제1 단계(600)에서는, 방법이 초기화된다. 이러한 초기화는 방법의 적용에 요구되는 메모리 공간 및 변수의 초기화를 포함한다. 단계(601)에서는, 교체 저장 디바이스가 고장난 저장 디바이스가 속하는 저장 디바이스 클러스터에 부가된다.
그 후 단계(602)에서, 교체 저장 디바이스는 그 저장 디바이스 클러스터 내 모든 k+1개의 남아있는 저장 디바이스로부터 랜덤 선형 결합을 수신한다. 이들 결합은 2개의 다른 파일(X, Y)로부터의 2개의 인코딩된 데이터 블록으로부터 발생된다(노트: 본 발명에 따른 데이터 저장 방법에 의하면, 각각의 저장 디바이스는 적어도 2개의 다른 파일로부터의 인코딩된 데이터 블록을 저장한다). 그 후, 단계(603)에서, 이들 수신된 새로운 랜덤 선형 결합은 2개의 선형 결합, 파일(X)에만 관련된 하나 및 파일(Y)에만 관련된 다른 하나가 획득되도록 그들 중에서 결합된다. 마지막 전 단계(604)에서 이들 2개의 결합이 교체 디바이스에 저장되고, 수복은 종료된다(단계(605)).
수복 방법은 예정 레벨 아래로 떨어지는 데이터 리던던시의 소망 레벨의 검출에 의해 트리거링될 수 있다.
도 6a는 분산형 데이터 시스템에서 데이터 파일의 저장을 관리하기 위한 디바이스(700)이며, 분산형 데이터 시스템은 네트워크에서 상호접속된 저장 디바이스를 포함하고 있다. 디바이스(700)는 저장 관리 디바이스라고 더 지칭될 것이다. 저장 관리 디바이스는 네트워크로의 접속을 위한 네트워크 커넥션(705)을 갖는 네트워크 인터페이스(703)를 포함한다. 저장 관리 디바이스(700)는 데이터 파일을 k개의 데이터 블록으로 분할하기 위한 그리고 k개의 데이터 블록의 랜덤 선형 결합을 통해 이들 k개의 데이터 블록으로부터 적어도 n개의 인코딩된 데이터 블록을 생성하기 위한 데이터 스플리터(701)를 더 포함한다. 저장 관리 디바이스(700)는 동일 저장 디바이스 클러스터의 일부분인 적어도 n개의 저장 디바이스에 걸쳐 파일의 적어도 n개의 데이터 블록을 분산함으로써 적어도 n개의 인코딩된 데이터 블록을 저장하기 위한 저장 분배기(702)를 더 포함한다. 각각의 클러스터는 별개의 저장 디바이스 세트를 포함하고, 파일의 적어도 n개의 인코딩된 데이터 블록은 각각의 저장 디바이스 클러스터가 적어도 2개의 다른 파일로부터의 인코딩된 데이터 블록을 저장하도록 그리고 저장 디바이스 클러스터의 저장 디바이스의 각각이 적어도 2개의 다른 파일로부터의 인코딩된 데이터 블록을 저장하도록 저장 디바이스 클러스터의 적어도 n개의 저장 디바이스에 걸쳐 분배됨으로써 분배된다. 데이터 스플리터(701), 저장 분배기(702) 및 네트워크 인터페이스(703)는 저장 관리 디바이스(700)의 내부 통신 버스를 통하여 상호접속된다.
특정 실시예에 의하면, 저장 관리 디바이스는 그 자체가 분산형 데이터 시스템 내 저장 디바이스 중 하나이다.
도 6b는 데이터가 본 발명의 저장 방법에 따라 저장되고 저장된 파일이 k개의 데이터 블록으로 분할되는 분산형 데이터 저장 시스템에서 고장난 저장 디바이스를 수복하는 것의 관리를 위한 디바이스(710)이다. 디바이스(710)는 수복 관리 디바이스라고 더 지칭될 것이다. 수복 관리 디바이스(710)는 커넥션(715)을 통하여 분산형 데이터 저장 시스템 내 디바이스의 접속을 위한 네트워크 인터페이스(713), 고장난 저장 디바이스가 속하는 저장 디바이스 클러스터에 교체 저장 디바이스를 부가하기 위한 교체기(711), 저장 디바이스 클러스터 내 k+1개의 남아있는 저장 디바이스 중 어느 하나로부터, k+1개의 저장 디바이스의 각각에 의해 저장된 2개의 다른 파일(X, Y)로부터의 2개의 인코딩된 데이터 블록으로부터 발생된 k+1개의 새로운 랜덤 선형 결합을 교체 저장 디바이스에 분배하기 위한 분배기(712)를 포함한다. 수복 관리 디바이스(710)는, 대수적 연산을 사용하여, 그 수신된 새로운 랜덤 선형 결합을 그들 중에서 결합하여 X에만 관련된 하나 및 Y에만 관련된 다른 하나로서 2개의 블록이 획득되는 2개의 선형 결합을 획득하기 위한 결합기(716)를 더 포함한다. 최종적으로, 수복 관리 디바이스는 교체 저장 디바이스에 그 2개의 선형 결합을 저장하기 위한 데이터 라이터(717)를 포함한다. 네트워크 인터페이스(713), 분배기(712), 교체기(711), 결합기(716) 및 데이터 라이터(717)는 내부 통신 버스(714)를 통하여 상호접속된다.
특정 실시예에 의하면, 저장 수복 관리 디바이스는 그 자체가 분산형 데이터 시스템 내 저장 디바이스 중 하나이다.

Claims (5)

  1. 네트워크 내 상호접속된 저장 디바이스를 포함하는 분산형 데이터 저장 시스템에 데이터 파일을 저장하는 방법으로서, 상기 방법은, 상기 분산형 데이터 저장 시스템에 저장할 상기 데이터 파일의 각각에 대해 실행되는,
    - 상기 데이터 파일을 k개의 데이터 블록으로 분할하고, 상기 k개의 데이터 블록의 랜덤 선형 결합을 통해 상기 k개의 데이터 블록으로부터의 적어도 n개의 인코딩된 데이터 블록을 생성하는 단계; 및
    - 동일 저장 디바이스 클러스터의 일부분인 적어도 n개의 저장 디바이스에 걸쳐 상기 파일의 상기 적어도 n개의 인코딩된 데이터 블록을 분산함으로써 상기 적어도 n개의 인코딩된 데이터 블록을 저장하는 단계를 포함하되,
    각각의 클러스터는 별개의 저장 디바이스 세트를 포함하고, 상기 파일의 상기 적어도 n개의 인코딩된 데이터 블록은 각각의 저장 디바이스 클러스터가 적어도 2개의 다른 파일로부터의 인코딩된 데이터 블록을 저장하도록 그리고 저장 디바이스 클러스터의 상기 저장 디바이스의 각각이 적어도 2개의 다른 파일로부터의 인코딩된 데이터 블록을 저장하도록 저장 디바이스 클러스터의 상기 적어도 n개의 저장 디바이스에 걸쳐 분배되는 것을 특징으로 하는 방법.
  2. 데이터가 제1항에 따라 저장되고 저장된 파일이 k개의 데이터 블록으로 분할되는 분산형 데이터 저장 시스템에서 고장난 저장 디바이스를 수복(repair)하는 방법으로서, 상기 방법은,
    - 상기 고장난 저장 디바이스가 속하는 저장 디바이스 클러스터에 교체 저장 디바이스를 부가하는 단계;
    - 상기 저장 디바이스 클러스터 내 k+1개의 남아있는 저장 디바이스 중 어느 하나로부터, 상기 k+1개의 저장 디바이스의 각각에 의해 저장된 2개의 다른 파일(X, Y)로부터의 2개의 인코딩된 데이터 블록으로부터 발생된 k+1개의 새로운 랜덤 선형 결합을, 상기 교체 저장 디바이스에 의해, 수신하는 단계;
    - 대수적 연산을 사용하여 X에만 관련된 블록과 Y에만 관련된 다른 하나의 블록인 2개의 블록이 획득되는 2개의 선형 결합을 획득하도록 수신된 상기 새로운 랜덤 선형 결합을 서로 간 결합하는 단계; 및
    - 상기 2개의 선형 결합을 상기 교체 저장 디바이스에 저장하는 단계를 포함하는 것을 특징으로 하는 방법.
  3. 제2항에 있어서, 상기 수복하는 방법은 상기 분산형 데이터 시스템에 복귀하는 고장난 저장 디바이스를 상기 저장 디바이스 클러스터에 재통합하는 단계를 포함하는 것인 방법.
  4. 네트워크 내 상호접속된 저장 디바이스를 포함하는 분산형 데이터 저장 시스템에 데이터 파일의 저장을 관리하기 위한 디바이스(700)로서, 상기 디바이스는,
    - 상기 데이터 파일을 k개의 데이터 블록으로 분할하고, 그리고 상기 k개의 데이터 블록의 랜덤 선형 결합을 통해 상기 k개의 데이터 블록으로부터의 적어도 n개의 인코딩된 데이터 블록을 생성하기 위한 데이터 스플리터(701) 수단; 및
    - 동일 저장 디바이스 클러스터의 일부분인 적어도 n개의 저장 디바이스에 걸쳐 상기 파일의 상기 적어도 n개의 인코딩된 데이터 블록을 분산함으로써 상기 적어도 n개의 인코딩된 데이터 블록을 저장하기 위한 저장 분배기(702) 수단을 포함하되,
    각각의 클러스터는 별개의 저장 디바이스 세트를 포함하고, 상기 파일의 상기 적어도 n개의 인코딩된 데이터 블록은 각각의 저장 디바이스 클러스터가 적어도 2개의 다른 파일로부터의 인코딩된 데이터 블록을 저장하도록 그리고 저장 디바이스 클러스터의 상기 저장 디바이스의 각각이 적어도 2개의 다른 파일로부터의 인코딩된 데이터 블록을 저장하도록 저장 디바이스 클러스터의 상기 적어도 n개의 저장 디바이스에 걸쳐 분배되는 것을 특징으로 하는 디바이스.
  5. 데이터가 제1항에 따라 저장되고 저장된 파일이 k개의 데이터 블록으로 분할되는 분산형 데이터 저장 시스템에서 고장난 저장 디바이스의 수복을 관리하기 위한 디바이스(710)로서, 상기 디바이스는,
    - 상기 고장난 저장 디바이스가 속하는 저장 디바이스 클러스터에 교체 저장 디바이스를 부가하기 위한 교체기(711) 수단;
    - 상기 저장 디바이스 클러스터 내 k+1개의 남아있는 저장 디바이스 중 어느 하나로부터, 상기 k+1개의 저장 디바이스의 각각에 의해 저장된 2개의 다른 파일(X, Y)로부터의 2개의 인코딩된 데이터 블록으로부터 발생된 k+1개의 새로운 랜덤 선형 결합을 상기 교체 저장 디바이스에 분배하기 위한 분배기(712) 수단;
    - 대수적 연산을 사용하여 X에만 관련된 하나의 블록과 Y에만 관련된 다른 하나의 블록인 2개의 블록이 획득되는 2개의 선형 결합을 획득하도록 수신된 상기 새로운 랜덤 선형 결합을 서로 간 결합하기 위한 결합기(716) 수단; 및
    - 상기 2개의 선형 결합을 상기 교체 저장 디바이스에 저장하기 위한 데이터 라이터(717) 수단을 포함하는 것을 특징으로 하는 디바이스.
KR1020147033940A 2012-05-03 2013-04-24 분산형 데이터 저장 시스템에서 데이터 저장 및 보수 방법 및 대응하는 디바이스 KR20150008440A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP12166706.7 2012-05-03
EP12166706.7A EP2660723A1 (en) 2012-05-03 2012-05-03 Method of data storing and maintenance in a distributed data storage system and corresponding device
PCT/EP2013/058430 WO2013164227A1 (en) 2012-05-03 2013-04-24 Method of data storing and maintenance in a distributed data storage system and corresponding device

Publications (1)

Publication Number Publication Date
KR20150008440A true KR20150008440A (ko) 2015-01-22

Family

ID=48227226

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147033940A KR20150008440A (ko) 2012-05-03 2013-04-24 분산형 데이터 저장 시스템에서 데이터 저장 및 보수 방법 및 대응하는 디바이스

Country Status (6)

Country Link
US (1) US20150089283A1 (ko)
EP (2) EP2660723A1 (ko)
JP (1) JP2015519648A (ko)
KR (1) KR20150008440A (ko)
CN (1) CN104364765A (ko)
WO (1) WO2013164227A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101701131B1 (ko) * 2016-04-28 2017-02-13 주식회사 라피 이종간 블록체인 연결을 이용한 데이터 기록/검증 방법 및 시스템

Families Citing this family (166)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
WO2013191658A1 (en) * 2012-06-20 2013-12-27 Singapore University Of Technology And Design System and methods for distributed data storage
US9367562B2 (en) * 2013-12-05 2016-06-14 Google Inc. Distributing data on distributed storage systems
US9323615B2 (en) * 2014-01-31 2016-04-26 Google Inc. Efficient data reads from distributed storage systems
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) * 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US20220027064A1 (en) * 2015-04-10 2022-01-27 Pure Storage, Inc. Two or more logical arrays having zoned drives
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
AU2016290088A1 (en) * 2015-07-08 2017-11-23 Datomia Research Labs OṺ System and method for secure transmission of signals from a camera
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11269884B2 (en) 2015-09-04 2022-03-08 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
KR101621752B1 (ko) 2015-09-10 2016-05-17 연세대학교 산학협력단 부분접속 복구 가능한 반복분할 부호를 이용한 분산 저장 장치 및 그 방법
US10007585B2 (en) * 2015-09-21 2018-06-26 TigerIT Americas, LLC Fault-tolerant methods, systems and architectures for data storage, retrieval and distribution
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
WO2017132487A1 (en) * 2016-01-29 2017-08-03 Massachusetts Institute Of Technology Apparatus and method for multi-code distributed storage
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US12039165B2 (en) 2016-10-04 2024-07-16 Pure Storage, Inc. Utilizing allocation shares to improve parallelism in a zoned drive storage system
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US10613974B2 (en) 2016-10-04 2020-04-07 Pure Storage, Inc. Peer-to-peer non-volatile random-access memory
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
DE102017216974A1 (de) * 2017-09-25 2019-05-16 Bundesdruckerei Gmbh Dataculestruktur und Verfahren zum manipulationssicheren Speichern von Daten
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US12032848B2 (en) 2021-06-21 2024-07-09 Pure Storage, Inc. Intelligent block allocation in a heterogeneous storage system
US12067274B2 (en) 2018-09-06 2024-08-20 Pure Storage, Inc. Writing segments and erase blocks based on ordering
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
CN108062419B (zh) * 2018-01-06 2021-04-20 深圳市网心科技有限公司 一种文件存储方法、电子设备、系统和介质
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US12001688B2 (en) 2019-04-29 2024-06-04 Pure Storage, Inc. Utilizing data views to optimize secure data access in a storage system
US11995336B2 (en) 2018-04-25 2024-05-28 Pure Storage, Inc. Bucket views
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US12079494B2 (en) 2018-04-27 2024-09-03 Pure Storage, Inc. Optimizing storage system upgrades to preserve resources
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
EP3713094A1 (en) * 2019-03-22 2020-09-23 Zebware AB Application of the mojette transform to erasure correction for distributed storage
US11151093B2 (en) * 2019-03-29 2021-10-19 International Business Machines Corporation Distributed system control for on-demand data access in complex, heterogenous data storage
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US12087382B2 (en) 2019-04-11 2024-09-10 Pure Storage, Inc. Adaptive threshold for bad flash memory blocks
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11487665B2 (en) 2019-06-05 2022-11-01 Pure Storage, Inc. Tiered caching of data in a storage system
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
CN110825791A (zh) * 2019-11-14 2020-02-21 北京京航计算通讯研究所 基于分布式系统的数据访问性能优化系统
CN110895451A (zh) * 2019-11-14 2020-03-20 北京京航计算通讯研究所 基于分布式系统的数据访问性能优化方法
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US12001684B2 (en) 2019-12-12 2024-06-04 Pure Storage, Inc. Optimizing dynamic power loss protection adjustment in a storage system
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US12056365B2 (en) 2020-04-24 2024-08-06 Pure Storage, Inc. Resiliency for a storage system
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
CN112445656B (zh) * 2020-12-14 2024-02-13 北京京航计算通讯研究所 分布式存储系统中数据的修复方法及装置
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US12067282B2 (en) 2020-12-31 2024-08-20 Pure Storage, Inc. Write path selection
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US12093545B2 (en) 2020-12-31 2024-09-17 Pure Storage, Inc. Storage system with selectable write modes
US12061814B2 (en) 2021-01-25 2024-08-13 Pure Storage, Inc. Using data similarity to select segments for garbage collection
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US12099742B2 (en) 2021-03-15 2024-09-24 Pure Storage, Inc. Utilizing programming page size granularity to optimize data segment storage in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
US11994723B2 (en) 2021-12-30 2024-05-28 Pure Storage, Inc. Ribbon cable alignment apparatus

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2002224448A1 (en) * 2000-10-26 2002-05-06 Prismedia Networks, Inc. Method and apparatus for large payload distribution in a network
US20070177739A1 (en) * 2006-01-27 2007-08-02 Nec Laboratories America, Inc. Method and Apparatus for Distributed Data Replication
US8051362B2 (en) * 2007-06-15 2011-11-01 Microsoft Corporation Distributed data storage using erasure resilient coding
EP2288991B8 (en) * 2008-05-05 2018-02-28 Amplidata NV Method of storing a data set in a distributed storage system, distributed storage system and computer program product for use with said method
US8949449B2 (en) * 2008-10-15 2015-02-03 Aster Risk Management Llc Methods and systems for controlling fragment load on shared links
US20100138717A1 (en) * 2008-12-02 2010-06-03 Microsoft Corporation Fork codes for erasure coding of data blocks
EP2394220B1 (en) * 2009-02-03 2014-10-22 Bittorrent, Inc. Distributed storage of recoverable data
US8458287B2 (en) * 2009-07-31 2013-06-04 Microsoft Corporation Erasure coded storage aggregation in data centers
US8631269B2 (en) * 2010-05-21 2014-01-14 Indian Institute Of Science Methods and system for replacing a failed node in a distributed storage network
EP2793130B1 (en) * 2010-12-27 2015-12-23 Amplidata NV Apparatus for storage or retrieval of a data object on a storage medium, which is unreliable
US8645799B2 (en) * 2010-12-31 2014-02-04 Microsoft Corporation Storage codes for data recovery
US8538029B2 (en) * 2011-03-24 2013-09-17 Hewlett-Packard Development Company, L.P. Encryption key fragment distribution
WO2013164228A1 (en) * 2012-05-04 2013-11-07 Thomson Licensing Method of storing a data item in a distributed data storage system, corresponding storage device failure repair method and corresponding devices
CN104583965B (zh) * 2012-08-16 2017-08-11 英派尔科技开发有限公司 将编码数据文件存储在多个文件服务器上
US9647698B2 (en) * 2013-02-26 2017-05-09 Peking University Shenzhen Graduate School Method for encoding MSR (minimum-storage regenerating) codes and repairing storage nodes
US9632829B2 (en) * 2013-03-14 2017-04-25 California Institute Of Technology Distributed storage allocation for heterogeneous systems

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101701131B1 (ko) * 2016-04-28 2017-02-13 주식회사 라피 이종간 블록체인 연결을 이용한 데이터 기록/검증 방법 및 시스템

Also Published As

Publication number Publication date
WO2013164227A1 (en) 2013-11-07
US20150089283A1 (en) 2015-03-26
EP2660723A1 (en) 2013-11-06
JP2015519648A (ja) 2015-07-09
EP2845099A1 (en) 2015-03-11
CN104364765A (zh) 2015-02-18

Similar Documents

Publication Publication Date Title
KR20150008440A (ko) 분산형 데이터 저장 시스템에서 데이터 저장 및 보수 방법 및 대응하는 디바이스
CA2751358C (en) Distributed storage of recoverable data
US9104603B2 (en) Method of exact repair of pairs of failed storage nodes in a distributed data storage system and corresponding device
CN108540520B (zh) 基于部分重复码的局部性修复编码及节点故障修复方法
EP2288991B1 (en) Method of storing a data set in a distributed storage system, distributed storage system and computer program product for use with said method
US20150127974A1 (en) Method of storing a data item in a distributed data storage system, corresponding storage device failure repair method and corresponding devices
US8719667B2 (en) Method for adding redundancy data to a distributed data storage system and corresponding device
KR20120058556A (ko) 인코딩 및 디코딩 프로세스들을 위해 심볼들의 영속적 비활성화에 의한 fec 코드들을 활용하는 방법 및 장치
RU2680350C2 (ru) Способ и система распределенного хранения восстанавливаемых данных с обеспечением целостности и конфиденциальности информации
CN104052576A (zh) 一种云存储下基于纠错码的数据恢复方法
Lin et al. Novel repair-by-transfer codes and systematic exact-MBR codes with lower complexities and smaller field sizes
CN104935481A (zh) 一种分布式存储下基于冗余机制的数据恢复方法
JP2612000B2 (ja) データ処理装置
CN111679939A (zh) 数据备份方法及系统
CN111090540A (zh) 基于纠删码的数据处理方法与装置
Han et al. Update-efficient regenerating codes with minimum per-node storage
CN110704232B (zh) 一种分布式系统中失效节点的修复方法、装置和设备
CN107615248A (zh) 分布式数据存储方法、控制设备和系统
JP2012033169A (ja) バックアップシステムにおける符号化を使用して、ライブチェックポインティング、同期、及び/又は復旧をサポートするための方法及び装置
Singal et al. Storage vs repair bandwidth for network erasure coding in distributed storage systems
TW201351126A (zh) 分佈式資料儲存系統內資料檔案之儲存方法和管理裝置以及故障儲存裝置之修理方法和修理管理裝置
Rai On adaptive (functional MSR code based) distributed storage systems
JP7140424B1 (ja) コンピュータ装置、情報処理方法、プログラム
CN117667834B (zh) 存算解耦系统、数据处理方法及存储介质
Han et al. Update-Efficient Error-Correcting Regenerating Codes

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid