Herramientas de usuario

Herramientas del sitio


servidores:virtualizacion:kvm

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
servidores:virtualizacion:kvm [2012/04/27 12:39]
fmolinuevo [Incrementar el tamaño de discos virtuales]
servidores:virtualizacion:kvm [2017/02/27 14:04] (actual)
fmolinuevo [Windows: apagado automático]
Línea 7: Línea 7:
 La tecnología de virtualización (VT, virtualization technology) es una serie de características de los procesadores para mejorar el rendimiento de las máquinas virtuales (VM, virtual machine). Se trata de un set de instrucciones que descargan en los propios microprocesadores algunas tareas para compartir los recursos físicos entre las VMs. La tecnología de virtualización (VT, virtualization technology) es una serie de características de los procesadores para mejorar el rendimiento de las máquinas virtuales (VM, virtual machine). Se trata de un set de instrucciones que descargan en los propios microprocesadores algunas tareas para compartir los recursos físicos entre las VMs.
  
-KVM es un sistema de virtualización que aprovecha esas características de virtualización de los procesadores x86, tanto de AMD como de Intel. Permite virtualizar diversos sistemas operativos, entre los que se cuentan GNU/Linux, FreeBSD, OpenBSD, NetBSD, Windows XP, Windows 7, Windows Server ​2003/2008, y otros.+KVM es un sistema de virtualización que aprovecha esas características de virtualización de los procesadores x86, tanto de AMD como de Intel. Permite virtualizar diversos sistemas operativos, entre los que se cuentan GNU/Linux, FreeBSD, OpenBSD, NetBSD, Windows XP, Windows 7, Windows Server 2008/2012, y otros.
  
-Necesita algunos módulos en el kernel de Linux, pero que ya vienen por defecto en la rama estable. Utiliza algunos utilitarios y sistemas de Qemu, con el que está muy relacionado,​ y permite con una sola línea de comandos crear máquinas virtuales. A través de libvirt se puede tener una interfaz gráfica para manejarlo.+Necesita algunos módulos en el kernel de Linux, pero que ya vienen por defecto en la rama estable. Utiliza algunos utilitarios y sistemas de Qemu, con el que está muy relacionado,​ y permite con una sola línea de comandos crear máquinas virtuales. A través de libvirt ​y virt-manager ​se puede tener una interfaz gráfica para manejarlo.
  
 ===== Comenzando la configuración ===== ===== Comenzando la configuración =====
Línea 29: Línea 29:
 Puede ocurrir que el motherboard o el microprocesador no soporten virtualización;​ en este caso, no se podrá usar KVM. Puede ocurrir que el motherboard o el microprocesador no soporten virtualización;​ en este caso, no se podrá usar KVM.
  
-==== Bridge ====+===== Bridge ​=====
  
 Se debe configurar un bridge para simplificar el acceso de las VMs a la red local. Se debe configurar un bridge para simplificar el acceso de las VMs a la red local.
  
 Para configurar la interfaz de red bridge, [[https://​doc.fmsistemas.com/​doku.php?​id=tecnica:​anotaciones_tecnicas#​qemu_con_-net_tap_notar_las_diferentes_mac_address|seguir los pasos descritos para Qemu]]. Para configurar la interfaz de red bridge, [[https://​doc.fmsistemas.com/​doku.php?​id=tecnica:​anotaciones_tecnicas#​qemu_con_-net_tap_notar_las_diferentes_mac_address|seguir los pasos descritos para Qemu]].
 +
 +En los Debian más nuevos, se debe revisar el script en /etc/kvm que levanta las interfaces TAP, y eventualmente reemplazarlo por:<​code>​
 +#! /bin/sh
 +# Script to bring a network (tap) device for qemu-kvm up
 +# The idea is to add the tap device to the same bridge
 +# as we have default routing to.
 +
 +switch=br0
 +
 +/​sbin/​ifconfig $1 0.0.0.0 up
 +
 +/​usr/​sbin/​brctl addif $switch $1
 +</​code>​
 +
 +En caso contrario, los guests no tendrán conectividad.
 +
 +Además, quizá haya que configurar el desactivado de IPv6 en sysctl.conf:<​code>​
 +net.bridge.bridge-nf-call-ip6tables = 0
 +net.bridge.bridge-nf-call-iptables = 0
 +net.bridge.bridge-nf-call-arptables = 0
 +net.bridge.bridge-nf-filter-vlan-tagged = 0
 +</​code>​
 +
 +**//​Nota//​**:​ según la configuración del host, puede ser necesario o no realizar algunos pasos de los indicados previamente.
  
 Luego, para tener acceso en forma transparente desde las VMs, se debe configurar el host para actuar como gateway: Luego, para tener acceso en forma transparente desde las VMs, se debe configurar el host para actuar como gateway:
Línea 44: Línea 68:
   qemu-system-x86_64 -hda dsrv01.qcow2 -net nic,​macaddr=00:​16:​3E:​11:​12:​11 -net tap,​script=/​etc/​kvm/​kvm-ifup   qemu-system-x86_64 -hda dsrv01.qcow2 -net nic,​macaddr=00:​16:​3E:​11:​12:​11 -net tap,​script=/​etc/​kvm/​kvm-ifup
  
-==== Incrementar el tamaño de discos virtuales ====+===== Incrementar el tamaño de discos virtuales ​=====
  
 Tiene que ser una imagen raw o una unidad LVM. Los otros formatos no pueden incrementarse. Con la unidad LVM se procede de similar manera, sólo que se redimensiona la unidad primero y luego se siguen los pasos para redimensionar el disco internamente. El procedimiento sirve incluso si el sistema operativo guest es Windows. Tiene que ser una imagen raw o una unidad LVM. Los otros formatos no pueden incrementarse. Con la unidad LVM se procede de similar manera, sólo que se redimensiona la unidad primero y luego se siguen los pasos para redimensionar el disco internamente. El procedimiento sirve incluso si el sistema operativo guest es Windows.
Línea 61: Línea 85:
   - Finalmente, iniciar el sistema operativo guest que estaba en el disco redimensionado para ver si todo quedó correcto. En el caso de Windows, realizará varios reinicios, primero luego de realizar un checkdisk y seguramente luego de reconocer el nuevo tamaño de disco lo hará nuevamente.   - Finalmente, iniciar el sistema operativo guest que estaba en el disco redimensionado para ver si todo quedó correcto. En el caso de Windows, realizará varios reinicios, primero luego de realizar un checkdisk y seguramente luego de reconocer el nuevo tamaño de disco lo hará nuevamente.
  
-==== Agregado de dispositivos al vuelo ====+ 
 +===== Reducir el tamaño de discos virtuales ===== 
 + 
 +  - Primero se debe reducir el tamaño del sistema de archivos de la última partición, para dejar lugar a la reducción del disco. 
 +  - Para evitar errores de cálculo, quizá sea buena idea reducir un poco más el tamaño del sistema de archivos, que lo que realmente sea necesario para reducir el disco. Después se puede aumentar su tamaño otra vez si es necesario.  
 +  - Por ejemplo, si un disco de 120GB quiere ser reducido a 30GB, utilizar el parámetro **resize** de qemu-img:<​code>​ 
 +qemu-img resize imagen.raw 30G</​code>​ 
 +  - Finalmente, si se desea se puede convertir otra vez ese disco a qcow2 
 + 
 +===== Montar discos RAW ===== 
 + 
 +  - Primero se debe ver qué particiones hay con el utilitario kpartx:<​code>​ 
 +kpartx -l discovirtual.raw</​code>​ Cada partición tendrá un nombre y un número de bloque donde comienza. Por ejemplo, si es un particionamiento compatible con DOS (deprecated),​ la primer partición comenzará en un bloque 63 en general. Si es más moderno comenzará en 2048. 
 +  - Ese número de bloques del comienzo de la partición debe ser multiplicado por 512 bytes, dando así el offset que se debe usar para montar. Por ejemplo, si se desea montar la partición 2 de una unidad que tiene un Windows 8.1, el número de bloques donde comienza la segunda puede ser algo como **718848**. Multiplicando este valor por 512 bytes da **368050176**. Este valor se usará en el comando mount, en el parámetro offset 
 +  - Entonces, para montar esa partición considerando los números de ejemplo anteriores:<​code>​ 
 +mount -o ro,​loop,​offset=368050176 win8.raw /​mnt/​win8</​code>​ 
 + 
 +//Muy importante: se debe **recordar desmontar** esa partición **antes** de volver a iniciar la máquina virtual// 
 + 
 +===== Agregado de dispositivos al vuelo =====
  
 Para que el agregado de dispositivos PCI funcione, en el guest se deben cargar los siguientes módulos: Para que el agregado de dispositivos PCI funcione, en el guest se deben cargar los siguientes módulos:
Línea 87: Línea 130:
   change ide1-cd0 /​kvm/​isos/​dsl-4.4.10.iso   change ide1-cd0 /​kvm/​isos/​dsl-4.4.10.iso
  
-==== Snapshots (qcow2) ====+===== Snapshots (qcow2) ​=====
  
 Crear snapshot: Crear snapshot:
Línea 105: Línea 148:
    ​kvm-img snapshot -a win200301-20120317-1037 /​datos/​kvm/​imgs/​win200301.qcow2    ​kvm-img snapshot -a win200301-20120317-1037 /​datos/​kvm/​imgs/​win200301.qcow2
       ​       ​
 +===== Direcciones IP externas en las VMs =====
 +
 +Si es necesario usar direcciones IP externas en las máquinas virtuales, se debe configurar en el Shorewall del host el servicio de proxyarp, según se indica en http://​shorewall.net/​ProxyARP.htm
 +
 +En la configuración en que lo probamos, las VMs se encuentran sobre una interfaz interna, br0, hay una conexión a Internet con IP fija en eth1, y las VMs tienen cada una su propia IP externa dentro de la misma red que la eth1 del host.
 +
 +Si se necesita que las VMs tengan además una dirección IP interna, es decir, si es necesario armar una intranet detrás del host y firewall, esas interfaces internas deben ser configuradas sin un gateway interno, o bien configurar como gateway por defecto el gateway externo. Esto para lograr que las conexiones de salida sean ruteadas por la interfaz externa, en vez de por la interfaz interna.
 +
 +===== Tips =====
 +
 +==== Windows: apagado automático ====
 +
 +  - Inicio/​Ejecutar:<​code>​
 +regedit</​code>​
 +  - Cambiar o agregar la siguiente variable asignándole valor 1:<​code>​
 +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows]
 +"​ShutdownWarningDialogTimeout"​=dword:​00000001
 +</​code>​ Y cerrar el editor de la registry
 +  - Inicio/​Ejecutar:<​code>​
 +gpedit.msc</​code>​
 +  - Ingresar a las siguientes ramas:<​code>​
 +Directiva de equipo local -> Configuracion del equipo -> Configuración de Windows -> Configuración de seguridad -> Directivas locales -> Opciones de seguridad</​code>​
 +  - Allí activar la opción "​Apagado:​ permitir apagar el sistema sin tener que iniciar sesión"​
 +
 +En sistemas como Windows Server 2008 R2 también se debe deshabilitar el "​Rastreador de eventos (Event Tracker)"​ que es el encargado de preguntar el motivo del apagado.
 +
 +  - Ingresar a las siguientes ramas:<​code>​
 +Directiva de equipo local -> Configuracion del equipo -> Plantillas administrativas -> Sistema</​code>​
 +  - Deshabilitar las siguientes configuraciones:<​code>​
 +"​Activar la caracteristica Datos de estado del rastrador de eventos de apagado"​
 +"​Mostrar rastreador de eventos y apagado"</​code>​
 +
 +
  
  
-==== Bibliografía ====+===== Bibliografía ​=====
  
   * http://​www.linux-kvm.org/​page/​Hotadd_pci_devices   * http://​www.linux-kvm.org/​page/​Hotadd_pci_devices
   * http://​www.linux-kvm.org/​page/​Change_cdrom   * http://​www.linux-kvm.org/​page/​Change_cdrom
 +  * http://​shorewall.net/​ProxyARP.htm
  
servidores/virtualizacion/kvm.1335541158.txt.gz · Última modificación: 2012/04/27 12:39 por fmolinuevo