Hanbit ebook Realtime 23 Xen 으로배우는 가상화기술의이해 I/O 가상화 박은병, 김태훈, 이상철, 문대혁지음
Xen 으로배우는 가상화기술의이해 I/O 가상화
Xen 으로배우는가상화기술의이해 - I/O 가상화 초판발행 2013 년 3 월 29 일 지은이박은병, 김태훈, 이상철, 문대혁 / 펴낸이김태헌펴낸곳한빛미디어 ( 주 ) / 주소서울시마포구양화로 7길 83 한빛미디어 ( 주 ) IT출판부전화 02-325-5544 / 팩스 02-336-7124 등록 1999년 6월 24일제10-1779호 ISBN 978-89-6848-606-7 15000 / 정가 9,900원 책임편집배용석 / 기획김창수 / 편집이중민, 이세진디자인표지여동일, 내지스튜디오 [ 밈 ], 조판박진희마케팅박상용, 박주훈, 정민하 이책에대한의견이나오탈자및잘못된내용에대한수정정보는한빛미디어 ( 주 ) 의홈페이지나아래이메일로알려주십시오. 한빛미디어홈페이지 www.hanb.co.kr / 이메일 ask@hanb.co.kr Published by HANBIT Media, Inc. Printed in Korea Copyright c 2013 HANBIT Media, Inc. 이책의저작권은박은병, 김태훈, 이상철, 문대혁과한빛미디어 ( 주 ) 에있습니다. 저작권법에의해보호를받는저작물이므로무단복제및무단전재를금합니다. 지금하지않으면할수없는일이있습니다. 책으로펴내고싶은아이디어나원고를메일 (ebookwriter@hanb.co.kr) 로보내주세요. 한빛미디어 ( 주 ) 는여러분의소중한경험과지식을기다리고있습니다.
지은이 _ 박은병서울대학교에서석사학위를받았으며, 현재 University of Toronto에서컴퓨터공학박사과정을공부하고있다. 석사과정을공부하면서 Xen을이용해가상화관련연구를진행했다. 시스템소프트웨어전반에관심이있으며, 현재기계학습관련응용분야에흥미를느껴공부중이다. 지은이 _ 김태훈임베디드, 커널, 가상화, 네트워크, 디바이스드라이버를주로다루는시스템프로그래머다. ( 주 )WIZnet 재직시절에개발한 W5300 네트워크드라이버가리눅스커널에포함되었다. 오픈소스와해커문화를동경하며, 특히리누스토발즈가우상이다. 현재는 DINOS라는고성능 ARM 아키텍처를타깃으로하는운영체제를개발중이다. 지은이 _ 이상철하드웨어개발부터시작해시스템소프트웨어개발로차츰업무를변경해왔다. 주로임베디드시스템프로그램과디바이스드라이버를개발했으며, 리눅스커널관련업무또한담당했다. 현재는알티캐스트에서보안관련모듈을개발중이다. 지은이 _ 문대혁한양대학교를휴학하고사이냅소프트에서문서처리관련프로그램을개발중이다. 운영체제나하이퍼바이저와같은시스템소프트웨어에관심이많다. 우연히본스터디모집공고를계기로뛰어난개발자들과함께 Xen을분석하는기회를가지게되었다.
저자서문 이책은 Xen 하이퍼바이저를통해가상머신모니터를설명한책입니다. Iamroot 라는스터디그룹을통해 1년반정도같이매주토요일에오프라인모임에서 Xen 하이퍼바이저를공부했고, 다른저자분들의뜻을모아공부한내용을정리하자는의도에서기획했습니다. 저자분들모두글쓰는데익숙하지않은관계로아는지식을글로풀어내기가쉽지않았지만, 많은퇴고를거쳐마침내출판하기에이르게되었습니다. 이책이출판으로이어지기까지고생해주신저자분들과한빛미디어관계자분께다시한번감사의말씀을드립니다. 이책은기본적인가상머신모니터의원리부터 Xen 하이퍼바이저의소스코드까지설명해, 초보자부터실제 Xen 하이퍼바이저를사용하거나개발하시는분모두에게유용한내용으로구성했습니다. 운영체제와컴퓨터아키텍처에대한기본지식만있으면읽을수있게쓰였으나, 리눅스커널에대한사전지식이있으면이해하기더욱쉬울것으로생각합니다. CPU 가상화, 메모리가상화, I/O 가상화이렇게크게 3가지파트로나누어서설명했고, 이책의주제인 I/O 가상화는시리즈세번째책입니다. Xen 하이퍼바이저에관심이많다면 CPU 가상화, 메모리가상화, I/O 가상화순으로읽기를권장합니다. 전체적인구조는각파트의앞부분에기본적인개념을설명하고, 뒤의소스코드분석부분에서어떻게실제로구현되어있는가를소스코드라인별로상세히설명했습니다. 또한 Xen 하이퍼바이저는리눅스커널과매우밀접한관련이있으므로, 필요한부분에는리눅스커널의소스코드도추가로설명했는데, 모든소스코드를분석하고책에담을수없었기에저자가생각하는중요한부분의소스코드를담았습니다. 따라서앞부분개념을먼저이해하고, 실제소스코드를내려받아책의설명과함께책에빠진부분이나궁금한부분의소스코드를직접찾아가면서공부할것을권장합니다.
사실책으로출판하기에매우부끄럽습니다. 하지만가상머신모니터를쉽게한글로설명한책이많지않고, 가상머신모니터공부를시작하시는분의수고를조금이나마덜어드리고자하는마음에부끄러움을무릅쓰고출판하기로했습니다. 너그러운자세로읽어주시고, 수정이나보완사항이필요하다면추후에반영토록하겠습니다. 집필을마치며 저자일동
대상독자및도서구성 초급초중급중급중고급고급 이책은점차활용분야가늘어나는가상화기술의이해를돕기위해 Xen을예로들어가상화기술을설명합니다. 이책을통해가상화기술의개념과 Xen의동작방식을이해하는데조금이나마도움이되기를바랍니다. Xen으로배우는가상화기술의이해 시리즈는가상화기술을다음세가지파트로나눠설명합니다. CPU 가상화 Xen 에서전통적으로사용하는반가상화기법과하드웨어지원가상화기술을활 용하는전가상화기법을다룹니다. 가상 CPU 가실제 CPU 를어떻게나눠서사용 하는지가상머신스케줄링에서살펴봅니다. 메모리가상화 Xen 에서동작하는가상머신의메모리접근방식을설명합니다. 가상화환경에서 가상주소를물리주소변환하는대표적인두가지방식인섀도페이징과 CPU 에 서지원하는 HAP Hardware Assisted Paging 이어떻게이루어지는지설명합니다. I/O 가상화 가상머신이동작할때필요한입 출력장치에접근하는방법을다룹니다. Xen 에 서반가상화입 출력방식과전가상화입 출력방식에는많은차이가있습니다. 따 라서반가상화입 출력방식과전가상화입 출력방식을나눠서설명합니다.
예제테스트환경 사용프로그램 버전 리눅스커널 3.6 Xen 하이퍼바이저 4.1.2 리눅스커널코드참고사이트 : http://goo.gl/jmbpa 리눅스커널코드다운로드 : ftp://kernel.org/pub/linux/kernel/v3.x/linux-3.6.tar.gz Xen 코드참고사이트 : http://goo.gl/pwfea Xen 소스코드다운로드 : http://bits.xensource.com/oss-xen/release/4.1.2/xen-4.1.2.tar.gz
한빛 ebook 리얼타임 한빛 ebook 리얼타임은 IT 개발자를위한 ebook 입니다. 요즘 IT 업계에는하루가멀다하고수많은기술이나타나고사라져갑니다. 인터넷을아무리뒤져도조금이나마정리된정보를찾는것도쉽지않습니다. 또한잘정리되어책으로나오기까지는오랜시간이걸립니다. 어떻게하면조금이라도더유용한정보를빠르게얻을수있을까요? 어떻게하면남보다조금더빨리경험하고습득한지식을공유하고발전시켜나갈수있을까요? 세상에는수많은종이책이있습니다. 그리고그종이책을그대로옮긴전자책도많습니다. 전자책에는전자책에적합한콘텐츠와전자책의특성을살린형식이있다고생각합니다. 한빛이지금생각하고추구하는, 개발자를위한리얼타임전자책은이렇습니다. 1. ebook Only - 빠르게변화하는 IT 기술에대해핵심적인정보를신속하게제공합니다. 500페이지가까운분량의잘정리된도서 ( 종이책 ) 가아니라, 핵심적인내용을빠르게전달하기위해조금은거칠지만 100페이지내외의전자책전용으로개발한서비스입니다. 독자에게는새로운정보를빨리얻을수있는기회가되고, 자신이먼저경험한지식과정보를책으로펴내고싶지만너무바빠서엄두를못내시는선배, 전문가, 고수분에게는보다쉽게집필하실기회가되리라생각합니다. 또한새로운정보와지식을빠르게전달하기위해 O'Reilly의전자책번역서비스도준비중이며, 조만간선보일예정입니다. 2. 무료로업데이트되는, 전자책전용서비스입니다. 종이책으로는기술의변화속도를따라잡기가쉽지않습니다. 책이일정한분량이상으로집필되고정리되어나오는동안기술은이미변해있습니다. 전자책으로출간된이후에도버전업을통해중요한기술적변화가있거나, 저자 ( 역자 ) 와독자가소통하면서보완되고발전된노하우가정리되면구매하신분께무료로업데이트해드립니다.
3. 독자의편의를위하여, DRM-Free로제공합니다. 구매한전자책을다양한 IT기기에서자유롭게활용하실수있도록 DRM-Free PDF 포맷으로제공합니다. 이는독자여러분과한빛이생각하고추구하는전자책을만들어나가기위해, 독자여러분이언제어디서어떤기기를사용하시더라도편리하게전자책을보실수있도록하기위함입니다. 4. 전자책환경을고려한최적의형태와디자인에담고자노력했습니다. 종이책을그대로옮겨놓아가독성이떨어지고읽기힘든전자책이아니라, 전자책의환경에가능한최적화하여쾌적한경험을드리고자합니다. 링크등의기능을적극적으로이용할수있음은물론이고글자크기나행간, 여백등을전자책에가장최적화된형태로새롭게디자인하였습니다. 앞으로도독자여러분의충고에귀기울이며지속해서발전시켜나가도록하겠습니다. 지금보시는전자책에소유권한을표시한문구가없거나타인의소유권한을표시한 문구가있다면위법하게사용하고계실가능성이높습니다. 이경우저작권법에의해 불이익을받으실수있습니다. 다양한기기에사용할수있습니다. 또한한빛미디어사이트에서구입하신후에는횟수에 관계없이다운받으실수있습니다. 한빛미디어전자책은인쇄, 검색, 복사하여붙이기가가능합니다. 전자책은오탈자교정이나내용의수정보완이이뤄지면업데이트관련공지를이메일로 알려드리며, 구매하신전자책의수정본은무료로내려받으실수있습니다. 이런특별한권한은한빛미디어사이트에서구입하신독자에게만제공되며, 다른 사람에게양도나이전되지않습니다.
차례 01 가상머신모니터는무엇인가? 1 1.1 왜가상화인가? 2 1.2 하이퍼바이저종류 4 02 I/O 가상화 6 2.1 디바이스에뮬레이션 6 2.2 반가상화인터페이스 7 2.3 분리드라이버모델 8 2.4 직접접근 I/O 10 2.5 IOMMU 12 2.6 SR-IOV 13 03 반가상화 I/O 15 3.1 리눅스의블록디바이스 I/O 17 3.2 I/O Ring 21 3.3 이벤트채널 33 3.4 XenStore & XenBus 36 3.5 그랜트테이블 43 3.6 반가상화 I/O 정리 46
04 전가상화 I/O 47 4.1 QEMU 란? 47 4.2 Xen 에서의 QEMU 이용 49 05 하드웨어지원 63 5.1 IOMMU 65 5.2 PCI passthrough I/O 71
1 가상머신모니터는무엇인가? Xen 내부동작을알아보기전에는가상머신모니터혹은하이퍼바이저Hypervisor 01 에대한개념과 I/O 가상화에대한전반적인내용을알아야한다. 1 장과 2 장은 I/O 가상화전체를그려볼기회이므로반드시이해하자. 가상머신모니터 Virtual Machine Monitor 란글자그대로가상머신을모니터링하는소프트웨어계층을의미한다. 물론단순히모니터링만하는것이아니라하드웨어자원관리, 가상머신스케줄링등가상머신을동작시키는데필요한모든작업을담당한다. 그림 1-1 가상머신모니터 ( 출처 : www.vmware.com) 01 본책에서는가상머신모니터라는용어와하이퍼바이저라는용어를섞어서사용한다. 서로같은것을부르는말이니혼동이없길바란다. 1 장가상머신모니터는무엇인가? 1
여기서말하는가상머신이란실제머신은아니지만마치물리머신이있는것같은환경을사용자에게제공하는가상화한머신환경을의미한다. 02 좀더쉽게설명하면하나의컴퓨터에여러개의운영체제를동시에구동할수있게하는소프트웨어라고할수있다. 즉, 하나의컴퓨터에서가상머신모니터는다수의가상머신을사용자에게제공하고, 사용자는하나의물리머신위에다수의가상머신을가질수있게된다. 1.1 왜가상화인가? 최근들어이곳저곳에서가상화에대한논의가뜨겁다. 실제로가상화기술은이미성숙기에이르렀으며, 많은기업에서도입했거나도입을고려하는상황이다. 사실가상화기술은최신기술이아니라 1960년대 IBM의메인프레임에서처음구현되었다. 하지만당시에는큰이목을끌지못하다가최근 10여년전부터하드웨어의발전과함께재조명받기시작했다. 처음가상화기술이재조명받기시작했을때, 기업의가상화기술도입동기는바로서버통합 Server Consolidation 이었다. 이는물리서버머신하나가다수의 CPU와대량의메모리를갖출수있게되면서많은자원이유휴상태로남는경우가많아, 이렇게유휴한상태의서버를머신하나로통합관리하자는요구가생겼다는뜻이다. 이때가상화기술을이용하면물리서버하나를가상머신하나로대체하고, 이가상머신여러대를강력한성능을가진물리머신하나에서동작시켜시스템자원의효율성을극대화할수있다. 서버통합과더불어가상화기술이가진또하나의장점은가상머신의격리 Isolation 다. 사실서버통합을하는데가상화기술이반드시필요한것은아니다. 예를들어 02 JVM(Java Virtual Machine) 과같은가상머신을떠올리는독자도있을것이다. 이책에서는 JVM과같이프로세스레벨의가상화가아닌시스템레벨의가상머신에대해다룬다. 1 장가상머신모니터는무엇인가? 2
웹서버, 데이터베이스서버, DNS 서버등여러서버를하나의머신위에동작시켜 도된다. 하지만운영체제위에서여러개의서버프로세스가동작하게되므로서 버프로세스사이에많은영향을미친다는치명적인문제점이있다. 또다른예로자신이홈페이지하나를운영하고있고, 호스팅업체에웹호스팅을요청했다고가정하자. 홈페이지가다른고객과서버를함께사용해서성능에영향을미친다면당신은해당업체에호스팅을의뢰하고싶지않을것이다. 가상화는각고객에게독립된가상머신하나를제공하며, 가상머신사이에서완벽하게격리된환경을보장해주므로고객각각의요구사항을만족시킬수있다. 03 또다른장점은관리의용이성이다. 가상화되지않은환경에서서버를점검하거나업그레이드한다면, 동작중인서버의전원을끄고점검및업그레이드를한뒤다시서버전원을켜야한다. 하지만가상화된환경에서는단순히가상머신을다른물리서버머신으로이주하고해당물리서버를점검하면되므로, 서비스중단없이원하는작업을마무리할수있다. 이처럼처음에는서버통합과관련한기업요구때문에재조명을받았던가상화기술이지만, 최근에는클라우드컴퓨팅이라는거부할수없는흐름에맞춰가상화기술이탄생한이래로가장큰호황을누리고있다. IaaS Infrastructure as a Service 라는클라우드서비스로분류하는아마존 EC2 Elastic Compute Cloud 는바로지금설명하는가상화기술을기반으로구축되어사용자는웹사이트에서단순한클릭몇번만으로수분안에서버에생성한가상머신을사용할수있다. 이외에도다양한클라우드서비스들이가상화환경아래에서서비스되는추세며, 앞으로도수많은서비스와애플리케이션이등장할것이다. 03 물론운영체제스스로프로세스사이의간섭을줄이는방법들이있다. 하지만가상머신만큼완벽히격리된환경을제공하지못한다. 1 장가상머신모니터는무엇인가? 3
1.2 하이퍼바이저종류 그림 1-2 Type 1 과 Type 2 하이퍼바이저 게스트운영체제프로세스 엑셀워드 Mplayer Apollon 호스트운영체제프로세스 게스트운영체제... 윈도우리눅스... Type 1 하이퍼바이저 Type 2 하이퍼바이저 호스트운영체제 가상머신모니터는시스템위치에따라크게 Type 1 native or bare-metal 과 Type 2 hosted 로분류한다. Type 1 하이퍼바이저는하드웨어바로위의소프트웨어계층으로존재하며그위에다양한게스트운영체제가동작하는방식이다. Xen이나 VMware의서버용하이퍼바이저제품군등이여기에해당한다. Type 1은하드웨어전원이들어오면가장먼저하이퍼바이저가부팅을시작하게하고, 부팅을완료하면관리자가가상머신을생성해서여러개의가상머신이동작한다. Type 2는이와조금다르게호스트운영체제가존재하고, 그위에서하이퍼바이저가동작하며, 다시그위에게스트운영체제가동작한다. 버추얼박스 VirtualBox 나 KVM, 그리고 VMware의데스크톱을위한제품군인워크스테이션 workstation 계열이여기에속한다. 동작방식도조금다른데우선호스트운영체제를가장먼저부팅해실행하고, 그위에서사용자가하이퍼바이저를실행시킨다. 그런다음실행된하이퍼바이저가여러개의가상머신을생성하고동작하게한다. 어떤종류의하이퍼바이저가좀더좋고효율적인지는여러가지이견들이있으니 관심있는독자는개별적으로찾아보기바란다. 1 장가상머신모니터는무엇인가? 4
이미언급한바와같이 Xen 하이퍼바이저는 Type 1에해당하며다른여러하이퍼바이저와비교해완성도가매우높고성능도뛰어나다고알려졌다. 또한아마존웹서비스 Amazon Web Service 에서 Xen을기본하이퍼바이저로채택해사용하는만큼, 안정성도이미검증되었다고볼수있다. 1 장가상머신모니터는무엇인가? 5
2 I/O 가상화 I/O( 입출력 ) 는 CPU, 메모리와더불어컴퓨터가어떤의미있는작업을하기위한필수요소의하나다. 키보드나마우스등으로이루어지는사람과의통신, 네트워크로이루어지는다른컴퓨터와의통신, 그리고디스크, 그래픽카드등과같은디바이스와의통신은컴퓨터가어떤작업을할때반드시필요하다. CPU와메모리그리고디바이스사이의실행속도차이때문에운영체제에서 I/O 를어떻게처리하느냐는시스템의성능과매우밀접한연관이있다. 마찬가지로가상화환경에서 I/O를어떻게처리하느냐도가상화시스템의전체성능을결정하는중요한문제다. 따라서 I/O 가상화를이해하는것은전체가상화환경을이해하는데매우중요하다. 2장에서는 I/O 가상화의기본개념, Xen에서사용하는방법, 그리고효율적인 I/O 가상화에필요한하드웨어지원의전반적인내용을소개한다. 2.1 디바이스에뮬레이션 I/O를가상화하는가장직관적인방법은디바이스의기능을소프트웨어적으로똑같이구현하는에뮬레이션방식이다. 하이퍼바이저는게스트도메인에실제로디바이스가존재하는것처럼설정하고, 게스트도메인은실제디바이스에서동작하는것과똑같이동작하게된다. 에뮬레이션방식의가장큰장점은가상의디바이스를제공함으로써게스트도메인의드라이버를수정없이그대로쓸수있다는점이다. 또한잘알려진디바이스를에뮬레이션하면게스트운영체제대부분이해당디바이스의드라이버를사용할수있으므로다양한게스트운영체제를지원할수있다. 그러나디바이스에뮬레이션방식은에뮬레이션방식의전형적인단점을그대로가진다. 디바이스를소프트 2 장 I/O 가상화 6
웨어로모두구현해야하므로구현이복잡하고, 하드웨어를소프트웨어로동작시켜야하므로오버헤드가커서성능이저하된다. 예를들면모든저수준의 I/O 명령 (ex. x86 아키텍처에서 in/out 명령 ) 을하이퍼바이저가에뮬레이션해주어야하고이때게스트와하이퍼바이저사이에컨텍스트스위치가항상발생한다. 그림 2-1 디바이스에뮬레이션 가상머신 디바이스드라이버 하이퍼바이저 에뮬레이트한드라이버 하드웨어 네트워크 블록디바이스 2.2 반가상화인터페이스 게스트운영체제를수정할수있다면, 좀더효율적으로 I/O 가상화를구현할수있다. 즉, 게스트와하이퍼바이저사이에 I/O 디바이스에대한새로운상위수준인터페이스를정의해게스트가직접하이퍼바이저에 I/O 요청을할수있다. 예를들어네트워크디바이스를생각해보자. 디바이스에뮬레이션은모든저수준 I/O 명령어를있는그대로에뮬레이션해야한다. 그리고패킷하나를네트워크카드를통해전송하려면많은저수준 I/O 명령어를요구한다. 이는에뮬레이션을실행할때의오버헤드뿐만아니라, 게스트와하이퍼바이저사이에많은수의컨텍스트스위치를일으키며이때발생하는오버헤드도상당하다. 따라서반가상화를통해게스트와하이퍼바이저사이의인터페이스를정의할때는좀더상위수준의인 2 장 I/O 가상화 7
터페이스로정의한다. 이렇게하면사용자의저수준 I/O 명령을 send_packet과같은한번의요청으로처리할수있다. 게스트와하이퍼바이저의컨텍스트스위치는단한번으로충분하고, 디바이스에뮬레이션을실행할필요도없으므로더높은성능의 I/O 가상화를구현할수있다. 그림 2-2 반가상화 I/O 인터페이스 가상머신 반가상화인터페이스 반가상화인터페이스 하이퍼바이저 디바이스드라이버 하드웨어 네트워크 블록디바이스 2.3 분리드라이버모델 앞서언급한디바이스에뮬레이션과반가상화방법은 I/O 명령을어떻게가상화할것인가에대한두가지방법론이다. 이와더불어 I/O 가상화를구현할때논의하는것은바로디바이스드라이버에대한관점이다. 일반적으로디바이스드라이버는운영체제를이루는핵심요소이며현존하는많은디바이스를운영체제가지원해야하므로, 실제로리눅스커널에서도디바이스드라이버의소스코드가커널의대부분을차지한다. 2 장 I/O 가상화 8
이런상황에서디바이스제어를하이퍼바이저가하도록설계한다면, 디바이스드라이버의모든코드를하이퍼바이저에서유지해야하므로상당히비효율적이다. 즉, 이미운영체제가가진소스코드를또소유해야하는중복성측면의문제와하이퍼바이저를유지보수하는과정에서대용량의소스코드를허용하기는쉽지않다는문제가발생한다. 또한하이퍼바이저가디바이스드라이버를유지하면, 디바이스드라이버의오동작때문에에러가발생하면시스템전체에영향을미칠것이다. 이런모든단점을극복하려고디바이스드라이버를하이퍼바이저와별도로관리하 자는분리드라이버모델 Split Driver Model 이등장했으며, 디바이스드라이버로실제 로디바이스를제어하는별도의특수한도메인을두도록하였다. Xen 하이퍼바이저에서는도메인 0(DOM 0) 을디바이스드라이버를전담하는도메인으로할당했고, 도메인 0에서리눅스를구동시켜리눅스커널에존재하는모든 디바이스드라이버를사용할수있다. 그림 2-3 분리드라이버모델 드라이버도메인 (DOM 0) 게스트 (DOM U) 디바이스드라이버 에뮬레이트한디바이스 반가상화인터페이스 디바이스드라이버 반가상화인터페이스 하이퍼바이저 하드웨어 네트워크 블록디바이스 2 장 I/O 가상화 9
그림 2-3은분리드라이버모델의예다. 디바이스드라이버는하이퍼바이저가아닌특정도메인에존재하고하이퍼바이저가소유한드라이버를사용해직접하드웨어디바이스에접근한다. 게스트가반가상화인터페이스를사용했다면드라이버도메인의반가상화인터페이스가게스트로부터 I/O 요청을받아서디바이스드라이버로전달한다. 반가상화인터페이스를사용하지않았다면, 드라이버도메인에서디바이스를에뮬레이션해 I/O 요청을실제디바이스드라이버에게보낸다. 2.4 직접접근 I/O 가상화환경은디바이스하나를여러게스트도메인이공유하므로하이퍼바이저의적절한중재가필요하다. 그러므로게스트가직접디바이스에접근하는것은허용할수없다. 그런데특정디바이스를게스트도메인하나만사용하도록허용한다면, 게스트는하이퍼바이저의중재없이직접디바이스와통신할수있을것이다. 이렇게게스트운영체제가직접디바이스에접근해 I/O를요청하는것을직접접근 I/O Direct Access I/O 라고부르며, 혹은하이퍼바이저를통해직접디바이스에접근한다고하여 Passthrough I/O라고도부른다. 그림 2-4 직접접근 I/O 가상머신 디바이스드라이버 하이퍼바이저 하드웨어 네트워크 블록디바이스 2 장 I/O 가상화 10
직접접근 I/O 는성능이우수하며실제로가상화되지않은환경과동일한성능을 보장하기도한다. 왜냐하면일단디바이스를게스트도메인에할당하면하이퍼바이 저의중재없이도바로 I/O 를실행하기때문이다. 하지만직접접근 I/O 는메모리보호, 전가상화지원, 디바이스공유라는세가지 측면에서치명적인약점이있다. 1. 메모리보호 : 디바이스 I/O를직접실행한다는것은직접 DMADirect Memory Access01 연산을실행하는것을의미한다. 디바이스는 DMA 연산으로직접시스템메모리의데이터를읽고쓸수있다. 이때어떤게스트에디바이스를할당했 는데, DMA 를통해악의적인게스트가임의로다른게스트의메모리영역에쓰 기연산을실행하면해당게스트는오작동이일어날것이다. 2. 전가상화지원 : DMA 명령을내리려면게스트운영체제가머신주소를알아야 한다. 왜냐하면 DMA 는직접시스템메모리에접근할때머신주소를입력으로 받아 DMA 를실행하기때문이다. 그러나전가상화게스트운영체제는머신주 소를알지못하므로올바른 DMA 요청을실행할수없다. 3. 디바이스공유 : 가상화를하는가장큰이유하나는효율적인하드웨어자원의 사용이다. 게스트하나가디바이스하나만사용한다면, 하드웨어하나를여러 게스트가나누어사용하는가상화의기본원칙에어긋날수있다. 위세가지단점을극복하고직접접근 I/O를구축하려고, 각하드웨어벤더는하드웨어적해결책을제공한다. 좀더안전한직접접근 I/O와전가상화게스트지원을위해서는 IOMMU(AMD) 혹은 VT-d( 인텔 ) 가있고, 직접접근 I/O를하면서도효율적으로디바이스를공유할수있도록해결책을제시한 SR-IOV도있다. 01 DMA란디바이스가 CPU의중재없이직접메모리에접근하는방식을뜻한다. 일반적으로메모리에접근할때는 CPU의메모리 read/write 명령으로만가능한데, 시스템의효율을극대화하려고 CPU가다른작업을하는중에도 DMA를통해서디바이스는 I/O를실행할수있다. 2 장 I/O 가상화 11
2.5 IOMMU IOMMU I/O Memory Management Unit 는 CPU 안의 MMU Memory Management Unit 와비슷하다. 즉, CPU에서 MMU가가상주소를물리주소로변환하는것과비슷하게주소변환기능을 I/O DMA에적용한다. DMA 리매핑 Remapping 이라고도불리는이주소변환기능을이용해전가상화게스트운영체제가 DMA 명령으로물리주소를전달하면, 물리주소를머신주소로변환해 DMA 연산을실행하게된다. 또한 MMU가페이지레벨의보호기능을제공해승인되지않은메모리영역에함부로쓰기를할수없는것과같이 DMA 연산시승인되지않은메모리영역에쓰기를금지한다. 이보호기능으로악의적인게스트가다른게스트나하이퍼바이저메모리를침해하는일을방지할수있다. 그림 2-5 는시스템상에서 IOMMU 의위치를보여준다. 그림에서보듯이 CPU 는 MMU 를통해메모리에접근하고, I/O 디바이스는 IOMMU 를통해메모리에접근 할수있다. 그림 2-5 IOMMU( 출처 : http://www.linuxjournal.com/article/7104) 메인메모리 IOMMU I/O 버스 메모리물리주소 버스물리주소 MMU CPU CPU 가상주소 2 장 I/O 가상화 12
2.6 SR-IOV IOMMU를이용한직접접근 I/O는게스트도메인에서디바이스에직접접근해성능을높이지만, 게스트도메인하나에만디바이스를할당해야하는단점을극복하지못한다. SR-IOV Single Root I/O Virtualization 는이런단점을극복하기위한하드웨어기능으로, 직접접근 I/O에서디바이스공유기능을지원하며, 디바이스하나를복수개의가 상디바이스로나눠게스트도메인에할당할수있게한다. 그림 2-6 SR-IOV 를통한디바이스공유 DOM 0 DOM U DOM U DOM U QEMU 가상디바이스를위한드라이버 VF 드라이버 VF 드라이버 PF 드라이버 XEN VMM IOMMU PCI Express PF VF VF 물리리소스 SR-IOV PCI Express 디바이스 그림 2-6 은 SR-IOV 와 IOMMU 를통한직접접근 I/O 의디바이스공유모델을보 여준다. SR-IOV 는디바이스하나를 PF Physical Function 와 VF Virtual Function 라는두가 지타입의기능으로분리한다. 따라서디바이스하나는여러개의 VF 를각가상머 2 장 I/O 가상화 13
신에할당하게된다. 그리고하이퍼바이저는 PF 를제어 / 관리하며, 여러개의 VF 를 게스트도메인각각에할당하도록요청한다. 쉽게말하면디바이스하나를가상화 해여러개의인스턴스를제공하는것이다. SR-IOV를활용한이더넷디바이스라면디바이스에서스위치역할을할수있는기능도추가되어있으므로외부로부터패킷을수신했을때패킷을적절히각 VF에분배하고게스트도메인에전달할수있다. SR-IOV는이처럼직접접근 I/O에서물리디바이스하나를여러게스트도메인에서공유할수있도록지원한다. 2 장 I/O 가상화 14