KR20180088076A - 토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 운영 방법 - Google Patents

토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 운영 방법 Download PDF

Info

Publication number
KR20180088076A
KR20180088076A KR1020170012672A KR20170012672A KR20180088076A KR 20180088076 A KR20180088076 A KR 20180088076A KR 1020170012672 A KR1020170012672 A KR 1020170012672A KR 20170012672 A KR20170012672 A KR 20170012672A KR 20180088076 A KR20180088076 A KR 20180088076A
Authority
KR
South Korea
Prior art keywords
data
master server
nodes
torus network
coordinate
Prior art date
Application number
KR1020170012672A
Other languages
English (en)
Other versions
KR102610984B1 (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 KR1020170012672A priority Critical patent/KR102610984B1/ko
Priority to US15/663,477 priority patent/US10749709B2/en
Publication of KR20180088076A publication Critical patent/KR20180088076A/ko
Application granted granted Critical
Publication of KR102610984B1 publication Critical patent/KR102610984B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/403Bus networks with centralised control, e.g. polling
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/101Server selection for load balancing based on network conditions
    • 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
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • 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/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements

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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

토러스 네트워크를 사용하는 분산 파일 시스템이 제공된다. 분산 파일 시스템은 복수의 서버들을 포함할 수 있다. 데이터 입출력의 지연 시간을 감소시키기 위한 마스터 서버의 위치가 결정될 수 있다. 마스터 서버의 위치는 마스터 서버 및 노드들 중 마스터 서버로부터 가장 멀리 떨어진 노드 간의 거리를 최소화하도록 결정될 수 있다. 마스터 서버의 위치를 결정함에 있어서, 토러스 네트워크의 특성 및 전파 전송 방식의 특성이 고려될 수 있다.

Description

토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 운영 방법{DISTRIBUTED FILE SYSTEM USING TORUS NETWORK AND METHOD FOR OPERATING OF THE DISTRIBUTED FILE SYSTEM USING TORUS NETWORK}
아래의 실시예들은 토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 운영 방법에 관한 것으로, 보다 상세히는 토러스 네트워크를 분산 파일 시스템의 연결 네트워크로서 사용할 때의 입출력 구조에 관련된 장치 및 방법이 개시된다.
서버 클러스터의 구성에 있어서의 요구사항(requirement)들은 아래와 같다.
1) 서버들 간의 통신 병목(bottle-neck)의 최소화
2) 통신 채널의 가용성(availability)의 보장
이러한 요구사항들을 충족시키기 위해서, 예를 들면 다단계의 스위치들로 구성된 팻(fat)-트리(tree)와 같은, 전통적인 네트워크 구성 방식이 사용될 수 있다. 그러나, 전통적인 네트워크 구성 방식이 사용될 경우 네트워크 비용이 기하급수적으로 증가한다.
이러한 문제를 해결하기 위해, 서버 노드의 자체의 통신 방식, 말하자면, 서버의 네트워크 인터페이스 카드(Network Interface Card; NIC)를 사용하여 토러스(torus) 네트워크를 구성하는 방식이 제안되었다.
이러한 방식은 서버의 규모가 증가하여도 서버의 NIC의 추가 외에는 추가적인 네트워크 구축 비용을 요구하지 않으며, 앞서 설명된 요구사항들을 충족시킬 수 있다.
분산 파일 시스템은 다수의 노드들을 네트워크로 연결하여 하나의 대용량 스토리지로 사용할 수 있게 하는 소프트웨어 중심의 스토리지 시스템이다.
분산 파일 시스템은, 서버 클러스터와 유사하게, 여러 개의 데이터 서버들로 구성된다. 데이터 서버는 분산 파일 시스템의 노드로서 동작한다. 또한, 분산 파일 시스템은 사용자의 데이터 서비스 요청을 데이터 서버들 간의 유기적인 협력을 통해 처리한다. 데이터 서비스 요청은, 파일 생성, 파일 검색, 데이터 독출(writing) 및 데이터 기입(reading) 등을 포함한다.
분산 파일 시스템은 데이터의 유실을 방지하기 위해 복제 기법 및/또는 소거 코딩 기법을 사용할 수 있다. 복제 기법은 동일한 데이터의 다수의 복제들을 다수의 노드들 또는 디스크들에 저장하는 것일 수 있다. 소거 코딩 기법은 데이터의 인코딩을 통해 패리티를 생성하고, 데이터 및 패리티를 다수의 노드들 또는 디스크들에 저장하는 것일 수 있다.
복제 기법에 의한 데이터 저장 방식 및 소거 코딩 기법에 의한 데이터 저장 방식의 양자 모두 하나의 데이터를 단일한 노드에만 저장하지 않고, 다수의 노드들에 저장한다. 따라서, 분산 파일 시스템을 구성하는 노드들 간에서 데이터 이동이 빈번하게 발생한다.
이러한 이유로 분산 파일시스템을 구성하는 노드들 간의 네트워크 성능 및 분산 파일 시스템의 성능은 서로 밀접한 관계를 갖는다. 분산 파일 시스템들 간을 연결하는 네트워크의 주요한 특성으로서, 노드들 간의 지연 시간(latency) 및 대역폭(bandwidth)이 있다.
페타바이트 수준의 분산 파일 시스템을 구축할 때는, 일반적으로 스위치 기반의 팻-트리 네트워크가 사용된다. 규모가 그리 크지 않은 분산 파일 시스템에서, 팻-트리 네트워크는 노드들 간에 일정하고 짧은 지연 시간을 제공한다.
팻-트리 네트워크와는 달리, 토러스 네트워크는 노드들을 스위치를 사용하지 않고 직접적으로 연결한다. 기존에는, 토러스 네트워크는 슈퍼 컴퓨팅 노드의 네트워크로서 주로 사용되었다.
토러스 네트워크의 연결 방식의 특성에 따라, 토러스 네트워크에서의 노드 및 노드 간의 통신은, 노드들이 직접적으로 연결되지 않았으면 노드들 사이의 다른 노드를 경유하여 이루어진다. 이러한 경유에 의해, 토러스 네트워크는 데이터의 전송 시 경유되는 노드의 개수가 늘어갈수록 노드들 간의 데이터의 전송의 지연 시간이 증가한다는 특성을 갖는다.
기존의 분산 파일 시스템들에서는, 노드의 위치에 따라서 네트워크 특성이 변하지 않는다. 따라서, 네트워크 상의 노드의 위치가 고려될 필요가 없다. 따라서, 파일의 데이터를 저장하기 위해 분산 파일 시스템의 어떤 노드 또는 어떤 디스크를 사용할 것인가를 결정함에 있어서 노드의 디스크의 상태만이 결정의 기준으로서 사용된다. 말하자면, 가능한 모든 노드 및 디스크에 데이터가 균등하게 할당되도록 데이터를 저장할 노드 또는 디스크가 결정될 수 있다.
하지만, 토러스 네트워크를 분산 파일 시스템에 적용할 경우, 노드의 위치를 파악하고, 위치에 따른 노드들 간의 지연 시간을 고려함이 없이 데이터가 송수신되면, 노드들 간의 지연 시간에 의해 분산 파일 시스템의 입출력 성능이 급격하게 감소할 수 있다.
분산 파일 시스템의 관리에 대하여 다양한 연구 및 개발이 이루어지고 있다. 예를 들면, 토러스 네트워크를 사용하는 분산 파일 시스템에서의 서버들의 운영 방법에 관련하여, 한국공개특허 제10-2016-0121380호가 공개된 바 있다.
일 실시예는 대규모의 분산 파일 시스템의 특성을 고려하여 토러스 네트워크에 데이터 서버들을 구성하는 방법을 제공할 수 있다.
일 실시예는 토러스 네트워크에 기반하는 분산 파일 시스템에서 클라이언트의 데이터를 다수의 분산 파일 시스템 노드들에 저장하는 장치 및 방법을 제공할 수 있다.
일 실시예는 엑사바이트 급 클라우드 스토리지 구축을 위한 토러스 네트워크에 기반한 분산 파일 시스템에서의 입출력 성능을 향상시키는 구조에 대한 장치 및 방법을 제공할 수 있다.
일 실시예는 토러스 네트워크를 분산 파일 시스템의 연결 네트워크로 사용할 때, 토러스 네트워크의 단점인 노드들 간 지연 시간의 차이 및 지연 시간의 증가를 최소화할 입출력 구조와 관련된 장치 및 방법을 제공할 수 있다.
일 실시예는 노드들 간 지연 시간의 차이 및 지연 시간의 증가를 최소화함으로써 토러스 네트워크 상에서 효과적으로 분산 파일 시스템을 구축할 수 있게 하는 장치 및 방법을 제공할 수 있다.
일 실시예는 클라이언트의 데이터를 다수의 분산 파일 시스템 노드들에 저장할 때 발생하는 입출력 지연 시간을 감소시키는 입출력 구조에 대한 장치 및 방법을 제공할 수 있다.
일 실시예는 클라이언트의 데이터를 수신하고, 데이터의 분배 및 수집을 처리하는 마스터 서버의 위치를 결정하는 장치 및 방법을 제공할 수 있다.
일 실시예는 클라이언트의 데이터를 수신하고, 데이터의 인코딩 및 디코딩을 처리하는 마스터 서버의 위치를 결정하는 장치 및 방법을 제공할 수 있다.
일 실시예는 분산 파일 시스템 노드의 상태 및 배치에 따라 마스터 서버의 위치를 결정하는 장치 및 방법을 제공할 수 있다.
일 측에 있어서, 데이터와 관련된 토러스 네트워크의 노드들을 식별하는 단계; 상기 노드들의 상기 토러스 네트워크 상의 위치에 기반하여 마스터 서버의 상기 토러스 네트워크 상의 위치를 결정하는 단계; 및 상기 토러스 네트워크의 상기 결정된 위치의 노드를 상기 마스터 서버로서 설정하는 단계를 포함하는 분산 파일 시스템의 관리 방법이 제공된다.
상기 마스터 서버는 상기 데이터의 전송을 담당하는 중심 노드일 수 있다.
상기 위치는 상기 데이터에 대한 입력 또는 출력의 지연 시간이 최소화되도록 결정될 수 있다.
상기 마스터 서버는 전파 전송 방식으로 상기 데이터를 전송할 수 있다.
상기 마스터 서버는 상기 토러스 네트워크의 데이터 서버, 메타 데이터 서버 또는 클라이언트일 수 있다.
상기 마스터 서버의 위치는 상기 마스터 서버 및 상기 노드들 중 상기 마스터 서버로부터 가장 멀리 떨어진 노드 간의 거리를 최소화하는 위치일 수 있다.
상기 거리는 상기 마스터 서버 및 상기 가장 멀리 떨어진 노드 간의 경로 상에 존재하는 다른 노드의 개수에 의해 결정될 수 있다.
상기 마스터 서버의 위치는 상기 노드들 중 가장 멀리 떨어진 2개의 노드들의 가운데일 수 있다.
상기 위치는 상기 토러스 네트워크의 복수의 좌표 축들에 대한 좌표 값들로서 표현될 수 있다.
상기 좌표 값들은 서로 간에 독립적으로 계산될 수 있다.
상기 위치는 상기 토러스 네트워크 연결 특징을 고려하여 결정될 수 있다.
상기 설정하는 단계는, 상기 결정된 위치의 노드에게 상기 마스터 서버로 결정되었음을 통지하는 단계를 포함할 수 있다.
상기 설정하는 단계는, 상기 노드들 중 상기 마스터 서버의 직렬 연결에서 벗어난 노드 내의 데이터를 상기 직렬 연결 상의 노드로 이동하는 단계를 포함할 수 있다.
상기 위치를 결정하는 단계는, 데이터가 저장된 토러스 네트워크의 복수의 노드들의 복수의 좌표 값들을 갖는 제1 그룹을 생성하는 단계; 상기 복수의 좌표 값들에 기반하여 2개의 좌표 값들 간의 거리들의 제2 그룹을 생성하는 단계; 상기 거리들 중 가장 큰 값을 갖는 거리를 선택하는 단계; 상기 선택된 거리의 좌표 값들 중 큰 좌표 값이 처음의 원소이고, 선택된 거리의 좌표 값들 중 작은 좌표 값이 마지막의 원소가 되도록 상기 제1 집합의 원소들을 우측으로 쉬프트함으로써 제3 그룹을 생성하는 단계; 상기 큰 좌표 값이 0이 되도록, 상기 제3 그룹의 좌표 값들을 좌표 축의 양의 방향으로 쉬프트된 값들로 변경함으로써 제4 그룹을 생성하는 단계; 및 상기 제4 그룹에 기반하여 마스터 서버의 좌표 값을 결정하는 단계를 포함할 수 있다.
상기 좌표 값들은 복수일 수 있다.
상기 위치를 결정하는 단계는 상기 복수의 좌표 값들의 각 좌표 값에 대해 수행될 수 있다.
다른 일 측에 있어서, 데이터와 관련된 토러스 네트워크의 노드들을 식별하고, 상기 노드들의 상기 토러스 네트워크 상의 위치에 기반하여 마스터 서버의 상기 토러스 네트워크 상의 위치를 결정하는 프로세서; 및 상기 결정된 위치의 노드에게 상기 마스터 서버로 결정되었음을 통지하는 통신부를 포함하는 분산 파일 시스템 관리 장치가 제공된다.
또 다른 일 측에 있어서, 데이터가 저장된 토러스 네트워크의 복수의 노드들의 복수의 좌표 값들을 갖는 제1 그룹을 생성하는 단계; 상기 복수의 좌표 값들에 기반하여 2개의 좌표 값들 간의 거리들의 제2 그룹을 생성하는 단계; 상기 거리들 중 가장 큰 값을 갖는 거리를 선택하는 단계; 상기 선택된 거리의 좌표 값들 중 큰 좌표 값이 처음의 원소이고, 선택된 거리의 좌표 값들 중 작은 좌표 값이 마지막의 원소가 되도록 상기 제1 집합의 원소들을 우측으로 쉬프트함으로써 제3 그룹을 생성하는 단계; 상기 큰 좌표 값이 0이 되도록, 상기 제3 그룹의 좌표 값들을 좌표 축의 양의 방향으로 쉬프트된 값들로 변경함으로써 제4 그룹을 생성하는 단계; 및 상기 제4 그룹에 기반하여 마스터 서버의 좌표 값을 결정하는 단계를 포함하는 분산 파일 시스템의 마스터 서버의 위치 결정 방법이 제공된다.
상기 결정하는 단계는, 상기 제4 그룹에 기반하여 상기 마스터 서버의 상대 좌표 값을 결정하는 단계; 및 상기 상대 좌표 값에 기반하여 상기 마스터 서버의 기준 좌표 값을 결정하는 단계를 포함할 수 있다.
상기 상대 좌표 값은 상기 제4 그룹의 가장 작은 좌표 값 및 상기 제4 그룹의 가장 큰 좌표 값의 평균 값일 수 있다.
상기 평균 값이 정수가 아닌 경우, 상기 상대 좌표 값은 상기 평균 값의 반올림일 수 있다.
상기 기준 좌표 값은 상기 상대 좌표 값을 상기 선택된 거리의 좌표 값들 중 상기 큰 좌표 값만큼 상기 좌표 축의 양의 방향으로 쉬프트된 값으로 변경함으로써 생성될 수 있다.
이 외에도, 본 발명을 구현하기 위한 다른 방법, 장치, 시스템 및 상기 방법을 실행하기 위한 컴퓨터 프로그램을 기록하기 위한 컴퓨터 판독 가능한 기록 매체가 더 제공된다.
대규모의 분산 파일 시스템의 특성을 고려하여 토러스 네트워크에 데이터 서버들을 구성하는 방법이 제공된다.
토러스 네트워크에 기반하는 분산 파일 시스템에서 클라이언트의 데이터를 다수의 분산 파일 시스템 노드들에 저장하는 장치 및 방법이 제공된다.
엑사바이트 급 클라우드 스토리지 구축을 위한 토러스 네트워크에 기반한 분산 파일 시스템에서의 입출력 성능을 향상시키는 구조에 대한 장치 및 방법이 제공된다.
토러스 네트워크를 분산 파일 시스템의 연결 네트워크로 사용할 때, 토러스 네트워크의 단점인 노드들 간 지연 시간의 차이 및 지연 시간의 증가를 최소화할 입출력 구조와 관련된 장치 및 방법이 제공된다.
노드들 간 지연 시간의 차이 및 지연 시간의 증가를 최소화함으로써 토러스 네트워크 상에서 효과적으로 분산 파일 시스템을 구축할 수 있게 하는 장치 및 방법이 제공된다.
클라이언트의 데이터를 다수의 분산 파일 시스템 노드들에 저장할 때 발생하는 입출력 지연 시간을 감소시키는 입출력 구조에 대한 장치 및 방법이 제공된다.
클라이언트의 데이터를 수신하고, 데이터의 분배 및 수집을 처리하는 마스터 서버의 위치를 결정하는 장치 및 방법이 제공된다.
클라이언트의 데이터를 수신하고, 데이터의 인코딩 및 디코딩을 처리하는 마스터 서버의 위치를 결정하는 장치 및 방법이 제공된다.
분산 파일 시스템 노드의 상태 및 배치에 따라 마스터 서버의 위치를 결정하는 장치 및 방법이 제공된다.
도 1a는 일 예에 따른 토러스 네트워크 기반의 분산 파일 시스템 및 스위치를 통하는 네트워크를 통해 클라이언트가 분산 파일 시스템에 연결된 구조를 나타낸다.
도 1b는 일 예에 따른 토러스 네트워크 상에 클라이언트 및 분산 파일시스템이 모두 연결된 구조를 나타낸다.
도 2a는 일 예에 따른 복제 방식을 통한 분산 파일 시스템의 데이터 저장을 나타낸다.
도 2b는 일 예에 따른 소거 코딩 방식을 통한 분산 파일 시스템의 데이터 저장을 나타낸다.
도 3a는 일 예에 따른 클라이언트 중심 데이터 입출력 구조에서 복제 방식이 적용될 경우의 데이터 기입을 나타낸다.
도 3b는 일 예에 따른 데이터 서버 중심 데이터 입출력 구조에서 복제 방식이 적용될 경우의 데이터 기입을 나타낸다.
도 4a는 일 예에 따른 클라이언트 중심 입출력 구조에서 소거 코딩을 통한 데이터 쓰기를 나타낸다.
도 4b는 일 예에 따른 데이터 서버 중심 입출력 구조에서 소거 코딩을 통한 데이터 쓰기를 나타낸다.
도 5a는 일 예에 따른 4x4x4의 3차원 토러스 네트워크의 구축을 나타낸다.
도 5b는 일 예에 따른 5x5의 2차원 토러스 네트워크의 구축을 나타낸다.
도 6는 일 예에 따른 토러스 네트워크 상의 전파 전송 방식을 나타낸다.
도 7는 일 예에 따른 네 개의 네트워크 포트를 가진 마스터 서버가 직렬로 연결된 데이터 서버로 전파(propagation) 전송 방식으로 데이터를 전송하는 것을 나타낸다.
도 8는 일 예에 따른 절대 좌표 상에 표현된 토러스 네트워크 상의 세 노드들 및 마스터 노드를 나타낸다.
도 9는 일 예에 따른 토러스 네트워크의 연결 고려한 세 노드들과 가장 가까운 마스터 노드의 결정을 나타낸다.
도 10a는 일 예에 따른 세 노드들의 x 축 상의 위치들을 나타낸다.
도 10b는 일 예에 따른 세 노드들 간의 단 방향으로 측정된 거리를 나타낸다.
도 10c는 일 예에 따른 세 노드들 간의 단 방향의 거리들 중 가장 큰 값을 갖는 거리가 제거된 것을 나타낸다.
도 10d는 일 예에 따른 노드 B 가 시작 점으로 재배치된 경우의 노드들을 나타낸다.
도 10e는 일 예에 따른 노드 B가 0의 좌표 값을 갖는 상대 좌표 상에서의 세 노드들 및 마스터 서버를 나타낸다.
도 11은 일 실시예에 따른 분산 파일 시스템 관리 장치의 구조도이다.
도 12는 일 실시예에 따른 분산 파일 시스템의 관리 방법의 흐름도이다.
도 13은 일 실시예에 따른 분산 파일 시스템의 마스터 서버의 위치 결정 방법의 흐름도이다.
후술하는 예시적 실시예들에 대한 상세한 설명은, 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 실시예를 실시할 수 있기에 충분하도록 상세히 설명된다. 다양한 실시예들은 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 실시예의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 예시적 실시예들의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다.
도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다. 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
실시예에서 사용된 용어는 실시예를 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 실시예에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않으며, 추가적인 구성이 예시적 실시예들의 실시 또는 예시적 실시예들의 기술적 사상의 범위에 포함될 수 있음을 의미한다. 어떤 구성요소(component)가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 상기의 2개의 구성요소들이 서로 간에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있으나, 상기의 2개의 구성요소들의 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
제1 및 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기의 구성요소들은 상기의 용어들에 의해 한정되어서는 안 된다. 상기의 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하여 지칭하기 위해서 사용된다. 예를 들어, 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
또한 실시예들에 나타나는 구성요소들은 서로 다른 특징적인 기능들을 나타내기 위해 독립적으로 도시되는 것으로, 각 구성요소가 분리된 하드웨어나 하나의 소프트웨어 구성 단위로만 이루어짐을 의미하지 않는다. 즉, 각 구성요소는 설명의 편의상 각각의 구성요소로 나열된 것이다. 예를 들면, 구성요소들 중 적어도 두 개의 구성요소들이 하나의 구성요소로 합쳐질 수 있다. 또한, 하나의 구성요소가 복수의 구성요소들로 나뉠 수 있다. 이러한 각 구성요소의 통합된 실시예 및 분리된 실시예 또한 본질에서 벗어나지 않는 한 권리범위에 포함된다.
또한, 일부의 구성요소는 본질적인 기능을 수행하는 필수적인 구성요소는 아니고 단지 성능을 향상시키기 위한 선택적 구성요소일 수 있다. 실시예들은 실시예의 본질을 구현하는데 필수적인 구성부만을 포함하여 구현될 수 있고, 예를 들면, 단지 성능 향상을 위해 사용되는 구성요소와 같은, 선택적 구성요소가 제외된 구조 또한 권리 범위에 포함된다.
이하에서는, 기술분야에서 통상의 지식을 가진 자가 실시예들을 용이하게 실시할 수 있도록 하기 위하여, 첨부된 도면을 참조하여 실시예들을 상세히 설명하기로 한다. 실시예들을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 명세서의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
아래의 실시예들에서는 토러스 네트워크를 사용하여 분산 파일시스템을 구축할 경우에, 입출력의 지연 시간을 감소시킬 수 있는 동적 마스터 서버에 기반한 구조 및 마스터 서버 위치를 결정하는 방법들이 제안된다.
도 1a는 일 예에 따른 토러스 네트워크 기반의 분산 파일 시스템 및 스위치를 통하는 네트워크를 통해 클라이언트가 분산 파일 시스템에 연결된 구조를 나타낸다.
토러스 네트워크 기반의 분산 파일 시스템은 복수의 클라이언트들을 포함할 수 있다. 도 1a에서는, 복수의 클라이언트들로서 클라이언트(110-1) 내지 클라이언트(110-N)의 N개의 클라이언트들이 도시되었다.
복수의 클라이언트들은 네트워크 스위치(120)에 연결될 수 있고, 네트워크 스위치(120)를 통해 토러스 네트워크(100-1)에 접근할 수 있다.
토러스 네트워크(100-1)는 복수의 데이터 서버들 및 메타데이터 서버들을 포함할 수 있다. 도 1a에서는, 복수의 데이터 서버들로서 데이터 서버(130-1-1) 내지 데이터 서버(130-K-M)의 K*M개의 데이터 서버들이 도시되었다. 또한, 도 1a에서는, 복수의 메타데이터 서버들로서 메타데이터 서버(140-1) 내지 메타데이터 서버(140-P)의 P개의 메타데이터 서버들이 도시되었다.
분산 파일 시스템을 구성하는 데이터 서버들 및 메타데이터 서버들은 모두 토러스 네트워크(100-1)로서 구성될 수 있다. 토러스 네트워크(100-1)에 연결된 분산 파일 시스템의 서버들 및 네트워크 스위치(120)에 연결된 클라이언트들 간의 연결을 위해, 일부의 분산 파일 시스템 서버들은 스위치(120)에 연결될 수 있다. 도 1a에서는, 데이터 서버(130-1-1) 내지 데이터 서버(130-1-M)가 네트워크 네트워크 스위치(120)에 연결되어 있고, 메타데이터 서버(140-1)가 네트워크 스위치에 연결되어 있다.
데이터 서버는 다수의 파일 시스템의 데이터를 저장하는 다수의 디스크들을 가질 수 있다. 또한, 메타데이터 서버는 파일 시스템의 메타데이터 정보를 저장하는 다수의 디스크들을 가질 수 있다.
도 1b는 일 예에 따른 토러스 네트워크 상에 클라이언트 및 분산 파일시스템이 모두 연결된 구조를 나타낸다.
도 1b에서는, 복수의 데이터 서버들로서 데이터 서버(170-1-1) 내지 데이터 서버(170-K-M)의 K*M개의 데이터 서버들이 도시되었다. 또한, 또한, 도 1a에서는, 복수의 메타데이터 서버들로서 메타데이터 서버(180-1) 내지 메타데이터 서버(180-P)의 P개의 메타데이터 서버들이 도시되었다.
데이터 서버는 다수의 파일 시스템의 데이터를 저장하는 다수의 디스크들을 가질 수 있다. 또한, 메타데이터 서버는 파일 시스템의 메타데이터 정보를 저장하는 다수의 디스크들을 가질 수 있다.
도 1b의 토러스 네트워크(100-2)에서는, 클라이언트가 토러스 네트워크(100-2)의 외부에 별도로 존재하지 않고, 토러스 네트워크(100-2)의 내부에 존재할 수 있다. 클라이언트가 토러스 네트워크(100-2)의 외부에 존재하지 않기 때문에 클라이언트, 데이터 서버 및 메타데이터 서버 간의 네트워크 스위치가 존재하지 않을 수 있다.
토러스 네트워크(100-2)의 내부의 각 노드는 클라이언트의 역할 및 데이터 서버의 역할을 함께 하거나, 클라이언트의 역할 및 메타데이터 서버의 역할을 함께할 수도 있다. 또는, 각 노드는 여러 역할들을 함께하지 않고 단일한 역할을 할 수도 있다.
도 1b에서 도시된 것과 같이, 클라이언트 또한 분산 파일 시스템을 구성하는 데이터 서버 및 메타데이터 서버와 함께 토러스 네트워크(100-2) 내부에 위치될 수 있다.
도 1a의 토러스 네트워크(100-1) 및 도 1b의 토러스 네트워크(100-2) 간의 차이는 클라이언트들이 존재하는 위치이다. 말하자면, 클라이언트들이 토러스 네트워크의 내부 또는 외부 중 어디에 위치하는가에 따라서 토러스 네트워크는 도 1a의 토러스 네트워크(100-1) 및 도 1b의 토러스 네트워크(100-2) 중 하나로 구분될 수 있다.
네트워크 스위치 및 토러스 네트워크는 이더넷 및 인피니밴드 등 메시지 송수신을 가능하게 하는 다양한 네트워크 프로토콜들을 모두 지원할 수 있다. 토러스 네트워크(100-1) 및 토러스 네트워크(100-2)는 네트워크의 구성에 따라 여러 가지의 형태들을 가질 수 있다.
도 1a의 토러스 네트워크(100-1) 및 도 1b의 토러스 네트워크(100-2)의 양자에서, 클라이언트는 표준화된 파일 시스템 인터페이스 또는 전용의 파일 시스템 인터페이스를 사용하여 분산 파일 시스템의 파일 연산 서비스를 제공받을 수 있다. 이 때, 메타데이터 관련 서비스는 메타데이터 서버를 통해 처리될 수 있고, 파일을 독출(read) 및/또는 기입(write)하는 입출력 서비스는 데이터 서버를 통해 처리될 수 있다.
도 2a는 일 예에 따른 복제 방식을 통한 분산 파일 시스템의 데이터 저장을 나타낸다.
도 2a에서는, 복제(replication) 방식이 사용된 경우에서의 파일의 저장 상태가 도시되었다.
파일은 복수의 청크들로 분할될 수 있다. 청크의 크기는 일정할 수 있다.
각 청크는 서로 다른 데이터 서버들에 중복되어 저장될 수 있다. 중복을 통해 각 청크는 분산되어 저장될 수 있다.
도 2a에서, 파일은 N개의 청크들로 분할되었고, 각 청크는 4개의 데이터 서버들 중 3개의 데이터 서버들에 중복되어 저장되었다.
데이터 서버가 다수의 디스크들을 가진 경우, 데이터 서버가 다수의 디스크들을 가지고 있다는 점을 고려하여 청크는 다수의 디스크들 간에 고르게 저장될 수 있다. 고른 저장을 통해, 하나의 디스크에 부하가 집중되는 것이 방지될 수 있다.
하나의 데이터 서버 또는 하나의 디스크에 결함(failure) 등이 발생한 경우에도, 다른 데이터 서버 또는 다른 디스크에 저장된 동일한 청크가 사용될 수 있다. 데이터의 중복이 많아질수록 데이터가 유실될 위험성은 감소된다. 반면, 데이터의 중복이 많아질수록 데이터가 디스크를 많이 차지하게 될 수 있고, 저장 효율성이 감소할 수 있다.
도 2b는 일 예에 따른 소거 코딩 방식을 통한 분산 파일 시스템의 데이터 저장을 나타낸다.
도 2a에서는, 소거 코딩(erasure coding) 방식이 사용된 경우에서의 파일의 저장 상태가 도시되었다.
파일은 복수의 스트라이프들로 분할될 수 있다. 각 스트라이프는 복수의 데이터 유닛들로 분할될 수 있다. 스트라이프의 크기는 일정할 수 있다. 또한, 데이터 유닛의 크기는 일정할 수 있다.
도 2b에서, 파일은 N개의 스트라이프들로 분할되었고, 각 스트라이프는 4개의 데이터 유닛들로 분할되었다.
소거 코딩 방식에 의해, 스트라이프의 인코딩을 통해 패리티 유닛들이 생성될 수 있다.
도 2b에서, 스트라이프의 인코딩을 통해 2개의 패리티 유닛들이 생성되었다.
말하자면, 단일한 스트라이프에 대한 인코딩을 통해 스트라이프 데이터로서 m개의 데이터 유닛들 및 l개의 패리티 유닛들이 생성될 수 있다. 데이터 유닛인지 패리티 유닛인지는 상관없이 m개의 유닛들만으로 원본의 스트라이프가 복원될 수 있다.
복수의 데이터 유닛들 및 복수의 패리티 유닛들은 복수의 데이터 서버들에 분산되어 저장될 수 있다.
하나의 데이터 서버 또는 하나의 디스크에 결함(failure) 등이 발생한 경우에도, 다른 데이터 서버 또는 다른 디스크에 저장된 유닛들을 통해 원본의 스트라이프가 복원될 수 있다.
도 2a 및 도 2b를 참조하여 설명된 것과 같이, 분산 파일 시스템에서는 데이터 서버 또는 디스크의 결함으로부터 데이터의 유실을 방지하기 위해 복제 방식 또는 소거 코딩 방식이 지원된다. 이러한 내결함성(fault-tolerance)의 지원을 위해, 파일의 데이터는 단일한 데이터 서버로 전송되거나, 단일한 데이터 서버에서 저장되지 않고, 다수의 데이터 서버들로 전송되고, 다수의 데이터 서버들에서 저장되어야 할 수 있다.
클라이언트의 데이터를 데이터 서버로 전송하는데 사용되는 일반적인 데이터 입출력 구조의 2가지 예가 아래에서 설명된다.
도 3a는 일 예에 따른 클라이언트 중심 데이터 입출력 구조에서 복제 방식이 적용될 경우의 데이터 기입을 나타낸다.
클라이언트 중심 데이터 입출력 구조에서는, 기입 요청에 대하여 클라이언트가 다수의 데이터 서버들로 직접 데이터를 전송할 수 있다.
도 3b는 일 예에 따른 데이터 서버 중심 데이터 입출력 구조에서 복제 방식이 적용될 경우의 데이터 기입을 나타낸다.
데이터 서버 중심 데이터 입출력 구조에서는, 기입 요청에 대하여 클라이언트는 데이터를 저장할 첫 번째의 데이터 서버로 데이터를 전송하고, 데이터를 수신한 첫 번째의 데이터 서버가 나머지의 데이터 서버들로 데이터를 전송할 수 있다.
클라이언트 중심 데이터 입출력 구조 및 데이터 서버 중심 데이터 입출력 구조의 양자 모두에서, 독출 요청에 대하여 클라이언트는 데이터 서버들 중 하나의 데이터 서버로부터 데이터를 독출할 수 있다. 따라서, 데이터의 독출에 있어서는 클라이언트 중심 데이터 입출력 구조 및 데이터 서버 중심 데이터 입출력 구조 간의 차이가 없을 수 있다.
도 4a는 일 예에 따른 클라이언트 중심 입출력 구조에서 소거 코딩을 통한 데이터 쓰기를 나타낸다.
클라이언트 중심 데이터 입출력 구조에서는, 소거 코딩을 통해 기입 요청을 처리함에 있어서, 클라이언트는 데이터에 대한 인코딩을 수행함으로써 데이터 유닛들 및 패리티 유닛을 생성할 수 있다. 또한, 클라이언트는 생성된 데이터 유닛들 및 패리티 유닛을 복수의 데이터 서버들에 분산하여 저장할 수 있다.
도 4b는 일 예에 따른 데이터 서버 중심 입출력 구조에서 소거 코딩을 통한 데이터 쓰기를 나타낸다.
데이터 서버 중심 데이터 입출력 구조에서는, 기입 요청에 대하여 클라이언트는 데이터를 저장할 첫 번째의 데이터 서버로 데이터를 전송할 수 있다. 데이터를 수신한 첫 번째의 데이터 서버는 데이터에 대한 인코딩을 수행함으로써 데이터 유닛들 및 패리티를 생성할 수 있다. 첫 번째의 데이터 서버는 생성된 데이터 유닛들 및 패리티 유닛을 나머지의 데이터 서버들로 각각 전송할 수 있다. 첫 번째의 데이터 서버 및 나머지의 데이터 서버들을 포함한 복수의 데이터 서버들은 유닛들을 각각 저장할 수 있다.
클라이언트 중심 입출력 구조 및 데이터 서버 중심 입출력 구조에서, 독출 요청에 대한 원본의 데이터를 생성하기 위해서는 하나의 스트라이프에 포함된 데이터 유닛의 개수만큼의 스트라이프 유닛들이 데이터 서버들로부터 독출되어야 할 수 있다.
기입 요청에 대한 처리에 있어서는, 데이터 서버에 대한 데이터 전송의 측면에 있어서 복제 방식 및 소거 코딩 방식 간에 큰 차이가 없을 수 있다. 반면, 전술된 것과 같이 독출 요청에 대한 처리에 있어서는, 데이터 서버에 대한 데이터 전송의 측면에 있어서 복제 방식 및 소거 코딩 방식 간에 확연한 차이가 있을 수 있다 말하자면, 독출 요청의 처리에 있어서, 복제 방식에서는 하나의 데이터 서버의 데이터만이 요구되는 반면, 소거 코딩 방식에서는 기본적으로 데이터 유닛들의 개수만큼의 데이터 서버들로부터 데이터가 전송될 것이 요구될 수 있다.
즉, 소거 코딩을 지원하는 분산 파일 시스템에서는, 소거 코딩의 특성 상 독출 및 기입 처리에 있어서 다수의 데이터 서버들에 대한 데이터의 전송이 요구될 수 밖에 없을 수 있다. 소거 코딩의 특징에 따라, 토러스 네트워크는 다른 네트워크에 비해 다수의 데이터 서버들 간의 데이터의 전송을 요구할 수 있다. 이러한 요구에 의해 토러스 네트워크의 지연 시간의 단점이 더 부각될 수 있다.
도 5a는 일 예에 따른 4x4x4의 3차원 토러스 네트워크의 구축을 나타낸다.
도 5a에서, 원은 토러스 네트워크의 노드를 나타낸다. 점선은 노드들 간의 네트워크 연결을 나타낼 수 있다.
도 5a에서는 4x4x4의 3차원 토러스 네트워크의 구성이 도시되었다. 도 5a에서는 표현되어 있지 않지만, 토러스 연결 방식은 가장 자리의 노드들은 각각 반대 편의 가장 자리의 노드들과 연결될 수 있다. 따라서, 실제로는 가장 자리 노드가 존재하지 않으며, 각 노드는 상대적인 위지를 가질 수 있다.
도 5b는 일 예에 따른 5x5의 2차원 토러스 네트워크의 구축을 나타낸다.
도 5b에서는 5x5의 2차원 토러스 네트워크의 구성이 도시되었다. 도 5a에서와는 달리, 도 5b에서는 가장 자리 노드의 연결이 표현되었다.
도 5b에서, 각 노드는 4개의 네트워크 포트들을 통해 자신과 인접한 노드들과 연결되었다. 토러스 네트워크의 노드들까지 직접적으로 연결되는 특성에 따라서, 2차원 토러스를 구성하기 위해서는 각 노드가 4개의 물리적인 네트워크 포트를 가지고 있어야 한다. 또한, 3차원 토러스를 구성하기 위해서는 각 노드가 6개의 물리적인 네트워크 포트를 가지고 있어야 한다.
토러스를 구성하는 각 노드는 물리적으로 복수 개의 네트워크 포트들을 가지고 있으며, 각 노드는 복수의 네트워크 포트들을 이용하여 동시에 데이터를 전송할 수 있다.
예를 들면, 연속적으로 연결된 데이터 서버들로 데이터가 전송되는 경우, 데이터가 각 데이터 서버에 개별적으로 전송되는 것이 아니라, 데이터가 연속된 데이터 서버들을 통해 차례대로 전송되는 전파(propagation) 전송 방식이 사용될 수 있다.
도 6는 일 예에 따른 토러스 네트워크 상의 전파 전송 방식을 나타낸다.
3개의 데이터는 3개의 수신 서버들로 각각 전송되어야 할 수 있다. 송신 서버는 전체의 데이터인 제1 전송 데이터를 3개의 수신 서버들 중 송신 서버와 가장 가까운 제1 수신 서버로 전송할 수 있다. 제1 전송 데이터를 수신하면, 제1 서버는 제1 전송 데이터 중 자신이 저장해야 하는 제1 저장 데이터를 저장할 수 있으며, 제1 저장 데이터에서 제1 저장 데이터를 제외한 나머지의 데이터인 제2 전송 데이터를 제2 수신 서버로 전송할 수 있다. 제2 전송 데이터를 수신하면, 제2 수신 서버는 자신이 저장해야 하는 제2 저장 데이터를 저장할 수 있으며, 제23 전송 데이터에서 제2 저장 데이터를 제외한 나머지의 데이터인 제3 전송 데이터를 제3 수신 서버로 전송할 수 있다. 제3 전송 데이터를 수신하면, 제3 수신 서버는 제3 전송 데이터의 제3 저장 데이터를 저장할 수 있다.
전파 전송 방식은 전술된 것과 같은 전송 방식을 의미할 수 있다. 전파 전송 방식은 모든 데이터 서버들이 서로 직접적으로 연결되어 있지는 않지만, 최종의 데이터 서버로의 경로 상에 다른 데이터 서버가 위치한 경우에도 유효한 방식일 수 있다.
전술된 전파 전송 방식 및 전술된 토러스 네트워크의 다중 네트워크 포트들을 이용한 병렬 전송 특성을 이용하면 데이터 서버 중심 입출력 구조에서 입출력을 담당하는 중심 노드의 위치가 결정될 수 있고, 결정된 중심 노드의 위치에 따라서 데이터 서버의 배치가 결정될 수 있다.
네트워크 시스템의 장애 및 운영 등의 이유로 데이터 서버의 배치가 변경될 수 있다. 마스터 서버는 데이터의 전송을 담당하는 중심 노드를 의미할 수 있다. 마스터 서버의 위치는 고정되지 않고, 동적으로 변경될 수 있다.
실시예의 동적 마스터 서버는 분산 파일 시스템의 노드에만 위치해야 하는 것은 아닐 수 있다. 동적 마스터 서버의 위치는 입출력시의 지연 시간이 최소화 되는 지점으로 정해질 수 있다. 만약 이러한 위치가 클라이언트의 위치라면 클라이언트가 마스터 서버가 될 수도 있다.
도 7는 일 예에 따른 네 개의 네트워크 포트를 가진 마스터 서버가 직렬로 연결된 데이터 서버로 전파(propagation) 전송 방식으로 데이터를 전송하는 것을 나타낸다.
2차원 토러스 네트워크에서 마스터 서버는 4개의 네트워크 포트들을 가질 수 있다.
각 포트에 대하여, 직렬 연결된 2개씩의 데이터 서버들이 존재할 수 있다.
마스터 서버는 4개의 네트워크 포트를 통해 병렬적으로 데이터를 전송할 수 있다. 4개의 네트워크 포트의 각각과 직렬 연결된 데이터 서버들은 전파 방식을 통하여 데이터를 전송할 수 있다.
하나의 입출력 요청이 완료되기 위해서는, 마스터 서버가 전송한 모든 데이터가 각각의 목적지에 모두 도착해야 할 수 있다. 따라서, 도 7의 네트워크에서는 4개의 직렬 연결들 중 가장 마지막에 처리되는 데이터의 전송에 따라 입출력 요청의 지연 시간이 결정될 수 있다.
이러한 토러스 네트워크 기반의 분산 파일시스템의 입출력 특성을 고려하여, 실시예에서는 하나의 입출력 요청을 구성하는 개별적인 직렬 연결의 지연 시간이 최소가 되는 위치가 마스터 서버의 위치로서 결정될 수 있다.
모든 데이터 서버가 네트워크 포트들의 개수만큼의 직렬 연결들 상에 모두 존재한다면, 입출력 요청에 소요되는 지연 시간은 가장 긴 지연 시간을 가지는 직렬 연결에 의해서 결정될 수 있다. 따라서 입출력의 지연 시간을 최소화 할 수 있는 마스터 서버의 위치는 직렬 연결들의 데이터 서버들 중 가장 먼 데이터 서버 및 마스터 서버 간의 네트워크 거리를 최소로 하는 위치일 것이다.
따라서, 입출력의 지연 시간을 최소화하기 위해 마스터 서버는 직렬 연결들 중 사방으로 가장 멀리 떨어져 있는 노드들의 가운데에 위치할 수 있다.
도 8는 일 예에 따른 절대 좌표 상에 표현된 토러스 네트워크 상의 세 노드들 및 마스터 노드를 나타낸다.
도 8에서는, 2차원 토러스 연결이 좌표로서 표시되었다.
데이터 서버들 A, B, C가 존재할 때, 3개의 노드들의 중심의 점의 좌표 값들은 (4, 2)일 수 있다. 이러한 좌표 값들에서, x 좌표 값 및 y 좌표 값은 독립적으로 계산될 수 있다. 말하자면, 중심의 점의 x 좌표 값 및 y 좌표 값은 세 노드들 A, B, C의 x 좌표 값들 및 y 좌표 값들의 각각에 기반하여 독립적으로 계산될 수 있다.
중심의 점의 x 좌표 값은 세 노드들의 x 좌표 값들 중 최대 값 및 최소 값의 평균 값일 수 있다. 중심의 점의 y 좌표 값은 세 노드들의 y 좌표 값들 중 최대 값 및 최소 값의 평균 값일 수 있다.
마스터 노드의 x 좌표 값은 아래의 수식 1과 같이 계산될 수 있다.
마스터 노드의 x 좌표 값은 아래의 수식 2와 같이 계산될 수 있다.
[수식 1]
마스터 노드의 x 좌표 값 = (노드 C의 x 좌표 값 + 노드 A의 x 좌표 값) / 2 = (7 + 1) / 2 = 4
[수식 2]
마스터 노드의 y 좌표 값 = (노드 B의 y 좌표 값 + 노드 A의 y 좌표 값) / 2 = (3 + 1) / 2 = 2
결정된 마스터 서버의 위치에 따르면, 마스터 서버는 3개의 데이터 서버들 중 데이터 서버 A와 가장 멀리 떨어져 있으며, 마스터 서버 및 데이터 서버 간의 거리는 4일 수 있다. 여기에서, 노드들 간의 거리는 노드들 사이에 있는 다른 노드들의 개수 + 1일 수 있다.
토러스 네트워크에서 좌표 축의 양 끝에 위치한 노드들은 서로 연결될 수 있다. 예를 들면, 좌표 값이 (0, 0)인 노드 및 좌표 값이 (0, 7)인 노드는 서로 연결될 수 있다. 전술된 수식 1 및 수식 2에 따른 계산 방법은 좌표 축의 양 말단들의 노드들이 서로 연결되지 않은 경우에 유효할 수 있다. 따라서, 좌표 축의 양 말단들의 노드들이 서로 연결된 토러스 네트워크에서는 전술된 수식 1 및 수식 2에 의해 계산된 절대 좌표는 마스터 서버의 위치로서 적용되지 못할 수 있다. 토러스 네트워크에서 마스터 노드의 위치를 결정하기 위해서는 토러스 네트워크의 가장 자리 노드들 간의 연결이 고려되어야 할 수 있다.
도 9는 일 예에 따른 토러스 네트워크의 연결 고려한 세 노드들과 가장 가까운 마스터 노드의 결정을 나타낸다.
토러스 네트워크의 연결을 고려하였을 때의 마스터 노드의 위치를 나타낸다. 새롭게 결정된 마스터 서버의 위치의 좌표 값들은 (0, 2)일 수 있다. 이러한 경우, 마스터 서버 및 A 노드 간의 거리는 2이고, 마스터 서버 및 B 노드 간의 거리는 3이고, 마스터 서버 및 노드 간의 거리는 1일 수 있다.
도 8에서 전술된 것과 같이, 토러스 네트워크의 연결을 고려하지 않은 경우 (4, 2)의 좌표 값들의 제1 위치가 결정될 수 있다. 마스터 서버의 위치가 제1 위치일 때, 마스터 서버 및 가장 먼 데이터 서버 A 간의 거리는 4일 수 있다. 반면, 토러스 네트워크의 연결을 고려한 경우 (0, 2)의 좌표 값들의 제2 위치가 결정될 수 있다. 마스터 서버의 위치가 제2 위치일 때, 마스터 서버 및 가장 먼 데이터 서버의 거리는 3일 수 있다. 말하자면, 마스터 서버의 위치가 토러스 네트워크의 연결의 고려 하에 결정됨에 따라 마스터 서버 및 가장 먼 데이터 서버 간의 거리가 더 짧아질 수 있다.
도 8에서 도시된 것과 같이, 데이터 서버의 위치를 표시하는 좌표를 기준 좌표라고 할 때, x 좌표에 대해서 마스터 서버의 x 좌표 값을 구하는 방법이 아래의 도 10a 내지 도 10e를 참조하여 설명된다. 아래에서, 데이터 서버는 노드로 명명된다.
도 10a는 일 예에 따른 세 노드들의 x 축 상의 위치들을 나타낸다.
도 10a에서는 3개의 노드들이 x 축 상에 도시되었다.
도 10b는 일 예에 따른 세 노드들 간의 단 방향으로 측정된 거리를 나타낸다.
도 10b에서는 3개의 노드들 중 2개의 노드들 간의 거리가 도시되었다. 2개의 노드들 간의 거리는 x 좌표 값이 증가하는 방향으로 측정되었다.
도 10b에서, 화살표에 인접한 숫자는 2개의 노드들 간의 거리를 나타낸다. 여기에서, 거리는 토러스 네트워크의 연결을 고려하여 결정될 수 있다.
노드 A 및 노드 B 간의 거리는 5일 수 있다. 노드 B 및 노드 C 간의 거리는 1일 수 있다. 노드 C 및 노드 A 간의 거리는 2일 수 있다.
도 10c는 일 예에 따른 세 노드들 간의 단 방향의 거리들 중 가장 큰 값을 갖는 거리가 제거된 것을 나타낸다.
도 10b에서 도시된 거리들 중 가장 큰 거리는 노드 A 및 노드 B 간의 거리일 수 있다. 도 10c에서는 가장 큰 거리인 노드 A 및 노드 B 간의 거리가 제거되었다.
도 10d는 일 예에 따른 노드 B 가 시작 점으로 재배치된 경우의 노드들을 나타낸다.
도 10c에 따르면, 노드들 간의 연결이 시작되는 노드는 노드 B일 수 있다. 도 10d에서는 노드들 간의 연결이 시작되는 노드 B를 기준으로 노드들이 재배치되었다.
도 10e는 일 예에 따른 노드 B가 0의 좌표 값을 갖는 상대 좌표 상에서의 세 노드들 및 마스터 서버를 나타낸다.
도 10e에서는, 재배치된 노드들이 x 축 상에 표시되었다. 최소의 시작점인 노드 B는 좌표 "0"에 위치할 수 있다. 노드들 간의 거리에 따라서, 다른 노드들인 노드 A 및 노드 B도 좌표 축 상에 배치될 수 있다.
도 10e에서의 노드들에 대한 좌표는 상대 좌표일 수 있다.
상대 좌표는 3개의 노드들이 가장 근접할 경우의 좌표일 수 있다. 상대 좌표에 따라서 전술된 방식으로 마스터 서버의 위치를 계산할 경우 아래의 수식 3이 사용될 수 있다.
[수식 3]
상대 좌표에서의 마스터 노드의 x 좌표 값 = (3 + 0) / 2 = 1.5 ≒ 2
토러스 네트워크의 좌표에서는, 정수의 좌표 값만이 허용될 수 있다. 따라서, 계산된 x 좌표 값은 반올림될 수 있다.
상대 좌표 상의 마스터 서버의 x 좌표는 아래의 수식 4와 같이 기준 좌표로 변경될 수 있다.
[수식 4]
기준 좌표에서의 마스터 서버의 좌표 = (2 + (8 - 2)) mod 8 = 0
수식 4에서, 8은 전체의 좌표 값들의 개수일 수 있다. 앞의 2는 마스터 서버의 상대 좌표 상의 좌표 값일 수 있다. 뒤의 2는 기준 좌표 상에서 노드 B의 좌표를 "0"으로 이동시키기 위한 양수 방향의 쉬프트 값일 수 있다.
도 10a 및 도 10e를 참조하여 전술된 과정을 통해 x 축 및 y 축의 각각에 대하여 마스터 서버의 위치가 결정될 수 있다.
도 11은 일 실시예에 따른 분산 파일 시스템 관리 장치의 구조도이다.
분산 파일 시스템 관리 장치(1100)는 부호화를 수행하는 범용의 컴퓨터 시스템일 수 있다.
분산 파일 시스템 관리 장치는 전술된 노드, 클라이언트, 데이터 서버 또는 메타데이터 서버에 대응할 수 있다.
도 11에서 도시된 바와 같이, 분산 파일 시스템 관리 장치(1100)는 버스(1190)를 통하여 서로 통신하는 적어도 하나의 프로세서(1110), 메모리(1130), 사용자 인터페이스(User Interface; UI) 입력 디바이스(1150), UI 출력 디바이스(1160) 및 저장소(1140)를 포함할 수 있다. 또한, 분산 파일 시스템 관리 장치(1100)는 네트워크(1199)에 연결되는 통신부(1120)를 더 포함할 수 있다.
프로세서(1110)는 중앙 처리 장치(Central Processing Unit; CPU), 메모리(1130) 또는 저장소(1140)에 저장된 프로세싱(processing) 명령어(instruction)들을 실행하는 반도체 장치일 수 있다.
메모리(1130) 및 저장소(1140)는 다양한 형태의 휘발성 또는 비휘발성 저장 매체일 수 있다. 예를 들면, 메모리는 롬(ROM)(1131) 및 램(RAM)(1132) 중 적어도 하나를 포함할 수 있다.
기록 매체는 부호화 장치(1100)의 동작을 위한 적어도 하나의 모듈을 저장할 수 있다. 메모리(1130)는 적어도 하나의 모듈을 저장할 수 있고, 적어도 하나의 프로세서(1110)에 의하여 실행되도록 구성될 수 있다.
일 실시예에 따르면, 프로세서(1110)에 의해 수행되는 기능, 동작 또는 단계의 적어도 일부는 프로그램 모듈들일 수 있으며, 외부의 장치 또는 시스템과 통신할 수 있다. 프로그램 모듈들은 운영 체제, 응용 프로그램 모듈 및 기타 프로그램 모듈의 형태로 분산 파일 시스템 관리 장치(1100)에 포함될 수 있다.
프로그램 모듈들은 물리적으로는 여러 가지 공지의 기억 장치 상에 저장될 수 있다. 또한, 이러한 프로그램 모듈 중 적어도 일부는 분산 파일 시스템 관리 장치(1100)와 통신 가능한 원격 기억 장치 에 저장될 수도 있다.
프로그램 모듈들은 일 실시예에 따른 기능 또는 동작을 수행하거나, 일 실시예에 따른 추상 데이터 유형을 구현하는 루틴(routine), 서브루틴(subroutine), 프로그램, 오브젝트(object), 컴포넌트(component) 및 데이터 구조(data structure) 등을 포괄할 수 있지만, 이에 제한되지는 않는다.
프로그램 모듈들은 프로세서(1110)에 의해 수행되는 명령어(instruction) 또는 코드(code)로 구성될 수 있다.
분산 파일 시스템 관리 장치(1100)의 데이터 또는 정보의 통신과 관련된 기능은 통신부(1120)를 통해 수행될 수 있다.
예를 들면, 프로세서(1110)는 데이터와 관련된 토러스 네트워크의 노드들을 식별할 수 있고, 노드들의 토러스 네트워크 상의 위치에 기반하여 마스터 서버의 상기 토러스 네트워크 상의 위치를 결정할 수 있다. 통신부(1120)는 결정된 위치의 노드에게 마스터 서버로 결정되었음을 통지할 수 있다.
도 12는 일 실시예에 따른 분산 파일 시스템의 관리 방법의 흐름도이다.
분산 파일 시스템은 메타데이터 서버들, 데이터 서버들 및 클라이언트들을 포함할 수 있다. 분산 파일 시스템은 토러스 네트워크 및/또는 스위치에 연결된 복수의 메타데이터 서버들을 포함할 수 있고, 토러스 네트워크에 연결된 복수의 데이터 서버들을 포함할 수 있다. 또한, 분산 파일 시스템은 네트워크 스위치를 통해 연결된 복수의 클라이언트들 및/또는 토러스 네트워크에 연결된 복수의 클라이언트들을 포함할 수 있다. 또한, 분산 파일 시스템은 클라이언트로부터 데이터를 수신하고, 수신된 데이터를 복수의 데이터 서버들로 병렬로 전송하는 마스터 서버를 포함할 수 있다. 마스터 서버는 복수일 수 있다.
여기에서, 마스터 서버의 위치는 마스터 서버가 담당하는 데이터에 관련된 데이터 서버들의 위치에 따라 동적으로 변경될 수 있다. 아래의 실시예에서, 노드는 데이터 서버를 나타낼 수 있다.
단계(1210)에서, 프로세서(1110)는 데이터와 관련된 토러스 네트워크의 노드들을 식별할 수 있다. 여기에서, 데이터와 관련된 노드들은 데이터를 저장하는 노드들, 데이터를 기입할 노드들 및/또는 데이터가 독출될 노드들일 수 있다.
단계(1220)에서, 프로세서(1110)는 노드들의 토러스 네트워크 상의 위치에 기반하여 마스터 서버의 토러스 네트워크 상의 위치를 결정할 수 있다.
마스터 서버는 데이터의 전송을 담당하는 중심 노드일 수 있다. 예를 들면, 마스터 서버는 전파 전송 방식으로 데이터를 전송할 수 있다.
마스터 서버의 위치는 데이터에 대한 입력 또는 출력의 지연 시간이 최소화되도록 결정될 수 있다.
마스터 서버는 토러스 네트워크의 데이터 서버, 메타 데이터 서버 또는 클라이언트일 수 있다. 분산 파일 시스템은 토러스 네트워크로 연결된 노드들을 포함할 수 있다.
마스터 서버의 위치는 마스터 서버 및 노드들 중 마스터 서버로부터 가장 멀리 떨어진 노드 간의 거리를 최소화하는 위치일 수 있다. 이러한 위치 결정 방법은 전술된 전파 전송 방식의 고려 하에 사용되는 것일 수 있다.
여기에서, 노드들 간의 거리는 노드들 사이에 존재하는 다른 노드의 개수에 의해 결정될 수 있다. 예를 들면, 마스터 서버 및 가장 멀리 떨어진 노드 간의 거리는 마스터 서버 및 가장 멀리 떨어진 노드 간의 경로 상에 존재하는 다른 노드의 개수에 기반하여 결정될 수 있다. 마스터 서버 및 가장 멀리 떨어진 노드 간의 거리는 상기의 경로 상에 존재하는 다른 노드의 개수에 1을 더한 것일 수 있다.
마스터 서버의 위치는 노드들 중 가장 멀리 떨어진 2개의 노드들의 가운데일 수 있다.
마스터 서버의 위치는 토러스 네트워크의 복수의 좌표 축들에 대한 좌표 값들로서 표현될 수 있다. 예를 들면, 3차원의 토러스 네트워크에 대해서, 마스터 서버의 위치는 좌표 값들 (x, y, z)로 표현될 수 있다.
마스터 서버의 위치를 계산함에 있어서, 위치를 구성하는 좌표 값들은 서로 간에 독립적으로 계산될 수 있다. 예를 들면, x 좌표의 좌표 값이 계산된 후, y 좌표의 좌표 값이 계산될 수 있고, 그 다음으로 z 좌표의 좌표 값이 계산될 수 있다. 좌표 값들은 병렬로 계산될 수 있다.
또한, 마스터 서버의 위치는 토러스 네트워크의 연결의 특징 및 전송의 특징을 고려하여 결정될 수 있다. 말하자면, 토러스 네트워크의 좌표 축 상의 양 말단들에 위치한 노드들은 서로 간에 연결될 수 있으며, 마스터 서버의 위치는 이러한 연결의 고려 하에 결정될 수 있다. 또한, 전술된 것처럼, 토러스 네트워크에서 데이터는 전파 전송 방식으로 전송될 수 있다. 마스터 서버의 위치는 전파 전송 방식의 특징을 고려하여 결정될 수 있다.
단계(1220)에 대해서, 도 13을 참조하여 더 상세하게 설명된다.
단계(1230)에서, 프로세서(1110)는 상기 토러스 네트워크의 상기 결정된 위치의 노드를 상기 마스터 서버로서 설정할 수 있다.
예를 들면, 단계(1230)는 결정된 위치의 노드에게 마스터 서버로 결정되었음을 통지하는 단계를 포함할 수 있다.
예를 들면, 단계들(1210 및 1220)는 분산 파일 시스템의 각 노드에 의해 수행될 수 있고, 자신이 마스터 서버임을 확인한 노드는 자신을 마스터 서버로서 설정할 수 있고, 이후 마스터 서버로서 동작할 수 있다.
예를 들면, 단계(1230)는 노드들 중 마스터 서버의 직렬 연결에서 벗어난 노드 내의 데이터를 직렬 연결 상의 노드로 이동할 수 있다. 전술된 것과 같이, 마스터 서버가 관리하는 데이터는 마스터 서버의 직렬 연결 상의 데이터 노드 내에 저장되어야 할 수 있다. 따라서, 마스터 서버가 결정된 후, 마스터 서버에 의해 관리되는 데이터를 저장하는 데이터 서버들 중 마스터 서버의 직렬 연결 상에 존재하지 않는 데이터 서버가 있으면, 상기의 데이터 서버 내의 데이터는 직렬 연결 상의 다른 데이터 서버로 이동되어야 할 수 있다.
도 13은 일 실시예에 따른 분산 파일 시스템의 마스터 서버의 위치 결정 방법의 흐름도이다.
단계(1310)에서, 프로세서(1110)는 데이터가 저장된 토러스 네트워크의 복수의 노드들의 복수의 좌표 값들을 갖는 제1 그룹을 생성할 수 있다.
이하에서, 그룹은 집합 또는 순서쌍을 나타낼 수 있다.
제1 그롭 S0은 아래의 수식 5와 같이 표현될 수 있다.
아래에서는, 노드들의 좌표들 중 x 좌표의 좌표 값들 x1 내지 xn이 예시되었다.
[수식 5]
n은 원소 또는 좌표 값의 개수를 나타낼 수 있다.
단계(1320)에서, 프로세서(1110)는 제1 그룹의 복수의 좌표 값들에 기반하여 2개의 좌표 값들 간의 거리들의 제2 그룹을 생성할 수 있다.
제1 그룹의 복수의 좌표 값들로부터 2개의 좌표 값들이 선택될 수 있다. 2개의 좌표 값들 간의 거리는 2개의 좌표 값들 중 작은 값으로부터 2개의 좌표 값들 중 큰 값으로의 거리일 수 있다. 말하자면, 거리는 2개의 좌표 값들에 대해서 좌표 값이 증가하는 방향으로의 거리일 수 있다.
제2 그룹 S1은 아래의 수식 6와 같이 표현될 수 있다.
[수식 6]
Figure pat00002
단계(1330)에서, 프로세서(1110)는 제2 그룹의 거리들 중 가장 큰 값을 거리를 선택할 수 있다. 프로세서(1110)는 제2 그룹의 원소들을 비교하여 가장 큰 값을 가지는 원소를 선택할 수 있다. 이하에서, 선택된 거리 또는 원소는
Figure pat00003
로 표시된다.
단계(1340)에서, 프로세서(1110)는 선택된 거리의 좌표 값들 중 큰 좌표 값 Xi+1이 처음의 원소이고, 선택된 거리의 좌표 값들 중 작은 좌표 값 Xi가 마지막의 원소가 되도록 상기 제1 집합의 원소들을 우측으로 쉬프트함으로써 제3 그룹을 생성할 수 있다.
쉬프트는 환형(circular) 이동을 나타낼 수 있다.
제3 그룹 S2는 아래의 수식 7과 같이 표현될 수 있다.
[수식 7]
Figure pat00004
말하자면, Xi+1은 S2의 첫 번째의 원소가 될 수 있고, Xi는 S2의 마지막의 원소가 될 수 있다. S0의 k 번째 원소는 S3에서 "(k + n - i) mod (n - 1)" 번째 원소가 될 수 있다.
단계(1350)에서, 프로세서(1110)는 큰 좌표 값 Xi+1이 0이 되도록, 제3 그룹의 좌표 값들을 좌표 축의 양의 방향으로 쉬프트된 값들로 변경함으로써 제4 그룹을 생성할 수 있다.
제4 그룹 S3은 아래의 수식 8과 같이 표현될 수 있다.
[수식 8]
Figure pat00005
여기에서, K는 축의 전체의 좌표들의 개수일 수 있다. 제3 그룹의 좌표 값들은 K-Xi+1 만큼 우측으로 환형 이동할 수 있고, 환형 이동으로 변경된 좌표 값들이 제4 그룹의 좌표 값들이 될 수 있다.
단계(1360) 및 단계(1370)에서, 프로세서(1110)는 제4 그룹에 기반하여 마스터 서버의 좌표 값을 결정할 수 있다.
단계(1360)에서, 프로세서(1110)는 제4 그룹에 기반하여 마스터 서버의 상대 좌표 값 Cr을 결정할 수 있다.
상대 좌표 값 Cr는 아래의 수식 9에 따라서 계산될 수 있다.
[수식 9]
Figure pat00006
상대 좌표 값 Cr은 제4 그룹의 가장 작은 좌표 값 및 제4 그룹의 가장 큰 좌표 값의 평균일 수 있다. 평균 값이 정수가 아닌 경우, 상대 좌표 값은 평균 값의 반올림일 수 있다.
단계(1370)에서, 프로세서(1110)는 상대 좌표 값에 기반하여 마스터 서버의 기준 좌표 값을 결정할 수 있다.
기준 좌표 값 C는 상대 좌표 값 Cr을 전술된 큰 좌표 값 xi+1만큼 좌표 축의 양의 방향으로 쉬프트된 값으로 변경함으로써 생성될 수 있다.
기준 좌표 값 C는 아래의 수식 10에 따라서 계산될 수 있다.
[수식 10]
Figure pat00007
기준 좌표 값 C가 계산되면, 기준 좌표 값 C가 기준 좌표 값을 요청한 대상에게 반환될 수 있다.
전술된 좌표 값들은 복수일 수 있다. 단계들(1310, 1320, 1330, 1340, 1350, 1360 및 1370)은 복수의 좌표 값들의 각 좌표 값에 대해 별개로 수행될 수 있다.
말하자면, 토러스 네트워크가 2차원인 경우, 단계들(1310, 1320, 1330, 1340, 1350, 1360 및 1370)은 x 좌표 축 및 y 좌표 축에 대해서 수행될 수 있다. 이 경우, 노드들의 x 좌표 값들이 마스터 서버의 x 좌표 값을 계산하기 위해 사용될 수 있고, 노드들의 y 좌표 값들이 마스터 서버의 y 좌표 값을 계산하기 위해 사용될 수 있다. 또한, 토러스 네트워크가 3차원인 경우, 단계들(1310, 1320, 1330, 1340, 1350, 1360 및 1370)은 x 좌표 축, y 좌표 축 및 z 좌표 축에 대해서 수행될 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
1100: 분산 파일 시스템 관리 장치
1110: 프로세서
1120: 통신부
1130: 메모리
1140: 저장소

Claims (20)

  1. 데이터와 관련된 토러스 네트워크의 노드들을 식별하는 단계;
    상기 노드들의 상기 토러스 네트워크 상의 위치에 기반하여 마스터 서버의 상기 토러스 네트워크 상의 위치를 결정하는 단계; 및
    상기 토러스 네트워크의 상기 결정된 위치의 노드를 상기 마스터 서버로서 설정하는 단계를 포함하는 분산 파일 시스템의 관리 방법.
  2. 제1항에 있어서,
    상기 마스터 서버는 상기 데이터의 전송을 담당하는 중심 노드인 분산 파일 시스템의 관리 방법.
  3. 제1항에 있어서,
    상기 위치는 상기 데이터에 대한 입력 또는 출력의 지연 시간이 최소화되도록 결정되는 분산 파일 시스템의 관리 방법.
  4. 제1항에 있어서,
    상기 마스터 서버는 전파 전송 방식으로 상기 데이터를 전송하는 분산 파일 시스템의 관리 방법.
  5. 제1항에 있어서,
    상기 마스터 서버는 상기 토러스 네트워크의 데이터 서버, 메타 데이터 서버 또는 클라이언트인 분산 파일 시스템의 관리 방법.
  6. 제1항에 있어서,
    상기 마스터 서버의 위치는 상기 마스터 서버 및 상기 노드들 중 상기 마스터 서버로부터 가장 멀리 떨어진 노드 간의 거리를 최소화하는 위치인 분산 파일 시스템의 관리 방법.
  7. 제6항에 있어서,
    상기 거리는 상기 마스터 서버 및 상기 가장 멀리 떨어진 노드 간의 경로 상에 존재하는 다른 노드의 개수에 의해 결정되는 분산 파일 시스템의 관리 방법.
  8. 제1항에 있어서,
    상기 마스터 서버의 위치는 상기 노드들 중 가장 멀리 떨어진 2개의 노드들의 가운데인 분산 파일 시스템의 관리 방법.
  9. 제1항에 있어서,
    상기 위치는 상기 토러스 네트워크의 복수의 좌표 축들에 대한 좌표 값들로서 표현되고,
    상기 좌표 값들은 서로 간에 독립적으로 계산되는 분산 파일 시스템의 관리 방법.
  10. 제1항에 있어서,
    상기 위치는 상기 토러스 네트워크 연결 특징을 고려하여 결정되는 분산 파일 시스템의 관리 방법.
  11. 제1항에 있어서,
    상기 설정하는 단계는,
    상기 결정된 위치의 노드에게 상기 마스터 서버로 결정되었음을 통지하는 단계를 포함하는 분산 파일 시스템의 관리 방법.
  12. 제1항에 있어서,
    상기 설정하는 단계는,
    상기 노드들 중 상기 마스터 서버의 직렬 연결에서 벗어난 노드 내의 데이터를 상기 직렬 연결 상의 노드로 이동하는 단계
    를 포함하는 분산 파일 시스템의 관리 방법.
  13. 제1항에 있어서,
    상기 위치를 결정하는 단계는,
    데이터가 저장된 토러스 네트워크의 복수의 노드들의 복수의 좌표 값들을 갖는 제1 그룹을 생성하는 단계;
    상기 복수의 좌표 값들에 기반하여 2개의 좌표 값들 간의 거리들의 제2 그룹을 생성하는 단계;
    상기 거리들 중 가장 큰 값을 갖는 거리를 선택하는 단계;
    상기 선택된 거리의 좌표 값들 중 큰 좌표 값이 처음의 원소이고, 선택된 거리의 좌표 값들 중 작은 좌표 값이 마지막의 원소가 되도록 상기 제1 집합의 원소들을 우측으로 쉬프트함으로써 제3 그룹을 생성하는 단계;
    상기 큰 좌표 값이 0이 되도록, 상기 제3 그룹의 좌표 값들을 좌표 축의 양의 방향으로 쉬프트된 값들로 변경함으로써 제4 그룹을 생성하는 단계; 및
    상기 제4 그룹에 기반하여 마스터 서버의 좌표 값을 결정하는 단계
    를 포함하는 분산 파일 시스템의 관리 방법.
  14. 제13항에 있어서,
    상기 좌표 값들은 복수이고,
    상기 위치를 결정하는 단계는 상기 복수의 좌표 값들의 각 좌표 값에 대해 수행되는 분산 파일 시스템의 관리 방법.
  15. 데이터와 관련된 토러스 네트워크의 노드들을 식별하고, 상기 노드들의 상기 토러스 네트워크 상의 위치에 기반하여 마스터 서버의 상기 토러스 네트워크 상의 위치를 결정하는 프로세서; 및
    상기 결정된 위치의 노드에게 상기 마스터 서버로 결정되었음을 통지하는 통신부를 포함하는 분산 파일 시스템 관리 장치.
  16. 데이터가 저장된 토러스 네트워크의 복수의 노드들의 복수의 좌표 값들을 갖는 제1 그룹을 생성하는 단계;
    상기 복수의 좌표 값들에 기반하여 2개의 좌표 값들 간의 거리들의 제2 그룹을 생성하는 단계;
    상기 거리들 중 가장 큰 값을 갖는 거리를 선택하는 단계;
    상기 선택된 거리의 좌표 값들 중 큰 좌표 값이 처음의 원소이고, 선택된 거리의 좌표 값들 중 작은 좌표 값이 마지막의 원소가 되도록 상기 제1 집합의 원소들을 우측으로 쉬프트함으로써 제3 그룹을 생성하는 단계;
    상기 큰 좌표 값이 0이 되도록, 상기 제3 그룹의 좌표 값들을 좌표 축의 양의 방향으로 쉬프트된 값들로 변경함으로써 제4 그룹을 생성하는 단계; 및
    상기 제4 그룹에 기반하여 마스터 서버의 좌표 값을 결정하는 단계
    를 포함하는 분산 파일 시스템의 마스터 서버의 위치 결정 방법.
  17. 제16항에 있어서,
    상기 결정하는 단계는,
    상기 제4 그룹에 기반하여 상기 마스터 서버의 상대 좌표 값을 결정하는 단계; 및
    상기 상대 좌표 값에 기반하여 상기 마스터 서버의 기준 좌표 값을 결정하는 단계
    를 포함하는 분산 파일 시스템의 마스터 서버의 위치 결정 방법.
  18. 제17항에 있어서,
    상기 상대 좌표 값은 상기 제4 그룹의 가장 작은 좌표 값 및 상기 제4 그룹의 가장 큰 좌표 값의 평균 값인 분산 파일 시스템의 마스터 서버의 위치 결정 방법.
  19. 제18항에 있어서,
    상기 평균 값이 정수가 아닌 경우, 상기 상대 좌표 값은 상기 평균 값의 반올림인 분산 파일 시스템의 마스터 서버의 위치 결정 방법.
  20. 제18항에 있어서,
    상기 기준 좌표 값은 상기 상대 좌표 값을 상기 선택된 거리의 좌표 값들 중 상기 큰 좌표 값만큼 상기 좌표 축의 양의 방향으로 쉬프트된 값으로 변경함으로써 생성되는 분산 파일 시스템의 마스터 서버의 위치 결정 방법.
KR1020170012672A 2017-01-26 2017-01-26 토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 운영 방법 KR102610984B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020170012672A KR102610984B1 (ko) 2017-01-26 2017-01-26 토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 운영 방법
US15/663,477 US10749709B2 (en) 2017-01-26 2017-07-28 Distributed file system using torus network and method for operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170012672A KR102610984B1 (ko) 2017-01-26 2017-01-26 토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 운영 방법

Publications (2)

Publication Number Publication Date
KR20180088076A true KR20180088076A (ko) 2018-08-03
KR102610984B1 KR102610984B1 (ko) 2023-12-08

Family

ID=62907248

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170012672A KR102610984B1 (ko) 2017-01-26 2017-01-26 토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 운영 방법

Country Status (2)

Country Link
US (1) US10749709B2 (ko)
KR (1) KR102610984B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200057409A (ko) * 2018-11-16 2020-05-26 네이버 주식회사 라이브 서비스를 위한 분산 파일 시스템 및 데이터 처리 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6418194B2 (ja) * 2016-03-30 2018-11-07 トヨタ自動車株式会社 無線通信装置および無線通信方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130263138A1 (en) * 2012-03-27 2013-10-03 International Business Machines Corporation Collectively Loading An Application In A Parallel Computer
KR20160121380A (ko) * 2015-04-09 2016-10-19 한국전자통신연구원 토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 구성 및 운영 방법

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2601591B2 (ja) * 1991-11-26 1997-04-16 富士通株式会社 並列計算機およびその全対全通信方法
US6751698B1 (en) * 1999-09-29 2004-06-15 Silicon Graphics, Inc. Multiprocessor node controller circuit and method
US6718428B2 (en) 2000-12-18 2004-04-06 Sun Microsystems, Inc. Storage array interconnection fabric using a torus topology
US20080101395A1 (en) * 2006-10-30 2008-05-01 Raytheon Company System and Method for Networking Computer Clusters
KR101453425B1 (ko) * 2008-12-18 2014-10-23 한국전자통신연구원 메타데이터 서버 및 메타데이터 관리 방법
US8571834B2 (en) * 2010-01-08 2013-10-29 International Business Machines Corporation Opcode counting for performance measurement
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
JP5429382B2 (ja) * 2010-08-10 2014-02-26 富士通株式会社 ジョブ管理装置及びジョブ管理方法
US8499222B2 (en) * 2010-12-14 2013-07-30 Microsoft Corporation Supporting distributed key-based processes
US9015345B2 (en) * 2010-12-15 2015-04-21 Microsoft Corporation API supporting server and key based networking
US8645745B2 (en) * 2011-02-24 2014-02-04 International Business Machines Corporation Distributed job scheduling in a multi-nodal environment
US9053067B2 (en) * 2011-09-30 2015-06-09 International Business Machines Corporation Distributed data scalable adaptive map-reduce framework
US9424229B2 (en) * 2013-02-13 2016-08-23 Advanced Micro Devices, Inc. Parallel torus network interconnect
US9923897B2 (en) * 2013-03-06 2018-03-20 Surfeasy, Inc. Edge server selection for enhanced services network
US10212238B2 (en) * 2013-05-15 2019-02-19 Level 3 Communications, Llc Selecting a content providing server in a content delivery network
US10382527B2 (en) * 2013-10-16 2019-08-13 International Business Machines Corporation Performing optimized collective operations in an irregular subcommunicator of compute nodes in a parallel computer
US9348651B2 (en) * 2013-12-05 2016-05-24 International Business Machines Corporation Constructing a logical tree topology in a parallel computer
US9495204B2 (en) * 2014-01-06 2016-11-15 International Business Machines Corporation Constructing a logical tree topology in a parallel computer
KR101694980B1 (ko) * 2014-01-20 2017-01-23 한국전자통신연구원 데이터 분산 처리 장치 및 방법, 그리고 스토리지 서버
NO2776466T3 (ko) * 2014-02-13 2018-01-20
US10158530B2 (en) * 2014-08-18 2018-12-18 Advanced Micro Devices, Inc. Configuration of a cluster server using cellular automata
US10425275B2 (en) * 2015-02-12 2019-09-24 Advanced Micro Devices, Inc. Centralized distribution of configuration parameters for a cluster server
KR102378367B1 (ko) 2015-03-20 2022-03-24 한국전자통신연구원 분산 파일 시스템
US10084860B2 (en) * 2015-04-09 2018-09-25 Electronics And Telecommunications Research Institute Distributed file system using torus network and method for configuring and operating distributed file system using torus network

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130263138A1 (en) * 2012-03-27 2013-10-03 International Business Machines Corporation Collectively Loading An Application In A Parallel Computer
KR20160121380A (ko) * 2015-04-09 2016-10-19 한국전자통신연구원 토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 구성 및 운영 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200057409A (ko) * 2018-11-16 2020-05-26 네이버 주식회사 라이브 서비스를 위한 분산 파일 시스템 및 데이터 처리 방법

Also Published As

Publication number Publication date
US20180212795A1 (en) 2018-07-26
US10749709B2 (en) 2020-08-18
KR102610984B1 (ko) 2023-12-08

Similar Documents

Publication Publication Date Title
US10936220B2 (en) Locality aware load balancing of IO paths in multipathing software
US10996879B2 (en) Locality-based load balancing of input-output paths
US11218539B2 (en) Synchronous replication for storage
CN102546402B (zh) 支持基于关键项的分布式进程的方法和计算实体
US20150312337A1 (en) Mirroring log data
US10893105B1 (en) Utilization of networking protocol for seamless integration of compute nodes with software-defined storage nodes
US20170091668A1 (en) System and method for network bandwidth aware distributed learning
US9811379B2 (en) Highly efficient inexact computing storage device
JP2010074604A (ja) データアクセスシステム、データアクセス方法およびデータアクセス用プログラム
KR102028428B1 (ko) 토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 구성 및 운영 방법
US9547616B2 (en) High bandwidth symmetrical storage controller
US10084860B2 (en) Distributed file system using torus network and method for configuring and operating distributed file system using torus network
US11405455B2 (en) Elastic scaling in a storage network environment
KR20180046078A (ko) 데이터베이스 리밸런싱 방법
US10749921B2 (en) Techniques for warming up a node in a distributed data store
CN110413548B (zh) 用于子lun对齐的方法、数据存储系统和存储设备
KR20180088076A (ko) 토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 운영 방법
US20140289489A1 (en) Information processing apparatus, information processing method, storage system and non-transitory computer readable storage media
US8995789B2 (en) Efficient collaging of a large image
US9715477B2 (en) Shared-bandwidth multiple target remote copy
US10498815B2 (en) Data recovery objective modeling
US10848549B1 (en) Leaderless, parallel, and topology-aware protocol for achieving consensus
US9367329B2 (en) Initialization of multi-core processing system
US20230350572A1 (en) Host path selection utilizing address range distribution obtained from storage nodes for distributed logical volume
US10666727B2 (en) Distributed processing network operations

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant