Soluciona problemas de inicio de VM

En este documento, se incluye información para solucionar problemas de inicio de VM provocados por errores de cuota, discos de arranque ysecuencias de comandos de inicio.

Errores de cuota

Si ves un error de cuota cuando intentas iniciar una instancia, debes solicitar más cuota de CPU. Para obtener más información, consulta la sección Instancias de VM del documento Cuotas de recursos.

Discos de arranque

Si tu instancia no se inicia y no puedes conectarte a ella o acceder a través de la consola en serie interactiva, identifica el motivo por el que el disco de arranque no completa el proceso de inicio y arranque.

Identifica el motivo por el que el disco de arranque no se inicia

  • Verifica que el disco de arranque no esté lleno.

    Si el disco de arranque está lleno por completo y el sistema operativo no admite el cambio de tamaño automático, no podrás conectarte a la instancia. Debes crear una nueva instancia y volver a crear el disco de arranque. Consulta la sección Recupera una instancia inaccesible o un disco de arranque completo.

  • Examina el resultado del puerto en serie de la instancia de máquina virtual.

    El BIOS, el bootloader y el kernel de una instancia imprimirán sus mensajes de depuración en el resultado del puerto en serie de la instancia y proporcionarán información valiosa sobre los errores o problemas que experimentó la instancia. Si habilitas el registro de salida del puerto en serie en Cloud Logging, puedes acceder a esta información aunque la instancia no esté en ejecución.

  • Habilita el acceso interactivo a la consola en serie.

    Puedes habilitar el acceso interactivo a la consola en serie de una instancia para poder acceder y depurar problemas de inicio desde la instancia, sin necesidad de que la instancia se inicie por completo. Para obtener más información, consulta Interactúa con la consola en serie.

  • Verifica que el disco tenga un sistema de archivos válido.

    Si el sistema de archivos está dañado o no es válido, no podrás iniciar la instancia. Valida el sistema de archivos del disco:

    1. Separa el disco en cuestión de cualquier instancia a la que esté conectado, si corresponde:

      gcloud compute instances delete old-instance --keep-disks boot

    2. Inicia una nueva instancia con la última imagen proporcionada por Google:

      gcloud compute instances create debug-instance

    3. Conecta el disco como uno que no sea de arranque, pero no lo actives. Reemplaza DISK con el nombre del disco que no arrancará. Ten en cuenta el nombre del dispositivo que identifica el disco en la instancia:

      gcloud compute instances attach-disk debug-instance 
      --disk DISK
      --device-name debug-disk

    4. Conéctate a la instancia:

      gcloud compute ssh debug-instance

    5. Busca la partición raíz del disco, que se identifica con la notación part1. En este caso, la partición raíz del disco está en /dev/sdb1:

      ls -l /dev/disk/by-id
      total 0
      lrwxrwxrwx 1 root root  9 Jan 22 17:09 google-debug-disk -> ../../sdb
      lrwxrwxrwx 1 root root 10 Jan 22 17:09 google-debug-disk-part1 -> ../../sdb1
      lrwxrwxrwx 1 root root  9 Jan 22 17:02 google-persistent-disk-0 -> ../../sda
      lrwxrwxrwx 1 root root 10 Jan 22 17:02 google-persistent-disk-0-part1 -> ../../sda1
      lrwxrwxrwx 1 root root  9 Jan 22 17:09 scsi-0Google_PersistentDisk_debug-disk -> ../../sdb
      lrwxrwxrwx 1 root root 10 Jan 22 17:09 scsi-0Google_PersistentDisk_debug-disk-part1 -> ../../sdb1
      lrwxrwxrwx 1 root root  9 Jan 22 17:02 scsi-0Google_PersistentDisk_persistent-disk-0 -> ../../sda
      lrwxrwxrwx 1 root root 10 Jan 22 17:02 scsi-0Google_PersistentDisk_persistent-disk-0-part1 -> ../../sda1
      
    6. Ejecuta una verificación del sistema de archivos en la partición raíz:

      sudo fsck /dev/sdb1
      fsck from util-linux 2.20.1
      e2fsck 1.42.5 (29-Jul-2012)
      /dev/sdb1: clean, 19829/655360 files, 208111/2621184 blocks
      

    7. Activa el sistema de archivos:

       sudo mkdir /mydisk
      
       sudo mount /dev/sdb1 /mydisk
      
    8. Verifica que el disco tenga archivos kernel:

       ls /mydisk/boot/vmlinuz-*
      /mydisk/boot/vmlinuz-3.2.0-4-amd64
      
  • Comprueba que el disco tenga un registro de arranque maestro (MBR) válido.

    Ejecuta el siguiente comando en la instancia de depuración que conectó el disco de arranque persistente, como /dev/sdb:

     sudo parted /dev/sdb print
    

    Si el MBR es válido, se incluye información sobre el sistema de archivos:

     Disk /dev/sdb: 10.7GB
     Sector size (logical/physical): 512B/4096B
     Partition Table: msdos
     Disk Flags:
     Number  Start   End     Size    Type     File system  Flags
      1      2097kB  10.7GB  10.7GB  primary  ext4         boot
     

Corrige el problema de arranque

Después de identificar dónde falla el proceso de inicio y arranque, puedes corregir el problema mediante una de las siguientes acciones:

Crea un disco de arranque independiente

Activa tu imagen importada en un disco secundario que esté conectado a una instancia de VM temporal. Usa Cloud Console o la herramienta de gcloud para crear un disco independiente a partir de la imagen que subiste y crea una VM temporal con el disco independiente conectado. Puedes usar esta instancia para modificar archivos en el disco independiente y solucionar problemas que hacen que la imagen no se inicie.

Console

Crea un disco independiente a partir de la imagen de disco de arranque que importaste. Como alternativa, puedes desconectar un disco de arranque de una instancia y crear la instancia con ese disco de arranque desconectado.

  1. En Cloud Console, ve a la página Discos.

    Ir a Discos

  2. Haz clic en Crear disco.
  3. En la página Crear un disco nuevo, especifica los siguientes atributos:
    • Zona: Select a zone near you. You must use this same zone when you create your temporary instance.
    • Tipo de fuente del disco: Imagen
    • Imagen de origen: Specify the name of the boot disk image that you imported.
  4. Para crear el disco, haz clic en Crear.

Crea una instancia temporal a la que puedas adjuntar el disco independiente y configura el bootloader para que funcione en un entorno de Cloud Console.

  1. En Google Cloud Console, ve a la página Instancias de VM.

    Ir a Instancias

  2. Haz clic en el botón Crear instancia.

  3. En la página Crear una instancia, especifica un nombre de instancia y una zona para ubicarla. La zona debe ser la misma en la que creaste el disco independiente.

  4. Expande la sección Administración, seguridad, discos, herramientas de redes, instancia única.

  5. En la pestaña Discos de la sección Discos adicionales, haz clic en Adjuntar disco existente. Aparecerá una nueva sección.

  6. En la sección Disco, selecciona el disco independiente que creaste en la lista desplegable. Esto adjunta el disco independiente a la instancia para que puedas activarlo y modificar su contenido más adelante.

  7. Haz clic en Listo para terminar de adjuntar el disco.

  8. Haz clic en el botón Crear para crear la instancia.

gcloud

Crea un disco independiente a partir de la imagen de disco de arranque que importaste. Como alternativa, puedes quitar un disco de arranque de una instancia y crear la instancia con ese disco de arranque separado.

 gcloud compute disks create DISK_NAME 
--zone ZONE
--image IMAGE_NAME

Reemplaza lo siguiente:

  • DISK_NAME: Es el nombre del nuevo disco independiente
  • ZONE: Es una zona cercana a ti Debes usar esta misma zona cuando crees la instancia temporal.
  • IMAGE_NAME: Es el nombre de la imagen del disco de arranque que importaste

Crea una instancia temporal a la que puedas adjuntar el disco independiente y configura el bootloader para que funcione en un entorno de Cloud Console.

gcloud compute instances create INSTANCE_NAME --zone ZONE --disk name=DISK_NAME

Reemplaza lo siguiente:

  • INSTANCE_NAME: Es un nombre único para tu instancia
  • ZONE: Es la zona en la que creaste el disco independiente
  • DISK_NAME: Es el nombre del disco independiente que creaste a partir de la imagen del disco de arranque importada

Después de crear la instancia con el disco independiente adjunto, tendrás un entorno virtual en el que podrás modificar el bootloader de la imagen de disco de arranque original.

Configura el disco de arranque

Conéctate a la instancia, activa el disco independiente y configura el bootloader para que se inicie correctamente en Compute Engine.

  1. Conéctate a la instancia temporal mediante SSH desde el navegador o el comando gcloud compute ssh.
  2. Usa el comando blkid para identificar el disco que deseas modificar y las particiones que necesitas activar. En este ejemplo, /dev/sdb es el disco que importaste.

    lsblk
    
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   10G  0 disk
    └─sda1   8:1    0   10G  0 part /
    sdb      8:16   0  100G  0 disk
    ├─sdb1   8:17   0   96G  0 part
    ├─sdb2   8:18   0    1K  0 part
    └─sdb5   8:21   0    4G  0 part
    
  3. Activa la partición raíz desde el disco independiente al directorio /tmp. En este ejemplo, /dev/sdb1 es la partición raíz y las demás no requieren ninguna modificación. Es posible que tu esquema de partición requiera que actives varias particiones para acceder a todos los archivos que debes cambiar.

    sudo mount /dev/sdb1 /tmp
    
  4. Edita archivos que puedan hacer que el disco falle en el proceso de arranque. Para obtener más información, consulta las instrucciones de configuración del bootloader.

  5. Desactiva el disco de arranque de la instancia temporal.

    sudo umount /tmp
    

Usa el disco de arranque

Cuando termines de configurar este disco, desconéctalo y úsalo como disco de arranque para una nueva instancia.

Console

Quita el disco independiente de la instancia temporal.

  1. En Google Cloud Console, ve a la página Instancias de VM.

    Ir a Instancias

  2. En la lista de instancias, haz clic en el nombre de la instancia temporal donde modificaste el disco de arranque independiente. Se abre la página de detalles de la instancia.

  3. En la parte superior de esta página, haz clic en Editar.

  4. En Discos adicionales, haz clic en la X junto al disco independiente para indicar que deseas desconectarlo de la instancia temporal.

  5. Haz clic en Guardar para guardar los cambios.

Usa el disco independiente desconectado para crear una instancia.

  1. En Google Cloud Console, ve a la página Instancias de VM.

    Ir a Instancias

  2. Haz clic en el botón Crear instancia.

  3. En la página Crear una instancia, especifica un nombre de instancia y una zona para ubicarla. La zona debe ser la misma donde creaste tu disco independiente.

  4. En Disco de arranque, haz clic en Cambiar para comenzar a configurar el disco de arranque.

  5. En la pestaña Discos existentes, elige el disco de arranque independiente para usarlo como el disco de arranque de esta nueva instancia.

  6. Haz clic en el botón Crear para crear la instancia.

gcloud

Quita el disco independiente de la instancia temporal.

gcloud compute instances detach-disk INSTANCE_NAME --disk DISK_NAME

Reemplaza lo siguiente:

  • INSTANCE_NAME: Un nombre único para tu instancia
  • DISK_NAME: Es el nombre del nuevo disco independiente

Usa el disco independiente desconectado para crear una instancia.

gcloud compute instances create INSTANCE_NAME --zone ZONE --disk name=DISK_NAME,boot=yes

Reemplaza lo siguiente:

  • INSTANCE_NAME: Es un nombre único para tu instancia
  • ZONE: Es la zona en la que se encuentra el disco independiente
  • DISK_NAME: Es el nombre del disco independiente que creaste a partir de la imagen del disco de arranque importada

Prueba la instancia que creaste con el disco de arranque modificado. Si aún no puedes conectarte a la instancia, vuelve a leer el resultado de la consola en serie para identificar dónde falla el proceso de inicio. Repite el proceso de solución de problemas hasta que corrijas los problemas de la imagen de disco de arranque.

Secuencia de comandos de inicio

Los problemas de la secuencia de comandos de inicio pueden estar asociados a la conectividad de red con el servidor de metadatos:

  • En particular para las VM de Linux, Compute Engine espera a que se establezca una conexión con el servidor de metadatos antes de intentar obtener información de él, como una secuencia personalizada de comandos de inicio o de cierre. Si el servidor de metadatos no responde o la red aún no está configurada, la VM no termina de iniciarse.

  • En particular para las VM de Linux con imágenes anteriores a v20160606, la salida del puerto en serie muestra el mensaje "Waiting for metadata server, attempt N", en el que N es la cantidad de intentos realizados.

    Este problema puede durar hasta siete minutos debido a un problema transitorio de la red que se resuelve por sí solo. Si el problema no se resuelve después de siete minutos, vuelve a crear la instancia de VM.