xiiltis.icnslab.net/altis/files/20141219_won-yongkim... · 2014-12-23 · api 8¬ libvirt *°...

6

Upload: others

Post on 19-Jan-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: xiiltis.icnslab.net/ALTIS/Files/20141219_Won-YongKim... · 2014-12-23 · API 8¬ libvirt *° 9I*àF 8¨*° G 7ÝF 7 4. 1à7Ý8Ä 4 Fx7ÈF d#Ù+8x E F F 7 9P8ÅF 3L 8¼#È 8- d-L
Page 2: xiiltis.icnslab.net/ALTIS/Files/20141219_Won-YongKim... · 2014-12-23 · API 8¬ libvirt *° 9I*àF 8¨*° G 7ÝF 7 4. 1à7Ý8Ä 4 Fx7ÈF d#Ù+8x E F F 7 9P8ÅF 3L 8¼#È 8- d-L
Page 3: xiiltis.icnslab.net/ALTIS/Files/20141219_Won-YongKim... · 2014-12-23 · API 8¬ libvirt *° 9I*àF 8¨*° G 7ÝF 7 4. 1à7Ý8Ä 4 Fx7ÈF d#Ù+8x E F F 7 9P8ÅF 3L 8¼#È 8- d-L

xii

Page 4: xiiltis.icnslab.net/ALTIS/Files/20141219_Won-YongKim... · 2014-12-23 · API 8¬ libvirt *° 9I*àF 8¨*° G 7ÝF 7 4. 1à7Ý8Ä 4 Fx7ÈF d#Ù+8x E F F 7 9P8ÅF 3L 8¼#È 8- d-L

가상화 API libvirt를 활용한 경량화 된 클라우드 자원 관

리 시스템

김원용 O, 구자훈, 허의남

경희대학교 컴퓨터공학과

{teronit, jhku, johnhuh}@khu.ac.kr

Light-weight Cloud Resource Management System

using libvirt virtualization API

Won-yong Kim, Ja-hun Kim, Eui-nam Huh

Department of Computer Engineering, Kyung Hee Universiry

요 약

클라우드 컴퓨팅은 스마트폰과 무선 네트워크의 발달로 보급이 가속화 되고 있으며 모바일 기기가 가

지고 있는 자원의 한계를 극복할 수 있는 솔루션으로 사용되고 있다. 또한 소규모 사업장에서도 한정된

자원을 효율적으로 사용하기 위해서도 많이 활용되는데, 기존의 엔터프라이즈 솔루션은 비싼 가격과 복

잡한 사용법으로 일반인들에 대한 접근성 부족이라는 문제점을 안고 있다. livbvirt API는 리눅스 기반 하

드웨어 오픈소스 가상화 API로써 사용자에게 가상 머신을 생성하고 관리하는 기능을 수행토록 해준다.

본 논문에서는 제시한 문제를 해결하기 위해 libvirt를 활용하여 시스템을 구축하고 웹 대시보드를 구성해

목적에 맞는 기능만 제공할 수 있는 경량화된 클라우드 서비스를 만들 수 있는 방법을 제안한다.

1. 서 론

클라우드 컴퓨팅의 사전적 정의[1]는 인터넷상의

서버에서 데이터 저장과 처리, 네트워크, 콘텐츠 사용

등 IT 관련 서비스를 한번에 제공하는 혁신적인 컴퓨팅

기술이다. 현 세대에서의 클라우드 컴퓨팅은 실용적인

면에서 많은 발전이 이루어 지고 있다. 모바일

디바이스와 무선 네트워크의 발달로, 사용자들은

클라우드 서비스 제공자로부터 일정한 이용료를

지불하고 부족한 자원을 할당 받아서 사용하고 있다.

클라우드 서비스를 제공하기 위한 핵심 기술은

가상화(Virtualization)[2]를 통해 이루어진다. 가상화는

컴퓨팅 자원의 추상화를 일컫는 말이며, 물리적인

단위의 자원을 쪼개어 다중 논리 리소스의 기능을 하는

것처럼 보이게 한다. 가상화에 대한 관리는 Virtual

Machine Monitor(VMM)이라고도 불리는 하이퍼바이저에

의해 이루어진다.

대표적인 기업 가상화 솔루션은 VMware, Citrix Xen

Server, MS Data Center가 있다. 이러한 엔터프라이즈

솔루션들은 자체적으로 개발한 플랫폼을 통해

사용자들에게 많은 편의와 기능을 제공해 주고 있다.

하지만 값 비싼 이용료와, 무거운 시스템, 많은 기능을

필요로 하지 않는 소규모 사업자가 이용하기 어렵다는

단점을 가지고 있다.

본 논문에서는 이런 문제를 해결하기 위해 오픈 소스

API인 libvirt를 정리하고 이를 활용하여 가볍고

사용자가 필요한 기능만을 포함하여 제작할 수 있는 웹

기반 경량화 클라우드 자원 관리 구조를 제시한다.

2. 관련연구

2.1 하이퍼바이저[3]

하이퍼바이저는 한 대의 호스트 컴퓨터(물리적

자원)에서 다수의 운영체제 (논리적 자원)를 동시에

실행하기 위한 논리적 플랫폼을 의미한다.

그림 1 하이퍼바이저의 종류

하이퍼바이저는 그림 1과 같이 Type1(Native 또는

Bare-metal) 방식과 Type2(Hosted) 방식 두 가지로

나뉜다.

Type1 방식은 하이퍼바이저가 운영체제처럼 동작하여

하드웨어를 직접 제어한다. 대표적으로 Xen, QEMU,

KVM이 있다.

Type2 방식은 하드웨어를 제어하기 위한 메인(Host

OS) 운영체제가 설치 되고 그 위에 하이퍼바이저를

설치한다. 사용자는 하이퍼바이저가 어플리케이션으로

보인다. 이렇게 설치된 하이퍼바이저 위에서 게스트

운영체제(Guest OS)가 구동된다. 대표적으로 VMware,

VirtualBox가 있다.

하이퍼바이저의 종류는 다양하기 때문에 소규모

2014년 동계학술발표회 논문집

Page 5: xiiltis.icnslab.net/ALTIS/Files/20141219_Won-YongKim... · 2014-12-23 · API 8¬ libvirt *° 9I*àF 8¨*° G 7ÝF 7 4. 1à7Ý8Ä 4 Fx7ÈF d#Ù+8x E F F 7 9P8ÅF 3L 8¼#È 8- d-L

기업이나 일반인이 하이퍼바이저별로 가상화 기술을

일일이 접하기는 쉽지 않다는 문제점이 있다.

2.2 libvirt

libvirt는 하이퍼바이저의 명령어 체계를 추상화하여

어떠한 하이퍼바이저라도 동일한 명령어를 통해 제어할

수 있도록 하여, 사용자 접근성을 향상 시키는데 목적을

두고 있다.

libvirt는 리눅스 시스템에서 구동되며 API

라이브러리를 포함하여 서비스 데몬(libvirtd)과 명령줄

인터페이스(virsh)로 구성되어 있다. libvirt가 지원하는

Hypervisor의 종류는 12가지(KVM/QEMU, Xen, LXC,

VirtualBox, VMware ESX, Hyper-V, IBM PowerVM

등)이며 네트워크 관리 및 원격 스토리지 연동(FC, LVM,

iSCSI, NFS 등)도 함께 지원한다.

libvirt의 기반언어는 C/C++이며 보다 다양한 개발

환경에 적용 할 수 있도록 C#, Java OCaml, Perl, PHP,

Python, Ruby에 대한 바인딩을 제공하고 있다.

3. libvirt API Reference

본 항목에서는 시나리오 구현에 필요한 기능을 libvirt

API에서 참고하여 정리하였다. 이 외에도 이벤트 처리,

보안 관리, 네트워크 관리 등 다양한 API가 있으며

자세한 내용은 libvirt document[4]를 참고 할 수 있다.

host

host API는 libvirt가 연결하는 물리적 자원에 대한

관리 기능을 수행한다. 네트워크상으로 연결된 다른

물리 서버에서 libvirt API와 libvirtd가 구동 되고 있을

경우, 하이퍼바이저의 종류, 네트워크 프로토콜, 세션

정보를 이용해 연결을 성립하여 자원에 대한 조회 및

제어를 수행한다.

domain

libvirt에서의 domain은 가상머신을 가리키는

용어이다. domain API에서는 생성 및 삭제, 가상머신

라이프 사이클인 defined, running, saved, paused에

따른 상태 변화 제어, 가상 머신 메타 데이터 관리

기능을 수행한다.

domain-snapshot

스냅샷은 현재 domain의 하드웨어 기본 정보와

실행 중인 프로세스 상태까지 그대로 저장하는

과정이다. 스냅샷은 가상 머신 운용 중 문제가 생겼을

경우 이전 상태로 복원 해 주는데 핵심적인 역할을

한다.

storage

libvirt의 storage API는 관리 타겟으로써 스토리지와

각 스토리지를 논리적으로 묶은 스토리지 풀을

관리하는 기능을 수행한다.

그림 2 libvirt storage 구조

libvirt storage는 언급한 바와 같이 다양한 종류의

스토리지를 할당하거나 연동할 수 있다. 또한

스토리지 풀은 이기종 스토리지를 통합하여 그림 2와

같이 사용자나 가상 머신에게 논리적으로 하나의

저장소 자원처럼 보여지게 할 수 있다.

4. 경량화 된 클라우드 자원 관리 시스템 제안

4.1 개발 시나리오

본 논문에서는 사용자에게 가상머신과 스토리지

서비스를 제공해 주는 시나리오로 설정하였다.

그림 3 구축 구조도

가상화 자원 관리자와 자원이 실제 운용되는 서버를

분리하여 동시에 여러 자원을 관리 할 수 있도록

설계하였다.

자원 관리 페이지를 PHP 기반의 웹 대시보드로

제작하여 서비스 관리자가 사용자에게 쉽게 가상

머신과 스토리지를 할당 해 주고 자원에 대한 제어 및

현황을 관찰 할 수 있도록 제작하였다.

시스템 동작 시나리오는 그림 3에서 Server A의

Management Web Server에서 PHP binding된 API를

libvirt API간 통신을 통해 내용을 전달한다. 그 다음

연결정보(domain name, hypervisor type)를 이용해

원격지의 Server B는 libvirtd에서 해석하여 알맞은

하이퍼바이저 드라이버에 맞게 하드웨어 제어 메시지를

매핑 하고 동작을 수행하고 그 결과를 반환한다.

2014년 동계학술발표회 논문집

Page 6: xiiltis.icnslab.net/ALTIS/Files/20141219_Won-YongKim... · 2014-12-23 · API 8¬ libvirt *° 9I*àF 8¨*° G 7ÝF 7 4. 1à7Ý8Ä 4 Fx7ÈF d#Ù+8x E F F 7 9P8ÅF 3L 8¼#È 8- d-L

4.2 시스템 구축 방법

경량화 클라우드 자원 관리 시스템은 그림 3과 같이

2대의 물리 서버(HP ProLiant DL320 Gen8)를 활용하여

구성하였다. Server A는 서비스 제공자 관점의 서버이며,

Server B는 가상머신과 스토리지가 실제 할당되어

구동되는 컴퓨팅 서버이다. 하이퍼바이저는

QEMU/KVM[5]을 사용하였다.

Server A에 구성한 Resource Meta DB는 libvirt를

통해 연결된 Server B로부터 정보를 수신하여 저장한다.

Server A의 Authentication Module은 Management Web

Server에 대한 사용자 접근 제어를 위해 구성하였다.

Management Web Server는 PHP로 개발되었고 이를

위해 PHP binding 코드를 참조[6]하였다.

4.3 시스템 개발 화면

그림 4 가상 머신 관리 페이지

그림 4의 가상 머신 관리 페이지에서는 가상 머신

리스트, 현재 동작 상태, 사용량 정보를 확인 할 수

있도록 구성하였다. 또한 현재 동작 중인 가상 머신의

동작 상태 변화, 세부 정보 확인, 가상 머신 생성 및

삭제 기능을 구현하였다.

그림 5 스토리지 관리 페이지

그림 5의 스토리지 관리 페이지에서는 스토리지를

스토리지 풀 단위로 묶어서 할당된 자원정보를 확인 할

수 있도록 구현하였다. 스토리지는 현재 소속된 풀에

대한 정보와 할당량을 확인 할 수 있다.

이와 같이 livbirt는 자원에 대한 할당 및 제어뿐만

아니라 사용정보에 대한 모니터링도 가능하게 함으로써

시스템 관리자 관점에서 자원 분배 및 정책 관리에

활용하기 좋을 것이라 기대된다.

5. 결론 및 향후 연구

libvirt의 장점은 사용에 제약이 없는 오픈 소스 API,

다양한 개발 언어 플랫폼 지원, 다양한 하이퍼바이저의

관리 체계 통합(consolidation), 사용자에게 익숙한 API

명령어 구성이 있다.

하지만 개발 과정에서 하나하나의 동작 단위로

구분된 API는 개발자에게 빠르고 쉬운 개발을 저해하는

요소가 될 수 있었음은 단점으로 확인되었다. 이러한

문제 해결을 위해 본 논문에서는 기존의 API를

시나리오 레벨로 묶어 내는 시도를 하였다.

개발한 API 및 어플리케이션은 중소기업과 같은

소규모 사업장에서 기존의 시스템에 변화를 주지 않고

빠르고 쉽게 클라우드 및 가상화 환경을 적용하기 위한

기법으로 사용될 수 있을 것이라 기대된다.

향후 연구에서는 참조한 libvirt API와 작성한 소스

코드를 바탕으로 기능을 시나리오 단위로 분화하여

웹에 특화된 커스터마이징 API를 작성할 것이다.

추가적으로, 모니터링 정보에 대한 실시간 업데이트를

보장하는 웹 어플리케이션 개발을 진행할 것이다.

ACKNOWLEDGEMENT

본 연구는 미래창조과학부 및 정보통신기술

진흥센터의 정보통신∙방송 연구개발사업([14-000-05-

001, 스마트 네트워킹 핵심 기술 개발])과

미래창조과학부 및 정보통신기술 진흥센터의

SW컴퓨팅산업융합원천기술개발사업([2014044078003,

고속 클라우드 서비스를 위한 In-Memory 기반 모듈형

가상 데스크탑 시스템 기술 개발])의 일환으로

수행하였음.

교신저자: 허의남

참 고 문 헌

[1] Korea Britannica online, “클라우드 컴퓨팅”,

http://preview.britannica.co.kr/bol/topic.asp?article_

id=b22k0722m10

[2] Wikipedia, “Virtualization”,

http://en.wikipedia.org/wiki/Virtualization

[3] Wikipedia, “Hypervisor”,

http://en.wikipedia.org/wiki/Hypervisor

[4] libvirt, “libvirt Documentation”,

http://libvirt.org/docs.html

[5] Michael J. Hammel, “Managing KVM with

deployment with virt-manager”, Linux Journal, 2011,

Article No.7

[6] libvirt-php, “PHP API Reference”,

http://libvirt.org/php/api-reference.html

2014년 동계학술발표회 논문집