Virtualización · 6 min read · Jan 07, 2026

Virtualización Con KVM En Un Servidor Fedora 17

Virtualización Con KVM En Un Servidor Fedora 17

Versión 1.0
Autor: Falko Timme
Sígueme en Twitter

Esta guía explica cómo puedes instalar y usar KVM para crear y ejecutar máquinas virtuales en un servidor Fedora 17. Te mostraré cómo crear máquinas virtuales basadas en imágenes y también máquinas virtuales que utilizan un volumen lógico (LVM). KVM es la abreviatura de Máquina Virtual Basada en el Núcleo y hace uso de la virtualización de hardware, es decir, necesitas una CPU que soporte la virtualización de hardware, por ejemplo, Intel VT o AMD-V.

¡No ofrezco ninguna garantía de que esto funcione para ti!

1 Nota Preliminar

Estoy usando un servidor Fedora 17 con el nombre de host server1.example.com y la dirección IP 192.168.0.100 aquí como mi host KVM.

Tenía SELinux desactivado en mi sistema Fedora 17. No lo probé con SELinux activado; podría funcionar, pero si no, es mejor que apagues SELinux también:

vi /etc/selinux/config

Establece SELINUX=disabled…

| # Este archivo controla el estado de SELinux en el sistema. # SELINUX= puede tomar uno de estos tres valores: # enforcing - La política de seguridad de SELinux se aplica. # permissive - SELinux imprime advertencias en lugar de aplicar. # disabled - No se carga ninguna política de SELinux. SELINUX=disabled # SELINUXTYPE= puede tomar uno de estos dos valores: # targeted - Los procesos objetivo están protegidos, # mls - Protección de Seguridad de Múltiples Niveles. SELINUXTYPE=targeted |

… y reinicia:

reboot

También necesitamos un sistema de escritorio donde instalemos virt-manager para que podamos conectarnos a la consola gráfica de las máquinas virtuales que instalamos. Estoy usando un escritorio Fedora 17 aquí.

2 Instalando KVM

Host KVM Fedora 17:

Primero verifica si tu CPU soporta la virtualización de hardware; si este es el caso, el comando

egrep '(vmx|svm)' --color=always /proc/cpuinfo

debe mostrar algo, por ejemplo, así:

[root@server1 ~]# egrep '(vmx|svm)' --color=always /proc/cpuinfo  
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall  
 nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse  
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall  
 nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse  
[root@server1 ~]#

Si no se muestra nada, entonces tu procesador no soporta la virtualización de hardware, y debes detenerte aquí.

Ahora importamos las claves GPG para los paquetes de software:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Para instalar KVM y virtinst (una herramienta para crear máquinas virtuales), ejecutamos

yum install kvm libvirt python-virtinst qemu-kvm

Crea los enlaces de inicio del sistema para el daemon de libvirt y arráncalo:

systemctl enable libvirtd.service  
systemctl start libvirtd.service

Para verificar si KVM se ha instalado correctamente, ejecuta

virsh -c qemu:///system list

Debería mostrar algo como esto:

[root@server1 ~]# virsh -c qemu:///system list  
 Id Name                 State  
----------------------------------  
  
[root@server1 ~]#

Si muestra un error en su lugar, entonces algo salió mal.

A continuación, necesitamos configurar un puente de red en nuestro servidor para que nuestras máquinas virtuales puedan ser accedidas desde otros hosts como si fueran sistemas físicos en la red.

Para hacer esto, instalamos el paquete bridge-utils…

yum install bridge-utils

… y configuramos un puente.

Desactivo el NetworkManager de Fedora y habilito la red “normal”. NetworkManager es bueno para escritorios donde las conexiones de red pueden cambiar (por ejemplo, LAN vs. WLAN), pero en un servidor generalmente no cambias las conexiones de red:

systemctl disable NetworkManager.service  
systemctl enable network.service  
systemctl restart network.service  
systemctl stop NetworkManager.service

Verifica tu /etc/resolv.conf si enumera todos los servidores de nombres que has configurado previamente:

cat /etc/resolv.conf

Si faltan servidores de nombres, ejecuta

system-config-network

y agrega nuevamente los servidores de nombres que faltan.

A continuación, averigua tu interfaz de red principal ejecutando

ifconfig

En mi caso, se llama em1; esto es importante para asegurarte de editar el archivo de configuración de red correcto; en mi caso /etc/sysconfig/network-scripts/ifcfg-em1.

Para configurar el puente, crea el archivo /etc/sysconfig/network-scripts/ifcfg-br0 (por favor usa los valores DNS1 (más cualquier otra configuración de DNS, si la hay), GATEWAY, IPADDR, NETMASK y SEARCH del archivo /etc/sysconfig/network-scripts/ifcfg-em1):

vi /etc/sysconfig/network-scripts/ifcfg-br0

| DEVICE=br0 TYPE=Bridge BOOTPROTO=static DNS1=8.8.8.8 GATEWAY=192.168.0.1 IPADDR=192.168.0.100 NETMASK=255.255.255.0 ONBOOT=yes DNS2=8.8.4.4 SEARCH="example.com" |

Modifica /etc/sysconfig/network-scripts/ifcfg-em1 de la siguiente manera (comenta BOOTPROTO, DNS1 (y todos los demás servidores DNS, si los hay), GATEWAY, IPADDR, NETMASK y SEARCH, establece NM_CONTROLLED en no, y agrega BRIDGE=br0):

vi /etc/sysconfig/network-scripts/ifcfg-em1

| UUID="e8a818cc-0e23-47b8-88f3-013567828572" NM_CONTROLLED=no #BOOTPROTO=none HWADDR=00:1e:90:f3:f0:02 ONBOOT=yes #IPADDR=192.168.0.100 #NETMASK=255.255.255.0 #DNS2=8.8.4.4 TYPE=Ethernet #GATEWAY=192.168.0.1 #DNS1=8.8.8.8 IPV6INIT=no USERCTL=no PREFIX=24 BRIDGE=br0 |

Luego reinicia el sistema:

reboot

Después del reinicio, ejecuta

ifconfig

Ahora debería mostrar el puente de red (br0):

[root@server1 ~]# ifconfig  
br0: flags=4163  mtu 1500  
        inet 192.168.0.100  netmask 255.255.255.0  broadcast 192.168.0.255  
        inet6 fe80::21e:90ff:fef3:f002  prefixlen 64  scopeid 0x20  
        ether 00:1e:90:f3:f0:02  txqueuelen 0  (Ethernet)  
        RX packets 70  bytes 7511 (7.3 KiB)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 76  bytes 10847 (10.5 KiB)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
em1: flags=4163  mtu 1500  
        ether 00:1e:90:f3:f0:02  txqueuelen 1000  (Ethernet)  
        RX packets 117  bytes 15163 (14.8 KiB)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 92  bytes 12899 (12.5 KiB)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
lo: flags=73  mtu 16436  
        inet 127.0.0.1  netmask 255.0.0.0  
        inet6 ::1  prefixlen 128  scopeid 0x10  
        loop  txqueuelen 0  (Local Loopback)  
        RX packets 0  bytes 0 (0.0 B)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 0  bytes 0 (0.0 B)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
virbr0: flags=4099  mtu 1500  
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255  
        ether ce:18:6f:2a:7f:0b  txqueuelen 0  (Ethernet)  
        RX packets 0  bytes 0 (0.0 B)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 0  bytes 0 (0.0 B)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
[root@server1 ~]#

3 Instalando virt-viewer O virt-manager En Tu Escritorio Fedora 17

Escritorio Fedora 17:

Necesitamos un medio para conectarnos a la consola gráfica de nuestros invitados; podemos usar virt-manager para esto. Supongo que estás usando un escritorio Fedora 17.

Conviértete en root…

su

… y ejecuta…

yum install virt-manager libvirt qemu-system-x86 openssh-askpass

… para instalar virt-manager.

(Si estás usando un escritorio Ubuntu 12.04, puedes instalar virt-manager de la siguiente manera:

sudo apt-get install virt-manager

)

4 Creando Un Invitado Debian Squeeze (Basado En Imágenes) Desde La Línea De Comandos

Host KVM Fedora 17:

Ahora volvamos a nuestro host KVM Fedora 17.

Echa un vistazo a

man virt-install

para aprender cómo usar virt-install.

Crearemos nuestras máquinas virtuales basadas en imágenes en el directorio /var/lib/libvirt/images/ que se creó automáticamente cuando instalamos KVM en el capítulo dos.

Para crear un invitado Debian Squeeze (en modo puente) con el nombre vm10, 512MB de RAM, dos CPUs virtuales y la imagen de disco /var/lib/libvirt/images/vm10.img (con un tamaño de 12GB), inserta el CD de instalación de Debian Squeeze en la unidad de CD y ejecuta

virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /dev/cdrom --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm

Por supuesto, también puedes crear una imagen ISO del CD de instalación de Debian Squeeze (por favor, créala en el directorio /var/lib/libvirt/images/ porque más adelante te mostraré cómo crear máquinas virtuales a través de virt-manager desde tu escritorio Fedora, y virt-manager buscará imágenes ISO en el directorio /var/lib/libvirt/images/)…

dd if=/dev/cdrom of=/var/lib/libvirt/images/debian-6.0.5-amd64-netinst.iso

… y usar la imagen ISO en el comando virt-install:

virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /var/lib/libvirt/images/debian-6.0.5-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm

La salida es la siguiente:

[root@server1 ~]# virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /var/lib/libvirt/images/debian-6.0.5-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm  


Iniciando la instalación...  
Asignando 'vm10.img'              |  12 GB     00:00  
Creando dominio...                |    0 B     00:00  
La instalación del dominio aún está en progreso. Puedes reconectarte a  
la consola para completar el proceso de instalación.  
[root@server1 ~]#
Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.