Solucionar problemas de arranque de máquinas virtuales Linux debido a errores fstab

Nota:

CentOS al que se hace referencia en este artículo es una distribución de Linux y llegará al final de la vida útil (EOL). Considere su uso y planifique en consecuencia. Para obtener más información, consulte Guía de fin de vida de CentOS.

La tabla de sistemas de archivos de Linux, fstab es una tabla de configuración que está diseñada para configurar reglas donde sistemas de archivos específicos son detectados y montados de manera ordenada durante el proceso de arranque del sistema. Este artículo discute múltiples condiciones en las que una configuración fstab incorrecta puede conducir a un problema de arranque y proporciona una guía para la solución de problemas.

A continuación se enumeran algunas razones comunes que pueden conducir a problemas de arranque de la máquina virtual debido a una configuración incorrecta de fstab:

  • Se utiliza el nombre tradicional del sistema de archivos en lugar del Identificador Único Universal (UUID) del sistema de archivos.
  • Se utiliza un UUID incorrecto.
  • Existe una entrada para un dispositivo no conectado sin la opción nofail en la configuración fstab.
  • Entrada incorrecta en la configuración de fstab.

Identificar problemas de fstab

Compruebe el estado de arranque actual de la máquina virtual en el registro de serie dentro de la hoja [Boot diagnostics] (/azure/virtual-machines/boot-diagnostics#boot-diagnostics-view) en el portal de Azure. La VM estará en Modo de Emergencia. Verá entradas de registro que se asemejan al siguiente ejemplo que lleva al estado de Modo de Emergencia:

[K[[1;31m TIME [0m] Timed out waiting for device dev-incorrect.device.
[[1;33mDEPEND[0m] Dependency failed for /data.
[[1;33mDEPEND[0m] Dependency failed for Local File Systems.
…
Welcome to emergency mode! After logging in, type "journalctl -xb" to viewsystem logs, "systemctl reboot" to reboot, "systemctl default" to try again to boot into default mode.
Give root password for maintenance
(or type Control-D to continue)

Nota:

"/data" es un ejemplo de punto de montaje utilizado. El fallo de dependencia para el punto de montaje del sistema de archivos diferirá en función de los nombres utilizados.

Solución

Hay 2 maneras de resolver el problema:

Reparar la VM en línea

Utilizar la consola serie

  1. Conéctese a la consola serie de la VM desde el portal de Azure.
  2. Es necesario acceder manualmente al modo de usuario único para reconfigurar fstab. Los pasos pueden variar en función del tipo de sistema operativo Linux utilizado y del acceso a la cuenta raíz. Siga la documentación modo de usuario único para acceder al modo de usuario único para cada una de las imágenes de socio Linux compatibles.
Pasos para solucionar problemas de Fstab
  1. Una vez que la máquina virtual ha arrancado en modo de usuario único. Utilice su editor de texto favorito para abrir el archivo fstab.

    vi /etc/fstab
    
  2. Revise los sistemas de archivos listados en /etc/fstab. Cada línea del archivo fstab indica un sistema de archivos que se monta cuando se inicia la máquina virtual. Para obtener más información sobre la sintaxis del archivo fstab, ejecute el comando man fstab. Para solucionar un fallo de arranque, revise la entrada del sistema de archivos que falló al montar. Es una buena práctica revisar cada línea para asegurarse de que es correcta tanto en estructura como en contenido. Algunos puntos a tener en cuenta para administrar correctamente un archivo fstab son los siguientes:

    • Los campos de cada línea están separados por tabuladores o espacios. Las líneas en blanco se ignoran. Las líneas que tienen un signo de número (#) como primer carácter son comentarios. Las líneas comentadas pueden permanecer en el archivo fstab, pero no serán procesadas. Le recomendamos que comente las líneas fstab de las que no esté seguro en lugar de eliminarlas.

    • Monte los discos de datos en las VM Azure utilizando el UUID de la partición del sistema de archivos. Para determinar el UUID del sistema de archivos, ejecute el comando blkid. Para obtener más información sobre la sintaxis, ejecute el comando man blkid. Ejemplo de entrada UUID en el archivo fstab:

      UUID=<UUID number here>  /data      xfs    defaults,nofail 0  0
      
    • Utilice la opción nofail en las entradas del sistema de archivos (discos de datos) para permitir que el inicio continúe incluso después de que se produzcan errores en las particiones de las entradas correspondientes. La opción nofail ayuda a garantizar que la VM se inicie incluso si el sistema de archivos está dañado o si no existe al inicio.

  3. Guarde los cambios en el archivo fstab.

  4. Utilice mount -a como mejor práctica después de realizar cambios en las entradas fstab. Esto volverá a ejecutar la configuración de fstab y notificará a los usuarios de cualquier error de sintaxis o de entrada existente.

  5. Una vez verificada la sintaxis y las entradas, reinicie la máquina virtual utilizando el siguiente comando.

    reboot -f
    
  6. Si el comentario o la corrección de las entradas se ha realizado correctamente, el sistema debería llegar a un prompt bash en el portal. Compruebe si puede conectarse a la máquina virtual.

Nota:

También puedes usar el comando "ctrl+x" que también reiniciará la VM.

Reparación de la máquina virtual sin conexión

Si el acceso a la consola de serie de la VM no está disponible, una solución alternativa es reparar la VM sin conexión. Hay dos maneras de adoptar un enfoque fuera de línea:

Utilizar Azure Linux Auto Repair (ALAR)

Los scripts de reparación automática de Azure Linux (ALAR) forman parte de la extensión de reparación de VM descrita en Reparar una VM Linux mediante los comandos de reparación de máquinas virtuales de Azure. ALAR cubre la automatización de múltiples escenarios de reparación, incluidos los problemas /etc/fstab.

Los scripts ALAR utilizan el comando de extensión de reparación run y su opción --run-id. El script-id para la recuperación automatizada es: linux-alar2. Implemente los siguientes pasos para automatizar los errores fstab mediante el enfoque ALAR offline:

az vm repair create --verbose -g centos7 -n cent7 --repair-username rescue --repair-password 'password!234' --copy-disk-name  repairdiskcopy
az vm repair run --verbose -g centos7 -n cent7 --run-id linux-alar2 --parameters fstab --run-on-repair
az vm repair restore --verbose -g centos7 -n cent7

Nota:

El nombre del grupo de recursos "centos7", el nombre de la VM "cent7" y --nombre-disco-copia "repairdiskcopy" son ejemplos y los valores deben cambiarse en consecuencia.

El script de reparación fstab tomará una copia de seguridad del archivo original y eliminará cualquier línea del archivo /etc/fstab que no sea necesaria para arrancar un sistema. Después de iniciar con éxito el SO, edite de nuevo el fstab y corrija cualquier error que no haya permitido reiniciar el sistema anteriormente.

Alternativamente, una vez creada la máquina virtual de reparación, los cambios también se pueden implementar iniciando sesión manualmente en la máquina virtual de reparación, montando la copia adjunta del disco del sistema operativo y realizando cambios en su archivo fstab. Siga los pasos descritos aquí:

  • Cree una VM de reparación utilizando el comando az vm repair create.
  • Para montar y hacer chroot a los sistemas de archivos del disco del SO adjunto en una VM de rescate, siga las instrucciones detalladas de chroot.
  • A continuación, siga los mismos pasos fstab troubleshooting anteriores.
  • Una vez aplicados los cambios, se puede utilizar el comando az vm repair restore para realizar un intercambio automático del disco del SO con la VM original.

Utilizar el método manual

Si no es posible o falla la aproximación por consola serie y ALAR, la reparación debe realizarse manualmente. Siga estos pasos para conectar manualmente el disco del sistema operativo a una máquina virtual de recuperación e intercambiar el disco del sistema operativo con la máquina virtual original:

Una vez que el disco del SO se haya conectado correctamente a la máquina virtual de recuperación, siga las instrucciones detalladas de chroot para montar y hacer chroot a los sistemas de archivos del disco del SO conectado. A continuación, aplique pasos de solución de problemas de fstab para realizar los cambios oportunos en el archivo fstab del disco del SO problemático.

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.