Virtualización · 5 min read · Dec 23, 2025
Virtualización con KVM en un servidor OpenSUSE 12.2
Virtualización con KVM en un servidor OpenSUSE 12.2
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 OpenSUSE 12.2. 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 Kernel-based Virtual Machine 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 emito ninguna garantía de que esto funcione para ti!
1 Nota Preliminar
Estoy usando un servidor OpenSUSE 12.2 con el nombre de host server1.example.com y la dirección IP 192.168.0.100 aquí como mi host KVM.
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 OpenSUSE 12.2 aquí.
2 Instalando KVM
Host KVM OpenSUSE 12.2:
Primero verifica si tu CPU soporta la virtualización de hardware - si este es el caso, el comando
egrep '(vmx|svm)' --color=always /proc/cpuinfodebe mostrar algo, por ejemplo, así:
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 rep_good extd_apicid pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch lbrv
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 rep_good extd_apicid pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch lbrv
server1:~ #
Si no se muestra nada, entonces tu procesador no soporta la virtualización de hardware, y debes detenerte aquí.
Para instalar KVM y virtinst (una herramienta para crear máquinas virtuales), ejecutamos
zypper install kvm libvirt libvirt-python qemu virt-managerDesafortunadamente, libvirt-python entra en conflicto con el paquete patterns-openSUSE-minimal_base-conflicts. Por lo tanto, debemos elegir desinstalar ese paquete:
Problema: libvirt-python-0.9.11.4-1.2.1.x86_64 requiere python = 2.7, pero este requisito no puede ser proporcionado
desinstaladores: python-2.7.3-3.6.1.x86_64[openSUSE-12.2-1.6]
python-2.7.3-3.6.1.i586[repo-oss]
python-2.7.3-3.6.1.x86_64[repo-oss]
Solución 1: Se realizarán las siguientes acciones:
no instalar libvirt-python-0.9.11.4-1.2.1.x86_64
no instalar virt-manager-0.9.4-1.6.1.x86_64
Solución 2: Se realizarán las siguientes acciones:
no instalar virt-manager-0.9.4-1.6.1.x86_64
no instalar libvirt-python-0.9.11.4-1.2.1.x86_64
Solución 3: desinstalación de patterns-openSUSE-minimal_base-conflicts-12.2-5.5.1.x86_64
Solución 4: romper libvirt-python-0.9.11.4-1.2.1.x86_64 ignorando algunas de sus dependencias
Elige entre las soluciones anteriores por número o cancela [1/2/3/4/c] (c): <– 3
Luego crea los enlaces de inicio del sistema para libvirtd…
systemctl enable libvirtd.service… y comienza el demonio de libvirt:
systemctl start libvirtd.servicePara verificar si KVM se ha instalado correctamente, ejecuta
virsh -c qemu:///system listDebería mostrar algo como esto:
server1:~ # virsh -c qemu:///system list
WARNING: no socket to connect to
Id Name State
———————————-
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…
zypper install bridge-utils… y configuramos un puente.
Para configurar el puente, crea el archivo /etc/sysconfig/network/ifcfg-br0 de la siguiente manera (asegúrate de usar la configuración IPADDR del archivo /etc/sysconfig/network/ifcfg-eth0):
vi /etc/sysconfig/network/ifcfg-br0| STARTMODE='auto' BOOTPROTO='static' IPADDR='192.168.0.100/24' MTU='' NETMASK='' NETWORK='' BROADCAST='' USERCONTROL=no NAME='Bridge 0' NM_CONTROLLED=no BRIDGE='yes' BRIDGE_PORTS='eth0' BRIDGE_AGEINGTIME='300' BRIDGE_FORWARDDELAY='0' BRIDGE_HELLOTIME='2' BRIDGE_MAXAGE='20' BRIDGE_PATHCOSTS='19' BRIDGE_PORTPRIORITIES= BRIDGE_PRIORITY= BRIDGE_STP='on' |
(Si recibes el mensaje No tienes un paquete binario vim válido instalado. Por favor instala “vim”, “vim-enhanced” o “gvim”., por favor ejecuta
zypper install vimpara instalar vi y vuelve a intentarlo.)
Modifica /etc/sysconfig/network/ifcfg-eth0 de la siguiente manera (configura IPADDR a 0.0.0.0 y cambia STARTMODE a hotplug):
vi /etc/sysconfig/network/ifcfg-eth0| BOOTPROTO='static' BROADCAST='' ETHTOOL_OPTIONS='' IPADDR='0.0.0.0' MTU='' NAME='MCP77 Ethernet' NETMASK='' NETWORK='' REMOTE_IPADDR='' STARTMODE='hotplug' USERCONTROL='no' |
Luego reinicia la red:
systemctl restart network.serviceDespués, ejecuta
ifconfigAhora debería mostrar el puente de red (br0):
server1:~ # ifconfig
br0 Link encap:Ethernet HWaddr 00:1E:90:F3:F0:02
inet addr:192.168.0.100 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::21e:90ff:fef3:f002/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:92 errors:0 dropped:0 overruns:0 frame:0
TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:12716 (12.4 Kb) TX bytes:5961 (5.8 Kb)
eth0 Link encap:Ethernet HWaddr 00:1E:90:F3:F0:02
inet6 addr: fe80::21e:90ff:fef3:f002/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:131711 errors:0 dropped:0 overruns:0 frame:0
TX packets:80954 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:185764801 (177.1 Mb) TX bytes:6374023 (6.0 Mb)
Interrupt:41 Base address:0x8000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:860 (860.0 b) TX bytes:860 (860.0 b)
server1:~ #
3 Instalando virt-manager en tu escritorio OpenSUSE 12.1
Escritorio OpenSUSE 12.2:
Necesitamos un medio para conectarnos a la consola gráfica de nuestros invitados - podemos usar virt-manager para esto. Asumo que estás usando un escritorio OpenSUSE 12.2.
Conviértete en root…
su… y ejecuta…
zypper install virt-manager libvirt… para instalar virt-manager.
(Si estás usando un escritorio Ubuntu 11.10, puedes instalar virt-manager de la siguiente manera:
sudo apt-get install virt-manager)
4 Creando un invitado Debian Squeeze (basado en imagen)
Host KVM OpenSUSE 12.2:
Ahora volvamos a nuestro host KVM OpenSUSE 12.2.
Echa un vistazo a
virt-install --help para aprender cómo usarlo.
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 Netinstall 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 --hvmPor supuesto, también puedes crear una imagen ISO del CD de instalación Netinstall 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 OpenSUSE 12.2, 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.0-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.0-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvmLa salida es la siguiente:
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.0-amd64-netinst.iso –vnc –noautoconsole –os-type linux –os-variant debiansqueeze –accelerate –network=bridge:br0 –hvm
WARNING: no socket to connect to
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.
server1:~ #
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.