Introduccin KVM (Kernel-based Virtual Machine) es una infraestructura de virtualizacin para el kernel Linux que (hypervisor) KVM necesita que el hard!are (Microprocesador) soporte virtualizacin o ten"a extensiones de virtualizacin KVM fue portado a #ree$%& e 'llu(os co(o (odulos adicionales al kernel KVM en un principio slo era soportado por (icroprocesadores x)*+ pero ya fue portado a %,-./+ 0o!er01+ '2-*3 y final(ente 24M (desde el kernel -.)
%e pueden virtualizar practica(ente cualquier siste(a operativo con KVM+ cualquier Linux+ $%&+ %olaris+ 5indo!s+ 6aiku+ 4eact7%+ 0lan.+ 247% (4esearch 7peratin" %yste()+ Mac 7% 8 y cualquier 9:'8 %oporta paravirtualizacin de for(a nativa (cuando la full virtualization no funciona) para los si"uientes siste(as operativos huesped; Linux+ 7pen$&%+ #ree$%&+ :et$%&+ 0lan . y 5indo!s <sto (ediante el uso de la 20' Virt'7 Virt'7 soporta una tar=eta de red+ un controlador para 6&& y todos los dispositivos de for(a paravitualizada (%i(ilar a VM5are) <l Kernel Linux >*>/ (#ebrero de >//?) fue el pri(er kernel en ya incluir KVM Origen de KVM Origen de KVM
KVM se inicio como un proyecto Open Source por la
empresa o israel Qumranet.
Curiosamente se inicio como un proyecto centrado en una
solucin o VDI para clientes Windows.
Qumranet ue ad!uirida en "##$ por %ed&at.
%ed&at 'a centrado su estrategia en KVM para de(nirlo
como la me)or solucin de *irtuali+acin en el mundo Open Source.
,n %&,- . /%ed &at ,nterprise -inu012 la solucin de
*irtuali+acin o escogida era 3en2 en %&,- 4 se a5andono por KVM.
IBM IBM tam5i6n es una de las empresas !ue apuesta uerte
por KVM.
&a contri5uido en 7reas como la gestin de memoria2
me)oras en el rendimiento y el su5sistema de ,8S *irtual. I9M tiene a un gran n:mero de desarrolladores tra5a)ando so5re KVM y lo orece como una solucin en su portaolio de sotware para ser*idores.
Otras distri5uciones de -inu0 tam5i6n comen+aron a
in*ertir en KVM e incluirlo en sus distri5uciones como el caso de SUSE SUSE o Ubuntu Ubuntu.
KVM orma a'ora parte integral del ;ernel de -inu02 por
lo !ue aparece en todas las distri5uciones ya !ue todas lle*an un ;ernel m7s actual !ue el ".4."#. Que orme parte y tenga capacidades2 no implica !ue 'aya soporte comercial ni !ue se incluyan las 'erramientas necesarias. KVM es capa+ de apro*ec'arse de la comunidad en torno a -inu02 cual!uier me)ora so5re el ;ernel2 es una me)ora !ue 5ene(cia a KVM. Cual!uier desarrollador de -inu0 puede tam5i6n 5ene(ciarse del uso de KVM.
<un!ue el procesador la incluya2 'ay !ue acti*arla en
9IOS.
Diseo KVM no realiza e(ulaciones+ en realidad expone la interface ,dev,kv( donde un espacio de usuario puede funcionar;
1onfi"ura el espacio de la direccin del "uest <l host+ entre"a
una i(a"en del fir(!are ($'7%) con la cual el %iste(a 7perativo del "uest puede arrancar (&eben entender el proceso de arranque)
%e ali(enta el ',7 virtualizado
%e (apea el video hacia el host
<n Linux+ @<M9 traba=a a velocidades cuasi nativas (hard!are)+ pero cuando al"o no es soportado recurre a la e(ulacin de soft!are
Licencias KVM tienen (uchas partes y cada una de ellas una licencia diferente;
KVM kernel (odule; A0L v>
KVM user (odule; LA0L v>
@<M9 virtual 109 core library (libqe(ua) B @<M9 01
syste( e(ulator; LA0L
Linux user (ode @<M9 e(ulator; A0L
$'7% files (biosbin+ v"abiosbin and v"abios-cirrusbin);
LA0L v>
Herramientas de administracin Graficas (GUI)
K'M16' C $asado en la !eb
91% Virtual Machine Mana"er C $asado en la !eb+ soporta
KVM y 8<: (ba=o !indo!s)
2rchipel C $aso en la 5eb y soporta libvirt+ utiliza 8M00
5itsbits C '(ple(enta de for(a si(plificada %aa% con una
!eb 9'
Virtual Machine Mana"er C La (Ds co(pleta+ soporta la
creacin+ edicin+ inicio+ pausado y parado de (aquinas virtuales KVM asE co(o (uchas otras caracterEsticas
1onVirt C %i(ilar al anterior+ pero con (enos funcionalidades
0rox(ox Virtual <nviron(ent C <s un paquete de
virtualizacin Libre+ que incluye KVM+ 7penVF+ e instala a(bos+ viene con una A9'
7pen:ode C servidor de virtualizacin de 46<L,1ent7%+
es considerada una solucin de virtualizacin con instaladores y aplicaciones de ad(inistracin de KVM y 7penVF
7pen@4M C 0latafor(a de ad(inistracin para data
centers hetero"eneos
%olusVM C %oporta KVM+ 8en y 7penVF
Virtualizor C %i(ilar al anterior
Hardware Emulado Gipo &ispositivo Video 1irrus 1LA& H33* 01' VA2 card+ du((y VA2 con extensiones $ochs V<%2+ o Vir"il co(o un virtual -& A09 01' i33/#8 host 01' brid"e y 0''8- 01' to '%2 brid"e 'nput 0%,> Mouse and Keyboard %onido %ound $laster I*+ <:%7:'@ 2udio01' <%I-?/+ Aravis 9ltrasound A#I+ 1%3>-I2 co(patible <thernet 2M& 2(?.1.?/2 (2(?../)+ <I/// ('ntel )>H3/<M+ )>H?-L+ )>H33A1)+ :<>/// y 4ealtek 4GL)I-. 5atchdo" ti(er 'ntel *-//<%$ or '$?// 42M &esde H/ M$ hasta -> G$ 109 &esde I hasta I*/ 109s
Algunas Implementaciones
'llu(os based distributions
7pen'ndiana
4ed 6at <nterprise Linux (46<L) H3J
%(art7%
%9%< Linux <nterprise %erver (%L<%) II %0I J
9buntu I//3 LG% J
Aentoo Linux
9nivention 1orporate %erver
Funcionamiento KVM es Knico+ ya que en su desarrollo+ en lu"ar de crear porciones o un kernel especifico de %iste(a 7perativo co(o un hypervisor+ co(o otros hypervisors hicieron+ KVM desarroll un (Ltodo en el que volvieron al kernel Linux un hypervisor <sto fue creado de for(a tal que sea lo (enos intrusivo volviendose un (dulo del kernel 'nte"raron asE las capacidades de un hypervisor en el kernel Linux co(o (odulos car"ables+ entonces se puede tener una ad(inistracin (as si(plificada y esto se traduce en (e=or perfor(ance <sta fue la razon por la cual ahora se tiene a KVM co(o un (dulo del kernel
<sta visin tiene (uchas venta=as+ los entornos de virtualizacin se benefician de todo el kernel Linux en si $a=o este (odelo+ cada (aquina virtual es un proceso re"ular del kernel Linux+ asE es calendarizada de for(a estMndar por el Linux scheduler Gradicional(ente+ un proceso nor(al de Linux tiene dos (odos de e=ecucin; nKcleo y de los usuarios <l (odo de usuario es el (odo por defecto para las aplicaciones+ y una aplicacin entra en (odo kernel cuando se requiere al"Kn servicio al nKcleo+ co(o escribir en el disco duro
KVM a"re"a un tercer (odo+ el (odo de invitado Los procesos de (odo de huLspedes son procesos que se e=ecutan desde dentro de la (Mquina virtual <l (odo de invitado+ al i"ual que el (odo nor(al (e=e(plo no virtualizado)+ tiene sus propias variaciones del nKcleo y espacio de usuario kill y ps nor(ales funcionan en (odos de huLspedes (de la instancia no virtualizada)+ una (Mquina virtual KVM se (uestra co(o un proceso nor(al+ y puede ser (atada al i"ual que cualquier otro proceso
KVM hace uso de la virtualizacin de hard!are para virtualizar estados de procesador+ y la "estin de la (e(oria de la (Mquina virtual se (ane=a desde el interior del nKcleo ' , 7 en la versin actual se (ane=a en el espacio de usuario+ principal(ente a travLs de @<M9
9na instalacin KVM consiste de los si"uiente;
9n controlador de dispositivo para la "estin de la virtualizacin de
hard!areN este controlador expone sus capacidades a travLs de un persona=e del dispositivo ,dev,kv(
9n co(ponente de espacio de usuario para e(ular el hard!are de
01N 2ctual(ente+ esto se (ane=a en el espacio de usuario y es un proceso @<M9 li"era(ente (odificado
<l (odelo ' , 7 se deriva directa(ente de @<M9+ con soporte para
las i(M"enes de copia en escritura de disco y otras caracterEsticas de @<M9
KVM vs los otros? KVM es un proyecto relativa(ente reciente en co(paracin con sus co(petidores <n una entrevista con 2vi Kivity+ el desarrollador principal+ co(par KVM con soluciones alternativas; O<n (uchos sentidos+ VM!are es una tecnolo"Ea innovadora VM!are lo"ra virtualizar co(pleta(ente el notoria(ente co(ple=a arquitectura x)* utilizando slo tLcnicas de soft!are+ y para lo"rar un rendi(iento (uy bueno y la estabilidad 1o(o resultado+ VM!are es una pieza (uy "rande y co(ple=a de soft!are KVM + por el contrario+ se basa en las nuevas tecnolo"Eas de virtualizacin de hard!are que han aparecido reciente(ente 1o(o tal+ es (uy pequePa (alrededor de I/ /// lEneas ) y relativa(ente si(ple 7tra "ran diferencia es que VM!are es propietario+ (ientras KVM es de cdi"o abierto (Las nuevas versiones de VM5are estan utilizando KVM para la virtualizacin)Q
8en es un proyecto bastante "rande+ proporcionando la paravirtualizacin y la virtualizacin co(pleta <stM disePado co(o un nKcleo independiente+ que slo requiere Linux para realizar ',7 <sto hace que sea bastante "rande+ ya que tiene su propio pro"ra(ador+ ad(inistrador de (e(oria+ (ane=o de te(porizador y la inicializacin de la (Mquina KVM+ por el contrario+ utiliza el planificador de Linux estMndar+ la "estin de (e(oria y otros servicios <sto per(ite a los desarrolladores KVM concentrarse en la virtualizacin+ basMndose en el nKcleo central en lu"ar de ree(plazarlo
@<M9 es un e(ulador de espacio de usuario <s un proyecto bastante increEble + e(ulando una variedad de procesadores co(o invitado en varios procesadores centrales + con un rendi(iento bastante decente
%in e(bar"o + la arquitectura del espacio de usuario no le per(ite acercarse a velocidades nativas sin un acelerador de kernel KVM reconoce la utilidad de @<M9 usMndolo para ',7 de e(ulacin de hard!are 2unque KVM no estM vinculado a nin"Kn espacio de usuario en particular + el cdi"o de @<M9 era de(asiado bueno para no usar - asE que se lo utilizQ
KVM + sin e(bar"o+ no es perfectoN tiene al"unas li(itaciones+ co(o las si"uientes;
%oporte %M0 para los hosts que falta en la versin actual
2=uste del rendi(iento (tunnin")
%in e(bar"o + el proyecto continKa a un rit(o acelerado+ y de acuerdo con 2vi Kivity + KVM ya estM (Ms avanzado que 8en en (uchas Mreas sino todas (<ntrevista a 2vi Kivity en >//))
Cmo funciona la virtualizacin La platafor(a de virtualizacin es una tecnolo"Ea anti"ua N %in e(bar"o + en los Klti(os aPos + los siste(as operativos y de hard!are han (adurado hasta el punto de hacer que la pro(esa de la virtualizacin una realidad La parte (Ms funda(ental de la virtualizacin es el hipervisor <l hipervisor actKa co(o una capa entre el siste(a operativo huLsped virtualizado y el hard!are real (co(o se vio en la anterior clase) <n al"unos casos + el hipervisor es un siste(a operativo + tal co(o co(o 8en N en otros casos + es el soft!are a nivel de usuario+ tales co(o VM!are <l siste(a operativo huLsped virtualizado + o la instancia virtualizada + es un siste(a operativo aislado que ve a la platafor(a de hard!are subyacente co(o pertenecientes a la (is(a 0ero+ en realidad + el hipervisor proporciona esa ilusin
Compatibilidad con el procesador para virtualizacin &ebido al resur"i(iento del interLs en la tecnolo"Ea de virtualizacin + los fabricantes de (icroprocesadores han actualizado sus procesadores para tener soporte nativo para virtualizacin %i lo hace+ per(ite que el procesador ad(ite un hipervisor directa(ente y si(plifica la tarea de escritura de hipervisores+ co(o es el caso de KVM <l procesador (ane=a los estados de procesador para los siste(as operativos invitados y anfitrin + y ta(biLn "estiona las ',7 y las interrupciones en no(bre del siste(a operativo virtualizado
=estin y Virtuali+acin =estin y Virtuali+acin >n aspecto cla*e para el 60ito de un despliegue en *irtuali+acin es la gestin.
>no de los aspectos !ue 'a impedido el 60ito de 3en
'a sido el no presentar una intera+ de gestin :nica2 lo !ue lle*o a *arias *ersiones de 3en en el mercado incompati5les entre s. 3en era el 'iper*isor por deecto en %&,- .2 %ed &at lo reempla+ completamente por KVM en %&,- 4 -inu0 y KVM se 'an estandari+ado a tra*6s de libvirt libvirt y libguestfs libguestfs2 usadas como <?Is 5ase para la gestin de las m7!uinas *irtuales y de las im7genes.
<dem7s2 libvirt libvirt es capa+ de gestionar no solo a KVM2
sino a otros a 'iper*isores como 3en2 VMware ,S32 Vmware Wor;station8?layer2 OpenV@2 MS &yperAV2 Virtual9o02 etc.
Muc'as de las 'erramientas utili+adas de alto ni*el
como virsh virsh o virt-manager virt-manager 'an sido construidas so5re la li5rera 5ase libvirt libvirt.
Instalacin de KVM KVM se ha aPadido a (uchos repositorios de distribucin especEfica+ incluyendo %9%< + #edora (desde la versin ? viene con KVM inte"rado)+ &ebian y 9buntu ( desde #eisty ) 0ara otras distribuciones+ es necesario descar"ar un kernel de la versin >*>/ y superiores 2l co(pilar un nKcleo personalizado+ seleccionen los controladores de dispositivos y habiliten el soporte para la virtualizacin basada en hard!are Ga(biLn pueden descar"ar el (dulo KVM =unto con las utilidades de espacio de usuario requeridos desde sourcefor"enet,pro=ect,sho!filesphpR"roupSid T I)/H..
onclusi!n 1on la introduccin de KVM en el kernel de Linux+ las futuras distribuciones de Linux se han incorporado en el apoyo para la virtualizacin+ dMndoles una venta=a sobre otros siste(as operativos :o habrM necesidad de nin"Kn tipo de instalacin de arranque dual en el futuro+ ya que todas las aplicaciones que se requieren pueden e=ecutar directa(ente desde el escritorio de Linux KVM es slo uno (Ms de los (uchos hipervisores de cdi"o abierto existentes+ reafir(ando que el cdi"o abierto ha sido funda(ental para el avance de la tecnolo"Ea de virtualizacin y "racias a esta naturaleza sencilla de ad(inistrar las cosas a KVM+ se dio paso a al"o (uy i(portante en 1loud 1o(putin"+ 7pen%tack