KR20120071205A - 가상머신 서버와 노드 운영방법 및 그 장치 - Google Patents

가상머신 서버와 노드 운영방법 및 그 장치 Download PDF

Info

Publication number
KR20120071205A
KR20120071205A KR1020100132842A KR20100132842A KR20120071205A KR 20120071205 A KR20120071205 A KR 20120071205A KR 1020100132842 A KR1020100132842 A KR 1020100132842A KR 20100132842 A KR20100132842 A KR 20100132842A KR 20120071205 A KR20120071205 A KR 20120071205A
Authority
KR
South Korea
Prior art keywords
virtual machine
booting
blocks
node
information
Prior art date
Application number
KR1020100132842A
Other languages
English (en)
Inventor
이용주
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020100132842A priority Critical patent/KR20120071205A/ko
Priority to US13/332,791 priority patent/US9003403B2/en
Publication of KR20120071205A publication Critical patent/KR20120071205A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4405Initialisation of multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)

Abstract

본 발명은 서버와 노드에 대한 운영방법 및 그 장치에 관한 것으로서, 더욱 자세하게는 가상머신 서버와 노드 운영방법 및 그 장치에 관한 것이다.
본 명세서에 개시된 실시예에 따른 가상 머신 서버 운영방법은 가상 머신 이미지에서 가상 머신 부팅을 위한 블록들의 인덱스 정보를 생성하는 단계, 대상 노드에 대해 인접한 노드의 리스트 정보를 생성하는 단계 및 인덱스 정보와 리스트 정보를 대상 노드로 전송하는 단계를 포함한다.

Description

가상머신 서버와 노드 운영방법 및 그 장치{Operating Method for Virtual Machine and Node and Apparatus thereof}
본 발명은 서버와 노드에 대한 운영방법 및 그 장치에 관한 것으로서, 더욱 자세하게는 가상머신 서버와 노드 운영방법 및 그 장치에 관한 것이다.
프로세서 기술이 발전함에 따라 가상화 기술(virtualization technology)에 대한 관심이 꾸준히 증가하고 있다. 어플리케이션 프로그램을 개발하고자 할 때에는 어플리케이션 프로그램이 동작하는 하드웨어 플랫폼에 의존하여 동일한 어플리케이션 프로그램이라고 하더라도 각각의 하드웨어 플랫폼에 적합하도록 별도로 설계해야 하는 불편함이 있었다. 그래서, 하드웨어 플랫폼에 의존하지 않는 어플리케이션 프로그램을 개발하기 위하여, 하드웨어 플랫폼을 추상화시킨 가상 머신(virtual machine)이 개발되었다. 가상화는 하나의 물리적 서버 위에 여러 개의 운영체제를 구동할 수 있는 기술을 말하는 것으로서, 운영체제가 가상화되어 구동되는 것을 가상 머신(VM: Virtual Machine)이라 한다.
종래의 가상 머신의 이미지 관리 방법은 파일 카피(file copy) 방법과 NFS(Network File System)를 통한 네트워크 공유 방법 등을 사용되었다.
파일 카피 방법은 동일한 이미지를 중복되게 여러 노드에 복사해 놓고, 사용자의 요청에 따라 가상 머신을 하나씩 할당해 주는 방식이다. 이 방법은 초기 네트워크 비용은 크지만, 사용자가 사용하는 단계에서 로컬 디스크의 이미지 파일을 그대로 사용하므로 빠른 부팅을 제공받게 된다.
NFS를 통한 네트워크 공유방법은 초기 네트워크 비용은 없지만, 사용자에게 할당 시마다, 네트워크를 통해서 가상 머신 이미지를 전송받아야 하므로, 사용중의 네트워크 비용이 크게 된다.
본 명세서에 개시된 실시예는 전술한 문제점을 해결하기 위한 것으로서, 가상 머신을 부팅할 때에 빠른 부팅이 가능하도록 하는 방법과 장치를 제공하기 위함이다.
본 명세서에 개시된 일 실시예에 따른 가상 머신 서버 운영방법은 가상 머신 이미지에서 가상 머신 부팅을 위한 블록들의 인덱스 정보를 생성하는 단계, 대상 노드에 대해 인접한 노드의 리스트 정보를 생성하는 단계 및 인덱스 정보와 리스트 정보를 대상 노드로 전송하는 단계를 포함한다.
본 명세서에 개시된 다른 실시예에 따른 가상 머신 서버는 가상 머신 이미지에서 가상 머신 부팅을 위한 블록들의 인덱스 정보를 생성하는 인덱스 정보 생성부, 대상 노드에 대해 인접한 노드의 리스트 정보를 생성하는 리스트 정보 생성부 및 인덱스 정보와 리스트 정보를 대상 노드로 전송하는 전송부를 포함한다.
본 명세서에 개시된 또 다른 실시예에 따른 가상 머신 노드 운영방법은 가상 머신 서버로부터 인접한 노드의 리스트 정보를 수신하는 리스트 정보 수신단계, 리스트 정보에 기초하여 인접한 노드로부터 가상 머신 부팅을 위해 사용되는 블록들을 수신하는 블록 수신단계 및 수신된 블록들을 이용하여 가상 머신을 부팅하는 부팅단계를 포함한다.
본 명세서에 개시된 또 다른 실시예에 따른 가상 머신 노드는 가상 머신 서버로부터 인접한 노드의 리스트 정보를 수신하고, 리스트 정보에 기초하여 인접한 노드로부터 가상 머신 부팅을 위해 사용되는 블록들을 수신하는 수신부 및 수신된 블록들을 이용하여 가상 머신을 부팅하는 부팅처리부를 포함한다.
본 명세서에서 개시된 실시예에 의하면, 가상 머신을 부팅할 때에 빠른 부팅이 가능하도록 할 수 있다. 특히, 사용자 단위로 가상 머신을 사용하는 경우, 사용자가 폭주하였을 때에 부팅시간을 현저히 줄일 수 있다.
도1은 본 명세서에서 개시하는 일 실시예에 따른 가상 머신 시스템을 설명하기 위한 도면이다.
도2는 가상 머신 이미지와 가상 디스크 이미지를 비교하기 위한 도면이다.
도3은 가상 머신 시스템 구성 및 힌트 파일을 설명하기 위한 도면이다.
도4는 도3에 기초한 전송 프로토콜의 일 예를 설명하기 위한 도면이다.
도5는 가상 머신 서버 및 노드의 운영방법에 대한 실시예를 설명하기 위한 도면이다.
도6은 가상 머신 서버 및 노드에 대한 실시예를 설명하기 위한 도면이다.
도7은 본 발명과 기존 방법의 성능비교를 나타낸 그래프를 도시한 것이다.
이하에서는 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. 이하 설명 및 첨부된 도면들에서 실질적으로 동일한 구성요소들은 각각 동일한 부호들로 나타냄으로써 중복 설명을 생략하기로 한다. 또한 본 발명을 설명함에 있어 관련된 공지기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그에 대한 상세한 설명은 생략하기로 한다.
본 명세서에서 개시되는 실시예들에서는 가상 머신을 부팅할 때에 인접한 노드로부터 부팅 이미지를 전송받아 부팅을 수행함으로써, 빠른 부팅이 가능하다. 즉, 가상 머신 이미지의 읽기 패턴을 사전에 학습하여 부팅에 필요한 블록들의 순차적 데이터를 인덱스로 구축하여, 매번 부팅 때마다 랜덤 하게 디스크나 네트워크를 통해 읽기보다는, 다른 가상 머신들 사이에서 인접한 노드에 있는 부팅 이미지를 전송받아 재활용함으로써, 빠른 부팅이 가능하다.
본 명세서에서 개시되는 실시예들은 컴퓨팅 자원을 가상화 기술로 통합해 제공하는 기술인 클라우드 컴퓨팅 환경하에서 구현이 가능할 수 있으며, 가상 머신 이미지의 리플레이(Replay) 과정을 통해, 가상 머신의 부팅에 필요한 가상 머신 이미지에서의 블록 읽기 순서를 학습하고, 이에 따라 인접한 노드에서 보유하고 있는 해당 블록의 이미지 부분을 전송받음으로써 네트워크 상에 존재하는 가상 머신 이미지의 읽기 성능을 극대화하고, 빠른 부팅을 제공할 수 있다.
아래의 [표1]은 종래 기술에서 사용하는 파일 카피 방법 및 NFS 방법과 본 명세서에서 제안하는 방법에 대한 기술적 차이를 설명하기 위한 것으로서, 비교하는 요소는 이미지 전송 방식과 이미지 크기에 따른 것이다.
종래 기술 본 명세서
이미지 전송 방식 기존 이미지를 파일 카피하거나 NFS를 이용한 네트워크 전송을 이용함. 가상 머신의 부팅을 위해 사용되는 기존의 가상 머신 이미지의 공통부분을 학습하고, 이에 따라 인접한 노드로부터 전송받음.
이미지 크기 가상 머신의 사이즈에 사용자별 n배가 됨. 기존의 가상 머신 이미지의 공통부분을 같이 사용함으로써 공통부분의 사이즈만큼 감소됨.
본 명세서에서 개시하는 실시예들에서 사용자 단위로 가상 머신을 할당할 수 있으며, 가상 머신 이미지에서 부팅에 필요한 시스템 영역은 별도로 관리하게 된다. 여기서, 시스템 영역에 해당하는 것은 마스터 부트 레코드(master boot record), 커널 이미지(kernel image), 시스템 소프트웨어(system software) 등이 있을 수 있다. 이를 위해, 가상 머신 이미지의 재정리(reordering)하는 방법과 인접한(neighboring) 노드를 찾는 방법이 적용될 수 있다. 가상 머신 이미지의 재정리하는 방법과 인접한 노드를 찾는 방법은 이하에서 상세히 설명하도록 한다.
도1은 본 명세서에서 개시하는 일 실시예에 따른 가상 머신 시스템을 설명하기 위한 도면이다.
도1을 참조하면, 가상 머신 시스템은 가상 머신 서버와 노드로 구성될 수 있으며, 노드는 부팅에 필요한 블록들에 대한 읽기가 이루어진 노드와 새롭게 부팅하려는 노드로 구성될 수 있다. 이러한 가상 머신 시스템은 리플레이(replay) 단계(101), 준비(prepare) 단계(103) 및 전송(transfer) 단계(105)에 따라 운영될 수 있다.
리플레이 단계(101)에서는 (원본) 가상 머신 이미지에 대한 처리를 통해 가상 디스크 이미지(또는 가상 디스크 이미지를 구성하는 블록들)에 대한 인덱스 정보를 생성한다. 가상 디스크 이미지는 종래의 가상 머신 이미지와 대비되는 것으로서, 이는 도2에서 상세히 설명한다. 준비 단계(103)에서는 인접한 노드(들)에 대한 리스트 정보를 생성한다. 인덱스 정보와 리스트 정보는 가상 머신 서버에서 생성하여 새롭게 부팅할 노드로 전송될 수 있다. 다음으로, 전송 단계(105)에서는 새롭게 부팅할 노드가 가상 머신 서버 또는 인접한 노드(들)로부터 인덱스 정보에 따른 블록들을 전송받음으로써, 최종적으로 가상 디스크 이미지를 수신하고, 이를 이용하여 부팅을 수행하게 된다. 이하에서 각 단계에 대해 상세히 분설한다.
리플레이 단계(101)에서는 가상 머신 이미지에서 가상 머신의 부팅 시 필요한 블록들의 리스트를 얻기 위해 힌트 파일(hint file)을 작성하게 된다. 이를 통해 읽기가 이루어진 노드(들)는 새롭게 부팅하려는 노드(들)에게 자신이 가진 블록들을 용이하게 전송할 수 있다.
준비 단계(103)에서는 인접한 가상 머신의 노드(들)를 찾기 위한 단계로서, 이를 위해 가상 머신 서버에서 각각의 노드에 대한 네트워크 접근 비용을 계산하고, 새롭게 추가되어 부팅하려는 노드(들)에게 제공하게 된다.
전송 단계(105)에서는 새롭게 추가되어 부팅하려는 노드는 필요한 블록 번호, 인접한 노드의 리스트에 기초하여, 가상 머신 서버 및(또는) 인접한 노드(들)에게 자신의 필요한 블록을 요청한다. 이를 통해 전체적으로 인접한 노드 리스트 군에서 원활한 부팅 이미지 영역이 서로 분배될 수 있다. 한편, 새롭게 추가된 노드는 다른 인접한 노드(들)이 필요한 블록을 가지고 있는 경우 이를 제공할 수 있다.
도2는 가상 머신 이미지와 가상 디스크 이미지를 비교하기 위한 도면이다.
도2를 참조하면, 도면부호 210은 가상 머신 이미지에 저장된 파일을 논리적으로 펼쳐보인 그림이다. 가상 머신도 운영체제가 설치되어 있으므로 파일의 맨 처음 블록은 마스터 부트 레코드(211)로 시스템 정보가 있으며, 다음으로 임의의 위치의 커널 이미지 영역(215)이 존재한다. 노드는 마스터 부트 레코드(211)와 커널 이미지(215)를 읽음으로써 기본적인 부팅 절차가 이루어지게 되며, 부팅 시 필요한 라이브러리나 시작 프로그램들(213)도 임의의 위치에 랜덤으로 접근하여 필요 시마다 읽게 된다.
이는 다수의 사용자 측면에서는 모두 공통된 시스템 영역이며, 개별 사용자마다 동일한 영역(블록)을 읽어서 시스템 부팅을 하게 된다.
이러한 공통된 시스템 영역을 하나의 가상 디스크 이미지로 구성하게 되면, 블록 접근 시간 및 전송 시간을 최소화시킬 수 있다.
이러한 개념이 반영된 것이 도면부호 220이다. 도면부호 220은 공통된 시스템 영역(221, 223, 225: 도면부호 210과 220에서 동일한 무늬의 블록은 서로 동일함)을 하나로 묶어 놓은 것이며, 후단의 검은색 블록(227)은 문서 또는 컨텐츠와 같은 사용자 데이터일 수 있다. 이렇게 하나의 가상 디스크 이미지(220)를 구현하기 위해서는 가상 디스크 이미지(220)를 구성하는 블록들(221, 223, 225, 227)에 대한 인덱스 정보를 생성하여야 한다. 인덱스 정보는 힌트 파일(hint file)의 형태로 기록될 수 있다. 이러한 일련의 과정은 도1에서 설명한 리플레이 단계(101)에 해당한다.
인덱스 정보는 가상 머신이 설치된 이미지를 에뮬레이터를 통해 부팅하여 읽은 블록의 위치를 각각 순차적으로 기록한 정보를 포함할 수 있다.
한편, 인덱스 정보는 가상 디스크 이미지(220)를 하나의 순차적인 스트리밍 형태로 전송하기 위한 정보를 포함할 수 있다.
도3은 가상 머신 시스템 구성 및 힌트 파일을 설명하기 위한 도면이다.
도3을 참조하면, 가상 머신 시스템은 가상 머신 서버(310)와 노드들(L1 내지 L6)로 구성된다. 가상 머신 서버(310)는 이미지 디스크 서버(311)와 이미지 인덱스 서버(314)를 포함할 수 있으며, 노드들(L1 내지 L6)은 가상 머신 서버(310)와 현재 접속중인 노드(현재 부팅 중인 노드 또는 부팅을 위한 블록을 보유한 노드: L1 내지 L5)와 접속하려는 노드(새롭게 부팅하려는 노드: L6)로 구성된다. 접속하려는 노드(L6)와 인접한 노드(L4, L5) 및 인접하지 않은 노드(L1 내지 L3)는 점선으로 그려진 원(320, 330)으로 표시하였다.
가상 머신 이미지(312)는 이미지 디스크 서버(311)에 존재하며, 가상 머신 이미지(312)는 가상 디스크 이미지(313)로 재구성(reordering) 된다. 검은색 무늬의 블록들은 시스템 영역에 해당하는 것으로서 노드들(L1 내지 L6)에서 부팅에 필요한 블록들이다. 이미지 인덱스 서버(314)는 힌트 파일(315)을 저장하고 있다.
힌트 파일에는 시퀀스(SEQ), 위치에 대한 오프셋(Offset) 및 블록의 개수(Number of Blocks)에 대한 정보를 포함할 수 있으며, 도3의 힌트 파일의 예시에서는 시퀀스 0, 1, 2에 마스터 부트 레코드(Master Boot Record), 부터 커넬(Boot Kernel), 램디스크이미지(Ramdiskimage)에 각각 대응되는 블록들의 인덱스 정보가 포함되어 있다.
가상 머신 이미지(312) 통해 새롭게 부팅을 수행할 노드(L6)는 먼저 이미지 인덱스 서버(315)에 접근하여 가상 머신 부팅을 위한 인덱스 정보를 포함하는 힌트 파일(315)을 제공받고, 인접한 노드(들)(L1 내지 L5)에 대한 리스트 정보를 제공받는다. 도3에서는 노드 L4, L5가 부팅을 수행할 노드(L6)에 인접한 노드로 선택된 것으로 표시하였다. 이러한 과정은 도1에서의 준비 단계(103)에 대응되는 과정이다.
부팅을 수행할 노드(L6)는 힌트 파일(315) 및 인접한 노드(L4, L5)에 대한 리스트 정보를 가상 머신 서버(310)로부터 수신하고, 수신된 힌트 파일(315) 및 리스트 정보에 기초하여 부팅에 필요한 블록들을 인접 노드들(L4, L5)에 요청한다. 요청한 블록들은 가상 이미지의 형태로 순차적으로 전송받을 수 있으며, 스트리밍 형태로 전송받을 수 있다. 이러한 과정은 도1에서의 전송 단계(105)에 대응되는 과정이다.
도3의 각 노드(L1 내지 L5)에서는 시퀀스 0, 1, 2 에 대응하여 전송받은 블록들에 대해 검은색 무늬로 표시하였으며, 체크표시(V)는 현재 읽고 있는 위치를 나타낸 것이다.
도4는 도3에 기초한 전송 프로토콜의 일 예를 설명하기 위한 도면이다.
도4를 참조하면, 가상 머신 시스템은 가상 머신 서버(410)와 부팅을 수행할 노드(L6)와 인접 노드(L4, L5)로 구성된다. 단, 도4에서는 도면의 복잡도를 감안하여 L4의 인접 노드는 생략하기로 한다. 가상 머신 서버(410)는 이미지 인덱스 서버(411)와 이미지 디스크 서버(412)를 포함할 수 있다. 그러나, 이러한 구분은 하나의 예시일 뿐 이에 한정되는 것은 아니다.
아래의 [표2]는 가상 머신 시스템에서의 전송 프로토콜의 메시지 통신 규약의 예를 설명한다.
Message Header 내용
<FIND> 인접한 노드 리스트를 요청한다.
<NEIGHBORS> 인덱스 서버에 접속한 노드들의 RTT(Round Trip Time)를 측정하여, 요청한 노드와 가장 인접한 노드 리스트를 반환한다.
<CONNECT> 인접한 노드들에게 접속한다.
<REQUEST BLOCKS>
from_index=A, to_index=B
인접한 노드에 필요한 블록의 인덱스 번호를 가지고 요청한다(A에서 B구간을 스트리밍 형태로 계속 전송).
<BLOCKS_BOOT> 요청한 데이터가 부팅과 관련된 데이터라는 것을 알리고, 요청한 데이터를 붙여서 같이 전송한다.
<BLOCK_DATA> 요청한 데이터가 사용자 데이터임을 알리고, 노드에 데이터를 반환한다.
<DISCONNECT> 인접한 노드와의 접속을 끊는다.
부팅을 수행할 노드(L6)는 이미지 인덱스 서버(411)에게 인접한 노드 리스트를 요청하고, 이미지 인덱스 서버(411)는 현재 접속중인 노드와 인접 노드에 대한 리스트 정보를 부팅을 수행할 노드(L6)에게 전송한다(441). 여기서 현재 접속중인 노드에 대한 리스트(Active List)는 L1 내지 L5가 해당하고, 인접 노드에 대한 리스트(Neighbor List)는 L1 내지 L3로 구성되는 그룹과 L4와 L5로 구성되는 그룹으로 나뉘며, 이들 중 L4와 L5로 구성되는 그룹이 인접 노드에 해당한다.
부팅을 수행할 노드(L6)가 새롭게 참여하면서 인접 노드의 리스트의 L4와 L5로 구성되는 그룹에 L6이 새롭게 추가되며, 이미지 디스크 서버(412)와 L4, L5에게 필요한 블록을 요청하여 부팅을 수행하게 된다(443, 445, 447, 449).
부팅을 수행할 노드(L6)는 이미지 디스크 서버(412)에 접속하여 인덱스 정보에 기초하여 블록들을 요청하고, 수신한다(443).
이어서, 부팅을 수행할 노드(L6)는 인접 노드 L5로부터 이미지 디스크 서버(412)로부터 수신한 블록들의 다음 순번부터의 블록을 요청하고, 수신한다(445).
도시되지는 않았지만, 부팅을 수행할 노드(L6)는 인접한 다른 노드(L4)로부터 인접 노드(L5)로부터 수신한 블록들의 다음 순번부터의 블록을 요청하고, 수신한다.
요청한 데이터가 사용자 데이터인 경우에는 접속을 종료한다(447,449). 사용자 데이터의 경우에는 로컬 디스크(예로서, USB 디스크 형태)로 접속하기 때문에 빠른 접근이 가능하다.
부팅을 수행할 노드(L6)가 새롭게 참여하면서 인접 노드의 리스트의 L4와 L5로 구성되는 그룹에 L6가 추가되게 된다.
이하에서는 가상 머신 서버 영방법과 가상 머신 노드 운영방법 및 그 서버와 노드에 대한 실시예에 대해 분설한다.
<가상 머신 서버 및 노드의 운영방법>
도5는 가상 머신 서버 및 노드의 운영방법에 대한 실시예를 설명하기 위한 도면이다.
도5를 참조하면, 가상 머신 서버 운영방법은 가상 머신 이미지에서 가상 머신 부팅을 위한 블록들의 인덱스 정보를 생성하는 단계(511), 대상 노드에 대해 인접한 노드(530, 540)의 리스트 정보를 생성하는 단계(513) 및 인덱스 정보와 리스트 정보를 대상 노드(520)로 전송하는 단계(512, 514)를 포함한다. 여기서, 가상 머신 부팅은 가상 머신의 시스템 부팅을 포함할 수 있다.
인덱스 정보는 가상 머신 부팅에 필요한 블록들의 순서정보를 포함할 수 있고, 여기서, 순서정보는 가상 머신 이미지를 에뮬레이터를 통해 부팅할 때 읽는 블록들의 위치에 대한 순차적인 정보를 포함할 수 있다.
리스트 정보는 가상 머신 서버에 접속한 노드들에 대한 RTT(Round Trip Time)의 측정치를 기준으로 생성될 수 있다.
대상 노드는 인덱스 정보 및 리스트 정보에 따라 인접한 노드(530, 540)에게 가상 머신 부팅을 위한 블록들을 요청하여(515) 순차적으로 수신받을 수 있고, 여기서, 수신받는 블록들은 가상 머신 서버(510) 및 인접한 노드(530, 540)로부터 순차적인 스트리밍 형태로 수신될 수 있다(516 내지 518).
인접한 노드(530, 540)는 가상 머신 서버(510)에 접속되어 가상 머신 부팅을 수행하는 노드를 포함할 수 있다.
도5를 참조하면, 가상 머신 노드 운영방법은 가상 머신 서버(510)로부터 인접한 노드(530, 540)의 리스트 정보를 수신하는 리스트 정보 수신단계(514), 리스트 정보에 기초하여 인접한 노드(530, 540)로부터 가상 머신 부팅을 위해 사용되는 블록들을 수신하는 블록 수신단계(516 내지 518) 및 수신된 블록들을 이용하여 가상 머신을 부팅하는 부팅단계를 포함한다.
한편, 가상 머신 노드 운영방법은 가상 머신 이미지에서 가상 머신 부팅을 위한 순차적인 블록들의 인덱스 정보를 수신하는 인덱스 정보 수신단계(512)를 더 포함할 수 있다. 여기서, 가상 머신 부팅은 가상 머신의 시스템 부팅을 포함할 수 있다.
인덱스 정보는 가상 머신 부팅에 필요한 블록들의 순서정보를 포함할 수 있고, 여기서, 순서정보는 가상 머신 이미지를 에뮬레이터를 통해 부팅할 때 읽는 블록들의 위치에 대한 순차적인 정보를 포함할 수 있다.
리스트 정보는 가상 머신 서버에 접속한 노드들에 대한 RTT의 측정치를 기준으로 생성될 수 있다(513).
블록 수신단계(516 내지 518)는 인덱스 정보 및 리스트 정보에 따라 인접한 노드(530, 540)로부터 가상 머신 부팅을 위한 블록들을 순차적으로 수신받을 수 있고, 수신받는 블록들은 인접한 노드(530, 540)로부터 순차적인 스트리밍 형태로 수신될 수 있다.
인접한 노드(530, 540)는 가상 머신 서버(510)에 접속되어 가상 머신 부팅을 수행하는 노드를 포함할 수 있다.
도6은 가상 머신 서버 및 노드에 대한 실시예를 설명하기 위한 도면이다.
도6을 참조하면, 가상 머신 서버(610)는 가상 머신 이미지에서 가상 머신 부팅을 위한 블록들의 인덱스 정보를 생성하는 인덱스 정보 생성부(611), 대상 노드(620)에 대해 인접한 노드(630, 640)의 리스트 정보를 생성하는 리스트 정보 생성부(613) 및 인덱스 정보와 리스트 정보를 대상 노드로 전송하는 전송부(615)를 포함한다. 여기서, 가상 머신 부팅은 가상 머신의 시스템 부팅을 포함할 수 있다.
인덱스 정보는 가상 머신 부팅에 필요한 블록들의 순서정보를 포함할 수 있고, 순서정보는 가상 머신 이미지를 에뮬레이터를 통해 부팅할 때 읽는 블록들의 위치에 대한 순차적인 정보를 포함할 수 있다.
리스트 정보는 가상 머신 서버(610)에 접속한 노드들에 대한 RTT의 측정치를 기준으로 생성될 수 있다.
대상 노드(620)는 인덱스 정보 및 리스트 정보에 따라 인접한 노드(630, 640)로부터 가상 머신 부팅을 위한 블록들을 순차적으로 수신받을 수 있고, 수신받는 블록들은 가상 머신 서버(610) 및 인접한 노드(630, 640)로부터 순차적인 스트리밍 형태로 수신될 수 있다.
인접한 노드(630, 640)는 가상 머신 서버(610)에 접속되어 가상 머신 부팅을 수행하는 노드를 포함할 수 있다.
도6을 참조하면, 가상 머신 노드(620)는 가상 머신 서버(610)로부터 인접한 노드(630, 640)의 리스트 정보를 수신하고, 리스트 정보에 기초하여 인접한 노드(630, 640)로부터 가상 머신 부팅을 위해 사용되는 블록들을 수신하는 수신부(621) 및 수신된 블록들을 이용하여 가상 머신을 부팅하는 부팅처리부(623)를 포함한다.
수신부(621)는 가상 머신 이미지에서 가상 머신 부팅을 위한 순차적인 블록들의 인덱스 정보를 수신할 수 있다. 여기서, 가상 머신 부팅은 가상 머신의 시스템 부팅을 포함할 수 있다.
인덱스 정보는 가상 머신 부팅에 필요한 블록들의 순서정보를 포함할 수 있고, 여기서, 순서정보는 가상 머신 이미지를 에뮬레이터를 통해 부팅할 때 읽는 블록들의 위치에 대한 순차적인 정보를 포함할 수 있다.
리스트 정보는 가상 머신 서버에 접속한 노드들에 대한 RTT의 측정치를 기준으로 생성될 수 있다.
수신부(621)는 인덱스 정보 및 리스트 정보에 따라 인접한 노드(630, 640)로부터 가상 머신 부팅을 위한 블록들을 순차적으로 수신받을 수 있고, 수신받는 블록들은 인접한 노드(630, 640)로부터 순차적인 스트리밍 형태로 수신될 수 있다.
인접한 노드(630, 640)는 가상 머신 서버(610)에 접속되어 가상 머신 부팅을 수행하는 노드를 포함할 수 있다.
이상의 도5 및 도6에서 설명한 가상 머신 서버와 노드 및 그 운용방법에 대한 자세한 설명은 전술한 도1 내지 도4의 설명과 중복되므로, 여기서는 생략하기로 한다.
도7은 본 발명과 기존 방법의 성능비교를 나타낸 그래프를 도시한 것이다.
본 발명에서 제안하는 프로토콜의 성능 모델 값은 [표3]과 같다.
Figure pat00001
(file size)
10000
Figure pat00002
50
Figure pat00003
250(ratio = 5)
Figure pat00004
25(ratio = 0.5), 10(ratio = 0.2)
Figure pat00005
(cache hit)
40%, 80%
Figure pat00006
(number of nodes)
1~20
최소 부팅 시간을 Tmin이라고 정의하고, 전송해야 할 사이즈(F), 특정 노드의 다운 노드 성능(Di), 이미지 디스크 서버의 업로드 성능(Us), 동시에 접근하는 노드들의 수(N)이라고 정의한다.
[기존 방법1]에서는 하나의 이미지 서버에서 다수의 노드 들이 동일한 이미지를 다운로드 받아서 부팅하는 데 걸리는 시간은 [식1]과 같으며, 이는 일반적인 Unicast형태의 전송의 예이다.
[식1]
Figure pat00007
[기존 방법2]에서는 원거리의 이미지 서버가 존재하는 경우, 프록시 서버(Up)를 두어서 원거리의 이미지 서버의 전송 부하를 줄이기 위한 방법은 [식2]와 같다. 이는 일반적인 Proxy형태의 전송의 예이다.
[식2]
Figure pat00008
[본 발명]에서는 전송 시 이미지 서버와 인접 노드들(Uneighbors)로부터 모두 부팅 이미지를 전송받기 때문에 [식3]과 같은 부팅 시간의 수식을 얻을 수 있다.
Figure pat00009
도7은 이러한 세가지 전송 모델을 통해 각각의 임의의 값을 대입하여 산출한 그래프이다. 본 발명의 방법은 기존 방법보다 가상 머신을 제공받은 사용자의 노드 수가 증가함에 따라, 최소의 부팅 시간을 갖는 것을 확인할 수 있다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등) 및 캐리어 웨이브(예를 들면, 인터넷을 통한 전송)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (19)

  1. 가상 머신 이미지에서 가상 머신 부팅을 위한 블록들의 인덱스 정보를 생성하는 단계;
    대상 노드에 대해 인접한 노드의 리스트 정보를 생성하는 단계; 및
    상기 인덱스 정보 및 상기 리스트 정보를 상기 대상 노드로 전송하는 단계를 포함하는, 가상 머신 서버 운영방법.
  2. 제1항에 있어서,
    상기 인덱스 정보는
    상기 가상 머신 부팅에 필요한 블록들의 순서정보를 포함하는, 가상 머신 서버 운영방법.
  3. 제2항에 있어서,
    상기 순서정보는
    상기 가상 머신 이미지를 에뮬레이터를 통해 부팅할 때 읽는 블록들의 위치에 대한 순차적인 정보를 포함하는, 가상 머신 서버 운영방법.
  4. 제1항에 있어서,
    상기 리스트 정보는
    상기 가상 머신 서버에 접속한 노드들에 대한 RTT(Round Trip Time)의 측정치를 기준으로 생성되는, 가상 머신 서버 운영방법.
  5. 제1항에 있어서,
    상기 대상 노드는
    상기 인덱스 정보 및 상기 리스트 정보에 따라 상기 인접한 노드로부터 상기 가상 머신 부팅을 위한 블록들을 순차적으로 수신받는, 가상 머신 서버 운영방법.
  6. 제5항에 있어서,
    상기 수신받는 블록들은
    상기 가상 머신 서버 및 상기 인접한 노드로부터 순차적인 스트리밍 형태로 수신되는, 가상 머신 서버 운영방법.
  7. 제1항에 있어서,
    상기 인접한 노드는
    상기 가상 머신 서버에 접속되어 상기 가상 머신 부팅을 수행하는 노드를 포함하는, 가상 머신 서버 운영방법.
  8. 제1항에 있어서,
    상기 가상 머신 부팅은
    가상 머신의 시스템 부팅을 포함하는, 가상 머신 서버 운영방법.
  9. 가상 머신 이미지에서 가상 머신 부팅을 위한 블록들의 인덱스 정보를 생성하는 인덱스 정보 생성부;
    대상 노드에 대해 인접한 노드의 리스트 정보를 생성하는 리스트 정보 생성부; 및
    상기 인덱스 정보 및 상기 리스트 정보를 상기 대상 노드로 전송하는 전송부를 포함하는, 가상 머신 서버.
  10. 가상 머신 서버로부터 인접한 노드의 리스트 정보를 수신하는 리스트 정보 수신단계;
    상기 리스트 정보에 기초하여 상기 인접한 노드로부터 가상 머신 부팅을 위해 사용되는 블록들을 수신하는 블록 수신단계; 및
    상기 수신된 블록들을 이용하여 가상 머신을 부팅하는 부팅단계를 포함하는, 가상 머신 노드 운영방법.
  11. 제10항에 있어서,
    가상 머신 이미지에서 상기 가상 머신 부팅을 위한 순차적인 블록들의 인덱스 정보를 수신하는 인덱스 정보 수신단계를 더 포함하는, 가상 머신 노드 운영방법.
  12. 제10항에 있어서,
    상기 인덱스 정보는
    상기 가상 머신 부팅에 필요한 블록들의 순서정보를 포함하는, 가상 머신 노드 운영방법.
  13. 제10항에 있어서,
    상기 순서정보는
    상기 가상 머신 이미지를 에뮬레이터를 통해 부팅할 때 읽는 블록들의 위치에 대한 순차적인 정보를 포함하는, 가상 머신 노드 운영방법.
  14. 제10항에 있어서,
    상기 리스트 정보는
    상기 가상 머신 서버에 접속한 노드들에 대한 RTT(Round Trip Time)의 측정치를 기준으로 생성되는, 가상 머신 노드 운영 방법.
  15. 제10항에 있어서,
    상기 블록 수신단계는
    상기 인덱스 정보 및 상기 리스트 정보에 따라 상기 인접한 노드로부터 상기 가상 머신 부팅을 위한 블록들을 순차적으로 수신받는, 가상 머신 노드 운영 방법.
  16. 제15항에 있어서,
    상기 수신받는 블록들은
    상기 인접한 노드로부터 순차적인 스트리밍 형태로 수신되는, 가상 머신 노드 운영 방법.
  17. 제10항에 있어서,
    상기 인접한 노드는
    상기 가상 머신 서버에 접속되어 상기 가상 머신 부팅을 수행하는 노드를 포함하는, 가상 머신 노드 운영 방법.
  18. 가상 머신 서버로부터 인접한 노드의 리스트 정보를 수신하고, 상기 리스트 정보에 기초하여 상기 인접한 노드로부터 가상 머신 부팅을 위해 사용되는 블록들을 수신하는 수신부; 및
    상기 수신된 블록들을 이용하여 가상 머신을 부팅하는 부팅처리부를 포함하는, 가상 머신 노드.
  19. 제18항에 있어서,
    상기 수신부는
    가상 머신 이미지에서 상기 가상 머신 부팅을 위한 순차적인 블록들의 인덱스 정보를 수신하는, 가상 머신 노드.
KR1020100132842A 2010-12-22 2010-12-22 가상머신 서버와 노드 운영방법 및 그 장치 KR20120071205A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100132842A KR20120071205A (ko) 2010-12-22 2010-12-22 가상머신 서버와 노드 운영방법 및 그 장치
US13/332,791 US9003403B2 (en) 2010-12-22 2011-12-21 Operating methods for virtual machine server and nodes based on round trip time (RTT) information and apparatuses thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100132842A KR20120071205A (ko) 2010-12-22 2010-12-22 가상머신 서버와 노드 운영방법 및 그 장치

Publications (1)

Publication Number Publication Date
KR20120071205A true KR20120071205A (ko) 2012-07-02

Family

ID=46318648

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100132842A KR20120071205A (ko) 2010-12-22 2010-12-22 가상머신 서버와 노드 운영방법 및 그 장치

Country Status (2)

Country Link
US (1) US9003403B2 (ko)
KR (1) KR20120071205A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170105858A (ko) * 2016-03-10 2017-09-20 에스케이텔레콤 주식회사 부트워킹셋을 이용한 가상머신 프로비저닝 가속장치와 가상머신 관리장치 및 방법

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10469556B2 (en) 2007-05-31 2019-11-05 Ooma, Inc. System and method for providing audio cues in operation of a VoIP service
US8754892B2 (en) 2011-10-28 2014-06-17 International Business Machines Corporation Visualization of virtual image relationships and attributes
US9386148B2 (en) 2013-09-23 2016-07-05 Ooma, Inc. Identifying and filtering incoming telephone calls to enhance privacy
US9633547B2 (en) 2014-05-20 2017-04-25 Ooma, Inc. Security monitoring and control
US10553098B2 (en) 2014-05-20 2020-02-04 Ooma, Inc. Appliance device integration with alarm systems
US10769931B2 (en) 2014-05-20 2020-09-08 Ooma, Inc. Network jamming detection and remediation
US11330100B2 (en) 2014-07-09 2022-05-10 Ooma, Inc. Server based intelligent personal assistant services
US9804965B2 (en) * 2014-12-03 2017-10-31 Electronics And Telecommunications Research Institute Virtual machine host server apparatus and method for operating the same
US11171875B2 (en) 2015-05-08 2021-11-09 Ooma, Inc. Systems and methods of communications network failure detection and remediation utilizing link probes
US10771396B2 (en) 2015-05-08 2020-09-08 Ooma, Inc. Communications network failure detection and remediation
US10009286B2 (en) * 2015-05-08 2018-06-26 Ooma, Inc. Communications hub
US10911368B2 (en) 2015-05-08 2021-02-02 Ooma, Inc. Gateway address spoofing for alternate network utilization
US10887360B1 (en) * 2015-12-30 2021-01-05 iCloudPatent.com LTD. (a Caymans Islands company) Direct network connections using cloud instance for multipoint meeting service
KR102389028B1 (ko) 2016-01-04 2022-04-22 한국전자통신연구원 가상 데스크탑 간의 데이터 고속 전송 장치 및 방법
JP6578055B2 (ja) * 2016-03-28 2019-09-18 株式会社日立製作所 管理計算機および性能劣化予兆検知方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050262167A1 (en) * 2004-05-13 2005-11-24 Microsoft Corporation Efficient algorithm and protocol for remote differential compression on a local device
US8701106B2 (en) * 2008-11-30 2014-04-15 Red Hat Israel, Ltd. Hashing storage images of a virtual machine

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170105858A (ko) * 2016-03-10 2017-09-20 에스케이텔레콤 주식회사 부트워킹셋을 이용한 가상머신 프로비저닝 가속장치와 가상머신 관리장치 및 방법

Also Published As

Publication number Publication date
US9003403B2 (en) 2015-04-07
US20120167086A1 (en) 2012-06-28

Similar Documents

Publication Publication Date Title
KR20120071205A (ko) 가상머신 서버와 노드 운영방법 및 그 장치
JP6130890B2 (ja) データ同期化
CN105740048B (zh) 一种镜像管理方法、装置及系统
CN112445579B (zh) 零终端数据处理系统及其文件复制方法、装置
US9164795B1 (en) Secure tunnel infrastructure between hosts in a hybrid network environment
EP3750291B1 (en) Collaborative editing of media in a mixed computing environment
US8856585B2 (en) Hardware failure mitigation
US11809901B2 (en) Migrating the runtime state of a container between two nodes
US20130086200A1 (en) Live Logical Partition Migration with Stateful Offload Connections Using Context Extraction and Insertion
CN105612735B (zh) 可靠地址发现高速缓存
CN104602102B (zh) 视频截取内容的传输响应方法、装置、服务器和系统
KR20120072241A (ko) 클라우드 컴퓨팅 환경에서의 클라우드 간 개인 가상 머신 이동 시스템 및 그 방법
AU2019216773B2 (en) Live-rendered and forkable graphic edit trails
TWI486787B (zh) 顯示畫面的方法及系統
US20140013001A1 (en) Parallel probing for efficient proxy selection in networked environments
US8819139B2 (en) Virtual desktop infrastructure (VDI) login acceleration
CN102323888B (zh) 一种无盘计算机启动加速方法
CN112445578B (zh) 零终端数据处理系统及其文件复制方法、装置
US20200065129A1 (en) Multi-cloud operating method, operation managing device, and storage medium
CN112597039A (zh) 虚拟机访问方法、系统、设备及计算机可读存储介质
CN115794139A (zh) 镜像数据处理方法、装置、设备以及介质
KR101601877B1 (ko) 분산 파일시스템에서 클라이언트가 데이터 저장에 참여하는 장치 및 방법
CN109587185B (zh) 云存储系统和云存储系统中的对象处理方法
CN108932149B (zh) 数据传输方法及装置
US20130007727A1 (en) Reactivation of a software image from a source machine onto a target machine

Legal Events

Date Code Title Description
A201 Request for examination
WITB Request for withdrawal (abandonment) before grant