IP-KVM a través de QEMU

IP-KVM a través de QEMU

Solucionar problemas de arranque del sistema operativo en servidores sin KVM no es una tarea fácil. Creamos un KVM sobre IP para nosotros a través de una imagen de recuperación y una máquina virtual.

En caso de problemas con el sistema operativo. en un servidor remoto, el administrador descarga la imagen de recuperación y realiza el trabajo necesario. Este método funciona muy bien cuando se conoce la causa del fallo y la imagen de recuperación y el sistema operativo instalado en el servidor son de la misma familia. Si aún no se conoce la causa del fallo, es necesario controlar el progreso de la carga del sistema operativo.

KVM remoto

Puede acceder a la consola del servidor utilizando herramientas integradas como IPMI o Intel® vPro™, o mediante dispositivos externos llamados IP-KVM. Hay situaciones en las que todas las tecnologías enumeradas no están disponibles. Sin embargo, este no es el final. Si el servidor se puede reiniciar de forma remota en una imagen de recuperación basada en un sistema operativo Linux, entonces se puede organizar rápidamente KVM sobre IP.

La imagen de recuperación es un sistema operativo completo que se encuentra en la RAM. Así, podemos ejecutar cualquier software, incluidas las máquinas virtuales (VM). Es decir, puede iniciar una máquina virtual dentro de la cual se ejecutará el sistema operativo del servidor. El acceso a la consola VM se puede organizar, por ejemplo, a través de VNC.

Para ejecutar el sistema operativo del servidor dentro de una VM, debe especificar los discos del servidor como discos de VM. En los sistemas operativos de la familia Linux, los discos físicos están representados por dispositivos de bloque de la forma / dev / sdX, con el que se puede trabajar como archivos normales.

Algunos hipervisores, como QEMU y VirtualBox, le permiten almacenar datos de VM en forma "sin procesar", es decir, solo datos de almacenamiento sin metadatos del hipervisor. Por tanto, la VM se puede iniciar utilizando los discos físicos del servidor.

Este método requiere recursos para iniciar la imagen de recuperación y la VM que contiene. Sin embargo, si tienes cuatro o más gigabytes de RAM, esto no será un problema.

Preparando el Ambiente

Puedes utilizar un programa ligero y sencillo como máquina virtual. QEMU, que normalmente no forma parte de la imagen de recuperación y, por lo tanto, debe instalarse por separado. La imagen de recuperación que ofrecemos a los clientes se basa en Arch Linux, que utiliza un administrador de paquetes pacman.

Lo primero que debe hacer es asegurarse de que la imagen de recuperación esté utilizando el software más reciente. Puede verificar y actualizar todos los componentes del sistema operativo con el siguiente comando:

pacman -Suy

Después de la actualización, debe instalar QEMU. El comando de instalación vía pacman se verá así:

pacman -S qemu

Comprobemos que qemu esté instalado correctamente:

root@sel-rescue ~ # qemu-system-x86_64 --version
QEMU emulator version 4.0.0
Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers

Si todo es así, entonces la imagen de recuperación está lista para funcionar.

Iniciar una máquina virtual

Primero, debe decidir la cantidad de recursos asignados a la VM y averiguar las rutas a los discos físicos. En nuestro caso, asignaremos dos núcleos y dos gigabytes de RAM a la máquina virtual, y los discos se ubicarán en el camino. / Dev / sda и / dev / sdb. Iniciemos la VM:

qemu-system-x86_64
-m 2048M
-net nic -net user
-enable-kvm
-cpu host,nx
-M pc
-smp 2
-vga std
-drive file=/dev/sda,format=raw,index=0,media=disk
-drive file=/dev/sdb,format=raw,index=1,media=disk
-vnc :0,password
-monitor stdio

Un poco más de detalle sobre lo que significa cada uno de los parámetros:

  • -m 2048M — asignar 2 GB de RAM a la VM;
  • -net nic -net usuario — agregar una conexión simple a la red a través de un hipervisor usando NAT (Traducción de direcciones de red);
  • -habilitar-kvm — habilitar la virtualización KVM (Kernel Virtual Machine) completa;
  • -anfitrión de la CPU — le decimos al procesador virtual que obtenga todas las funciones del procesador del servidor;
  • -MPC — tipo de equipo informático;
  • -smp 2 — el procesador virtual debe ser de doble núcleo;
  • -vga estándar — elija una tarjeta de video estándar que no admita resoluciones de pantalla grandes;
  • -archivo de unidad=/dev/sda,formato=raw,index=0,media=disco
    • archivo=/dev/sdX — ruta al dispositivo de bloque que representa el disco del servidor;
    • formato = crudo — observamos que en el archivo especificado todos los datos están en formato "sin procesar", es decir, como en un disco;
    • index = 0 — número de disco, debe aumentar en uno para cada disco subsiguiente;
    • medios = disco — la máquina virtual debe reconocer este almacenamiento como un disco;
  • -vnc: 0, contraseña — inicie el servidor VNC de forma predeterminada en 0.0.0.0:5900, use una contraseña como autorización;
  • -monitor de estado — la comunicación entre el administrador y qemu se producirá a través de flujos de entrada/salida estándar.

Si todo está en orden se iniciará el monitor QEMU:

QEMU 4.0.0 monitor - type 'help' for more information
(qemu)

Indicamos que la autorización se produce mediante una contraseña, pero no indicamos la contraseña en sí. Esto se puede hacer enviando el comando de cambio de contraseña de vnc al monitor QEMU. Nota importante: La contraseña no puede tener más de ocho caracteres.

(qemu) change vnc password
Password: ******

Después de esto, podremos conectarnos con cualquier cliente VNC, por ejemplo, Remmina, utilizando la dirección IP de nuestro servidor con la contraseña que especificamos.

IP-KVM a través de QEMU

IP-KVM a través de QEMU

Ahora no sólo vemos posibles errores en la fase de carga, sino que también podemos solucionarlos.

Cuando haya terminado, debe apagar la máquina virtual. Esto se puede hacer dentro del sistema operativo enviando una señal para apagar o dando el comando apagado_sistema en el monitor QEMU. Esto equivaldrá a presionar el botón de apagado una vez: el sistema operativo dentro de la máquina virtual se apagará sin problemas.

Instalación del sistema operativo

La máquina virtual tiene acceso completo a los discos del servidor y, por lo tanto, puede usarse para instalar manualmente el sistema operativo. La única limitación es la cantidad de RAM: la imagen ISO no siempre se puede colocar en la RAM. Asignemos cuatro gigabytes de RAM para almacenar la imagen en / mnt:

mount -t tmpfs -o size=4G tmpfs /mnt

También descargaremos la imagen de instalación del sistema operativo FreeBSD 12.0:

wget -P /mnt ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/12.0/FreeBSD-12.0-RELEASE-amd64-bootonly.iso

Ahora puedes iniciar la VM:

qemu-system-x86_64
-m 2048M
-net nic -net user
-enable-kvm
-cpu host,nx
-M pc
-smp 2
-vga std
-drive file=/dev/sda,format=raw,index=0,media=disk
-drive file=/dev/sdb,format=raw,index=1,media=disk
-vnc :0,password
-monitor stdio
-cdrom /mnt/FreeBSD-12.0-RELEASE-amd64-bootonly.iso
-boot d

Bandera -arranque d instala arrancando desde la unidad de CD. Nos conectamos con un cliente VNC y vemos el gestor de arranque de FreeBSD.

IP-KVM a través de QEMU

Dado que se utilizó la obtención de una dirección a través de DHCP para acceder a Internet, después de la configuración puede ser necesario iniciar el sistema recién instalado y corregir la configuración de red. En algunos casos puede ser necesario instalar controladores del adaptador de red, ya que la tarjeta de red instalada en el servidor y la emulada en la VM son diferentes.

Conclusión

Este método de organizar el acceso remoto a la consola del servidor consume algunos de los recursos del servidor; sin embargo, no impone ningún requisito especial al hardware del servidor y, por lo tanto, se puede implementar en casi cualquier condición. El uso de esta solución hace que sea mucho más fácil diagnosticar fallas de software y restaurar la funcionalidad de un servidor remoto.

Fuente: habr.com

Añadir un comentario