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

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

Info

Publication number
KR102028428B1
KR102028428B1 KR1020160008755A KR20160008755A KR102028428B1 KR 102028428 B1 KR102028428 B1 KR 102028428B1 KR 1020160008755 A KR1020160008755 A KR 1020160008755A KR 20160008755 A KR20160008755 A KR 20160008755A KR 102028428 B1 KR102028428 B1 KR 102028428B1
Authority
KR
South Korea
Prior art keywords
data
server
file system
servers
distributed file
Prior art date
Application number
KR1020160008755A
Other languages
English (en)
Other versions
KR20160121380A (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 US15/010,373 priority Critical patent/US10084860B2/en
Publication of KR20160121380A publication Critical patent/KR20160121380A/ko
Application granted granted Critical
Publication of KR102028428B1 publication Critical patent/KR102028428B1/ko

Links

Images

Classifications

    • 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]
    • H04L67/1002
    • 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/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • 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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

토러스 네트워크를 사용하는 분산 파일 시스템이 제공된다. 분산 파일 시스템은 복수의 서버들을 포함할 수 있다. 복수의 서버들은 n차원의 토러스 네트워크를 통해 연결되고, 복수의 서버들의 각각은 n차원의 축들을 기준으로 배치될 수 있다. 분산 파일 시스템의 서버들 중 n-1 차원의 토러스 네트워크의 서버 그룹은 퍼블릭 네트워크에 연결될 수 있다. 분산 파일 시스템의 서로 상이한 부하들은 축들을 기준으로 분배될 수 있다. 분배를 통해 분산 파일 시스템의 처리 성능이 향상될 수 있다.

Description

토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 구성 및 운영 방법{DISTRIBUTED FILE SYSTEM USING TORUS NETWORK AND METHOD FOR CONFIGURING AND OPERATING OF THE DISTRIBUTED FILE SYSTEM USING TORUS NETWORK}
아래의 실시예들은 분산 파일 시스템, 분산 파일 시스템의 구성 방법 및 분산 파일 시스템의 운영 방법에 관한 것으로, 보다 상세히는 토러스 네트워크를 이용하는 분산 파일 시스템, 토러스 네트워크를 이용하는 분산 파일 시스템의 구성 방법 및 토러스 네트워크를 이용하는 분산 파일 시스템의 운영 방법이 개시된다.
서버 클러스터의 구성에 있어서의 요구사항(requirement)들은 아래와 같다.
1) 서버들 간의 통신 병목(bottle-neck)의 최소화
2) 통신 채널의 가용성(availability)의 보장
이러한 요구사항들을 충족시키기 위해서, 예를 들면 다단계의 스위치들로 구성된 팻(fat)-트리(tree)와 같은, 전통적인 네트워크 구성 방식이 사용될 수 있다. 그러나, 전통적인 네트워크 구성 방식이 사용될 경우 네트워크 비용이 기하급수적으로 증가한다.
이러한 문제를 해결하기 위해, 서버 노드의 자체의 통신 방식, 말하자면, 서버의 네트워크 인터페이스 카드(Network Interface Card)를 사용하여 토러스(torus) 네트워크를 구성하는 방식이 제안되었다.
이러한 방식은 서버의 규모가 증가하여도 서버의 NIC의 추가 외에는 추가적인 네트워크 구축 비용을 요구하지 않으며, 앞서 설명된 요구사항들을 충족시킬 수 있다.
한편, 분산 파일 시스템은, 서버 클러스터와 유사하게, 여러 개의 데이터 서버들로 구성된다. 데이터 서버는 분산 파일 시스템의 노드로서 동작한다. 또한, 분산 파일 시스템은 사용자의 데이터 서비스 요청을 데이터 서버들 간의 유기적인 협력을 통해 처리한다. 데이터 서비스 요청은, 파일 생성, 파일 검색, 데이터 독출(writing) 및 데이터 기입(reading) 등을 포함한다. 그러나, 전술된 문제점과 유사하게, 파일 시스템의 규모가 증가할수록 대규모의 데이터 서버의 클러스터의 연결을 위해 요구되는 네트워크 구축 비용이 급격하게 증가한다.
그러나, 이러한 문제를 해결함에 있어서, 단순한 서버 클러스터와는 달리, 기존의 토러스 네트워크로는 분산 파일 시스템이 효과적으로 구성될 수 없다. 서버 클러스터와는 달리, 대규모의 분산 파일 시스템은 토러스 네트워크를 활용함에 있어서 아래와 같은 특성들이 고려되어야 한다.
1) 퍼블릭 네트워크로부터 데이터 서비스 요청이 수신되고, 요청에 대한 결과 또한 퍼블릭 네트워크를 통해 전송된다.
2) 일반적으로, 생성된지 오래된 데이터에 대한 접근의 빈도는, 데이터가 생성 후 경과한 시간에 따라서 낮아진다.
3) 사용자의 데이터는 시간이 흐를수록 누적된다.
4) 일부의 데이터에 대한 접근의 빈도가 전체의 데이터 서비스에서 높은 비중을 차지한다.
분산 파일 시스템의 관리에 대하여 다양한 연구 및 개발이 이루어지고 있다. 예를 들면, 분산 파일 시스템의 관리와 관련하여 한국공개특허 제2014-0060959호 등이 공개된 바 있고, 또한 토러스 네트워크의 운용에 관련하여 한국등록특허 제1318426호가 제안된 바 있다.
일 실시예는 대규모의 분산 파일 시스템의 특성을 고려하여 토러스 네트워크에 데이터 서버들을 구성하는 방법을 제공할 수 있다.
일 실시예는 최소의 네트워크 구축 비용으로 데이터 서버를 구축하고, 데이터 서버를 증설하는 방법을 제공할 수 있다.
일 실시예는 성능 우선 또는 저장 공간 우선에 따라서 데이터 서버를 토러스 네트워크에 배치하는 방법을 제공할 수 있다.
일 실시예는 데이터를 배치하는 기법을 통해 주어진 네트워크 자원 내에서 네트워크 효율성을 향상시키는 방법을 제공할 수 있다.
일 실시예는 데이터 서버를 배치하는 기법을 통해 네트워크 효율성을 향상시키는 방법을 제공할 수 있다.
일 실시예는 토러스 네트워크의 복수의 경로들에 대한 워크로드들을 조정하는 방법을 제공할 수 있다.
일 실시예는 토러스 네트워크의 특성을 고려하여 데이터 서버들에 대한 부하 배치를 수행하는 방법을 제공할 수 있다.
일 실시예는 상기의 방법들을 사용하여 구성된 토러스 네트워크에 기반한 분산 파일 시스템을 제공할 수 있다.
일 측에 있어서, 복수의 서버들을 포함하고, 상기 복수의 서버들은 n차원의 토러스 네트워크를 통해 연결되고, 상기 복수의 서버들의 각각은 상기 n차원의 축들을 기준으로 배치된 분산 파일 시스템이 제공된다.
상기 n은 3일 수 있다.
상기 분산 파일 시스템을 구성함에 있어서, 첫 번째로 구성된 n-1 차원의 토러스 네트워크의 서버 그룹은 퍼블릭 네트워크에 연결될 수 있다.
상기 분산 파일 시스템을 구성함에 있어서, 퍼블릭 네트워크로부터 멀어지는 방향에 따라 n-1 차원의 토러스 네트워크의 서버 그룹이 기존의 구성된 네트워크에 순차적으로 연결될 수 있다.
상기 분산 파일 시스템의 확장을 위해 n-1 차원의 토러스 네트워크의 서버들이 추가될 때, 상기 n-1 차원의 토러스 네트워크의 서버들은 상기 축들 중 제1 축에 배치될 수 있고, 상기 제1 축 중 퍼블릭 네트워크에 가장 가까운 위치에 배치될 수 있다.
상기 제1 축은 상기 퍼블릭 네트워크로부터의 거리에 대응하는 축일 수 있다.
상기 분산 파일 시스템의 확장을 위해 n-1 차원의 토러스 네트워크의 서버들이 추가될 때, 상기 n-1 차원의 토러스 네트워크의 서버들은 상기 축들 중 제1 축에 배치될 수 있고, 상기 제1 축 중 퍼블릭 네트워크로부터 가장 먼 위치에 배치될 수 있다.
상기 서버들에 대한 통계의 정보는 제1 축을 기준으로 n-1의 차원의 단위로 수집될 수 있다.
제1 축 상의 n-1 차원의 네트워크들의 각각에 대하여 n-1 차원의 마스터가 상기 통계의 정보를 취합할 수 있다. n 차원의 마스터가 상기 n-1 차원의 네트워크들에 대해 취합된 상기 통계의 정보를 다시 취합할 수 있다.
상기 분산 파일 시스템의 서로 상이한 부하들은 상기 축들을 기준으로 분배될 수 있다.
상기 분산 파일 시스템의 데이터 서비스 부하는 상기 축들 중 제1 축을 따라서 분배될 수 있다.
상기 분산 파일 시스템은 데이터 서비스를 위한 데이터 공간 할당 요청에 대하여 상기 서버들 중 상기 퍼블릭 네트워크에 가까운 서버의 데이터 공간을 우선적으로 할당할 수 있다.
상기 분산 파일 시스템의 내부 부하는 상기 축들 중 상기 제1 축을 제외한 나머지의 축에 분배될 수 있다.
상기 분산 파일 시스템의 데이터 복제 부하는 제2 축을 따라서 분배될 수 있다.
상기 제2 축은 상기 축들 중 상기 제1 축을 제외한 하나의 축일 수 있다.
상기 분산 파일 시스템은 데이터 복제를 위한 데이터 공간 할당 요청에 대하여 상기 제2 축을 따라 원본 데이터가 존재하는 서버에 가까운 위치에서부터 상기 원본 데이터가 존재하는 서버로부터 멀어지는 방향으로 턴 어라운드 방식을 사용하여 상기 원본 데이터의 데이터 복제를 위한 데이터 공간을 할당할 서버를 결정할 수 있다.
상기 분산 파일 시스템의 스트라이핑 부하는 제3 축을 따라서 분배될 수 있다.
상기 제3 축은 상기 축들 중 상기 제1 축을 제외한 하나의 축일 수 있다.
상기 분산 파일 시스템은 스트라이핑에 대하여 복수의 서버들의 데이터 공간들을 할당할 수 있다.
상기 분산 파일 시스템은 상기 서버들 중에서 상기 데이터 공간들의 제1 데이터 공간을 할당할 제1 서버를 결정할 수 있다.
상기 분산 파일 시스템은 상기 제3 축을 따라 상기 제1 서버에 가까운 위치에서 상기 제1 서버로부터 멀어지는 방향으로 상기 서버들 중에서 상기 데이터 공간들의 나머지 데이터 공간을 할당할 서버를 결정할 수 있다.
스트라이핑 데이터를 저장하는 복수의 서버들이 스트라이핑 데이터 기입 요청을 처리할 때, 상기 스트라이핑 데이터를 저장하는 복수의 서버들의 각 서버는 상기 스트라이핑 데이터 기입 요청에 대하여 상기 각 서버에서 처리되는 데이터를 제외한 나머지 데이터에 대한 스트라이핑 데이터 기입 요청을 상기 각 서버의 다음의 서버로 전파할 수 있다.
상기 스트라이핑 데이터를 저장하는 복수의 서버들 중 마지막의 서버는 스트라이핑 데이터 기입 요청에 대한 처리를 완료하였을 때 완료 메시지를 생성할 수 있다.
상기 완료 메시지는 상기 스트라이핑 데이터 기입 요청이 전파된 방향과 반대의 방향으로 전파될 수 있다.
스트라이핑 데이터를 저장하는 복수의 서버들이 스트라이핑 데이터 독출 요청을 처리할 때, 상기 복수의 서버들의 각 서버는 상기 스트라이핑 데이터 독출 요청을 상기 각 서버의 다음의 서버로 전파할 수 있다.
상기 스트라이핑 데이터 독출 요청에 따라서 상기 복수의 서버들로부터 독출된 데이터는 상기 스트라이핑 데이터 독출 요청이 전파된 방향과 반대의 방향으로 병합되면서 전파될 수 있다.
상기 분산 파일 시스템은 상기 분산 파일 시스템의 소정의 데이터에 대한 접근의 빈도에 기반하여 상기 소정의 데이터의 제1 축에서의 위치를 조정할 수 있다.
다른 일 측에 있어서, n차원의 축들을 기준으로 복수의 서버들의 각각을 배치하는 단계; 및 상기 복수의 서버들을 n차원의 토러스 네트워크를 통해 연결하는 단계를 포함하는 분산 파일 시스템의 구성 방법이 제공된다.
또 다른 일 측에 있어서, n차원의 토러스 네트워크를 통해 연결된 복수의 서버들을 포함하는 분산 파일 시스템의 운용 방법에 있어서, 상기 분산 파일 시스템의 소정의 데이터에 대한 접근의 정보를 생성하는 단계; 및 상기 정보에 기반하여 상기 소정의 데이터의 제1 축에서의 위치를 조정하는 단계를 포함하고, 상기 제1 축은 상기 퍼블릭 네트워크로부터의 거리에 대응하는 축인 분산 파일 시스템의 운용 방법이 제공될 수 있다.
이 외에도, 본 발명을 구현하기 위한 다른 방법, 장치, 시스템 및 상기 방법을 실행하기 위한 컴퓨터 프로그램을 기록하기 위한 컴퓨터 판독 가능한 기록 매체가 더 제공된다.
대규모의 분산 파일 시스템의 특성을 고려하여 토러스 네트워크에 데이터 서버들을 구성하는 방법이 제공된다.
최소의 네트워크 구축 비용으로 데이터 서버를 구축하고, 데이터 서버를 증설하는 방법이 제공된다.
성능 우선 또는 저장 공간 우선에 따라서 데이터 서버를 토러스 네트워크에 배치하는 방법이 제공된다.
데이터를 배치하는 기법을 통해 주어진 네트워크 자원 내에서 네트워크 효율성을 향상시키는 방법이 제공된다.
데이터 서버를 배치하는 기법을 통해 네트워크 효율성을 향상시키는 방법을 제공된다.
토러스 네트워크의 복수의 경로들에 대한 워크로드들을 조정하는 방법을 제공된다.
토러스 네트워크의 특성을 고려하여 데이터 서버들에 대한 부하 배치를 수행하는 방법이 제공된다.
상기의 방법들을 사용하여 구성된 토러스 네트워크에 기반한 분산 파일 시스템이 제공된다.
도 1은 일 예에 따른 3차원의 토러스 네트워크의 구성을 도시한다.
도 2는 일 실시예에 따른 토러스 네트워크에 기반한 분산 파일 시스템을 나타낸다.
도 3은 일 예에 따른 레이어에 따른 성능 및 네트워크 비용을 나타낸다.
도 4는 일 실시예에 따른 분산 파일 시스템의 토러스 네트워크를 도시한다.
도 5a 및 도 5b는 일 실시예에 따른 분산 파일 시스템의 서버의 확장을 설명한다.
도 5a는 일 예에 따른 확장 이전의 분산 파일 시스템을 도시한다.
도 5b는 일 예에 따른 확장 이후의 분산 파일 시스템을 도시한다.
도 6은 일 예에 따른 서버 그룹 추가 방법의 흐름도이다.
도 7은 3차원의 토러스 네트워크에 연결된 복수의 서버들의 상태 정보를 관리하는 데이터 구조를 나타낸다.
도 8은 일 예에 따른 3차원의 토러스 네트워크에 연결된 복수의 서버들의 상태 정보를 수집하기 위한 구성을 나타낸다.
도 9는 일 예에 따른 서버의 상태 정보를 전송하는 방법의 흐름도이다.
도 10은 분산 파일 시스템의 서로 상이한 부하들을 토러스 네트워크의 각 축에 분배하는 방법을 도시한다.
도 11은 일 예에 따른 데이터 서비스를 위한 데이터 공간 할당 방법의 흐름도이다.
도 12는 일 예에 따른 데이터 복제를 위한 데이터 공간 할당 방법의 흐름도이다.
도 13은 일 예에 따른 스트라이핑을 위한 데이터 공간 할당 방법의 흐름도이다.
도 14는 일 예에 따른 스트라이핑 또는 데이터 복제를 위한 입출력 프로토콜을 설명한다.
도 15a, 도 15b 및 도 15c는 일 예에 따른 스트라이핑된 데이터의 기입 방법을 설명한다.
도 15a는 일 예에 따른 기입 요청된 스트라이핑된 데이터를 설명한다.
도 15b는 일 예에 따른 서버들에 의한 스트라이핑된 데이터의 기입을 설명한다.
도 15c는 일 예에 따른 스트라이핑된 데이터의 기입 요청에 대한 데이터 전파 및 응답 전파를 설명한다.
도 16a, 도 16b 및 도 16c는 일 예에 따른 스트라이핑된 데이터의 독출 방법을 설명한다.
도 16a는 일 예에 따른 독출 요청된 스트라이핑된 데이터를 설명한다.
도 16b는 일 예에 따른 서버들에 의한 스트라이핑된 데이터의 독출을 설명한다.
도 16c는 일 예에 따른 스트라이핑된 데이터의 독출 요청에 대한 요청 전파 및 데이터 수집을 설명한다.
도 17a 및 도 17b는 일 예에 따른 데이터 복제 방법을 설명한다.
도 17a는 일 예에 따른 데이터의 복제를 설명한다.
도 17b는 일 예에 따른 데이터의 복제 요청에 대한 복제 데이터 전파 및 응답 전파를 설명한다.
도 18은 일 예에 따른 분산 파일 시스템의 소정의 데이터에 대한 접근의 정보를 나타낸다.
도 19는 일 예에 따른 사용자 접근 패턴의 변화에 따른 데이터의 이동을 설명한다.
도 20은 일 실시예에 따른 분산 파일 시스템의 구성 방법의 흐름도이다.
도 21은 일 실시예에 따른 분산 파일 시스템의 운용 방법의 흐름도이다.
후술하는 예시적 실시예들에 대한 상세한 설명은, 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 실시예를 실시할 수 있기에 충분하도록 상세히 설명된다. 다양한 실시예들은 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 실시예의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 예시적 실시예들의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다.
도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다. 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
실시예에서 사용된 용어는 실시예를 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 실시예에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않으며, 추가적인 구성이 예시적 실시예들의 실시 또는 예시적 실시예들의 기술적 사상의 범위에 포함될 수 있음을 의미한다. 어떤 구성요소(component)가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 상기의 2개의 구성요소들이 서로 간에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있으나, 상기의 2개의 구성요소들의 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
제1 및 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기의 구성요소들은 상기의 용어들에 의해 한정되어서는 안 된다. 상기의 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하여 지칭하기 위해서 사용된다. 예를 들어, 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
또한 실시예들에 나타나는 구성요소들은 서로 다른 특징적인 기능들을 나타내기 위해 독립적으로 도시되는 것으로, 각 구성요소가 분리된 하드웨어나 하나의 소프트웨어 구성 단위로만 이루어짐을 의미하지 않는다. 즉, 각 구성요소는 설명의 편의상 각각의 구성요소로 나열된 것이다. 예를 들면, 구성요소들 중 적어도 두 개의 구성요소들이 하나의 구성요소로 합쳐질 수 있다. 또한, 하나의 구성요소가 복수의 구성요소들로 나뉠 수 있다. 이러한 각 구성요소의 통합된 실시예 및 분리된 실시예 또한 본질에서 벗어나지 않는 한 권리범위에 포함된다.
또한, 일부의 구성요소는 본질적인 기능을 수행하는 필수적인 구성요소는 아니고 단지 성능을 향상시키기 위한 선택적 구성요소일 수 있다. 실시예들은 실시예의 본질을 구현하는데 필수적인 구성부만을 포함하여 구현될 수 있고, 예를 들면, 단지 성능 향상을 위해 사용되는 구성요소와 같은, 선택적 구성요소가 제외된 구조 또한 권리 범위에 포함된다.
이하에서는, 기술분야에서 통상의 지식을 가진 자가 실시예들을 용이하게 실시할 수 있도록 하기 위하여, 첨부된 도면을 참조하여 실시예들을 상세히 설명하기로 한다. 실시예들을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 명세서의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
이하에서, "서버의 좌표"는 "서버의 주소"와 동일한 의미로 사용될 수 있다. "서버의 좌표" 및 "서버의 주소"의 각각은 하나의 서버를 특정하기 위해 사용될 수 있다.
도 1은 일 예에 따른 3차원의 토러스 네트워크의 구성을 도시한다.
도 1에서, 원은 서버 또는 서버 노드를 나타낼 수 있다. 원들 간의 선은 서버들 간의 연결을 나타낼 수 있다. 서버들 간의 연결은 크로스 다이렉트 연결일 수 있다.
아래에서 설명될 실시예들에서는, 대규모의 분산 파일 시스템을 구성함에 있어서, 대규모의 분산 파일 시스템의 특성을 고려하여 토러스 네트워크에 서버들을 구성 또는 배치함으로써 최소의 네트워크 구축 비용으로 서버를 구축하고, 서버를 증설하는 방법이 설명된다.
실시예의 구축 및 증설 방법은 전통적인 팻-트리에 기반하는 네트워크에 비해 더 적은 비용으로 네트워크 요구사항을 충족시킬 수 있다. 예를 들면, 실시예의 구축 및 증설 방법은 서버의 도입 비용 외에는 추가적인 비용 없이 네트워크 요구사항을 충족시킬 수 있다.
또한, 아래의 실시예들에서 제시되는 토러스 네트워크에서의 서버 배치 방식은 사용자의 요구사항을 반영할 수 있다. 예를 들면, 사용자의 요구사항은 성능 우선 및 저장 공간 우선 등을 포함할 수 있다.
또한, 아래의 실시예들에서 제시되는 토러스 네트워크의 운용 방법은 분산 파일 시스템의 사용자에 의한 데이터 서비스를 토러스 네트워크의 특성을 고려하여 최적으로 제공할 수 있다.
도 2는 일 실시예에 따른 토러스 네트워크에 기반한 분산 파일 시스템을 나타낸다.
분산 파일 시스템(200)은 복수의 서버들을 포함할 수 있다. 복수의 서버들의 각 서버는 데이터 서버일 수 있다.
도 2에서, 복수의 서버들의 각 서버는 원으로 도시되었다. 복수의 서버들은 n차원의 토러스 네트워크를 통해 연결될 수 있다. n은 2 이상의 정수일 수 있다.
도 2에서는, 3차원의 토러스 네트워크가 예시적으로 도시되었다. 예를 들면, n은 3일 수 있다. 이하에서는, 3차원의 토러스 네트워크를 기준으로, 분산 파일 시스템(200)이 설명될 수 있다. 말하자면, 아래에서 3차원의 토러스 네트워크와 관련하여 설명된 구성, 기능 또는 동작은 n차원의 토러스 네트워크의 구성, 기능 또는 동작에 관한 것으로 간주될 수 있다. 또한, 아래에서 2차원의 토러스 네트워크와 관련하여 설명된 구성, 기능 또는 동작은 n-1차원의 토러스 네트워크의 구성, 기능 또는 동작에 관한 것으로 간주될 수 있다.
분산 파일 시스템(200)의 복수의 서버들은 복수의 레이어들을 구성할 수 있다. n차원의 토러스 네트워크를 통해 분산 파일 시스템(200)의 복수의 서버들이 연결되었을 때, 각 레이어는 n-1차원의 토러스 네트워크를 통해 연결된 서버들일 수 있다. 도 2에서는, 제1 레이어, 제2 레이어, 제3 레이어 및 제4 레이어가 예시적으로 도시되었다.
분산 파일 시스템(200)은 퍼블릭 네트워크(299)에 연결될 수 있다. 퍼블릭 네트워크(299)는 팻-트리일 수 있다.
클라이언트는 퍼블릭 네트워크(299)를 통해 분산 파일 시스템(200)에 접근할 수 있다.
클라이언트는 복수일 수 있다. 복수의 클라이언트들로서, 도 2에서는 제1 클라이언트, 제2 클라이언트 및 제m 클라이언트가 도시되었다.
토러스 네트워크로 대규모의 분산 파일 시스템(200)을 구성할 경우, 네트워크 구축 비용의 문제를 해결하기 위해서는 아래와 같은 사항들이 고려될 수 있다.
첫 번째 고려 사항
서버 클러스터에 비해, 분산 파일 시스템(200)에서, 퍼블릭 네트워크(299) 및 분산 파일 시스템(200) 간의 통신 채널은 높은 대역폭(bandwidth)을 요구할 수 있다.
즉, 사용자에게 서비스를 제공하는 측면에서는, 분산 파일 시스템(200)의 전체 성능은 퍼블릭 네트워크(299)에 연결된 서버들의 대역폭들의 합이지만, 분산 파일 시스템(200)의 전체 저장 공간은 토러스 네트워크에 연결된 모든 서버들의 저장 공간들의 합이다. 따라서, 이러한 특성을 고려하여 성능 우선 또는 저장 공간 우선에 따라서 서버들을 토러스 네트워크에 배치하는 방식이 요구된다.
두 번째 고려 사항
도 3은 일 예에 따른 레이어에 따른 성능 및 네트워크 비용을 나타낸다.
도 3에서 도시된 것과 같이, 퍼블릭 네트워크(299)에 가까운 레이어일 수록 높은 성능을 보이지만, 증가된 네트워크 비용을 요구할 수 있다. 또한, 퍼블릭 네트워크(299)로부터 먼 레이어일수록 낮은 성능을 보이지만, 감소된 네트워크 비용을 요구할 수 있다. 말하자면, 서버들이 연속적으로 연결하여 네트워크를 형성하는 토러스 네트워크에서는, 서버가 퍼블릭 네트워크(299)에 가까울 수록 높은 성능을 보이지만, 증가된 네트워크 비용을 요구할 수 있다. 또한, 토러스 네트워크에서는, 서버가 퍼블릭 네트워크(299)로부터 멀 수록 낮은 성능을 보이지만, 감소된 네트워크 비용을 요구할 수 있다.
따라서, 주어진 네트워크 자원 내에서, 네트워크 효율성을 보다 향상시키기 위해서는, 자주 접근될 확률이 높은 데이터를 퍼블릭 네트워크(299)에 보다 가깝게 배치하는 기법이 사용될 수 있다.
세 번째 고려 사항
대규모의 분산 파일 시스템(200)의 특성 상, 데이터의 증가에 따른 서버의 확장은 필수적으로 발생한다. 팻-트리 네트워크에 있어서는, 네트워크 비용의 문제를 제외하면, 단순히 서버를 추가함으로써 이러한 확장이 쉽게 이루어질 수 있다. 반면, 토러스 네트워크에 있어서는, 새롭게 추가된 네트워크를 어떻게 배치할 것인가에 대해 아래의 사항들이 추가적으로 고려될 수 있다.
1) 서버 확장의 목적에 따라서 배치가 변할 수 있다. 서버 확장의 목적은 성능 우선 또는 저장 공간 우선일 수 있다.
2) 생성된지 오래된 데이터의 경우, 데이터의 생성 후 흐른 시간만큼 데이터에 대한 접근의 빈도가 낮아질 수 있다. 다시 말해, 최근에 생성한 데이터에 대한 접근의 빈도는 높을 수 있다.
3) 새로운 서버가 토러스 네트워크에 배치된 후, 데이터가 배치된 위치에 따라 데이터에 대한 접근의 성능이 좌우될 수 있다. 따라서, 사용자 워크로드가 동적으로 변하는 경우, 데이터의 재배치가 요구될 수 있다.
네 번째 고려 사항
n차원의 토러스 네트워크에서는, n개의 네트워크 경로들이 존재할 수 있다. 그러나, n 네트워크 경로들이 존재하더라도, 워크로드가 일부의 경로에만 집중되면, 일부의 연결 네트워크의 대역폭만이 사용될 수도 있다. 따라서, 워크로드를 토러스 네트워크의 n개의 네트워크 경로들에 적절하게 분배할 수 있는 방법이 요구된다.
다섯 번째 고려 사항
예를 들면, 서버 i, 스위치 및 서버 j와 같은 네트워크 경로를 제공하는 팻-트리 네트워크에서는 서버들의 네트워크 전송 비용들은 서로 비슷하다.
반면, 토러스 네트워크에서는 서버들의 위치들에 따라서, 서버들의 네트워크 전송 비용들은 서로 상이할 수 있다. 예를 들면, 토러스 네트워크의 네트워크 경로는 서버 i, 서버 i+1, 서버 i+2, ,,, 및 서버 j로 이루어질 수 있다. 이러한 경우, 서버 i로부터 서버 j로 전송되는 데이터는 서버 i 및 서버 j 간의 모든 서버들을 거쳐야 한다.
분산 파일 시스템(200)의 복수의 서버들간의 상호 통신이 요구되는 경우에는, 전술된 것과 같은 토러스 네트워크 특성을 고려하여 부하가 분배되어야만 할 수 있다.
실시예들은, 전술된 것과 같은 고려 사항들을 반영하여, 토러스 네트워크 상에서 대규모의 분산 파일 시스템(200)을 효과적으로 구성 및 처리할 수 있는 방법을 제시할 수 있다. 이러한 방법을 통해, 토러스 네트워크의 적은 네트워크 구축 비용만으로도 팻-트리 네트워크와 유사한 성능이 획득될 수 있다.
도 4는 일 실시예에 따른 분산 파일 시스템의 토러스 네트워크를 도시한다.
분산 파일 시스템(200)의 복수의 서버들의 각각은 n차원의 축(axis)들을 기준으로 배치될 수 있다. 예를 들면, 복수의 서버들의 각 서버는 n차원의 좌표 값들을 가질 수 있다. 좌표 값들의 각각은 정수일 수 있다. 또는, 좌표 값들의 각각은 0 이상의 정수일 수 있다. 또는, 좌표 값들의 각각은 1 이상의 정수일 수 있다.
n의 값은 3일 수 있다. 도 4에서, 분산 파일 시스템(200)의 복수의 서버들은 3차원의 축들인 X 축, Y 축 및 Z 축을 기준으로 배치되었다.
n차원의 축들 중 제1 축은 퍼블릭 네트워크(299)에 연결된 축일 수 있다. 제1 축은 퍼블릭 네트워크(299)로부터의 거리에 대응하는 축일 수 있다. 또는, 제1 축은 퍼블릭 네트워크(299)로부터의 거리를 나타내는 축일 수 있다. 제1 축의 좌표의 값은 퍼블릭 네트워크(299)로부터의 거리를 나타낼 수 있다. 예를 들면, 분산 파일 시스템(200)의 복수의 서버들 중 제1 축의 좌표의 값이 특정한 값인 서버는 퍼블릭 네트워크(299)에 직접적으로 연결된 서버일 수 있다.
도 4에서는, 3차원의 축들 중 Z 축이 제1 축으로서 도시되었다. 분산 파일 시스템(200)의 복수의 서버들 중 z 좌표의 값이 특정한 값인 서버는 퍼블릭 네트워크(299)에 직접적으로 연결된 서버일 수 있다.
분산 파일 시스템(200)이 효과적으로 구축되기 위해서, n차원의 토러스 네트워크에 서버가 사용자 목적에 따라 배치될 수 있다. 여기에서, 사용자 목적은 성능 증가 또는 저장 용량 확장일 수 있다. 여기에서, 성능은 사용자의 데이터 서비스 요청을 처리하는 능력을 의미할 수 있다.
도 4에서 도시된 것과 같이, 분산 파일 시스템(200)의 토러스 네트워크에서, 퍼블릭 네트워크(299)에 연결된 Z 축의 첫 번째 위치에서의 확장이 이루어질 경우, 확장된 서버만큼 저장 용량 확장 및 성능 증가가 이루어질 수 있다.
이하, Z 축의 첫 번째 위치는 최소의 Z 값을 갖는 X-Y 평면의 위치를 의미할 수 있다. 또는, Z 축의 첫 번째 위치는 제1 레이어의 위치를 의미할 수 있다.
Z 축의 첫 번째 위치에서의 확장은 최소의 Z 값을 갖는 X-Y 평면의 확장을 의미할 수 있다. 또한, Z 축의 첫 번째 위치에서의 확장은 제1 레이어의 확장을 의미할 수 있다.
그러나, Z 축의 첫 번째의 위치에서의 확장은 팻-트리의 확장에서와 같은, 높은 네트워크 구축 비용을 요구할 수 있다.
또한, 도 4에서 도시된 것과 같이, 분산 파일 시스템(200)의 토러스 네트워크는 Z 축의 방향으로 확장될 수 있다. 분산 파일 시스템(200)의 토러스 네트워크가 Z 축의 방향으로 확장되는 경우, 확장에 의해 추가된 서버만큼 저장 용량 확장이 이루어질 수 있다. 분산 파일 시스템(200)의 토러스 네트워크가 Z 축의 방향으로 확장된다는 것은 최대의 Z 값을 갖는 X-Y 평면이 추가되는 것을 의미할 수 있다. 또는, 분산 파일 시스템(200)의 토러스 네트워크가 Z 축의 방향으로 확장된다는 것은 최대의 z 값을 갖는 레이어가 추가되는 것을 의미할 수 있다.
분산 파일 시스템(200)의 토러스 네트워크가 Z 축의 방향으로 확장되는 경우, 네트워크 비용의 상승 없이 대용량의 분산 파일 시스템(200)이 구축될 수 있다. 그러나, 이러한 확장 방식이 사용될 경우, Z 축의 좌표의 값이 큰 서버가 사용자 데이터를 송신 또는 수신할 때, 전송되는 데이터는 퍼블릭 네트워크(299)에 연결된 Z 축의 첫 번째 위치까지 여러 레이어들의 연결 네트워크를 거쳐야 할 수 있다. 예를 들면, 제5 레이어의 서버로부터 전송된 사용자 데이터는 제5 레이어, 제4 레이어, 제3 레이어, 제2 레이어 및 제1 레이어를 차례로 거쳐야만 퍼블릭 네트워크(299)로 전송될 수 있다.
따라서, 실시예들에서는, 사용자의 요구사항 및 데이터 서비스 유형에 따른 소정의 배치 방식을 이용하여 분산 파일 시스템(200)을 구축하는 수단이 제공될 수 있다.
분산 파일 시스템(200)에서, 서버의 확장은 중요한 기능 중 하나일 수 있다. 왜냐하면, 분산 파일 시스템(200)이 초기에 도입될 때에 분산 파일 시스템(200)의 사용량이 예측되기는 어려운 반면, 분산 파일 시스템(200)이 초기에 도입될 때부터 향후의 사용량의 증가를 예상하여 분산 파일 시스템(200)을 대규모로 구축할 경우 엄청난 네트워크 구축 비용 및 서버의 도입 비용이 요구되기 때문이다.
또한, 기존의 팻-트리와 같은 네트워크 구성 방식에서의 서버의 확장은, 네트워크 인프라의 확장 후, 추가된 서버를 네트워크에 연결하는 형태로 이루어질 수 있다. 네트워크 인프라의 확장 또한 높은 네트워크 구축 비용을 요구한다.
분산 파일 시스템(200)을 구성함에 있어서, 아래와 같은 방식들이 사용할 수 있다.
분산 파일 시스템(200)을 구성함에 있어서, 첫 번째로 구성된 n-1 차원의 토러스 네트워크의 서버 그룹은 퍼블릭 네트워크(299)에 연결될 수 있다.
또한, 분산 파일 시스템(200)을 구성함에 있어서, 퍼블릭 네트워크(299)로부터 멀어지는 방향에 따라 n-1 차원의 토러스 네트워크의 서버 그룹이 기존의 구성된 네트워크에 순차적으로 연결될 수 있다.
아래에서는, 도 4 및 도 5를 참조하여 서버를 확장하는 방법이 설명된다.
도 5a 및 도 5b는 일 실시예에 따른 분산 파일 시스템의 서버의 확장을 설명한다.
도 5a는 일 예에 따른 확장 이전의 분산 파일 시스템을 도시한다.
도 5a에서는, 3차원의 토러스 네트워크에 기반한 분산 파일 시스템(200)이 도시되었다.
도 5b는 일 예에 따른 확장 이후의 분산 파일 시스템을 도시한다.
도 5b에서는, 확장 이후의 분산 파일 시스템(200)이 도시되었다.
분산 파일 시스템(200)을 확장하기 위해 새로운 서버 그룹(510)이 구성될 수 있다. 새로운 서버 그룹(510)은 X 축 및 Y 축의 2차원의 토러스 네트워크로 연결될 수 있다. 서버 그룹은 적어도 하나의 서버를 포함할 수 있다.
새로운 서버 그룹(510)이 구성되면, 서버 그룹은 이미 구축된 3차원의 토러스 네트워크에 기반한 분산 파일 시스템(200)에 연결될 수 있다. 새로운 서버 그룹(510)은 Z 축의 기정의된 위치에 연결될 수 있다. 예를 들면, 기정의된 위치는 퍼블릭 네트워크(299)에 가장 가까운 위치일 수 있다.
분산 파일 시스템(200)의 확장을 위해 n-1 차원의 토러스 네트워크의 서버들이 추가될 때, n-1 차원의 네트워크의 서버들은 토러스 네트워크의 축들 중 제1 축에 배치될 수 있다. 또한, n-1 차원의 네트워크의 서버들은 제1 축 중 퍼블릭 네트워크(299)에 가장 가까운 위치에 배치될 수 있다.
제1 축은 z 축일 수 있다. 제1 축은 퍼블릭 네트워크(299)로부터의 거리에 대응하는 축일 수 있다.
전술된 방식은 토러스 네트워크의 특성 및 사용자 데이터에 대한 접근의 패턴을 고려한 것일 수 있다.
즉, 분산 파일 시스템(200)은 최근에 생성된 데이터를 오래 전에 생성된 데이터보다 퍼블릭 네트워크(299)에 더 가깝게 배치할 수 있다. 높은 접근 빈도를 갖는 데이터는 퍼블릭 네트워크(299)에 보다 가깝게 배치되고, 고 성능으로 접근될 수 있다. 낮은 접근 빈도를 갖는 데이터는 퍼블릭 네트워크(299)에 보다 멀게 배치되고, 저 성능으로 접근될 수 있다.
이러한 배치를 통해, 분산 파일 시스템(200)은 적은 네트워크 구축 비용만으로도 전체의 서버들이 퍼블릭 네트워크(299)에 연결된 것과 유사한 성능으로 데이터 서비스를 제공할 수 있다.
또한, 새로운 서버 그룹(510)은 다른 위치에도 추가될 수 있다. 예를 들면, 분산 파일 시스템(200)의 확장을 위해 n-1 차원의 토러스 네트워크의 서버들이 추가될 때, n-1 차원의 토러스 네트워크의 서버들은 토러스 네트워크의 축들 중 제1 축에 배치될 수 있다. n-1 차원의 토러스 네트워크의 서버들은 제1 축 중 퍼블릭 네트워크(299)로부터 가장 먼 위치에 배치될 수 있다.
도 6은 일 예에 따른 서버 그룹 추가 방법의 흐름도이다.
단계(610)에서, 분산 파일 시스템(200)은 2차원의 토러스 네트워크로 연결된 서버 그룹을 구성할 수 있다. 서버 그룹은 X 축 및 Y 축의 2차원의 토러스 네트워크로 연결될 수 있다.
단계(620)에서, 분산 파일 시스템(200)은 기존의 3차원 토러스 네트워크에 다른 서버 그룹이 존재하는지 여부를 검사할 수 있다. 다른 서버 그룹이 존재하지 않을 경우 단계(630)가 수행될 수 있다. 다른 서버 그룹이 존재하는 경우 단계(640)가 수행될 수 있다.
예를 들면, 분산 파일 시스템(200)은 Z 축에 이미 2차원의 토러스 네트워크가 존재하는지 여부를 검사할 수 있다. Z 축에 이미 2차원의 토러스 네트워크가 존재하지 않는 경우 단계(630)가 수행될 수 있다. Z 축에 이미 2차원의 토러스 네트워크가 존재하는 경우 단계(640)가 수행될 수 있다.
단계(630)에서, 분산 파일 시스템(200)은 변수 z의 값을 Z 축에 대하여 설정가능한 최대 값으로 설정할 수 있다.
단계(631)에서, 분산 파일 시스템(200)은 서버 그룹 (X, Y, z)를 구성할 수 있다. 서버 그룹 (X, Y, z)는 토러스 네트워크는 Z 축 좌표 값이 z인 2차원의 토러스 네트워크로 연결된 서버들의 그룹일 수 있다.
단계(632)에서, 분산 파일 시스템(200)은 퍼블릭 네트워크(299)를 서버 그룹 (X, Y, z)에 추가할 수 있다. 말하자면, 분산 파일 시스템(200)은 퍼블릭 네트워크(299)를 서버 그룹 (X, Y, z)에 연결할 수 있다.
단계(640)에서, 분산 파일 시스템(200)은 Z 축에 연결된 2차원의 토러스 네트워크들에 대하여, 토러스 네트워크들의 Z 축의 좌표 값들 중 최소 값을 z에 설정할 수 있다. 최소의 좌표 값은 분산 파일 시스템(200)의 레이어들 중 퍼블릭 네트워크(299)에 연결된 레이어의 Z 축의 좌표 값일 수 있다.
단계(641)에서, 분산 파일 시스템(200)은 서버 그룹 (X, Y, z)를 구성할 수 있다. 서버 그룹 (X, Y, z)는 토러스 네트워크는 Z 축 좌표 값이 z인 2차원의 토러스 네트워크로 연결된 서버들의 그룹일 수 있다.
단계(642)에서, 분산 파일 시스템(200)은 기존의 서버 그룹 (X, Y, z)에 대하여 서버 그룹 (X, Y, z) 및 퍼블릭 네트워크(299) 간의 네트워크 연결을 모두 제거할 수 있다.
단계(643)에서, 분산 파일 시스템(200)은 퍼블릭 네트워크(299)를 서버 그룹 (X, Y, z-1)에 추가할 수 있다. 말하자면, 분산 파일 시스템(200)은 퍼블릭 네트워크(299)를 서버 그룹 (X, Y, z-1)에 연결할 수 있다.
단계(644)에서, 분산 파일 시스템(200)은 z의 값을 z-1로 변경할 수 있다.
단계(650)에서, 분산 파일 시스템(200)은 새로운 서버 그룹 (X, Y, z)를 분산 파일 시스템(200)의 3차원의 토러스 네트워크에 추가할 수 있다.
단계들(630, 631, 632 및 650)에서, 기존의 3차원의 토러스 네트워크에 다른 서버 그룹이 존재하지 않을 경우, 분산 파일 시스템(200)은 새로운 서버 그룹의 z 축의 좌표 값을 설정가능한 최대 값으로 설정할 수 있다. 분산 파일 시스템(200)은 새로운 서버 그룹을 3차원의 토러스 네트워크에 연결할 수 있고, 서버 그룹의 각 서버를 퍼블릭 네트워크(299)에 연결할 수 있다.
단계들(640, 641, 642, 643 및 650)에서, 기존의 3차원의 토러스 네트워크에 다른 서버 그룹이 존재할 경우, 분산 파일 시스템(200)은 Z 축의 방향으로 퍼블릭 네트워크(299)에 가장 가까운 Z 축의 좌표 값을 검출할 수 있고, 2차원의 토러스 네트워크로 연결된 새로운 서버 그룹의 Z 축의 좌표 값을 검출된 좌표 값보다 더 작은 값으로 설정할 수 있다. 분산 파일 시스템(200)은 새로운 서버 그룹을 기존의 3차원의 토러스 네트워크에 연결할 수 있다.
전술된 것과 같은, 서버 그룹 추가 방법에 따르면, 시간의 흐름에 따라 서버 그룹은 Z 축을 따라서 퍼블릭 네트워크(299)로부터 멀어지도록 배치될 수 있다. 따라서, 일반적으로 낮은 사용자 접근 빈도를 갖는 데이터는 데이터 입출력 성능이 낮은 위치로 이동할 수 있다. 또한, 분산 파일 시스템(200)은 저장 공간이 빈 새로운 서버를 Z 축의 제일 앞에 배치함으로써, 향후 높은 사용자 접근 빈도를 가질 것으로 예상되는 새로운 데이터를 데이터 입출력 성능이 가장 높은 위치에서 서비스되게 할 수 있다.
도 7은 3차원의 토러스 네트워크에 연결된 복수의 서버들의 상태 정보를 관리하는 데이터 구조를 나타낸다.
실시예에서, 상태 정보 및 통계 정보는 동일한 의미로 사용될 수 있고, 서로 간에 대체될 수 있다.
분산 파일 시스템(200)의 상태 정보(700)는 마스터 헤드(710)를 포함할 수 있다.
마스터 헤드(710)는 분산 파일 시스템(200)의 전체의 정보를 나타낸다. 마스터 헤드(710)는 분산 파일 시스템(200)의 전체의 총 용량(total capacity), 분산 파일 시스템(200)의 전체의 사용된 용량(used capacity) 및 분산 파일 시스템(200)의 전체의 통계들(statics)을 포함할 수 있다.
마스터 헤드를 통해, 3차원의 토러스 네트워크에 연결된 복수의 서버들의 상태 정보 및 통계 정보가 관리될 수 있다.
분산 파일 시스템(200)의 전체의 서버들을 Z 축을 기준으로 2차원의 그룹들로 분류할 수 있다. 각 그룹은 레이어로 간주될 수 있다. 분산 파일 시스템(200)의 상태 정보(700)는 분산 파일 시스템(200)의 각 레이어의 상태 정보를 포함할 수 있다.
도 7에서는, 제1 레이어의 상태 정보(720) 및 제z 레이어의 상태 정보(760)가 예시적으로 도시되었다.
레이어의 상태 정보는 레이어 헤드를 포함할 수 있다. 도 7에서는 제1 레이어의 상태 정보(720)에 포함되는 제1 레이어 헤드(730)가 도시되었고, 제Z 레이어의 상태 정보(760)에 포함되는 제Z 레이어 헤드(770)가 도시되었다.
레이어의 상태 정보를 통해 2차원의 토러스 네트워크로 연결된 서버 그룹의 상태 정보 및 통계 정보가 관리될 수 있다.
마스터 헤드(710) 및 레이어들의 상태 정보들은 링크드 리스트(linked list) 등을 통해 순차적으로 연결될 수 있다. 예를 들면, 마스터 헤드(710)는 제1 레이어의 상태 정보(720) 또는 제1 레이어의 제1 레이어 헤드(730)를 포인트할 수 있다. 각 레이어는 다음 레이어의 레이어 헤드를 연속적으로 포인트할 수 있다. 이러한 연속적인 링크들은 마지막의 레이어까지 진행될 수 있다.
분산 파일 시스템(200)은 순차적인 연결을 사용하여 레이어들의 상태 정보들을 관리할 수 있다. 분산 파일 시스템(200)은 레이어들의 상태 정보들을 통합하여 마스터 헤드(710)의 정보를 갱신할 수 있다.
레이어 헤드는 레이어의 총 용량, 레이어의 사용된 용량, 레이어의 통계들을 포함할 수 있다.
각 레이어의 상태 정보는 레이어에 속하는 각 서버의 상태 정보를 포함할 수 있다. 도 7에서는, 제1 레이어의 상태 정보(720) 내의 제1 레이어에 속하는 서버 (1, 1, 1)의 상태 정보(740) 및 서버 (X, Y, 1)의 상태 정보(750)가 도시되었다. 또한, 제Z 레이어의 상태 정보(760) 내의 제Z 레이어에 속하는 서버(1, 1, Z)의 상태 정보(780) 및 서버 (X, Y, Z)의 상태 정보(790)가 도시되었다.
서버의 상태 정보는 서버의 상태, 서버의 총 용량, 서버의 사용된 용량 및 서버의 통계들을 포함할 수 있다.
레이어 헤드 및 레이어에 속하는 서버들의 상태 정보들은 링크드 리스트 등을 통해 순차적으로 연결될 수 있다. 예를 들면, 제1 레이어 헤드(730)는 서버 (1, 1, 1)의 상태 정보(740)를 포인트할 수 있다. 각 서버의 상태 정보는 다음 서버의 상태 정보를 연속적으로 포인트할 수 있다. 이러한 연속적인 링크들은 마지막의 서버의 상태 정보까지 진행될 수 있다.
분산 파일 시스템(200)은 순차적인 연결을 사용하여 서버들의 상태 정보들을 관리할 수 있다. 분산 파일 시스템(200)은 서버들의 상태 정보들을 통합하여 레이어 헤드의 정보를 갱신할 수 있다.
도 8은 일 예에 따른 3차원의 토러스 네트워크에 연결된 복수의 서버들의 상태 정보를 수집하기 위한 구성을 나타낸다.
실시예에서, 상태 정보 및 통계 정보는 동일한 의미로 사용될 수 있고, 서로 간에 대체될 수 있다.
전체의 상태 정보를 수집하기 위해, 분산 파일 시스템(200)은 전체의 서버들을 Z 축을 기준으로 2차원의 그룹들로 분류할 수 있다. 각 그룹은 레이어로 간주될 수 있다.
분산 파일 시스템(200)은 각 그룹에 대하여 각 그룹의 레이어 마스터를 설정할 수 있다. 레이어 마스터는 2차원 마스터일 수 있으며, 그룹 마스터일 수 있다.
레이어 마스터는 그룹의 서버들 중 기정의된 조건에 의해 선택된 서버일 수 있다. 또는, 레이어 마스터는 그룹의 서버들 중 기정의된 위치의 서버일 수 있다. 예를 들면, 레이어 마스터는 Z 축의 좌표 값이 z인 그룹의 서버들 중 좌표가 (1, 1, z)인 서버일 수 있다.
레이어 마스터는 그룹의 모든 서버들의 상태 정보들을 수집할 수 있고, 수집된 서버들의 상태 정보들을 사용하여 레이어의 상태 정보를 결정할 수 있다.
도 8에서는, 레이어의 상태 정보를 생성하기 위한 서버의 상태 정보의 흐름들(810 및 820)이 도시되었다.
분산 파일 시스템(200)은 분산 파일 시스템(200)의 복수의 서버들 중 전체 마스터를 결정할 수 있다. 전체 마스터는 3차원 마스터일 수 있으며, 토러스 네트워크의 마스터일 수 있다.
전체 마스터는 분산 파일 시스템(200)의 복수의 서버들 중 기정의된 조건에 의해 선택된 서버일 수 있다. 또는, 전체 마스터는 분산 파일 시스템(200)의 복수의 서버들 중 기정의된 위치의 서버일 수 있다. 예를 들면, 전체 마스터는 분산 파일 시스템(200)의 복수의 서버들 중 좌표가 (1, 1, MIN(Z))인 서버일 수 있다. MIN(Z)는 분산 파일 시스템(200)의 복수의 서버들의 z 좌표 값들 중 최소 값일 수 있다. 또는, MIN(Z)는 Z 축 상의 서버들의 좌표 값들 중 최소 값일 수 있다. 또는, MIN(Z)는 분산 파일 시스템(200)의 복수의 서버들 중 퍼블릭 네트워크(299)에 가장 먼 서버의 z 좌표 값일 수 있다. 말하자면, 전체 마스터는 레이어 마스터들 중 퍼블릭 네트워크(299)로부터 가장 멀리 떨어진 레이어의 레이어 마스터일 수 있다.
각 레이어 마스터에 의해 수집된 레이어의 상태 정보는 전체 마스터로 전송될 수 있다. 전체 마스터는 전송된 레이어의 상태 정보를 사용하여 분산 파일 시스템(200)의 상태 정보를 생성할 수 있다.
분산 파일 시스템(200)의 복수의 서버들에 대한 통계의 정보는, 레이어 마스터들에 의해, 제1 축을 기준으로 n-1의 차원의 단위로 수집될 수 있다. n은 분산 파일 시스템(200)의 토러스 네트워크의 차원을 나타낼 수 있다. 제1 축은 Z 축일 수 있다. 또한, 제1 축은 퍼블릭 네트워크(299)로부터의 거리에 대응하는 축일 수 있다.
제1 축 상의 n-1 차원의 네트워크들의 각각에 대하여 n-1 차원의 마스터가 통계의 정보를 취합할 수 있다. 또한, n 차원의 마스터가 n-1 차원의 네트워크들에 대해 취합된 통계의 정보를 다시 취합할 수 있다. 여기에서, n-1 차원의 마스터는 전술된 레이어 마스터에 대응할 수 있다. n 차원의 마스터는 전술된 전체 마스터에 대응할 수 있다.
도 8에서는, 분산 파일 시스템(200)의 상태 정보를 생성하기 위한 레이어의 상태 정보의 흐름(830)이 도시되었다.
전술된 것처럼, 서버의 상태 정보는 우선 레이어 마스터에 의해 레이어 별로 수집되고, 레이어 별로 수집된 정보는 전체 마스터에 의해 병합된다. 아래의 항목들은 이러한 순차적인 병합이 사용되어야 하는 이유가 될 수 있다.
1) 토러스 네트워크의 특성에 따라, 최단 전송 거리로 상태 정보가 수집될 수 있다. 여기에서, 토러스 네트워크의 특성은 양 서버들 간의 데이터의 전송은 양 서버들의 사이의 서버(들)을 경유해야 한다는 것일 수 있다.
2) 토러스 네트워크 위치 기반(torus network placement awareness) 연산을 위해서는 레이어 별 통계가 필수적으로 요구될 수 있다. 레이어 별 통계를 위한 상태 정보를 수집하기 위해서는, 분산 파일 시스템(200)의 복수의 서버들을 2차원의 그룹들로 분류하고, 그룹 별로 레이어 마스터를 지정하고, 레이어 마스터가 그룹의 서버들의 상태 정보를 취합하는 방식이 가장 효율적일 수 있다.
도 9는 일 예에 따른 서버의 상태 정보를 전송하는 방법의 흐름도이다.
실시예에서, 상태 정보 및 통계 정보는 동일한 의미로 사용될 수 있고, 서로 간에 대체될 수 있다.
도 9의 상태 정보를 전송하는 방법은 분산 파일 시스템(200)의 복수의 서버들의 각 서버에 의해 수행될 수 있다.
아래에서는, 서버 (x, y, z)에 대해서 상태 정보를 전송하는 방법이 설명된다. 서버 (x, y, z)는 서버의 x 좌표 값, y 좌표 값 및 z 좌표 값이 각각 x, y 및 z인 서버일 수 있다.
단계(910)에서, 서버 (x, y, z)는 서버 (x, y, z) 자신의 상태 정보를 수집할 수 있다.
상태 정보는 서버 (x, y, z)의 디스크 정보 및 시스템 정보를 포함할 수 있다.
단계(920)에서, 서버 (x, y, z)는 서버 (x, y, z) 자신이 레이어 마스터 또는 전체 마스터인지 여부를 검사할 수 있다.
예를 들면, 서버 (x, y, z)는 서버 (x, y, z) 자신의 x 좌표 값 및 y 좌표 값이 모두 1이면, 서버 (x, y, z) 자신이 레이어 마스터 또는 전체 마스터인 것으로 판단할 수 있다. 서버 (x, y, z)는 서버 자신의 x 좌표 값 또는 y 좌표 값이 1이 아니면, 서버 (x, y, z) 자신이 레이어 마스터 및 전체 마스터가 아닌 것으로 판단할 수 있다.
서버 (x, y, z) 자신이 레이어 마스터 또는 전체 마스터인 것으로 판단되지 않은 경우, 단계(930)가 수행될 수 있다. 서버 (x, y, z) 자신이 레이어 마스터 또는 전체 마스터인 것으로 판단된 경우, 단계(940)가 수행될 수 있다.
서버 (x, y, z) 자신이 레이어 마스터 또는 전체 마스터인 것으로 판단되지 않은 경우, 단계(930)에서, 서버 (x, y, z)는 서버 (x, y, z) 자신이 속한 레이어의 레이어 마스터에게 서버의 상태 정보를 전송할 수 있다. 레이어 마스터는 서버 (1, 1, z)일 수 있다.
단계(940)가 수행될 경우, 레이어 마스터인 서버 (x, y, z)의 x 좌표 값 및 y 좌표 값은 1일 수 있다. 따라서, 서버 (x, y, z)는 서버 (1, 1, z)일 수 있다.
단계(940)에서, 서버 (1, 1, z)는 서버 (1, 1, z) 자신이 전체 마스터인지 여부를 검사할 수 있다.
예를 들면, 서버 (1, 1, z)는 서버 (1, 1, z) 자신의 z 값이 MIN(Z)이면, 서버 (1, 1, z) 자신이 전체 마스터인 것으로 판단할 수 있다. 서버 (1, 1, z)는 서버 (1, 1, z) 자신의 z 값이 MIN(Z)이 아니면, 서버 (1, 1, z) 자신이 전체 마스터가 아니고, 레이어 마스터인 것으로 판단할 수 있다. MIN(Z)는 Z 축 상의 좌표 값들 중 최소 값일 수 있다. 또는, MIN(Z)는 분산 파일 시스템(200)의 복수의 서버들의 z 좌표 값들 중 최소 값일 수 있다.
서버 (1, 1, z) 자신이 전체 마스터인 것으로 판단되지 않은 경우, 단계(950)가 수행될 수 있다. 서버 (1, 1, z) 자신이 전체 마스터인 것으로 판단된 경우, 단계(960)가 수행될 수 있다.
단계(950)에서, 서버 (1, 1, z)는 서버 (1, 1, z) 자신이 관리하는 제z 레이어의 상태 정보에 서버 (1, 1, z) 자신의 상태 정보를 갱신할 수 있다.
단계(951)에서, 서버 (1, 1, z)는 제z 레이어의 상태 정보의 제z 레이어 헤드를 갱신할 수 있다.
단계(952)에서, 서버 (1, 1, z)는 제z 레이어의 상태 정보를 전체 마스터인 서버 (1, 1, MIN(Z))로 전송할 수 있다.
단계(960)가 수행될 경우, 전체 마스터인 서버 (1, 1, z)의 z 좌표 값은 MIN(Z)일 수 있다. 따라서, 서버 (1, 1, z)는 서버 (1, 1, MIN(Z))일 수 있다.
단계(960)에서, 서버 (1, 1, MIN(Z))는 자신이 관리하는 제MIN(Z) 레이어의 상태 정보에 자신의 상태 정보를 갱신할 수 있다.
단계(961)에서, 서버 (1, 1, MIN(Z))는 제MIN(Z) 레이어의 상태 정보의 제MIN(Z) 레이어 헤드를 갱신할 수 있다.
단계(962)에서, 서버 (1, 1, MIN(Z))는 마스터 헤드(710)를 갱신할 수 있다.
단계(930), 단계(952) 또는 단계(962)가 수행되면, 단계(970)가 수행될 수 있다.
단계(970)에서, 서버 (x, y, z)는 기정의된 시간만큼 슬립(sleep)할 수 있다.
단계(970)가 수행된 후, 다시 단계(910)가 반복될 수 있다.
토러스 네트워크에서는, 서버들의 연결들의 차원에 따라서 서로 다른 네트워크 경로들이 존재할 수 있다. 즉, 3차원의 토러스 네트워크에서는, 3방향의 네트워크 경로들이 존재할 수 있다. 따라서, 토러스 네트워크의 효과적인 사용을 위해서는, 부하가 네트워크 경로들에 적절하게 분배되어야 할 수 있다. 만약, 3개의 네트워크 경로들이 존재하더라도, 한 방향 또는 일부의 네트워크 경로에만 부하가 집중될 경우에는, 단일 경로의 네트워크 대역폭 만이 사용될 수 있다.
전술된 문제를 해결하기 위해, 실시예는 분산 파일 시스템(200)의 서로 상이한 부하들을 토러스 네트워크의 각 축에 독립적으로 배치할 수 있다. 분산 파일 시스템(200)의 서로 상이한 부하들은 토러스 네트워크의 축들을 기준으로 분배될 수 있다.
서로 상이한 부하들은 입출력 부하, 데이터 복제(replication) 부하 및 스트라이핑 부하를 포함할 수 있다. 분산 파일 시스템(200)의 서로 상이한 부하들을 토러스 네트워크의 각 축에 독립적으로 배치함으로써 토러스 네트워크의 전체의 대역폭이 이용될 수 있다.
도 10은 분산 파일 시스템의 서로 상이한 부하들을 토러스 네트워크의 각 축에 분배하는 방법을 도시한다.
분산 파일 시스템의 서로 상이한 부하들을 토러스 네트워크의 각 축에 분배하기 위해서는, 분산 파일 시스템의 부하의 특성이 고려되어야 한다. 분산 파일 시스템의 부하의 특성은 아래와 같을 수 있다.
1) 데이터 서비스 부하에 대한 전송은 분산 파일 시스템(200) 및 퍼블릭 네트워크(299) 간의 연결을 통해 이루어질 수 있다. 데이터 서비스 부하는 사용자 입출력에 관련된 부하일 수 있다.
2) 데이터 복제 부하에 대한 전송은, 데이터 서비스 경로가 아닌, 분산 파일 시스템(200)의 서버들 간에서 이루어질 수 있다.
3) 스트라이핑된 데이터에 대한 독출 및 기입은 서버들이 체인으로 연결된 형태로 이루어질 수 있다. 또한, 스트라이핑된 데이터의 첫 번째의 서버에서만 퍼블릭 네트워크(299)와의 연결을 통해 전송될 수 있다.
전술된 것과 같은 특성을 고려하면, 데이터 서비스 부하는, 퍼블릭 네트워크(299)에 연결된 방향, 즉 z 축에 배치될 수 있다. 또한, 분산 파일 시스템(200)의 내부 부하는 토러스 네트워크의 축들 중 제1 축을 제외한 나머지의 축에 분배될 수 있다. 제1 축은 Z 축일 수 있다. 분산 파일 시스템(200)의 내부 부하는 퍼블릭 네트워크(299)와는 독립된 축, 즉 X 축 및 Y 축에 배치될 수 있다. 내부 부하는 데이터 복제 부하 및 스트라이핑 부하를 포함할 수 있다.
이러한 토러스 네트워크의 축에 따른 부하의 배치는, 데이터 서비스 부하는 퍼블릭 네트워크(299)의 경로가 담당하게 할 수 있고, 다른 부하는 토러스 네트워크의 내부의 경로가 담당하게 할 수 있다. 따라서, 이러한 부하의 배치는, 주어진 퍼블릭 네트워크(299)의 규모에서, 데이터 서비스를 위해 모든 퍼블릭 네트워크(299)의 모든 대역폭을 활용되게 할 수 있다.
3차원의 토러스 네트워크에서 데이터 서비스 부하, 데이터 복제 부하 및 스트라이핑 부하를 서로 간에 독립된 네트워크 경로에 할당하기 위해서는 아래에서 설명될 것과 같은 데이터 서비스를 위한 데이터 공간 할당, 데이터 복제를 위한 데이터 공간 할당 및 스트라이핑을 위한 데이터 공간 할당이 각각 요구된다.
도 11은 일 예에 따른 데이터 서비스를 위한 데이터 공간 할당 방법의 흐름도이다.
도 11에서는, 데이터 서비스를 위한 데이터 공간 할당 요청을 처리하기 위한 데이터 공간 할당 방법이 설명된다.
단계(1110)에서, 분산 파일 시스템(200)은 MIN(Z) 및 MAX(Z)를 획득할 수 있다.
MIN(Z)는 분산 파일 시스템(200)의 복수의 서버들의 z 좌표 값들 중 최소의 값일 수 있다. 또는, MIN(Z)는 Z 축 상의 서버들의 좌표 값들 중 최소 값일 수 있다. 또는, MIN(Z)는 분산 파일 시스템(200)의 복수의 서버들 중 퍼블릭 네트워크(299)에 가장 가까운 서버의 z 좌표 값일 수 있다.
MAX(Z)는 분산 파일 시스템(200)의 복수의 서버들의 z 좌표 값들 중 최대 값일 수 있다. 또는, MAX(Z)는 Z 축 상의 서버들의 좌표 값들 중 최대 값일 수 있다. 또는, MAX(Z)는 분산 파일 시스템(200)의 복수의 서버들 중 퍼블릭 네트워크(299)에 가장 먼 서버의 z 좌표 값일 수 있다.
단계(1120)에서, 분산 파일 시스템(200)은 변수 z의 값으로 MIN(Z)을 부여(assign)할 수 있다.
변수 z는 현재 데이터 공간 할당 여부가 검사되는 레이어를 나타낼 수 있다. 분산 파일 시스템(200)은 제MIN(Z) 레이어를 현재 데이터 공간 할당 여부가 검사되는 레이어로서 설정할 수 있다.
데이터 공간 할당 여부는 레이어에 대해서 검사될 수 있다. 말하자면, 분산 파일 시스템(200)은 2차원의 서버들에 대하여 데이터 공간 할당이 가능한지 여부를 검사할 수 있다.
단계(1130)에서, 분산 파일 시스템(200)은 z가 MAX(Z)보다 더 큰지 여부를 검사할 수 있다.
z가 MAX(Z)보다 더 크다는 것은, 어떤 레이어에도 데이터 공간 할당이 불가능하다는 것을 나타낼 수 있다.
z가 MAX(Z)보다 더 크기 않은 경우 단계(1140)가 수행될 수 있다. z가 MAX(Z)보다 더 큰 경우 단계(1195)가 수행될 수 있다.
단계(1140)에서, 분산 파일 시스템(200) 또는 제z 레이어의 레이어 마스터는 제z 레이어의 상태 정보로부터 제z 레이어 헤드를 획득할 수 있다. 분산 파일 시스템(200)은 제z 레이어 헤드로부터 레이어의 사용된 용량 및 레이어의 총 용량을 획득할 수 있다.
단계(1150)에서, 분산 파일 시스템(200)은 레이어 사용된 용량 비율이 기정의된 값의 이하인지 여부를 검사할 수 있다. 레이어 사용된 용량 비율은 레이어의 사용된 용량을 레이어의 총 용량으로 나눈 값일 수 있다.
레이어 사용된 용량 비율이 기정의된 값이 이하라는 것은, 제z 레이어의 사용된 용량 및 레이어의 총 용량의 비율이 기정의된 값의 이하라는 것을 나타낼 수 있다. 또한, 레이어 사용된 용량 비율이 기정의된 값이 이하라는 것은, 제z 레이어에 데이터 공간 할당을 위한 용량이 남아있다는 것을 의미할 수 있다.
레이어 사용된 용량 비율이 기정의된 값의 이하가 아니면 단계(1160)가 수행될 수 있다. 레이어 사용된 용량 비율이 기정의된 값의 이하이면 단계(1170)가 수행될 수 있다.
단계(1160)에서, 분산 파일 시스템(200)은 z의 값을 1만큼 증가시킬 수 있다.
분산 파일 시스템(200)은 z의 값을 1만큼 증가시킴으로써 현재의 레이어의 다음의 레이어에 대해서 데이터 공간 할당 여부가 검사되도록 설정할 수 있다. 예를 들면, 데이터 공간 할당의 검사의 대상이 되는 2차원의 서버 그룹이 Z 축을 기준으로 1만큼 이동할 수 있다.
단계(1160)가 수행된 후 다음의 레이어에 대해서 데이터 공간 할당 여부를 검사하기 위해 다시 단계(1130)가 수행될 수 있다.
단계들(1120, 1130 및 1160)를 통해, 분산 파일 시스템(200)은 데이터 서비스를 위한 데이터 공간 할당 요청에 대하여 데이터 공간 할당 여부를 퍼블릭 네트워크(299)에 가장 가까운 레이어에서부터 퍼블릭 네트워크(299)로부터 멀어지는 방향으로 검사할 수 있다.
현재의 제z 레이어에서 데이터 공간 할당이 이루어질 경우, 단계(1170)가 수행될 수 있다. 말하자면, 데이터 공간 할당이 이루어질 레이어가 결졍되면, 단계(1170)가 수행될 수 있다.
단계(1170)에서, 분산 파일 시스템(200) 또는 제z 레이어의 레이어 마스터는 제z 레이어의 상태 정보에 기반하여 제z 레이어의 서버들 중 데이터 공간을 할당할 서버 (x, y, z)를 결정할 수 있다.
단계(1180)에서, 분산 파일 시스템(200), 제z 레이어의 레이어 마스터 또는 서버 (x, y, z)는 서버 (x, y, z)에서 데이터 서비스를 위한 데이터 공간을 할당할 수 있다.
단계(1190)에서, 분산 파일 시스템(200), 제z 레이어의 레이어 마스터 또는 서버 (x, y, z)는 데이터 서비스를 위한 데이터 공간 할당에 대한 반환 값을 '성공'으로 설정할 수 있다.
분산 파일 시스템(200)의 모든 레이어들에서 데이터 공간 할당이 가능하지 않으면, 단계(1195)가 수행될 수 있다.
단계(1195)에서, 분산 파일 시스템(200)은 데이터 서비스를 위한 데이터 공간 할당에 대한 반환 값을 '실패'로 설정할 수 있다.
실시예를 참조하여 전술된 것과 같이, 분산 파일 시스템(200)의 데이터 서비스 부하는 토러스 네트워크의 n차원의 축들 중 제1 축을 따라서 분배될 수 있다. 여기에서, 제1 축은 Z 축을 나타낼 수 있다. 제1 축은 퍼블릭 네트워크(299)로부터의 거리에 대응하는 축일 수 있다.
분산 파일 시스템(200)은 데이터 서비스를 위한 데이터 공간 할당 요청에 대하여 분산 파일 시스템(200)의 서버들 중 퍼블릭 네트워크(299)에 가까운 서버의 데이터 공간 또는 퍼블릭 네트워크(299)에 가까운 레이어의 데이터 공간을 우선적으로 할당할 수 있다.
전술된 데이터 서비스를 위한 데이터 공간 할당 방식은 새롭게 생성되는 데이터가 퍼블릭 네트워크(299)에 가깝게 위치하게 할 수 있다. 새롭게 생성되는 데이터에 대한 접근 빈도는 높을 것이라 가정될 수 있다. 따라서, 전술된 데이터 공간의 할당 방식은 높은 접근 빈도를 갖는 데이터의 입출력 성능을 향상시킬 수 있다.
도 12는 일 예에 따른 데이터 복제를 위한 데이터 공간 할당 방법의 흐름도이다.
도 12에서는, 데이터 복제를 위한 데이터 공간 할당 요청을 처리하기 위한 데이터 공간 할당 방법이 설명된다.
실시예에서는, 데이터 복제 부하가 Y 축에 배치되는 것으로 설명된다. 말하자면, 분산 파일 시스템(200)은 데이터 복제를 위한 부하 또는 네트워크를 Y축에 배치할 수 있다.
서버 (x, y, z)는 원본 데이터를 저장할 수 있다. 분산 파일 시스템(200)은 원본 데이터의 데이터 복제를 위한 데이터 공간 할당을 처리할 수 있다. 데이터 복제를 위한 데이터 공간 할당은 도 11을 참조하여 전술된 데이터 서비스를 위한 데이터 공간 할당과 유사할 수 있다. 그러나, 데이터 복제를 위한 데이터 공간 할당 및 데이터 서비스를 위한 데이터 공간 할당은 아래와 같은 측면에서 서로 다를 수 있다.
1) 데이터 복제를 위한 데이터 공간 할당은, (x, y+1, z)의 위치로부터 Y 축의 방향으로 진행될 수 있다. 데이터 공간 할당 여부는, 원본 데이터가 존재하는 서버 (x, y, z)가 위치한 Y 축 상의 서버들에 대해서 검사될 수 있다.
2) 다음의 y 좌표를 결정함에 있어서, 턴-어라운드(turn-around) 방식이 적용될 수 있다. 말하자면, 원형의 토러스 네트워크가 고려될 수 있다.
단계(1210)에서, 분산 파일 시스템(200)은 변수 y'의 값으로 y+1을 부여할 수 있다.
전술된 것처럼, 서버 (x, y, z)는 원본 데이터를 저장할 수 있다. 서버 (x, y', z)는 현재 데이터 복제를 위한 데이터 공간 할당 여부가 검사되는 서버를 나타낼 수 있다. y'는 서버 (x, y', z)의 y 좌표일 수 있다.
분산 파일 시스템(200)은 Y 축을 따라서 데이터 복제를 위한 데이터 공간 할당 여부가 검사되는 서버 (x, y', z)를 선택할 수 있다. 데이터 복제를 위한 데이터 공간 할당 여부가 검사되는 서버 (x, y', z)는 원본 데이터가 존재하는 서버 (x, y, z)에 Y 축 상에서 인접하는 서버일 수 있다.
원본 데이터가 존재하는 서버 (x, y, z) 및 데이터 복제를 위한 데이터 공간 할당 여부가 검사되는 서버 (x, y', z)는 동일한 Y 축 상에 위치할 수 있다.
단계(1220)에서, 분산 파일 시스템(200)은 y' 및 y가 동일한지 여부를 검사할 수 있다.
y' 및 y가 동일하다는 것은, 데이터 복제를 위한 데이터 공간 할당 여부의 검사를 위해, 원본 데이터가 존재하는 서버 (x, y, z)와 x 좌표 및 z 좌표가 동일한 모든 서버들에 대해서 데이터 복제를 위한 데이터 공간 할당 여부의 검사가 이미 이루어졌고, 모든 서버들에 대해서 검사가 이루어졌음에도 불구하고 어떤 서버에서도 데이터 공간 할당이 불가능하다는 것을 나타낼 수 있다.
y' 및 y가 동일하지 않은 경우, 단계(1230)가 수행될 수 있다. y' 및 y가 동일한 경우, 단계(1280)가 수행될 수 있다.
단계(1230)에서, 분산 파일 시스템(200)은 제z 레이어의 상태 정보로부터 서버 (x, y', z)의 상태 정보를 획득할 수 있다. 분산 파일 시스템(200)은 서버 (x, y', z)의 상태 정보로부터 서버 (x, y', z)의 사용된 용량 및 서버 (x, y', z)의 총 용량을 획득할 수 있다.
단계(1240)에서, 분산 파일 시스템(200)은 서버 사용된 용량 비율이 기정의된 값의 이하인지 여부를 검사할 수 있다. 서버 사용된 용량 비율은 서버 (x, y', z)의 사용된 용량을 서버 (x, y', z)의 총 용량으로 나눈 값일 수 있다.
서버 사용된 용량 비율이 기정의된 값이 이하라는 것은, 서버의 사용된 용량 및 서버의 총 용량의 비율이 기정의된 값의 이하라는 것을 나타낼 수 있다. 또한, 서버 사용된 용량 비율이 기정의된 값이 이하라는 것은, 서버 (x, y', z)에 데이터 공간 할당을 위한 용량이 남아있다는 것을 의미할 수 있다.
서버 사용된 용량 비율이 기정의된 값의 이하가 아니면 단계(1250)가 수행될 수 있다. 서버 사용된 용량 비율이 기정의된 값의 이하이면 단계(1260)가 수행될 수 있다.
단계(1250)에서, 분산 파일 시스템(200)은 y'의 값을 (y'+1)%(MAX(Y)+1)로 설정할 수 있다. MAX(Y)는 y'가 가질 수 있는 최대 값일 수 있다. MAX(Y)는 분산 파일 시스템(200)의 복수의 서버들의 y 좌표 값들 중 최대 값일 수 있다. 또는, MAX(Y)는 Y 축 상의 서버들의 좌표 값들 중 최대 값일 수 있다.
분산 파일 시스템(200)은 턴-어라운드 방식으로 y'의 값을 1만큼 증가시킬 수 있다.
분산 파일 시스템(200)은 y'의 값을 턴-어라운드 방식으로 1만큼 증가시킴으로써 현재의 서버의 다음의 서버에 대해서 데이터 공간 할당 여부가 검사되도록 설정할 수 있다. 예를 들면, 데이터 공간 할당의 검사의 대상이 되는 서버가 Y 축을 기준으로 1만큼 이동할 수 있다. 데이터 공간 할당의 검사의 대상이 되었던 서버 (x, y', z)의 y 좌표가 최대 값이었다면, 분산 파일 시스템(200)은 다음의 서버 (x, 1, z)에 대해서 데이터 공간 할당 여부가 검사되도록 설정할 수 있다.
단계(1250)가 수행된 후 다음의 서버에 대해서 데이터 공간 할당 여부를 검사하기 위해 다시 단계(1220)가 수행될 수 있다.
단계들(1210, 1220 및 1250)을 통해, 파일 시스템(200)은 데이터 복제를 위한 데이터 공간 할당 요청에 대하여 데이터 공간 할당 여부를 서버 (x, y+1, z)로부터 Y 축의 방향으로 턴-어라운드 방식으로 검사할 수 있다. 서버 (x, y+1, z)는 원본 데이터가 존재하는 서버 (x, y, z)에 대하여 Y 축의 방향으로 1만큼 옆에 위치한 서버일 수 있다.
현재의 서버 (x, y', z)에서 데이터 공간 할당이 이루어질 경우, 단계(1260)가 수행될 수 있다. 말하자면, 데이터 공간 할당이 이루어질 서버가 결졍되면, 단계(1260)가 수행될 수 있다.
단계(1260)에서, 분산 파일 시스템(200) 또는 서버 (x, y', z)는 서버 (x, y', z)에서 데이터 복제를 위한 데이터 공간을 할당할 수 있다.
단계(1270)에서, 분산 파일 시스템(200) 또는 서버 (x, y', z)는 데이터 복제를 위한 데이터 공간 할당에 대한 반환 값을 '성공'으로 설정할 수 있다.
서버 (x, y, z)가 위치한 Y 축에 위치한 모든 다른 서버들에서 데이터 공간 할당이 가능하지 않으면, 단계(1280)가 수행될 수 있다.
단계(1280)에서, 분산 파일 시스템(200)은 데이터 복제를 위한 데이터 공간 할당에 대한 반환 값을 '실패'로 설정할 수 있다.
실시예를 참조하여 전술된 것과 같이, 분산 파일 시스템(200)의 데이터 복제 부하는 토러스 네트워크의 n차원의 축들 중 제2 축을 따라서 분배될 수 있다. 여기에서, 제2 축은 토러스 네트워크의 n차원의 축들 중 제1 축을 제외한 하나의 축일 수 있다. 제2 축은 Y 축일 수 있다. 제1 축은 Z 축일 수 있다.
분산 파일 시스템(200)은 데이터 복제를 위한 데이터 공간 할당 요청에 대하여 제2 축을 따라 원본 데이터가 존재하는 서버에 가까운 위치부터 원본 데이터가 존재하는 서버로부터 멀어지는 방향으로 턴 어라운드 방식을 사용하여 원본 데이터의 데이터 복제를 위한 데이터 공간을 할당할 서버를 결정할 수 있다.
전술된 데이터 복제를 위한 데이터 공간 할당 방식은 데이터 복제 부하가 Y 축을 통해 이루어질 수 있게 할 수 있다.
도 13은 일 예에 따른 스트라이핑을 위한 데이터 공간 할당 방법의 흐름도이다.
스트라이핑은 데이터에 대한 처리를 m개의 서버들에 분산하는 것을 의미할 수 있다. 예를 들어, 스트라이핑은 네트워크 레이드(RAID) 및 N+M 등을 포함할 수 있다. 데이터에 대한 처리는 데이터 독출 및 데이터 기입을 포함할 수 있다.
스트라이핑을 위해서는, 데이터를 저장할 m개의 서버들이 선택되어야 하며, m개의 서버들의 각각에서 데이터 공간이 확보되어야 할 수 있다. 스트라이핑을 위한 데이터 공간은 제1 데이터 공간 내지 제m 데이터 공간을 포함할 수 있다. 제1 데이터 공간 내지 제m 데이터 공간은 제1 서버 내지 제m 서버의 각각에 저장될 수 있다.
아래에서는, 스트라이핑을 위한 데이터 공간 할당 요청을 처리하기 위한 데이터 공간 할당 방법이 설명된다.
실시예에서는, 스트라이핑 부하가 X 축에 배치되는 것으로 설명된다. 말하자면, 분산 파일 시스템(200)은 스트라이핑을 위한 부하 또는 네트워크를 X축에 배치할 수 있다.
단계(1310)에서, 분산 파일 시스템(200)은 스트라이핑을 위한 첫 번째의 데이터 공간을 할당할 수 있다. 데이터 공간의 할당은 데이터 서비스를 위한 데이터 공간 할당 요청에 의해 이루어질 수 있다. 데이터 공간 할당 요청은 도 11을 참조하여 전술된 실시예에 의해 수행될 수 있다. 예를 들면, 단계(1310)은 단계들(1110, 1120, 1130, 1140, 1150, 1160, 1170, 1180, 1190 및 1195)의 적어도 일부를 포함할 수 있다.
단계(1310)에 의해, 스트라이핑을 위한 데이터 공간이 할당될 첫 번째의 서버 (x, y, z)가 결정될 수 있다.
단계(1320)에서, 분산 파일 시스템(200)은 스트라이핑을 위한 첫 번째의 데이터 공간의 할당이 성공했는지 여부를 검사할 수 있다. 또는, 분산 파일 시스템(200)은 스트라이핑을 위한 첫 번째의 데이터 공간 할당 요청이 성공했는지 여부를 검사할 수 있다.
할당 또는 할당 요청이 성공한 경우, 단계(1330)가 수행될 수 있다. 할당 또는 할당 요청이 성공하지 않은 경우, 단계(1395)가 수행될 수 있다.
스트라이핑을 위한 데이터 공간이 할당될 첫 번째의 서버 (x, y, z)가 결정되면, 아래의 단계들(1330, 1340, 1345, 1350, 1355, 1360, 1365, 1370, 1380, 1390 및 1395)에서, 스트라이핑을 위한 데이터 공간이 할당될 나머지의 (m-1) 개의 서버들이 결정될 수 있다. 분산 파일 시스템(200)은 첫 번째의 서버 (x, y, z)가 결정되면, 위치 (x+1, y, z)에서부터 X 축의 방향으로 진행하면서 데이터 공간이 할당될 m-1개의 나머지의 서버를 결정할 수 있다. X 축의 방향으로의 진행이 이루어지면서, 마지막의 서버에 대한 검사가 수행되면, 턴 어라운드 방식에 따라 위치 (1, y, z)의 서버에 대해서 검사가 계속될 수 있다.
단계(1330)에서, 분산 파일 시스템(200)은 첫 번째의 데이터 공간이 할당된 서버의 위치 (x, y, z)를 획득할 수 있다. 분산 파일 시스템(200)은 변수 x의 값, 변수 y의 값 및 변수 z의 값을 각각 설정할 수 있다.
단계(1340)에서, 분산 파일 시스템(200)은 변수 m'의 값으로 1을 부여할 수 있다.
m'의 값은 스트라이핑을 위해 데이터 공간이 할당된 서버들의 개수를 나타낼 수 있다. 분산 파일 시스템(200)은 m'의 값을 1로 설정함으로써 1개의 서버에서 스트라이핑을 위한 데이터 공간이 할당되었음을 나타낼 수 있다.
단계(1345)에서, 분산 파일 시스템(200)은 x'의 값으로 x+1을 부여할 수 있다.
전술된 것처럼, 서버 (x, y, z)는 스트라이핑을 위해 데이터 공간이 할당된 첫 번째의 서버일 수 있다. 서버 (x', y, z)는 현재 스트라이핑을 위한 데이터 공간 할당 여부가 검사되는 서버를 나타낼 수 있다. x'는 서버 (x', y, z)의 x 좌표일 수 있다.
분산 파일 시스템(200)은 X 축을 따라서 스트라이핑을 위한 데이터 공간 할당 여부가 검사되는 서버 (x', y, z)를 선택할 수 있다. 스트라이핑을 위한 데이터 공간 할당 여부가 검사되는 서버 (x', y, z)는 스트라이핑을 위해 데이터 공간이 할당된 첫 번째의 서버 (x, y, z)에 X 축 상에서 인접하는 서버일 수 있다.
이미 스트라이핑을 위해 데이터 공간이 할당된 서버 (x, y, z) 및 스트라이핑을 위한 데이터 공간 할당 여부가 검사되는 서버 (x', y, z)는 동일한 X 축 상에 위치할 수 있다.
단계(1350)에서, 분산 파일 시스템(200)은 m'의 값이 m보다 작은지 여부를 검사할 수 있다.
m'의 값이 m보다 작다는 것은 스트라이핑을 위해 데이터 공간이 할당된 서버들의 개수가 스트라이핑을 위한 데이터 공간의 할당이 요구되는 서버들의 개수보다 작다는 것을 의미할 수 있다.
반대로, m'의 값이 m보다 작지 않다는 것은 이미 요구되는 개수만큼의 서버들이 스트라이핑을 위한 데이터 공간을 할당했다는 것을 의미할 수 있다.
m'의 값이 m보다 작은 경우, 추가적인 데이터 공간 할당을 위해 단계(1355)가 수행될 수 있다. m'의 값이 m보다 작지 않은 경우, 단계(1390)가 수행될 수 있다.
단계(1355)에서, 분산 파일 시스템(200)은 x' 및 x가 동일한지 여부를 검사할 수 있다.
x' 및 x가 동일하다는 것은, 스트라이핑을 위한 데이터 공간 할당 여부의 검사를 위해, 스트라이핑을 위해 데이터 공간이 할당된 첫 번째의 서버 (x, y, z)와 y 좌표 및 z 좌표가 동일한 모든 서버들에 대해서 스트라이핑을 위한 데이터 공간 할당 여부의 검사가 이미 이루어졌고, 모든 서버들에 대해서 검사가 이루어졌음에도 불구하고 m개의 서버들에서의 데이터 공간 할당이 불가능하다는 것을 나타낼 수 있다.
x' 및 x가 동일한 경우, 단계(1395)가 수행될 수 있다. x' 및 x가 동일하지 않은 경우, 단계(1360)가 수행될 수 있다.
단계(1360)에서, 분산 파일 시스템(200)은 제z 레이어의 상태 정보로부터 서버 (x', y, z)의 상태 정보를 획득할 수 있다. 분산 파일 시스템(200)은 서버 (x', y, z)의 상태 정보로부터 서버 (x', y, z)의 사용된 용량 및 서버 (x', y, z)의 총 용량을 획득할 수 있다.
단계(1365)에서, 분산 파일 시스템(200)은 서버 사용된 용량 비율이 기정의된 값의 이하인지 여부를 검사할 수 있다. 서버 사용된 용량 비율은 서버 (x', y, z)의 사용된 용량을 서버 (x', y, z)의 총 용량으로 나눈 값일 수 있다.
서버 사용된 용량 비율이 기정의된 값이 이하라는 것은, 서버의 사용된 용량 및 서버의 총 용량의 비율이 기정의된 값의 이하라는 것을 나타낼 수 있다. 또한, 서버 사용된 용량 비율이 기정의된 값이 이하라는 것은, 서버 (x', y, z)에 데이터 공간 할당을 위한 용량이 남아있다는 것을 의미할 수 있다.
서버 사용된 용량 비율이 기정의된 값의 이하가 아니면 단계(1380)가 수행될 수 있다. 서버 사용된 용량 비율이 기정의된 값의 이하이면 단계(1370)가 수행될 수 있다.
단계(1370)에서, 분산 파일 시스템(200) 또는 서버 (x', y, z)는 서버 (x', y, z)에서 스트라이핑을 위한 데이터 공간을 할당할 수 있다.
단계(1370)를 통해 스트라이핑을 위한 데이터 공간이 할당될 추가의 서버 (x', y, z)가 결정될 수 있다.
단계(1375)에서, 분산 파일 시스템(200)은 m'의 값을 1 증가시킬 수 있다.
분산 파일 시스템(200)은 m'의 값을 1 증가시킴으로써 스트라이핑을 위한 데이터 공간을 할당한 서버들의 개수가 1 증가하였다는 것을 나타낼 수 있다.
단계(1380)에서, 분산 파일 시스템(200)은 x'의 값을 (x'+1)%(MAX(X)+1)로 설정할 수 있다. MAX(X)는 X'가 가질 수 있는 최대 값일 수 있다. MAX(X)는 분산 파일 시스템(200)의 복수의 서버들의 x 좌표 값들 중 최대 값일 수 있다. 또는, MAX(X)는 X 축 상의 서버들의 좌표 값들 중 최대 값일 수 있다.
분산 파일 시스템(200)은 턴-어라운드 방식으로 x의 값을 1만큼 증가시킬 수 있다.
분산 파일 시스템(200)은 x의 값을 턴-어라운드 방식으로 1만큼 증가시킴으로써 현재의 서버의 다음의 서버에 대해서 데이터 공간 할당 여부가 검사되도록 설정할 수 있다. 예를 들면, 데이터 공간 할당의 검사의 대상이 되는 서버가 X 축을 기준으로 1만큼 이동할 수 있다. 데이터 공간 할당의 검사의 대상이 되었던 서버 (x', y, z)의 x 좌표가 최대 값이었다면, 분산 파일 시스템(200)은 다음의 서버 (1, y, z)에 대해서 데이터 공간 할당 여부가 검사되도록 설정할 수 있다.
단계(1380)가 수행된 후 다음의 서버에 대해서 데이터 공간 할당 여부를 검사하기 위해 다시 단계(1350)가 수행될 수 있다.
단계들(1345, 1355 및 1380)을 통해, 파일 시스템(200)은 스트라이핑을 위한 데이터 공간 할당 요청에 대하여 데이터 공간 할당 여부를 스트라이핑을 위해 데이터 공간이 할당된 첫 번째의 서버 (x, y, z)로부터 X 축의 방향으로 턴-어라운드 방식으로 검사할 수 있다. 서버 (x+1, y, z)는 스트라이핑을 위해 데이터 공간이 할당된 첫 번째의 서버 (x, y, z)에 대하여 X 축의 방향으로 1만큼 옆에 위치한 서버일 수 있다.
m개의 서버들에 대해서 스트라이핑을 위한 데이터 공간의 할당이 이루어진 경우, 단계(1390)가 수행될 수 있다.
단계(1390)에서, 분산 파일 시스템(200) 또는 서버 (x', y, z)는 스트라이핑을 위한 데이터 공간 할당에 대한 반환 값을 '성공'으로 설정할 수 있다.
m개의 서버들에 대해서 스트라이핑을 위한 데이터 공간의 할당이 이루어지지 않은 경우, 단계(1395)가 수행될 수 있다.
단계(1395)에서, 분산 파일 시스템(200)은 데이터 복제를 위한 데이터 공간 할당에 대한 반환 값을 '실패'로 설정할 수 있다.
실시예를 참조하여 전술된 것과 같이, 분산 파일 시스템(200)의 스트라이핑 부하는 토러스 네트워크의 n차원의 축들 중 제3 축을 따라서 분배될 수 있다. 여기에서, 제3 축은 토러스 네트워크의 n차원의 축들 중 제1 축 및 제2 축을 제외한 하나의 축일 수 있다. 제3 축은 X 축일 수 있다. 제1 축은 Z 축일 수 있다. 제2 축은 Y 축일 수 있다.
분산 파일 시스템(200)은 스트라이핑에 대하여 복수의 서버들의 데이터 공간들을 할당할 수 있다. 또한, 분산 파일 시스템(200)은 분산 파일 시스템의 복수의 서버들 중 데이터 공간들의 제1 데이터 공간을 할당할 제1 서버를 결정할 수 있다. 분산 파일 시스템(200) 제3 축을 따라 제1 서버에 가까운 위치에서 제1 서버로부터 멀어지는 방향으로 서버들 중에서 데이터 공간들의 나머지 데이터 공간을 할당할 서버를 결정할 수 있다.
도 14는 일 예에 따른 스트라이핑 또는 데이터 복제를 위한 입출력 프로토콜을 설명한다.
전술된 것처럼, 분산 파일 시스템(200)의 네트워크 부하는 분산 파일 시스템(200)의 복수의 서버들을 연결하는 토러스 네트워크의 축들의 각 축으로 분배될 수 있다. 분산 파일 시스템(200)에 있어서, 가장 적은 비용으로 스트라이핑 및 데이터 복제의 처리를 수행하기 위한 입출력 프로토콜이 이용될 수 있다.
스트라이핑의 요청 및 데이터 복제의 요청은 시작 서버로부터 말단 서버로 전파되는 형태로 처리될 수 있다. 만약, 요청을 수신한 서버가 요청에 대한 처리를 완료한 후에 다음의 서버로 요청을 전파할 경우, 요청의 처리 시간은 모든 서버들의 처리 시간들의 합이 될 수 있다. 말하자면, 요청의 처리 시간은 요청을 처리하는 서버들의 개수가 커질수록 증가할 수 있다.
도 14에서는, 요청을 처리하는 서버로서, 제1 서버(1410), 제2 서버(1420) 및 제3 서버(1430)의 각각에서 이루어지는 동작이 도시되었다. 도 14에서, 수직선들은 제1 서버(1410), 제2 서버(1420) 및 제3 서버(1430)에서 이루어지는 동작을 각각 나타낼 수 있다.
제1 서버(1410)에 대해서, 수신(recv), 전송(send), 디스크 입출력 요청 및 대기(disk I/O request & wait) 및 응답 대기(wait ack)의 동작이 이루어지는 구간이 도시되었다. 제2 서버(1420)에 대해서, 수신, 전송, 디스크 입출력 요청 및 대기의 동작이 이루어지는 구간이 도시되었다. 제3 서버(1430)에 대해서, 수신, 전송, 디스크 입출력 요청 및 대기가 이루어지는 구간이 도시되었다.
제1 서버(1410), 제2 서버(1420) 및 제3 서버(1430)는 스트라이핑의 처리 또는 데이터 복제의 처리를 수행하는 복수의 서버들 중 적어도 일부를 나타낼 수 있다.
도 14에서 도시된 것과 같이, 스트라이핑의 요청 또는 데이터 복제의 요청을 수신한 서버는, 요청에 대한 처리의 완료를 대기하지 않고, 즉각적으로 요청을 다음의 서버로 전파할 수 있다. 이러한 전파의 예로서, 전송 요청 i의 전파(1440) 및 전송 요청 i+1의 전파(1450)가 도시되었다. i는 전송 요청의 순서를 나타내는 번호일 수 있다.
이러한 전파는 마지막의 서버까지 진행될 수 있다. 마지막 요청을 수신한 서버는 요청에 대한 처리를 수행할 수 있다. 마지막 요청을 수신한 서버는 요청에 대한 처리를 완료하면 자신에게 요청을 전송한 이전의 서버로 완료 메시지를 전송할 수 있다. 완료 메시지를 수신한 서버는, 요청에 대한 처리가 아직 완료되지 않은 경우 요청에 대한 처리가 완료될 때까지 대기할 수 있다. 완료 메시지를 수신한 서버는, 요청에 대한 처리가 완료되면, 이전의 서버로 완료 메시지를 전송할 수 있다.
완료 메시지는 전송 응답일 수 있다. 완료 메시지의 예로서, 전송 응답 i+1(1460) 및 전송 응답 i(1470)가 도시되었다. i는 전송 응답의 역순을 나타내는 번호일 수 있다.
실시예의 프로토콜은 데이터가 네트워크의 중간의 서버들을 거쳐서 전송되는 토러스 네트워크가 팻-트리 네트워크에 비해 더 짧은 경로로 데이터를 전파하게 할 수 있다. 팻-트리 네트워크에서는, 네트워크를 통해 전송되는 데이터는 무조건 스위치를 거쳐야만할 수 있다.
실시예의 입출력 프로토콜에 기반하여 아래에서는 스트라이핑된 데이터의 기입 방법 및 스트라이핑된 데이터의 독출 방법이 설명된다.
도 15a, 도 15b 및 도 15c는 일 예에 따른 스트라이핑된 데이터의 기입 방법을 설명한다.
도 15a는 일 예에 따른 기입 요청된 스트라이핑된 데이터를 설명한다.
스트라이핑된 데이터(1500)는 m 개의 파트들로 분리될 수 있다. m개의 파트들은 스트라이핑을 통해 m개의 서버들에 의해 각각 처리될 수 있다.
도 15b는 일 예에 따른 서버들에 의한 스트라이핑된 데이터의 기입을 설명한다.
상단의 원은 X 축 상의 서버를 나타낼 수 있다.
사용자에 의해 스트라이핑된 데이터(1500)의 기입이 요청되면, m개의 분리된 데이터의 전체가 제1 서버로 전송될 수 있다. 제1 서버는 m개의 분리된 데이터를 수신할 수 있다. 제1 서버는 m개의 분리된 데이터 중 제1 서버 자신이 처리할 데이터를 제외한 나머지의 데이터를 다음의 제2 서버로 전송할 수 있다. 이러한 제거 및 전송은 제m 서버에 파트 m이 전송될 때까지 계속될 수 있다.
분산 파일 시스템(200)의 스트라이핑 데이터를 저장하는 복수의 서버들이 스트라이핑 데이터 기입 요청을 처리할 때, 스트라이핑 데이터를 저장하는 복수의 서버들의 각 서버는 스트라이핑 데이터 기입 요청에 대하여 서버 자신에서 처리되는 데이터를 제외한 나머지 데이터에 대한 스트라이핑 데이터 기입 요청을 서버 자신의 다음의 서버로 전파할 수 있다. 또한, 각 서버는 서버 자신의 다음의 서버로 전파되지 않은 데이터에 대한 기입을 수행할 수 있다.
도 15b에는 제1 서버에 의해 파트 1이 기입되는 것으로 도시되었다. 제1 서버 내지 제m 서버에 의해 파트 1 내지 파트 m의 각각이 기입될 수 있다.
도 15c는 일 예에 따른 스트라이핑된 데이터의 기입 요청에 대한 데이터 전파 및 응답 전파를 설명한다.
도 15b를 참조하여 전술된 데이터의 전파는 X 축을 기준으로 마지막의 서버까지 스트라이핑 데이터 기입 요청이 전달될 때까지 수행될 수 있다. 스트라이핑 데이터를 저장하는 복수의 서버들 중 마지막의 서버는 스트라이핑 데이터 기입 요청에 대한 처리를 완료하였을 때 스트라이핑 데이터 기입 요청에 대한 응답으로서 완료 메시지를 생성할 수 있다.
마지막의 서버는 완료 메시지를 마지막의 서버 자신에게 스트라이핑 데이터 기입 요청을 전송한 서버로 전송할 수 있다. 완료 메시지를 수신한 서버는 상기의 서버 자신에게 스트라이핑 데이터 기입 요청을 전송한 서버에게 완료 메시지를 다시 전송할 수 있다. 이러한 완료 메시지의 전파는 완료 메시지가 제1 서버로 전송될 때까지 이어질 수 있다. 말하자면, 완료 메시지는 스트라이핑 데이터 기입 요청이 전파된 방향과 반대의 방향으로 전파될 수 있다.
예를 들면, 데이터 기입 방향과 동일한 방향으로 데이터가 전파될 수 있고, 데이터 기입 방향과 반대의 방향으로 응답이 전파될 수 있다.
마지막으로, 제1 서버가 완료 메시지를 수신하면, 제1 서버는 스트라이핑 데이터 기입 요청에 대한 처리를 완료한 후, 스트라이핑 데이터 기입 요청에 대하여 사용자에게 최종의 완료 메시지를 전송할 수 있다.
도 16a, 도 16b 및 도 16c는 일 예에 따른 스트라이핑된 데이터의 독출 방법을 설명한다.
도 16a는 일 예에 따른 독출 요청된 스트라이핑된 데이터를 설명한다.
스트라이핑된 데이터(1600)는 m 개의 파트들로 분리될 수 있다. m개의 파트들은 스트라이핑을 통해 m개의 서버들에 의해 각각 처리될 수 있다.
도 16b는 일 예에 따른 서버들에 의한 스트라이핑된 데이터의 독출을 설명한다.
상단의 원은 X 축 상의 서버를 나타낼 수 있다.
사용자에 의해 스트라이핑된 데이터(1600)의 독출이 요청되면, 스트라이핑 데이터 독출 요청이 제1 서버로 전송될 수 있다. 제1 서버는 스트라이핑 데이터 독출 요청을 다음의 제2 서버로 전송할 수 있다. 또한, 스트라이핑 데이터 독출 요청을 전송한 후 제1 서버는 m개의 분리된 데이터 중 제1 서버 자신이 처리할 데이터를 독출할 수 있다. 이러한 전송 및 독출은 제m 서버에 스트라이핑 데이터 독출 요청이 전송될 때까지 계속될 수 있다.
분산 파일 시스템(200)의 스트라이핑 데이터를 저장하는 복수의 서버들이 스트라이핑 데이터 독출 요청을 처리할 때, 스트라이핑된 데이터를 저장하는 복수의 서버들의 각 서버는 스트라이핑 데이터 독출 요청을 서버 자신의 다음의 서버로 전파할 수 있다. 또한, 각 서버는 스트라이핑 데이터 독출 요청을 서버 자신의 다음의 서버로 전파한 후 m개의 분리된 데이터 중 일부의 데이터를 독출할 수 있다.
스트라이핑 데이터 독출 요청에 따라서 분산 파일 시스템(200)의 스트라이핑 데이터를 저장하는 복수의 서버들로부터 독출된 데이터는 스트라이핑 데이터 독출 요청이 전파된 방향과 반대의 방향으로 병합되면서 전파될 수 있다.
도 16b에는 제1 서버에 의해 파트 1이 독출되는 것으로 도시되었다. 제1 서버 내지 제m 서버에 의해 파트 1 내지 파트 m의 각각이 독출될 수 있다.
도 16c는 일 예에 따른 스트라이핑된 데이터의 독출 요청에 대한 요청 전파 및 데이터 수집을 설명한다.
도 16b를 참조하여 전술된 스트라이핑 데이터 독출 요청의 전파는 X 축을 기준으로 마지막의 서버까지 스트라이핑 데이터 독출 요청이 전달될 때까지 수행될 수 있다. 스트라이핑 데이터를 저장하는 복수의 서버들 중 마지막의 서버는 스트라이핑 데이터 독출 요청에 대한 처리를 완료하였을 때 스트라이핑 데이터 독출 요청에 대한 응답으로서 독출된 데이터를 생성할 수 있다.
마지막의 서버는 독출된 데이터를 마지막에 서버 자신에게 스트라이핑 데이터 독출 요청을 전송한 서버로 전송할 수 있다. 둑출된 데이터를 수신한 서버는 서버 자신이 독출한 데이터 및 수신된 데이터를 병합함으로써 병합된 데이터를 생성할 수 있다. 서버는 서버 자신에게 스트라이핑 데이터 독출 요청을 전송한 서버에게 병합된 데이터를 다시 전송할 수 있다. 이러한 데이터의 수집은 제1 서버가 스트라이핑 데이터를 저장하는 복수의 서버들 모두에 의해 독출된 데이터가 병합될 때까지 이어질 수 있다. 말하자면, 데이터 수집은 스트라이핑 데이터 독출 요청이 전파된 방향과 반대의 방향으로 전파될 수 있다.
예를 들면, 데이터 독출 방향과 동일한 방향으로 스트라이핑 데이터 독출 요청이 전파될 수 있고, 데이터 독출 방향과 반대의 방향으로 데이터의 수집이 전파될 수 있다.
마지막으로, 제1 서버가 제2 서버로부터 데이터를 수신하면, 제1 서버는 제1 서버 자신이 독출한 데이터를 수신된 데이터에 병합함으로써 병합된 데이터를 생성할 수 있고, 스트라이핑 데이터 독출 요청에 대하여 사용자에게 최종의 병합된 데이터를 전송할 수 있다.
도 17a 및 도 17b는 일 예에 따른 데이터 복제 방법을 설명한다.
도 17a는 일 예에 따른 데이터의 복제를 설명한다.
도 17a에서는 도 12를 참조하여 전술된 실시예에 의해 할당된 데이터 공간에 원본 데이터를 복제하는 방법이 설명된다.
상단의 원은 Y 축 상의 서버를 나타낼 수 있다. 도 17a에서는 복제 데이터와 관련된 서버들이 도시되었다.
원본 데이터를 가진 서버(1710)는 데이터 복제 요청을 수신할 수 있다. 데이터 복제 요청을 수신하면, 원본 데이터를 가진 서버(1710)는 Y 축을 기준으로 다음의 위치에 있는 서버(1720)로 복제될 데이터 및 데이터 복제 요청을 전파할 수 있다.
데이터 복제 요청을 수신한 서버(1720)는 데이터 복제의 완료를 대기하지 않고, Y 축을 기준으로 다음의 서버(1730)에게 다시 복제될 데이터 및 데이터 복제 요청을 전파할 수 있다.
분산 파일 시스템(200)의 데이터 복제를 수행하는 복수의 서버들이 데이터 복제 요청을 처리할 때, 데이터 복제를 수행하는 복수의 서버들의 각 서버는 데이터 복제 요청에 대하여 데이터 복제의 수행의 완료를 대기하지 않고 데이터 복제를 위해 서버 자신에게 전송된 데이터 및 데이터 복제 요청을 서버 자신의 다음의 서버로 전파할 수 있다. 또한, 각 서버는 서버 자신에게 전송된 데이터에 대한 데이터 복제를 수행할 수 있다.
도 17b는 일 예에 따른 데이터의 복제 요청에 대한 복제 데이터 전파 및 응답 전파를 설명한다.
도 17a를 참조하여 전술된 복제될 데이터 및 데이터 복제 요청의 전파는 Y 축을 기준으로 마지막의 서버까지 복제될 데이터 및 데이터 복제 요청이 전달될 때까지 수행될 수 있다. 데이터 복제를 수행하는 복수의 서버들 중 마지막의 서버는 데이터 복제 요청에 대한 처리를 완료하였을 때 데이터 복제 요청에 대한 응답으로서 완료 메시지를 생성할 수 있다.
마지막의 서버는 완료 메시지를 마지막의 서버 자신에게 데이터 복제 요청을 전송한 서버로 전송할 수 있다. 완료 메시지를 수신한 서버는 상기의 서버 자신에게 데이터 복제 요청을 전송한 서버에게 완료 메시지를 다시 전송할 수 있다. 이러한 완료 메시지의 전파는 완료 메시지가 제1 서버(1710)로 전송될 때까지 이어질 수 있다. 말하자면, 완료 메시지는 데이터 복제 요청이 전파된 방향과 반대의 방향으로 전파될 수 있다.
예를 들면, 데이터 복제가 이루어지는 방향인 복제 방향과 동일한 방향으로 데이터 복제에 의해 복제될 데이터인 복제 데이터가 전파될 수 있고, 복제 방향과 반대의 방향으로 응답이 전파될 수 있다.
마지막으로, 제1 서버(1710)가 완료 메시지를 수신하면, 제1 서버는 데이터 복제 요청에 대한 처리를 완료한 후, 데이터 복제 요청에 대하여 사용자에게 최종의 완료 메시지를 전송할 수 있다.
도 18은 일 예에 따른 분산 파일 시스템의 소정의 데이터에 대한 접근의 정보를 나타낸다.
도 18에서 상태 정보(1800)는 도 7을 참조하여 전술된 상태 정보(700)에 대응할 수 있다. 마스터 헤드(1810)는 마스터 헤드(710)에 대응할 수 있다. 제1 레이어의 상태 정보(1820) 및 제z 레이어의 상태 정보(1860)는 제1 레이어의 상태 정보(720) 및 제z 레이어의 상태 정보(760)에 각각 대응할 수 있다. 제1 레이어 헤드(1830) 및 제Z 레이어 헤드(1870)는 제1 레이어 헤드(730) 및 제Z 레이어 헤드(770)에 각각 대응할 수 있다. 서버 (1, 1, 1)의 상태 정보(1840) 및 서버 (X, Y, 1)의 상태 정보(1850)는 서버 (1, 1, 1)의 상태 정보(740) 및 서버 (X, Y, 1)의 상태 정보(750)에 각각 대응할 수 있다. 서버(1, 1, Z)의 상태 정보(1880) 및 서버 (X, Y, Z)의 상태 정보(1890)는 서버(1, 1, Z)의 상태 정보(780) 및 서버 (X, Y, Z)의 상태 정보(790)에 각각 대응할 수 있다. 중복되는 설명은 이하 생략된다.
상태 정보들은 통계 정보들을 각각 포함할 수 있다. 제1 레이어 헤드(1830)의 통계들은 제1 레이어 헤드의 통계 정보(1835)를 포함할 수 있다. 제Z 레이어 헤드(1870)의 통계들은 제Z 레이어 헤드의 통계 정보(1875)를 포함할 수 있다. 서버 (1, 1, 1)의 상태 정보(1840)의 통계들은 서버 (1, 1, 1)의 통계 정보(1845)를 포함할 수 있다. 서버 (X, Y, 1)의 상태 정보(1850)의 통계들은 서버 (X, Y, 1)의 통계 정보(1855)를 포함할 수 있다. 서버(1, 1, Z)의 상태 정보(1880)의 통계들은 서버(1, 1, Z)의 통계 정보(1885)를 포함할 수 있다. 및 서버 (X, Y, Z)의 상태 정보(1890)의 통계들은 서버(X, Y, Z)의 통계 정보(1895)를 포함할 수 있다.
상태 정보(1800)는 분산 파일 시스템(200)의 데이터에 대한 접근의 정보를 수집하고, 데이터에 대한 접근의 빈도를 추적 및 관리하기 위한 데이터 구조체(data structure)일 수 있다. 상태 정보(1800)는 도 7을 참조하여 전술된 참조 정보(700)에 데이터에 대한 접근에 관련된 데이터가 추가된 형태를 가질 수 있다.
분산 파일 시스템(200)은 상태 정보(1800)를 사용하여 분산 파일 시스템(200)의 데이터에 대한 접근의 정보를 수집할 수 있다. 또한, 분산 파일 시스템(200)은 상태 정보(1800)를 사용하여 분산 파일 시스템(200)의 데이터에 대한 접근의 진도를 추적 및 관리할 수 있다.
분산 파일 시스템(200)의 서버는 서버의 데이터에 대한 접근의 정보를 수집할 수 있다. 서버는 수집된 접근에 대한 정보를 서버가 속하는 레이어의 레이어 마스터로 전송할 수 있다.
레이어 마스터는 레이어의 데이터에 대한 접근의 정보를 수집할 수 있다. 레이어 마스터는 수집된 접근의 정보를 레이어 마스터의 통계 정보로서 저장할 수 있다.
레이어 헤드의 통계 정보는 기정의된 개수의 참조 카운트들을 포함할 수 있다. 참조 카운트들은 레이어 마스터의 데이터 별로 레이어 마스터의 데이터가 참조된 횟수를 나타낼 수 있다. 말하자면, 레이어 마스터는 레이어의 데이터에 대한 접근의 정보에 기반하여 레이어의 데이터 중 높은 접근 빈도를 갖는 기정의된 개수의 데이터를 결정할 수 있다. 레이어 마스터는 참조 카운트들을 사용하여 레이어의 데이터 중 높은 접근 빈도를 갖는 기정의된 개수의 데이터를 식별할 수 있다.
서버 헤드의 통계 정보는 기정의된 개수의 참조 카운트들을 포함할 수 있다. 참조 카운트들은 서버의 데이터 별로 서버의 데이터가 참조된 횟수를 나타낼 수 있다. 말하자면, 서버는 서버의 데이터에 대한 접근의 정보에 기반하여 서버의 데이터 중 높은 접근 빈도를 갖는 기정의된 개수의 데이터를 결정할 수 있다. 서버는 참조 카운트들을 사용하여 서버의 데이터 중 높은 접근 빈도를 갖는 기정의된 개수의 데이터를 식별할 수 있다.
도 19는 일 예에 따른 사용자 접근 패턴의 변화에 따른 데이터의 이동을 설명한다.
도 5b를 참조하여 전술된 실시예에 따르면, 분산 파일 시스템(200)은 최근에 생성된 데이터를 오래 전에 생성된 데이터보다 퍼블릭 네트워크(299)에 더 가깝게 배치할 수 있다. 높은 접근 빈도를 갖는 데이터는 퍼블릭 네트워크(299)에 보다 가깝게 배치될 수 있고, 고 성능으로 접근될 수 있다. 낮은 접근 빈도를 갖는 데이터는 퍼블릭 네트워크(299)에 보다 멀게 배치될 수 있고, 저 성능으로 접근될 수 있다. 말하자면, 서버 그룹 또는 레이어는 분산 파일 시스템(200)에 추가되는 시간에 따라 Z 축을 기준으로 앞에(즉, 퍼블릭 네트워크(299)에 가까운 방향으로) 배치될 수 있다. 따라서, 최근에 생성된 데이터는 퍼블릭 네트워크(299)에 가깝게 위치할 수 있으며, 보다 빠르게 접근될 수 있다.
반면, 오래 전에 생성된 데이터라도, 사용자의 접근 패턴에 따라서 소정의 시간 동안 빈번하게 접근될 수 있다. 또한, 최근에 생성된 데이터라도 오랜 시간 동안 접근이 되지 않을 수 있다.
사용자의 접근 패턴에 대응하기 위해, 분산 파일 시스템(200)은 사용자의 접근 패턴에 따라 다른 데이터에 비해 상대적으로 더 빈번하게 접근되는 데이터를 Z 축을 기준으로 현재 데이터를 저장하고 있는 레이어 또는 서버보다 더 앞의 레이어 또는 서버로 이동시킬 수 있다. 말하자면, 분산 파일 시스템(200)은 다른 데이터에 비해 상대적으로 더 빈번하게 접근되는 데이터를 퍼블릭 네트워크(299)에 보다 가까워지도록 이동시킬 수 있다. 이러한 이동을 통해, 데이터에 대한 보다 빠른 전송 속도가 보장될 수 있다.
사용자의 접근 패턴에 대응하기 위해, 분산 파일 시스템(200)은 분산 파일 시스템(200)의 소정의 데이터에 대한 접근의 빈도에 기반하여 소정의 데이터의 제1 축에서의 위치를 조정할 수 있다. 제1 축은 Z 축일 수 있다. 제1 축은 퍼블릭 네트워크로부터의 거리에 대응하는 축일 수 있다.
분산 파일 시스템(200)은 사용자의 접근 패턴에 따라 다른 데이터에 비해 상대적으로 더 드물게 접근되는 데이터를 Z 축을 기준으로 현재 데이터를 저장하고 있는 레이어 또는 서버보다 더 뒤의 레이어 또는 서버로 이동시킬 수 있다. 말하자면, 분산 파일 시스템(200)은 다른 데이터에 비해 상대적으로 더 드물게 접근되는 데이터를 퍼블릭 네트워크(299)로부터 보다 멀어지도록 이동시킬 수 있다. 이러한 이동을 통해, 더 빈번히 접근되는 다른 데이터에 대한 보다 빠른 전송 속도가 보장될 수 있다.
도 19에서, 하위의 레이어는 퍼블릭 네트워크(299)로부터 더 먼 레이어를 의미할 수 있고, 상위의 레이어는 퍼블릭 네트워크(299)로부터 더 가까운 레이어를 의미할 수 있다.
전술된 것과 같은 데이터의 z 좌표의 변경을 통해 토러스 네트워크가 더 효율적으로 활용될 수 있다.
사용자 접근 패턴에 대응하기 위해 도 18을 참조하여 전술된 통계 정보 및 참조 카운트가 사용될 수 있다. 통계 정보 및 참조 카운트는 레이어의 데이터 별로 데이터에 대한 접근의 빈도를 나타낼 수 있다. 또는, 통계 정보 및 참조 카운트는 서버의 데이터 별로 데이터에 대한 접근의 빈도를 나타낼 수 있다.
또한, 사용자의 접근 패턴에 대응하기 위해, 데이터에 대한 최근의 접근 시간이 사용될 수 있다. 예를 들면, 레이어 마스터는 레이어의 데이터에 대하여, 데이터 별로 데이터에 대한 최근의 접근 시간을 수집할 수 있다. 또는, 서버는 서버의 데이터에 대하여, 데이터 별로 데이터에 대한 최근의 접근 시간을 수집할 수 있다. 분산 파일 시스템(200)은 데이터에 대한 접근 시간을 사용하여 데이터를 이동시킬 수 있다.
분산 파일 시스템(200)은 소정의 시간 동안 접근되지 않은 데이터를 Z 축을 기준으로 현재 데이터를 저장하고 있는 레이어 또는 서버보다 더 뒤의 레이어 또는 서버로 이동시킬 수 있다.
분산 파일 시스템(200)의 레이어들은 레이어 별로 타임아웃(out) 값을 가질 수 있다. 분산 파일 시스템(200)은 각 레이어의 데이터에 대하여, 레이어의 타임아웃 값의 시간 동안 접근되지 않은 데이터를 현재 데이터를 저장하고 있는 레이어 또는 서버보다 더 뒤의 레이어 또는 서버로 이동시킬 수 있다. 또는, 분산 파일 시스템(200)은 각 레이어의 데이터에 대하여, 레이어의 타임아웃 값의 시간 동안 접근되지 않은 데이터에 대하여 더 낮은 대역폭을 제공할 수 있다.
도 20은 일 실시예에 따른 분산 파일 시스템의 구성 방법의 흐름도이다.
단계(2010)에서, n차원의 축들을 기준으로 복수의 서버들의 각각이 배치될 수 있다.
단계(2020)에서, 복수의 서버들이 n차원의 토러스 네트워크를 통해 연결될 수 있다.
도 21은 일 실시예에 따른 분산 파일 시스템의 운용 방법의 흐름도이다.
분산 파일 시스템(200)은 n차원의 토러스 네트워크를 통해 연결된 복수의 서버들을 포함할 수 있다.
단계(2110)에서, 분산 파일 시스템(200)의 소정의 데이터에 대한 접근의 정보가 생성될 수 있다.
단계(2120)에서, 생성된 접근의 정보에 기반하여 소정의 데이터의 제1 축에서의 위치가 조정될 수 있다.
제1 축은 Z 축일 수 있다. 제1 축은 퍼블릭 네트워크(299)로부터의 거리에 대응하는 축일 수 있다.
전술된 실시예에서, 분산 파일 시스템(200)에 의해 수행되는 것으로 설명된 기능 또는 동작은, 분산 파일 시스템(200)의 복수의 서버들 중 관리 서버에 의해 수행되는 것으로 간주될 수 있다. 관리 서버는 분산 파일 시스템(200)의 복수의 서버들 중 소정의 기준에 따라 선택된 서버일 수 있다. 관리 서버는 전술된 전체 마스터일 수 있다. 또는, 관리 서버는 분산 파일 시스템(200)의 레이어 마스터들 중 소정의 기준에 따라 선택된 레이어 마스터일 수 있다. 예를 들면, 관리 서버는 관리 서버는 분산 파일 시스템(200)의 복수의 서버들 중 기정의된 절대적 위치 또는 기정의된 상대적 위치에 있는 서버일 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, 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), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
200: 분산 파일 시스템
299: 퍼블릭 네트워크

Claims (20)

  1. 복수의 서버들
    을 포함하고,
    상기 복수의 서버들은 n차원의 토러스 네트워크를 통해 연결되고,
    상기 복수의 서버들의 각각은 상기 n차원의 축들을 기준으로 배치되고,
    상기 복수의 서버들을 포함하는 분산 파일 시스템의 데이터 서비스 부하는 상기 축들 중 제1 축을 따라서 분배되고,
    상기 제1 축은 퍼블릭 네트워크로부터의 거리에 대응하는 축이고,
    상기 분산 파일 시스템의 내부 부하는 상기 축들 중 상기 제1 축을 제외한 나머지의 축에 분배되는 분산 파일 시스템.
  2. 제1항에 있어서,
    상기 n은 3인 분산 파일 시스템.
  3. 제1항에 있어서,
    상기 분산 파일 시스템을 구성함에 있어서,
    첫 번째로 구성된 n-1 차원의 토러스 네트워크의 서버 그룹은 상기 퍼블릭 네트워크에 연결되는 분산 파일 시스템.
  4. 제3항에 있어서,
    상기 분산 파일 시스템을 구성함에 있어서,
    상기 퍼블릭 네트워크로부터 멀어지는 방향에 따라 n-1 차원의 토러스 네트워크의 서버 그룹이 기존의 구성된 네트워크에 순차적으로 연결되는 분산 파일 시스템.
  5. 제1항에 있어서,
    상기 분산 파일 시스템의 확장을 위해 n-1 차원의 토러스 네트워크의 서버들이 추가될 때, 상기 n-1 차원의 토러스 네트워크의 서버들은 상기 축들 중 상기 제1 축에 배치되고, 상기 제1 축 중 상기 퍼블릭 네트워크에 가장 가까운 위치에 배치되는 분산 파일 시스템.
  6. 제1항에 있어서,
    상기 서버들에 대한 통계의 정보는 상기 제1 축을 기준으로 n-1의 차원의 단위로 수집되는 분산 파일 시스템.
  7. 제6항에 있어서,
    상기 제1 축 상의 n-1 차원의 네트워크들의 각각에 대하여 n-1 차원의 마스터가 상기 통계의 정보를 취합하고, n 차원의 마스터가 상기 n-1 차원의 네트워크들에 대해 취합된 상기 통계의 정보를 다시 취합하는 분산 파일 시스템.
  8. 제1항에 있어서,
    상기 분산 파일 시스템의 서로 상이한 부하들은 상기 축들을 기준으로 분배되는 분산 파일 시스템.
  9. 삭제
  10. 제1항에 있어서,
    상기 분산 파일 시스템은 데이터 서비스를 위한 데이터 공간 할당 요청에 대하여 상기 서버들 중 상기 퍼블릭 네트워크에 가까운 서버의 데이터 공간을 우선적으로 할당하는 분산 파일 시스템.
  11. 삭제
  12. 복수의 서버들
    을 포함하고,
    상기 복수의 서버들은 n차원의 토러스 네트워크를 통해 연결되고,
    상기 복수의 서버들의 각각은 상기 n차원의 축들을 기준으로 배치되고,
    상기 복수의 서버들을 포함하는 분산 파일 시스템의 데이터 서비스 부하는 상기 축들 중 제1 축을 따라서 분배되고,
    상기 제1 축은 퍼블릭 네트워크로부터의 거리에 대응하는 축이고,
    상기 분산 파일 시스템의 데이터 복제 부하는 제2 축을 따라서 분배되고,
    상기 제2 축은 상기 축들 중 상기 제1 축을 제외한 하나의 축인 분산 파일 시스템.
  13. 제12항에 있어서,
    상기 분산 파일 시스템은 데이터 복제를 위한 데이터 공간 할당 요청에 대하여 상기 제2 축을 따라 원본 데이터가 존재하는 서버에 가까운 위치에서부터 상기 원본 데이터가 존재하는 서버로부터 멀어지는 방향으로 턴 어라운드 방식을 사용하여 상기 원본 데이터의 데이터 복제를 위한 데이터 공간을 할당할 서버를 결정하는 분산 파일 시스템.
  14. 복수의 서버들
    을 포함하고,
    상기 복수의 서버들은 n차원의 토러스 네트워크를 통해 연결되고,
    상기 복수의 서버들의 각각은 상기 n차원의 축들을 기준으로 배치되고,
    상기 복수의 서버들을 포함하는 분산 파일 시스템의 데이터 서비스 부하는 상기 축들 중 제1 축을 따라서 분배되고,
    상기 제1 축은 퍼블릭 네트워크로부터의 거리에 대응하는 축이고,
    상기 분산 파일 시스템의 스트라이핑 부하는 제3 축을 따라서 분배되고,
    상기 제3 축은 상기 축들 중 상기 제1 축을 제외한 하나의 축인 분산 파일 시스템.
  15. 제14항에 있어서,
    상기 분산 파일 시스템은 스트라이핑에 대하여 복수의 서버들의 데이터 공간들을 할당하고,
    상기 분산 파일 시스템은 상기 서버들 중에서 상기 데이터 공간들의 제1 데이터 공간을 할당할 제1 서버를 결정하고,
    상기 분산 파일 시스템은 상기 제3 축을 따라 상기 제1 서버에 가까운 위치에서 상기 제1 서버로부터 멀어지는 방향으로 상기 서버들 중에서 상기 데이터 공간들의 나머지 데이터 공간을 할당할 서버를 결정하는 분산 파일 시스템.
  16. 복수의 서버들
    을 포함하고,
    상기 복수의 서버들은 n차원의 토러스 네트워크를 통해 연결되고,
    상기 복수의 서버들의 각각은 상기 n차원의 축들을 기준으로 배치되고,
    스트라이핑 데이터를 저장하는 복수의 서버들이 스트라이핑 데이터 기입 요청을 처리할 때, 상기 스트라이핑 데이터를 저장하는 복수의 서버들의 각 서버는 상기 스트라이핑 데이터 기입 요청에 대하여 상기 각 서버에서 처리되는 데이터를 제외한 나머지 데이터에 대한 스트라이핑 데이터 기입 요청을 상기 각 서버의 다음의 서버로 전파하고, 상기 스트라이핑 데이터를 저장하는 복수의 서버들 중 마지막의 서버는 스트라이핑 데이터 기입 요청에 대한 처리을 완료하였을 때 완료 메시지를 생성하고, 상기 완료 메시지는 상기 스트라이핑 데이터 기입 요청이 전파된 방향과 반대의 방향으로 전파되는 분산 파일 시스템.
  17. 복수의 서버들
    을 포함하고,
    상기 복수의 서버들은 n차원의 토러스 네트워크를 통해 연결되고,
    상기 복수의 서버들의 각각은 상기 n차원의 축들을 기준으로 배치되고,
    스트라이핑 데이터를 저장하는 복수의 서버들이 스트라이핑 데이터 독출 요청을 처리할 때, 상기 복수의 서버들의 각 서버는 상기 스트라이핑 데이터 독출 요청을 상기 각 서버의 다음의 서버로 전파하고, 상기 스트라이핑 데이터 독출 요청에 따라서 상기 복수의 서버들로부터 독출된 데이터는 상기 스트라이핑 데이터 독출 요청이 전파된 방향과 반대의 방향으로 병합되면서 전파되는 분산 파일 시스템.
  18. 복수의 서버들
    을 포함하고,
    상기 복수의 서버들은 n차원의 토러스 네트워크를 통해 연결되고,
    상기 복수의 서버들의 각각은 상기 n차원의 축들을 기준으로 배치되고,
    상기 복수의 서버들을 포함하는 분산 파일 시스템은 상기 분산 파일 시스템의 소정의 데이터에 대한 접근의 빈도에 기반하여 상기 소정의 데이터의 제1 축에서의 위치를 조정하고,
    상기 제1 축은 퍼블릭 네트워크로부터의 거리에 대응하는 축인 분산 파일 시스템.
  19. n차원의 축들을 기준으로 복수의 서버들의 각각을 배치하는 단계; 및
    상기 복수의 서버들을 n차원의 토러스 네트워크를 통해 연결하는 단계
    를 포함하고,
    상기 복수의 서버들을 포함하는 분산 파일 시스템의 데이터 서비스 부하는 상기 축들 중 제1 축을 따라서 분배되고,
    상기 제1 축은 퍼블릭 네트워크로부터의 거리에 대응하는 축이고,
    상기 분산 파일 시스템의 내부 부하는 상기 축들 중 상기 제1 축을 제외한 나머지의 축에 분배되는 분산 파일 시스템의 구성 방법.
  20. n차원의 토러스 네트워크를 통해 연결된 복수의 서버들을 포함하는 분산 파일 시스템의 운용 방법에 있어서,
    상기 분산 파일 시스템의 소정의 데이터에 대한 접근의 정보를 생성하는 단계; 및
    상기 정보에 기반하여 상기 소정의 데이터의 제1 축에서의 위치를 조정하는 단계
    를 포함하고,
    상기 제1 축은 퍼블릭 네트워크로부터의 거리에 대응하는 축인 분산 파일 시스템의 운용 방법.
KR1020160008755A 2015-04-09 2016-01-25 토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 구성 및 운영 방법 KR102028428B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/010,373 US10084860B2 (en) 2015-04-09 2016-01-29 Distributed file system using torus network and method for configuring and operating distributed file system using torus network

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020150050020 2015-04-09
KR20150050020 2015-04-09

Publications (2)

Publication Number Publication Date
KR20160121380A KR20160121380A (ko) 2016-10-19
KR102028428B1 true KR102028428B1 (ko) 2019-10-04

Family

ID=57250619

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160008755A KR102028428B1 (ko) 2015-04-09 2016-01-25 토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 구성 및 운영 방법

Country Status (1)

Country Link
KR (1) KR102028428B1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102468686B1 (ko) 2017-01-17 2022-11-22 한국전자통신연구원 대규모 토러스 네트워크에서의 분산 스토리지 시스템을 위한 ip 자동 할당 방법 및 이를 위한 장치
KR102154653B1 (ko) * 2017-01-18 2020-09-10 한국전자통신연구원 토러스 네트워크 기반의 분산 파일 시스템을 위한 파일 접근 경로 설정 방법 및 이를 위한 장치
KR20180085187A (ko) 2017-01-18 2018-07-26 한국전자통신연구원 토러스 연결망 기반 분산 파일 시스템의 볼륨 확장 및 축소 방법 및 이를 위한 장치
KR102610984B1 (ko) 2017-01-26 2023-12-08 한국전자통신연구원 토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 운영 방법
KR102178740B1 (ko) 2017-11-22 2020-11-13 한국전자통신연구원 토러스 네트워크 기반의 분산 파일 시스템을 위한 서버 및 이를 이용한 방법
KR102252199B1 (ko) * 2018-12-17 2021-05-14 한국전자통신연구원 토러스 네트워크 기반 분산 파일 시스템 볼륨 성능 최적화 장치 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050251567A1 (en) * 2004-04-15 2005-11-10 Raytheon Company System and method for cluster management based on HPC architecture

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050251567A1 (en) * 2004-04-15 2005-11-10 Raytheon Company System and method for cluster management based on HPC architecture

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
IBM Journal RES. & DEV. vol. 49, No. 2/3, 195-212, "Overview of the Blue Gene/L system architecture", 2005.03.01.*
Paolo Costa, "Bridging the Gap Between Applications and Networks in Data Centers", ACM SIGOPS, Jan 2013*

Also Published As

Publication number Publication date
KR20160121380A (ko) 2016-10-19

Similar Documents

Publication Publication Date Title
KR102028428B1 (ko) 토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 구성 및 운영 방법
US10459657B2 (en) Storage system with read cache-on-write buffer
US10042869B1 (en) Method for data transfer between compute clusters and file system
US9170743B2 (en) Management method of virtual storage system and remote copy system
US10853139B2 (en) Dynamic workload management based on predictive modeling and recommendation engine for storage systems
KR101502896B1 (ko) 맵 리듀스를 이용한 분산 메모리 클러스터 제어 장치 및 방법
JP7462028B2 (ja) 分散ストレージシステム及びデータ処理方法
US10084860B2 (en) Distributed file system using torus network and method for configuring and operating distributed file system using torus network
JP5998206B2 (ja) クラスタデータグリッドにおける拡張可能な中央集中型動的リソース分散
US10671557B2 (en) Dynamic component communication using general purpose links between respectively pooled together of like typed devices in disaggregated datacenters
US20080294872A1 (en) Defragmenting blocks in a clustered or distributed computing system
CN110413201A (zh) 用于管理存储系统的方法、设备和计算机程序产品
US10637733B2 (en) Dynamic grouping and repurposing of general purpose links in disaggregated datacenters
US20200097426A1 (en) Efficient component communication through resource rewiring in disaggregated datacenters
CN105765578A (zh) 分布式文件系统中的数据的并行访问
WO2016195714A1 (en) Method and apparatus of shared storage between multiple cloud environments
JP6617461B2 (ja) 制御装置、制御プログラム、及び制御方法
CN112948279A (zh) 管理存储系统中的访问请求的方法、设备和程序产品
US10802988B2 (en) Dynamic memory-based communication in disaggregated datacenters
CN104604187A (zh) 使用多叉树的虚拟机和虚拟磁盘的最佳分配
WO2015056332A1 (ja) ストレージ装置及び制御方法
KR102610984B1 (ko) 토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 운영 방법
US11012423B2 (en) Maximizing resource utilization through efficient component communication in disaggregated datacenters
KR101901266B1 (ko) 파일 스토리지 클러스터간 병렬 파일 전송 시스템 및 방법
CN112099728B (zh) 一种执行写操作、读操作的方法及装置

Legal Events

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