disclaimers-space.snu.ac.kr/bitstream/10371/122651/1/000000132399.pdf · 바이스, san, nas,...

37
저작자표시-비영리-변경금지 2.0 대한민국 이용자는 아래의 조건을 따르는 경우에 한하여 자유롭게 l 이 저작물을 복제, 배포, 전송, 전시, 공연 및 방송할 수 있습니다. 다음과 같은 조건을 따라야 합니다: l 귀하는, 이 저작물의 재이용이나 배포의 경우, 이 저작물에 적용된 이용허락조건 을 명확하게 나타내어야 합니다. l 저작권자로부터 별도의 허가를 받으면 이러한 조건들은 적용되지 않습니다. 저작권법에 따른 이용자의 권리는 위의 내용에 의하여 영향을 받지 않습니다. 이것은 이용허락규약 ( Legal Code) 을 이해하기 쉽게 요약한 것입니다. Disclaimer 저작자표시. 귀하는 원저작자를 표시하여야 합니다. 비영리. 귀하는 이 저작물을 영리 목적으로 이용할 수 없습니다. 변경금지. 귀하는 이 저작물을 개작, 변형 또는 가공할 수 없습니다.

Upload: others

Post on 08-Sep-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

저 시-비 리- 경 지 2.0 한민

는 아래 조건 르는 경 에 한하여 게

l 저 물 복제, 포, 전송, 전시, 공연 송할 수 습니다.

다 과 같 조건 라야 합니다:

l 하는, 저 물 나 포 경 , 저 물에 적 된 허락조건 명확하게 나타내어야 합니다.

l 저 터 허가를 면 러한 조건들 적 되지 않습니다.

저 에 른 리는 내 에 하여 향 지 않습니다.

것 허락규약(Legal Code) 해하 쉽게 약한 것 니다.

Disclaimer

저 시. 하는 원저 를 시하여야 합니다.

비 리. 하는 저 물 리 목적 할 수 없습니다.

경 지. 하는 저 물 개 , 형 또는 가공할 수 없습니다.

공학석사학위논문

서버플래시캐시를이용한

확장성있는가상머신프로비저닝

Scalable VM Provisioning Using Server FlashCache

2016년 2월

서울대학교대학원

컴퓨터공학부

김덕상

초록

IaaS클라우드에서가상머신프로비저닝시간은사용자의 QoS측면

에서 중요하다. 라이브 마이그레이션 등을 위해 가상머신 디스크를 원격

에위치시키면가상머신의 I/O가네트워크를통해전송되어야한다.이러

한 환경에서 서버 플래시 캐시가 원격 I/O를 줄이기 위해 많이 사용된다.

이러한 환경에서 많은 수의 가상머신이 동시에 프로비저닝 될 때 네트워

크사용량이많아지게되고클라우드시스템의전체가상머신프로비저닝

시간이느려지게된다.서버플래시캐시에부팅시필요한데이터를미리

저장해놓으면,추후가상머신프로비저닝시로컬에있는서버플래시캐

시에서데이터를읽어올수있기때문에원격 I/O를줄임으로써빠르게프

로비저닝할수있다. KVM/QEMU를수정해서가상머신부팅때필요한

데이터를 Compute node의서버플래시캐시에위치시킬수있게하였다.

해당방법을이용해가상머신프로비저닝시필요한데이터들을 Compute

node로컬에있는서버플래시캐시에서데이터를읽어올수있게함으로

써원격 I/O를줄일수있었다.실험결과,가상머신의프로비저닝시간을

최대 64.26%단축시킬수있었다.

주요어 : 확장성,서버플래시캐시, IaaS클라우드

학번 : 2014-21773

i

목차

I. 서론 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

II. 배경 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.1 기본적인클라우드시스템환경 . . . . . . . . . . . . . . . 4

2.2 OpenStack과 Ceph연동시클라우드환경 . . . . . . . . . 5

2.3 서버플래시캐시 . . . . . . . . . . . . . . . . . . . . . . . 8

III. 본문 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.1 제안하는서버플래시캐시구조 . . . . . . . . . . . . . . . 11

3.2 부트워킹셋캐시만드는방법 . . . . . . . . . . . . . . . . 13

3.3 부팅워킹셋캐시크기 . . . . . . . . . . . . . . . . . . . . 15

IV. 구현 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

V. 평가 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

5.1 실험환경 . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

5.2 가상머신프로비저닝시간측정 . . . . . . . . . . . . . . . 19

VI. 관련연구 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

VII. 결론 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

참고문헌 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

ii

그림목차

그림 1. 기본적인가상머신프로비저닝방법 . . . . . . . . . 5

그림 2. Ceph연동시가상머신프로비저닝방법 . . . . . . . 6

그림 3. 서버플래시캐시구조 . . . . . . . . . . . . . . . . . 9

그림 4. 제안하는서버플래시캐시구조 . . . . . . . . . . . . 12

그림 5. 부트워킹셋캐시만드는방법 . . . . . . . . . . . . . 14

그림 6. 이미지로부터가상머신프로비저닝시간 . . . . . . . 21

그림 7. 볼륨으로부터가상머신프로비저닝시간 . . . . . . . 23

iii

표목차

iv

제 1장

서론

오늘날 Amazon EC2 [1], Microsoft Azure등 Infrastructure as a Ser-

vice(IaaS)클라우드를서비스를제공하는기업들이생기면서클라우드가

사회적으로 하나의 큰 화두이다. 언제든 사용자가 원할 때 컴퓨팅 자원

을생성할수있는유연성이클라우드시스템의가장큰장점이다.이러한

유연성을제공하기위해서는사용자가원하는즉시바로가상머신들이생

성되어야하고,사용자의 Quality of Service(QoS)측면에서보면가상머신

요청 후 가상머신이 사용가능하게 되기까지 걸리는 시간을 측정한 가상

머신 프로비저닝 시간이 중요한 요소이다. 가상머신 프로비저닝 시간은

사용자가 가상머신 생성을 요청한 후 SSH 등을 이용해 가상머신에 접근

가능할때까지걸리는시간을이야기한다.사용자가가상머신의생성을

요청하면 클라우드 시스템은 가상머신을 생성할 수 있는 Compute node

들 중에 가상머신이 프로비저닝되기 적합한 조건의 Compute node를 스

케줄링정책을통해선택한다.그후가상머신을부팅하기위한디스크를

만든다. 이 디스크를 만드는 방법은 가상머신을 일시적으로 사용하기 위

해 부팅 이미지를 이용해서 바로 부팅하는 방법과 가상머신의 데이터를

반영구적으로 사용하기 위해 새로운 볼륨을 만들어서 부팅을 하는 방법

에따라차이가있다.또한클라우드시스템환경이어떻게이루어져있냐

에따라서다양한가상머신디스크및프로비저닝방법이있다.클라우드

환경에필요한데이터들인부팅이미지,볼륨,가상머신디스크를로컬디

1

바이스, SAN, NAS,분산파일시스템등다양한곳에저장및보관할수

있다. 데이터가 저장된 방법에 따라 효율적으로 가상머신을 프로비저닝

하기 위해 가상머신 프로비저닝 방법은 각각 다르게 이루어질 수 있다.

우선이논문에서는클라우드환경에서이미지,볼륨,가상머신디스크를

저장하는구성에대해서몇가지방법을알아본다.각각의구성을통해서

클라우드시스템이가질수있는장점및단점에대해서이야기한다.또한

구성환경에따른가상머신프로비저닝방법에대해서이야기를한다.그

중 이미지, 볼륨, 가상머신 디스크를 분산 파일 시스템에 저장하면 여러

장점이 있다. 하지만 이런 시스템에서는 많은 수의 가상머신을 프로비저

닝할때네트워크를이용한원격 I/O가많이발생하기때문에네트워크에

의해성능이병목될수있다.이러한가상환경에서가상머신의 I/O의성

능을 향상시키기 위해서 많이 이용되는 방법으로 Compute node에 서버

플래시캐시를이용하는방법이있다.서버플래시캐시를 Compute node

에위치시키고활용하는방법은많은연구가진행되고있는분야이다.서

버플래시캐시에미리부팅시필요한데이터를올려놓고가상머신을프

로비저닝하면 부팅 과정에 필요한 데이터는 캐시 내에서 읽어올 수 있기

때문에가상머신프로비저닝의성능을향상시킬수있다.이논문은 2장에

여러 다양한 환경으로 클라우드 시스템 구성하는 방법에 대해 설명하고

최신 가상머신 프로비저닝 방법에 대해서 설명을 한다. 3장에서 부팅 시

필요한데이터를서버플래시캐시가미리가지고있게하기위해서필요

한서버플래시캐시디자인에대해서설명을한다. 4장에서프로토타입의

서버 플래시 캐시를 어떻게 구현을 하였는지에 대한 설명을 한다. 5장에

서 프로토타입의 서버 플래시 캐시를 이용한 가상머신 프로비저닝 시간

측정실험결과에대해이야기한다.

2

제 2장

배경

클라우드시스템에는부팅이미지를저장하기위한장소,볼륨을저

장하기 위한 장소, 그리고 가상머신 디스크를 저장하기 위한 장소가 필

요하다.이러한자료들은기본적으로다른특성을지니고있기때문에다

른 서버에 데이터들을 저장하고 관리한다. 부팅 이미지를 저장하기 위한

서버가 따로 있고, 볼륨을 저장하기 위한 서버가 따로 있으며, 가상머신

디스크는주로 Compute node에저장한다.이런시스템의설정에따라가

상머신을 프로비저닝하는 방법은 다양하게 이루어질 수 있다. 또한 부팅

이미지로부터가상머신을프로비저닝하는방법과볼륨으로부터가상머

신을 프로비저닝 하는 방법 또한 다르게 이루어진다. 부팅 이미지로부터

가상머신을프로비저닝하는방법은데이터가영구적으로보존되는것이

아니라 임시적으로 가상머신을 이용을 하고 가상머신이 제거가 되면 데

이터가손실이되는프로비저닝을말한다.볼륨으로부터가상머신을프로

비저닝하는방법은가상머신이제거가되어도볼륨은사용자가삭제하기

전까지남아있는프로비저닝을말한다.볼륨을이용해서가상머신을프로

비저닝하면가상머신을제거해도볼륨에데이터가남아있기때문에추후

해당볼륨을이용해서다시프로비저닝할수있다.

3

2.1 기본적인클라우드시스템환경

기본적으로클라우드시스템환경은그림 1처럼부팅이미지를저장

하기위한서버가따로있고,볼륨을저장하기위한서버가따로있다.이

때가상머신디스크는각각의 Compute node의로컬에저장이되게된다.

이러한클라우드환경에서부팅이미지를이용해서가상머신을프로비저

닝 하는 경우 간단하게 부팅 이미지를 Compute node에 복사하고 복사된

이미지를가지고프로비저닝하는방법이있을수있다.하지만이는성능

병목이 심한 방법으로 가상머신 프로비저닝의 성능을 향상시키기 위해

최근에는 다음과 같은 방법이 주로 이용이 된다. 우선, 부팅 이미지를 저

장하고 있는 서버에서 가상머신이 프로비저닝 될 Compute node에 부팅

이미지를 전송한다. 그 후, 전송된 이미지를 베이스 이미지로 사용하는

QCOW2 포맷의 가상머신 디스크를 생성을 한다. 이렇게 함으로써 같은

Compute node에 같은 부팅 이미지를 이용해 프로비저닝되는 가상머신

의 경우 이미 전송되어 있는 부팅 이미지를 마찬가지로 베이스 이미지로

이용해서 손쉽게 가상머신 디스크를 만들 수가 있다. 또한 가상머신 I/O

가 로컬에서 일어나기 때문에 네트워크 사용량이 줄어들게 된다. 반면에

새로운볼륨으로부터가상머신을프로비저닝하기위해서는다른방법이

이용된다. 볼륨은 사용자가 볼륨을 삭제하기 전까지 영구적으로 보존되

어야하는데이터이기때문에,새로운볼륨으로가상머신을프로비저닝하

면 볼륨을 생성을 하고 생성된 볼륨에 이미지 데이터를 다 쓴다. 그리고

나서, 이미지 데이터가 써진 볼륨을 이용해서 가상머신을 프로비저닝한

다. 위와 같은 방법으로 가상머신을 프로비저닝 하면, 프로비저닝 되는

가상머신 개수마다 볼륨을 생성해야 하고 생성된 모든 볼륨에 이미지 데

이터를 써야한다. 따라서 동시에 많은 수의 가상머신을 프로비저닝 하면

4

그림 1:기본적인가상머신프로비저닝방법

프로비저닝이 끝나기까지 오랜 시간이 걸리게 된다. 또한 볼륨은 볼륨을

저장하기 위한 Storage node에 저장되기 때문에 가상머신이 네트워크를

이용해서 I/O하게된다.

2.2 OpenStack과 Ceph연동시클라우드환경

분산파일시스템을부팅이미지,볼륨,가상머신디스크를저장하기

위한백엔드로이용하는방법도많이이용되는방법이다.이러한분산파

일시스템들중에는 Ceph [2]가있다.특히 Ceph의경우그림 2처럼부팅

이미지, 볼륨, 가상머신 디스크를 저장하기 위해 각각 다른 Pool을 만들

어서이용할수있다. Ceph는 Pool마다접근권한등을다르게설정할수

있어서해당데이터에접근이필요한서비스만권한을허락해주고접근하

게 함으로써 시스템의 보안적인 측면에 장점이 있다. 부팅 이미지, 볼륨,

가상머신 디스크의 데이터를 저장하는 Pool은 기본적으로 Images pool,

5

그림 2: Ceph연동시가상머신프로비저닝방법

Volumes pool, VMs pool으로 명명된다. 또한, Ceph의 경우 자체적으로

RBD(Rados Block Device)라는포맷을지원을한다. RBD포맷은QCOW2

포맷처럼 CoW(Copy-on-Write)를 지원을 한다. 따라서 Images pool에 있

는부팅이미지를베이스로하는가상머신디스크와볼륨을생성할수있

다.이때,볼륨이나가상머신디스크에쓰기가일어나면데이터는각각새

로생성된가상머신디스크와볼륨에써진다.위와같은방법을이용하면

새로운볼륨으로부터가상머신프로비저닝시볼륨마다전체부팅이미지

데이터를미리쓸필요없이바로부팅을할수있기때문에빠르게프로비

저닝을 할 수 가 있다. 또한 위와 같은 환경으로 클라우드 시스템을 구성

하면 라이브 마이그레이션에도 이점이 있다. 라이브 마이그레이션은 클

라우드시스템에서부하를분산시키거나가상머신의성능을향상시키기

위해 많이 연구되고 있는 부분이다. 가상머신은 스케줄링에 의해 선택된

Compute node위에서동작하게되는데클라우드환경에서다른 Compute

6

node에 위치한 가상머신들이 많이 종료가 되면 한쪽 Compute node에만

가상머신이 많이 생성이 되어 있고 다른 Compute node에는 가상머신이

없을수있다.이러한상황에서하나의 Compute node에몰려있는가상머

신들을다른가상머신으로분산시켜주는것이성능향상에도움이된다.

또한 가상머신들이 같은 Compute node에 위치해 있으면 다른 가상머신

에의해간섭을받을수가있다.이때가상머신중일부가 Compute node

의다른가상머신의성능을하락시킬수있다.이러한경우가계속발생을

하면 해당 가상머신을 다른 Compute node로 이동시켜 전체 클라우드의

성능을향상시킬수있다.이렇듯가상머신을멈춤없이마이그레이션할

수 있는 라이브 마이그레이션 기능은 클라우드에서 중요하다. 분산 파일

시스템을 이용하면 라이브 마이그레이션에 이점이 있다. 이는 가상머신

디스크가 Compute node에있는것이아니라분산파일시스템내에위치

되어 있기 때문이다. 가상머신 디스크의 데이터가 Compute node에 저장

되어 있는 경우 마이그레이션이 되려면 Compute node에 저장되어 있는

가상머신 디스크의 데이터를 타겟이 되는 Compute node에 미리 전송을

해서마이그레이션을할준비를한다음에마이그레이션을수행해야빠른

속도로 마이그레이션을 할 수 있다. 하지만 가상머신 디스크의 데이터가

원격인분산파일시스템에있기때문에이러한과정이필요없이타겟이

된 Compute node에서바로원격에있는분산파일시스템내의가상머신

디스크에 접근하면 된다. 이러한 이유로 인해 가상머신의 라이브 마이그

레이션을손쉽게할수있다.

7

2.3 서버플래시캐시

클라우드시스템을구성하면가상머신의데이터가로컬이아닌원격

에있는경우가많이발생한다.예를들면볼륨의경우항상 Storage node

에 저장되어 있고 가상머신 디스크도 환경에 따라 SAN, NAS, 분산 파일

시스템 등 주로 원격에 위치되어 있다. 따라서 원격 I/O가 많이 발생하게

되는데, 이런 환경에서 네트워크가 쉽게 병목이 되서 클라우드 시스템의

성능이하락될수있다.네트워크가많이이용되는클라우드시스템의 I/O

성능을향상시키기위해서버플래시캐시를많이이용한다.이러한서버

플래시 캐시는 Facebook의 Flashcache [3] 삼성의 AutoCache [4] 등 다양

한제품들이나와있다.또한, vCacheShare [5]등클라우드환경에서캐시

를 효과적으로 관리하기 위한 방법에 대해서도 연구가 활발히 진행되고

있다. 그림 3처럼 각각의 Compute node내에 서버 플래시 캐시가 위치하

게 되고 캐시 관리자에 의해 캐시는 관리되게 된다. 캐시 관리자는 캐시

내에 있는 데이터인지 캐시에 없는 데이터인지 구분 할 수 있는 정보 및

캐시내어디에위치해있는지등의다양한정보들을관리한다.해당캐시

시스템을 통해서 캐시 내에 있는 데이터는 빠르게 로컬 캐시에서 데이터

를 가져올 수 있게 됨으로 전체적인 시스템의 원격 I/O를 줄일 수 있다.

이러한효과로인해서많은원격 I/O요청으로발생할수있는병목현상을

완화시킬수있다.

8

그림 3:서버플래시캐시구조

9

제 3장

본문

SSD가점점싸지고대용량의제품이나옴으로써많은데이터센터에

서 SSD를활용해서클라우드시스템을운영하고있다. SSD는기본적으로

많은양의데이터를저장할수있는대용량장치이고 512GB, 1TB용량의

SSD도상용화되어서이용되고있다.따라서모든 Compute node에 SSD를

캐시로비용적인부담없이쉽게이용할수있다.기본적으로캐시는페이

지단위로데이터를읽어오게디자인되어있다.캐시내에있는데이터의

정보를관리하기위한자료구조가필요하다.그자료구조내에는부팅이

미지데이터의주소정보와실제캐시내에위치되어있는주소정보들을

관리해야 한다. 서버 플래시 캐시를 활용해서 부팅 시 필요한 데이터를

가상머신이프로비저닝되기전에미리캐시내에위치시킬수있다.미리

서버 플래시 캐시에 부팅 시 필요한 데이터를 올려놓음으로써 실제 가상

머신이프로비저닝될때로컬에있는서버플래시캐시내에서데이터를

가져올 수 있다. 부팅 시 필요한 데이터는 서버 플래시 캐시의 크기에 비

하면매우작은양이다.실제 Ubuntu 14.04의이미지의경우서버플래시

캐시에올라가는부팅시필요한데이터는 113.6MB이다. Squirrel [6]이라

는논문에서비슷한개념의연구를진행하였다. Squirrel은부팅시필요한

부트 워킹 셋의 크기가 대부분 수십 MB이라는 사실을 조사하였다. 또한

가장큰용량을필요하는Windows운영체제도 200MB정도의크기를차

지한다는것을관찰하였다.그리고이러한부트워킹셋은서로비슷해서

10

압축과중복제거를통해서현저히크기를줄일수있다는사실도발견하

였다. 해당 논문에서는 이러한 결과를 이용해서 클라우드 시스템의 모든

부트 워킹 셋을 모든 Compute node마다 저장하고 가상머신 프로비저닝

시에해당부트워킹셋을베이스이미지로하는가상머신디스크를생성

하는 방법을 제안하였다. 해당 방법을 통해서 가상머신을 효과적으로 확

장성있게 프로비저닝 할 수 있지만 가상머신 디스크가 SAN, NAS, 분산

파일시스템등원격 Storage node에저장되는환경에서는이러한구조로

는효과적으로프로비저닝될수없다라는문제점이있다.이는가상머신

디스크 자체가 원격에 있기 때문에 모든 I/O가 네트워크를 이용하게 되

기 때문이다. 또한 가상머신 부팅을 위해 볼륨을 이용할 때에도 볼륨이

원격에 있기 때문에 네트워크를 이용해야 되고 이에 대해서는 고려하고

있지않다.이논문에서는클라우드시스템이어떻게설정되어있는지상

관없이서버플래시캐시를이용해서가상머신프로비저닝을확장성있게

프로비저닝할수있는방법에대해서제시하고있다.

3.1 제안하는서버플래시캐시구조

캐시는주로관리하기쉽게하기위해페이지단위로데이터를저장

한다. 서버 플래시 캐시가 관리되기 위해서는 캐시 내부적으로 페이지에

대한 정보를 관리하는 테이블이 필요하다. 어떠한 가상머신 디스크 주소

의 데이터가 어디에 위치하고 있는지 알기 위해 가상머신 디스크 주소

정보, 그리고 해당 주소의 데이터가 실제 캐시 내에 저장되어 있는 주소

정보들이 관리되어야 한다. 이러한 정보 이외에도 캐시 공간이 부족해졌

을 때 페이지를 교체하기 위한 LRU 등의 정책을 수행하기 위한 정보도

캐시 내에는 필요하다. 예로 들면 Reference bit, 접근 시간 등이 있다. 이

11

그림 4:제안하는서버플래시캐시구조

러한정보를유지하고이용함으로써캐시시스템이잘관리가될수있다.

이러한캐시가부팅시필요한데이터를미리가지고있으면가상머신프

로비저닝 시 원격에 있는 Storage node에 I/O 할 필요 없이 로컬에 있는

캐시에서바로데이터를읽어올수있다.이러한방법을사용하면 Storage

node의부하도줄일수있고가상머신프로비저닝 I/O도로컬에서빠르게

처리할 수 있기 때문에 프로비저닝 시간을 단축시킬 수 있다. 또한, 미리

저장되어 있는 데이터는 계속 사용되어 질 수 있다. Compute node에서

같은부팅이미지를이용해프로비저닝되는가상머신이있을때한번저

장되었던 부팅 시 필요한 데이터를 다시 이용해서 프로비저닝을 빠르게

할 수 있다. 따라서 부팅 시 필요한 데이터는 덮어쓰여지지 않고 읽기전

용으로 잘 보존되어야 한다. 이렇듯 미리 저장되어 있는 부팅 시 필요한

캐시 데이터와 부팅 과정에서 생긴 캐시 데이터를 구분하기 위해 그림

4처럼캐시를관리하는자료구조에 isBWS를추가하였다. isBWS를통해

12

서부팅시필요한캐시데이터이면해당페이지에쓰지않고 CoW방법을

이용해새로운페이지에씀으로써부팅시필요한데이터를유지할수있

다. 이러한 기능들은 기존 서버 플래시 캐시를 Piggybacking해서 약간의

수정을 통해서 쉽게 구현가능하다. 따라서 클라우드 시스템이 기존의 다

른서버플래시캐시를이용한다고해도해당서버플래시캐시를수정을

해서해당기능을쉽게추가할수있다.

3.2 부트워킹셋캐시만드는방법

그림 5처럼, 서버 플래시 캐시가 있는 Compute node에서 해당 부팅

이미지를 이용하는 가상머신을 프로비저닝함으로써 쉽게 부트 워킹 셋

캐시를만들수있다.서버플래시캐시가있는 Compute node에가상머신

프로비저닝이 일어나면 부팅 과정을 거치면서 부팅 시 필요한 데이터가

서버플래시캐시에자동적으로축적되게된다.서버플래시의캐시의크

기에 비해 부트 워킹 셋 캐시의 크기는 상대적으로 매우 작은 크기이기

때문에부팅이끝나면서버플래시캐시에부팅시필요한모든데이터가

버려지지않고다올려질수있다.부팅이끝났을때캐시에써진데이터만

따로잘저장해놓는방법으로부팅시필요한부트워킹셋캐시를만들수

있다.부트워킹셋캐시를각각의 Compute node에있는서버플래시캐시

에언제위치시킬건지에대한다양한방법이있을수있다.사용자의요청

으로가상머신이프로비저닝되기전에부팅이미지가클라우드시스템에

등록되었을때미리임시적으로가상머신을프로비저닝해서부트워킹셋

캐시를 만들 수 있다. 그리고 만들어진 부트 워킹 셋의 정보 및 데이터를

모든 Compute node의서버플래시캐시에전달할수있다.해당방법으로

통해서 모든 Compute node에서 해당 이미지로 부팅이 되는 가상머신은

13

그림 5:부트워킹셋캐시만드는방법

로컬의서버플래시캐시에서데이터를읽어옴으로써빠르게프로비저닝

될 수 있다. 또한 게으른 방법으로 실제로 가상머신이 프로비저닝 될 때

부트워킹셋캐시를만들수있다.한번가상머신이프로비저닝되서만들

어진 부트 워킹 셋 캐시는 추후 가상머신이 프로비저닝 될 때 이용될 수

있다.이러한방법으로만들어진부트워킹셋캐시를모든 Compute node

의서버플래시캐시에전달할수도있다.전달하지않아도다른 Compute

node에서 가상머신이 프로비저닝이 되면 해당 부팅 이미지의 부트 워킹

셋캐시를만들수있고역시나추후가상머신이프로비저닝될때이용될

수있다.

14

3.3 부팅워킹셋캐시크기

앞에서 이야기 했듯이 Squirrel에서 부팅 시 필요한 부트 워킹 셋에

대해서 측정을 하였다. Windows Azure라는 상용 클라우드의 내에서 이

용되고있는모든부팅이미지의필요한부트워킹셋의크기에대해서도

연구를 하였다. 부트 워킹 셋은 부트 워킹 셋의 특성 상 비슷하기 때문에

압축과중복제거를통해서Windows Azure에서이용되고있는모든부팅

이미지의 부트 워킹 셋의 크기의 총합을 10GB정도로 줄일 수 있다고 하

였다.부트워킹셋캐시도비슷한데이터이기때문에비슷한크기로줄일

수있다.압축과중복제거없이도상용 SSD의용량이 1TB까지되는현재

기술상 모든 부팅 이미지의 부트 워킹 셋 데이터를 서버 플래시 캐시에

충분히 위치시킬 수 있다. 하지만 서버 플래시 캐시의 크기를 더 크게 유

지하기 위해 부트 워킹 셋 캐시가 차지할 수 있는 용량에 제한을 둔다면

몇몇의 부트 워킹 셋 캐시만 위치시키는 방법을 이용할 수 있다. 클라우

드 시스템의 스케줄러가 가상머신의 부팅 이미지에 대한 정보를 보고 해

당부팅이미지의부트워킹셋캐시가있는 Compute node로가상머신을

스케줄링 해주면 부트 워킹 셋 캐시를 이용해서 효과적으로 가상머신을

프로비저닝할수있다.

15

제 4장

구현

KVM/QEMU를수정해서서버플래시캐시프로토타입을구현하였

다.캐시페이지에대한정보를관리하기위해해시테이블을이용하였고

가상머신마다해시테이블을생성하였다.가상머신이생성되어서디스크

를열때,해시테이블을만들었다.또한,부팅시부트워킹셋캐시에서데

이터를읽어오게하기위해서부트워킹셋캐시의데이터를가르키고있

는기존해시테이블정보를읽어와서해시테이블에등록을하였다.부트

워킹셋캐시정보가해시테이블에있기때문에부팅과정에서자동적으

로해시테이블의내용을참조해서부팅시필요한데이터를부트워킹셋

캐시에서 읽어올 수 있다. 이러한 해시 테이블은 가상머신이 종료되어서

디스크를닫을때제거를하였다.해시테이블을제거하기전에해시테이

블의정보를저장하는기능을추가하였다.이를통해,부트워킹셋캐시를

만들기위해가상머신을프로비저닝한다음부팅이완료된가상머신을종

료하면부트워킹셋캐시의데이터와그에해당하는해시테이블의정보

를저장할수있다.따라서가상머신을한번만프로비저닝하면부트워킹

셋캐시와그에대한정보를만들수있고,앞에서이야기했듯이디스크를

열 때 해시 테이블에 부트 워킹 셋 캐시의 정보가 등록되어서 가상머신

프로비저닝시로컬캐시에서데이터를읽어올수있게된다.이러한부트

워킹셋캐시는한번만이용되는것이아니라같은부팅이미지를이용해

서프로비저닝되는가상머신이계속이용할수있다.따라서부트워킹셋

16

캐시는읽기전용이여야한다.이러한기능은 CoW기능을이용하면효과

적으로 구현할 수 있다. 부트 워킹 셋 캐시의 페이지에 쓰기가 발생했을

경우, 캐시 시스템은 새로운 캐시 페이지를 할당해서 부트 워킹 셋 캐시

페이지의내용을복사후쓰기작업을수행한다.이러한방법을통해서기

존부트워킹셋캐시의데이터는계속유지될수있고다른가상머신들이

사용할수있다.이러한기능을구현하기위해서캐시시스템이부트워킹

셋 캐시에 속하는 데이터인지 아닌지 구분을 할 수 있는 방법이 필요하

다. 이를 위해 해시 테이블 자료구조에 해당 정보를 가지고 있는 inBWS

필드를추가를하였다.또한,캐시를 LRU정책으로관리하기위해서해시

테이블에 접근할 때 마다 해당 테이블의 정보를 해시 테이블의 맨 앞으

로 보내는 작업 등을 추가하였다. 서버 플래시 캐시는 XFS 파일 시스템

위에 구현을 하였다. 가상머신의 캐시 데이터를 저장하기 위해 가상머신

마다 파일을 생성해서 데이터를 관리하였다. 이 파일은 가상머신마다 고

유하게 가지고 있는 Universally Unique Identified(UUID)를 이용해 이름

지었다.부트워킹셋캐시및부트워킹셋캐시정보또한부팅이미지가

고유하게 가지고 있는 UUID를 이용해서 이름 지었다. 추후 가상머신 부

팅시어떤이미지를이용해서부팅을하는지에대한정보만있으면해당

부팅 이미지의 부트 워킹 셋 캐시를 이용해 프로비저닝 할 수 있다. 가상

머신 디스크로 Ceph의 RBD를 이용할 경우 rbd get parent info() 함수를

이용해서부팅이미지의정보를가져올수있다.

17

제 5장

평가

5.1 실험환경

실험은 클라우드 시스템으로 OpenStack [7]을 이용했으며, 부팅 이

미지,볼륨,가상머신디스크를저장하기위해 Ceph를이용하였다. Open-

Stack의경우 Juno버전을이용을했고 Ceph의경우 0.92버전을이용해서

실험을진행하였다.총 10개의서버를이용해서진행을했고각각의서버

사양은 다음과 같다. Intel® Core™ i7-4790 @ 3.60GHz 4코어 CPU 1개,

32GB 메모리, Samsung 850 Pro SSD 256GB 1개, HGST HTS721010A9

1TB 1개, 1GbE으로 구성이 되어 있다. Ceph 클러스터는 3개의 서버를

이용해서 구성을 하였다. Ceph의 경우 서버당 1개의 HDD를 OSD로 이

용해서 구성을 하였다. OpenStack의 경우 Controller node로 1개의 서버,

Block node로 1개의서버, Compute node로 5개의서버를이용하였다.각

각의 Compute node에 있는 SSD를 서버 플래시 캐시로 이용하였다. 가

상머신의 이미지는 Ubuntu 14.04 버전을 이용을 했고, vCPU 1개, 2GB

Memory, 20GB 가상머신을 생성을 하는 실험을 진행하였다. 벤치마크로

는 가상머신 생성을 요청을 한 시간부터 가상머신에 SSH로 접근 가능한

시간을측정을하는프로그램을구현해서실험을진행을하였다.

18

5.2 가상머신프로비저닝시간측정

기본적인 가상머신 프로비저닝의 성능을 알아보기 위해 OpenStack

과 Ceph를연동해서가상머신프로비저닝시간을측정하였다.또한각각

의 Compute node에 프로토타입의 서버 플래시 캐시를 구현해서 실험을

진행하였다. 서버 플래시 캐시를 이용했을 때 가상머신 프로비저닝 시간

에 어떠한 영향이 있는지 알아보기 위해, 제안한 기능 없이 서버 플래시

캐시만 이용한 환경에서 가상머신 프로비저닝 시간을 측정하였다. 그리

고 제안한 기능의 성능 향상 효과에 대해서 측정을 하기 위해서, 제안한

디자인인서버플래시캐시내에부트워킹셋캐시부분을미리가지고있

어 가상머신 프로비저닝 시 캐시에서 데이터를 가져올 수 있는 상황에서

실험을 진행을 하였다. 각각의 환경에서 가상머신이 같은 부팅 이미지를

가지고 프로비저닝 하는 경우와 다른 부팅 이미지를 가지고 프로비저닝

하는경우에대해서실험을진행하였다.그림 6은이미지로부터가상머신

프로비저닝 시간을 측정한 결과이다. 같은 부팅 이미지를 이용했을 때보

다다른부팅이미지를이용하면훨씬더많은프로비저닝시간이걸리는

것을알수있다.이는같은부팅이미지를이용해서가상머신을프로비저

닝 하는 경우, 가상머신들의 부팅 시 필요한 데이터가 같기 때문에 Ceph

내에서한번읽혀져서메모리에올라온데이터는추후다시읽혀질때빠

르게서비스될수있기때문이다.하지만,가상머신이디스크에데이터를

쓸 때에는 가상머신들이 각각 독립적인 디스크에 써야 하기 때문에 여러

개의 가상머신이 프로비저닝 되면 Ceph에 부하가 가게 되고 동시에 프

로비저닝 되는 가상머신 수가 많아지면 많아질수록 전체적인 가상머신

프로비저닝 시간이 느려지게 된다. 다른 부팅 이미지를 이용해서 가상머

신을프로비저닝하면가상머신들이요청하는모든 I/O요청들이 Ceph내

19

디스크까지 가야되기 때문에 Ceph에 더욱 더 큰 부하를 주게 되고 이로

인해 전체적인 가상머신 프로비저닝 성능이 같은 부팅 이미지를 이용했

을 때 보다 훨씬 안 좋아지게 된다. 서버 플래시 캐시만을 이용한 환경에

서가상머신을프로비저닝하는경우,부팅시필요한데이터가캐시내에

위치되어 있지 않기 때문에 필수적으로 원격 스토리지에서 데이터를 가

져와야된다.따라서전체적인성능이기존방법과비슷했다.하지만,한번

캐시 내에 저장된 데이터는 추후 같은 데이터에 대한 읽기 I/O 시, 로컬

캐시에서 바로 데이터를 가져올 수 있기 때문에 기존의 방법보다 가상머

신프로비저닝시간이조금더빨라지는경향을보였다.제안하는방법의

환경에서는 가상머신 프로비저닝 처음부터 로컬 캐시 내에서 데이터를

가져올수있기때문에원격스토리지로가는 I/O의양을크게줄일수있

고 로컬 내에서 빠르게 처리할 수 있다. 가상머신 프로비저닝 시간 측정

결과,동시에 20개의가상머신을프로비저닝했을때기존방법으로평균

137.94초걸리던시간이제안하는방법으로인해평균 98.33초로 28.72%

단축되었다. 다른 이미지를 이용해서 가상머신을 프로비저닝 하는 경우,

기존방법에서는 동시에 많은 수의 가상머신이 프로비저닝 될수록 Ceph

에 가해지는 부하가 커져서 가상머신 프로비저닝 시간이 훨씬 더 늘어나

게 된다. 반면에, 제안한 방법인 로컬 서버 플래시 캐시에서 부팅 시 필

요한 데이터를 가져올 수 있는 방법으로는 다른 부팅 이미지를 이용해서

프로비저닝 하여도 로컬 서버 플래시 캐시에서 데이터를 가져올 수 있기

때문에 Ceph의 부담을 크게 줄여줌으로써 같은 부팅 이미지를 이용해서

프로비저닝할때와비슷한프로비저닝시간을보였다.다른부팅이미지

를이용해동시에 20개의가상머신을프로비저닝하는경우기존방법으

로 평균 302.67초 걸리던 시간이 제안하는 방법에서는 평균 110.22초로

63.58%의시간이단축되었다.

20

0

50

100

150

200

250

300

350

5 10 20

AverageVM

Provisio

ningTime(s)

VMCount

base cache bwscache

(a) 같은부팅이미지

0

50

100

150

200

250

300

350

5 10 20

AverageVM

Provisio

ningTime(s)

VMCount

base cache bwscache

(b) 다른부팅이미지

그림 6:이미지로부터가상머신프로비저닝시간

21

Ceph의장점인볼륨으로부터가상머신을프로비저닝할때의가상머

신 프로비저닝 시간도 측정을 하였다. Ceph는 볼륨으로부터 가상머신을

프로비저닝하는방법과이미지로부터가상머신을프로비저닝하는방법

이유사하다. Ceph Images pool에있는부팅이미지를베이스이미지로해

서방법에따라 VMs pool이나 Volumes pool에부팅할수있는이미지나

볼륨을 생성하는 방법으로 가상머신 디스크나 볼륨을 만든다. 만들어진

가상머신디스크나볼륨을이용해서프로비저닝하면데이터를읽어올때

부팅이미지에서데이터를읽어오게되고쓰기시 CoW방법으로가상머

신 디스크나 볼륨에 데이터를 쓴다. 따라서 볼륨으로부터 가상머신을 프

로비저닝하는방법과이미지로부터가상머신을프로비저닝하는방법이

비슷한시간을보였다.그림 7에서보듯이,같은부팅이미지를이용해서

가상머신을 프로비저닝할 때 기존 138.44초 걸리던 시간이 제안하는 방

법을이용했을때 98.8초로 28.63%단축되었다.다른이미지를이용해서

가상머신을프로비저닝할때도기존방법으로 301.13초걸리던프로비저

닝시간이제안하는방법을이용해 107.62초로 64.26%단축되었다.

22

0

50

100

150

200

250

300

350

5 10 20

AverageVM

Provisio

ingTime(s)

VMCount

base cache bwscache

(a) 같은부팅이미지

0

50

100

150

200

250

300

350

5 10 20

AverageVM

ProvisoingTime(s)

VMCount

base cache bwscache

(b) 다른부팅이미지

그림 7:볼륨으로부터가상머신프로비저닝시간

23

제 6장

관련연구

Squirrel [6]은가상머신이부팅때필요한이미지의데이터가적다는

것을알고모든부팅이미지의부트워킹셋을 Compute node에위치시켜

서가상머신프로비저닝성능을향상시켰다.하지만이때의환경은가상

머신 디스크가 Compute node의 로컬에 저장되어 있을 때만 성능을 향상

시킬 수 있고 가상머신 디스크가 원격에 위치할 경우 성능 향상을 할 수

없다는문제점이있다.

VMThunder [8]는가상머신부팅시필요한데이터에대해요청이올

때만 데이터를 전송하는 방법을 이용한다. 또한 P2P를 이용해서 이미지

저장소의부담을줄이는방법을이용했다.하지만이는 Squirrel과마찬가

지로가상머신디스크가Compute node의로컬에저장되어있을때성능을

향상시킬수있고가상머신디스크가원격에위치할경우성능향상을할

수없다는문제점이있다.또한여러가상머신이미지를이용해서프로비

저닝했을때에대해서는포함하고있지않다.

Pradipta [9]는가상머신을미리프로비저닝시켜 Compute node의캐

시공간에위치시킨다.가상머신이프로비저닝될때매치되는가상머신

이 있으면 해당 Compute node에서 바로 서비스를 제공하는 방법을 통해

서가상머신의프로비저닝시간을향상시켰다.하지만여러다양한부팅

이미지가 클라우드 시스템 내에 존재하기 때문에 모든 부팅 이미지에 대

해서미리준비해서프로비저닝하기에는어려움이있다.

24

Nicolae [10]는가상머신의부팅이미지를여러 Compute node에스

트라이프해서저장을하는방법을제안하였다.추후가상머신부팅시필

요한데이터를주변의 Compute node에게로부터가져오는방법을통해서

가상머신의프로비저닝성능을향상시켰다.

25

제 7장

결론

클라우드시스템은언제든원하는컴퓨팅자원을생성할수있는유

연성이 큰 장점이다. 이런 유연성을 제공해주기 위해서는 가상머신 생성

을요청했을때빠른시간내에프로비저닝이되어야한다.사용자의 QoS

측면에서보면,가상머신생성을요청한후 SSH등으로가상머신에접근

가능하기까지 걸리는 시간이 중요하다. 클라우드 시스템은 내부적으로

SAN, NAS, 분산 파일 시스템 등을 이용해서 다양한 방법으로 구성이 가

능하다. 이 논문에서는 이런 여러 클라우드 환경에서 가상머신의 프로비

저닝성능을향상시키기위해서서버플래시캐시를이용을하였다.서버

플래시 캐시는 가상머신의 I/O를 빠르게 하기 위해서 클라우드에서 많

이 이용되는 방법이다. Compute node에 서버 플래시 캐시를 위치시키고

가상머신을프로비저닝하면,부팅시필요한데이터들이부팅과정을거

치면서 캐시 시스템 정책으로 인해 자동적으로 서버 플래시 캐시 내에

저장되게 된다. 이러한 방법을 통해서 손쉽게 부팅 시 필요한 데이터를

추출할 수 있다. 이 논문에서는 이렇게 추출한 부트 워킹 셋 캐시를 이

용해 효과적으로 가상머신 프로비저닝 하는 방법을 제안하였다. 부팅 시

필요한데이터를모든서버플래시캐시에미리저장을해놓음으로써,추

후 가상머신 프로비저닝이 일어날 때, 이미 서버 플래시 캐시 내에 있는

부트 워킹 셋 캐시를 이용해서 원격 I/O없이 로컬에서 데이터를 읽어올

수 있게 되었고 큰 성능 향상을 이룰 수 있었다. 이미지로부터 가상머신

26

프로비저닝의 경우, 동시에 같은 이미지를 이용해서 20개의 가상머신을

프로비저닝 할 시 28.72% 단축시킬 수 있었고, 다른 이미지를 이용해서

20개의가상머신을프로비저닝할때 63.58%단축시킬수있었다.볼륨으

로부터 가상머신 프로비저닝의 경우, Ceph의 특성상 이미지로부터 가상

머신 프로비저닝 하는 방법과 비슷한 방법으로 프로비저닝 되기 때문에,

전체적으로이미지로부터가상머신프로비저닝의프로비저닝시간과유

사한 결과를 얻을 수 있었다. 제안하는 방법을 통해서 기존 프로비저닝

시간대비최대 64.26%의시간을단축시킬수있었다.

27

참고문헌

[1] “Amazon Elastic Compute Cloud.” https://www.amazon/com/

ec2. [Online; accessed 2015-11-25].

[2] S. A. Weil, S. A. Brandt, E. L. Miller, D. D. Long, and C. Maltzahn,

“Ceph: A scalable, high-performance distributed file system,” in Pro-

ceedings of the 7th symposium on Operating systems design and im-

plementation, pp. 307–320, USENIX Association, 2006.

[3] Facebook, “Flashcache.” https://github.com/facebook/

flashcache/. [Online; accessed 2015-11-25].

[4] Samsung, “AutoCache.” http://www.samsung.com/

semiconductor/support/tools-utilities/

AutoCache/. [Online; accessed 2015-11-25].

[5] F. Meng, L. Zhou, X. Ma, S. Uttamchandani, and D. Liu, “vCache-

Share: automated server flash cache space management in a virtualiza-

tion environment,” in USENIX ATC, pp. 133–144, 2014.

[6] K. Razavi, A. Ion, and T. Kielmann, “Squirrel: scatter hoarding VM

image contents on IaaS compute nodes,” in Proceedings of the 23rd in-

ternational symposium on High-performance parallel and distributed

computing, pp. 265–278, ACM, 2014.

[7] “OpenStack.” https://www.openstack.org. [Online; ac-

cessed 2015-11-25].

[8] Z. Zhang, Z. Li, K. Wu, D. Li, H. Li, Y. Peng, and X. Lu, “VMThunder:

fast provisioning of large-scale virtual machine clusters,” Parallel and

Distributed Systems, IEEE Transactions on, vol. 25, no. 12, pp. 3328–

3338, 2014.

28

[9] P. De, M. Gupta, M. Soni, and A. Thatte, “Caching vm instances for

fast vm provisioning: a comparative evaluation,” in Euro-Par 2012

Parallel Processing, pp. 325–336, Springer, 2012.

[10] B. Nicolae, J. Bresnahan, K. Keahey, and G. Antoniu, “Going back and

forth: Efficient multideployment and multisnapshotting on clouds,”

in Proceedings of the 20th international symposium on High perfor-

mance distributed computing, pp. 147–158, ACM, 2011.

29

Abstract

Scalable VM Provisioning UsingServer Flash Cache

Deoksang Kim

School of Computer Science & Engineering

The Graduate School

Seoul National University

In Infrastructure-as-a-Service, fast Virtual Machine provisioning is crucial

for ensuring the Quality of Service. When VMs use remote storage, which

is suitable for efficient VM live migration and storage management, I/O

requests are made over the network infrastructure. If many VMs are provi-

sioned, the provisioning time becomes very long because a large number of

packets need to transfer through the network and the remote storage servers

perform a lot of I/Os. To decrease this transmission time and the amount

of I/O requests, we propose a scalable VM provisioning architecture using

server flash caches. In this architecture, the use of server flash caches on

compute nodes can lead to significant reduction of the amount of network

traffic for provisioning. When data required for booting a VM is stored in

the local cache, the VM reads and uses data from the cache. All data re-

quired for VM provisioning can be stored in the flash caches on the com-

pute nodes. After a VM provisioning request is made, the data is used for

30

virtual machine provisioning. We have modified KVM/QEMU to read data

required for VM provisioning from the server flash cache of compute node.

Our experimental study suggests that the time of VM provisioning by using

the modified KVM/QEMU can be decreased by up to 64.26%.

Keywords : Scalability, Server Flash Cache, IaaS Cloud

Student Number : 2014-21773

31