KR20170105858A - Apparatus for accelerating virtual machine provisioning by use of bws and apparatus for managing the virtual machine and method thereof - Google Patents
Apparatus for accelerating virtual machine provisioning by use of bws and apparatus for managing the virtual machine and method thereof Download PDFInfo
- Publication number
- KR20170105858A KR20170105858A KR1020160029060A KR20160029060A KR20170105858A KR 20170105858 A KR20170105858 A KR 20170105858A KR 1020160029060 A KR1020160029060 A KR 1020160029060A KR 20160029060 A KR20160029060 A KR 20160029060A KR 20170105858 A KR20170105858 A KR 20170105858A
- Authority
- KR
- South Korea
- Prior art keywords
- virtual machine
- bws
- data
- disk
- virtual
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4405—Initialisation of multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/177—Initialisation or configuration control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
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 Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
Description
본 발명은 가상 머신에 관한 것으로, 특히 클라우드 시스템에서 가상 머신 프로비저닝시 가상 머신을 부트시킬 수 있는 부트워킹셋을 클라우드 시스템내 모든 컴퓨트 노드에 미리 배포하여 저장시켜 놓은 후, 가상 머신 프로비저닝 시 네트워크를 거치지 않고 바로 각각의 컴퓨트 노드에서 부트워킹셋(boot working set :BWS)을 이용하여 가상 머신을 부팅시킴으로써, 가상 머신 프로비저닝 속도를 가속화시킬 수 있도록 하며, 또한 미리 저장된 부트워킹셋을 이용함으로써 여러 가상 머신들이 동시에 프로비저닝되는 경우에도 네트워크 사용량이 현저히 줄어들게 되어 네트워크 병목 현상인 부트 스톰을 완화시킬 수 있도록 하는 부트워킹셋을 이용한 가상머신 프로비저닝 가속장치 및 가상머신 관리장치 및 방법에 관한 것이다.
In particular, the present invention relates to a virtual machine, and particularly, a booting set capable of booting a virtual machine when a virtual machine is provisioned in a cloud system is previously distributed to all compute nodes in a cloud system and stored, By booting a virtual machine using a boot working set (BWS) on each compute node without going through it, it can accelerate the speed of virtual machine provisioning, and by using pre-stored boot working sets, And more particularly, to a virtual machine provisioning accelerator and a virtual machine management apparatus and method using a booting set that mitigates a bootstorm, which is a network bottleneck, because network usage is significantly reduced even when machines are provisioned at the same time.
일반적으로, 가상화(virtualization)는 하나의 물리적 디바이스를 여러 개가 존재하는 것처럼 사용할 수 있는 기술을 말하며, 컴퓨팅 환경에 필요한 자원들을 모은 것을 가상 머신(virtual machine)이라 한다.In general, virtualization refers to a technology that can use one physical device as if it exists, and collecting the resources required for a computing environment is called a virtual machine.
이때, 위와 같은 가상 머신을 생성하고 운영체제를 설치해 사용자에게 제공하는 과정을 프로비저닝이라고 하며, 이하에서는 가상머신을 프로비저닝하는 동작에 대해 간략히 살펴보기로 한다.At this time, the process of creating the above virtual machine and providing the operating system to the user is called provisioning. Hereinafter, the operation of provisioning the virtual machine will be briefly described.
먼저, 가상 머신의 프로비저닝 시 타겟이된 컴퓨트 노드(Compute node) 에 부팅하려는 이미지를 전송한다. 그 후 전송이 완료가 되면 그 이미지를 백킹(Backing) 하는 가상머신 디스크를 만들고 이를 이용해서 부팅을 한다. 그러면 추후 해당 이미지에 대한 I/O 는 컴퓨트 노드 내에서 지역적으로 이루어 질 수 있다. 또한 추후 같은 컴퓨트에 프로비저닝되고 같은 이미지에 대한 프로비저닝인 경우 컴퓨트 노드에 전송되어 있는 이미지를 이용함으로써 추가적인 네트워크 전송이 필요없게 된다. 그러나 다수의 컴퓨트 노드에서 동시에 프로비저닝이 수행되는 경우 네트워크 사용량이 많아져서 부트 스톰(boot storm)이 발생하는 문제점이 있다.First, when the virtual machine is provisioned, it sends the image to boot to the target compute node. Then, when the transfer is completed, create a virtual machine disk that backs up the image and boot using it. Then, the I / O for the image may be performed locally within the compute node. Also, if provisioning for the same image is later provisioned for the same image, additional network transmission is unnecessary by using the image transmitted to the compute node. However, when provisioning is performed simultaneously on a plurality of compute nodes, the network usage increases and a boot storm occurs.
다음으로, 이미지로부터 가상머신을 프로비저닝하는 방법 이외에 볼륨으로부터 가상머신을 프로비저닝하는 방법이 있다. 이 방법에서는 볼륨을 스토리지 노드(Storage node)에 생성하고 생성된 볼륨을 부팅 가능하게 만들기 위해서 부팅 이미지를 iSCSI 등의 방법을 이용해서 해당 볼륨에 쓰는 작업을 한다. 이러한 작업이 끝나고, 해당 볼륨을 이용해서 프로비저닝하게 된다. 하지만 이때 부팅을 하기 위해서는, 부팅을 하는 각각의 볼륨마다 부팅 이미지를 써줘야 하기 때문에 이미지로부터 가상머신을 프로비저닝하는 것보다 훨씬 많은 시간이 소요되게 된다. Next, there is a method of provisioning a virtual machine from a volume other than provisioning a virtual machine from an image. In this method, the volume is created on the storage node and the boot image is written to the volume using iSCSI or other methods to make the created volume bootable. After this, you will be provisioned using that volume. However, in order to boot at this time, it takes much more time to provision the virtual machine from the image, since each booting volume requires a boot image.
이러한 문제점을 해결하는 방법으로 볼륨을 생성할 때 이미지 노드(Image node) 에 저장되어있는 부팅 이미지를 백킹하는 볼륨을 스토리지 노드에 생성하고 이 볼륨을 이용해서 프로비저닝하는 방법이 있다. 이를 통해 볼륨의 생성시 일일이 데이터를 써 줄 필요가 없고 해당 볼륨을 바로 이용해서 프로비저닝 할 수 있게 된다. One way to solve this problem is to create a volume on the storage node that backs up the boot image stored in the Image node when creating the volume, and provision it using this volume. This eliminates the need to write data to the volume at the time of creation, and allows the volume to be provisioned and used immediately.
그러나, 새로운 볼륨을 만들어서 프로비저닝하는 경우, 볼륨 부분은 원격(Remote) 스토리지 노드에 저장되어 있기 때문에 가상머신 프로비저닝 시 컴퓨트 노드에서 지역적으로 읽어올 수가 없다. 이런 상황에서 많은 양의 가상머신이 프로비저닝되면 클라우드 시스템내 네트워크 사용량이 많아져서 부트 스톰이 발생하게 된다. 이는 전반적인 가상머신 프로비저닝 속도는 물론 기존 운영되고 있는 가상머신 성능에도 영향을 미치게 된다.However, when creating and provisioning a new volume, the volume portion is stored locally on the compute node during virtual machine provisioning because it is stored on the remote storage node. In this situation, when a large number of virtual machines are provisioned, the network usage in the cloud system increases and a boot storm occurs. This will affect the overall virtual machine provisioning speed as well as the performance of existing virtual machines.
한편, 클라우드 시스템에서 가상 머신 프로비저닝 속도는 사용자의 만족도를 평가하는 중요한 요소이다. 볼륨으로부터 가상 머신 프로비저닝할 때, 단순히 스토리지 노드에 볼륨을 생성하고, 모든 생성된 볼륨에 대해서 부팅 가능하게 하기 위해 iSCSI를 이용해 부팅 이미지를 볼륨에 쓰면, 각각의 볼륨에 대해서 쓰기가 끝날 때까지 가상머신 프로비저닝을 하지 못하고 네트워크를 이용하기 때문에 많은 양의 볼륨에 대해서 프로비저닝 시 심각한 성능 저하가 발생하게 된다. On the other hand, the rate of virtual machine provisioning in the cloud system is an important factor in evaluating user satisfaction. When provisioning a virtual machine from a volume, simply write the boot image to the volume using iSCSI to create the volume on the storage node and make it bootable for all created volumes, and then use the virtual machine Provisioning can result in severe performance degradation when provisioning large volumes because the network is used without provisioning.
또한, 이를 해결하기 위해서 이미지 노드에 있는 부팅 이미지를 백킹하는 볼륨을 만들어서 가상머신 프로비저닝을 하면, 부팅 가능한 볼륨을 만드는 시간은 줄어들지만, 가상머신이 프로비저닝될 때 원격(Remote)인 스토리지 노드에 있는 볼륨을 네트워크를 이용해서 프로비저닝하는 점은 같기 때문에, 많은 양의 가상머신이 프로비저닝되면 네트워크 사용량이 많아져서 가상머신 프로비저닝 성능이 낮아지게 된다.
Also, to solve this problem, when creating a volume that backs up the boot image on the image node and provisioning the virtual machine, the time to create a bootable volume is reduced, but when the virtual machine is provisioned, Is provisioned using the network, so if a large number of virtual machines are provisioned, the network usage will increase and the virtual machine provisioning performance will be lowered.
(특허문헌)(Patent Literature)
대한민국 공개번호 10-2009-0065126호(공개일자 2009년 06월 22일)
Republic of Korea Publication No. 10-2009-0065126 (Published date June 22, 2009)
따라서, 본 발명에서는 클라우드 시스템에서 가상 머신 프로비저닝시 가상 머신을 부트시킬 수 있는 부트워킹셋을 클라우드 시스템내 모든 컴퓨트 노드에 미리 배포하여 저장시켜 놓은 후, 가상 머신 프로비저닝 시 네트워크를 거치지 않고 바로 각각의 컴퓨트 노드에서 부트워킹셋을 이용하여 가상 머신을 부팅시킴으로써, 가상 머신 프로비저닝 속도를 가속화시킬 수 있도록 하며, 또한 미리 저장된 부트워킹셋을 이용함으로써 여러 가상 머신들이 동시에 프로비저닝되는 경우에도 네트워크 사용량이 현저히 줄어들게 되어 네트워크 병목 현상인 부트 스톰을 완화시킬 수 있도록 하는 부트워킹셋을 이용한 가상머신 프로비저닝 가속장치 및 가상머신 관리장치 및 방법을 제공하고자 한다.
Accordingly, in the present invention, a booting set capable of booting a virtual machine when a virtual machine is provisioned in a cloud system is previously distributed to all the compute nodes in the cloud system and stored, and then, when the virtual machine is provisioned, By booting a virtual machine using a bootstrapping set on a compute node, the speed of virtual machine provisioning can be accelerated. Moreover, even if multiple virtual machines are provisioned simultaneously by using a pre-stored booting set, the network usage can be significantly reduced And a bootstroke set that can mitigate a bootstorm, which is a network bottleneck phenomenon, to a virtual machine provisioning acceleration device and a virtual machine management apparatus and method.
상술한 본 발명은 가상머신 프로비저닝 가속장치로서, 클라우드 시스템내 적어도 하나의 컴퓨트 노드에 생성되는 적어도 하나의 가상머신의 디스크 이미지가 등록되는 경우 상기 디스크 이미지 중 상기 가상머신을 부팅시키기 위해 필요한 데이터를 포함하는 BWS(Boot Working Set)를 생성하는 BWS 생성부와, 상기 BWS 상기 컴퓨트 노드로 배포하여, 상기 가상머신이 상기 컴퓨트 노드에서 상기 BWS를 이용하여 부팅되도록 제어하는 BWS 관리부를 포함한다.The present invention relates to a virtual machine provisioning accelerator, wherein when a disk image of at least one virtual machine created in at least one compute node in a cloud system is registered, data necessary for booting the virtual machine among the disk images And a BWS manager for distributing the BWS to the compute node and controlling the virtual machine to boot at the compute node using the BWS.
또한, 상기 BWS 생성부는, 상기 디스크 이미지를 이용하여 상기 가상머신을 부팅시키는 동안, 상기 디스크 이미지 중 상기 부팅 시 사용되는 데이터를 확인하고, 상기 확인된 데이터만으로 상기 BWS를 생성하는 것을 특징으로 한다.Also, the BWS generator may check the data used during the booting of the disk image while booting the virtual machine using the disk image, and generate the BWS based on only the confirmed data.
또한, 상기 BWS 생성부는, 상기 클라우드 시스템내 상기 BWS를 생성하도록 할당된 컴퓨트 노드로 하여금 상기 BWS를 생성하도록 하는 것을 특징으로 한다.The BWS generator may cause the compute node allocated to generate the BWS in the cloud system to generate the BWS.
또한, 본 발명은 가상머신 프로비저닝 방법으로서, 클라우드 시스템내 적어도 하나의 컴퓨트 노드에 생성될 가상머신의 디스크 이미지를 수신하는 단계와, 상기 디스크 이미지 중 상기 가상머신을 부팅시키기 위해 필요한 데이터를 포함하는 BWS를 생성하는 단계와, 상기 BWS를 상기 컴퓨트 노드로 배포하는 단계와, 상기 컴퓨트 노드에서 상기 가상머신 상기 BWS를 이용하여 부팅되도록 제어하는 단계를 포함한다.The present invention also provides a virtual machine provisioning method comprising the steps of: receiving a disk image of a virtual machine to be created in at least one compute node in a cloud system; Generating a BWS, distributing the BWS to the compute node, and controlling the virtual node to boot using the BWS in the compute node.
또한, 본 발명은 가상머신 관리장치로서, 클라우드 시스템내 컴퓨트 노드로 가상머신의 프로비저닝이 요청되는 경우 상기 가상머신의 디스크 이미지 중 상기 가상머신의 부팅을 위해 필요한 데이터로 이루어진 BWS를 이용하여 상기 가상머신을 부팅시키는 가상머신 프로비저닝부와, 상기 부팅된 상기 가상머신상 데이터 읽기 또는 쓰기가 수행되어 상기 가상머신으로부터 상기 데이터 읽기 또는 쓰기를 위한 데이터 요청을 수신하는 경우, 상기 가상머신상 쓰기가 수행된 데이터에 대한 해쉬값을 저장한 해쉬테이블을 참조하여 상기 요청된 데이터가 상기 BWS에 있는지 또는 상기 가상머신의 가상 디스크에 있는지 판단하고, 상기 판단결과에 따라 상기 BWS 또는 상기 가상 디스크에서 상기 요청된 데이터를 검색하여 상기 가상머신으로 제공하는 I/O(Input/Output) 관리부를 포함한다.In addition, the present invention provides a virtual machine management apparatus, wherein when a provisioning of a virtual machine is requested to a compute node in a cloud system, the BWS consisting of data necessary for booting the virtual machine among the disk images of the virtual machine is used, A virtual machine provisioning unit for booting the machine; and a data writing / reading unit for writing / reading data to / from the virtual machine, Determining whether the requested data is in the BWS or in the virtual disk of the virtual machine by referring to a hash table storing a hash value of the data and storing the requested data in the BWS or the virtual disk according to the determination result; (Input / Ou < RTI ID = 0.0 > tput) management section.
또한, 상기 I/O 관리부는, 상기 가상머신으로부터 상기 데이터 요청을 수신하고, 상기 요청된 데이터를 상기 BWS 또는 상기 가상 디스크에서 검색하여 상기 가상머신으로 제공하는 I/O처리부와, 상기 해쉬테이블을 참조하여 상기 요청된 데이터가 상기 BWS에 있는지 또는 상기 가상 디스크에 있는지 여부를 판단하고, 상기 판단 결과를 상기 I/O 처리부로 제공하는 결정부와, 상기 BWS에 저장된 데이터에 대한 읽기가 가능하며, 상기 I/O 처리부로부터 상기 데이터 요청 수신 시, 상기 BWS에서 상기 요청된 데이터를 검색하여 상기 I/O처리부로 제공하는 BWS 리더부를 포함하는 것을 특징으로 한다.The I / O management unit may include an I / O processing unit for receiving the data request from the virtual machine, searching the BWS or the virtual disk for the requested data, and providing the requested data to the virtual machine, A determination unit for determining whether the requested data is in the BWS or the virtual disk and providing the determination result to the I / O processing unit, And a BWS reader unit for retrieving the requested data from the BWS when the data request is received from the I / O processing unit and providing the requested data to the I / O processing unit.
또한, 상기 해쉬값은, 상기 가상 디스크상 상기 쓰기가 수행된 데이터가 저장된 섹터의 오프셋값인 것을 특징으로 한다.The hash value may be an offset value of a sector in which data is written on the virtual disk.
또한, 본 발명은 가상머신 프로비저닝 방법으로서, 클라우드 시스템내 컴퓨트 노드에서 가상머신의 디스크 이미지 중 상기 가상머신의 부팅을 위해 필요한 데이터로 이루어진 BWS를 이용하여 상기 가상머신을 부팅시키는 단계와, 상기 부팅된 가상머신으로부터 데이터 읽기 또는 쓰기를 위한 데이터 요청을 수신하는 단계와, 상기 가상머신상 쓰기가 수행된 데이터에 대한 해쉬값을 저장한 해쉬테이블을 참조하여 상기 요청된 데이터가 상기 BWS에 있는지 또는 상기 가상머신의 가상 디스크에 있는지 판단하는 단계와, 상기 판단결과에 따라 상기 BWS 또는 상기 가상 디스크에서 상기 요청된 데이터를 검색하여 상기 가상머신으로 제공하는 단계를 포함한다.
According to another aspect of the present invention, there is provided a virtual machine provisioning method comprising the steps of: booting a virtual machine using a BWS composed of data necessary for booting the virtual machine among disk images of a virtual machine at a compute node in a cloud system; Receiving a data request for reading or writing data from a virtual machine that has been written in the virtual machine, referring to a hash table storing a hash value of data written in the virtual machine, Determining whether the virtual disk exists in the virtual disk of the virtual machine, and searching the requested data in the BWS or the virtual disk according to the determination result and providing the requested data to the virtual machine.
본 발명에 따르면, 부트워킹셋을 이용한 가상머신 프로비저닝 가속장치 및 가상머신 관리장치에서 가상 머신 프로비저닝시 가상머신을 부트시킬 수 있는 부트워킹셋을 클라우드 시스템내 모든 컴퓨트 노드에 미리 배포하여 저장시켜 놓은 후, 가상 머신 프로비저닝 시 네트워크를 거치지 않고 바로 각각의 컴퓨트 노드에서 부트워킹셋을 이용하여 가상머신을 부팅시킴으로써, 가상머신 프로비저닝 속도를 가속화시킬 수 있는 이점이 있다. 또한 미리 저장된 부트워킹셋을 이용함으로써 여러 가상 머신들이 동시에 프로비저닝되는 경우에도 네트워크 사용량이 현저히 줄어들게 되어 네트워크 병목 현상인 부트 스톰을 완화시킬 수 있는 이점이 있다.
According to the present invention, a virtual machine provisioning accelerator using a booting set, and a booting set capable of booting a virtual machine when a virtual machine is provisioned in a virtual machine management apparatus, are preliminarily distributed and stored in all the compute nodes in the cloud system There is an advantage in that the virtual machine provisioning speed can be accelerated by booting the virtual machine using the boot working set immediately at each compute node without going through the network during the virtual machine provisioning. In addition, by using the pre-stored booting set, even when multiple virtual machines are provisioned at the same time, the network usage is significantly reduced, which is advantageous in mitigating the bootstorm as a network bottleneck.
도 1은 본 발명의 실시예에 따른 가상머신 프로비저닝 시스템의 네트워크 구성도,
도 2는 도 2는 본 발명의 실시예에 따른 가상머신 프로비저닝 가속장치에서 가상머신의 BWS를 생성하고 클라우드 시스템상 각 컴퓨트 노드로 배포하는 개념도,
도 3은 본 발명의 실시예에 따른 BWS 생성노드의 가상머신 관리장치에서 BWS를 생성하는 개념도,
도 4는 본 발명의 실시예에 따른 가상머신 관리장치의 상세 구성도,
도 5는 본 발명의 실시예에 따른 해쉬테이블 예시도,
도 6은 본 발명의 실시예에 따른 가상머신 관리장치에서 가상머신 프로비저닝시 쓰기 동작에 대한 처리 흐름도,
도 7은 본 발명의 실시예에 따른 가상머신 관리장치에서 가상머신 프로비저닝시 읽기 동작에 대한 처리 흐름도.1 is a network configuration diagram of a virtual machine provisioning system according to an embodiment of the present invention;
FIG. 2 is a conceptual diagram of generating a BWS of a virtual machine in a virtual machine provisioning acceleration device according to an embodiment of the present invention and distributing the BWS to each compute node on a cloud system; FIG.
3 is a conceptual diagram for generating a BWS in a virtual machine management apparatus of a BWS generating node according to an embodiment of the present invention;
4 is a detailed configuration diagram of a virtual machine management apparatus according to an embodiment of the present invention;
5 illustrates an example of a hash table according to an embodiment of the present invention,
FIG. 6 is a flowchart illustrating a write operation for virtual machine provisioning in a virtual machine management apparatus according to an embodiment of the present invention. FIG.
FIG. 7 is a flow chart of a process for a read operation when a virtual machine is provisioned in a virtual machine management apparatus according to an embodiment of the present invention. FIG.
이하, 첨부된 도면을 참조하여 본 발명의 동작 원리를 상세히 설명한다. 하기에서 본 발명을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.Hereinafter, the operation principle of the present invention will be described in detail with reference to the accompanying drawings. In the following description of the present invention, detailed description of known functions and configurations incorporated herein will be omitted when it may make the subject matter of the present invention rather unclear. The following terms are defined in consideration of the functions of the present invention, and these may be changed according to the intention of the user, the operator, or the like. Therefore, the definition should be based on the contents throughout this specification.
도 1은 본 발명의 실시예에 따른 가상머신 프로비저닝 시스템의 네트워크 구성을 도시한 것으로, 제어 노드(control node)(100), BWS(boot working set) 생성 노드(make node)(130), 컴퓨트 노드(compute node)(150), 블록 스토리지 노드(block storage node)(160), 스토리지 노드(storage node)(170) 등을 포함할 수 있다.FIG. 1 illustrates a network configuration of a virtual machine provisioning system according to an embodiment of the present invention. The network includes a control node 100, a boot working set (BWS)
이하, 도 1을 참조하여 본 발명의 실시예에 따른 가상머신 프로비저닝 시스템의 각 노드에서의 동작을 상세히 설명하기로 한다.Hereinafter, operation of each node of the virtual machine provisioning system according to the embodiment of the present invention will be described in detail with reference to FIG.
먼저, 제어노드(100)는 네트워크(network)를 통한 사용자로부터의 가상머신(virtual machine) 생성 요청을 수신하여 컴퓨트 노드(150)에 해당 가상머신이 프로비저닝(provisioning)되도록 제어하고, 프로비저닝된 가상머신(152)을 관리할 수 있다. 즉, 제어노드(100)는 클라우드 시스템상 네트워크로 연결되는 각 컴퓨트 노드(150)로 가상머신의 프로비저닝을 명령하게 되며, 이러한 가상머신 프로비저닝 명령이 있는 경우 각 컴퓨트 노드(150)에서 해당 가상머신(152)을 프로비저닝하게 된다.First, the control node 100 receives a virtual machine creation request from a user via a network, controls the corresponding virtual machine to be provisioned in the
이러한 제어노드(100)가 제어하는 구성 요소들은 컴퓨트 노드 관리부(102), 블록 스토리지 노드 관리부(104), 이미지 서비스부(106) 등을 포함할 수 있다.The components controlled by the control node 100 may include a compute
컴퓨트 노드 관리부(102)는 컴퓨트 노드(150)에서의 가상머신 프로비저닝과 각 컴퓨트 노드(150)에서 사용하는 자원 등을 관리한다. 블록 스토리지 노드 관리부(104)는 블록 스토리지 노드(160)의 동작과 블록 스토리지 노드(160)내 구비되는 가상 디스크(virtual disk)(162) 등의 저장장치상 각 컴퓨트 노드(150)에 프로비저닝되는 가상머신(152)의 가상 디스크 자원 등에 대한 정보를 관리한다. The compute
이미지 서비스부(image service)(106)는 가상머신(152)에 대한 디스크 이미지(disk image)를 등록하고, 가상머신 프로비저닝 시 각 컴퓨트 노드(150)로부터 가상머신(152)의 부팅(booting)과 프로비저닝을 위한 디스크 이미지에 대한 요청이 있는 경우 해당 디스크 이미지를 제공한다. 이때, 이러한 디스크 이미지는 컴퓨트 노드(150)에 의해 공유되는 블록 스토리지 노드(160)상 가상 디스크(162)에 저장될 수 있다.The
가상머신 프로비저닝 가속장치(106)는 이미지 서비스부(108)상 새로운 가상머신의 디스크 이미지가 등록되는 경우 해당 디스크 이미지를 부팅시키는데 필요한 데이터를 추출하여 부트워킹셋(boot working set : BWS)(138)을 생성하고, 생성된 BWS를 클라우드 시스템내 각 컴퓨트 노드(150)에 미리 배포한다.When a disk image of a new virtual machine is registered on the
이에 따라, 각 컴퓨트 노드(150)에서 가상머신(152)의 프로비저닝 시 네트워크를 거치지 않고 곧바로 각 컴퓨트 노드(150)에 미리 배포(distribute)되어 있는 BWS(138)를 이용하여 가상머신을 부팅시킴으로써, 가상머신 프로비저닝 속도를 가속시킬 수 있게 된다. 또한, 미리 배포된 BWS(138)를 이용함으로써 여러 가상머신들이 동시에 프로비저닝되는 경우에도 네트워크 사용량이 현저히 줄어들게 되어 네트워크 병목 현상인 부트 스톰(boot storm)을 완화시킬 수 있게 된다. 이때, 위와 같은 네트워크 사용량이라 함은 모든 컴퓨트 노드(150)가 네트워크를 통해 블록 스토리지 노드(160)에 저장된 가상머신(152)의 디스크 이미지에 접근하게 되는 경우에 발생하는 네트워크 사용량을 말할 수 있으나, 이에 한정되는 것은 아니다.Accordingly, when provisioning the
컴퓨트 노드(150)는 사용자가 요청한 가상머신(152)을 프로비저닝하고, 프로비저닝된 가상머신(152)상에서 요청된 작업을 처리하는 노드를 말한다.The
이러한 컴퓨트 노드(150)는 본 발명의 실시예에 따라 가상머신 프로비저닝 가속장치(108)를 통해 이미지 서비스부(106)에 새로이 등록된 가상머신 디스크 이미지에 대한 BWS(138)를 배포받는 경우 해당 BWS(138)를 특정 디스크 영역에 저장시킬 수 있다.When the
또한, 각 컴퓨트 노드(150)는 제어노드(100)의 명령에 따라 가상머신(152)을 프로비저닝하게 되며, 이때 각 컴퓨트 노드(150)에서 가상머신(152)을 프로비저닝함에 있어서, 특정 디스크 영역에 미리 저장된 BWS(138)를 이용하여 가상머신(152)을 부팅시켜 사용자가 가상머신(152)을 사용할 수 있도록 한다. 이어 각 컴퓨트 노드(150)는 가상머신(152)의 부팅 후, 가상머신(152)의 프로비저닝을 위한 나머지 동작을 위해서는 블록 스토리지 노드(160)에 저장된 해당 가상머신(152)의 전체 디스크 이미지를 참조하여 가상머신 프로비저닝 동작을 수행하게 된다.In addition, each
이때, 위와 같은 가상머신(152)의 프로비저닝 동작은 각 컴퓨트 노드(150)에 설치되는 가상머신 관리장치(Hypervisor)(154)에 의해 수행될 수 있다. 또한, 가상머신 관리장치(154)는 본 발명의 실시예에 따라 BWS(138)가 미리 배포되어 각 컴퓨트 노드(150)에 저장됨에 따라, 부팅된 가상머신(152)으로부터의 데이터 읽기(read) 또는 쓰기(write) 요청에 대해 BWS(138)와 블록 스토리지 노드(160)상 해당 가상머신(152)에 할당된 가상 디스크(162)에 접근하는 동작을 제어하는 I/O 관리부(manager)(156)를 더 포함할 수 있다. 이러한 I/O 관리부(156)는 본 발명의 실시예에 따라 BWS(138)가 미리 배포됨에 따라 가상머신(152)의 부팅 후, 가상머신(152)으로부터 데이터 요청을 수신하는 경우 BWS(138) 또는 블록 스토리지 노드(160)상 가상 디스크(162)로의 데이터 접근을 관리하여 보다 효율적으로 데이터 액세스(access)가 이루어지도록 한다.At this time, the provisioning operation of the
즉, 가상머신 관리장치(154)는 제어노드(100)상 가상머신 프로비저닝 가속장치로(108)부터 배포된 가상머신(152)의 부팅을 위한 BWS(138)를 컴퓨트 노드(152)의 특정 디스크 영역에 저장시키고, 제어노드(100)로부터 가상머신(152)을 프로비저닝하도록 요청하는 명령이 수신되는 경우, BWS(138)를 이용하여 가상머신(152)을 빠르게 부팅시킴으로써, 가상머신 프로비저닝의 완료전이라도 사용자가 가상머신(152)을 사용할 수 있도록 한다.That is, the virtual
이어, 가상머신(152)이 부팅된 이후, 가상머신(152)으로부터 데이터 요청이 있는 경우, 가상머신 관리장치(154)는 컴퓨트 노드(150)의 메모리 등과 같은 로컬영역(Local)에 BWS(138)를 두고 BWS(138)에서 읽어 올 수 있는 부분은 BWS(138)에서 읽어오고, 그렇지 않은 부분은 원격(Remote)에 있는 블록 스토리지 노드(160)의 가상 디스크(162)에서 읽어들임으로써, 디스크 이미지로부터의 가상머신 프로비저닝 및 볼륨으로부터 가상머신 프로비저닝의 성능을 향상시키고 다수의 가상 머신이 동시에 프로비저닝 시 발생할 수 있는 부트 스톰 문제를 완화시키게 된다.Then, when there is a data request from the
BWS 생성노드(130)는 가상머신 프로비저닝 가속장치(108)의 명령에 따라 가상머신(132)에 대한 BWS(138)를 생성하는 노드로서, 컴퓨트 노드(150)와 마찬가지로 가상머신 관리장치(134)를 구비하여 컴퓨트 노드(150)에서의 동작과 마찬가지로 이미지 서비스부(106)로부터 디스크 이미지를 다운로드받아 가상머신(132)을 프로비저닝하게 된다. 또한, BWS 생성노드(130)는 가상머신(132)의 프로비저닝 과정에서 가상머신(132)의 부팅시 사용되는 데이터를 추출하여 BWS(138)를 생성할 수 있다. 이때, 이러한 BWS 생성노드(130)에서 프로비저닝되는 가상머신(132)은 컴퓨트 노드(150)에 생성되도록 요청된 가상머신(152)의 BWS(138)을 생성하기 위해 BWS 생성노드(130)에서 미리 프로비저닝시키는 가상머신(132)을 말할 수 있으나, 이에 한정되는 것은 아니다.The
블록 스토리지 노드(160)는 클라우드 시스템상 각 컴퓨터 노드(150)에 의해 공유되는 스토리지 자원을 구비하는 노드로서, 하드 디스크(hard disk) 등의 저장장치를 이용하여 각 컴퓨트 노드(150)에 프로비저닝되는 가상머신(152)의 디스크 이미지를 저장하고, 가상머신(152)에 가상 디스크(162)를 할당하여 가상머신(152)이 부팅된 이후 가상머신(152)에서 쓰기 또는 읽기의 동작에 따라 발생하는 데이터를 해당 가상 디스크(162)에 저장할 수 있다.The
스토리지 노드(170)는 하드 디스크 등의 대용량 저장장치를 말하는 것으로, 클라우드 시스템내 각 컴퓨트 노드(150)에서 저장하는 일반적인 데이터가 저장되기도 하고, 가상머신(152)이 프로비저닝되기 전의 이미지 파일 등을 저장할 수도 있다.The
도 2는 본 발명의 실시예에 따른 가상머신 프로비저닝 가속장치(106)에서 가상머신(152)의 BWS(138)를 생성하고 클라우드 시스템상 각 컴퓨트 노드(150)로 배포하는 개념을 도시한 것이다. Figure 2 illustrates the concept of creating a
이하, 도 2를 참조하여 가상머신 프로비저닝 가속장치(108)에서 가상머신(150)의 BWS(138)를 생성하고 클라우드 시스템상 각 컴퓨트 노드(150)로 배포하는 동작을 보다 상세히 설명하기로 한다.Hereinafter, the operation of generating the
먼저, 가상머신 프로비저닝 가속장치(108)는 BWS 생성부(200)와 BWS 관리부(202) 등을 포함할 수 있다.First, the virtual
BWS 생성부(200)는 이미지 서비스부(106)에 새로운 가상머신(152)의 디스크 이미지가 등록되는 경우 해당 디스크 이미지에 대한 BWS(138)가 생성되도록 한다. 이때, BWS 생성부(200)는 BWS 생성노드(130)로 새로이 등록된 가상머신(152)의 디스크 이미지에 대해 BWS(138)를 생성하도록 명령할 수 있다. 이때, BWS(138)의 생성에 있어서 BWS 생성부(200)가 BWS 생성노드(130)로 BWS 생성 명령을 전송하여 BWS 생성노드(130)에서 BWS(138)가 생성되도록 하는 것을 예시하였으나, 이에 한정되는 것은 아니다. 즉, BWS 생성부(200)에서 직접 새로이 등록된 가상머신(152)에 대한 BWS(138)를 생성하도록 구현할 수도 있다.The
BWS 관리부(202)는 BWS 생성부(200)의 동작에 따라 BWS 생성노드(130) 등에서 이미지 서비스부(106)에 새로 등록된 가상머신(152)의 BWS(138)가 생성되는 경우, 생성된 BWS(138)를 클라우드 시스템상 각 컴퓨트 노드(150)에 배포하여 특정 컴퓨트 노드(150)에서 네트워크상 블록 스토리지 노드(160)에 접속하지 않고도 BWS(138)를 이용하여 해당 가상머신(152)이 부팅될 수 있도록 함으로써, 가상머신(152)이 신속하게 부팅될 수 있도록 한다.When the
다음으로, 동작을 살펴보면, 제어노드(100)상 이미지 서비스부(106)에 새로운 가상머신(152)에 대한 디스크 이미지가 등록되는 경우 가상머신 프로비저닝 가속장치(108)의 BWS 생성부(200)는 BWS 생성노드(130)로 새로이 등록된 디스크 이미지에 대한 BWS(138)를 생성하도록 명령한다. Next, in operation, when a disk image for a new
이때, BWS 생성노드(130)는 가상머신 프로비저닝 가속장치(108)의 명령에 따라 가상머신(152)에 대한 BWS(138)를 생성하는 노드로서, 컴퓨트 노드(150)와 마찬가지로 가상머신 관리장치(134)를 구비하여 컴퓨트 노드(150)에서의 동작과 마찬가지로 이미지 서비스부(106)로부터 디스크 이미지를 다운로드받아 가상머신(152)을 프로비저닝하게 된다.At this time, the
즉, 가상머신 생성 명령이 수신되는 경우 BWS 생성노드(130)의 가상머신 관리장치(134)는 이미지 서비스부(106)로부터 가상머신(152)의 디스크 이미지를 다운로드받아 SSD(solid state disk)(136)에 저장시키고, SSD(136)에 저장된 디스크 이미지를 이용하여 가상머신(152)을 프로비저닝한다. That is, when the virtual machine creation command is received, the virtual
이때, 가상머신 관리장치(134)는 디스크 이미지를 백킹(backing)하는 데이터가 비어있는 BWS(138)를 생성하고, BWS 생성노드(130)의 가상머신(152)에서 디스크 이미지에 대한 리드(read) 요청(S200)에 따라 SSD(136)상 저장된 디스크 이미지를 이용하여 가상머신(152)을 부팅시키면서 부팅과정에서 디스크 이미지에서 읽혀지는 데이터를 BWS(138)에 Copy-on-Read 방식으로 복사하여 BWS(138)를 생성한다(S202). 이어, 가상머신 관리장치(134)는 이와 같이 생성된 BWS(138)에 대해 BWS 관리부(202)의 제어에 따라 클라우드 시스템상 각 컴퓨트 노드로 배포할 수 있다(S204). At this time, the virtual
도 3은 본 발명의 실시예에 따른 BWS 생성노드(130)의 가상머신 관리장치(134)에서 BWS(138)를 생성하는 개념을 도시한 것이다.3 illustrates a concept of generating a
위 도 3을 참조하면, 먼저 가상머신(152)으로부터 디스크 이미지에 대한 리드 요청이 수신되는 경우(S300), 가상머신 관리장치(134)는 SSD(136)내에 부팅할 디스크 이미지(300)를 백킹(backing) 파일로 가르키고 있는 비어있는 예를 들어 Copy-on-Write를 지원하는 가상 디스크(Qcow2 등) 포맷의 BWS 이미지(302)를 만들고, 디스크 이미지에 대해 Copy-on-Read 옵션을 켠 상태로 부팅시킨다(S302). 이에 따라, 디스크 이미지(300)상 가상머신(152)을 부팅시키기 위해 읽혀지는 데이터가 BWS 이미지(302)에 복사되어 가상머신(152)의 부팅시 사용된 데이터만으로 구성되는 BWS(138)가 생성된다(S304). 이때, 디스크 이미지(300)로부터 읽혀진 데이터는 가상머신 관리장치(134)를 통해 가상머신(152)으로 제공됨으로써(S306) 가상머신(152)의 프로비저닝이 수행된다. 3, when a read request for a disk image is received from the virtual machine 152 (S300), the virtual
즉, 가상머신 관리장치(134)는 위와 같이 비어있는 BWS 이미지(302)를 생성하고, 가상머신(152)을 부팅하면서 Copy-on-Read 방법으로 비어있는 Copy-on-Write(Qcow2 등) 포맷의 BWS 이미지(302)에 원본 디스크 이미지(300)에서 읽어온 부분을 쓰게 됨으로써 자연스럽게 BWS(138)를 만들 수 있게 되는 것이다.That is, the virtual
위와 같이 BWS(138)가 만들어지는 경우 가상머신 가속장치(108)의 BWS 관리부(202)는 BWS 생성노드(130)에서 생성된 가상머신(152)의 BWS(138)를 클라우드 시스템상 각 컴퓨트 노드(150)로 배포하여 각 컴퓨트 노드(150)에 저장되도록 함으로써, 사용자로부터 해당 가상머신(152)에 대한 프로비저닝 요청이 있는 경우, 각 컴퓨트 노드(150)에서 미리 저장된 BWS(138)를 이용하여 가상머신(152)을 부팅시킴으로써, 가상머신 프로비저닝이 신속하게 수행될 수 있도록 한다.When the
도 4는 본 발명의 실시예에 따른 가상머신 관리장치(154)의 상세 구성을 도시한 것으로, 가상머신 프로비저닝부(155), I/O 관리부(156) 등을 포함할 수 있다.FIG. 4 illustrates a detailed configuration of a virtual
이하, 도 4를 참조하여 본 발명의 실시예에 따른 가상머신 관리장치(154)의 각 구성요소에서의 동작을 상세히 설명하기로 한다.Hereinafter, the operation of each component of the virtual
먼저, 가상머신 프로비저닝부(155)는 클라우드 시스템내 각 컴퓨트 노드(150)에서 가상머신(150)의 프로비저닝이 요청되는 경우, 가상머신 프로비저닝 가속장치(108)로부터 미리 배포된 가상머신(152)의 BWS(138)를 이용하여 가상머신(152)을 부팅시키고, 가상머신(152)이 부팅된 이후에는 블록 스토리지 노드(160)에 다운로드된 해당 가상머신(152)의 전체 디스크 이미지를 이용하여 가상머신 프로비저닝을 수행한다.First, the virtual
I/O 관리부(156)는 본 발명의 실시예에 따라 컴퓨트 노드(150)에 배포된 가상머신(152)의 BWS(138)를 이용하여 가상머신(152)이 부팅된 이후, 가상머신(152)으로부터 요청되는 데이터 요청에 대해 BWS(138) 또는 블록 스토리지 노드(160)상 해당 가상머신(152)에 할당된 가상 디스크(162)로 접근하여 요청된 데이터를 가상머신(152)으로 제공하는 동작을 관리하게 된다.The I /
즉, I/O 관리부(156)는 부팅된 가상머신(152)상 데이터 읽기 또는 쓰기가 수행되어 가상머신(152)으로부터 데이터 읽기 또는 쓰기를 위한 데이터 요청을 수신하는 경우, 가상머신(152)상 쓰기가 수행된 데이터에 대한 해쉬(hash)값을 저장한 해쉬테이블(hash table)(406)을 참조하여 요청된 데이터가 BWS(138)에 있는지 또는 블록 스토리지 노드(160)상 가상머신(152)의 가상 디스크(162)에 있는지 판단을 요청하고, 판단결과에 따라 BWS(138) 또는 가상 디스크(162)에서 요청된 데이터를 검색하여 가상머신(152)으로 제공할 수 있다.That is, when data is read or written on the booted
이러한, I/O 관리부(156)는 도 4에서 보여지는 바와 같이 I/O 처리부(fetcher)(400), 결정부(decision maker)(402), BWS 리더부(408), 해쉬 테이블 관리부(hash table manager)(404) 등을 포함할 수 있다. 이하에서는 I/O 관리부(156)의 각 구성요소에서의 동작을 보다 상세히 설명하기로 한다.As shown in FIG. 4, the I /
I/O 처리부(400)는 가상머신(152)으로부터 데이터 요청을 수신하는 경우, 요청된 데이터를 BWS(138) 또는 블록 스토리지 노드(160)상 가상 디스크(162)에서 검색하여 가상머신(152)으로 제공한다.When the I / O processing unit 400 receives the data request from the
즉, I/O 처리부(400)는 일종의 인터럽트 핸들러(interrupt handler)로서 가상머신(152)으로부터의 I/O 요청을 BWS 리더부(408)에 앞서 먼저 낚아채는(fetch) 역할만하고, I/O 요청을 낚아채서 요청된 데이터가 BWS(138)에 있는지 판단되는 동안에는 I/O를 리드(read)하는 API(application program interface)를 콜(call)하지 않고 대기하다가, 요청된 데이터가 BWS(138)에 있다고 판단하는 경우 BWS(138)의 I/O를 리드하는 API를 콜하여 BWS 리더부(138)로 이벤트(event)를 보내 BWS 리더부(138)가 이벤트를 받자마자 비동기적으로 바로 해당 데이터를 액세스할 수 있도록 한다.That is, the I / O processing unit 400 is an interrupt handler, and it only fetches an I / O request from the
즉, 가상머신(152)으로부터 I/O요청이 왔을 때, BWS 리더부(408)가 I/O가 완료될 때까지 대기하고 있게 되면 결정부(402)에서 판단이 올때까지 대기하는 시간동안 BWS 리더부(402)는 I/O를 못하고 대기하게 된다. 이에 따라, 본 발명의 실시예에서는 가상머신(152)으로부터 I/O 요청이 발생하는 경우 I/O 처리부(400)가 먼저 I/O 요청을 낚아채서 결정부(402)를 통해 I/O 요청된 데이터가 BWS(138)에 있는지 블록 스토리지 노드(160)상 가상 디스크(162)에 있는 지 판단을 하게 되고, I/O 요청된 데이터가 BWS(138)에 있다고 판단된 경우에만 이벤트를 BWS 리더부(408)쪽으로 보내도록 구현한다. 이에 따라, 가상머신(152)으로부터의 I/O 요청에 대해 비동기방식으로 I/O처리를 할 수 있기 때문에 성능이 더 좋아지게 된다. That is, when the I / O request is received from the
해쉬테이블 관리부(404)는 가상머신(152)상 쓰기가 수행된 데이터에 대한 해쉬값을 제공받아 해쉬테이블(406)에 저장한다. 이때, 이러한 해쉬값은 예를 들어 가상 디스크(162)상 쓰기가 수행된 데이터가 저장된 섹터(sector)의 오프셋(offset)값일 수 있으나 이에 한정되는 것은 아니다. 또한, 해쉬테이블 관리부(404)는 동일한 섹터를 사용하는 데이터에 대해서는 도 5에서 보여지는 바와 같이 동일한 섹터상 서로 다른 오프셋값을 링크드 리스트(linked-list)로 관리하여 쓰기 수행된 데이터에 대한 해쉬값을 쉽게 검색할 수 있도록 할 수 있다. The hash
결정부(402)는 해쉬테이블 관리부(404)에서 관리하는 해쉬테이블(406)을 참조하여 가상머신(152)으로부터 요청된 데이터가 BWS(138)에 있는지 또는 블록 스토리지 노드(160)상 가상 디스크(163)에 있는지 여부를 판단하고, 판단 결과를 I/O 처리부(400)로 제공할 수 있다.The
I/O 처리부(400)는 가상머신(152)으로부터 I/O요청을 수신한 경우 I/O 요청된 데이터가 BWS(138)에 있는지 블록 스토리지 노드(160)상 가상 디스크(162)에 있는지에 대한 판단을 결정부(402)로 요청하게 된다.When the I / O request is received from the
그러면, 결정부(402)는 해쉬테이블(406)을 참조하여 I/O 요청된 데이터가 쓰기가 수행된 적이 있는지 여부를 검사하여 I/O 요청된 데이터가 BWS(138)에 있는지 블록 스토리지 노드(160)상 가상 디스크(162)에 있는지를 판단하고, 판단결과를 I/O 처리부(400)로 제공하는 것이다.Then, the determining
이때, 해쉬테이블(406)에는 가상머신(152)에서 한번이라도 쓰기가 수행된 데이터의 해쉬값이 섹터 오프셋값으로 모두 저장되기 때문에, 결정부(402)는 예를 들어 I/O 요청에 해당하는 데이터가 전부 해쉬테이블(406)에 있다면 I/O 요청된 데이터가 블록 스토리지 노드(160)상 가상 디스크(162)에 있다고 판단할 수 있고, I/O 요청에 해당하는 데이터가 해쉬테이블(406)에 없다면 I/O 요청된 데이터가 BWS(138)에 있다고 판단할 수 있으나 이에 한정되는 것은 아니다.At this time, since the hash value of the data once written in the
BWS 리더부(408)는 BWS(138)에 저장된 데이터에 대한 읽기가 가능하며, I/O 처리부(400)로부터 BWS(138)상 데이터에 대한 요청이 있는 경우, BWS(138)에서 요청된 데이터를 검색하여 I/O처리부(400)로 제공할 수 있다.The
도 6은 본 발명의 실시예에 따른 가상머신 관리장치에서 가상머신 프로비저닝시 쓰기 동작에 대한 처리 흐름도를 도시한 것이다. 이하, 도 4 내지 도 6을 참조하여 본 발명의 실시예를 상세히 설명하기로 한다.FIG. 6 is a flowchart illustrating a write operation for virtual machine provisioning in a virtual machine management apparatus according to an embodiment of the present invention. Hereinafter, embodiments of the present invention will be described in detail with reference to FIGS. 4 to 6. FIG.
컴퓨트 노드(150)에서 가상머신(152)이 부팅된 이후에는 사용자가 가상머신(152)을 사용할 수 있는 상태로 되며, 가상머신(152)의 사용에 따라 가상머신(152)으로부터 가상머신 관리장치(154)로 데이터 요청이 발생할 수 있다. 이러한 데이터 요청에 대해서는 가상머신 관리장치(154)의 I/O 관리부(156)에서 처리하게 된다.After the
이때, 이러한 데이터 요청이 데이터에 대한 쓰기 요청인 경우(S600), 가상머신 관리장치(156)의 I/O 관리부(156)는 쓰기 요청된 데이터에 대해 블록 스토리지 노드(160)상 해당 가상머신(152)에 할당된 가상 디스크(162)상에 데이터 쓰기를 수행한다(S602).At this time, if the data request is a write request for data (S600), the I /
이어, I/O 관리부(156)는 데이터에 대한 쓰기를 수행한 후에는 쓰기가 수행된 데이터가 저장된 가상 디스크(162)상 섹터의 오프셋값을 해쉬테이블(406)에 저장한다(S604).After writing the data, the I /
이때, 쓰기가 수행된 데이터의 가상 디스크(162)상 섹터의 오프셋값을 해쉬테이블(406)내 해쉬값으로 기록하는 이유는 가상머신(152)으로부터 데이터에 대한 읽기 요청이 있는 경우 읽기 요청된 데이터를 BWS(138)에서 읽을 것인지 블록 스토리지 노드(160)상 가상 디스크(162)에서 읽을 것인지 판단하기 위한 것이다.The reason why the offset value of the sector on the
즉, I/O 관리부(156)는 가상머신(152)에서 한번이라도 쓰기가 수행된 데이터의 섹터 오프셋값을 해쉬테이블(406)상 해쉬값으로 모두 저장하게 되며, 이후, 예를 들어 가상머신(152)으로부터 I/O 요청된 데이터가 해쉬테이블(406)에 있다면 I/O 요청된 데이터가 블록 스토리지 노드(160)상 가상 디스크(162)에 있다고 판단하고, I/O 요청된 데이터가 해쉬테이블(406)에 없다면 I/O 요청된 데이터가 BWS(138)에 있다고 판단할 수 있는 것이다.In other words, the I /
도 7은 본 발명의 실시예에 따른 가상머신 관리장치에서 가상머신 프로비저닝시 읽기 동작에 대한 처리 흐름도를 도시한 것이다. 이하, 도 4 내지 도 5 및 도 7을 참조하여 본 발명의 실시예를 상세히 설명하기로 한다.FIG. 7 shows a processing flow for a read operation in virtual machine provisioning in a virtual machine management apparatus according to an embodiment of the present invention. Hereinafter, embodiments of the present invention will be described in detail with reference to FIGS. 4 to 5 and FIG.
컴퓨트 노드(150)에서 가상머신(152)이 부팅된 이후에는 사용자가 가상머신(152)을 사용할 수 있는 상태로 되며, 가상머신(152)의 사용에 따라 가상머신(152)으로부터 가상머신 관리장치(154)로 데이터 요청이 발생할 수 있다. 이러한 데이터 요청에 대해서는 가상머신 관리장치(154)의 I/O 관리부(156)에서 처리하게 된다.After the
이때, 이러한 데이터 요청이 데이터에 대한 읽기 요청인 경우(S700), 가상머신 관리장치(154)의 I/O 관리부(156)는 읽기 요청된 데이터가 이전에 쓰여진적이 있는지 여부를 검사한다(S702). At this time, if the data request is a read request for data (S700), the I /
이때, I/O 관리부(156)는 해쉬테이블(406)을 참조하여 읽기 요청된 데이터가 이전에 쓰여진적이 있는지 여부를 판단하게 된다. 즉, 가상머신(152)에서 한번이라도 쓰기가 수행된 데이터의 섹터 오프셋값은 해쉬테이블(406)상 해쉬값으로 모두 저장하게 되므로, 이에 따라 I/O 관리부(156)는 가상머신(152)으로부터 읽기 요청된 데이터가 해쉬테이블(406)에 있는 경우라면 읽기 요청된 데이터가 이전에 쓰여진적이 있는 것으로 판단하고, 읽기 요청된 데이터가 해쉬테이블(406)에 없다면 읽기 요청된 데이터가 이전에 쓰여진적이 없다고 판단하게 된다.At this time, the I /
위와 같은 판단결과, 읽기 요청된 데이터가 이전에 쓰여진적이 있다고 판단된 경우, 이는 해당 데이터가 블록 스토리지 노드(160)상 가상 디스크(162)에 존재하는 것을 의미하므로, I/O 관리부(156)는 해쉬테이블(406)상 해당 데이터의 해쉬값을 이용하여 블록 스토리지 노드(160)상 가상 디스크(162)에서 읽기 요청된 데이터를 읽어오게 되며(S704), 읽어온 데이터를 가상머신(152)으로 제공한다(S708).As a result of the above determination, when it is determined that the data requested to be read has been written before, it means that the corresponding data exists in the
이와 달리, 판단결과, 읽기 요청된 데이터가 이전에 쓰여진적이 없다고 판단된 경우, 이는 해당 데이터가 BWS(138)에 존재하는 것을 의미하므로, I/O 관리부(156)는 BWS(138)에서 읽기 요청된 데이터를 읽어오게 되며(S704), 읽어온 데이터를 가상머신(152)으로 제공한다(S708).If it is determined that the data requested to be read has not been written before, the I /
상기한 바와 같이, 본 발명에 따르면, 부트워킹셋을 이용한 가상머신 프로비저닝 가속장치 및 가상머신 관리장치에서 가상 머신 프로비저닝시 가상머신을 부트시킬 수 있는 부트워킹셋을 클라우드 시스템내 모든 컴퓨트 노드에 미리 배포하여 저장시켜 놓은 후, 가상 머신 프로비저닝 시 네트워크를 거치지 않고 바로 각각의 컴퓨트 노드에서 부트워킹셋을 이용하여 가상머신을 부팅시킴으로써, 가상머신 프로비저닝 속도를 가속화시킬 수 있다. 또한 미리 저장된 부트워킹셋을 이용함으로써 여러 가상 머신들이 동시에 프로비저닝되는 경우에도 네트워크 사용량이 현저히 줄어들게 되어 네트워크 병목 현상인 부트 스톰을 완화시킬 수 있다.As described above, according to the present invention, a virtual machine provisioning accelerator using a booting set, and a booting set capable of booting a virtual machine at the time of virtual machine provisioning in a virtual machine management apparatus, are provided to all the compute nodes in the cloud system in advance After provisioning and storing, the virtual machine provisioning speed can be accelerated by booting the virtual machine using the boot working set at each compute node without going through the network in the virtual machine provisioning. In addition, by using pre-stored booting sets, even when multiple virtual machines are provisioned at the same time, the network usage is significantly reduced, which can alleviate the boot storm as a network bottleneck.
한편 상술한 본 발명의 설명에서는 구체적인 실시예에 관해 설명하였으나, 여러 가지 변형이 본 발명의 범위에서 벗어나지 않고 실시될 수 있다. 따라서 발명의 범위는 설명된 실시 예에 의하여 정할 것이 아니고 특허청구범위에 의해 정하여져야 한다.
While the invention has been shown and described with reference to certain preferred embodiments thereof, it will be understood by those skilled in the art that various changes and modifications may be made without departing from the spirit and scope of the invention. Accordingly, the scope of the invention should not be limited by the described embodiments but should be defined by the appended claims.
100 : 제어노드 102 : 컴퓨트 노드 관리부
104 : 블록 스토리지 노드 관리부 106 : 이미지 서비스부
108 : 가상머신 프로비저닝 가속장치 130 : BWS 생성노드
136 : SSD 138 : BWS
150 : 컴퓨트 노드 152 : 가상머신
154 : 가상머신 관리장치 156 : I/O 관리부
160 : 블록 스토리지 노드 162 : 가상 디스크
170 : 스토리지 노드100: control node 102: compute node management unit
104: block storage node management unit 106: image service unit
108: Virtual Machine Provisioning Accelerator 130: BWS Generation Node
136: SSD 138: BWS
150: compute node 152: virtual machine
154: Virtual machine management device 156: I / O manager
160: Block storage node 162: Virtual disk
170: storage node
Claims (8)
상기 BWS 상기 컴퓨트 노드로 배포하여, 상기 가상머신이 상기 컴퓨트 노드에서 상기 BWS를 이용하여 부팅되도록 제어하는 BWS 관리부
를 포함하는 가상머신 프로비저닝 가속장치.
A BWS (Boot Working Set) generating a BWS (Boot Working Set) including data necessary for booting the virtual machine among the disk images when a disk image of at least one virtual machine created in at least one compute node in the cloud system is registered; A generating unit,
A BWS management unit for distributing the BWS to the compute node and controlling the virtual machine to boot using the BWS at the compute node,
The virtual machine provisioning acceleration device comprising:
상기 BWS 생성부는,
상기 디스크 이미지를 이용하여 상기 가상머신을 부팅시키는 동안, 상기 디스크 이미지 중 상기 부팅 시 사용되는 데이터를 확인하고, 상기 확인된 데이터만으로 상기 BWS를 생성하는 가상머신 프로비저닝 가속장치.
The method according to claim 1,
Wherein the BWS generator comprises:
Wherein during booting of the virtual machine using the disk image, the data used during the booting of the disk image is checked, and the BWS is generated using only the confirmed data.
상기 BWS 생성부는,
상기 클라우드 시스템내 상기 BWS를 생성하도록 할당된 컴퓨트 노드로 하여금 상기 BWS를 생성하도록 하는 가상머신 프로비저닝 가속장치.
3. The method of claim 2,
Wherein the BWS generator comprises:
And cause a compute node assigned to create the BWS in the cloud system to generate the BWS.
상기 디스크 이미지 중 상기 가상머신을 부팅시키기 위해 필요한 데이터를 포함하는 BWS를 생성하는 단계와,
상기 BWS를 상기 컴퓨트 노드로 배포하는 단계와,
상기 컴퓨트 노드에서 상기 가상머신 상기 BWS를 이용하여 부팅되도록 제어하는 단계
를 포함하는 가상머신 프로비저닝 방법.
Receiving a disk image of a virtual machine to be created in at least one compute node in the cloud system,
Generating a BWS including data necessary for booting the virtual machine among the disk images;
Distributing the BWS to the compute node;
Controlling the virtual node to boot using the BWS at the compute node
/ RTI >
상기 부팅된 상기 가상머신상 데이터 읽기 또는 쓰기가 수행되어 상기 가상머신으로부터 상기 데이터 읽기 또는 쓰기를 위한 데이터 요청을 수신하는 경우, 상기 가상머신상 쓰기가 수행된 데이터에 대한 해쉬값을 저장한 해쉬테이블을 참조하여 상기 요청된 데이터가 상기 BWS에 있는지 또는 상기 가상머신의 가상 디스크에 있는지 판단하고, 상기 판단결과에 따라 상기 BWS 또는 상기 가상 디스크에서 상기 요청된 데이터를 검색하여 상기 가상머신으로 제공하는 I/O(Input/Output) 관리부
를 포함하는 가상머신 관리장치.
A virtual machine provisioning unit for booting the virtual machine using a BWS composed of data necessary for booting the virtual machine among disk images of the virtual machine when provisioning of a virtual machine is requested to a compute node in the cloud system;
When a data request for reading or writing the data is received from the virtual machine by reading or writing data on the booted virtual machine, a hash table storing a hash value for the data written on the virtual machine Determines whether the requested data is in the BWS or the virtual disk of the virtual machine, searches the requested data in the BWS or the virtual disk according to the determination result, and provides I / O (Input / Output) management unit
The virtual machine management apparatus comprising:
상기 I/O 관리부는,
상기 가상머신으로부터 상기 데이터 요청을 수신하고, 상기 요청된 데이터를 상기 BWS 또는 상기 가상 디스크에서 검색하여 상기 가상머신으로 제공하는 I/O처리부와,
상기 해쉬테이블을 참조하여 상기 요청된 데이터가 상기 BWS에 있는지 또는 상기 가상 디스크에 있는지 여부를 판단하고, 상기 판단 결과를 상기 I/O 처리부로 제공하는 결정부와,
상기 BWS에 저장된 데이터에 대한 읽기가 가능하며, 상기 I/O 처리부로부터 상기 데이터 요청 수신 시, 상기 BWS에서 상기 요청된 데이터를 검색하여 상기 I/O처리부로 제공하는 BWS 리더부
를 포함하는 가상머신 관리장치.
6. The method of claim 5,
Wherein the I /
An I / O processing unit for receiving the data request from the virtual machine, searching the BWS or the virtual disk for the requested data, and providing the requested data to the virtual machine;
A determination unit for determining whether the requested data is in the BWS or the virtual disk by referring to the hash table, and providing the determination result to the I / O processing unit;
A BWS reader unit which is capable of reading data stored in the BWS and retrieving the requested data from the BWS when the data request is received from the I / O processing unit and providing the requested data to the I /
The virtual machine management apparatus comprising:
상기 해쉬값은,
상기 가상 디스크상 상기 쓰기가 수행된 데이터가 저장된 섹터의 오프셋값인 가상머신 관리장치.
6. The method of claim 5,
The hash value,
Wherein the virtual disk is an offset value of a sector in which the data on which the writing is performed is stored.
상기 부팅된 가상머신으로부터 데이터 읽기 또는 쓰기를 위한 데이터 요청을 수신하는 단계와,
상기 가상머신상 쓰기가 수행된 데이터에 대한 해쉬값을 저장한 해쉬테이블을 참조하여 상기 요청된 데이터가 상기 BWS에 있는지 또는 상기 가상머신의 가상 디스크에 있는지 판단하는 단계와,
상기 판단결과에 따라 상기 BWS 또는 상기 가상 디스크에서 상기 요청된 데이터를 검색하여 상기 가상머신으로 제공하는 단계
를 포함하는 가상머신 프로비저닝 방법.
Booting the virtual machine using a BWS which is composed of data necessary for booting the virtual machine among disk images of the virtual machine at a compute node in the cloud system,
Receiving a data request for reading or writing data from the booted virtual machine;
Determining whether the requested data is in the BWS or in a virtual disk of the virtual machine by referring to a hash table storing a hash value of the data written in the virtual machine,
Searching the requested data in the BWS or the virtual disk according to the determination result and providing the requested data to the virtual machine
/ RTI >
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160029060A KR102327065B1 (en) | 2016-03-10 | 2016-03-10 | Apparatus for accelerating virtual machine provisioning by use of bws and apparatus for managing the virtual machine and method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160029060A KR102327065B1 (en) | 2016-03-10 | 2016-03-10 | Apparatus for accelerating virtual machine provisioning by use of bws and apparatus for managing the virtual machine and method thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170105858A true KR20170105858A (en) | 2017-09-20 |
KR102327065B1 KR102327065B1 (en) | 2021-11-16 |
Family
ID=60034150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160029060A KR102327065B1 (en) | 2016-03-10 | 2016-03-10 | Apparatus for accelerating virtual machine provisioning by use of bws and apparatus for managing the virtual machine and method thereof |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102327065B1 (en) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080029947A (en) * | 2006-09-29 | 2008-04-03 | 인텔 코오퍼레이션 | System and method for increasing platform boot efficiency |
KR20090065126A (en) | 2007-12-17 | 2009-06-22 | 한국전자통신연구원 | Method for provisioning of virtual machine using virtual machine disk pool |
US20120060153A1 (en) * | 2010-09-02 | 2012-03-08 | International Business Machines Corporation | Virtual Machine Rapid Provisioning System |
KR20120071205A (en) * | 2010-12-22 | 2012-07-02 | 한국전자통신연구원 | Operating method for virtual machine and node and apparatus thereof |
JP2012226586A (en) * | 2011-04-20 | 2012-11-15 | Nec Corp | Reboot/boot/shutdown quickening device and reboot/boot/shutdown quickening method |
KR20150089688A (en) * | 2014-01-28 | 2015-08-05 | 한국전자통신연구원 | Apparatus and method for managing cache of virtual machine image file |
-
2016
- 2016-03-10 KR KR1020160029060A patent/KR102327065B1/en active IP Right Grant
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080029947A (en) * | 2006-09-29 | 2008-04-03 | 인텔 코오퍼레이션 | System and method for increasing platform boot efficiency |
KR20090065126A (en) | 2007-12-17 | 2009-06-22 | 한국전자통신연구원 | Method for provisioning of virtual machine using virtual machine disk pool |
US20120060153A1 (en) * | 2010-09-02 | 2012-03-08 | International Business Machines Corporation | Virtual Machine Rapid Provisioning System |
KR20120071205A (en) * | 2010-12-22 | 2012-07-02 | 한국전자통신연구원 | Operating method for virtual machine and node and apparatus thereof |
JP2012226586A (en) * | 2011-04-20 | 2012-11-15 | Nec Corp | Reboot/boot/shutdown quickening device and reboot/boot/shutdown quickening method |
KR20150089688A (en) * | 2014-01-28 | 2015-08-05 | 한국전자통신연구원 | Apparatus and method for managing cache of virtual machine image file |
Non-Patent Citations (1)
Title |
---|
삭제 |
Also Published As
Publication number | Publication date |
---|---|
KR102327065B1 (en) | 2021-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101206581B (en) | System and method for guiding using external memory device | |
CN110032413B (en) | Desktop virtualization method, related equipment and computer storage medium | |
CN108073423B (en) | Accelerator loading method and system and accelerator loading device | |
KR20090025204A (en) | Converting machines to virtual machines | |
CN102387197A (en) | Techniques for streaming virtual machines from a server to a host | |
JPH10283210A (en) | Virtual machine movement control system between virtual machine systems | |
EP3311272B1 (en) | A method of live migration | |
US20210326161A1 (en) | Apparatus and method for multi-cloud service platform | |
US20200150950A1 (en) | Upgrade managers for differential upgrade of distributed computing systems | |
US11113075B2 (en) | Launching a middleware-based application | |
JP2022552141A (en) | Virtual memory metadata management | |
US11036683B2 (en) | Hot-pluggable file system interface | |
US20140082275A1 (en) | Server, host and method for reading base image through storage area network | |
US10802865B2 (en) | Fast instantiation of virtual machines in distributed computing systems | |
US10963163B2 (en) | Categorizing computing process output data streams for flash storage devices | |
KR102176298B1 (en) | Method and device for use to access the container | |
KR20200135138A (en) | Method, device, apparatus, and medium for booting a virtual machine | |
US9292318B2 (en) | Initiating software applications requiring different processor architectures in respective isolated execution environment of an operating system | |
KR102327065B1 (en) | Apparatus for accelerating virtual machine provisioning by use of bws and apparatus for managing the virtual machine and method thereof | |
US10102020B2 (en) | Methods, systems, and computer readable media for virtual machine (VM) deployment using read-only memory | |
KR20190069134A (en) | Apparatus and method for file sharing between applications | |
US11947501B2 (en) | Two-hierarchy file system | |
US20240176607A1 (en) | Applications on demand | |
US11588712B2 (en) | Systems including interfaces for communication of run-time configuration information | |
KR101974974B1 (en) | Apparatus and method for switching system based container technology |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |