¿Qué es Kvm? Usamos KVM para crear máquinas virtuales en el servidor. Instalación y configuración de un servidor virtual

Hipervisores, virtualización y nube

Análisis del hipervisor KVM

Serie de contenido:

Acerca de esta serie de artículos

Este ciclo comienza con información general sobre los tipos de hipervisores y virtualización de sistemas, y luego analiza las características de los cinco hipervisores, sus procesos de instalación y los problemas de gestión que pueden surgir.

Puede utilizar esta serie de artículos como punto de partida para comprender el papel del hipervisor en la virtualización de la nube o para explorar artículos individuales que le ayudarán a determinar qué hipervisor de la mejor manera posible Adecuado para tareas específicas resueltas en la nube.

Lo que necesitas saber para empezar

La máquina virtual basada en kernel (KVM) es una solución completa de virtualización específica de plataforma para Linux en procesadores x86 con extensiones de virtualización (Intel VT o AMD-V). También está disponible para los invitados soporte limitado de paravirtualización para Linux y Windows en forma de un controlador de red paravirtual.

Actualmente, KVM se comunica con el kernel a través de un módulo de kernel cargable. Se admite una variedad de sistemas operativos invitados, como Linux, BSD, Solaris, Windows, Haiku, ReactOS y AROS Research Operating System. Se puede ejecutar una versión modificada de KVM (qemu) en Mac OS X.

Nota: KVM no realiza ninguna autoemulación; en cambio, un programa que se ejecuta en el espacio del usuario utiliza la interfaz /dev/kvm para configurar el espacio de direcciones del servidor virtual invitado, tomar sus recursos de E/S simulados y asignar su imagen a la imagen del host.

La arquitectura KVM se muestra en la Figura 1.

Figura 1. Arquitectura KVM
Paravirtualización

La paravirtualización es un método de virtualización que proporciona máquinas virtuales. interfaz de software, similar pero no idéntico al hardware subyacente. El propósito de esta interfaz modificada es reducir el tiempo que dedica el sistema operativo invitado a realizar operaciones que entorno virtual mucho más difícil de realizar que en uno no virtualizado.

Hay "ganchos" especiales que permiten a los sistemas huésped y anfitrión solicitar y confirmar la solución de estas complejas tareas que podrían realizarse en un entorno virtual, pero a un ritmo mucho más lento.

En la arquitectura KVM, la máquina virtual se ejecuta como un proceso normal de Linux, programado planificador estándar Linux. De hecho, cada procesador virtual aparece como un proceso normal de Linux. Esto permite que KVM aproveche todas las características del kernel de Linux.

La emulación del dispositivo está controlada por una versión modificada de qemu, que proporciona emulación del BIOS, bus PCI, bus USB y conjunto estándar dispositivos como controladores de disco IDE y SCSI, tarjetas de red, etc.

Funcionalidad

Las características principales de KVM se enumeran a continuación.

Seguridad

Debido a que la máquina virtual se implementa como un proceso de Linux, utiliza el modelo de seguridad estándar de Linux para aislar y administrar recursos. Con SELinux (Linux con seguridad mejorada), el kernel de Linux agrega controles de acceso obligatorios, seguridad en capas y multicapa y administra la política de seguridad. SELinux proporciona un estricto aislamiento de recursos y limita la movilidad de los procesos que se ejecutan en el kernel de Linux.

El proyecto SVirt es un esfuerzo comunitario para integrar funciones de seguridad y virtualización de control de acceso obligatorio (MAC) en Basado en Linux(KVM): se basa en SELinux para proporcionar una infraestructura que permite a un administrador definir políticas de aislamiento. maquinas virtuales. SVirt está diseñado para garantizar que los recursos de la máquina virtual no sean accesibles a ningún otro proceso (o máquina virtual); el administrador puede ampliar esta política definiendo permisos granulares; por ejemplo, para que un grupo de máquinas virtuales comparta los mismos recursos.

Gestión de la memoria

KVM hereda potentes funciones de gestión de memoria de Linux. La memoria de la máquina virtual se almacena como la memoria de cualquier otro proceso de Linux y se puede intercambiar, copiar en páginas grandes para mejorar el rendimiento, compartir o almacenar en un archivo en el disco. Soporte para tecnología NUMA (Acceso a memoria no uniforme, arquitectura de memoria para sistemas multiprocesador) permite que las máquinas virtuales accedan de manera eficiente a grandes cantidades de memoria.

Soportes KVM últimas características Virtualización de memoria de fabricantes de procesadores, en particular Intel Extended Page Table (EPT) y AMD Rapid Virtualization Indexing (RVI), para minimizar la carga del procesador y lograr un alto rendimiento.

El uso compartido de páginas de memoria se admite mediante la función del kernel Kernel Same-page Merging (KSM). KSM escanea la memoria de cada máquina virtual y, si algunas páginas de memoria de las máquinas virtuales son idénticas, las combina en una sola página, que se vuelve común para estas máquinas virtuales y se almacena en una sola copia. Si sistema de invitados tratando de cambiar esto pagina general, le dan su propia copia.

Almacenamiento de datos

KVM puede utilizar cualquier medio compatible con Linux para almacenar imágenes de máquinas virtuales, incluidos discos IDE, SCSI y SATA locales, almacenamiento conectado a la red (NAS), incluidos NFS y SAMBA/CIFS, o SAN con soporte para iSCSI y Fibre Channel. Se pueden utilizar E/S de subprocesos múltiples para mejorar el rendimiento y la redundancia del almacenamiento.

Nuevamente, dado que KVM es parte del kernel de Linux, se puede utilizar una infraestructura de almacenamiento confiable y probada, con el soporte de todos los proveedores líderes; Su variedad de funciones de almacenamiento ha sido probada en muchas instalaciones de producción.

KVM admite imágenes de máquinas virtuales en distribución sistemas de archivos, como Global Sistema de archivos(GFS2) para que puedan compartirse entre varios hosts o agregarse mediante volúmenes lógicos. Apoyo sintonia FINA (aprovisionamiento ligero) de imágenes de disco le permite optimizar el uso de los recursos de almacenamiento de datos, sin asignarlos todos a la vez por adelantado, sino solo cuando la máquina virtual lo requiera. El formato de disco propietario de KVM, QCOW2, admite instantáneas y proporciona múltiples niveles de instantáneas, compresión y cifrado.

Migración en vivo

KVM admite la migración en vivo, lo que permite que las máquinas virtuales en ejecución se muevan entre hosts físicos sin interrumpir el servicio. La migración en vivo es transparente para los usuarios: la máquina virtual permanece encendida, las conexiones de red permanecen activas y las aplicaciones del usuario continúan ejecutándose mientras la máquina virtual se traslada al nuevo servidor físico.

Además de la migración en vivo, KVM admite guardar una copia del estado actual de la máquina virtual en el disco, lo que le permite almacenarla y restaurarla más tarde.

Controladores de dispositivos

KVM admite la virtualización híbrida cuando se instalan controladores paravirtualizados en el sistema operativo invitado, lo que permite que las máquinas virtuales utilicen una interfaz de E/S optimizada en lugar de dispositivos emulados, lo que proporciona rendimiento alto E/S para dispositivos de red y de bloque.

El hipervisor KVM utiliza el estándar VirtIO desarrollado por IBM y sombrero rojo en colaboración con la comunidad Linux para controladores paravirtualizados; Es una interfaz independiente del hipervisor para crear controladores de dispositivos, lo que permite que varios hipervisores compartan el mismo conjunto de controladores de dispositivos, mejorando la interoperabilidad entre invitados.

Los controladores VirtIO se incluyen en las versiones modernas del kernel de Linux (la última es 2.6.25), se incluyen en Red Hat Enterprise Linux 4.8+ y 5.3+ y también están disponibles para Red Hat Enterprise Linux 3. Red Hat ha desarrollado controladores VirtIO para Sistemas operativos invitados Microsoft Windows que optimizan la red y operaciones de disco E/S; Estos controladores están certificados según el programa de certificación de Microsoft. Hardware de Windows Laboratorios de calidad (WHQL).

Rendimiento y escalabilidad

KVM hereda el rendimiento y la escalabilidad de Linux, soportando máquinas virtuales con 16 procesadores virtuales y 256 GB RAM, así como sistemas host con 256 núcleos y más de 1 TB de RAM. Puede proporcionar:

  • Rendimiento del 95 al 135 % en comparación con bare metal en aplicaciones empresariales reales como SAP, Oracle, LAMP y Microsoft Exchange;
  • más de un millón de mensajes por segundo y menos de 200 microsegundos de latencia en máquinas virtuales que se ejecutan en un servidor estándar;
  • Niveles máximos de consolidación con más de 600 máquinas virtuales ejecutando aplicaciones empresariales en un único servidor.

Esto significa que KVM puede virtualizar las cargas de trabajo más exigentes.

Implementación de virtualización

La implementación de KVM es un proceso bastante complejo, lleno de requisitos de configuración especiales, así que consulte la sección para obtener más información.

Administrar máquinas virtuales

Hay varios administradores de máquinas virtuales. Entre ellos:

  • Gerente Virtual de la Univención;
  • qemu/KVM: se ejecuta directamente desde la línea de comando en la máquina KVM;
  • Virsh: un shell mínimo para gestionar máquinas virtuales;
  • Virtual Machine Manager: también conocido como virt-manager, una interfaz de usuario para administrar máquinas virtuales.

Seleccionando KVM

Ventajas:

  • a pesar de que KVM es un hipervisor relativamente joven, es un módulo compacto que, en combinación con el kernel de Linux, proporciona facilidad de implementación manteniendo el soporte para los pesos pesados ​​de Linux;
  • KVM es flexible; Debido a que los sistemas operativos invitados se comunican con un hipervisor integrado en el kernel de Linux, pueden acceder al hardware directamente en todos los casos sin necesidad de modificar el sistema operativo virtualizado. Esto hace que KVM sea más solución rápida para máquinas virtuales;
  • Los parches KVM son compatibles con el kernel de Linux. KVM está implementado en el propio kernel de Linux, lo que facilita la gestión de los procesos de virtualización.

Contras:

  • No existen herramientas poderosas para administrar el servidor y las máquinas virtuales KVM;
  • KVM necesita mejorar el soporte para redes virtuales y sistemas de almacenamiento virtual, fortalecer la seguridad, mejorar la confiabilidad y la tolerancia a fallas, la administración de energía, el soporte para sistemas HPC/en tiempo real, la escalabilidad del procesador virtual, la compatibilidad entre proveedores, la portabilidad de VM y la creación de un ecosistema de servicios en la nube.

Original: Bienvenido a la virtualización KVM: introducción completa
Autor: Igor Ljubuncic
Fecha de publicación: 4 de mayo de 2011
Traducción: A. Krivoshey
Fecha de traducción: julio de 2011

Si ha leído mis artículos sobre virtualización, sabrá que solía usar principalmente VMware y VirtualBox, pero ahora es el momento de probar algo nuevo. Hoy me gustaría presentarles una nueva serie de notas sobre KVM. A continuación, quizás cambie a Xen o algún otro sistema, pero ahora el héroe de nuestro tema es KVM.
En esta guía hablaremos sobre la tecnología KVM (Kernel-based Virtual Machine), que fue creada por RedHat y que es de código abierto. código fuente, ser alternativa gratuita sus homólogos comerciales. Aprenderemos cómo descargar, instalar y configurar KVM, qué herramientas tiene para administrar máquinas virtuales, cómo trabajar con KVM en la línea de comandos, escribir scripts y mucho más. Además, tocaremos la creación de configuraciones avanzadas (incluida la red), así como otras cosas interesantes. Ahora comencemos.

Glosario KVM

Primero, hablemos un poco sobre cómo funciona KVM. Nada especial, solo pequeña introducción para que conozcas la terminología básica.
KVM utiliza tecnología de virtualización de hardware respaldada por procesadores modernos de Intel y AMD y conocidos como Intel-VT y AMD-V. Usando un módulo de kernel cargado en la memoria, KVM, con la ayuda de un controlador en modo de usuario (que es un controlador modificado de QEMU), emula una capa de hardware sobre la cual se pueden crear y ejecutar máquinas virtuales. KVM puede funcionar sin virtualización de hardware (si no es compatible con el procesador), pero en este caso funciona en modo de emulación pura usando QUEMU y el rendimiento de las máquinas virtuales se reduce considerablemente.
Para Gestión KVM Puede utilizar una utilidad gráfica similar a los productos de VMware y VirtualBox, así como la línea de comandos.
La GUI más popular es Virtual Machine Manager (VMM), creada por RedHat. También se le conoce por el nombre de su paquete como virt-manager y contiene varias utilidades, incluidas virt-install, virt-clone, virt-image y virt-viewer, para crear, clonar, instalar y visualizar máquinas virtuales. VMM también admite máquinas virtuales Xen.
La interfaz básica de línea de comandos KVM la proporciona la utilidad virsh. EN ciertos casos puede utilizar utilidades de soporte como virt-install para crear sus máquinas virtuales. Ubuntu tiene una utilidad especial ubuntu-vm-builder, desarrollada por Canonical, con la que puedes crear compilaciones de Ubuntu.
Si quieres saber más sobre KVM, información adicional se puede encontrar en las siguientes direcciones:

Ventajas y desventajas de KVM

¿Necesitas KVM? Depende de para qué lo necesites.
Si no ha utilizado máquinas virtuales antes, o las ha iniciado varias veces sólo por diversión, dominar KVM puede resultar difícil. Este programa se controla principalmente desde la línea de comandos y no es tan fácil de usar como VMware o VirtualBox. Podemos decir que en términos de interfaz gráfica, KVM está varios años por detrás de sus competidores, aunque en realidad no es al menos inferior a ellos en términos de capacidades. Las capacidades de KVM tienen mayor demanda cuando se utilizan con fines comerciales en un entorno empresarial.
Además, si su procesador no admite la virtualización de hardware, KVM funcionará en un modo de emulación de software muy lento e ineficiente. Además, se sabe que KVM entra en conflicto con VirtualBox, pero se dedicará una nota aparte a este caso.
Con base en lo anterior, podemos concluir que KVM es más adecuado para personas que se dedican a la virtualización con fines profesionales. Es poco probable que se convierta en su juguete doméstico favorito, pero si decide dedicar un poco de esfuerzo a estudiarlo, los conocimientos adquiridos le permitirán familiarizarse con las tecnologías de virtualización. A diferencia de VMware y VirtualBox, que inicialmente asumen que el usuario trabajará con el programa usando GUI KVM se centra en utilizar la línea de comandos y escribir scripts.
En resumen, podemos decir que las ventajas de KVM radican en el uso de las últimas tecnologías de virtualización, la ausencia de restricciones de licencia de uso, potente interfaz línea de comando. Si su procesador no admite la virtualización de hardware, no querrá escribir scripts y preferirá sistemas más fáciles de administrar como Servidor VMware, ESXi o VirtualBox, entonces KVM no es para ti.

Plataforma de prueba

KVM se puede utilizar en cualquier distribución de Linux. Sin embargo, el principal desarrollador y patrocinador de KVM es RedHat. Por ejemplo, RHEL viene incluido con KVM, por lo que puede encontrarlo en cualquier distribución basada en RedHat, como CentOS, Scientific Linux o Fedora.
Como uso Ubuntu principalmente en casa, probaré KVM en este sistema, instalado en mi computadora portátil HP relativamente nueva, equipada con un procesador i5 con soporte para virtualización de hardware.
En este artículo, te diré cómo instalar KVM en Ubuntu Lucid (LTS) de 64 bits.

Preparándose para la instalación

Primero debe verificar si su procesador admite la virtualización de hardware. Esto se hace usando siguiente comando:

$ egrep -c "(vmx|svm)" /proc/cpuinfo

Si el resultado es un número distinto de cero, todo está bien. Además, debe verificar que la tecnología de virtualización esté activada en el BIOS.
Naturalmente, después de activarlo, deberás reiniciar la máquina para que los cambios surtan efecto. Para comprobarlo, ejecute el comando kvm-ok:

Descarga e instalación de KVM

Para que KVM funcione, necesita instalar los siguientes paquetes (para distribuciones con apt):

$ apt-get instalar qemu-kvm libvirt-bin

$ apt-get install bridge-utils virt-manager python-virtinst

PD Los paquetes pueden tener nombres diferentes en diferentes distribuciones. Por ejemplo, virt-install podría llamarse python-virt-install o python-virtinst. Las dependencias para virt-clone, virt-image y virt-viewer deberían instalarse automáticamente. Al contrario de lo que está escrito en la mayoría de los manuales, servicios públicos del puente La instalación es opcional. Sólo son necesarios si vas a crear puente de red entre tarjetas de red virtuales y físicas. La mayoría de los manuales también indican que la mayoría de las interfaces de redes inalámbricas no funcionan con puentes. Esto puede ser cierto para algún caso particular, pero el puente me funciona bien con adaptadores inalámbricos, así que esperemos que también te funcione.
Recomiendo encarecidamente VMM (virt-manager). Además, es mejor instalar todas las utilidades de soporte, incluidas virt-viewer, virt-install, virt-image y virt-clone.
Y una última cosa. Quizás prefieras ubuntu-vm-builder:

$ apt-get instalar ubuntu-vm-builder

Además, lo más probable es que se instale gran número dependencias, por lo que la descarga puede llevar una cantidad de tiempo significativa.
PD En RedHat use yum install, en SUSE, zypper install.

Conflicto con VirtualBox

Nuevamente expresaré una opinión diferente a la que se expresa en la mayoría de los manuales: KVM y VirtualBox se pueden instalar juntos en el mismo sistema. Pero no podrás ejecutarlos al mismo tiempo. En otras palabras, el módulo del kernel de una de las máquinas virtuales debe descargarse de la RAM. Pero esto no es motivo para rechazar la instalación. Intente ver si funcionan para usted. Si no, este problema se puede solucionar. Más adelante publicaré una guía separada dedicada a solucionar este problema. Ahora tengo ambas máquinas virtuales instaladas y ejecutándose.

Usando KVM

Bueno, ahora la parte más interesante. Comenzaremos a conocer KVM por su interfaz gráfica, que se diferencia poco de sus contrapartes. como la consola VMware y especialmente VirtualBox.

Administrador de máquinas virtuales (VMM)

Cuando inicie el programa por primera vez, verá dos categorías, ambas no conectadas. Estos son enlaces a módulos KVM estándar que aún no funcionan. Para usarlos, haga clic derecho y seleccione "conectar".

Para usarlos, haga clic derecho y seleccione "conectar". Para agregar una nueva conexión, seleccione Archivo > Agregar conexión en el menú. Esto abrirá una ventana en la que puede configurar el tipo de hipervisor y el tipo de conexión. VMM puede utilizar conexiones locales y remotas, incluidas QUEMU/KVM y Xen. Además, se admiten todos los métodos de autenticación.

También puede marcar la casilla de conexión automática. La próxima vez que inicie el programa, estas conexiones estarán listas para usar. Esto parece un entrante. interfaz de vmware Servidor. Sólo por ejemplo:

Kernel vs modo de usuario

Quizás te preguntes, ¿cuál es la diferencia entre normal/predeterminado y modo de usuario? Cuando se utiliza el modo de usuario, la máquina virtual se puede iniciar sin privilegios administrativos, pero su funcionalidad de red será limitada.

Seguimos estudiando VMM

Veamos brevemente las funciones restantes del programa.
La funcionalidad de la red se puede ver o cambiar abriendo Detalles del host. Planeo considerar este tema en detalle en una guía separada. Allí instalaremos utilidades para el puente de red.

De manera similar, puede cambiar los parámetros del subsistema de disco:

Cambiar ajustes preestablecidos

VMM tiene un pequeño conjunto de opciones, cambiando las cuales puede personalizar mejor el programa según sus necesidades. Por ejemplo, puede activar la visualización del icono VMM en la bandeja del sistema, establecer el intervalo de recopilación de estadísticas, activar la recopilación de datos para métricas de disco y red, configurar la captura de teclado, el escalado de la consola, las opciones del sistema de audio, etc.

Después de esto podrás ver más. información detallada sobre la máquina virtual. Por ejemplo, a continuación se muestra el resultado del uso de CPU, disco y red para un invitado de Ubuntu.

El icono de la bandeja del sistema se ve así:

Ahora estamos listos para crear una nueva máquina virtual.

Creando una máquina virtual

Puede crear una máquina virtual desde la línea de comando, pero primero usaremos VMM. El primer paso debe ser intuitivo. Ingrese un nombre y especifique la ubicación del disco de instalación. podría ser como dispositivo local en forma de CD/DVD o Imagen ISO y HTTP o servidor FTP, NFS o PXE.

Usamos medios locales. Ahora necesitas configurar si será un dispositivo físico o una imagen. En nuestro caso, se utiliza ISO. A continuación debe seleccionar el tipo y la versión ISO. Esto no requiere una precisión tan alta, pero la elección correcta mejorará el rendimiento de la máquina virtual.

La cuarta etapa es un disco virtual. Puede crear una nueva imagen o utilizar una existente. Debe seleccionar el tamaño del disco y especificar si la imagen del disco se creará inmediatamente tamaño dado, o su tamaño aumentará dinámicamente según sea necesario. Cabe señalar que asignar todo el espacio para una imagen de disco a la vez mejora el rendimiento y reduce la fragmentación del sistema de archivos.

A continuación prestaremos más atención al subsistema de disco. Sin embargo, tenga en cuenta que cuando se ejecuta en modo de usuario no tendrá permiso de escritura en /var, donde se almacenan las imágenes de forma predeterminada. discos virtuales. Por lo tanto, deberá establecer una ubicación diferente para las imágenes. Este tema se tratará con más detalle en un artículo aparte.
La etapa 5 es la salida de datos resumidos con la capacidad de configurar algunas opciones avanzadas. Aquí puede cambiar el tipo de red, configurar direcciones MAC fijas, seleccionar el tipo de virtualización y la arquitectura de destino. Si está ejecutando en modo de usuario, sus opciones de configuración de red serán limitadas, por ejemplo, no podrá crear puentes entre interfaces de red; Una última cosa: si tu procesador no soporta virtualización de hardware, el campo Virt Type será QUEMU y no será posible cambiarlo a KVM. A continuación veremos las desventajas de trabajar en modo de emulación. Ahora puedes ver cómo se ven las configuraciones típicas de una máquina virtual Ubuntu:

Nuestra máquina está lista para usar.

Configurar una máquina virtual

La consola VM también tiene algunas opciones interesantes. Puede enviar señales al invitado, cambiar entre consolas virtuales, reiniciar o apagar el invitado, clonar, mover, guardar el estado de la máquina virtual, tomar capturas de pantalla, etc. De nuevo todo es igual que los competidores.

A continuación se muestran un par de capturas de pantalla que muestran las opciones para clonar y mover una máquina virtual. En el futuro consideraremos este tema en detalle.

Iniciar una máquina virtual

Ahora viene la parte divertida. A continuación se muestran algunas hermosas capturas de pantalla...
Empecemos con menú de inicio Ubuntu 10.10 Maverick versión de 32 bits:

El escritorio de Puppy Linux es genial como siempre:

Ahora Ubuntu se ejecuta bajo NAT. tenga en cuenta carga baja procesador. Hablaremos de esto más adelante cuando analicemos el modo de emulación.

Se puede cambiar el tamaño de la ventana de la consola para que coincida con la resolución del escritorio invitado. La siguiente captura de pantalla muestra Puppy y Ubuntu uno al lado del otro:

Tenga en cuenta que la carga del sistema es baja. Con este modo de emulación, puede ejecutar varias máquinas virtuales simultáneamente.

Si es necesario, puedes eliminar la máquina virtual junto con todos sus archivos:

línea de comando

Bueno, ahora echemos un vistazo más de cerca a la línea de comando que no nos gusta. Por ejemplo, enumeremos todas las máquinas virtuales disponibles que usan virsh.

$virsh "lista --todos"

A continuación se muestra una secuencia de comandos para crear y ejecutar una máquina virtual usando virt-install.

El comando completo se ve así:

$ virt-install --connect qemu://system -n cachorro -r 512 -f cachorro.img -c lupu-520.iso --vnc --noautoconsole --os-type linux --accelerate --network=network :por defecto

--conectar qemu:///sistema especifica el tipo de hipervisor. La opción del sistema se utiliza cuando se ejecuta una máquina con un kernel básico como superusuario. Cuando se ejecuta como usuario habitual Se utiliza la opción de sesión.
-n cachorro es el nombre único de la máquina virtual. Se puede cambiar usando virsh.
-r 512 establece el tamaño de la RAM.
-F especifica el archivo de imagen del disco. En mi caso es Puppy.img, que creé usando el comando dd.
-do especifica el CD-ROM, que puede ser un dispositivo físico o una imagen ISO.
--vnc crea una consola invitada y la exporta como servidor VNC. Opción --noautoconexión Evita la apertura automática de la consola cuando se inicia la máquina virtual.
--tipo-os especifica el tipo de sistema operativo invitado.
--acelerar Permite que KVM utilice funciones de optimización que mejoran el rendimiento de los invitados.
--red determina el tipo de red. En nuestro caso, se utiliza la conexión predeterminada.

Hay muchas otras funciones que configuran parámetros como el número de núcleos del procesador, direcciones MAC fijas, etc. Todos ellos se describen en detalle en la página de manual. A pesar de la aparente complejidad, el control mediante la línea de comandos se domina con bastante rapidez.

Modo de emulación pura

Ya dije que es terriblemente ineficaz. Ahora confirmemos esto en la práctica. Por ejemplo, en la captura de pantalla siguiente puede ver que el sistema, cuando está en funcionamiento, consume todos los recursos disponibles del procesador, lo que en este caso con un núcleo, representan el 25% de los recursos del procesador físico. Esto significa que cuatro máquinas virtuales cargarán completamente el host de cuatro núcleos.

Además, el rendimiento del sistema de invitados está fuera de toda crítica. Si con la virtualización de hardware habilitada, cargar el Ubuntu invitado me tomó aproximadamente 1 minuto, luego, después de deshabilitarlo, me tomó 20 minutos. Cabe señalar que sin el uso de virtualización de hardware, el rendimiento de QUEMU/KVM es mucho menor que el de sus competidores.

En Ubuntu, se recomienda utilizar el hipervisor KVM (administrador de máquinas virtuales) y la biblioteca libvirt como herramientas de administración del mismo. Libvirt incluye un conjunto de API de software y aplicaciones de usuario para administrar máquinas virtuales (VM) virt-manager (interfaz gráfica, GUI) o virsh (línea de comandos, CLI). Como gerentes alternativos puede utilizar convirt (GUI) o convirt2 (interfaz WEB).

Actualmente, sólo el hipervisor KVM es oficialmente compatible con Ubuntu. Este hipervisor es parte del código del kernel operativo. sistemas linux. A diferencia de Xen, KVM no admite la paravirtualización, lo que significa que para poder utilizarlo, su CPU debe admitir tecnologías VT. Puedes comprobar si tu procesador soporta esta tecnología ejecutando el comando en la terminal:

Si recibe el siguiente mensaje como resultado:

INFORMACIÓN: /dev/kvm existe Se puede utilizar la aceleración KVM

Esto significa que KVM funcionará sin problemas.

Si recibió el siguiente mensaje a la salida:

Su CPU no admite extensiones KVM. NO se puede utilizar la aceleración KVM.

entonces aún podrás usar la máquina virtual, pero será mucho más lenta.

    Instalar sistemas de 64 bits como invitados

    Asigne más de 2 GB de RAM a sistemas invitados

Instalación

Sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

Se trata de una instalación en un servidor sin X, es decir, que no incluye interfaz gráfica. Puedes instalarlo con el comando.

Sudo apt-get install virt-manager

Después de eso, aparecerá el elemento "Administrador de máquina virtual" en el menú y, con un alto grado de probabilidad, todo funcionará. Si aún surge algún problema, deberá leer las instrucciones en la wiki en inglés.

Creando un sistema de invitados

El procedimiento para crear un sistema invitado utilizando la GUI es bastante sencillo.

Pero el modo texto se puede describir.

qcow2

Al crear un sistema utilizando una GUI como disco duro se propone seleccionar un archivo de imagen existente o bloquear un dispositivo, o crear nuevo archivo con datos sin procesar (RAW). Sin embargo, este está lejos de ser el único formato de archivo disponible. De todos los tipos de discos enumerados en man qemu-img, el más flexible y moderno es qcow2. Admite instantáneas, cifrado y compresión. Debe crearse antes de crear un nuevo invitado.

Qemu-img crear -o preallocation=metadatos -f qcow2 qcow2.img 20G

Según el mismo qemu-img, la preasignación de metadatos (-o preallocation=metadata) hace que el disco sea un poco más grande inicialmente, pero proporciona un mejor rendimiento cuando la imagen necesita crecer. De hecho, en este caso, esta opción te permite evitar un error desagradable. Imagen creada Inicialmente ocupa menos de un megabyte de espacio y crece hasta el tamaño especificado según sea necesario. El sistema invitado debería ver inmediatamente este final tamaño especificado, sin embargo, durante la fase de instalación puede ver el tamaño real del archivo. Naturalmente, instale en disco duro Rechazará un tamaño de 200 kB. El error no es específico de Ubuntu; aparece al menos en RHEL.

Además del tipo de imagen, posteriormente puede elegir el método para conectarla: IDE, SCSI o Virtio Disk. El rendimiento del subsistema de disco dependerá de esta elección. No existe una respuesta correcta definitiva; debe elegir según la tarea que se asignará al sistema de invitados. Si el sistema invitado se crea "para mirar", entonces cualquier método servirá. En general, la E/S suele ser el cuello de botella de una máquina virtual, por lo que al crear un sistema muy cargado, este problema debe tratarse de la manera más responsable posible.

KVM (Máquina virtual basada en kernel) es una solución de software que proporciona virtualización en entorno linux en la plataforma x86, que admite la virtualización de hardware en Basado en Intel VERMONT( Tecnología de virtualización) o AMD SVM (máquina virtual segura).

El software KVM consta de un módulo de kernel cargable (llamado kvm.ko) que proporciona servicio basico virtualización, módulo cargable específico del procesador kvm-amd.ko o kvm-intel.ko y componentes en modo de usuario (QEMU modificado). Todos los componentes del software KVM son de código abierto. El componente del kernel necesario para que KVM funcione se ha incluido en el kernel principal de Linux desde la versión 2.6.20 (febrero de 2007). KVM también fue portado a FreeBSD como módulo del kernel. Se está trabajando para incluir las modificaciones necesarias para trabajar con KVM en la rama principal de QEMU.

Una gran cantidad de sistemas operativos invitados funcionan con KVM, incluidos muchos tipos y Versiones de Linux, BSD, Solaris, Windows, Haiku, ReactOS, Plan 9, AROS Research Operating System y OS X. Además, Android 2.2, Minix 3.1.2a, Solaris 10 U3 y Darwin 8.0.1GNU/Hurd (Debian K16), Minix 3.1 .2a, Solaris 10 U3 y Darwin 8.0.1, junto con algunas versiones de los sistemas operativos anteriores, funcionan con algunas restricciones.

La paravirtualización de algunos dispositivos está disponible en los sistemas operativos invitados Linux, OpenBSD, FreeBSD, NetBSD, Plan 9 y Windows. VirtIO API. Esto soporta lo paravirtual tarjetas ethernet, controlador de disco de E/S, dispositivos para modificar la memoria consumida por el invitado, así como gráficos interfaz VGA utilizando controladores SPICE o VMware.

Ambiente

KVM por sí solo no realiza emulación. En cambio, el programa que se ejecuta en el espacio del usuario utiliza la interfaz /dev/kvm para configurar el espacio de direcciones de la máquina virtual invitada y, a través de ella, emula los dispositivos de E/S y el adaptador de vídeo.

KVM permite que las máquinas virtuales utilicen imágenes de disco no modificadas de QEMU, VMware y otros que contienen sistemas operativos. Cada máquina virtual tiene su propia máquina virtual. hardware: tarjetas de red, disco, tarjeta de video y otros dispositivos.

Historia

El software KVM fue creado, desarrollado y mantenido por Qumranet, que fue adquirida por Red Hat por 107 millones de dólares el 4 de septiembre de 2008. Después del acuerdo, KVM (junto con el sistema de gestión de virtualización oVirt) pasó a formar parte de la plataforma de virtualización RHEV. KVM cuenta con el soporte de Paolo Bonzini.

Principio de funcionamiento

Actualmente, KVM se comunica con el kernel a través de un módulo de kernel cargable. Se admite una variedad de sistemas operativos invitados, como Linux, BSD, Solaris, Windows, Haiku, ReactOS y AROS Research Operating System. Se puede ejecutar una versión modificada de KVM (qemu) en Mac OS X. Nota: KVM no realiza ninguna autoemulación; en cambio, un programa que se ejecuta en el espacio del usuario utiliza la interfaz /dev/kvm para configurar el espacio de direcciones del servidor virtual invitado, tomar sus recursos de E/S simulados y asignar su imagen a la imagen del host.

En la arquitectura KVM, la máquina virtual se ejecuta como un proceso normal de Linux, programado por el programador estándar de Linux. De hecho, cada procesador virtual aparece como un proceso normal de Linux. Esto permite que KVM aproveche todas las características del kernel de Linux. La emulación de dispositivos está controlada por una versión modificada de qemu, que proporciona emulación de BIOS, bus PCI, bus USB, así como un conjunto estándar de dispositivos como controladores de disco IDE y SCSI, tarjetas de red, etc.

Funcionalidad

Seguridad

Debido a que la máquina virtual se implementa como un proceso de Linux, utiliza el modelo de seguridad estándar de Linux para aislar y administrar recursos. Con SELinux (Linux con seguridad mejorada), el kernel de Linux agrega controles de acceso obligatorios, seguridad en capas y multicapa y administra la política de seguridad. SELinux proporciona un estricto aislamiento de recursos y limita la movilidad de los procesos que se ejecutan en el kernel de Linux.

El proyecto SVirt, un esfuerzo comunitario para integrar funciones de seguridad de control de acceso obligatorio (MAC) y virtualización basada en Linux (KVM), se basa en SELinux para proporcionar una infraestructura que permita a un administrador definir políticas de aislamiento de máquinas virtuales. SVirt está diseñado para garantizar que los recursos de la máquina virtual no sean accesibles a ningún otro proceso (o máquina virtual); el administrador puede ampliar esta política definiendo permisos granulares; por ejemplo, para que un grupo de máquinas virtuales comparta los mismos recursos.

Gestión de la memoria

KVM hereda potentes funciones de gestión de memoria de Linux. La memoria de la máquina virtual se almacena como la memoria de cualquier otro proceso de Linux y se puede intercambiar, copiar en páginas grandes para mejorar el rendimiento, compartir o almacenar en un archivo en el disco. La compatibilidad con la tecnología NUMA (Acceso a memoria no uniforme, una arquitectura de memoria para sistemas multiprocesador) permite que las máquinas virtuales accedan de manera eficiente a grandes cantidades de memoria.

KVM admite las últimas funciones de virtualización de memoria de los fabricantes de procesadores, como Intel Extended Page Table (EPT) y AMD Rapid Virtualization Indexing (RVI), para minimizar la carga del procesador y lograr un alto rendimiento.

El uso compartido de páginas de memoria se admite mediante la función del kernel Kernel Same-page Merging (KSM). KSM escanea la memoria de cada máquina virtual y, si algunas páginas de memoria de las máquinas virtuales son idénticas, las combina en una sola página, que se vuelve común para estas máquinas virtuales y se almacena en una sola copia. Si un invitado intenta modificar esta página compartida, se le entrega su propia copia.

Almacenamiento de datos

KVM puede utilizar cualquier medio compatible con Linux para almacenar imágenes de máquinas virtuales, incluidos discos IDE, SCSI y SATA locales, almacenamiento conectado a la red (NAS), incluidos NFS y SAMBA/CIFS, o SAN con soporte para iSCSI y Fibre Channel. Se pueden utilizar E/S de subprocesos múltiples para mejorar el rendimiento y la redundancia del almacenamiento.

Nuevamente, dado que KVM es parte del kernel de Linux, se puede utilizar una infraestructura de almacenamiento confiable y probada, con el soporte de todos los proveedores líderes; Su variedad de funciones de almacenamiento ha sido probada en muchas instalaciones de producción.

KVM admite imágenes de máquinas virtuales en sistemas de archivos distribuidos, como Global File System (GFS2), para que puedan compartirse entre varios hosts o mediante volúmenes lógicos. La compatibilidad con el aprovisionamiento ligero de imágenes de disco le permite optimizar el uso de los recursos de almacenamiento de datos, sin asignarlos todos a la vez, sino solo cuando la máquina virtual lo requiera. El formato de disco propietario de KVM, QCOW2, admite instantáneas y proporciona múltiples niveles de instantáneas, compresión y cifrado.

Migración en vivo

KVM admite la migración en vivo, lo que permite que las máquinas virtuales en ejecución se muevan entre hosts físicos sin interrumpir el servicio. La migración en vivo es transparente para los usuarios: la máquina virtual permanece encendida, las conexiones de red permanecen activas y las aplicaciones del usuario continúan ejecutándose mientras la máquina virtual se traslada al nuevo servidor físico.

Además de la migración en vivo, KVM admite guardar una copia del estado actual de la máquina virtual en el disco, lo que le permite almacenarla y restaurarla más tarde.

Controladores de dispositivos

KVM admite la virtualización híbrida cuando se instalan controladores paravirtualizados en el sistema operativo invitado, lo que permite que las máquinas virtuales utilicen una interfaz de E/S optimizada en lugar de dispositivos emulados, lo que proporciona un alto rendimiento de E/S para dispositivos de red y de bloque.

El hipervisor KVM utiliza el estándar VirtIO, desarrollado por IBM y Red Hat junto con la comunidad Linux para controladores paravirtualizados; Es una interfaz independiente del hipervisor para crear controladores de dispositivos, lo que permite que varios hipervisores compartan el mismo conjunto de controladores de dispositivos, mejorando la interoperabilidad entre invitados.

Los controladores VirtIO se incluyen en las versiones modernas del kernel de Linux (la última es 2.6.25), se incluyen en Red Hat Enterprise Linux 4.8+ y 5.3+ y también están disponibles para Red Hat Enterprise Linux 3. Red Hat ha desarrollado controladores VirtIO para Sistemas operativos invitados Microsoft Windows, que optimizan las operaciones de E/S de disco y de red; Estos controladores están certificados por el programa de certificación Microsoft Windows Hardware Quality Labs (WHQL).

Rendimiento y escalabilidad

KVM hereda el rendimiento y la escalabilidad de Linux y admite máquinas virtuales con 16 procesadores virtuales y 256 GB de RAM, así como sistemas host con 256 núcleos y más de 1 TB de RAM. Puede proporcionar:

  • Rendimiento del 95 al 135 % en comparación con bare metal en aplicaciones empresariales reales como SAP, Oracle, LAMP y Microsoft Exchange;
  • más de un millón de mensajes por segundo y menos de 200 microsegundos de latencia en máquinas virtuales que se ejecutan en un servidor estándar;
  • Niveles máximos de consolidación con más de 600 máquinas virtuales ejecutando aplicaciones empresariales en un único servidor.

Esto significa que KVM puede virtualizar las cargas de trabajo más exigentes.

Ajustes

Configuración del Administrador de máquinas virtuales (VMM)

Cuando inicie el programa por primera vez, verá dos categorías, ambas no conectadas. Estos son enlaces a módulos KVM estándar que aún no funcionan. Para usarlos, haga clic derecho y seleccione "conectar".

Para agregar una nueva conexión, seleccione Archivo > Agregar conexión en el menú. Esto abrirá una ventana en la que puede configurar el tipo de hipervisor y el tipo de conexión. VMM puede utilizar conexiones locales y remotas, incluidas QUEMU/KVM y Xen. Además, se admiten todos los métodos de autenticación.

También puede marcar la casilla de conexión automática. La próxima vez que inicie el programa, estas conexiones estarán listas para usar.

Veamos brevemente las funciones restantes del programa.
La funcionalidad de la red se puede ver o cambiar abriendo Detalles del host. Allí instalaremos utilidades para el puente de red.

De manera similar, puede cambiar los parámetros del subsistema de disco:

Creando una máquina virtual

Puede crear una máquina virtual desde la línea de comando, pero usaremos VMM. El primer paso debe ser intuitivo. Ingrese un nombre y especifique la ubicación del disco de instalación. Puede ser un dispositivo local en forma de disco CD/DVD o imagen ISO, o un servidor HTTP o FTP, NFS o PXE.

Usamos medios locales. Ahora necesitas configurar si será un dispositivo físico o una imagen. En nuestro caso, se utiliza ISO. A continuación debe seleccionar el tipo y la versión ISO. Esto no requiere una precisión tan alta, pero la elección correcta mejorará el rendimiento de la máquina virtual.

Establezca la cantidad de procesadores y el tamaño de la RAM:

La cuarta etapa es un disco virtual. Puede crear una nueva imagen o utilizar una existente. Debe seleccionar el tamaño del disco y especificar si la imagen del disco se creará inmediatamente en un tamaño determinado o si su tamaño aumentará dinámicamente según sea necesario. Cabe señalar que asignar todo el espacio para una imagen de disco a la vez mejora el rendimiento y reduce la fragmentación del sistema de archivos.

A continuación prestaremos más atención al subsistema de disco. Sin embargo, tenga en cuenta que cuando se ejecuta en modo de usuario, no tendrá acceso de escritura a /var, donde se almacenan las imágenes de disco virtual de forma predeterminada. Por lo tanto, deberá establecer una ubicación diferente para las imágenes.

La etapa 5 es la salida de datos resumidos con la capacidad de configurar algunas opciones avanzadas. Aquí puede cambiar el tipo de red, configurar direcciones MAC fijas, seleccionar el tipo de virtualización y la arquitectura de destino. Si está ejecutando en modo de usuario, sus opciones de configuración de red serán limitadas, por ejemplo, no podrá crear puentes entre interfaces de red; Una última cosa: si tu procesador no soporta virtualización de hardware, el campo Virt Type será QUEMU y no será posible cambiarlo a KVM. Puede ver cómo se ven las configuraciones típicas para una máquina virtual Ubuntu:

  • Módulo del núcleo KVM: GPL v2.
  • Módulo de entorno de usuario KVM: LGPL v2.
  • Biblioteca de procesador virtual QEMU (libqemu.a) y emulador de sistema de PC QEMU: LGPL.
  • Emulador en modo usuario Linux QEMU: GPL.
  • Archivos BIOS (bios.bin, vgabios.bin y vgabios-cirrus.bin): SeaBIOS (LGPL v2 o posterior).

Herramientas gráficas

libvirt soporta KVM

  • Herramienta de gestión web Kimchi para KVM
  • Virtual Machine Manager admite la creación, edición, inicio y parada de máquinas KVM, así como la migración en frío de VM entre hosts.
  • Proxmox Virtual Environment es un paquete gratuito de gestión de virtualización que incluye KVM y OpenVZ. Tiene un instalador bare metal, una interfaz web remota para administración y soporte comercial opcional.
  • Plataforma de gestión OpenQRM para la gestión de centros de datos heterogéneos.
  • GNOME Boxes Interfaz Gnome para gestionar invitados libvirt en Linux.
  • oVirt es una herramienta gratuita de gestión de virtualización para KVM basada en libvirt

Implementaciones

  • Debian 5.0 y superior
  • Gentoo Linux
  • distribuciones basadas en ilumos
  • AbiertoIndiana
  • Red Hat Enterprise Linux (RHEL) 5.4 y superior
  • sistema operativo inteligente
  • SUSE Linux Enterprise Server (SLES) 11 SP1 y superior
  • Ubuntu 10.04 LTS y superior
  • Servidor Corporativo Univention

Personalmente, me resulta más fácil pensar en KVM (máquina virtual basada en kernel) como un nivel de abstracción sobre las tecnologías de hardware. Virtualización Intel VT-x y AMD-V. Tomamos una máquina con un procesador que soporta una de estas tecnologías y apostamos por esto. maquina linux, en Linux instalamos KVM, como resultado tenemos la oportunidad de crear máquinas virtuales. Así es aproximadamente como funciona el alojamiento en la nube, por ejemplo, Amazon Web Services. Junto con KVM, a veces también se utiliza Xen, pero una discusión sobre esta tecnología está más allá del alcance de esta publicación. A diferencia de las tecnologías de virtualización de contenedores, por ejemplo Docker, KVM le permite ejecutar cualquier sistema operativo como sistema invitado, pero también tiene oh Mayores gastos generales para la virtualización.

Nota: Los pasos que se describen a continuación han sido probados por mí en ubuntu linux 14.04, pero en teoría serán en gran medida válidos tanto para otras versiones de Ubuntu como para otras Distribuciones de Linux. Todo debería funcionar tanto en el escritorio como en el servidor, al que se accede a través de SSH.

Instalación de KVM

Comprobamos si nuestro procesador admite Intel VT-x o AMD-V:

grep -E "(vmx|svm)" /proc/cpuinfo

Si algo se calienta, significa que está soportado y puedes seguir adelante.

Instalación de KVM:

sudo apt-obtener actualización
sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils

Qué se suele almacenar dónde:

  • /var/lib/libvirt/boot/ - Imágenes ISO para instalar sistemas invitados;
  • /var/lib/libvirt/images/ - imágenes discos duros sistemas de invitados;
  • /var/log/libvirt/ - aquí debes buscar todos los registros;
  • /etc/libvirt/ - directorio con archivos de configuración;

Ahora que KVM está instalado, creemos nuestra primera máquina virtual.

Creando la primera máquina virtual

Elegí FreeBSD como sistema invitado. Descargue la imagen ISO del sistema:

CD /var/lib/libvirt/boot/
sudo wget http:// ftp.freebsd.org/ ruta/ a/ some-freebsd-disk.iso

Las máquinas virtuales se administran en la mayoría de los casos mediante la utilidad virsh:

sudo virsh --ayuda

Antes de iniciar la máquina virtual, necesitaremos recopilar información adicional.

Miramos la lista de redes disponibles:

lista de red sudo virsh

Ver información sobre red específica(llamado predeterminado):

sudo virsh net-info predeterminado

Veamos la lista de optimizaciones disponibles para sistemas operativos invitados:

sudo virt-install --lista de variantes del sistema operativo

Entonces, ahora creamos una máquina virtual con 1 CPU, 1 GB de RAM y 32 GB de espacio en disco, conectada a la red predeterminada:

sudo virt-instalar\
--virt-tipo =kvm\
--nombre freebsd10\
--ram 1024\
--vcpus=1\
--os-variante =freebsd8 \
--hvm\
--cdrom =/ var/ lib/ libvirt/ boot/ FreeBSD-10.2 -RELEASE-amd64-disc1.iso \
--red red =predeterminado,modelo =virtio \
--gráficos vnc\
--ruta del disco =/ var/ lib/ libvirt/ images/ freebsd10.img,size =32 ,bus =virtio

Puedes ver:

ADVERTENCIA No se puede conectar a la consola gráfica: virt-viewer no
instalado. Instale el paquete "virt-viewer".

La instalación del dominio aún está en progreso. Puedes volver a conectarte a la consola.
para completar el proceso de instalación.

Esto es normal, así debe ser.

Luego mire las propiedades de la máquina virtual en formato XML:

sudo virsh dumpxml freebsd10

Aquí están los más información completa. Esto incluye, por ejemplo, una dirección MAC, que necesitaremos más adelante. Por ahora estamos encontrando información sobre VNC. En mi caso:

Usando su cliente favorito (yo personalmente uso Rammina) iniciamos sesión vía VNC, si es necesario usando SSH reenvío de puertos. Nos metemos directamente en el instalador de FreeBSD. Entonces todo es como de costumbre: Siguiente, Siguiente, Siguiente, obtenemos el sistema instalado.

Comandos básicos

Miremos ahora comandos básicos para trabajar con KVM.

Obtener una lista de todas las máquinas virtuales:

lista sudo virsh --todos

Obtención de información sobre una máquina virtual específica:

sudo virsh dominfo freebsd10

Inicie la máquina virtual:

sudo virsh iniciar freebsd10

Detener la máquina virtual:

sudo virsh apagar freebsd10

Difícilmente consigas la máquina virtual (a pesar del nombre, esta No supresión):

sudo virsh destruir freebsd10

Reinicie la máquina virtual:

sudo virsh reiniciar freebsd10

Clonar máquina virtual:

sudo virt-clone -o freebsd10 -n freebsd10-clone \
--archivo /var/lib/libvirt/images/freebsd10-clone.img

Activar/desactivar la ejecución automática:

sudo virsh inicio automático freebsd10
sudo virsh inicio automático --deshabilitar freebsd10

Ejecutando virsh en modo de diálogo (todos los comandos en modo de diálogo, como se describe arriba):

sudovirsh

Editando las propiedades de la máquina virtual en XML, incluso aquí puede cambiar el límite de memoria, etc.:

sudo virsh editar freebsd10

¡Importante! Lamentablemente, los comentarios del XML editado se eliminan.

Cuando se detiene la máquina virtual, también se puede cambiar el tamaño del disco:

sudo qemu-img cambiar tamaño /var/ lib/ libvirt/ images/ freebsd10.img -2G
sudo qemu-img información /var/lib/libvirt/images/freebsd10.img

¡Importante! A su sistema operativo invitado probablemente no le gustará que el disco se haga más grande o más pequeño de repente. EN mejor escenario, arrancará en modo de emergencia con una propuesta para reparticionar el disco. Probablemente no deberías querer hacer eso. Puede resultar mucho más fácil crear una nueva máquina virtual y migrar todos los datos a ella.

La copia de seguridad y la restauración son bastante simples. Basta con guardar la salida del dumpxml en algún lugar, así como la imagen del disco, y luego restaurarlos. En YouTube logré encontrar el video Con una demostración de este proceso, no todo es realmente difícil.

Configuración de red

Una pregunta interesante: ¿cómo determinar qué dirección IP recibió la máquina virtual después del arranque? KVM hace esto de una manera inteligente. Terminé escribiendo este script en Python:

#!/usr/bin/env python3

# script virt-ip.py
# (c) 2016 Aleksander Alekseev
# http://sitio/

sistema de importación
importar re
importar sistema operativo
subproceso de importación
desde xml .etree importar ElementTree

def eprint(cadena):
imprimir(cadena, archivo = sys.stderr)

si len(sys.argv)< 2 :
eprint("USO: " + sys .argv [ 0 ] + " " )
eprint("Ejemplo: " + sys .argv [ 0 ] + " freebsd10 " )
salida del sistema (1)

si os .geteuid() != 0 :
eprint("ERROR: deberías ser root")
eprint("Sugerencia: ejecute `sudo " + sys .argv [ 0 ] + " ...`" );
salida del sistema (1)

si subproceso .call ( "que arping 2>&1 >/dev/null", shell = Verdadero ) != 0 :
eprint("ERROR: arping extraviado" )
impresión electrónica ( "Sugerencia: ejecute `sudo apt-get install arping`")
salida del sistema (1)

Dominio = sys.argv[1]

si no, re .match ("^*$", dominio):
impresión electrónica ( "ERROR: caracteres no válidos en el nombre de dominio")
salida del sistema (1)

Domout = subproceso .check_output ("virsh dumpxml " +dominio+" || verdadero",
caparazón = Verdadero)
domout = domout.decode("utf-8").strip()

si domout == "" :
# mensaje de error ya impreso por dumpxml
salida del sistema (1)

Doc = ElementTree.fromstring(domout)

# 1. enumera todas las interfaces de red
# 2. ejecuta `arping` en cada interfaz en paralelo
#3.respuestas grep
cmd = "(ifconfig | cut -d " " -f 1 | grep -E "." | " + \
"xargs -P0 -I IFACE arping -i IFACE -c 1 () 2>&1 | " + \
"grep "bytes de") || verdadero"

para niño en doc.iter() :
si child.tag == "mac" :
macaddr = child.attrib["dirección"]
macout = subproceso .check_output (cmd .format (macaddr),
caparazón = Verdadero)
imprimir(macout.decode("utf-8"))

El script funciona tanto con la red predeterminada como con la red puenteada, cuya configuración consideraremos más adelante. Sin embargo, en la práctica, es mucho más conveniente configurar KVM para que siempre asigne las mismas direcciones IP a los sistemas invitados. Para hacer esto, edite la configuración de red:

sudo virsh net-edit predeterminado

... algo como esto:

>



>

Después de realizar estos cambios


>

... y reemplácelo con algo como:




>

Reiniciamos el sistema invitado y comprobamos que ha recibido una IP vía DHCP del router. Si desea que el sistema invitado tenga una dirección IP estática, esto se configura como de costumbre dentro del propio sistema invitado.

programa virt-manager

También te puede interesar el programa virt-manager:

sudo apt-get instalar virt-manager
sudo usermod -a -G libvirtd NOMBRE DE USUARIO

Así es como se ve su ventana principal:

Como puede ver, virt-manager no es sólo una GUI para máquinas virtuales que se ejecutan localmente. Con su ayuda, puede administrar máquinas virtuales que se ejecutan en otros hosts, así como ver hermosos gráficos en tiempo real. Personalmente, encuentro especialmente conveniente en virt-manager que no es necesario buscar en las configuraciones para saber qué puerto VNC se está ejecutando en un sistema invitado específico. Simplemente busque la máquina virtual en la lista, haga doble clic y obtenga acceso al monitor.

Con la ayuda de virt-manager también es muy conveniente hacer cosas que de otro modo requerirían una laboriosa edición de archivos XML y, en algunos casos, la ejecución de comandos adicionales. Por ejemplo, cambiar el nombre de las máquinas virtuales, configurar la afinidad de la CPU y cosas similares. Por cierto, uso de CPU La afinidad reduce significativamente el efecto. vecinos ruidosos y el impacto de las máquinas virtuales en el sistema host. Úselo siempre que sea posible.

Si decide utilizar KVM como reemplazo de VirtualBox, tenga en cuenta que no podrán compartir la virtualización de hardware entre ellos. Para que KVM funcione en su escritorio, no sólo tendrá que detener todas las máquinas virtuales en VirtualBox y Vagrant, sino también reiniciar el sistema. Personalmente, encuentro que KVM es mucho más conveniente que VirtualBox, al menos porque no requiere que ejecutes un comando. configuración sudo /sbin/rcvboxdrv después de cada actualización del kernel, funciona adecuadamente con Unity y, en general, le permite ocultar todas las ventanas.




Arriba