Recupera una VM inaccesible


Si, por algún motivo, no se puede acceder a la VM de Linux, puedes intentar recuperarla mediante los siguientes pasos.

Roles obligatorios

Para obtener los permisos que necesitas a fin de recuperar una VM, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Estos roles predefinidos contienen los permisos necesarios para recuperar una VM. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para recuperar una VM:

  • compute.instances.create en el proyecto
  • compute.disks.create en el proyecto
  • compute.instances.get en el proyecto
  • compute.disks.createSnapshot en discos
  • compute.instances.attachDisk en una VM nueva
  • compute.disks.use en el disco
  • compute.instances.start en una VM nueva e inaccesible
  • compute.instances.stop en una VM nueva e inaccesible

También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

Recupera una VM

Si no puedes conectarte a la VM o el disco de arranque está lleno, debes crear una VM temporal para recuperar la VM inaccesible.

  1. Detén la VM inaccesible (opcional).
  2. Crea una instantánea desde el disco de arranque de la VM inaccesible.
  3. Crea una VM temporal con una imagen pública más cercana al SO de la VM inaccesible.
  4. Verifica si puedes conectarte a la VM temporal mediante SSH.
  5. Agrega un disco adicional a la VM temporal mediante los siguientes pasos:

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

      Ir a Instancias de VM

    2. Haz clic en el nombre de la VM temporal que creaste.

    3. Haz clic en  Editar.

    4. En Discos adicionales, haz clic en Agregar disco nuevo y, luego, haz lo siguiente:

      1. Agrega el nombre del disco, como my-recovery-disk
      2. En Tipo de fuente, selecciona la pestaña Instantánea.
      3. En el menú desplegable Instantánea de origen, selecciona la instantánea de la VM de origen que creaste antes en estos pasos.
      4. Haz clic en Listo.
    5. Haz clic en Guardar.

  6. Conéctate a la VM temporal mediante SSH.

  7. Ejecuta el siguiente comando:

    ls -l /dev/disk/by-id/google-*

    El resultado será similar al siguiente ejemplo:

      /dev/disk/by-id/google-my-vm -> ../../sda
      /dev/disk/by-id/google-my-vm-part1 -> ../../sda1
      /dev/disk/by-id/google-my-vm-part14 -> ../../sda14
      /dev/disk/by-id/google-my-vm-part15 -> ../../sda15
      /dev/disk/by-id/google-my-recovery-disk -> ../../sdb
      /dev/disk/by-id/google-my-recovery-disk-part1 -> ../../sdb1
      /dev/disk/by-id/google-my-recovery-disk-part2 -> ../../sdb2
      /dev/disk/by-id/google-my-recovery-disk-part5 -> ../../sdb5
    

    Usa los symlinks (/dev/disk/by-id/google-my-recovery-disk-partN) para ubicar el dispositivo y las particiones subyacentes del disco recién agregado, por ejemplo, /dev/sdb1.

    El symlink para el disco es google-DISK_NAME o, si especificaste un nombre de dispositivo personalizado para el disco, google-DEVICE_NAME. Toma nota del nombre del dispositivo que el symlink del disco nuevo.

  8. Crea un punto de activación en /mnt/newdisk:

    sudo mkdir /mnt/newdisk

  9. Activa la partición de disco adicional en el punto de activación /mnt/newdisk:

     sudo mount -o discard,defaults DISK_NAME /mnt/newdisk

    Reemplaza DISK_NAME por el nombre del dispositivo que anotaste antes en estos pasos, por ejemplo, /dev/sdb1.

    Si ves el error Filesystem has duplicate UUID XXXXXX - can't mount, mount: /mnt/newdisk: wrong fs type, bad option o bad superblock on /dev/sdb, usa el siguiente comando:

     sudo mount -o nouuid DISK_NAME /mnt/newdisk

    El sistema de archivos de la VM inaccesible ahora está activado en /mnt/newdisk. Puedes navegar por el sistema de archivos, cambiar los archivos de configuración, solucionar problemas o recuperar datos.

Revierte los cambios y, luego, inicia la VM inaccesible

Una vez que se soluciona el problema o se recuperan los datos, debes recuperar la VM real. Sigue estos pasos para restablecer la VM original:

  1. Desactiva el disco adicional que está activado en /mnt/newdisk en la VM temporal:

     cd ~
     sudo umount /mnt/newdisk

  2. En la consola de Google Cloud, ve a la página Instancias de VM.

    Ir a Instancias de VM

    1. Selecciona la VM temporal que creaste.

    2. Haz clic en Editar.

    3. En Discos adicionales, haz clic en en el disco que creaste en pasos anteriores para desconectar el disco adicional de la VM temporal.

    4. Haz clic en Guardar.

  3. Ve a la página Instancias de VM en la consola de Google Cloud.

    Ir a Instancias de VM

    1. Si la VM inaccesible aún se está ejecutando, detenla.

    2. Haz clic en el nombre de la VM que acabas de detener y, luego, en Editar.

    3. En Disco de arranque, haz clic en Desconectar disco de libro para desconectar el disco de arranque saliente de la VM inaccesible.

    4. A continuación, haz clic en CONFIGURAR DISK BOOT para conectar el disco que creaste y corregiste antes en Recupera una VM en esta página.

      1. En la sección Disco de arranque, haz clic en la pestaña Discos existentes.
      2. En la lista desplegable, selecciona el disco que creaste en la sección anterior, por ejemplo, my-recovery-disk.
      3. Haz clic en Seleccionar y, luego, en Guardar.
    5. Inicia la VM.

  4. Ahora deberías poder conectarte a la VM con SSH.