IP-KVM a través de QEMU

IP-KVM a través de QEMU

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

En caso de que surjan problemas con el sistema operativo en el servidor remoto, el administrador carga la imagen de recuperación y realiza las tareas necesarias. Este método funciona muy bien cuando la causa de la falla es conocida y la imagen de recuperación y el sistema operativo instalado en el servidor pertenecen a la misma familia. Si la causa de la falla aún no se conoce, es necesario observar el proceso de arranque del sistema operativo.

KVM remoto

Se puede acceder a la consola del servidor utilizando herramientas integradas, como IPMI o Intel® vPro™, o mediante dispositivos externos llamados IP-KVM. Existen situaciones en las que todas estas tecnologías son inaccesibles. Sin embargo, esto no es el final. Si el servidor se puede reiniciar de forma remota en una imagen de recuperación basada en un sistema operativo de la familia Linux, se puede organizar rápidamente un KVM-over-IP.

La imagen de recuperación es un sistema operativo completo que se coloca en la memoria RAM. De este modo, podemos ejecutar cualquier software, incluidas las máquinas virtuales (VM). Es decir, se puede iniciar una VM en la que operará el sistema operativo del servidor. El acceso a la consola de la VM se puede organizar, por ejemplo, a través de VNC.

Para iniciar el sistema operativo del servidor dentro de la VM, es necesario indicar los discos del servidor como discos de la VM. En los sistemas operativos de la familia Linux, los discos físicos se representan como dispositivos de bloque del tipo /dev/sdX, con los que se puede trabajar como si fueran archivos normales.

Algunos hipervisores, como QEMU y VirtualBox, permiten almacenar los datos de la VM en formato "crudo", es decir, solo los datos de almacenamiento sin los metadatos del hipervisor. De este modo, se puede iniciar la VM utilizando discos físicos del servidor.

Este método requiere recursos para iniciar la imagen de recuperación y la VM dentro de ella. Sin embargo, con cuatro o más gigabytes de memoria RAM, esto no será un problema.

Preparación del entorno

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

Primero, es necesario asegurarse de que la imagen de recuperación esté utilizando las últimas versiones del software. Se puede verificar y actualizar todos los componentes del sistema operativo con el siguiente comando:

pacman -Suy

Después de la actualización, es necesario instalar QEMU. El comando para la instalación a través de pacman es el siguiente:

pacman -S qemu

Verifiquemos que QEMU se haya instalado correctamente:

root@sel-rescue ~ # qemu-system-x86_64 --versión
Versión del emulador QEMU 4.0.0
Copyright (c) 2003-2019 Fabrice Bellard y los desarrolladores del proyecto QEMU

Si todo está bien, la imagen de recuperación está lista para usarse.

Iniciar la máquina virtual

Primero, es necesario determinar 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 están ubicados en la ruta /dev/sda y /dev/sdb. Iniciaremos 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 sobre lo que significa cada uno de los parámetros:

  • -m 2048M — asignamos 2 GB de RAM a la VM;
  • -net nic -net user — añadimos una conexión de red simple a través del hipervisor utilizando NAT (Traducción de Direcciones de Red);
  • -enable-kvm — habilitamos la virtualización completa KVM (Máquina Virtual del Núcleo);
  • -cpu host — indicamos a la CPU virtual que obtenga toda la funcionalidad del procesador del servidor;
  • -M pc — tipo de hardware PC;
  • -smp 2 — el procesador virtual debe ser de dos núcleos;
  • -vga std — seleccionamos una tarjeta gráfica estándar que no soporte altas resoluciones de pantalla;
  • -drive file=/dev/sda,format=raw,index=0,media=disk
    • file=\/dev\/sdX — ruta al dispositivo de bloque que representa el disco del servidor;
    • format=raw — marcamos que en el archivo especificado, todos los datos están en formato 'crudo', es decir, como en el disco;
    • index=0 — número del disco, debe incrementarse en uno para cada disco adicional;
    • media=disk — la máquina virtual debe reconocer este almacenamiento como un disco;
  • -vnc :0, password — iniciamos el servidor VNC por defecto en 0.0.0.0:5900, utilizando una contraseña para la autorización;
  • -monitor stdio — la comunicación del administrador con QEMU se realizará a través de flujos estándar de entrada y salida.

Si todo está bien, se iniciará el monitor de QEMU:

Monitor QEMU 4.0.0 - escribe 'ayuda' para más información
(qemu)

Hemos indicado que la autorización se realiza mediante una contraseña, pero no hemos especificado la contraseña en sí. Esto se puede hacer enviando el comando change vnc password en el monitor de QEMU. Nota importante: la contraseña no puede tener más de ocho caracteres.

(qemu) cambiar contraseña vnc
Contraseña: ******

Después de esto, podemos conectarnos con cualquier cliente VNC, como Remmina, a la dirección IP de nuestro servidor con la contraseña que hemos especificado.

IP-KVM a través de QEMU

IP-KVM a través de QEMU

Ahora no solo podemos ver los posibles errores en la etapa de carga, sino que también podemos solucionarlos.

Al finalizar las operaciones, es necesario apagar la máquina virtual. Esto se puede hacer desde el sistema operativo enviando una señal de apagado, o ejecutando el comando system_powerdown en el monitor de QEMU. Esto será equivalente a presionar el botón de apagado: el sistema operativo dentro de la máquina virtual se cerrará de manera ordenada.

Instalación del sistema operativo

La máquina virtual tiene acceso completo a los discos del servidor y, por lo tanto, puede utilizarse para instalar el sistema operativo manualmente. La única limitación es la cantidad de memoria RAM: no siempre se puede almacenar la imagen ISO en la RAM. Asignaremos 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 podemos 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

El flag -boot d configura el arranque desde el CD-ROM. Nos conectamos con el cliente VNC y vemos el cargador de FreeBSD.

IP-KVM a través de QEMU

Como se utilizó DHCP para acceder a Internet, puede ser necesario arrancar en el sistema recién instalado y corregir la configuración de red. En algunos casos, puede requerirse la instalación de controladores para el 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 organización de acceso remoto a la consola del servidor consume parte de los recursos del servidor, sin embargo, no presenta requisitos especiales en cuanto a la parte de hardware del servidor, por lo que puede llevarse a cabo en prácticamente cualquier condición. Utilizar esta solución permite facilitar significativamente el diagnóstico de fallos de software y la recuperación de la funcionalidad del servidor remoto.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster