
La resolución de problemas al cargar el sistema operativo en servidores sin KVM no es una tarea fácil. Creamos KVM sobre IP utilizando una imagen de recuperación y una máquina virtual.
En caso de problemas con el sistema operativo
en el servidor remoto , el administrador descarga la imagen de recuperación y realiza el trabajo necesario. Este método funciona bien cuando se conoce la causa de la falla, 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 de la falla, debe monitorear 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 el sistema operativo Linux, entonces KVM-over-IP se puede organizar rápidamente.
La imagen de recuperación es un sistema operativo completo que reside en la RAM. Por lo tanto, podemos ejecutar cualquier software, incluidas las máquinas virtuales (VM). Es decir, puede iniciar la VM, dentro de la cual funcionará el sistema operativo del servidor. El acceso a la consola VM se puede organizar, por ejemplo, a través del VNC.
Para iniciar el sistema operativo del servidor dentro de la VM, debe especificar los discos del servidor como discos de VM. En la familia de sistemas operativos Linux, los discos físicos se representan como dispositivos de bloque de la forma
/ dev / sdX , que se pueden
manejar como archivos normales.
Algunos hipervisores, como QEMU y VirtualBox, le permiten almacenar datos de VM en una forma sin procesar, es decir, solo datos de almacenamiento sin metadatos de hipervisor. Por lo tanto, se puede iniciar una VM utilizando los discos físicos del servidor.
Este método requiere recursos para ejecutar la imagen de recuperación y la VM dentro de ella. Sin embargo, con cuatro o más gigabytes de RAM, esto no será un problema.
Preparación del medio ambiente
Como máquina virtual, puede usar el programa
QEMU ligero y simple, 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 administrador de paquetes
pacman .
Primero debe asegurarse de que la imagen de recuperación esté utilizando el último software. 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 a través de pacman se verá así:
pacman -S qemu
Comprueba 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 es así, la imagen de recuperación está lista para funcionar.
Inicio de máquina virtual
Primero, debe determinar la cantidad de recursos asignados a la VM y descubrir 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 las rutas
/ dev / sda y
/ dev / sdb . Ejecute 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 : asigna 2 GB de RAM por VM;
- -net nic -net user : agrega una conexión de red simple a través de un hipervisor utilizando NAT (Network Address Translation);
- -enable-kvm : habilita la virtualización completa de KVM (Kernel Virtual Machine);
- -cpu host : le dice al procesador virtual que obtenga toda la funcionalidad del procesador del servidor;
- -M pc - tipo de equipo de PC;
- -smp 2 : el procesador virtual debe ser de doble núcleo;
- -vga std : seleccione una tarjeta de video estándar que no sea compatible con resoluciones de pantalla grande;
- -archivo de unidad = / dev / sda, formato = sin formato, índice = 0, medio = disco
- file = / dev / sdX - ruta al dispositivo de bloque que representa el disco del servidor;
- format = raw - marca que en el archivo especificado todos los datos están en la forma "raw", es decir, como en el disco;
- index = 0 - número de disco, debe aumentar para cada disco siguiente en uno;
- media = disco : la máquina virtual debe reconocer este almacenamiento como un disco;
- -vnc: 0, contraseña : ejecuta el servidor VNC predeterminado en 0.0.0.0:5900, usa la contraseña como autorización;
- -monitor stdio : el administrador se comunicará con qemu 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 realiza con una contraseña, pero no especificamos la contraseña en sí. Puede hacer esto 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 eso, podemos conectarnos con cualquier cliente VNC, por ejemplo, Remmina, mediante la dirección IP de nuestro servidor con la contraseña que especificó.


Ahora no solo vemos posibles errores en la etapa de carga, sino que podemos combatirlos.
Al final del trabajo, debe completar la máquina virtual. Esto se puede hacer dentro del sistema operativo
enviando una señal de apagado o puede dar el comando
system_powerdown al monitor QEMU. Esto será equivalente a una sola pulsación del botón de apagado: 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, se puede utilizar para instalar manualmente el sistema operativo. La única limitación es la cantidad de RAM: no siempre la imagen ISO se puede colocar en la RAM. Seleccionamos cuatro gigabytes de RAM para almacenar la imagen en
/ mnt :
mount -t tmpfs -o size=4G tmpfs /mnt
También cargamos 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 puede 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
indicador -boot d establece el arranque desde la unidad de CD. Estamos conectados por el cliente VNC y vemos el cargador FreeBSD.

Dado que se utilizó DHCP para acceder a Internet, es posible que después de la configuración sea necesario iniciar el sistema recién instalado y corregir la configuración de red. En algunos casos, puede ser necesario instalar controladores de adaptador de red, ya que la tarjeta de red instalada en el servidor y emulada en la VM es diferente.
Conclusión
Este método de organizar el acceso remoto a la consola del servidor consume parte de los recursos del servidor, sin embargo, no impone ningún requisito especial en el componente de hardware del servidor y, por lo tanto, se puede realizar en casi cualquier condición. El uso de esta solución puede facilitar significativamente el diagnóstico de fallas de software y restaurar el estado de un servidor remoto.