Sunteți pe pagina 1din 13

Escuela de la Gestión Pública Plurinacional

Diplomado en Software Libre GNU/Linux

MODULO – II
Diplomado en Software Libre GNU/Linux
TEMÁTICA: Virtualización con KVM (Kernel Virtual Machie)
Escuela de la Gestión Pública Plurinacional
Diplomado en Software Libre GNU/Linux

Virtualización con KVM


(Kernel Virtual Machie)

Este tema ofrece información de consulta sobre cómo gestionar entornos virtuales
mediante KVM. Esta página también ofrece información de resumen sobre
el paquete de automatización relacionado.

KVM es una solución de virtualización para Linux en hardware x86 (incluyendo hardware
de 64-bits) que contienen las extensiones de virtualización Intel VT o AMD-V. Se compone
de un módulo del kernel que puede ser cargado, kvm.ko, para proveer toda la
insfraestructura de virtualización base y un módulo específico del procesador, kvm-
intel.ko o kvm-amd.ko.

¿Qué es KVM?
KVM (Kernel Virtual Machine) es un módulo del kernel Linux que permite que los
programas en espacio usuario utilicen las características de virtualización por
hardware ofrecidas por diferentes procesadores. En la actualidad, soporta
procesadores AMD e Intel (x86 y x86_64), PPC 440, PPC 970, S/390, y ARM
(Cortex A15).

¿Qué es QEMU?

QEMU es un emulador de máquinas y virtualizador genérico open source. Cuando


se usa como emulador de máquinas, QEMU puede ejecutar sistemas operativos y
programas compilados para una arquitectura (por ejemplo un sistema ARM) en
una máquina diferente (por ejemplo una PC). Al utilizar traducción dinámica,
alcanza muy buena performance.
Escuela de la Gestión Pública Plurinacional
Diplomado en Software Libre GNU/Linux

Cuando se utiliza como virtualizador, QEMU alcanza casi la performance nativa ya


que ejecuta el código guest directamente en el CPU host. QEMU soporta
virtualización cuando se ejecuta bajo el hipervisor Xen o a través del módulo del
kernel KVM en Linux. Cuando se usa con KVM, QEMU puede virtualizar sistemas
guest x86, PowerPC y S390, entre otros.

QEMU aprovecha KVM cuando ejecuta una arquitectura guest que coincide con la
arquitectura host. Por ejemplo, cuando se utiliza qemu-system-x86 sobre un
procesador x86 compatible, se aprovecha la aceleración de KVM (beneficiando
tanto al sistema guest como al host), ya que el código guest se ejecuta
directamente en el host (sin traducción).
Anteriormente, KVM mantenía su propio fork de QEMU llamado "qemu-kvm" para
soportar virtualización por hardware en arquitecturas x86. Actualmente
está deprecated ya que QEMU ha incorporado la funcionalidad necesaria
(ver http://wiki.qemu.org/KVM.

¿Qué es libvirt?

libvirt (The virtualization API) es un conjunto de herramientas para interactuar con


las capacidades de virtualización de las versiones recientes de Linux (y otros
sistemas operativos), liberado bajo la licencia "GNU Lesser General Public
License".
libvirt soporta un gran conjunto de tecnologías entre las que se destacan:
 KVM/QEMU
 Xen (en Linux y Solaris)
 LXC
 OpenVZ
 El kernel paravirtualizado User Mode Linux
 VirtualBox
Escuela de la Gestión Pública Plurinacional
Diplomado en Software Libre GNU/Linux

 VMware ESX y GSX


 VMware Workstation y Player
 Microsoft Hyper-V
 IBM PowerVM
 El hipervisor Parallels
 Redes virtuales usando bridging, NAT, VEPA y VN-LINK
 Almacenamiento en discos IDE/SCSI/USB, FibreChannel, LVM, iSCSI y
NFS

libvirt permite administrar hosts de forma remota utilizando encriptación TLS y


certificados x509; autenticación con Kerberos y SASL; control de acceso local
mediante PolicyKit; Zeroconf utilizando Avahi; administración de máquinas
virtuales, redes y almacenamiento; y una API cliente portable para Linux, Solaris y
Windows.
Entre su amplia variedad de aplicaciones se destacan: virsh y virt-manager.
Escuela de la Gestión Pública Plurinacional
Diplomado en Software Libre GNU/Linux

KVM

Para poder utilizar KVM se debe contar con un procesador que soporte
virtualización por hardware.
En caso de contar con un procesador AMD o Intel, se puede comprobar si soporta
virtualización por hardware ejecutando cat /proc/cpuinfo | grep svm (si se trata de
un procesador AMD) o cat /proc/cpuinfo | grep vmx (si se trata de un procesador
Intel), y buscando la existencia de los FLAGS "svm" (si es AMD) o "vmx" (si es
Intel):

bridge

cómo crear un bridge (puente por software, con el objetivo principal de usarlo para
una máquina virtual (emulador) en vez del uso clásico de un bridge. En la práctica
la idea es crear un interfaz de red virtual y/o poder conectar a nuestro ordenador
con más de una dirección IP y una única tarjeta de red.

La función tradicional de un bridge es unir dos redes (la diferencia con un router es
que éste interconecta dos redes y regula el paso de información entre ellas,
un bridge, por contra, simplemente une las dos redes como si fueran una sola).

Para conseguir esta función lo único que se necesita es copiar los datos que
pasen por cada tarjeta de red que forme parte del bridge al resto de tarjetas.
Escuela de la Gestión Pública Plurinacional
Diplomado en Software Libre GNU/Linux

Instalación:

Uso Debian Stretch de 64 bits.

Lo primero que vamos a identificar es si nuestro procesador soporta KVM, los de


Intel le llaman Intel-VT y los de AMD le llaman AMD-V. Con los nuevos
procesadores que están en el mercado casi seguro que ya soportan virtualización
por hardware.

La forma de identificarlos es distinta, para ver si tu procesador soporta


virtualización por Kernel, vamos a buscar en las flags del procesador.
Para Intel, escribimos en la consola:

grep --color vmx /proc/cpuinfo

Debe aparecer en rojo un montón de palabras, entre ellas, la palabra vmx.

En el caso de AMD el procedimiento es similar. Escribimos en la consola:

grep --color svm /proc/cpuinfo

Debe aparecer en rojo un montón de palabras, entre ellas, la palabra svm.

Posterior a la confirmación de que nuestro equipo soporta las virtualizaciones


procedemos con la instalación

1) Instalamos el Puente que nos permitirá comunicar la maquina anfitrión con


las maquinas virtual.
$ sudo apt-get install bridge-utils
Escuela de la Gestión Pública Plurinacional
Diplomado en Software Libre GNU/Linux

2) Habilitamos el net.ipv4.ip_forwarding=1
sysctl.conf
Este archivo de configuración se utiliza para pasarle al kernel parámetros
de configuración en tiempo de ejecución. En terminos mas simples sirve
para configurar el kernel que se esta ejecutando o cambiar su
comportamiento. Es equivalente a cambiar valores en los archivos del
directorio virtual /proc/sys.

Para aplicar los cambios realizados en la configuración sobre el kernel en


ejecucion se corre el siguiente comando.
$ sudo sysctl –a

Para este propósito editamos el archivo:

$ sudo nano /etc/sysctl.conf

Descomentamos en la línea siguiente y que este asignado = a 1

net.ipv4.ip_forward=1

Activa el NAT (Network Address Translation) o Forwarding de paquetes


para el protocolo IP. Después de aplicar este cambio se pueden poner
reglas de iptables que redirijan los paquetes entrantes de una interfase o
cualquier otra. Muy útil, cuando estamos utilizando la máquina como un
router, proxy o gateway.
Escuela de la Gestión Pública Plurinacional
Diplomado en Software Libre GNU/Linux

Algunos de los parámetros que contiene el archivo:

fs.file-max = 16384
kernel.threads-max = 2048

La primera línea cambia la cantidad de archivos que el kernel puede tener


abiertos simultáneamente y la segunda línea cambia la cantidad de
procesos concurrentes que pueden ejecutarse.

net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

Desactiva las respuesta del kernel a las peticiones ARP. Esta técnica es útil
a la hora de configurar dos maquinas con la misma dirección IP.

Cualquiera de estos cambios también se pueden realizar escribiendo


directamente sobre los archivos en el directorio /proc/sys.

Abajo muestro como se hacen todos estos cambios si los realizaríamos


directamente sobre los archivos del kernel

Verificación de la configuración
Desde consola podemos verificar el proceso de habilitación de forward=1

$ sudo sysctl -p /etc/sysctl.conf


Escuela de la Gestión Pública Plurinacional
Diplomado en Software Libre GNU/Linux

3) Configuración de la interfaz de red


Posterior a la instalación de Bridge, y la habilitación del forwardin debemos
configurar nuestra interfaz de red.

$sudo nano /etc/network/interfaces

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
address 192.168.55.19
network 192.168.55.0
netmask 255.255.255.0sudo
gateway 192.168.55.1

bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off

4) Ahora instalaremos los paquetes necesarios para instalar KVM


a) Para distribuciones Debian 8.x
$ sudo apt-get install kvm qemu-kvm libvirt-bin virtinst

b) Para distribuciones Debian 9.x


$ sudo apt-get install kvm qemu-kvm libvirt-daemon libvirt-daemon-system
virtinst

5) Agregamos usuario de administración de la virtualizacion


Para agregar al usuario que queremos que use la virtualización. Escribimos
en la consola:

$ sudo adduser <usuario> libvirt


Escuela de la Gestión Pública Plurinacional
Diplomado en Software Libre GNU/Linux

Ejemplo:
$ sudo adduser freddy libvirt

$ sudo adduser <usuario> kvm


Ejemplo:
$ sudo adduser freddy kvm

virt-manager

virt-manager, también conocido como un Administrador de máquina virtual es una


herramienta gráfica para crear y administrar los huéspedes virtualizados.

Su instalación:

$ sudo apt-get install virt-manager

CREACIÓN DE MAQUINA VIRTUAL POR CONSOLA

Primera parte:

Iniciamos las variables

ISO_PATH=/home/freddy/INSTALL/debian-9.4.0-amd64-xfce-CD-1.iso
KVM_HOSTNAME=demo
KVM_RAM=512
KVM_CPU=1
KVM_DISCO=5
KVM_PATH=/home/freddy/mq_virtuales/cli-01.img

Segunda Parte:

Ejecutamos las instrucciones y creamos la maquina virtual

$ sudo virt-install --connect=qemu:///system --


name=${KVM_HOSTNAME} --ram=${KVM_RAM} --vcpus=${KVM_CPU} --check-
Escuela de la Gestión Pública Plurinacional
Diplomado en Software Libre GNU/Linux

cpu --disk path=${KVM_PATH},size=${KVM_DISCO},sparse=true --


cdrom=${ISO_PATH} --vnc --noautoconsole --os-type=linux --os-
variant=debianwheezy --accelerate --network bridge=br0 --hvm --
autostart

CREAR MAQUINA VIRTUAL POR EN ENTORNO GRAFICO


Escuela de la Gestión Pública Plurinacional
Diplomado en Software Libre GNU/Linux
Escuela de la Gestión Pública Plurinacional
Diplomado en Software Libre GNU/Linux

Bibliografía

https://wiki.debian.org/es/KVM
https://wiki.debian.org/es/KVM
http://www.linux-kvm.org/page/Main_Page

S-ar putea să vă placă și