Solucionar problemas de inicio de máquinas virtuales


Este documento incluye información para solucionar problemas de inicio de VMs debido a errores de cuota y discos de arranque.

Errores de cuota

Si recibes un error de cuota al intentar iniciar una instancia, debes solicitar cuota de CPU adicional. Para obtener más información, consulta la sección Instancias de VM de la documentación sobre cuotas de asignación de Compute Engine.

Discos de arranque

Si tu instancia no se inicia y no puedes conectarte a ella ni iniciar sesión a través de la consola serie interactiva, identifica el motivo por el que el disco de arranque no completa el proceso de arranque e inicio.

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

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

    Si el disco de arranque está completamente lleno y tu sistema operativo no admite el cambio de tamaño automático, no podrás conectarte a tu instancia. Debes crear una instancia y volver a crear el disco de arranque. Para obtener más información, consulta Recuperar VMs o discos de arranque completos.

  • Examina la salida del puerto serie de la instancia de la máquina virtual.

    El BIOS, el gestor de arranque y el kernel de una instancia imprimen sus mensajes de depuración en la salida del puerto serie de la instancia, lo que proporciona información valiosa sobre los errores o problemas que haya experimentado la instancia. Si habilitas el registro de salida del puerto serie en Cloud Logging, podrás acceder a esta información aunque tu instancia no esté en ejecución.

  • Habilita el acceso interactivo a la consola en serie.

    Puedes habilitar el acceso interactivo a la consola serie de una instancia para iniciar sesión y depurar problemas de arranque desde la instancia sin que esta tenga que arrancar por completo. Para obtener más información, consulta Solucionar problemas con la consola serie.

  • Comprobar que no se esté clonando el disco de arranque

    Si se está clonando el disco de arranque, no podrás iniciar la VM y verás un error similar al siguiente.

    Failed to start example-vm: The instance resource 'projects/example-project/zones/us-central1-b/instances/example-vm' is already being used by 'projects/example-project/zones/us-central1-b/disks/clone'
    

    Espera a que se complete la clonación y, a continuación, inicia la VM.

  • Verifica que no se esté creando una instantánea del disco de arranque

    Si se está creando una captura del disco de arranque, no podrás iniciar la VM y verás un error similar al siguiente:

    The instance resource 'projects/example-project/zones/asia-east1-b/instances/example-vm' is already being used by 'projects/example-project/global/snapshots/example-vm-prod-asia-east1-b-abc'
    

    Espera a que se complete la instantánea y, a continuación, inicia la VM.

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

    Si tu sistema de archivos está dañado o no es válido por algún otro motivo, no podrás iniciar tu instancia. Valida el sistema de archivos de tu disco:

    1. Desvincula el disco en cuestión de cualquier instancia a la que esté vinculado, si procede:

      gcloud compute instances delete old-instance --keep-disks boot
      
    2. Inicia una instancia con la imagen más reciente proporcionada por Google:

      gcloud compute instances create debug-instance
    3. Conecta el disco como un disco que no sea de arranque, pero no lo montes. Sustituye DISK por el nombre del disco que no se inicia. Anota 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 comprobació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. Monta el sistema de archivos:

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

       ls /mydisk/boot/vmlinuz-*
       /mydisk/boot/vmlinuz-3.2.0-4-amd64
       

  • Verifica que el disco tenga un registro de arranque maestro (MBR) válido.

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

    sudo parted /dev/sdb print
    

    Si tu MBR es válido, se mostrará 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
    

Corregir el problema de arranque

Una vez que hayas identificado en qué parte falla el proceso de arranque e inicio, puedes corregir el problema completando una de las siguientes acciones:

Crear un disco de arranque independiente

Monta la imagen importada en un disco secundario conectado a una instancia de VM temporal. Usa la Google Cloud consola o la CLI de gcloud para crear un disco independiente a partir de la imagen que has subido y crear una VM temporal con el disco independiente conectado. Puedes usar esta instancia para modificar archivos en el disco independiente y solucionar los problemas que provocan que la imagen no se inicie.

Consola

Crea un disco independiente a partir de la imagen del disco de arranque que has importado. También puedes desconectar un disco de arranque de una instancia y crear la instancia con ese disco de arranque desconectado.

  1. In the Google Cloud console, go to the Disks page.

    Go to Disks

  2. Click Create disk.
  3. On the Create a disk page, specify the following attributes:
    • Zone: Select a zone near you. You must use this same zone when you create your temporary instance.
    • Disk source type: Image
    • Source image: Specify the name of the boot disk image that you imported.
  4. To create the disk, click Create.

Crea una instancia temporal en la que puedas conectar el disco independiente y configurar el gestor de arranque para que funcione en un entorno de Google Cloud consola.

  1. En la consola de Google Cloud , 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 para la instancia y una zona en la que ubicarla. La zona debe ser la misma en la que has creado el disco independiente.

  4. Despliega la sección Gestión, seguridad, discos, redes, único cliente.

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

  6. En la sección Disco, selecciona el disco independiente que has creado en la lista desplegable. De esta forma, el disco independiente se adjunta a la instancia para que puedas montarlo y modificar su contenido más adelante.

  7. Haz clic en Hecho 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 del disco de arranque que has importado. También puedes desconectar un disco de arranque de una instancia y crear la instancia con ese disco de arranque desconectado.

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

Haz los cambios siguientes:

  • DISK_NAME: el nombre del nuevo disco independiente.

  • ZONE: una zona cercana a ti. Debes usar la misma zona al crear la instancia temporal.

  • IMAGE_NAME: el nombre de la imagen del disco de arranque que has importado.

Crea una instancia temporal en la que puedas conectar el disco independiente y configurar el gestor de arranque para que funcione en un entorno de Google Cloud consola.

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

Haz los cambios siguientes:

  • INSTANCE_NAME: un nombre único para tu instancia

  • ZONE: la zona en la que has creado el disco independiente

  • DISK_NAME: el nombre del disco independiente que has creado a partir de la imagen de disco de arranque importada

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

Configurar el disco de arranque

Conéctate a la instancia, monta el disco independiente y configura el gestor de arranque para que se inicie correctamente en Compute Engine.

  1. Conéctate a la instancia temporal mediante SSH en el navegador o el comando gcloud compute ssh.
  2. Usa el comando blkid para identificar el disco que quieras modificar y las particiones que necesites montar. En este ejemplo, /dev/sdb es el disco que has importado.

    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. Monta la partición raíz del disco independiente en el directorio /tmp. En este ejemplo, /dev/sdb1 es la partición raíz y las demás particiones no requieren ninguna modificación. Es posible que tu esquema de particiones requiera que montes varias particiones antes de poder acceder a todos los archivos que necesites cambiar.

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

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

    sudo umount /tmp
    

Usar el disco de arranque

Cuando hayas terminado de configurar este disco, desconéctalo y úsalo como disco de arranque para la nueva instancia.

Consola

Desconecta el disco independiente de la instancia temporal.

  1. En la consola de Google Cloud , 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 en la que has modificado el disco de arranque independiente. Se abrirá la página de detalles de la instancia.

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

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

  5. Haz clic en Guardar para guardar los cambios.

Usa el disco independiente separado para crear una instancia.

  1. En la consola de Google Cloud , 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 para la instancia y una zona en la que ubicarla. La zona debe ser la misma en la que has creado el disco independiente.

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

  5. En la pestaña Existing disks (Discos existentes), elige el disco de arranque independiente que quieras usar como disco de arranque de esta nueva instancia.

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

gcloud

Desconecta el disco independiente de la instancia temporal.

gcloud compute instances detach-disk INSTANCE_NAME \
    --disk name=DISK_NAME

Haz los cambios siguientes:

  • INSTANCE_NAME: un nombre único para tu instancia.
  • DISK_NAME: el nombre del nuevo disco independiente.

Usa el disco independiente separado para crear una instancia.

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

Haz los cambios siguientes:

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

Prueba la instancia que has creado con el disco de arranque modificado. Si sigues sin poder conectarte a la instancia, consulta de nuevo la salida del puerto serie para identificar en qué punto falla el proceso de arranque. Repite el proceso de solución de problemas hasta que corrijas los problemas con la imagen del disco de arranque.