Asegurarse proactivamente de que tiene acceso a GRUB y Pet Sis podría ahorrarle mucho tiempo de inactividad.
Se aplica a: ✔️ Máquinas virtuales Linux
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.
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.
Orden sugerido de los métodos de recuperación
Consola serie de Azure
Método del legado
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.
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í:
Una vez completado, puede intentar acceder a Pet Sis y debería ver que es posible reiniciar.
Seleccione el comando Reiniciar y Enviar Pet Sis.
El sistema debería registrar un mensaje de reinicio como el siguiente
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:
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
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
Seleccione la línea que muestra (modo de recuperación) no pulse enter sino pulse "e"
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
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
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.
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.
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.
Vuelva a montar su / (raíz) sistema de archivos RW utilizando el comando
mount -o remount,rw /
Ahora puede realizar el cambio de contraseña de raíz o muchos otros cambios de configuración de Linux
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.
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.