KR101748912B1 - 분산 저장 환경에서 데이터 저장 시스템 및 데이터 저장 시스템이 포함하는 클러스터의 업그레이드, 확장 및 축소를 위한 클러스터 관리 방법 - Google Patents

분산 저장 환경에서 데이터 저장 시스템 및 데이터 저장 시스템이 포함하는 클러스터의 업그레이드, 확장 및 축소를 위한 클러스터 관리 방법 Download PDF

Info

Publication number
KR101748912B1
KR101748912B1 KR1020140113559A KR20140113559A KR101748912B1 KR 101748912 B1 KR101748912 B1 KR 101748912B1 KR 1020140113559 A KR1020140113559 A KR 1020140113559A KR 20140113559 A KR20140113559 A KR 20140113559A KR 101748912 B1 KR101748912 B1 KR 101748912B1
Authority
KR
South Korea
Prior art keywords
data
repository
target
gateway
replication
Prior art date
Application number
KR1020140113559A
Other languages
English (en)
Other versions
KR20160025993A (ko
Inventor
이규재
차민규
한승후
Original Assignee
네이버 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 네이버 주식회사 filed Critical 네이버 주식회사
Priority to KR1020140113559A priority Critical patent/KR101748912B1/ko
Publication of KR20160025993A publication Critical patent/KR20160025993A/ko
Application granted granted Critical
Publication of KR101748912B1 publication Critical patent/KR101748912B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Abstract

분산 저장 환경에서 데이터 저장 시스템 및 데이터 저장 시스템이 포함하는 클러스터의 업그레이드, 확장 및 축소를 위한 클러스터 관리 방법이 개시된다. 복수의 저장소를 포함하는 데이터 저장 시스템의 클러스터 관리 방법에 있어서, 상기 복수의 저장소 각각은, 중복 없이 상기 복수의 저장소에 포함되는 파티션 넘버들 중 서로 다른 적어도 하나의 파티션 넘버를 통해 지칭되고, 하나의 파티션 넘버는 상기 하나의 파티션 넘버에 해당하는 데이터가 저장된 저장소를 식별하고, 상기 클러스터 관리 방법은, 이전(migration)할 파티션 넘버에 의해 식별되는 소스 저장소의 데이터 중 상기 이전할 파티션 넘버에 해당하는 데이터의 체크포인트데이터를 임시 저장소로 덤프하는 단계, 상기 임시 저장소로 덤프된 체크포인트데이터를 통해 상기 이전할 파티션 넘버에 해당하는 데이터를 상기 복수의 저장소 중 타겟 저장소로 로드하는 단계, 상기 덤프와 로드 단계 진행 중 클라이언트로부터 상기 이전할 파티션 넘버에 대응하는 연산이 요청되는 경우, 상기 요청된 연산을 소스 저장소의 상기 이전할 파티션 넘버에 해당하는 데이터에 적용하여 처리하고, 상기 타겟 저장소로 상기 요청된 연산을 전송하여 수행하게 함으로써 상기 타겟 저장소로 로드된 데이터를 상기 소스 저장소에서 상기 요청된 연산이 적용된 데이터와 동기화하는 단계; 및 상기 이전할 파티션 넘버를 통해 식별되는 저장소를 상기 소스 저장소에서 상기 타겟 저장소로 변경하는 단계를 포함할 수 있다.

Description

분산 저장 환경에서 데이터 저장 시스템 및 데이터 저장 시스템이 포함하는 클러스터의 업그레이드, 확장 및 축소를 위한 클러스터 관리 방법{DATA STORAGE SYSTEM IN DISTRIBUTED STORAGE ENVIRONMENT AND CLUSTER MANAGEMENT METHOD FOR UPGRADING, SCALING OUT AND SCALING IN CLUSTER INCLUDE IN THE DATA STORAGE SYSTEM}
본 발명의 실시예들은 분산 저장 환경에서 데이터 저장 시스템 및 데이터 저장 시스템이 포함하는 클러스터의 업그레이드, 확장 및 축소를 위한 클러스터 관리 방법에 관한 것이다.
네트워크를 통해 연결된 장치들에서 데이터의 분산된 저장소는 비용 효율이 높고, 많은 양의 데이터에 대한 신뢰성 있는 저장소로 이용되고 있다. 이러한 분산된 데이터 저장 시스템에서, 일시적 또는 영구적 데이터 손실에 대한 데이터 가용성과 같은 데이터 일관성(consistency)을 보장하기 위해, 분산된 데이터 저장 시스템에서 동일한 데이터 항목을 네트워크를 통해 연결된 다수의 기기에 복사하는 방법이 개발되었다. 이와 같이, 다수의 기기를 통해 동일한 데이터를 복사하여 저장하는 것을 데이터 복제라 한다. 이러한 데이터 복제는 기기의 고장, 장애 또는 일시적/영구적 데이터 손실의 위험에 대비하기 위해 이용될 수 있다.
한국등록특허 제10-0985166호(분산 저장 시스템에서 파일을 동기화하는 장치 및 방법)에서는 분산 저장된 파일의 동기화를 위해, 클라이언트에 의해 요청되는 파일의 조회수를 집계하고, 소정의 집계 기간 동안 집계된 조회수가 핫파일 선정 임계값 이상인 경우 해당 파일을 핫파일로 선정하며, 상기 핫파일로 선정된 파일을 적어도 하나의 다른 분산 저장 시스템으로 복사하여 동기화하는 구성을 개시하고 있다.
클러스터의 업그레이드 및 확장/축소를 사용자에게 영향을 주지 않으면서도 처리할 수 있는 데이터 저장 시스템 및 클러스터 관리 방법을 제공한다.
복수의 저장소를 포함하는 데이터 저장 시스템의 클러스터 관리 방법에 있어서, 상기 복수의 저장소 각각은, 중복 없이 상기 복수의 저장소에 포함되는 파티션 넘버들 중 서로 다른 적어도 하나의 파티션 넘버를 통해 지칭되고, 하나의 파티션 넘버는 상기 하나의 파티션 넘버에 해당하는 데이터가 저장된 저장소를 식별하고, 이전(migration)할 파티션 넘버에 의해 식별되는 소스 저장소의 데이터 중 상기 이전할 파티션 넘버에 해당하는 데이터의 체크포인트데이터를 임시 저장소로 덤프하는 단계; 상기 임시 저장소로 덤프된 체크포인트데이터를 통해 상기 이전할 파티션 넘버에 해당하는 데이터를 상기 복수의 저장소 중 타겟 저장소로 로드하는 단계; 상기 덤프와 로드 단계 진행 중 클라이언트로부터 상기 이전할 파티션 넘버에 대응하는 연산이 요청되는 경우, 상기 요청된 연산을 소스 저장소의 상기 이전할 파티션 넘버에 해당하는 데이터에 적용하여 처리하고, 상기 타겟 저장소로 상기 요청된 연산을 전송하여 수행하게 함으로써 상기 타겟 저장소로 로드된 데이터를 상기 소스 저장소에서 상기 요청된 연산이 적용된 데이터와 동기화하는 단계; 및 상기 이전할 파티션 넘버를 통해 식별되는 저장소를 상기 소스 저장소에서 상기 타겟 저장소로 변경하는 단계를 포함하는 것을 특징으로 하는 클러스터 관리 방법이 제공된다.
데이터 저장 시스템에 있어서, 파티션 넘버들이 중복 없이 포함되고, 서로 다른 적어도 하나의 파티션 넘버를 통해 지칭되는 복수의 저장소 - 하나의 파티션 넘버는 상기 하나의 파티션 넘버에 해당하는 데이터가 저장된 저장소를 식별함 -; 및 이전(migration)할 파티션 넘버에 의해 식별되는 소스 저장소의 데이터 중 적어도 일부의 데이터를 읽어서 상기 복수의 저장소 중 타겟 저장소로 입력하는 임시 저장소 - 상기 적어도 일부의 데이터는, 상기 소스 저장소의 데이터 중 이전할 파티션 넘버에 해당하는 데이터의 체크포인트데이터를 포함함 -를 포함하고, 상기 소스 저장소는, 상기 적어도 일부의 데이터를 타겟 저장소로 입력하는 과정 중 클라이언트로부터 상기 이전할 파티션 넘버에 대응하는 연산이 요청되는 경우, 상기 요청된 연산을 상기 소스 저장소의 상기 이전할 파티션 넘버에 해당하는 데이터에 적용하여 처리하고, 상기 타겟 저장소로 상기 요청된 연산을 전송하여 수행하게 함으로써 상기 타겟 저장소로 입력된 데이터와 상기 소스 저장소에서 상기 요청된 연산이 적용된 데이터를 동기화하며, 상기 이전할 파티션 넘버가 식별하는 저장소가 상기 소스 저장소에서 상기 타겟 저장소로 변경되는 것을 특징으로 하는 데이터 저장 시스템이 제공된다.
클러스터의 업그레이드 및 확장/축소를 사용자에게 영향을 주지 않으면서도 처리할 수 있다.
도 1은 본 발명의 일실시예에 있어서, 전체 시스템의 구성요소를 개괄적으로 도시한 도면이다.
도 2는 본 발명의 일실시예에 있어서, 파티션 그룹 서버들간의 복제 관계의 예를 설명하기 위한 도면이다.
도 3은 본 발명의 일실시예에 있어서, 복제로그의 예를 도시한 도면이다.
도 4는 본 발명의 일실시예에 있어서, 클러스터 데이터 분할 방식의 예를 도시한 도면이다.
도 5는 본 발명의 일실시예에 있어서, 클라이언트 요청 처리 과정의 예를 도시한 도면이다.
도 6은 본 발명의 일실시예에 있어서, 게이트웨이의 업그레이드 과정의 예를 도시한 도면이다.
도 7은 본 발명의 일실시예에 있어서, 파티션 그룹 서버의 업그레이드 과정의 예를 도시한 도면이다.
도 8은 본 발명의 일실시예에 있어서, 덤프 및 로드 과정의 예를 도시한 도면이다.
도 9는 본 발명의 일실시예에 있어서, 로그 캐치업 과정의 예를 도시한 도면이다.
도 10은 본 발명의 일실시예에 있어서, 마이그레이션 2PC 과정의 예를 도시한 도면이다.
도 11은 본 발명의 일실시예에 있어서, 클러스터 관리 방법을 도시한 흐름도이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 발명의 실시예들은 데이터 저장 시스템에서 사용자에 영향을 주지 않는 클러스터의 업그레이드 및 확장/축소 방식에 관한 것이다.
사용자에 영향을 주지 않는 클러스터의 업그레이드 방식은, 데이터 저장 시스템 구성요소인 게이트웨이나 파티션 그룹 서버(Partition Group Server, PGS)의 종료, 변경 및/또는 기동을 사용자의 응답 처리 과정에 영향을 주지 않고 수행할 수 있는 것을 의미할 수 있다.
예를 들어, 사용자에 영향을 주지 않는 클러스터의 확장/축소 방식은, 특정 파티션 그룹(Partition Group, PG)에 저장된 데이터를 다른 파티션 그룹에 이동 시킴으로써 클러스터의 데이터 처리를 하는 파티션 그룹 서버의 개수를 확장/축소하는 작업을 사용자의 응답 처리 과정에 영향을 주지 않고 수행할 수 있는 것을 의미할 수 있다.
도 1은 본 발명의 일실시예에 있어서, 전체 시스템의 구성요소를 개괄적으로 도시한 도면이다. 본 실시예에서 설명하는 전체 시스템은 네트워크를 통해 연결된 복수의 장치들을 통해 데이터를 분산 저장하기 위한 데이터 저장 시스템(100)일 수 있다. 이러한 데이터 저장 시스템(100)은 도 1에 도시된 바와 같이, 클라이언트(Client, 110), 설정 마스터(Configuration Master, 120) 및 클러스터(Cluster, 130)를 포함할 수 있다.
클라이언트(110)는 클러스터(130)에 저장된 데이터에 대한 생성, 삭제, 변경, 조회 등의 연산을 요청하고, 연산 수행 결과를 수신하는 사용자의 단말장치를 의미할 수 있다. 클라이언트(110)는 구동 시 설정 마스터(120)로부터 클러스터(130)의 게이트웨이 목록을 얻고, 이 목록에 대한 변경 사항을 모니터링할 수 있다. 도 1에서는 하나의 클라이언트(110)만을 나타내고 있으나, 복수의 클라이언트들이 존재할 수 있다.
클러스터(130)는 적어도 하나의 게이트웨이들을 포함할 수 있다. 도 1의 실시예에서는 두 개의 게이트웨이들(제1 게이트웨이(131) 및 제2 게이트웨이(132))을 포함하는 예를 나타내고 있으나, 하나 혹은 셋 이상의 게이트웨이들이 포함될 수도 있다.
클러스터(130)가 포함하는 복수의 게이트웨이들 각각은, 클라이언트(110)의 요청을 받아 요청을 처리하기 위한 파티션 그룹 서버를 찾고, 해당 파티션 그룹 서버에 연산을 요청하는 프록시의 역할을 수행할 수 있다. 이러한 복수의 게이트웨이들 각각은 구동 시, 설정 마스터(120)에서 클러스터(130)의 키(key) 분산 정보를 받을 수 있으며, 클러스터(130)의 확장 및/또는 변경 시에 설정 마스터(120)의 중재 하에 클러스터(130)의 키 분산 정보 변경 작업을 진행할 수 있다.
또한, 클러스터(130)는 복수의 파티션 그룹 서버들을 포함할 수 있다. 이때, 복수의 파티션 그룹 서버들은 복수의 파티션 그룹으로 분류될 수 있다. 도 1에서 클러스터(130)는 복수의 파티션 그룹 서버들을 포함하는 N개의 파티션 그룹들을 도시하고 있다. 예를 들어, 제1 파티션 그룹(133)은 m 개의 파티션 그룹 서버(파티션 그룹 서버 1 부터 파티션 그룹 서버 m까지)를 포함하고 있다. 이때, 일례로, 동일한 파티션 그룹에 포함된 복수의 파티션 그룹 서버들은, 네트워크를 통해 연결된 복수의 장치들 중 둘 이상의 장치들에 구현될 수 있다.
파티션 그룹 서버는, 클러스터(130)에 저장되는 전체 데이터 중 담당하는 부분의 데이터를 저장할 수 있다. 또한, 파티션 그룹 서버는, 키로 구분되는 데이터에 대한 연산을 수행할 수 있다. 이러한 파티션 그룹 서버는, 체크포인트데이터와 복제로그를 통한 복구가 가능한 상태기기 기반의 저장소일 수 있다.
상태기기는 컴퓨터 사이언스(computer science)에서 정의되는 계산 모델로서, 본 발명의 실시예들에서는 다음과 같은 속성을 만족하는 메모리저장소를 의미할 수 있다.
1. 메모리저장소의 상태는 저장된 데이터의 상태 집합을 의미한다.
2. 메모리저장소에서 제공하는 연산의 수행에 의해서 상태의 전이가 확정적으로(deterministic) 일어나며, 연산의 수행 결과도 동일하다.
하나의 파티션 그룹 서버는, 각각 하나의 메모리저장소를 포함할 수 있다. 이때, 메모리저장소에 대한 연산을 순차적으로 수행하면, 상태기기의 정의에 의해서 동일한 파티션 그룹에서 서로 복제 관계에 있는 파티션 그룹 서버들의 메모리저장소들은 데이터(상태)가 동일하게 된다. 본 발명의 실시예들에서는 적어도 둘 이상의 메모리저장소에 수행되는 명령어를 선입선출(First In First Out, FIFO) 방식으로 동일하게 수행함으로써, 적어도 둘 이상의 메모리저장소의 데이터(상태)를 복제할 수 있다.
이때, 본 발명의 실시예들에서 제공하는 메모리저장소의 변경에 대한 일관성은 순차 일관성(sequential consistency)일 수 있다. 이는, 데이터 저장 시스템(100)에서 수행된 모든 연산의 결과가 특정한 명령어들의 순차실행에 의해 수행된 결과와 동일하다는 것을 의미할 수 있다. 예를 들어, 클라이언트(110)는 메모리저장소에 수행한 변경 연산(일례로, 쓰기(write) 연산)의 결과를 (읽기 연산을 통해) 바로 읽을(read) 수 있다. 하나의 파티션 그룹에 포함된 파티션 그룹 서버들 중 적어도 하나는, 복제 관계에서 마스터의 역할을, 나머지 파티션 그룹 서버들은 슬레이브의 역할을 수행하여 복제 관계를 맺을 수 있으며, 메모리저장소에 저장된 데이터(상태)를 서로 동일하게 유지할 수 있다. 이러한 복제 관계에 대해서는 이후 도 2를 통해 더욱 자세히 설명한다.
설정 마스터(120)는 클러스터(130)에 대한 데이터 분산 정보를 저장 및 관리할 수 있으며, 클러스터(130)로 유입되는 연산에 대한 처리를 하는 게이트웨이 목록을 저장 및 관리할 수 있다. 또한, 설정 마스터(120)는 클러스터(130)의 확장/축소에 의해서 클러스터(130)에 대한 데이터 분산 정보가 바뀌는 경우, 게이트웨이(제1 게이트웨이(131) 및 제2 게이트웨이(132))와의 협업을 통해서 데이터 분산 정보를 일괄적으로 관리하는 중재자 역할을 수행할 수 있다.
도 2는 본 발명의 일실시예에 있어서, 파티션 그룹 서버들간의 복제 관계의 예를 설명하기 위한 도면이다. 도 2에서 데이터 저장 시스템(100)은 설정 마스터(Configuration Master, 120)와 마스터 저장소(210) 및 슬레이브 저장소(220)를 도시하고 있다. 여기서, 마스터 저장소(210)와 슬레이브 저장소(220)는 각각 마스터 역할을 수행하는 파티션 그룹 서버와 슬레이브 역할을 수행하는 파티션 그룹 서버에 대응할 수 있다. 예를 들어, 마스터 저장소(210)와 슬레이브 저장소(220)는 동일한 파티션 그룹에 속하면서 서로 다른 장치에 구현될 수 있다.
데이터 저장 시스템(100)은 이미 설명한 바와 같이 데이터를 분산 저장하는 시스템으로, 데이터를 분산 저장하는 장치들에서 전원 공급 중단 등의 장애에 따라 데이터가 유실되는 것을 방지하기 위한 저장소들(210 및 220)을 포함할 수 있다.
저장소들(210 및 220)은 도 2에 도시된 바와 같이, 마스터 역할을 수행하기 위한 마스터 저장소(210)와 슬레이브 역할을 수행하기 위한 슬레이브 저장소(220)로 구성될 수 있다. 이때, 슬레이브 저장소(220)는 동일한 구성을 갖는 복수의 저장소들로 구현될 수도 있다. 예를 들어, 데이터 저장 시스템(100)은 복수의 저장소들을 포함할 수 있고, 그 중 하나의 저장소가 마스터 저장소(210)가 될 수 있으며, 둘 이상의 나머지 저장소들이 각각 슬레이브 저장소들로서 구현될 수 있다. 이때, 복수의 저장소들은 동일한 파티션 그룹에 속할 수 있으며, 각각 서로 다른 장치에 구현될 수 있다. 예를 들어, 저장소들(210 및 220)은 각각 하나의 저장 기기로서 구현될 수 있다. 이 경우, 저장소들(210 및 220)은 개별 전원을 갖는 별도의 저장 기기들이 네트워크를 통해 통신하는 형태로 구현될 수 있다.
또한, 저장소들(210 및 220)은 도 2에 도시된 바와 같이, 리플리케이터(Replicator, 마스터 리플리케이터(211) 및 슬레이브 리플리케이터(221)), 클라이언트 라이브러리(Client Library, 212 및 222), 메모리저장소(213 및 223), 복제로그(214 및 224) 및 체크포인트데이터(215 및 225)를 포함할 수 있다. 클라이언트 라이브러리(212 및 222)는 메모리저장소(213 및 223)에 내장된 형태로 구현될 수 있으며, 체크포인트데이터(215 및 225)는 데이터의 복구를 위한 것으로, 선택적으로 저장소들(210 및 220)에 포함될 수 있다.
마스터 리플리케이터(211)는 메모리저장소(213 및 223)에서 수행할 연산(명령어)을 선입선출 순서로 결정할 수 있다. 이때, 결정된 연산은 마스터 저장소(210)의 복제로그(214)와 슬레이브 저장소(220)의 복제로그(224)에 저장될 수 있다. 이미 설명한 바와 같이, 슬레이브 역할을 수행하기 위한 다수의 저장소들이 존재하는 경우, 저장소들 각각이 슬레이브 리플리케이터와 복제로그를 포함할 수 있다. 이 경우, 마스터 리플리케이터(211)에 의해 결정된 연산은 슬레이브 리플리케이터들의 복제로그들 각각에 저장될 수 있다.
슬레이브 저장소(220)의 클라이언트 라이브러리(222)는 메모리저장소(223)에서 수행할 연산을 마스터 리플리케이터(211)로 전달하고, 수행될 복제로그(224)의 부분에 대한 정보를 로컬 리플리케이터(221)로부터 전달받아 복제로그(224)에서 수행할 연산을 읽어들여 메모리저장소(223)에서 처리할 수 있다. 여기서, "로컬"은 동일한 저장소에 포함된 구성요소를 의미할 수 있다. 예를 들어, 클라이언트 라이브러리(222)의 "로컬 리플리케이터"는 리플리케이터(221)를 의미할 수 있고, 클라이언트 라이브러리(212)의 "로컬 메모리저장소"는 메모리저장소(213)를 의미할 수 있다.
설정 마스터(120)는 리플리케이터들(211 및 221)의 상태 감시와 리플리케이터들(211 및 221)의 장애 발생시 복제관계 재설정을 위한 처리를 수행할 수 있다. 이러한 설정 마스터(120)에 대해서는 이후 더욱 자세히 설명한다.
메모리저장소(213 및 223)는 이미 설명한 바와 같이 상태기기로 정의되는 저장소로서 모든 상태를 메모리상에 상주시킬 수 있다.
복제로그(214 및 224)는 리플리케이터들(211 및 221)로 전달된 연산과 수행하기 위한 연산의 위치에 대한 정보가 저장된 데이터를 의미할 수 있다. 이러한 복제로그(214 및 224)에 대해서는 이후 더욱 자세히 설명한다.
체크포인트데이터(215 및 225)는 메모리저장소(213 및 223)의 시점 데이터를 디스크상의 데이터로 저장한 것을 의미할 수 있다.
마스터 리플리케이터(211)에서 슬레이브 리플리케이터(221)로 전송되는 모든 데이터는 복제로그(224)에 저장될 수 있다. 복제로그(224)는 고정크기의 파일로 구성될 수 있으며, 크게 데이터가 저장되는 부분과 메타데이터가 저장되는 부분으로 구성될 수 있다.
도 3은 본 발명의 일실시예에 있어서, 복제로그의 예를 도시한 도면이다. 도 3은 복제로그(300)가 데이터 부분(310)과 메타데이터 부분(320)으로 구성된 파일들(330 및 340)의 집합으로 구현된 예를 나타내고 있다. 데이터 부분(310)은 복제데이터 자체가 저장되는 부분일 수 있고, 메타데이터 부분(320)은 메타데이터에 대한 체크섬(checksum) 및 복제로그(300)상에서 복제데이터가 어느 위치까지 저장되어 있는가에 대한 정보를 포함할 수 있다.
이때, 복제로그(300)가 포함하는 각 파일들(330 및 340)의 크기가 고정되어 있기 때문에 복제 상에서 임의의 메시지의 위치를 숫자로 나타낼 수 있다. 이 숫자를 로그 시퀀스 넘버(Log Sequence Number, LSN)라 부를 수 있다. 복제로그(300)가 포함하는 파일들(330 및 340)의 이름은 데이터 부분이 시작하는 LSN으로 정의될 수 있다. 따라서, 임의의 메시지의 위치를 나타내는 LSN이 복제로그(300)의 어느 파일의 어느 위치에 저장되어 있는지 역으로 파악이 가능해진다.
복제로그(300)에 저장되는 데이터는 복제로그(300)와 동일한 저장소에 포함된 클라이언트 라이브러리에 의해 요청된 연산 전송의 목적 이외에 복제 프로토콜 상의 메시지를 포함할 수 있다. 아래 표 1은 복제로그(300)에 저장되는 데이터에 대한 정보를 나타내고 있다.
메시지 타입 필드 설명
REP_DATA ·NID: 리플리케이터의 식별자
·LENGTH: 연산 길이
·DATA: 연산 데이터
DATA 필드 값이 연산의 내용임.
REP_COMMIT ·COMMIT_LSN: 수용된 LSN 복제 프로토콜에서 가용성이 확보된 복제로그의 일련번호를 나타내며, COMMIT_LSN에 명시된 LSN 부분까지 메모리저장소에서 수행됨.
도 4는 본 발명의 일실시예에 있어서, 클러스터 데이터 분할 방식의 예를 도시한 도면이다. 본 발명의 실시예들에서는 키(key)와 값(value)으로 식별되는 저장소(파티션 그룹 서버)를 가정한다. 설정 마스터(120)는 데이터 분산 방식에 대한 정보로서 파티션 넘버(partition number), 파티션 그룹 및 파티선 그룹 서버에 대한 정보를 유지할 수 있다.
파티션 넘버: 파티션 넘버 또는 슬롯 넘버(slot number)는 키 값에 해당하는 데이터가 저장된 파티션 그룹을 식별하기 위한 값을 의미할 수 있다. 예를 들어, 키 값에 대해 해쉬 함수(일례로, 도 4의 CRC16() 함수)의 값을 구하고, 이 값에 특정 값으로 모듈러(modular) 연산(도 4의 "%")을 적용한 결과값을 파티션 넘버 또는 슬롯 넘버라고 할 수 있다. 보다 구체적인 예로, 도 4에서와 같이 모듈러 연산에 적용되는 특정 값이 8192라면, 파티션 넘버는 0과 8191 사이의 값이 될 수 있다. 이 과정을 통해 모든 키들은 파티션 넘버로 분류될 수 있다.
파티션 그룹: 전체 파티션 넘버는 파티션 그룹과 중복 없이 나뉘어 매칭될 수 있다. 예를 들어, 특정 파티션 넘버는 하나의 파티션 그룹에만 속하게 되며(하나의 파티션 그룹이 복수의 파티션 넘버를 포괄할 수는 있음), 파티션 그룹 전체는 파티션 넘버 전체를 포괄할 수 있다.
파티션 그룹 서버: 특정 파티션 그룹에 속하는 키와 값을 저장하는 저장소로서, 하나의 파티션 그룹에는 둘 이상의 파티션 그룹 서버가 복제 관계로 구성되어 일관성 및 가용성이 보장될 수 있다.
다시 도 1을 참조하면, 클러스터(130)가 포함하는 게이트웨이들 각각은 초기 구동 시 설정 마스터(120)와 연동하여 클러스터(130)의 데이터 분할 정보를 얻어올 수 있다. 이러한 데이터 분할 정보는 게이트웨이에 의해 임의로 변경되지 않으며, 파티션 그룹 서버 또는 게이트웨이의 업그레이드나 클러스터(130)의 확장/축소 시에 설정 마스터(120)의 주도 하에 변경될 수 있다.
도 5는 본 발명의 일실시예에 있어서, 클라이언트 요청 처리 과정의 예를 도시한 도면이다. 도 5에서는 클러스터(130)의 키 분산 구조가 없는 과정에서의 클라이언트의 요청 처리 과정을 나타내고 있다.
과정 (1)에서 클라이언트(110)는 클러스터(130)에 저장되어 있는 키와 값의 쌍 에 대한 연산을 게이트웨이(제1 게이트웨이(131))에 요청할 수 있다. 이때, 도 5에서는 클라이언트(110)가 제1 게이트웨이(131)로 연산을 요청하는 예를 나타내고 있으나, 클라이언트(110)는 클러스터(130)가 포함하는 게이트웨이들 중 어느 하나의 게이트웨이(일례로, 제2 게이트웨이(132)를 선택하여 연산을 요청할 수 있다. 일례로, 요청된 연산은 키와 키에 적용될 연산에 대한 정보를 포함할 수 있다.
과정 (2)에서 게이트웨이(제1 게이트웨이(131))는 클라이언트(110)로부터의 요청에 포함되어 있는 키를 이용하여 키에 해당하는 값이 존재하는 파티션 그룹(일례로, 도 1에 도시된 제N 파티션 그룹)을 확인할 수 있으며, 해당 파티션 그룹 내의 파티션 그룹 서버(일례로, 도 1에 도시된 제N 파티션 그룹이 포함하는 파티션 그룹 서버 1)에 요청된 연산을 전송할 수 있다. 이미 설명한 바와 같이 요청된 연산은 키와 키에 적용될 연산에 대한 정보를 포함할 수 있다. 게이트웨이들은 구동 시점에 설정 마스터(120)로부터 얻은 클러스터(130)의 데이터 분할 방식에 대한 정보를 받아와 저장 및 관리할 수 있다. 따라서, 클라이언트(110)로부터 연산을 요청받은 게이트웨이는 요청된 연산에 포함된 키를 통해 어떤 파티션 그룹이 키에 해당하는 값을 저장하고 있는지 확인할 수 있다.
과정 (3)에서 연산을 전달받은 파티션 그룹 서버(도 1에 도시된 제N 파티션 그룹의 파티션 그룹 서버 1)는 전달받은 연산을 수행하고, 연산의 수행 결과를 게이트웨이(제1 게이트웨이(131))로 전송할 수 있다.
과정 (4)에서 게이트웨이(제1 게이트웨이(131))는 연산의 수행 결과를 클라이언트(110)로 전송할 수 있다. 클라이언트(110)는 연산을 요청한 게이트웨이로부터 원하는 키에 대응하는 값에 연산이 적용된 결과(연산의 수행 결과)를 확인할 수 있게 된다.
설정 마스터(120)는 클러스터(130)에 접근하기 위한 게이트웨이 목록을 유지할 수 있다. 게이트웨이 목록의 요소로는 게이트웨이에 대한 접속 정보(IP, 포트(port) 등)와 부가적인 정보(게이트웨이 친화도(affinity) 등)가 저장될 수 있다.
클라이언트(110)는 구동 시 설정 마스터(120)에 접속해서 게이트웨이 목록을 얻어오고, 해당 게이트웨이 목록이 변경된 것을 인지하기 위한 와치 채널(watch channel)을 설정 마스터(120)와 유지할 수 있다.
와치 채널은 일반적인 퍼블리셔(publisher)/서브스크라이버(subscriber) 방식의 알림(notification) 방식으로 구현될 수 있다. 예를 들어, 게이트웨이의 추가 또는 삭제에 의해서 게이트웨이 목록에 변경이 생긴 경우, 퍼블리셔 역할의 설정 마스터(120)가 서브스크라이버 역할의 모든 클라이언트들에게 변경 사항을 공지하고, 각 클라이언트들은 변경된 게이트웨이 목록을 설정 마스터(120)로부터 얻어올 수 있다.
클라이언트(110)는 게이트웨이가 추가된 경우, 새로운 연결을 맺어서 이용할 수 있으며, 게이트웨이가 삭제된 경우에는 해당 연결의 추가 사용을 방지하고, 더 이상의 진행중인 요청이 없는 경우, 삭제된 게이트웨이에 대한 연결을 끊을 수 있다.
도 6은 본 발명의 일실시예에 있어서, 게이트웨이의 업그레이드 과정의 예를 도시한 도면이다.
단계(610)에서 설정 마스터(120)는 업그레이드할 게이트웨이에 대한 접속정보를 게이트웨이 목록에서 삭제할 수 있다.
단계(620)에서 설정 마스터(120)는 클라이언트들로 변경된 게이트웨이 목록을 전달하고, 삭제된 해당 게이트웨이로의 클라이언트들의 연결이 없을 때까지 대기할 수 있다.
단계(630)에서 설정 마스터(120)는 해당 게이트웨이를 종료한 후, 업그레이드(바이너리 변경 등)를 진행할 수 있다.
단계(640)에서 설정 마스터(120)는 해당 게이트웨이가 기동되면, 기동된 게이트웨이에 대한 접속정보를 게이트웨이 목록에 추가할 수 있다.
도 7은 본 발명의 일실시예에 있어서, 파티션 그룹 서버의 업그레이드 과정의 예를 도시한 도면이다.
단계(710)에서 설정 마스터(120)는 각 게이트웨이들에 업그레이드 대상이 되는 파티션 그룹 서버를 제거하도록 명령을 전송하고, 설정 마스터(120)의 저장 정보에서 해당 파티션 그룹 서버를 제거할 수 있다. 단계(710)이후에는 해당 파티션 그룹 서버로 더 이상의 연산 요청이 전달되지 않게 된다. 이후, 해당 파티션 그룹 서버가 담당하던 데이터는 복제 관계인 동일 파티션 그룹의 다른 파티션 그룹 서버가 처리하게 된다.
단계(720)에서 설정 마스터(120)는 업그레이드 대상이 되는 파티션 그룹 서버를 복제 관계에서 제거하고 복제 팩터(factor)를 조정할 수 있다. 동일한 파티션 그룹에서 복제 관계인 파티션 그룹 서버들 중 마스터의 역할을 수행하는 파티션 그룹 서버를 제거하는 경우에는 나머지 파티션 그룹 서버들 중에서 새로운 마스터의 역할을 수행할 파티션 그룹 서버를 선출하는 과정이 추가적으로 수행될 수 있다. 여기서, 동일한 파티션 그룹의 파티션 그룹 서버들은, 복제로그를 각각 포함할 수 있으며, 이러한 복제로그의 가용성이 복제 팩터(factor)만큼 유지될 수 있도록 복제 방식이 동작하기 때문에 유실된 데이터 부분을 복구할 수 있다.
단계(730)에서 설정 마스터(120)는 업그레이드 대상이 되는 파티션 그룹 서버를 종료하고 업그레이드를 진행할 수 있다.
단계(740)에서는, 종료되었던 파티션 그룹 서버가 기동되는 경우, 슬레이브 조인(slave join)이 수행될 수 있다. 이때, 파티션 그룹 서버는 체크포인트데이터와 복제로그를 통해 마스터 역할을 수행하는 파티션 그룹 서버와 동일한 데이터를 유지할 수 있도록 따라가는 과정(catch-up)을 진행한 후, 복제 관계에 투입될 수 있다.
단계(750)에서 설정 마스터(120)는 해당 파티션 그룹 서버를 분할 정보에 추가할 수 있다. 이때, 설정 마스터(120)는 각 게이트웨이에 해당 파티션 그룹 서버를 다시 투입하도록 명령을 전송할 수 있다. 이후, 해당 파티션 그룹 서버로의 연산 요청이 재개될 수 있다.
클러스터의 확장 및 축소
본 발명의 실시예들에 따른 데이터 저장 시스템 및 데이터 저장 방법에서는 서비스 중단 없는 클러스터의 확장(scale out)과 축소(scale in)를 지원할 수 있다. 클러스터의 확장은 새로운 파티션 그룹을 생성하고, 기존 파티션 그룹에 저장되어 처리되는 데이터의 새로운 부분을 새로 생성한 파티션 그룹에 이전하여 처리하는 방식을 통해 구현될 수 있다. 클러스터의 축소도 본질적으로 동일한 과정으로, 기존 파티션 그룹에 존재하는 데이터를 다른 파티션 그룹으로 이전하고 기존 파티션 그룹을 제거하는 방식을 통해 구현될 수 있다. 이러한 클러스터의 확장 및 축소에 있어서 기본적으로 수행되는 일련의 작업이 마이그레이션(migration)이다.
마이그레이션을 클러스터 분산방식의 측면에서 설명하면, 원본 파티션 그룹에 사상(mapping)되는 여러 파티션 넘버에 해당하는 데이터의 일부를 다른 파티션 그룹으로 이전한 이후, 파티션 넘버와 파티션 그룹의 사상정보를 서비스에 영향을 주지 않는 형태로 변경하는 일련의 작업으로 설명할 수 있다.
마이그레이션을 수행하기 위해, 다음과 같은 작업들이 수행될 수 있다.
1. 덤프 및 로드(dump and load)
2. 로그 캐치업(log catch-up)
3. 마이그레이션 2PC(two phase commit protocol)
4. 클린업(cleanup)
이후, 설명에서 마이그레이션할 데이터의 원본이 있는 파티션 그룹을 소스 파티션 그룹(source PG)이라 하고, 데이터를 이전할 파티션 그룹을 타겟 파티션 그룹(target PG)라 한다.
1. 덤프 및 로드(dump and load)
도 8은 본 발명의 일실시예에 있어서, 덤프 및 로드 과정의 예를 도시한 도면이다. 덤프 및 로드 과정은 소스 파티션 그룹(810)의 데이터 중 이전할 데이터에 대한 체크포인트데이터를 파일 형태로 유틸리티(830)로 내리고(덤프), 타겟 유틸리티(830)로 덤프된 데이터를 파티션 그룹(820)으로 올리는(로드) 과정일 수 있다.
우선, 소스 파티션 그룹(810)의 임의의 파티션 그룹 서버는 체크포인트데이터를 생성할 수 있다. 여기서, 체크포인트데이터는 이전할 파티션 넘버에 해당되는 데이터의 체크포인트데이터일 수 있다. 체크포인트데이터를 생성할 때, 파티션 그룹 서버에서 마지막으로 수행된 복제로그의 로그 시퀀스 넘버(Log Sequence Number, LSN)에 대한 정보도 함께 얻어질 수 있다. 이때의 LSN 값을 마이그레이션 로그 시퀀스 넘버라 할 수 있다.
유틸리티(utility, 830)는 소스 파티션 그룹(810)에서 덤프되는 체크포인트데이터를 읽어서 타겟 파티션 그룹(820)의 임의의 파티션 그룹 서버에 데이터를 입력하는 클라이언트의 역할을 수행할 수 있다.
2. 로그 캐치업(log catch-up)
도 9는 본 발명의 일실시예에 있어서, 로그 캐치업 과정의 예를 도시한 도면이다. 덤프 및 로드 과정 중에 클라이언트(110)와 게이트웨이(910)를 통해 유입되는 이전 대상 파티션 넘버(소스 파티션 그룹(810))에 해당하는 연산 요청은 그대로 소스 파티션 그룹(810)에서 이루어질 수 있다. 이러한 연산들은 마이그레이션 로그 시퀀스 넘버 이후의 복제로그에 존재할 수 있다.
로그 캐치업 과정은 소스 파티션 그룹(810)에 포함된 파티션 그룹 서버에서 수행될 수 있으며, 마이그레이션 로그 시퀀스 넘버 이후의 복제로그 중 이전 대상 파티션 넘버에 해당되는 연산을 타겟 파티션 그룹의 파티션 그룹 서버로 전송하여 동기화하는 과정일 수 있다. 도 9에서 "로그"는 마이그레이션 로그 시퀀스 넘버 이후의 복제로그 중 이전 대상 파티션 넘버에 해당되는 연산을 포함하는 복제로그를 의미할 수 있다.
3. 마이그레이션 2PC(two phase commit protocol)
도 10은 본 발명의 일실시예에 있어서, 마이그레이션 2PC 과정의 예를 도시한 도면이다. 소스 파티션 그룹(810)과 타겟 파티션 그룹(820)간의 복제로그 전송이 거의 완료되면, 파티션 넘버와 파티션 그룹의 사상 정보를 변경하여 소스 파티션 그룹(810)에 존재하는 마이그레이션 대상 파티션 넘버들을 타겟 파티션 그룹(820)으로 변경하는 작업이 수행될 수 있다. 이 작업은 설정 마스터(120)와 게이트웨이(910) 사이의 2PC 방식의 분산 트랜잭션 수행을 통해 이루어질 수 있다.
우선, 딜레이(delay) 명령을 사용하여 현재 옮기는 중인 파티션 넘버에 해당하는 데이터에 대한 연산 요청의 유입을 일시적으로 게이트웨이(910)에서 대기시키고, 타겟 파티션 그룹(820)이 복제로그에 남아있는 연산을 모두 수행하여 소스 파티션 그룹(810)과 타겟 파티션 그룹(820)에 저장된 데이터가 동일해지도록 만들 수 있다.
소스 파티션 그룹(810)과 타겟 파티션 그룹(820)에 저장된 데이터가 동일해지면, 마이그레이션 대상 파티션 넘버가 사상된 파티션 그룹을 소스 파티션 그룹(810)에서 타겟 파티션 그룹(820)으로 변경한 후(또는 변경과 동시에) 리다이렉트(redirect) 명령을 사용하여 딜레이 명령을 해제할 수 있다. 리다이렉트 명령 이후에는 딜레이 명령에 따라 대기된 연산 요청들이 게이트웨이(910)에서 타겟 파티션 그룹(820)으로 전달되어 수행될 수 있다.
4. 클린업(cleanup)
마이그레이션이 완료되면, 소스 파티션 그룹(810)에 존재하는 마이그레이션 대상 파티션 넘버는 지워질 수 있다. 이러한 클린업 작업은 클라이언트(110)의 요청 처리와는 독립적으로 수행될 수 있다.
도 11은 본 발명의 일실시예에 있어서, 클러스터 관리 방법을 도시한 흐름도이다. 본 실시예에 따른 클러스터 관리 방법은 복수의 저장소를 포함하는 데이터 저장 시스템에 의해 수행될 수 있다. 여기서, 데이터 저장 시스템은 도 1을 통해 설명한 데이터 저장 시스템(100)에 대응할 수 있으며, 복수의 저장소는 데이터 저장 시스템(100)이 포함하는 파티션 그룹들에 대응할 수 있다. 복수의 저장소 각각은, 중복 없이 복수의 저장소에 포함되는 파티션 넘버들 중 서로 다른 적어도 하나의 파티션 넘버를 통해 지칭될 수 있다.
단계(1110)에서 데이터 저장 시스템(100)은 복수의 저장소 중 소스 저장소의 데이터를 임시 저장소로 덤프하고, 임시 저장소로 덤프된 데이터를 복수의 저장소 중 타겟 저장소로 로드할 수 있다. 이때, 덤프되는 소스 저장소의 데이터는 소스 저장소가 포함하는 적어도 하나의 파티션 넘버들 중 이전(migration) 대상인 파티션 넘버에 해당하는 데이터의 체크포인트데이터를 포함할 수 있다. 이러한 단계(1110)에 대해서는 도 8을 통해 이미 자세히 설명하였다. 예를 들어, 소스 저장소는 소스 파티션 그룹(810)에, 타겟 저장소는 타겟 파티션 그룹(820)에, 임시 저장소는 유틸리티(830)에 각각 대응할 수 있다.
이때, 복수의 저장소들 각각은, 서로 복제 관계를 갖는 복수의 복제 저장소들을 포함할 수 있다. 예를 들어, 복제 저장소들은 파티션 그룹 서버들에 대응할 수 있다. 파티션 그룹 서버들간의 복제 관계에 대해서는 도 2를 통해 설명한 바 있다.
이 경우, 단계(1110)는, 소스 저장소가 포함하는 복수의 복제 저장소들 중 임의의 복제 저장소에서 체크포인트데이터를 생성하는 단계(미도시) 및 임의의 복제 저장소에서 마지막으로 수행된 연산의 위치에 대한 정보를 확인하는 단계(미도시)를 포함할 수 있다. 여기서, 마지막으로 수행된 연산의 위치에 대한 정보는 이미 설명한 마이그레이션 로그 시퀀스 넘버에 대응할 수 있다.
또한, 단계(1110)에서, 데이터 저장 시스템(100)은 임시 저장소에서 타겟 저장소가 포함하는 복수의 복제 저장소들 중 임의의 복제 저장소에 쓰기 연산을 요청함으로써, 체크포인트데이터를 타겟 저장소에 입력할 수 있다.
단계(1120)에서 데이터 저장 시스템(100)은 클라이언트로부터 이전 대상인 파티션 넘버에 해당하는 연산이 요청되는 경우, 소스 저장소에서 요청된 연산을 소스 저장소의 데이터에 적용하여 처리하고, 소스 저장소에서 타겟 저장소로 요청된 연산을 전송하여 데이터를 동기화할 수 있다. 이러한 단계(1120)에 대해서는 이미 도 9를 통해 자세히 설명한 바 있다. 예를 들어, 소스 저장소는 클라이언트로부터 이전 대상인 파티션 넘버에 해당하는 데이터에 대해 요청된 연산을 게이트웨이를 통해 전달받아 요청된 연산을 적용할 수 있으며, 연산의 적용에 따른 수행 결과를 응답으로서 게이트웨이를 통해 클라이언트로 전달할 수 있다. 이 경우, 소스 저장소의 데이터와 타겟 저장소로 로드된 데이터는 서로 차이가 발생하게 된다. 따라서, 소스 저장소는 요청된 연산을 타겟 저장소로 전달할 수 있다. 이때, 타겟 저장소는 로드된 데이터에 대해 요청된 연산을 수행함으로써, 로드된 데이터와 소스 저장소의 데이터를 동기화할 수 있다.
예를 들어, 단계(1120)에서 데이터 저장 시스템(100)은 타겟 저장소에서 로드된 데이터에 소스 저장소로부터 전송된 연산을 적용함으로써, 로드된 데이터를 소스 저장소에서 요청된 연산이 적용된 데이터와 동기화할 수 있다.
다른 예로, 단계(1120)은 타겟 저장소가 포함하는 복수의 복제 저장소들 중 임의의 복제 저장소에서, 체크포인트데이터의 생성 이후에 소스 저장소로 요청된 연산들의 위치에 대한 정보를 임시 저장소를 통해 수신하는 단계(미도시) 및 요청된 연산들의 위치에 대한 정보를 이용하여 소스 저장소의 데이터에 적용된 연산과 동일한 연산을 로드된 데이터에 적용함으로써 로드된 데이터를 소스 저장소의 데이터와 동기화하는 단계(미도시)를 포함할 수 있다. 일례로, 요청된 연산들의 위치에 대한 정보는, 복제로그에서 연산의 위치에 대한 정보를 나타내는 로그 시퀀스 넘버를 포함할 수 있다.
단계(1130)에서 데이터 저장 시스템(100)은 이전 대상인 파티션 넘버가 지칭하는 저장소를 소스 저장소에서 타겟 저장소로 변경할 수 있다. 예를 들어, 도 10은 연산에 대한 정보가 저장된 복제로그인 "로그"를 소스 파티션 그룹(810)에서 타겟 파티션 그룹(820)으로 전송하여 로드된 데이터와 소스 저장소의 데이터가 동기화된 후에는, 이전 대상인 파티션 넘버가 지칭하는 파티션 그룹을 소스 파티션 그룹(810)에서 타겟 파티션 그룹(820)으로 변경함으로써, 클라이언트(110)의 연산 요청이 타겟 파티션 그룹(820)으로 전달되도록 처리하는 과정이 나타나 있다.
일례로, 단계(1130)는, 클라이언트로부터 요청된 연산을 전달하는 게이트웨이로 딜레이(delay) 명령을 전송하여 게이트웨이가 요청된 연산을 전달하는 과정을 대기시키는 단계(미도시) 및 이전 대상인 파티션 넘버가 지칭하는 저장소를 소스 저장소에서 타겟 저장소로 변경한 후, 게이트웨이로 리다이렉트 명령을 전송하여 딜레이 명령을 해제하는 단계(미도시)를 포함할 수 있다. 이전 대상인 파티션 넘버가 지칭하는 저장소가 소스 저장소에서 타겟 저장소로 변경된 후에는, 이전 대상인 파티션 넘버에 해당하는 데이터에 대한 연산들은 타겟 저장소로 요청될 수 있다. 이때, 클러스터 관리 방법은, 이전 대상인 파티션 넘버가 지칭하는 저장소에서, 이전 대상인 파티션 넘버에 대응하는 데이터를 삭제하는 단계(미도시)를 더 포함할 수 있다. 데이터를 삭제하는 단계는, 클라이언트로부터의 요청과는 독립적으로 수행될 수 있다.
클러스터 관리 방법은, 게이트웨이를 업그레이드를 위해, (a) 데이터 저장 시스템이 포함하는 설정 마스터에서 게이트웨이 목록을 저장 및 유지하고, 업그레이드할 게이트웨이에 대한 접속정보를 게이트웨이 목록에서 삭제하는 단계(미도시), (b) 게이트웨이 목록을 상기 클라이언트로 전송하고, 클라이언트와 업그레이드할 게이트웨이간의 연결이 끊어질 때가지 대기하는 단계(미도시), (c) 업그레이드할 게이트웨이를 종료하고 업그레이드를 진행하는 단계(미도시) 및 (d) 업그레이드할 게이트웨이를 재기동하고, 설정 마스터에서 게이트웨이 목록에 재기동된 게이트웨이의 접속 정보를 추가하는 단계(미도시)를 더 포함할 수 있다. 이러한 게이트웨이를 업그레이드하기 위한 단계들에 대해서는 도 6의 흐름도를 통해 이미 자세히 설명한 바 있다.
또한, 클러스터 관리 방법은, 복제 저장소의 업그레이드를 위해, (1) 데이터 저장 시스템이 포함하는 설정 마스터에서 게이트웨이로 업그레이드 대상 복제 저장소에 대한 정보를 제거하도록 명령을 전송하고, 설정 마스터의 저장 정보에서 업그레이드 대상 복제 저장소에 대한 정보를 제거하는 단계(미도시), (2) 업그레이드 대상 복제 저장소를 상기 복제 관계에서 제거하고, 복제 팩터를 조정하여 복제 관계에서 가용성이 유지될 복제로그의 수를 조정하는 단계(미도시), (3) 업그레이드 대상 복제 저장소를 종료하고 업그레이드를 진행하는 단계(미도시), (4) 업그레이드 대상 복제 저장소를 재기동하고, 재기동된 복제 저장소를 복제 관계에 추가하는 단계(미도시) 및 (5) 재기동된 복제 저장소에 대한 정보를 설정 마스터의 저장 정보 및 게이트웨이에 추가하는 단계(미도시)를 더 포함할 수 있다. 복제 저장소를 업그레이드하기 위한 단계들에 대해서는 도 7의 흐름도를 통해 이미 자세히 설명한 바 있다.
이때, 미도시 단계 (1)에서 업그레이드 대상 복제 저장소에 대한 정보가 제거된 후, 업그레이드 대상 복제 저장소의 데이터에 대한 연산의 요청은, 복제 관계를 갖는 다른 복제 저장소에서 처리될 수 있다.
또한, 미도시 단계 (2)에서 업그레이드 대상 복제 저장소가 복제 관계에서 마스터의 역할을 수행하는 복제 저장소인 경우, 복제 관계에서 슬레이브의 역할을 수행하는 복제 저장소 중 하나가 마스터의 역할을 수행하도록 선출될 수 있다.
또한, 미도시 단계 (4)에서 복제 관계에서 마스터의 역할을 수행하는 복제 저장소와 동일한 데이터를 갖도록 재기동된 복제 저장소의 데이터가 동기화될 수 있다.
이와 같이, 본 발명의 실시예들에 따르면, 클러스터의 업그레이드 및 확장/축소를 사용자에게 영향을 주지 않으면서도 처리할 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (21)

  1. 복수의 저장소를 포함하는 데이터 저장 시스템의 클러스터 관리 방법에 있어서,
    상기 복수의 저장소 각각은, 중복 없이 상기 복수의 저장소에 포함되는 파티션 넘버들 중 서로 다른 적어도 하나의 파티션 넘버를 통해 지칭되고, 하나의 파티션 넘버는 상기 하나의 파티션 넘버에 해당하는 데이터가 저장된 저장소를 식별하고,
    이전(migration)할 파티션 넘버에 의해 식별되는 소스 저장소의 데이터 중 상기 이전할 파티션 넘버에 해당하는 데이터의 체크포인트데이터를 임시 저장소로 덤프하는 단계;
    상기 임시 저장소로 덤프된 체크포인트데이터를 통해 상기 이전할 파티션 넘버에 해당하는 데이터를 상기 복수의 저장소 중 타겟 저장소로 로드하는 단계;
    상기 덤프와 로드 단계 진행 중 클라이언트로부터 상기 이전할 파티션 넘버에 대응하는 연산이 요청되는 경우, 상기 요청된 연산을 상기 소스 저장소의 상기 이전할 파티션 넘버에 해당하는 데이터에 적용하여 처리하고, 상기 타겟 저장소로 상기 요청된 연산을 전송하여 수행하게 함으로써 상기 타겟 저장소로 로드된 데이터를 상기 소스 저장소에서 상기 요청된 연산이 적용된 데이터와 동기화하는 단계; 및
    상기 이전할 파티션 넘버를 통해 식별되는 저장소를 상기 소스 저장소에서 상기 타겟 저장소로 변경하는 단계
    를 포함하는 것을 특징으로 하는 클러스터 관리 방법.
  2. 제1항에 있어서,
    상기 복수의 저장소들 각각은, 서로 복제 관계를 갖는 복수의 복제 저장소들을 포함하고,
    상기 임시 저장소로 덤프하는 단계는,
    상기 소스 저장소가 포함하는 복수의 복제 저장소들 중 임의의 복제 저장소에서 상기 체크포인트데이터를 생성하는 단계; 및
    상기 임의의 복제 저장소에서 마지막으로 수행된 연산의 위치에 대한 정보를 확인하는 단계
    를 포함하는 것을 특징으로 하는 클러스터 관리 방법.
  3. 제2항에 있어서,
    상기 타겟 저장소로 로드하는 단계는,
    상기 임시 저장소에서 상기 타겟 저장소가 포함하는 복수의 복제 저장소들 중 임의의 복제 저장소에 쓰기 연산을 요청하여 상기 덤프된 체크포인트데이터로부터 상기 이전할 파티션 넘버에 해당하는 데이터를 상기 타겟 저장소의 임의의 복제 저장소에 입력하는 것
    을 특징으로 하는 클러스터 관리 방법.
  4. 제1항에 있어서,
    상기 동기화하는 단계는,
    상기 타겟 저장소에서 상기 로드된 데이터에 상기 소스 저장소로부터 전송된 연산을 적용하여, 상기 타겟 저장소로 로드된 데이터를, 상기 소스 저장소에서 상기 요청된 연산이 적용된 데이터와 동기화하는 것
    을 특징으로 하는 클러스터 관리 방법.
  5. 제1항에 있어서,
    상기 복수의 저장소들 각각은, 서로 복제 관계를 갖는 복수의 복제 저장소들을 포함하고,
    상기 동기화하는 단계는,
    상기 타겟 저장소가 포함하는 복수의 복제 저장소들 중 임의의 복제 저장소에서, 상기 요청된 연산의 위치에 대한 정보를 상기 임시 저장소를 통해 수신하는 단계; 및
    상기 요청된 연산의 위치에 대한 정보를 이용하여 상기 요청된 연산과 동일한 연산을 상기 타겟 저장소에 로드된 데이터에 적용함으로써 상기 타겟 저장소에 로드된 데이터를 상기 소스 저장소에서 상기 요청된 연산이 적용된 데이터와 동기화하는 단계
    를 포함하는 것을 특징으로 하는 클러스터 관리 방법.
  6. 제1항에 있어서,
    상기 이전할 파티션 넘버가 식별하는 저장소를 상기 소스 저장소에서 상기 타겟 저장소로 변경하는 단계는,
    상기 클라이언트로부터 요청된 연산을 전달하는 게이트웨이로 딜레이(delay) 명령을 전송하여 상기 게이트웨이가 상기 요청된 연산을 전달하는 과정을 대기시키는 단계; 및
    상기 이전할 파티션 넘버가 식별하는 저장소를 상기 소스 저장소에서 상기 타겟 저장소로 변경한 후, 상기 게이트웨이로 리다이렉트 명령을 전송하여 상기 딜레이 명령을 해제하는 단계
    를 포함하는 것을 특징으로 하는 클러스터 관리 방법.
  7. 제6항에 있어서,
    상기 소스 저장소에서, 상기 이전할 파티션 넘버에 대응하는 데이터를 삭제하는 단계
    를 더 포함하는 것을 특징으로 하는 클러스터 관리 방법.
  8. 제1항에 있어서,
    상기 데이터 저장 시스템이 포함하는 설정 마스터에서 게이트웨이 목록을 저장 및 유지하고, 업그레이드할 게이트웨이에 대한 접속정보를 상기 게이트웨이 목록에서 삭제하는 단계;
    상기 게이트웨이 목록을 상기 클라이언트로 전송하고, 상기 클라이언트와 상기 업그레이드할 게이트웨이간의 연결이 끊어질 때가지 대기하는 단계;
    상기 업그레이드할 게이트웨이를 종료하고 업그레이드를 진행하는 단계; 및
    상기 업그레이드할 게이트웨이를 재기동하고, 상기 설정 마스터에서 상기 게이트웨이 목록에 상기 재기동된 게이트웨이의 접속 정보를 추가하는 단계
    를 더 포함하는 것을 특징으로 하는 클러스터 관리 방법.
  9. 제1항에 있어서,
    상기 복수의 저장소들 각각은, 서로 복제 관계를 갖는 복수의 복제 저장소들을 포함하고,
    상기 데이터 저장 시스템이 포함하는 설정 마스터에서 게이트웨이로 업그레이드 대상 복제 저장소에 대한 정보를 제거하도록 명령을 전송하고, 상기 설정 마스터의 저장 정보에서 상기 업그레이드 대상 복제 저장소에 대한 정보를 제거하는 단계;
    상기 업그레이드 대상 복제 저장소를 상기 복제 관계에서 제거하고, 복제 팩터를 조정하여 상기 복제 관계에서 가용성이 유지될 복제로그의 수를 조정하는 단계;
    상기 업그레이드 대상 복제 저장소를 종료하고 업그레이드를 진행하는 단계;
    상기 업그레이드 대상 복제 저장소를 재기동하고, 상기 재기동된 복제 저장소를 상기 복제 관계에 추가하는 단계; 및
    상기 재기동된 복제 저장소에 대한 정보를 상기 설정 마스터의 저장 정보 및 상기 게이트웨이에 추가하는 단계
    를 더 포함하는 것을 특징으로 하는 클러스터 관리 방법.
  10. 제9항에 있어서,
    상기 업그레이드 대상 복제 저장소에 대한 정보가 제거된 후, 상기 업그레이드 대상 복제 저장소의 데이터에 대한 연산의 요청은, 상기 복제 관계를 갖는 다른 복제 저장소에서 처리되는 것
    을 특징으로 하는 클러스터 관리 방법.
  11. 제9항에 있어서,
    상기 업그레이드 대상 복제 저장소가 상기 복제 관계에서 마스터의 역할을 수행하는 복제 저장소인 경우, 상기 복제 관계에서 슬레이브의 역할을 수행하는 복제 저장소 중 하나가 마스터의 역할을 수행하도록 선출되는 것
    을 특징으로 하는 클러스터 관리 방법.
  12. 제9항에 있어서,
    상기 복제 관계에 추가하는 단계는,
    상기 복제 관계에서 마스터의 역할을 수행하는 복제 저장소와 동일한 데이터를 갖도록 상기 재기동된 복제 저장소의 데이터를 동기화하는 것
    을 특징으로 하는 클러스터 관리 방법.
  13. 제1항 내지 제12항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
  14. 데이터 저장 시스템에 있어서,
    파티션 넘버들이 중복 없이 포함되고, 서로 다른 적어도 하나의 파티션 넘버를 통해 지칭되는 복수의 저장소 - 하나의 파티션 넘버는 상기 하나의 파티션 넘버에 해당하는 데이터가 저장된 저장소를 식별함 -; 및
    이전(migration)할 파티션 넘버에 의해 식별되는 소스 저장소의 데이터 중 적어도 일부의 데이터를 읽어서 상기 복수의 저장소 중 타겟 저장소로 입력하는 임시 저장소 - 상기 적어도 일부의 데이터는, 상기 소스 저장소의 데이터 중 이전할 파티션 넘버에 해당하는 데이터의 체크포인트데이터를 포함함 -
    를 포함하고,
    상기 소스 저장소는,
    상기 적어도 일부의 데이터를 타겟 저장소로 입력하는 과정 중 클라이언트로부터 상기 이전할 파티션 넘버에 대응하는 연산이 요청되는 경우, 상기 요청된 연산을 상기 소스 저장소의 상기 이전할 파티션 넘버에 해당하는 데이터에 적용하여 처리하고, 상기 타겟 저장소로 상기 요청된 연산을 전송하여 수행하게 함으로써 상기 타겟 저장소로 입력된 데이터와 상기 소스 저장소에서 상기 요청된 연산이 적용된 데이터를 동기화하며,
    상기 이전할 파티션 넘버가 식별하는 저장소가 상기 소스 저장소에서 상기 타겟 저장소로 변경되는 것
    을 특징으로 하는 데이터 저장 시스템.
  15. 제14항에 있어서,
    상기 복수의 저장소들 각각은, 서로 복제 관계를 갖는 복수의 복제 저장소들을 포함하고,
    상기 임시 저장소는,
    상기 소스 저장소가 포함하는 복수의 복제 저장소들 중 임의의 복제 저장소에서 생성된 상기 이전할 파티션 넘버에 해당하는 데이터의 체크포인트데이터를 덤프받고, 상기 타겟 저장소가 포함하는 복수의 복제 저장소들 중 임의의 복제 저장소에 쓰기 연산을 요청하여 상기 덤프받은 체크포인트데이터를 통해 상기 이전할 파티션 넘버에 해당하는 데이터를 상기 타겟 저장소에 입력하는 것
    을 특징으로 하는 데이터 저장 시스템.
  16. 제14항에 있어서,
    상기 타겟 저장소에서 상기 입력된 데이터에 상기 소스 저장소로부터 전송된 연산을 적용하여 상기 입력된 데이터를 상기 소스 저장소에서 상기 요청된 연산이 적용된 데이터와 동기화하는 것
    을 특징으로 하는 데이터 저장 시스템.
  17. 제14항에 있어서,
    상기 복수의 저장소들 각각은, 서로 복제 관계를 갖는 복수의 복제 저장소들을 포함하고,
    상기 타겟 저장소가 포함하는 복수의 복제 저장소들 중 임의의 복제 저장소에서, 상기 소스 저장소로 요청된 연산의 위치에 대한 정보를 상기 임시 저장소를 통해 수신하고, 상기 요청된 연산의 위치에 대한 정보를 이용하여 상기 요청된 연산과 동일한 연산을 상기 입력된 데이터에 적용함으로써 상기 입력된 데이터를 상기 소스 저장소에서 상기 요청된 연산이 적용된 데이터와 동기화하는 것
    을 특징으로 하는 데이터 저장 시스템.
  18. 제14항에 있어서,
    상기 클라이언트로부터 요청된 연산을 전달하는 게이트웨이; 및
    게이트웨이 목록을 저장 및 유지하는 설정 마스터
    를 더 포함하는 것을 특징으로 하는 데이터 저장 시스템.
  19. 제18항에 있어서,
    상기 설정 마스터는,
    상기 게이트웨이로 딜레이 명령을 전송하여 상기 요청된 연산의 전달을 대기시키고, 상기 이전할 파티션 넘버가 지칭하는 저장소를 상기 소스 저장소에서 상기 타겟 저장소로 변경한 후, 상기 게이트웨이로 리다이렉트 명령을 전송하여 상기 딜레이 명령을 해제시키는 것
    을 특징으로 하는 데이터 저장 시스템.
  20. 제18항에 있어서,
    상기 설정 마스터는,
    업그레이드할 게이트웨이에 대한 접속정보를 상기 게이트웨이 목록에서 삭제하고, 상기 게이트웨이 목록을 상기 클라이언트로 전송하고, 상기 클라이언트와 상기 업그레이드할 게이트웨이간의 연결이 끊어질 때가지 대기하며, 상기 연결이 끊어진 후 상기 업그레이드할 게이트웨이가 종료되고 업그레이드가 진행되어 다시 재기동되는 경우, 상기 게이트웨이 목록에 상기 재기동된 게이트웨이의 접속 정보를 추가하는 것
    을 특징으로 하는 데이터 저장 시스템.
  21. 제18항에 있어서,
    상기 복수의 저장소들 각각은, 서로 복제 관계를 갖는 복수의 복제 저장소들을 포함하고,
    상기 설정 마스터는,
    상기 게이트웨이로 업그레이드 대상 복제 저장소에 대한 정보를 제거하도록 명령을 전송하고, 상기 설정 마스터의 저장 정보에서 상기 업그레이드 대상 복제 저장소에 대한 정보를 제거하고, 상기 업그레이드 대상 복제 저장소를 상기 복제 관계에서 제거하고, 복제 팩터를 조정하여 상기 복제 관계에서 가용성이 유지될 복제로그의 수를 조정하며, 상기 업그레이드 대상 복제 저장소가 종료되고 업그레이드가 진행되어 다시 재기동되는 경우, 상기 재기동된 복제 저장소를 상기 복제 관계에 추가하고, 상기 재기동된 복제 저장소에 대한 정보를 상기 설정 마스터의 저장 정보 및 상기 게이트웨이에 추가하는 것
    을 특징으로 하는 데이터 저장 시스템.
KR1020140113559A 2014-08-28 2014-08-28 분산 저장 환경에서 데이터 저장 시스템 및 데이터 저장 시스템이 포함하는 클러스터의 업그레이드, 확장 및 축소를 위한 클러스터 관리 방법 KR101748912B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140113559A KR101748912B1 (ko) 2014-08-28 2014-08-28 분산 저장 환경에서 데이터 저장 시스템 및 데이터 저장 시스템이 포함하는 클러스터의 업그레이드, 확장 및 축소를 위한 클러스터 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140113559A KR101748912B1 (ko) 2014-08-28 2014-08-28 분산 저장 환경에서 데이터 저장 시스템 및 데이터 저장 시스템이 포함하는 클러스터의 업그레이드, 확장 및 축소를 위한 클러스터 관리 방법

Publications (2)

Publication Number Publication Date
KR20160025993A KR20160025993A (ko) 2016-03-09
KR101748912B1 true KR101748912B1 (ko) 2017-07-03

Family

ID=55536466

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140113559A KR101748912B1 (ko) 2014-08-28 2014-08-28 분산 저장 환경에서 데이터 저장 시스템 및 데이터 저장 시스템이 포함하는 클러스터의 업그레이드, 확장 및 축소를 위한 클러스터 관리 방법

Country Status (1)

Country Link
KR (1) KR101748912B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190017127A (ko) * 2017-08-10 2019-02-20 네이버 주식회사 데이터베이스 샤딩 환경에서의 복제 로그 기반의 마이그레이션

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190017127A (ko) * 2017-08-10 2019-02-20 네이버 주식회사 데이터베이스 샤딩 환경에서의 복제 로그 기반의 마이그레이션
KR101989074B1 (ko) 2017-08-10 2019-06-14 네이버 주식회사 데이터베이스 샤딩 환경에서의 복제 로그 기반의 마이그레이션

Also Published As

Publication number Publication date
KR20160025993A (ko) 2016-03-09

Similar Documents

Publication Publication Date Title
CN106250270B (zh) 一种云计算平台下的数据备份方法
US9934242B2 (en) Replication of data between mirrored data sites
JP6725742B2 (ja) ファイルストレージ、オブジェクトストレージ、およびストレージシステム
JP5727020B2 (ja) クラウドコンピューティングシステム及びそのデータ同期化方法
US11893264B1 (en) Methods and systems to interface between a multi-site distributed storage system and an external mediator to efficiently process events related to continuity
KR20190049266A (ko) 네트워크에서 메타데이터의 동기화를 제어하는 장치 및 그 방법
JP5516575B2 (ja) データ挿入システム
CN107018185B (zh) 云存储系统的同步方法和装置
US20090282203A1 (en) Managing storage and migration of backup data
CN112470112A (zh) 块存储系统的分布式副本
JP2005276094A (ja) 分散ストレージ装置のファイル管理方法及び分散ストレージシステム並びにプログラム
WO2010118657A1 (zh) 一种数据恢复的方法、数据节点及分布式文件系统
JP2006099406A (ja) スイッチ装置とシステム並びにバックアップ及びリストア方法とプログラム
CN102012944B (zh) 一种提供复制特性的分布式nosql数据库的实现方法
JP2008217306A (ja) レプリケーション方法、レプリケーションシステム、ストレージ装置、プログラム
JP6196389B2 (ja) 分散型ディザスタリカバリファイル同期サーバシステム
CN113010496A (zh) 一种数据迁移方法、装置、设备和存储介质
KR20200057409A (ko) 라이브 서비스를 위한 분산 파일 시스템 및 데이터 처리 방법
KR101748912B1 (ko) 분산 저장 환경에서 데이터 저장 시스템 및 데이터 저장 시스템이 포함하는 클러스터의 업그레이드, 확장 및 축소를 위한 클러스터 관리 방법
JP2011222005A (ja) 使用中の複数サイトの保護データ記憶の自動化された再配置
JP4512386B2 (ja) バックアップシステムおよび方法
KR101748913B1 (ko) 분산 저장 환경에서 게이트웨이를 선택하기 위한 클러스터 관리 방법 및 데이터 저장 시스템
JP2013080334A (ja) データ移行システム及びデータ移行方法
JP7095296B2 (ja) 分散型構成管理装置、分散型構成管理方法、及び、分散型構成管理プログラム
KR101786874B1 (ko) 데이터의 일관성을 보장하는 상태기기 기반의 복제 및 체크포인트데이터와 복제로그를 이용한 분산 복구를 처리하는 데이터 복제 방법 및 데이터 저장 시스템

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right