KR20230088215A - 분산 스토리지 시스템 - Google Patents

분산 스토리지 시스템 Download PDF

Info

Publication number
KR20230088215A
KR20230088215A KR1020220049953A KR20220049953A KR20230088215A KR 20230088215 A KR20230088215 A KR 20230088215A KR 1020220049953 A KR1020220049953 A KR 1020220049953A KR 20220049953 A KR20220049953 A KR 20220049953A KR 20230088215 A KR20230088215 A KR 20230088215A
Authority
KR
South Korea
Prior art keywords
storage
data
primary
node
nodes
Prior art date
Application number
KR1020220049953A
Other languages
English (en)
Inventor
이성민
오명원
박성규
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to US17/949,442 priority Critical patent/US20230185822A1/en
Priority to CN202211546158.XA priority patent/CN116257177A/zh
Publication of KR20230088215A publication Critical patent/KR20230088215A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/0653Monitoring storage devices or systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

분산 스토리지 시스템은, 복수의 컴퓨트 노드들을 포함하는 복수의 호스트 서버들; 및 상기 복수의 컴퓨트 노드들과 네트워크를 통해 통신하며, 복수의 스토리지 볼륨들을 제공하는 복수의 스토리지 노드들을 포함하고, 상기 복수의 컴퓨트 노드들은 제1 식별자를 갖는 제1 데이터를 처리하기 위한 프라이머리 컴퓨트 노드 및 백업 컴퓨트 노드들을 포함하고, 상기 복수의 스토리지 볼륨들은 상기 제1 데이터를 저장하기 위한 프라이머리 스토리지 볼륨 및 백업 스토리지 볼륨들을 포함하며, 상기 프라이머리 컴퓨트 노드는 클라이언트로부터 상기 제1 데이터의 라이트 요청을 수신하면, 상기 제1 데이터의 복제(replication) 요청을 상기 프라이머리 스토리지 볼륨을 제공하는 프라이머리 스토리지 노드로 제공하며, 상기 프라이머리 스토리지 노드는 상기 복제 요청에 응하여 상기 프라이머리 스토리지 볼륨에 상기 제1 데이터를 저장하고, 상기 백업 스토리지 볼륨들에 상기 제1 데이터를 복사(copy)하며, 상기 복제 요청의 완료 응답을 상기 프라이머리 컴퓨트 노드로 제공한다.

Description

분산 스토리지 시스템{DISTRIBUTED STORAGE SYSTEM}
본 발명은 분산 스토리지 시스템에 관한 것이다.
데이터센터에 포함되는 분산 스토리지 시스템은 각각이 연산부와 저장부를 포함하는 복수의 서버 노드들을 포함할 수 있으며, 서버 노드들에는 데이터가 분산 저장될 수 있다. 가용성(availability)을 보장하기 위해, 스토리지 시스템은 동일 데이터를 여러 개의 서버 노드에 복제(replication)할 수 있다. 복제 동작은 연산부의 병목 현상을 유발할 수 있으며, 저장부의 최대 성능을 발휘하기 어렵게 만들 수 있다.
한편, 최근에는 분산 스토리지 시스템의 서버 중심 구조를 자원 중심(resource-centric) 구조로 재편하려는 연구가 진행되고 있다. 자원 중심 구조를 갖는 세분화된(disaggregated) 스토리지 시스템에서, 연산 기능을 수행하는 컴퓨트 노드들과 저장 기능을 수행하는 스토리지 노드들이 물리적으로 분리될 수 있다.
본 발명은 복제 동작을 효율적으로 수행함으로써 데이터 입출력 성능을 개선할 수 있는 분산 스토리지 시스템을 제공하고자 한다.
본 발명은 컴퓨트 노드 또는 스토리지 노드의 장애(fault)를 신속하게 복구할 수 있는 분산 스토리지 시스템을 제공하고자 한다.
본 발명의 실시 예에 따른 분산 스토리지 시스템은, 복수의 컴퓨트 노드들을 포함하는 복수의 호스트 서버들; 및 상기 복수의 컴퓨트 노드들과 네트워크를 통해 통신하며, 복수의 스토리지 볼륨들을 제공하는 복수의 스토리지 노드들을 포함하고, 상기 복수의 컴퓨트 노드들은 제1 식별자를 갖는 제1 데이터를 처리하기 위한 프라이머리 컴퓨트 노드 및 백업 컴퓨트 노드들을 포함하고, 상기 복수의 스토리지 볼륨들은 상기 제1 데이터를 저장하기 위한 프라이머리 스토리지 볼륨 및 백업 스토리지 볼륨들을 포함하며, 상기 프라이머리 컴퓨트 노드는 클라이언트로부터 상기 제1 데이터의 라이트 요청을 수신하면, 상기 제1 데이터의 복제(replication) 요청을 상기 프라이머리 스토리지 볼륨을 제공하는 프라이머리 스토리지 노드로 제공하며, 상기 프라이머리 스토리지 노드는 상기 복제 요청에 응하여 상기 프라이머리 스토리지 볼륨에 상기 제1 데이터를 저장하고, 상기 백업 스토리지 볼륨들에 상기 제1 데이터를 복사(copy)하며, 상기 복제 요청의 완료 응답을 상기 프라이머리 컴퓨트 노드로 제공한다.
본 발명의 실시 예에 따른 분산 스토리지 시스템은, 서로 다른 식별자를 갖는 데이터를 분산 처리하기 위한 복수의 컴퓨트 노드들을 포함하는 복수의 컴퓨트 도메인들; 및 상기 복수의 컴퓨트 노드들과 정해진 인터페이스 프로토콜에 따라 통신하며, 서로 다른 식별자를 갖는 데이터를 분산 저장하기 위한 복수의 스토리지 볼륨들을 제공하는 복수의 스토리지 노드들을 포함하고, 상기 복수의 컴퓨트 노드들 중에서 프라이머리 컴퓨트 노드는 클라이언트로부터 데이터의 라이트 요청을 수신하고, 상기 데이터의 식별자를 입력으로 하는 해시 연산을 수행함으로써 상기 복수의 스토리지 노드들 중 서로 다른 스토리지 노드들로부터 프라이머리 스토리지 볼륨 및 하나 이상의 백업 스토리지 볼륨을 선택하고, 상기 프라이머리 스토리지 볼륨을 포함하는 프라이머리 스토리지 노드로 상기 데이터의 복제(replication) 요청을 제공한다.
본 발명의 실시 예에 따른 분산 스토리지 시스템은, 서로 다른 식별자를 갖는 데이터를 분산 처리하기 위한 복수의 컴퓨트 노드들을 포함하는 복수의 호스트 서버들; 및 상기 복수의 컴퓨트 노드들과 정해진 인터페이스 프로토콜에 따라 통신하며, 서로 다른 식별자를 갖는 데이터를 분산 저장하기 위한 복수의 스토리지 볼륨들을 제공하는 복수의 스토리지 노드들을 포함하고, 상기 복수의 컴퓨트 노드들 중에서 제1 데이터를 처리하기 위한 프라이머리 컴퓨트 노드는 클라이언트로부터 상기 제1 데이터의 액세스 요청을 수신하고, 상기 제1 데이터의 식별자에 기초하여 상기 제1 데이터를 저장하는 프라이머리 스토리지 볼륨 및 백업 스토리지 볼륨들을 결정하며, 상기 프라이머리 스토리지 볼륨에 장애(fault) 발생이 감지되면 상기 백업 스토리지 볼륨들 중 하나를 마운트하고, 상기 마운트된 스토리지 볼륨에 액세스함으로써 상기 액세스 요청을 처리한다.
본 발명의 실시 예에 따른 분산 스토리지 시스템은, 스토리지 노드가 복제 동작을 수행하도록 함으로써 컴퓨트 노드의 병목 현상 발생을 방지하고, 데이터 입출력 성능을 개선할 수 있다.
본 발명의 실시 예에 따른 분산 스토리지 시스템은, 데이터의 복제본(replica)을 저장하는 복수의 스토리지 노드들과, 데이터를 처리하기 위한 복수의 컴퓨트 노드들을 포함하고, 어떤 스토리지 노드 또는 컴퓨트 노드에 장애가 발생했을 때 스토리지 노드들과 컴퓨트 노드들 간 매핑을 변경함으로써 장애를 신속하게 복구할 수 있다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 2는 본 발명의 실시 예에 따른 스토리지 시스템의 소프트웨어 스택(software stack)을 나타내는 블록도이다.
도 3은 본 발명의 실시 예에 따른 스토리지 시스템의 복제 동작을 설명하기 위한 도면이다.
도 4는 본 발명의 실시 예에 따른 스토리지 시스템을 구체적으로 나타내는 블록도이다.
도 5a 및 도 5b는 컴퓨트 노드들과 스토리지 노드들의 계층구조를 나타내는 도면들이다.
도 6a 및 도 6b는 컴퓨트 노드들과 스토리지 노드들의 매핑 방법을 설명하기 위한 도면들이다.
도 7은 본 발명의 실시 예에 따른 스토리지 시스템의 데이터 입출력 동작을 설명하기 위한 도면이다.
도 8 내지 도 9는 본 발명의 실시 예에 따른 스토리지 시스템의 장애 복구 동작을 설명하기 위한 도면들이다.
도 10은 본 발명의 실시 예에 따른 스토리지 시스템이 적용된 데이터 센터를 나타내는 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예를 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 1을 참조하면, 스토리지 시스템(100)은 복수의 컴퓨트 노드들(111-113) 및 복수의 스토리지 노드들(121-123)을 포함할 수 있다. 복수의 컴퓨트 노드들(111-113)은 CPU와 같은 연산 자원들을 포함할 수 있으며, 복수의 스토리지 노드들(121-123)은 SSD(Solid State Drive), HDD(Hard Disk Drive) 등과 같은 스토리지 자원들을 포함할 수 있다.
복수의 컴퓨트 노드들(111-113) 및 복수의 스토리지 노드들(121-123)은 물리적으로 분리될 수 있으며, 네트워크(130)를 통해 통신할 수 있다. 즉, 도 1의 스토리지 시스템(100)은 컴퓨트 노드들과 스토리지 노드들이 분리된, 세분화된(disaggregated) 분산 스토리지 시스템일 수 있다. 복수의 컴퓨트 노드들(111-113) 및 복수의 스토리지 노드들(121-123)은 네트워크(130)를 통해, NVMe-oF(NVMe over Fabrics)와 같은 인터페이스 프로토콜을 준수하면서 통신할 수 있다.
스토리지 시스템(100)은 오브젝트라고 불리는 단위로 데이터를 저장하는 오브젝트 스토리지일 수 있다. 오브젝트는 각각 고유의 식별자를 가질 수 있다. 스토리지 시스템(100)은 어느 스토리지 노드에 데이터가 저장되어 있는지에 상관없이, 상기 식별자를 이용하여 데이터를 찾을 수 있다. 예를 들어, 스토리지 시스템(100)은 클라이언트(Client)로부터 데이터에 대한 액세스 요청을 수신하면, 상기 데이터가 속하는 오브젝트의 식별자를 입력으로 하는 해시 연산을 수행하고, 상기 해시 연산 결과에 따라 상기 데이터가 저장된 스토리지 노드를 찾을 수 있다. 한편, 본 발명은 스토리지 시스템(100)이 오브젝트 스토리지인 경우로 제한되지는 않으며, 스토리지 시스템(100)은 블록 스토리지, 또는 파일 스토리지일 수도 있다.
세분화된 분산 스토리지 시스템은, 데이터를 오브젝트 식별자에 따라 스토리지 노드들(121-123)에 분산하여 저장할 수 있을 뿐만 아니라, 데이터를 오브젝트 식별자에 따라 컴퓨트 노드들(111-113)이 나누어 처리하도록 할 수 있다. 세분화된 분산 스토리지 시스템은 스토리지 노드들(121-123) 및 컴퓨트 노드들(111-113)을 분리함으로써 스토리지 자원 및 컴퓨트 자원을 유연하게 업그레이드, 교체 또는 추가할 수 있다.
한편, 스토리지 시스템(100)은 가용성(availability)을 보장하기 위해 하나의 오브젝트에 속하는 데이터의 복제본(replica)을 정해진 개수의 스토리지 노드들에 저장할 수 있다. 그리고, 스토리지 시스템(100)은 하나의 오브젝트에 속하는 데이터를 처리하기 위한 프라이머리 컴퓨트 노드를 할당하고, 상기 프라이머리 컴퓨트 노드에 장애(fault)가 발생했을 때 상기 데이터를 처리할 수 있는 정해진 개수의 백업 컴퓨트 노드들을 할당할 수 있다. 여기서, 가용성이란 스토리지 시스템(100)이 지속적으로 정상 운영이 가능한 성질을 지칭할 수 있다.
도 1의 예에서, 제1 식별자를 갖는 제1 데이터를 처리하기 위해 프라이머리 컴퓨트 노드(111) 및 백업 컴퓨트 노드들(112, 113)이 할당될 수 있다. 프라이머리 컴퓨트 노드(111)에 장애가 없다면, 제1 데이터에 대한 액세스 요청을 프라이머리 컴퓨트 노드(111)가 처리할 수 있다. 만약 프라이머리 컴퓨트 노드(111)에 장애가 발생하면, 제1 데이터에 대한 액세스 요청은 백업 컴퓨트 노드들(112, 113) 중 하나가 처리할 수 있다.
그리고, 제1 데이터를 저장하기 위해 프라이머리 스토리지 노드(121) 및 백업 스토리지 노드들(122, 123)이 할당될 수 있다. 프라이머리 스토리지 노드(121)에 제1 데이터가 라이트되면, 백업 스토리지 노드들(122, 123)에도 상기 제1 데이터가 라이트될 수 있다. 반면에 제1 데이터가 리드될 때는, 프라이머리 스토리지 노드(121)만이 액세스될 수 있다. 만약 프라이머리 스토리지 노드(121)에 장애가 있다면, 제1 데이터를 리드하기 위해 백업 스토리지 노드들(122, 123) 중 하나가 액세스될 수 있다.
한편, 도 1의 예예서 하나의 오브젝트 식별자에 대해 세 개의 컴퓨트 노드들 및 세 개의 스토리지 노드들이 할당되는 경우를 예로 들고 있으나, 할당되는 컴퓨트 노드들 및 스토리지 노드들의 개수는 이에 제한되지 않는다. 할당되는 스토리지 노드들의 개수는 스토리지 시스템에 저장할 복제본의 개수에 따라 달라질 수 있다. 그리고, 할당되는 컴퓨트 노드들의 개수는 스토리지 노드들의 개수와 동일할 수 있지만, 반드시 동일해야 하는 것은 아니다.
한편, 스토리지 시스템(100)의 가용성을 보장하기 위해, 프라이머리 스토리지 노드(121)에 저장되는 제1 데이터는 백업 스토리지 노드들(122, 123)에도 복제되어야 한다. 만약 프라이머리 컴퓨트 노드(111)가 프라이머리 스토리지 노드(121)에 데이터를 저장할 뿐만 아니라 상기 데이터를 복사하여 백업 스토리지 노드들(122, 123)에 각각 저장해야 한다면, 프라이머리 컴퓨트 노드(111)의 요구 연산량이 많아질 수 있다. 프라이머리 컴퓨트 노드(111)의 요구 연산량이 많아지면 프라이머리 컴퓨트 노드(111)에서 병목 현상이 발생하고, 스토리지 노드들(121-123)의 성능이 충분히 발휘되지 못하며, 결과적으로 스토리지 시스템(100)의 처리량(throughput)이 저하될 수 있다.
본 발명의 실시 예에 따르면, 프라이머리 컴퓨트 노드(111)는 상기 제1 데이터의 복제 동작을 프라이머리 스토리지 노드(121)로 오프로딩(offloading)할 수 있다. 예를 들어, 프라이머리 컴퓨트 노드(111)는 클라이언트로부터 제1 데이터의 라이트 요청을 수신하면, 프라이머리 스토리지 노드(121)로 상기 제1 데이터의 복제 요청을 제공할 수 있다. 프라이머리 스토리지 노드(121)는 상기 복제 요청에 응하여 상기 제1 데이터를 내부에 저장하고, 상기 제1 데이터를 백업 스토리지 노드들(122, 123)에 복사(copy)할 수 있다. 한편, 스토리지 노드들(121-123) 간에도 데이터를 복사하기 위해서 네트워크(130)를 통해 NVMe-oF 프로토콜을 준수하여 통신할 수 있다.
본 발명의 실시 예에 따르면, 프라이머리 컴퓨트 노드(111)는 상기 제1 데이터를 백업 스토리지 노드들(122, 123)에 복사하는 동작에 관여하지 않을 수 있으며, 상기 제1 데이터가 복사되는 동안 다른 요청을 처리할 수 있다. 따라서, 프라이머리 컴퓨트 노드(111)의 병목 현상이 방지될 수 있으며, 스토리지 시스템(100)의 처리량이 개선될 수 있다.
도 2는 본 발명의 실시 예에 따른 스토리지 시스템의 소프트웨어 스택을 나타내는 블록도이다.
도 2를 참조하면, 스토리지 시스템(200)은 OSD(Object-based Storage Daemon, 210) 및 OST(Object-based Storage Target, 220)를 구동할 수 있다. 예를 들어, OSD(210)는 도 1을 참조하여 설명된 것과 같은 컴퓨트 노드들(111, 112, 113)에서 구동될 수 있으며, OST(220)는 도 1을 참조하여 설명된 것과 같은 스토리지 노드들(121, 122, 123)에서 구동될 수 있다.
OSD(210)는 메신저(211), OSD 코어(212) 및 NVMe-oF 드라이버(213)를 구동할 수 있다.
메신저(211)는 외부 네트워크를 통해 클라이언트와 스토리지 시스템(200)의 인터페이싱을 지원할 수 있다. 예를 들어, 메신저(211)는 클라이언트로부터 데이터 및 요청을 수신할 수 있으며, 데이터를 클라이언트로 제공할 수 있다.
OSD 코어(212)는 OSD(210)의 전반적인 동작을 제어할 수 있다. 예를 들어, OSD 코어(212)는 데이터의 오브젝트 식별자에 따라 상기 데이터를 처리하기 위한 컴퓨트 노드들과, 상기 데이터를 저장하기 위한 스토리지 노드들을 결정할 수 있다. 그리고, OSD 코어(212)는 프라이머리 스토리지 노드에 액세스를 수행하며, 프라이머리 스토리지 노드에 장애가 있는 경우 장애 복구를 수행할 수 있다.
NVMe-oF 드라이버(213) NVMe-oF 프로토콜에 따라 OST(220)로 데이터 및 요청을 전송하고, OST(220)로부터 데이터를 수신할 수 있다.
OST(220)는 NVMe-oF 드라이버(221), 백엔드 스토어(222), NVMe 드라이버(223) 및 스토리지(224)를 구동할 수 있다.
NVMe-oF 드라이버(221)는 OSD(210)로부터 요청과 함께 데이터를 수신하거나, OSD(210)로부터의 요청에 응하여 데이터를 OSD(210)로 제공할 수 있다. 그리고, 본 발명의 실시 예에 따르면, NVMe-oF 드라이버(221)는 서로 다른 스토리지 노드들에서 구동되는 OST(220) 간에 데이터 입출력을 수행할 수 있다.
백엔드 스토어(222)는 OST(220)의 전반적인 동작을 제어할 수 있다. 본 발명의 실시 예에 따르면, 백엔드 스토어(222)는 OSD(210)의 요청에 응하여 데이터 복제 동작을 수행할 수 있다. 예를 들어, 프라이머리 스토리지 노드의 OST(220)가 복제 요청을 수신한 경우, 내부 스토리지(224)에 데이터를 저장하고, 다른 스토리지 노드에 데이터를 복사할 수 있다.
NVMe 드라이버(223)는 NVMe 프로토콜에 따라 백엔드 스토어(222) 및 스토리지(224)의 인터페이싱을 수행할 수 있다.
스토리지(224)는 스토리지 노드에 포함된 스토리지 자원을 관리할 수 있다. 예를 들어, 스토리지 노드는 SSD, HDD와 같은 복수의 스토리지 장치들을 포함할 수 있다. 스토리지(224)는 상기 복수의 스토리지 장치들이 제공하는 저장 공간을 논리적인 저장 공간인 스토리지 볼륨들로 구성할 수 있으며, 스토리지 볼륨들의 저장 공간을 OSD(210)로 제공할 수 있다.
본 발명의 실시 예에 따르면, OSD(210) 및 OST(220)는 각각 컴퓨트 노드 및 스토리지 노드에서 동시에 구동될 수 있다. 복제 동작이 OST(220)로 오프로딩될 수 있으므로, OSD(210)에서의 병목 현상이 감소하고, 스토리지 시스템(200)의 처리량이 향상될 수 있다.
도 3은 본 발명의 실시 예에 따른 스토리지 시스템의 복제 동작을 설명하기 위한 도면이다.
단계 S101에서, 클라이언트는 프라이머리 컴퓨트 노드로 라이트 요청을 제공할 수 있다. 클라이언트는 라이트 요청하고자 하는 데이터의 식별자에 기초하여 해시 연산을 수행함으로써, 스토리지 시스템에 포함된 복수의 컴퓨트 노드들 중에서 상기 데이터를 처리할 프라이머리 컴퓨트 노드를 결정하고, 상기 프라이머리 컴퓨트 노드로 라이트 요청을 제공할 수 있다.
단계 S102에서, 프라이머리 컴퓨트 노드는 상기 라이트 요청에 응하여 프라이머리 스토리지 노드로 복제 동작을 오프로딩할 수 있다. 프라이머리 컴퓨트 노드는 상기 데이터의 식별자에 기초하여 해시 연산을 수행함으로써 상기 데이터가 저장될 프라이머리 스토리지 노드 및 백업 스토리지 노드들을 결정할 수 있다. 그리고, 프라이머리 컴퓨트 노드는 상기 프라이머리 스토리지 노드로 복제 요청을 제공할 수 있다.
단계 S103 및 단계 S104에서, 프라이머리 스토리지 노드는 상기 복제 요청에 응하여 제1 및 제2 백업 스토리지 노드들로 데이터를 복사할 수 있다.
단계 S105에서, 프라이머리 스토리지 노드는 프라이머리 컴퓨트 노드로부터 수신된 데이터를 저장할 수 있다. 그리고, 단계 S106 및 단계 S107에서 제1 및 제2 백업 스토리지 노드들은 프라이머리 스토리지 노드로부터 복사된 데이터를 저장할 수 있다.
단계 S108 및 단계 S109에서, 제1 및 제2 백업 스토리지 노드들은 복사된 데이터의 저장이 완료되면, 응답(acknowledgement) 신호를 프라이머리 스토리지 노드로 제공할 수 있다.
단계 S110에서, 프라이머리 스토리지 노드는 프라이머리 컴퓨트 노드로부터 수신한 데이터 저장을 완료하고, 제1 및 제2 백업 스토리지 노드들로부터 응답 신호를 수신하면, 프라이머리 컴퓨트 노드로 복제 요청에 대한 응답 신호를 제공할 수 있다.
단계 S111에서, 프라이머리 컴퓨트 노드는 프라이머리 스토리지 노드로부터 응답 신호를 받으면 클라이언트로 라이트 요청에 대한 응답 신호를 제공할 수 있다.
본 발명의 실시 예에 따르면, 프라이머리 컴퓨트 노드는 일단 프라이머리 스토리지 노드로 복제 요청을 제공하면, 프라이머리 스토리지 노드로부터 응답 신호를 수신할 때까지 복제 동작에 관여하지 않을 수 있다. 프라이머리 컴퓨트 노드는 프라이머리 스토리지 노드가 복제 동작을 수행하는 동안 클라이언트로부터의 다른 요청을 처리할 수 있다. 즉, 컴퓨트 노드의 병목 현상이 완화되고, 스토리지 시스템의 처리량이 개선될 수 있다.
한편, 도 1의 예에서 3개의 컴퓨트 노드(111-113) 및 3개의 스토리지 노드(121-123)가 도시되어 있으나, 스토리지 시스템에 포함될 수 있는 컴퓨트 노드 및 스토리지 노드의 개수는 이에 제한되지 않으며, 스토리지 시스템은 다수의 컴퓨트 노드들 및 스토리지 노드들을 포함할 수 있다. 스토리지 시스템은 어떤 식별자를 갖는 데이터를 저장하기 위해서, 다수의 컴퓨트 노드들 및 스토리지 노드들 중에서 정해진 수의 컴퓨트 노드들 및 스토리지 노드들을 선택할 수 있다. 이하에서, 본 발명의 실시 예에 따라 스토리지 시스템이 컴퓨트 노드들 및 스토리지 노드들을 선택하는 방법이 도 4 내지 도 6b를 참조하여 자세히 설명된다.
도 4는 본 발명의 실시 예에 따른 스토리지 시스템을 구체적으로 나타내는 블록도이다.
도 4를 참조하면, 스토리지 시스템(300)은 복수의 호스트 서버들(311-31N) 및 복수의 스토리지 노드들(321-32M)을 포함할 수 있다. 호스트 서버들(311-31N)은 클라이언트들의 요청에 응하여 서비스를 제공할 수 있으며, 복수의 컴퓨트 노드들(3111-31N2)을 포함할 수 있다. 호스트 서버들(311-31N)은 물리적으로 서로 다른 공간에 위치할 수 있다. 예를 들어, 호스트 서버들(311-31N)은 서로 다른 서버 랙(rack)에 위치할 수도 있으며, 서로 다른 도시나 서로 다른 국가에 위치한 데이터센터에 위치할 수도 있다.
복수의 컴퓨트 노드들(3111-31N2)은 도 1을 참조하여 설명된 컴퓨트 노드들(111-113) 중 어느 것에도 대응할 수 있다. 예를 들어, 제1 식별자를 갖는 제1 데이터를 처리하기 위해 복수의 컴퓨트 노드들(3111-31N2) 중 하나의 프라이머리 컴퓨트 노드 및 2개의 백업 컴퓨트 노드들이 선택될 수 있다.
복수의 스토리지 노드들(321-32M)은 클라이언트들이 사용하는 데이터를 저장할 수 있다. 복수의 스토리지 노드들(321-32M) 또한 물리적으로 서로 다른 공간에 위치할 수 있다. 그리고, 복수의 호스트 서버들(321-32N) 및 복수의 스토리지 노드들(321-32M)끼리도 서로 물리적으로 다른 공간에 위치할 수 있다.
복수의 스토리지 노드들(321-32M)은 도 1을 참조하여 설명된 스토리지 노드들(121-123) 중 어느 것에도 대응할 수 있다. 예를 들어, 제1 데이터를 저장하기 위해 복수의 스토리지 노드들(321-32M) 중 하나의 프라이머리 스토리지 노드 및 2개의 백업 스토리지 노드들이 선택될 수 있다.
한편, 복수의 스토리지 노드들(321-32M)은 복수의 스토리지 볼륨들(3211-32M2)을 제공할 수 있다. 스토리지 노드가 스토리지 자원을 이용하여 컴퓨트 노드로 제공하는 논리 저장 공간들이 스토리지 볼륨으로 지칭될 수 있다.
본 발명의 실시 예에 따르면, 제1 데이터를 저장하기 위한 복수의 스토리지 볼륨들이 서로 다른 스토리지 노드들에서 선택될 수 있다. 예를 들어, 상기 프라이머리 스토리지 노드 및 백업 스토리지 노드들 각각에서 상기 제1 데이터를 저장하기 위한 스토리지 볼륨들이 선택될 수 있다. 프라이머리 스토리지 노드에서 상기 제1 데이터를 저장하기 위한 스토리지 볼륨은 프라이머리 스토리지 볼륨으로 지칭되고, 백업 스토리지 노드에서 상기 제1 데이터를 저장하기 위한 스토리지 볼륨은 백업 스토리지 볼륨으로 지칭될 수 있다.
본 발명의 실시 예에 따르면, 제1 데이터를 저장하기 위한 스토리지 볼륨들이 서로 다른 스토리지 노드들로부터 선택되므로, 제1 데이터의 복제본들이 저장된 위치가 물리적으로 분산될 수 있다. 동일한 데이터의 복제본들이 물리적으로 다른 위치에 저장되는 경우, 데이터센터에 재해가 발생하여 어떤 스토리지 노드의 데이터가 파괴되는 경우에도 다른 스토리지 노드의 데이터가 보호될 가능성이 높으므로, 스토리지 시스템의 가용성이 더욱 향상될 수 있다. 마찬가지로, 어떤 식별자를 갖는 데이터를 처리하기 위한 컴퓨트 노드들 또한, 서로 다른 호스트 서버로부터 선택될 수 있으므로 스토리지 시스템의 가용성이 향상될 수 있다.
한편, 도 1 및 도 4를 참조하여 설명된 바에 따르면, 스토리지 시스템의 컴퓨트 자원과 스토리지 자원은 독립적으로 구성될 수 있다. 도 5a 및 도 5b는 컴퓨트 자원과 스토리지 자원 각각의 계층구조를 나타내는 도면들이다.
도 5a는 컴퓨트 자원들의 계층구조를 트리 구조로 나타낸다. 도 5a의 트리 구조에서, 최상위의 루트(Root) 노드는 스토리지 시스템 전체의 컴퓨트 자원을 나타낼 수 있다.
스토리지 시스템은 복수의 서버 랙들(Rack11-Rack1K)을 포함할 수 있다. 서버 랙들(Rack11-Rack1K)은 루트 노드의 하위 노드에 도시된다. 구현에 따라, 서버 랙들(Rack11-Rack1K)은 물리적으로 분산될 수 있다. 예를 들어, 서버 랙들(Rack11-Rack1K)은 서로 다른 지역의 데이터센터에 위치할 수 있다.
복수의 서버 랙들(Rack11-Rack1K)은 복수의 호스트 서버들(Host server)을 포함할 수 있다. 호스트 서버들은 서버 랙 노드의 하위 노드에 도시된다. 호스트 서버들은 도 4를 참조하여 설명된 호스트 서버들(311-31N)에 대응할 수 있다. 호스트 서버들은 복수의 컴퓨트 노드를 포함할 수 있다. 복수의 컴퓨트 노드들은 도 4를 참조하여 설명된 컴퓨트 노드들(3111-31N2)에 대응할 수 있다.
본 발명의 실시 예에 따르면, 어떤 식별자를 갖는 데이터를 처리하기 위한 프라이머리 컴퓨트 노드 및 백업 컴퓨트 노드들은 서로 다른 컴퓨트 도메인에서 선택될 수 있다. 컴퓨트 도메인은 하나 이상의 컴퓨트 노드를 포함하는 영역을 지칭할 수 있다. 예를 들어, 컴퓨트 도메인은 하나의 호스트 서버에 대응할 수도 있고, 하나의 서버 랙에 대응할 수도 있다. 컴퓨트 도메인들은 물리적으로 이격될 수 있다. 동일 데이터를 처리하기 위해 사용될 수 있는 복수의 컴퓨트 노드들이 물리적으로 이격되는 경우, 스토리지 시스템의 가용성이 향상될 수 있다.
한편, 도 5a에 도시된 것과 같은 컴퓨트 자원의 계층구조 정보가 복수의 컴퓨트 노드들 각각에 저장될 수 있다. 상기 계층구조 정보는 프라이머리 컴퓨트 노드 및 백업 컴퓨트 노드들을 결정하고, 프라이머리 컴퓨트 노드에 장애가 발생했을 때 백업 컴퓨트 노드들 중 하나를 프라이머리 컴퓨트 노드로 변경하기 위해 이용될 수 있다.
도 5b는 스토리지 자원의 계층구조를 트리 구조로 나타낸다. 도 5b의 트리 구조에서, 최상위의 루트 노드는 스토리지 시스템 전체의 스토리지 자원을 나타낼 수 있다.
도 5a에서 설명된 것과 유사하게, 스토리지 시스템은 복수의 서버 랙들(Rack21-Rack2L)을 포함할 수 있다. 서버 랙들(Rack21-Rack2L)은 물리적으로 이격될 수 있으며, 도 5a의 서버 랙들(Rack11-Rack1K)과도 물리적으로 이격될 수 있다.
복수의 서버 랙들(Rack21-Rack2L)은 복수의 스토리지 노드들을 포함할 수 있다. 예를 들어, 복수의 서버 랙들(Rack21-Rack2L)에는 복수의 스토리지 장치들이 실장될 수 있다. 스토리지 장치들은 그루핑되어 복수의 스토리지 노드들을 구성할 수 있다. 복수의 스토리지 노드들은 도 4의 스토리지 노드들(321-32M)에 대응할 수 있다.
복수의 스토리지 노드들 각각은 복수의 논리적인 공간인 스토리지 볼륨들을 제공할 수 있다. 복수의 스토리지 볼륨들은 도 4의 스토리지 볼륨들(3211-32M2)에 대응할 수 있다.
도 4를 참조하여 설명된 것과 같이, 어떤 식별자를 갖는 데이터를 저장하기 위한 스토리지 볼륨들이 서로 다른 스토리지 노드들에서 선택될 수 있다. 서로 다른 스토리지 노드들은 물리적으로 서로 다른 스토리지 장치들을 포함할 수 있으므로, 스토리지 볼륨들이 서로 다른 스토리지 노드들에서 선택되는 경우 동일한 데이터의 복제본들이 물리적으로 분산되어 저장될 수 있다. 상기 선택된 스토리지 볼륨들을 포함하는 스토리지 노드들은 프라이머리 스토리지 노드 및 백업 스토리지 노드들을 포함할 수 있다.
한편, 도 5b에 도시된 것과 같은 스토리지 자원의 계층구조 정보가 복수의 컴퓨트 노드들 각각에 저장될 수 있다. 상기 계층구조 정보는 프라이머리 스토리지 노드 및 백업 스토리지 노드들을 결정하고, 프라이머리 스토리지 노드에 장애가 발생했을 때 백업 스토리지 노드들 중 사용 가능한 스토리지 노드를 프라이머리 스토리지 노드로 변경하기 위해 이용될 수 있다.
데이터를 처리하기 위한 컴퓨트 노드들과 상기 데이터를 저장하기 위한 스토리지 노드들은, 상기 데이터의 식별자에 따라 다르게 선택될 수 있다. 즉, 서로 다른 식별자를 갖는 데이터는 서로 다른 스토리지 노드에 저장될 수도 있고, 동일한 스토리지 노드에 저장될 수 있다.
데이터의 식별자에 따른 컴퓨트 노드들 및 스토리지 노드들은 해시 연산 결과에 따라 선택될 수 있다. 그리고, 해시 연산 결과에 따라 선택된 컴퓨트 노드들 및 스토리지 노드들의 매핑 정보는 상기 컴퓨트 노드들 각각에 저장될 수 있으며, 상기 매핑 정보는 컴퓨트 노드 또는 스토리지 노드의 장애 복구를 위해 이용될 수 있다.
도 6a 및 도 6b는 컴퓨트 노드들과 스토리지 노드들의 매핑 방법을 설명하기 위한 도면들이다.
도 6a는 데이터의 식별자에 기초하여 상기 데이터에 연관된 컴퓨트 노드들 및 스토리지 볼륨들을 결정하는 방법을 설명하기 위한 도면이다.
클라이언트로부터 데이터(DATA)가 수신되면, 수신된 데이터에 연관된 정보를 해시 함수에 입력함으로써 컴퓨트 노드들을 선택할 수 있다. 예를 들어, 데이터(DATA)의 오브젝트 식별자(Obj. ID), 스토리지 시스템에 유지하려는 복제본의 수(# of replica) 및 데이터(DATA)의 오브젝트가 속하는 배치 그룹(placement group)의 번호(# of PG)를 제1 해시 함수(601)에 입력하면 상기 복제본의 수와 동일한 수의 컴퓨트 노드들의 식별자들이 출력될 수 있다.
도 6a의 예에서, 제1 해시 함수(601)를 이용하여 3개의 컴퓨트 노드들이 선택될 수 있다. 선택된 컴퓨트 노드들(Compute node12, Compute node22, Compute node31) 중 컴퓨트 노드(Compute node12)는 프라이머리 컴퓨트 노드(111)로 결정되고, 컴퓨트 노드들(Compute node22, Compute node31)은 백업 컴퓨트 노드들(112, 113)로 결정될 수 있다.
프라이머리 컴퓨트 노드가 결정되면, 프라이머리 컴퓨트 노드의 식별자 및 오브젝트 식별자를 제2 해시 함수(602)에 입력함으로써 스토리지 볼륨들이 선택될 수 있다. 스토리지 볼륨들(Storage volume11, Storage volume22, Storage volume32)은 서로 다른 스토리지 노드들로부터 선택될 수 있다. 상기 스토리지 노드들 중 하나는 프라이머리 스토리지 노드(121)로 결정되고, 나머지는 백업 스토리지 노드들(122, 123)로 결정될 수 있다.
제1 및 제2 해시 함수(601, 602)에 기초하여 오브젝트 식별자별로 컴퓨트 노드들과 스토리지 볼륨들이 매핑될 수 있다. 컴퓨트 노드들 및 스토리지 볼륨들의 매핑을 나타내는 매핑 정보가 상기 컴퓨트 노드들 및 스토리지 볼륨들에 저장될 수 있다. 상기 매핑 정보는, 컴퓨트 노드들이 장애 복구를 수행하거나, 스토리지 볼륨들이 복제 동작을 수행할 때 참조될 수 있다.
도 6b는 컴퓨트 노드들 및 스토리지 볼륨들의 매핑 정보를 나타내는 도면이다. 매핑 정보는 오브젝트 식별자별로 결정될 수 있다. 예를 들어, 도 6b는 오브젝트 식별자가 '1'인 데이터에 대해 3개의 복제본을 저장하는 경우에, 상기 데이터에 연관된 컴퓨트 노드들과 스토리지 볼륨들을 예시한다.
매핑 정보에는 프라이머리 컴퓨트 노드(Compute node12), 백업 컴퓨트 노드들(Compute node22, Compute node31), 프라이머리 스토리지 볼륨(Storage volume22), 및 백업 스토리지 볼륨(Storage volume11, Storage volume32)이 포함될 수 있다.
프라이머리 컴퓨트 노드(Compute node12) 및 프라이머리 스토리지 노드(Storage node2)에 장애가 없다면, 오브젝트 식별자가 '1'인 데이터를 입출력하기 위한 요청은 프라이머리 컴퓨트 노드(Compute node12)로 제공되고, 프라이머리 스토리지 볼륨(Storage node22)이 액세스될 수 있다. 만약 프라이머리 컴퓨트 노드(Compute node12) 또는 프라이머리 스토리지 노드(Storage node2)에서 장애가 감지되는 경우, 컴퓨트 노드 및 스토리지 볼륨 간 매핑 정보를 참조하여 백업 컴퓨트 노드 또는 백업 스토리지 볼륨을 찾고, 상기 백업 컴퓨트 노드 또는 백업 스토리지 볼륨을 장애 복구에 이용할 수 있다.
본 발명의 실시 예에 따르면, 컴퓨트 노드들 및 스토리지 노드들이 서로 분리되므로, 단지 컴퓨트 노드 및 스토리지 볼륨의 매핑을 변경함으로써 장애 복구를 신속하게 완료할 수 있다. 이하에서, 도 7 내지 도 9를 참조하여 스토리지 시스템의 데이터 입출력 동작 및 장애 복구 동작이 자세히 설명된다.
도 7은 본 발명의 실시 예에 따른 스토리지 시스템의 데이터 입출력 동작을 설명하기 위한 도면이다.
도 7에 도시된 스토리지 시스템(300)은 도 4를 참조하여 설명된 스토리지 시스템(300)에 대응할 수 있다. 스토리지 시스템(300)에서 제1 오브젝트 식별자에 대해 할당된 컴퓨트 노드들 및 스토리지 볼륨들은 음영으로 도시된다. 그리고, 프라이머리 컴퓨트 노드(3112) 및 프라이머리 스토리지 볼륨(3222)은 굵은 선으로 도시된다.
단계 S201에서, 스토리지 시스템(300)은 클라이언트로부터 제1 오브젝트 식별자를 갖는 제1 데이터의 입출력 요청을 수신할 수 있다. 예를 들어, 클라이언트는 도 6a를 참조하여 설명된 제1 해시 함수(601)와 동일한 해시 함수를 이용하여 상기 데이터를 처리할 프라이머리 컴퓨트 노드를 결정할 수 있다. 도 6a의 예에서는, 컴퓨트 노드(3112)가 프라이머리 컴퓨트 노드로 결정될 수 있다. 그리고, 클라이언트는 상기 프라이머리 컴퓨트 노드(3112)를 포함하는 제1 호스트 서버(311)가 상기 입출력 요청을 처리하도록 제어할 수 있다.
단계 S202에서, 프라이머리 컴퓨트 노드(3112)는 상기 입출력 요청에 응하여 네트워크(330)를 통해 프라이머리 스토리지 볼륨(322)에 액세스할 수 있다.
프라이머리 컴퓨트 노드(3112)는 도 6a를 참조하여 설명된 제2 해시 함수(602)를 이용하여 상기 제1 식별자를 갖는 데이터가 저장되는 프라이머리 스토리지 볼륨(3222) 및 백업 스토리지 볼륨들(3211, 3232)을 결정할 수 있다. 프라이머리 컴퓨트 노드(3112)는 상기 제1 식별자와 연관된 컴퓨트 노드들과 스토리지 노드들을 나타내는 매핑 정보를 저장할 수 있다. 그리고, 프라이머리 컴퓨트 노드(3112)는 프라이머리 스토리지 노드(322), 백업 컴퓨트 노드(312, 313) 및 백업 스토리지 노드(321, 323)로 상기 매핑 정보를 제공할 수 있다.
만약 상기 입출력 요청이 리드 요청인 경우, 프라이머리 컴퓨트 노드(3112)는 프라이머리 스토리지 볼륨(3222)으로부터 데이터를 획득할 수 있다. 그리고, 상기 입출력 요청이 라이트 요청인 경우, 프라이머리 컴퓨트 노드(3112)는 네트워크(330)를 통해, 프라이머리 스토리지 노드(322)로 상기 제1 데이터와 함께 복제 요청을 제공할 수 있다.
프라이머리 스토리지 노드(322)는 상기 복제 요청에 응하여 상기 제1 데이터를 프라이머리 스토리지 볼륨(3222)에 저장할 수 있다. 그리고, 프라이머리 스토리지 노드(322)는 단계 S203 및 단계 S204에서 상기 제1 데이터를 백업 스토리지 볼륨(3211, 3232)으로 복사할 수 있다. 예를 들어, 프라이머리 스토리지 노드(322)는 네트워크(330)를 통해 상기 제1 데이터 및 라이트 요청을 백업 스토리지 노드(321, 323)로 제공함으로써 데이터를 복제할 수 있다.
본 발명의 실시 예에 따르면, 데이터 복제 동작을 프라이머리 스토리지 노드(321)가 수행함으로써 스토리지 시스템(300)의 가용성을 보장하면서 프라이머리 컴퓨트 노드(3112)의 병목 현상을 방지할 수 있다.
도 8 내지 도 9는 본 발명의 실시 예에 따른 스토리지 시스템의 장애 복구 동작을 설명하기 위한 도면들이다.
도 8은 프라이머리 컴퓨트 노드(3112)에 장애가 발생한 경우의 장애 복구 동작을 나타낸다. 도 8에 도시된 스토리지 시스템(300)은 도 4를 참조하여 설명된 스토리지 시스템(300)에 대응할 수 있다. 스토리지 시스템(300)에서 제1 오브젝트 식별자와 관련된 컴퓨트 노드들 및 스토리지 노드들은 음영으로 도시된다. 그리고, 프라이머리 컴퓨트 노드(3112) 및 프라이머리 스토리지 노드(3222)는 굵은 선으로 도시된다.
단계 S301에서, 스토리지 시스템(300)은 클라이언트로부터 제1 오브젝트 식별자를 갖는 제1 데이터의 입출력 요청을 수신할 수 있다. 도 7의 단계 S201에서 설명된 것과 유사하게, 제1 호스트 서버(311)가 클라이언트로부터 상기 입출력 요청을 수신할 수 있다.
단계 S302에서, 제1 호스트 서버(311)는 프라이머리 컴퓨트 노드(3112)에 장애가 발생한 것을 감지할 수 있다. 예를 들어, 제1 호스트 서버(311)는 프라이머리 컴퓨트 노드(3112)가 입출력 요청을 처리하도록 신호를 제공하였으나 정해진 시간 이상 응답이 없는 경우 프라이머리 컴퓨트 노드(3112)에 장애가 발생한 것으로 판단할 수 있다.
단계 S303에서, 제1 호스트 서버(311)는 백업 컴퓨트 노드들(3122, 3131) 중 하나를 프라이머리 컴퓨트 노드로 변경하고, 상기 변경된 프라이머리 컴퓨트 노드로 입출력 요청을 전달할 수 있다. 예를 들어, 제1 호스트 서버(311)는 도 6a를 참조하여 설명된 제1 해시 함수(601)를 이용하여 백업 컴퓨트 노드들(3122, 3131)을 결정하고, 백업 컴퓨트 노드(3122)를 프라이머리 컴퓨트 노드로 변경할 수 있다. 제1 호스트 서버(311)는 변경된 프라이머리 컴퓨트 노드(3122)로 입출력 요청을 제공하기 위해, 도 5a를 참조하여 설명된 것과 같은 컴퓨트 노드 계층구조 정보를 참조하여 제2 호스트 서버(312)로 입출력 요청을 전달할 수 있다.
단계 S304에서, 프라이머리 컴퓨트 노드(3122)는 상기 입출력 요청에 응하여, 네트워크(330)를 통해 프라이머리 스토리지 볼륨(3222)에 액세스할 수 있다. 한편, 프라이머리 컴퓨트 노드(3122)가 스토리지 볼륨(3222)에 액세스할 수 있도록, 프라이머리 컴퓨트 노드(3122)는 스토리지 볼륨(3222)을 마운트할 수 있다. 스토리지 볼륨을 마운트한다는 것은, 스토리지 볼륨이 제공하는 논리 저장공간을 컴퓨트 노드에 할당하는 것을 지칭할 수 있다.
만약 상기 입출력 요청이 라이트 요청인 경우, 프라이머리 컴퓨트 노드(3122)는 프라이머리 스토리지 노드(322)로 복제 요청을 제공할 수 있다. 프라이머리 스토리지 노드(322)는 제1 데이터를 백업 스토리지 볼륨들(3211, 3232)로 복사할 수 있다.
본 발명의 실시 예에 따르면, 프라이머리 컴퓨트 노드에 장애가 발생한 경우 사전에 결정된 백업 컴퓨트 노드가 프라이머리 스토리지 볼륨을 마운트하고, 백업 컴퓨트 노드가 데이터 입출력 요청을 처리할 수 있다. 따라서, 스토리지 시스템은 스토리지 볼륨에 저장된 데이터를 이동시키는 등의 동작을 수행하지 않고도 시스템의 장애를 복구할 수 있다. 따라서, 스토리지 장치의 가용성이 향상될 수 있다.
도 9는 프라이머리 스토리지 노드(322)에 장애가 발생한 경우의 장애 복구 동작을 나타낸다. 도 8에 도시된 스토리지 시스템(300)은 도 4를 참조하여 설명된 스토리지 시스템(300)에 대응할 수 있다. 스토리지 시스템(300)에서 제1 오브젝트 식별자와 관련된 컴퓨트 노드들 및 스토리지 노드들은 음영으로 도시된다. 그리고, 프라이머리 컴퓨트 노드(3112) 및 프라이머리 스토리지 노드(3222)는 굵은 선으로 도시된다.
단계 S401에서, 스토리지 시스템(300)은 클라이언트로부터 제1 오브젝트 식별자를 갖는 제1 데이터의 입출력 요청을 수신할 수 있다. 도 7의 단계 S201에서 설명된 것과 유사하게, 제1 호스트 서버(311)가 클라이언트로부터 상기 입출력 요청을 수신할 수 있다.
단계 S402에서, 프라이머리 컴퓨트 노드(3112)는 프라이머리 스토리지 노드(322)에 장애가 발생한 것을 감지할 수 있다. 예를 들어, 프라이머리 컴퓨트 노드(3112)가 프라이머리 스토리지 노드(322)로 입출력 요청을 제공하였으나 정해진 시간 이상 응답이 없는 경우 프라이머리 스토리지 노드(322)에 장애가 발생한 것으로 판단할 수 있다.
단계 S403에서, 프라이머리 컴퓨트 노드(3112)는 백업 스토리지 볼륨들(3211, 3232) 중 하나를 프라이머리 스토리지 볼륨으로 변경하고, 상기 변경된 프라이머리 스토리지 볼륨에 액세스할 수 있다. 예를 들어, 프라이머리 컴퓨트 노드(3112)는 도 6b를 참조하여 설명된 제2 해시 함수(602)를 이용하여 백업 스토리지 볼륨들(3211, 3232)을 결정하고, 백업 스토리지 볼륨(3211)을 프라이머리 스토리지 볼륨으로 결정할 수 있다. 그리고, 프라이머리 컴퓨트 노드(3112)는 기존 프라이머리 스토리지 볼륨(3222) 대신 변경된 프라이머리 스토리지 볼륨(3211)을 마운트할 수 있다. 그리고, 프라이머리 컴퓨트 노드(3112)는 스토리지 노드(321)를 통해 프라이머리 스토리지 볼륨(3211)에 액세스할 수 있다.
본 발명의 실시 예에 따르면, 프라이머리 스토리지 노드에 장애가 발생한 경우 프라이머리 컴퓨트 노드가 사전에 데이터의 복제본을 저장하고 있던 백업 스토리지 볼륨을 마운트하고, 백업 스토리지 볼륨으로부터 데이터를 획득하거나, 백업 스토리지 볼륨에 데이터를 저장할 수 있다. 스토리지 시스템은 스토리지 볼륨에 저장된 데이터를 이동시키는 등의 절차를 수행하지 않고도 시스템의 장애를 복구할 수 있다. 따라서, 스토리지 장치의 가용성이 향상될 수 있다.
도 10은 본 발명의 실시 예에 따른 스토리지 시스템이 적용된 데이터 센터를 나타내는 도면이다.
도 10을 참조하면, 데이터 센터(4000)는 각종 데이터를 모아두고 서비스를 제공하는 시설로서, 데이터 스토리지 센터라고 지칭될 수도 있다. 데이터 센터(4000)는 검색 엔진 및 데이터 베이스 운용을 위한 시스템일 수 있으며, 은행 등의 기업 또는 정부기관에서 사용되는 컴퓨팅 시스템일 수 있다. 데이터 센터(4000)는 애플리케이션 서버들(4100 내지 4100n) 및 스토리지 서버들(4200 내지 4200m)을 포함할 수 있다. 애플리케이션 서버들(4100 내지 4100n)의 개수 및 스토리지 서버들(4200 내지 4200m)의 개수는 실시예에 따라 다양하게 선택될 수 있고, 애플리케이션 서버들(4100 내지 4100n)의 개수 및 스토리지 서버들(4200 내지 4200m)의 개수는 서로 다를 수 있다.
애플리케이션 서버(4100) 또는 스토리지 서버(4200)는 프로세서(4110, 4210) 및 메모리(4120, 4220) 중 적어도 하나를 포함할 수 있다. 스토리지 서버(4200)를 예시로 설명하면, 프로세서(4210)는 스토리지 서버(4200)의 전반적인 동작을 제어할 수 있고, 메모리(4220)에 액세스하여 메모리(4220)에 로딩된 명령어 및/또는 데이터를 실행할 수 있다. 메모리(4220)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 및/또는 NVMDIMM(Non-Volatile DIMM)일 수 있다. 실시예에 따라, 스토리지 서버(4200)에 포함되는 프로세서(4210)의 개수 및 메모리(4220)의 개수는 다양하게 선택될 수 있다. 일 실시예에서, 프로세서(4210)와 메모리(4220)는 프로세서-메모리 페어를 제공할 수 있다. 일 실시예에서, 프로세서(4210)와 메모리(4220)의 개수는 서로 다를 수도 있다. 프로세서(4210)는 단일 코어 프로세서 또는 다중 코어 프로세서를 포함할 수 있다. 스토리지 서버(4200)에 대한 상기 설명은, 애플리케이션 서버(4100)에도 유사하게 적용될 수 있다. 실시예에 따라, 애플리케이션 서버(4100)는 스토리지 장치(4150)를 포함하지 않을 수도 있다. 스토리지 서버(4200)는 적어도 하나 이상의 스토리지 장치(4250)를 포함할 수 있다. 스토리지 서버(4200)에 포함되는 스토리지 장치(4250)의 개수는 실시예에 따라 다양하게 선택될 수 있다.
애플리케이션 서버들(4100 내지 4100n) 및 스토리지 서버들(4200 내지 4200m)은 네트워크(4300)를 통해 서로 통신할 수 있다. 네트워크(4300)는 FC(Fibre Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(4300)의 액세스 방식에 따라 스토리지 서버들(4200 내지 4200m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.
일 실시예에서, 네트워크(4300)는 SAN(Storage Area Network)와 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 다른 예를 들어, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 다른 실시예에서, 네트워크(4300)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(4300)는 NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.
이하에서는, 애플리케이션 서버(4100) 및 스토리지 서버(4200)를 중심으로 설명하기로 한다. 애플리케이션 서버(4100)에 대한 설명은 다른 애플리케이션 서버(4100n)에도 적용될 수 있고, 스토리지 서버(4200)에 대한 설명은 다른 스토리지 서버(4200m)에도 적용될 수 있다.
애플리케이션 서버(4100)는 사용자 또는 클라이언트가 저장 요청한 데이터를 네트워크(4300)를 통해 스토리지 서버들(4200 내지 4200m) 중 하나에 저장할 수 있다. 또한, 애플리케이션 서버(4100)는 사용자 또는 클라이언트가 독출 요청한 데이터를 스토리지 서버들(4200 내지 4200m) 중 하나로부터 네트워크(4300)를 통해 획득할 수 있다. 예를 들어, 애플리케이션 서버(4100)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.
애플리케이션 서버(4100)는 네트워크(4300)를 통해 다른 애플리케이션 서버(4100n)에 포함된 메모리(4120n) 또는 스토리지 장치(4150n)에 액세스할 수 있고, 또는 네트워크(4300)를 통해 스토리지 서버들(4200-4200m)에 포함된 메모리들(4220-4220m) 또는 스토리지 장치(4250-4250m)에 액세스할 수 있다. 이로써, 애플리케이션 서버(4100)는 애플리케이션 서버들(4100-4100n) 및/또는 스토리지 서버들(4200-4200m)에 저장된 데이터에 대해 다양한 동작들을 수행할 수 있다. 예를 들어, 애플리케이션 서버(4100)는 애플리케이션 서버들(4100-4100n) 및/또는 스토리지 서버들(4200-4200m) 사이에서 데이터를 이동 또는 카피(copy)하기 위한 명령어를 실행할 수 있다. 이 때 데이터는 스토리지 서버들(4200-4200m)의 스토리지 장치(4250-4250m)로부터 스토리지 서버들(4200-4200m)의 메모리들(4220-4220m)을 거쳐서, 또는 바로 애플리케이션 서버들(4100-4100n)의 메모리(4120-4120n)로 이동될 수 있다. 네트워크(4300)를 통해 이동하는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 서버(4200)를 예시로 설명하면, 인터페이스(4254)는 프로세서(4210)와 컨트롤러(4251)의 물리적 연결 및 NIC(Network InterConnect)(4240)와 컨트롤러(4251)의 물리적 연결을 제공할 수 있다. 예를 들어, 인터페이스(4254)는 스토리지 장치(4250)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 또한, 예를 들어, 인터페이스(4254)는 NVMe(NVM express) 인터페이스로 구현될 수 있다.
스토리지 서버(4200)는 스위치(4230) 및 NIC(4240)을 더 포함할 수 있다. 스위치(4230)는 프로세서(4210)의 제어에 따라 프로세서(4210)와 스토리지 장치(4250)를 선택적으로 연결시키거나, NIC(4240)와 스토리지 장치(4250)를 선택적으로 연결시킬 수 있다.
일 실시예에서 NIC(4240)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(4240)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(4300)에 연결될 수 있다. NIC(4240)는 내부 메모리, DSP(Digital Signal Processor), 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(4210) 및/또는 스위치(4230) 등과 연결될 수 있다. 호스트 버스 인터페이스는, 앞서 설명한 인터페이스(4254)의 예시들 중 하나로 구현될 수도 있다. 일 실시예에서, NIC(4240)는 프로세서(4210), 스위치(4230), 스토리지 장치(4250) 중 적어도 하나와 통합될 수도 있다.
스토리지 서버들(4200-4200m) 또는 애플리케이션 서버들(4100-4100n)에서 프로세서는 스토리지 장치(4150-4150n, 4250-4250m) 또는 메모리(4120-4120n, 4220-4220m)로 커맨드를 전송하여 데이터를 프로그램하거나 리드할 수 있다. 이 때 데이터는 ECC(Error Correction Code) 엔진을 통해 에러 정정된 데이터일 수 있다. 데이터는 데이터 버스 변환(Data Bus Inversion: DBI) 또는 데이터 마스킹(Data Masking: DM) 처리된 데이터로서, CRC(Cyclic Redundancy Code) 정보를 포함할 수 있다. 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 장치(4150-4150n, 4250-4250m)는 프로세서로부터 수신된 리드 커맨드에 응답하여, 제어 신호 및 커맨드/어드레스 신호를 NAND 플래시 메모리 장치(4252-4252m)로 전송할 수 있다. 이에 따라 NAND 플래시 메모리 장치(4252-4252m)로부터 데이터를 독출하는 경우, RE(Read Enable) 신호는 데이터 출력 제어 신호로 입력되어, 데이터를 DQ 버스로 출력하는 역할을 할 수 있다. RE 신호를 이용하여 DQS(Data Strobe)가 생성될 수 있다. 커맨드와 어드레스 신호는 WE(Write Enable) 신호의 상승 엣지 또는 하강 엣지에 따라 페이지 버퍼에 래치될 수 있다.
컨트롤러(4251)는 스토리지 장치(4250)의 동작을 전반적으로 제어할 수 있다. 일 실시예에서, 컨트롤러(4251)는 SRAM(Static Random Access Memory)을 포함할 수 있다. 컨트롤러(4251)는 기입 커맨드에 응답하여 낸드 플래시(4252)에 데이터를 기입할 수 있고, 또는 독출 커맨드에 응답하여 낸드 플래시(4252)로부터 데이터를 독출할 수 있다. 예를 들어, 기입 커맨드 및/또는 독출 커맨드는 스토리지 서버(4200) 내의 프로세서(4210), 다른 스토리지 서버(4200m) 내의 프로세서(4210m) 또는 애플리케이션 서버(4100, 4100n) 내의 프로세서(4110, 4110n)로부터 제공될 수 있다. DRAM(4253)은 낸드 플래시(4252)에 기입될 데이터 또는 낸드 플래시(4252)로부터 독출된 데이터를 임시 저장(버퍼링)할 수 있다. 또한, DRAM(4253)은 메타 데이터를 저장할 수 있다. 여기서, 메타 데이터는 사용자 데이터 또는 낸드 플래시(4252)를 관리하기 위해 컨트롤러(4251)에서 생성된 데이터이다. 스토리지 장치(4250)는 보안 또는 프라이버시를 위해 SE(Secure Element)를 포함할 수 있다.
애플리케이션 서버(4100, 4100n)는 복수의 컴퓨트 노드들을 포함할 수 있다. 그리고, 스토리지 서버(4200, 4200m)는 각각이 복수의 스토리지 볼륨들을 제공하는 스토리지 노드들을 포함할 수 있다. 데이터 센터(4000)는 서로 다른 식별자를 갖는 데이터를 서로 다른 컴퓨트 노드들에서 분산하여 처리할 수 있으며, 상기 데이터를 서로 다른 스토리지 볼륨들에 분산하여 저장할 수 있다. 데이터 센터(400)는 가용성을 향상시키기 위해, 어떤 식별자를 갖는 데이터를 처리하기 위해 프라이머리 컴퓨트 노드 및 백업 컴퓨트 노드들을 할당할 수 있으며, 상기 데이터를 저장하기 위해 프라이머리 스토리지 볼륨 및 백업 스토리지 볼륨들을 할당할 수 있다. 클라이언트로부터 라이트 요청된 데이터는, 백업 스토리지 볼륨들에 복제되어야 할 수 있다.
본 발명의 실시 예에 따르면, 프라이머리 컴퓨트 노드는 프라이머리 스토리지 볼륨을 제공하는 프라이머리 스토리지 노드에 복제 동작을 오프로딩할 수 있다. 프라이머리 컴퓨트 노드가 클라이언트로부터의 라이트 요청에 응하여 프라이머리 스토리지 노드로 복제 요청을 제공할 수 있다. 프라이머리 스토리지 노드는 상기 프라이머리 스토리지 볼륨에 데이터를 저장하고, 상기 백업 스토리지 볼륨들에 데이터를 복제할 수 있다.
본 발명의 실시 예에 따르면, 어떤 식별자를 갖는 데이터를 처리하기 위한 컴퓨트 노드들은 서로 다른 애플리케이션 서버로부터 할당될 수 있으며, 상기 데이터를 저장하기 위한 스토리지 볼륨들은 서로 다른 스토리지 노드들로부터 할당될 수 있다. 본 발명의 실시 예에 따르면 컴퓨트 노드들 및 스토리지 볼륨들이 물리적으로 분산될 수 있으며, 데이터센터(4000)의 가용성이 향상될 수 있다.
본 발명의 실시 예에 따르면, 프라이머리 컴퓨트 노드에 장애가 있는 경우 백업 컴퓨트 노드에 프라이머리 스토리지 볼륨을 마운트하고, 프라이머리 스토리지 노드에 장애가 있는 경우 프라이머리 컴퓨트 노드에 백업 스토리지 볼륨을 마운트할 수 있다. 데이터센터(4000)는 프라이머리 컴퓨트 노드 또는 프라이머리 스토리지 노드에 장애가 있는 경우에 컴퓨트 노드와 스토리지 볼륨의 마운트를 수행함으로써 장애를 복구할 수 있다. 장애를 복구하기 위해 스토리지 볼륨의 데이터를 이동시키는 등의 동작이 불필요하므로, 장애가 신속하게 복구될 수 있다.
본 발명은 상술한 실시형태 및 첨부된 도면에 의해 한정되는 것이 아니며 첨부된 청구범위에 의해 한정하고자 한다. 따라서, 청구범위에 기재된 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 당 기술분야의 통상의 지식을 가진 자에 의해 다양한 형태의 치환, 변형 및 변경이 가능할 것이며, 이 또한 본 발명의 범위에 속한다고 할 것이다.
100, 300: 스토리지 시스템
111, 112, 113: 컴퓨트 노드
121, 122, 123: 스토리지 노드

Claims (10)

  1. 분산 스토리지 시스템에 있어서,
    복수의 컴퓨트 노드들을 포함하는 복수의 호스트 서버들; 및
    상기 복수의 컴퓨트 노드들과 네트워크를 통해 통신하며, 복수의 스토리지 볼륨들을 제공하는 복수의 스토리지 노드들을 포함하고,
    상기 복수의 컴퓨트 노드들은 제1 식별자를 갖는 제1 데이터를 처리하기 위한 프라이머리 컴퓨트 노드 및 백업 컴퓨트 노드들을 포함하고,
    상기 복수의 스토리지 볼륨들은 상기 제1 데이터를 저장하기 위한 프라이머리 스토리지 볼륨 및 백업 스토리지 볼륨들을 포함하며,
    상기 프라이머리 컴퓨트 노드는
    클라이언트로부터 상기 제1 데이터의 라이트 요청을 수신하면, 상기 제1 데이터의 복제(replication) 요청을 상기 프라이머리 스토리지 볼륨을 제공하는 프라이머리 스토리지 노드로 제공하며,
    상기 프라이머리 스토리지 노드는
    상기 복제 요청에 응하여 상기 프라이머리 스토리지 볼륨에 상기 제1 데이터를 저장하고, 상기 백업 스토리지 볼륨들에 상기 제1 데이터를 복사(copy)하며, 상기 복제 요청의 완료 응답을 상기 프라이머리 컴퓨트 노드로 제공하는
    분산 스토리지 시스템.
  2. 제1항에 있어서,
    상기 프라이머리 스토리지 볼륨 및 백업 스토리지 볼륨들은
    상기 복수의 스토리지 노드들 중 서로 다른 스토리지 노드들에 포함되는
    분산 스토리지 시스템.
  3. 제1항에 있어서,
    상기 프라이머리 컴퓨트 노드 및 백업 컴퓨트 노드들은
    상기 복수의 호스트 서버들 중 서로 다른 호스트 서버에 포함되는
    분산 스토리지 시스템.
  4. 제1항에 있어서,
    상기 프라이머리 컴퓨트 노드는
    상기 프라이머리 스토리지 노드가 상기 제1 데이터를 상기 프라이머리 스토리지 볼륨에 저장하고 상기 제1 데이터를 백업 스토리지 볼륨에 복사하는 동안, 상기 라이트 요청과는 다른 요청을 처리하는
    분산 스토리지 시스템.
  5. 제1항에 있어서,
    상기 프라이머리 컴퓨트 노드는
    상기 클라이언트로부터 상기 제1 데이터의 리드 요청을 수신하면 상기 프라이머리 스토리지 노드로 상기 리드 요청을 제공하고,
    상기 프라이머리 스토리지 노드는
    상기 리드 요청에 응하여 상기 제1 데이터를 상기 프라이머리 스토리지 볼륨으로부터 획득하고, 획득된 제1 데이터를 상기 프라이머리 컴퓨트 노드로 제공하는
    분산 스토리지 시스템.
  6. 제5항에 있어서,
    상기 프라이머리 컴퓨트 노드는
    상기 프라이머리 스토리지 노드로 상기 데이터의 리드 요청을 제공한 후 정해진 시간 이내에 상기 프라이머리 스토리지 노드로부터 응답이 없는 경우, 하나 이상의 백업 스토리지 노드 중 하나에 포함된 스토리지 볼륨을 프라이머리 스토리지 노드로 변경하고, 상기 변경된 백업 스토리지 노드로 리드 요청을 제공하며,
    상기 변경된 백업 스토리지 노드는
    상기 리드 요청에 응하여 상기 데이터를 상기 프라이머리 스토리지 노드의 스토리지 볼륨으로부터 획득하고, 획득된 데이터를 상기 프라이머리 컴퓨트 노드로 제공하는
    분산 스토리지 시스템.
  7. 제1항에 있어서,
    상기 분산 스토리지 시스템은
    데이터를 오브젝트(object) 단위로 상기 복수의 스토리지 볼륨들에 분산하여 저장하고,
    상기 제1 식별자는
    상기 오브젝트의 식별자인
    분산 스토리지 시스템.
  8. 제1항에 있어서,
    상기 복수의 스토리지 노드들은
    복수의 스토리지 장치들을 포함하고, 상기 복수의 스토리지 장치들이 제공하는 저장 공간을 복수의 논리적인 저장 공간들로 구성하며, 상기 복수의 논리적인 저장 공간들을 상기 복수의 스토리지 볼륨들로서 제공하는
    분산 스토리지 시스템.
  9. 분산 스토리지 시스템에 있어서,
    서로 다른 식별자를 갖는 데이터를 분산 처리하기 위한 복수의 컴퓨트 노드들을 포함하는 복수의 컴퓨트 도메인들; 및
    상기 복수의 컴퓨트 노드들과 정해진 인터페이스 프로토콜에 따라 통신하며, 서로 다른 식별자를 갖는 데이터를 분산 저장하기 위한 복수의 스토리지 볼륨들을 제공하는 복수의 스토리지 노드들을 포함하고,
    상기 복수의 컴퓨트 노드들 중에서 프라이머리 컴퓨트 노드는
    클라이언트로부터 데이터의 라이트 요청을 수신하고, 상기 데이터의 식별자를 입력으로 하는 해시 연산을 수행함으로써 상기 복수의 스토리지 노드들 중 서로 다른 스토리지 노드들로부터 프라이머리 스토리지 볼륨 및 하나 이상의 백업 스토리지 볼륨을 선택하고, 상기 프라이머리 스토리지 볼륨을 포함하는 프라이머리 스토리지 노드로 상기 데이터의 복제(replication) 요청을 제공하는
    분산 스토리지 시스템.
  10. 분산 스토리지 시스템에 있어서,
    서로 다른 식별자를 갖는 데이터를 분산 처리하기 위한 복수의 컴퓨트 노드들을 포함하는 복수의 호스트 서버들; 및
    상기 복수의 컴퓨트 노드들과 정해진 인터페이스 프로토콜에 따라 통신하며, 서로 다른 식별자를 갖는 데이터를 분산 저장하기 위한 복수의 스토리지 볼륨들을 제공하는 복수의 스토리지 노드들을 포함하고,
    상기 복수의 컴퓨트 노드들 중에서 제1 데이터를 처리하기 위한 프라이머리 컴퓨트 노드는
    클라이언트로부터 상기 제1 데이터의 액세스 요청을 수신하고, 상기 제1 데이터의 식별자에 기초하여 상기 제1 데이터를 저장하는 프라이머리 스토리지 볼륨 및 백업 스토리지 볼륨들을 결정하며, 상기 프라이머리 스토리지 볼륨에 장애(fault) 발생이 감지되면 상기 백업 스토리지 볼륨들 중 하나를 마운트하고, 상기 마운트된 스토리지 볼륨에 액세스함으로써 상기 액세스 요청을 처리하는
    분산 스토리지 시스템.

KR1020220049953A 2021-12-10 2022-04-22 분산 스토리지 시스템 KR20230088215A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US17/949,442 US20230185822A1 (en) 2021-12-10 2022-09-21 Distributed storage system
CN202211546158.XA CN116257177A (zh) 2021-12-10 2022-12-02 分布式存储系统

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20210176199 2021-12-10
KR1020210176199 2021-12-10

Publications (1)

Publication Number Publication Date
KR20230088215A true KR20230088215A (ko) 2023-06-19

Family

ID=86988683

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220049953A KR20230088215A (ko) 2021-12-10 2022-04-22 분산 스토리지 시스템

Country Status (1)

Country Link
KR (1) KR20230088215A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116881052A (zh) * 2023-09-07 2023-10-13 上海凯翔信息科技有限公司 一种分布式存储的数据修复系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116881052A (zh) * 2023-09-07 2023-10-13 上海凯翔信息科技有限公司 一种分布式存储的数据修复系统
CN116881052B (zh) * 2023-09-07 2023-11-24 上海凯翔信息科技有限公司 一种分布式存储的数据修复系统

Similar Documents

Publication Publication Date Title
US11444641B2 (en) Data storage system with enforced fencing
US11301144B2 (en) Data storage system
US11438411B2 (en) Data storage system with redundant internal networks
US11237772B2 (en) Data storage system with multi-tier control plane
US10521135B2 (en) Data system with data flush mechanism
US20210263658A1 (en) Data system with flush views
US11467732B2 (en) Data storage system with multiple durability levels
CN107924354B (zh) 动态镜像
US10496320B2 (en) Synchronous replication
US8521685B1 (en) Background movement of data between nodes in a storage cluster
US11573855B2 (en) Object format resilient to remote object store errors
US9830088B2 (en) Optimized read access to shared data via monitoring of mirroring operations
US20160266989A1 (en) Interconnect path failover
US20150312337A1 (en) Mirroring log data
US20230409227A1 (en) Resilient implementation of client file operations and replication
KR20230088215A (ko) 분산 스토리지 시스템
US11567876B2 (en) Resolving cache slot locking conflicts for remote replication
US11188425B1 (en) Snapshot metadata deduplication
US20230185822A1 (en) Distributed storage system
US10768834B2 (en) Methods for managing group objects with different service level objectives for an application and devices thereof
CN117111832A (zh) 用于管理分布式存储装置的计算系统及操作其的方法