Share via


Asegurarse proactivamente de que tiene acceso a GRUB y Pet Sis podría ahorrarle mucho tiempo de inactividad.

Tener acceso a la Consola Serie y GRUB mejorará los tiempos de recuperación de su Máquina Virtual Linux IaaS en la mayoría de los casos. GRUB ofrece opciones de recuperación que, de otro modo, tardarían más tiempo en recuperar su máquina virtual.

Las razones para realizar una recuperación de VM son muchas y pueden atribuirse a escenarios como:

  • Sistemas de archivos/kernel/MBR (Registro de arranque maestro) dañados
  • Actualizaciones del kernel fallidas
  • Parámetros del kernel GRUB incorrectos
  • Configuraciones fstab incorrectas
  • Configuraciones de firewall
  • Contraseña perdida
  • Archivos de configuración de sshd alterados
  • Configuraciones de redes

Muchos otros escenarios como se detalla aquí.

Verifique que puede acceder a GRUB y a la consola Serial en sus máquinas virtuales desplegadas en Azure.

Si es la primera vez que utiliza la consola serie, consulte este enlace.

Sugerencia

Asegúrese de hacer copias de seguridad de los archivos antes de realizar cambios.

Vea este vídeo a continuación para saber cómo puede recuperar rápidamente su máquina virtual Linux una vez que tenga acceso a GRUB

Vídeo para recuperar máquinas virtuales Linux

Existen varios métodos para ayudar a la recuperación de máquinas virtuales Linux. En un entorno de la nube, este proceso ha sido todo un reto. Se está avanzando continuamente en las herramientas y funciones para garantizar la rápida recuperación de los servicios.

Con la consola serie de Azure, puede interactuar con su máquina virtual Linux como si estuviera en la consola de un sistema.

Puedes manipular muchos archivos de configuración, incluyendo Cómo arrancará el kernel.

Los administradores de sistemas Linux/Unix más experimentados apreciarán los modos de usuario único y emergencia a los que se puede acceder a través de la consola serie de Azure, lo que hace que el intercambio de discos y la eliminación de máquinas virtuales para muchos escenarios de recuperación sean redundantes.

El método de recuperación depende del problema que se esté experimentando, por ejemplo, una contraseña perdida o extraviada puede restablecerse a través de las opciones del portal de Azure ->Restablecer contraseña. La función Restablecer contraseña se conoce como Extensión y se comunica con el agente Invitado de Linux.

Otras extensiones como Script personalizado están disponibles, sin embargo, estas opciones requieren que el waagent de Linux funcione correctamente lo cual no siempre es el caso.

                             Captura de pantalla del estado del Agente en la página Propiedades del portal Azure.                                     

Garantizar el acceso a la consola serie de Azure y a GRUB significa que un cambio de contraseña o una configuración incorrecta pueden rectificarse en cuestión de minutos en lugar de horas. Incluso puede forzar a la máquina virtual a arrancar desde un núcleo alternativo si tiene varios núcleos en el disco en caso de que el núcleo principal se dañe.

                             Captura de pantalla de la pantalla de arranque del SO seleccionado en GRUB, que muestra que se pueden elegir múltiples kernels.                                     

Orden sugerido de los métodos de recuperación

Vídeo sobre el intercambio de discos

Si no tiene acceso a GRUB vea este vídeo y vea, cómo puede automatizar fácilmente el procedimiento de intercambio de discos para recuperar su VM

Desafíos

No todas las máquinas virtuales Azure Linux están configuradas por defecto para el acceso a GRUB y tampoco están todas configuradas para ser interrumpidas con los comandos Pet Sis. Algunas distribuciones antiguas como SLES 11 no están configuradas para mostrar el mensaje de inicio de sesión en la consola serie de Azure.

En este artículo, revisaremos varias distribuciones Linux y documentaremos configuraciones sobre cómo hacer que GRUB esté disponible.

Cómo configurar una máquina virtual Linux para que acepte claves Pet Sis

La clave Pet Sis está habilitada por defecto en algunas distribuciones Linux más recientes, aunque en otras puede estar configurada para aceptar valores sólo para determinadas funciones Pet Sis. En distribuciones más antiguas, puede estar completamente desactivado.

La función Pet Sis es útil para reiniciar una máquina virtual bloqueada o que no responde directamente desde la consola serie de Azure, también es útil para obtener acceso al menú de GRUB, alternativamente, reiniciar una máquina virtual desde otra ventana del portal o sesión SSH puede interrumpir la conexión de la consola actual y, por lo tanto, expirar los tiempos de espera de GRUB que se utilizan para mostrar el menú de GRUB. La máquina virtual debe estar configurada para aceptar un valor de 1 para el parámetro kernel, que habilita todas las funciones de Pet Sis o 128, que permite el reinicio/apagado.

Habilitar vídeo Pet Sis

Para configurar la máquina virtual para que acepte un reinicio mediante comandos Pet Sis en el portal de Azure, deberá establecer un valor de 1 para el parámetro del núcleo kernel.sysrq

Para que esta configuración persista ante un reinicio, añada una entrada al archivo sysctl.conf

echo kernel.sysrq = 1 >> /etc/sysctl.conf

Para configurar el parámetro del núcleo de forma dinámica

sysctl -w kernel.sysrq=1

Si no tienes acceso raíz o el sudo está roto, no será posible configurar Pet Sis desde una ventana de Shell.

Puede activar Pet Sis en este escenario utilizando el portal de Azure. Este método puede ser beneficioso si el archivo sudoers.d/waagent se ha roto o ha sido eliminado.

Usar el portal de Azure Operaciones -> Ejecutar Comando -> característica RunShellScript, requiere que el proceso waagent sea correcto para que pueda inyectar este comando para habilitar Pet Sis

sysctl -w kernel.sysrq=1 ; echo kernel.sysrq = 1 >> /etc/sysctl.conf

Como se muestra aquí:

                             Captura de pantalla de la ventana RunShellScript al inyectar el comando.                                     

Una vez completado, puede intentar acceder a Pet Sis y debería ver que es posible reiniciar.

                             Captura de pantalla de la opción Enviar comando Pet Sis bajo el icono del teclado en la barra de botones.                                     

Seleccione el comando Reiniciar y Enviar Pet Sis.

                             Captura de pantalla de la opción Reboot en el cuadro de diálogo Enviar ka ventana Pet Sis al invitado.                                     

El sistema debería registrar un mensaje de reinicio como el siguiente

                             Captura de pantalla del registro de mensajes de reinicio en la interfaz de línea de comandos.                                     

Configuración de Ubuntu GRUB

Por defecto deberías poder acceder a GRUB manteniendo pulsada la tecla Esc durante el arranque de la VM, si el menú GRUB no se presenta puedes forzar y mantener el menú GRUB en pantalla en la consola serie de Azure utilizando una de estas opciones.

Opción 1 - Hace que GRUB se muestre en pantalla

Actualice el archivo /etc/default/grub.d/50-cloudimg-settings.cfg para mantener el menú de GRUB en pantalla durante el TIEMPO DE ESPERA especificado. No es necesario pulsar Esc ya que GRUB se mostrará inmediatamente.

GRUB_TIMEOUT=5
GRUB_TIMEOUT_STYLE=menu

Opción 2 - Permite pulsar Esc antes de arrancar.

Se puede experimentar un comportamiento similar realizando cambios en el archivo /etc/default/grub y observar un tiempo de espera de 3 segundos para pulsar Esc.

Comente estas dos líneas:

#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true

y añade esta línea:

GRUB_TIMEOUT_STYLE=countdown

Ubuntu 12.04

Ubuntu 12.04 permitirá el acceso a la consola serie pero no ofrece la posibilidad de interactuar. No se ve la ventana Inicio de sesión:

Para 12.04 para obtener una ventana de inicio de sesión:

  1. Cree un archivo llamado /etc/init/ttyS0.conf que contenga el siguiente texto:

    # ttyS0 - getty
    #
    # This service maintains a getty on ttyS0 from the point the system is
    # started until it is shut down again.
    start on stopped rc RUNLEVEL=[12345]
    stop on runlevel [!12345]
    
    respawn
    exec /sbin/getty -L 115200 ttyS0 vt102
    
  2. Pedir a upstart que inicie el getty

    sudo start ttyS0
    

Los ajustes necesarios para configurar la consola serie para las versiones de Ubuntu se pueden encontrar aquí.

Modo de recuperación de Ubuntu

Hay opciones adicionales de recuperación y limpieza disponibles para Ubuntu a través de GRUB, sin embargo, estos ajustes sólo son accesibles si se configuran los parámetros del kernel en consecuencia. Si no se configura este parámetro de arranque del kernel, el menú de recuperación se enviará a Azure Diagnostics y no a Azure Serial Console. Puede obtener acceso al menú de recuperación de Ubuntu siguiendo estos pasos:

Interrumpir el proceso de arranque y acceder al menú GRUB

Seleccione Opciones avanzadas para Ubuntu y pulse Intro

                             La captura de pantalla muestra la consola serie con las opciones avanzadas para Ubuntu seleccionadas.                                     

Seleccione la línea que muestra (modo de recuperación) no pulse enter sino pulse "e"

                             La captura de pantalla muestra la consola serie con una versión del modo de recuperación seleccionada.                                     

Localice la línea que cargará el kernel y sustituya el último parámetro nomodeset por un destino como console=ttyS0

linux /boot/vmlinuz-4.15.0-1023-azure root=UUID=21b294f1-25bd-4265-9c4e-d6e4aeb57e97 ro recovery nomodeset

change to

linux /boot/vmlinuz-4.15.0-1023-azure root=UUID=21b294f1-25bd-4265-9c4e-d6e4aeb57e97 ro recovery console=ttyS0

                             La captura de pantalla muestra la consola Serial con el valor cambiado.                                     

Pulse Ctrl-x para iniciar y cargar el kernel. Si todo va bien verá estas Opciones adicionales, que pueden ayudar a realizar otras opciones de recuperación

                             La captura de pantalla muestra la consola serie en el menú de recuperación, que ofrece opciones de recuperación adicionales.                                     

Configuración de Red Hat GRUB

Configuración de Red Hat 7.4+ GRUB

La configuración por defecto de /etc/default/grub en estas versiones está adecuadamente configurada

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL="serial console"
GRUB_SERIAL_COMMAND="serial"
GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0 earlyprintk=ttyS0"
GRUB_DISABLE_RECOVERY="true"

Habilitar la tecla Pet Sis

sysctl -w kernel.sysrq=1;echo kernel.sysrq = 1 >> /etc/sysctl.conf;sysctl -a | grep -i sysrq

Configuración de Red Hat 7.2 y 7.3 GRUB

El archivo a modificar es /etc/default/grub - una configuración por defecto se parecería a este ejemplo:

GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0 earlyprintk=ttyS0"
GRUB_DISABLE_RECOVERY="true"

Cambia las siguientes líneas en /etc/default/grub

GRUB_TIMEOUT=1 

to

GRUB_TIMEOUT=5
GRUB_TERMINAL_OUTPUT="console"

to

GRUB_TERMINAL="serial console"

Añade también esta línea:

GRUB_SERIAL_COMMAND="serial –speed=115200 –unit=0 –word=8 –parity=no –stop=1″

/etc/default/grub debería tener ahora un aspecto similar al de este ejemplo:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL="serial console"
GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0 earlyprintk=ttyS0"
GRUB_DISABLE_RECOVERY="true"

Completa y actualiza la configuración de grub usando

grub2-mkconfig -o /boot/grub2/grub.cfg

Establece el parámetro del núcleo SysRq:

sysctl -w kernel.sysrq = 1;echo kernel.sysrq = 1 >> /etc/sysctl.conf;sysctl -a | grep -i sysrq

Alternativamente, puede configurar GRUB y SysRq utilizando una sola línea en el intérprete de comandos o a través del comando Ejecutar. Haga una copia de seguridad de sus archivos antes de ejecutar este comando:

cp /etc/default/grub /etc/default/grub.bak; sed -i 's/GRUB_TIMEOUT=1/GRUB_TIMEOUT=5/g' /etc/default/grub; sed -i 's/GRUB_TERMINAL_OUTPUT="console"/GRUB_TERMINAL="serial console"/g' /etc/default/grub; echo "GRUB_SERIAL_COMMAND=\"serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1\"" >> /etc/default/grub;grub2-mkconfig -o /boot/grub2/grub.cfg;sysctl -w kernel.sysrq=1;echo kernel.sysrq = 1 /etc/sysctl.conf;sysctl -a | grep -i sysrq

Configuración GRUB de Red Hat 6.x

El archivo a modificar es /boot/grub/grub.conf. El valor timeout determinará durante cuánto tiempo se muestra GRUB.

#boot=/dev/vda
default=0
timeout=15
splashimage=(hd0,0)/grub/splash.xpm.gz
#hiddenmenu
serial --unit=0 --speed=9600
terminal serial
terminal --timeout=5 serial console

La última línea terminal --timeout=5 consola serie aumentará aún más el tiempo de espera de GRUB añadiendo un aviso de 5 segundos mostrando Pulse cualquier tecla para continuar.

                             La captura de pantalla muestra una consola con la salida.                                     

El menú GRUB debería aparecer en pantalla durante el tiempo de espera configurado=15 sin necesidad de pulsar Esc. Asegúrese de hacer clic en la consola del navegador para activar el menú y seleccionar el kernel deseado.

                             La captura de pantalla muestra una consola con dos opciones de Linux.                                     

SUSE

SLES 12 SP1

O bien utilizar el cargador de arranque YaST según los documentos oficiales.

O añadir/cambiar a /etc/default/grub los siguientes parámetros:

GRUB_TERMINAL=serial
GRUB_TIMEOUT=5
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=9600 --parity=no"

```console
Verify that ttys0 is used in the GRUB_CMDLINE_LINUX or GRUB_CMDLINE_LINUX_DEFAULT

```console
GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0,9600n"

Vuelva a crear el grub.cfg

grub2-mkconfig -o /boot/grub2/grub.cfg

SLES 11 SP4

La consola serie aparece y muestra mensajes de arranque, pero no muestra una ventana inicio de sesión:.

Abra una sesión ssh en la VM y actualice el archivo /etc/inittab des-comentando esta línea:

#S0:12345:respawn:/sbin/agetty -L 9600 ttyS0 vt102

A continuación, ejecute el comando

telinit q

Para habilitar GRUB, se deben realizar los siguientes cambios en /boot/grub/menu.lst

timeout 5
serial --unit=0 --speed=9600 --parity=no
terminal --timeout=5 serial console

root (hd0,0)
kernel /boot/vmlinuz-3.0.101-108.74-default root=/dev/disk/by-uuid/ab6b62bb--
1a8c-45eb-96b1-1fbc535b9265 disk=/dev/sda  USE_BY_UUID_DEVICE_NAMES=1 earlyprinttk=ttyS0 console=ttyS0 showopts vga=0x314

Esta configuración permitirá que durante 5 segundos aparezca en la consola el mensaje Pulse cualquier tecla para continuar.

A continuación, mostrará el menú GRUB durante 5 segundos adicionales - pulsando la flecha hacia abajo interrumpirá el contador y seleccionará un kernel que desee arrancar o bien añada la palabra clave single para el modo de usuario único que requiere que se establezca la contraseña de raíz.

Añadiendo el comando init=/bin/bash cargará el kernel pero se asegurará de que el programa TINIC se reemplaza por un shell bash.

Accederás a un intérprete de comandos sin tener que introducir una contraseña. A continuación, puede proceder a actualizar la contraseña de las cuentas Linux o realizar otros cambios de configuración.

Forzar el kernel a una ventana bash

Tener acceso a GRUB le permite interrumpir el proceso de inicialización esta interacción es útil para muchos procedimientos de recuperación. Si no tienes contraseña de raíz y un único usuario requiere que tengas una contraseña de raíz, puedes arrancar el kernel sustituyendo el programa TINIC por una ventana bash - esta interrupción se puede conseguir añadiendo init=/bin/bash a la línea de arranque del kernel.

                             La captura de pantalla muestra una consola con la línea de arranque actualizada.                                     

Vuelva a montar su / (raíz) sistema de archivos RW utilizando el comando

mount -o remount,rw /

                             La captura de pantalla muestra una consola con una acción de remontaje.                                     

Ahora puede realizar el cambio de contraseña de raíz o muchos otros cambios de configuración de Linux

                             La captura de pantalla muestra una consola donde se puede cambiar la contraseña de raíz y otra configuración.                                     

Reinicie la MV con

/sbin/reboot -f

Modo de usuario único

Otra posibilidad es que necesites acceder a la máquina virtual en modo de usuario único o de emergencia. Seleccione el núcleo que desea arrancar o interrumpir utilizando las teclas de flecha. Introduzca el modo deseado añadiendo la palabra clave single o 1 a la línea de arranque del kernel. En los sistemas RHEL, también puede añadir rd.break.

Para obtener más información sobre cómo acceder al modo de usuario único, consulte este doc.

                             Captura de pantalla de la entrada *Ubuntu en la pantalla de arranque del SO seleccionado en GRUB.                                     

Pasos siguientes

Más información sobre Azure Serial Console

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.