Solución de problemas de inicio de VM


Este documento incluye información sobre solución de problemas de inicio de VM debido a errores de cuota y discos de arranque .

Errores de cuota

Si recibe un error de cuota cuando intenta iniciar una instancia, debe solicitar una cuota de CPU adicional. Para obtener más información, consulte la sección Instancias de VM de la documentación de Cuotas de recursos.

Discos de arranque

Si su instancia no se inicia y no puede conectarse a ella o iniciar sesión a través de la consola serie interactiva, identifique la razón por la cual el disco de inicio no completa el proceso de inicio y arranque.

Identifique la razón por la cual el disco de arranque no arranca

  • Verifique que su disco de arranque no esté lleno.

    Si su disco de arranque está completamente lleno y su sistema operativo no admite el cambio de tamaño automático, no podrá conectarse a su instancia. Debe crear una nueva instancia y recrear el disco de arranque. Para obtener más información, consulte Recuperación de máquinas virtuales o discos de arranque completos .

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

    El BIOS, el cargador de arranque y el kernel de una instancia imprimen sus mensajes de depuración en la salida del puerto serie de la instancia, proporcionando información valiosa sobre cualquier error o problema que haya experimentado la instancia. Si habilita el registro de salida del puerto serie en Cloud Logging, puede acceder a esta información incluso cuando su instancia no se esté ejecutando.

  • Habilite el acceso interactivo a la consola serie.

    Puede habilitar el acceso interactivo a la consola serie de una instancia, de modo que pueda iniciar sesión y depurar problemas de inicio desde la instancia sin necesidad de que la instancia se inicie por completo. Para obtener más información, consulte Solución de problemas mediante la consola serie .

  • Verifique que la clonación del disco de arranque no esté en progreso

    Si la clonación del disco de arranque está en curso, no podrá iniciar la máquina virtual y verá 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'
    

    Espere a que se complete la clonación y luego inicie la VM.

  • Verifique que la instantánea del disco de arranque no esté en progreso

    Si se está realizando una instantánea del disco de arranque, no podrá iniciar la máquina virtual y verá 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'
    

    Espere a que se complete la instantánea y luego inicie la VM.

  • Verifique que su disco tenga un sistema de archivos válido.

    Si su sistema de archivos está dañado o no es válido, no podrá iniciar su instancia. Valide el sistema de archivos de su disco:

    1. Separe 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. Inicie una nueva instancia con la última imagen proporcionada por Google:

      gcloud compute instances create debug-instance
    3. Conecte su disco como un disco que no sea de arranque, pero no lo monte. Reemplace DISK con el nombre del disco que no arranca. Tenga 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éctese a la instancia:

      gcloud compute ssh debug-instance
      
    5. Busque 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. Ejecute 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. Monte su sistema de archivos:

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

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

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

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

    sudo parted /dev/sdb print
    

    Si su MBR es válido, enumera 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

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

Crear un disco de arranque independiente

Monte su imagen importada en un disco secundario conectado a una instancia de VM temporal. Usa la consola de Google Cloud o la CLI de gcloud para crear un disco independiente a partir de la imagen que subiste y crea una VM temporal con el disco independiente adjunto. Puede utilizar esta instancia para modificar archivos en el disco independiente y solucionar problemas que hacen que esa imagen no se inicie.

Consola

Cree un disco independiente a partir de la imagen del disco de arranque que importó. Como alternativa, puede desconectar un disco de arranque de una instancia y crear la instancia utilizando 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.

Cree una instancia temporal donde pueda conectar el disco independiente y configurar el gestor de arranque para que funcione en un entorno de consola de Google Cloud.

  1. En la consola de Google Cloud, vaya a la página de instancias de VM .

    Ir a instancias

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

  3. En la página Crear una instancia , especifique un nombre de instancia y una zona en la que ubicar la instancia. La zona debe ser la misma zona donde creó su disco independiente.

  4. Expanda la sección Administración, seguridad, discos, redes, arrendamiento exclusivo .

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

  6. En la sección Disco , seleccione el disco independiente que creó en la lista desplegable. Esto adjunta el disco independiente a la instancia para que pueda montarlo y modificar el contenido del disco más adelante.

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

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

nube de gcloud

Cree un disco independiente a partir de la imagen del disco de arranque que importó. Como alternativa, puede desconectar un disco de arranque de una instancia y crear la instancia utilizando ese disco de arranque desconectado.

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

Reemplace lo siguiente:

  • DISK_NAME : el nombre del nuevo disco independiente.

  • ZONE : una zona cerca de ti. Debes usar esta misma zona cuando creas la instancia temporal.

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

Cree una instancia temporal donde pueda conectar el disco independiente y configurar el gestor de arranque para que funcione en un entorno de consola de Google Cloud.

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

Reemplace lo siguiente:

  • INSTANCE_NAME : un nombre único para tu instancia

  • ZONE : la zona donde creó el disco independiente

  • DISK_NAME : el nombre del disco independiente que creó a partir de la imagen del disco de arranque importado

Después de crear la instancia con el disco independiente adjunto, tiene un entorno virtual donde puede modificar el gestor de arranque desde la imagen del disco de arranque original.

Configurar el disco de arranque

Conéctese a la instancia, monte el disco independiente y configure el gestor de arranque para que arranque correctamente en Compute Engine.

  1. Conéctese a la instancia temporal mediante SSH-in-browser o el comando gcloud compute ssh .
  2. Utilice el comando blkid para identificar el disco que desea modificar y las particiones que necesita montar. En este ejemplo, /dev/sdb es el disco que importó.

    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. Monte la partición raíz desde el disco independiente en el directorio /tmp . En este ejemplo /dev/sdb1 es la partición raíz y las otras particiones no requieren ninguna modificación. Es posible que su esquema de partición requiera que monte varias particiones antes de poder acceder a todos los archivos que necesita cambiar.

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

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

    sudo umount /tmp
    

Usando el disco de arranque

Cuando haya terminado de configurar este disco, sepárelo y utilícelo como disco de arranque para una nueva instancia.

Consola

Separe el disco independiente de la instancia temporal.

  1. En la consola de Google Cloud, vaya a la página de instancias de VM .

    Ir a instancias

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

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

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

  5. Haga clic en Guardar para guardar sus cambios.

Utilice el disco independiente desconectado para crear una instancia.

  1. En la consola de Google Cloud, vaya a la página de instancias de VM .

    Ir a instancias

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

  3. En la página Crear una instancia , especifique un nombre de instancia y una zona en la que ubicar la instancia. La zona debe ser la misma zona donde creó su disco independiente.

  4. En Disco de arranque , haga clic en Cambiar para comenzar a configurar su disco de arranque.

  5. En la pestaña Discos existentes , elija el disco de inicio independiente que desea utilizar como disco de inicio para esta nueva instancia.

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

nube de gcloud

Separe el disco independiente de la instancia temporal.

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

Reemplace lo siguiente:

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

Utilice el disco independiente desconectado para crear una instancia.

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

Reemplace lo siguiente:

  • INSTANCE_NAME : un nombre único para tu instancia
  • ZONE : la zona donde se encuentra el disco independiente
  • DISK_NAME : el nombre del disco independiente que creó a partir de la imagen del disco de arranque importado

Pruebe la instancia que creó usando el disco de arranque modificado. Si aún no puede conectarse a la instancia, vea nuevamente la salida del puerto serie para identificar dónde está fallando el proceso de inicio. Repita el proceso de solución de problemas hasta que corrija los problemas con la imagen del disco de arranque.