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:
-
Administrador de instancias de Compute (v1) (
roles/compute.instanceAdmin.v1
) - VMs que usan una cuenta de servicio:
Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser
)
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 proyectocompute.disks.create
en el proyectocompute.instances.get
en el proyectocompute.disks.createSnapshot
en discoscompute.instances.attachDisk
en una VM nueva-
compute.disks.use
en el disco compute.instances.start
en una VM nueva e inaccesiblecompute.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.
- Detén la VM inaccesible (opcional).
- Crea una instantánea desde el disco de arranque de la VM inaccesible.
- Crea una VM temporal con una imagen pública más cercana al SO de la VM inaccesible.
- Verifica si puedes conectarte a la VM temporal mediante SSH.
Agrega un disco adicional a la VM temporal mediante los siguientes pasos:
En la consola de Google Cloud, ve a la página Instancias de VM.
Haz clic en el nombre de la VM temporal que creaste.
Haz clic en
Editar.En Discos adicionales, haz clic en
Agregar disco nuevo y, luego, haz lo siguiente:- Agrega el nombre del disco, como my-recovery-disk
- En Tipo de fuente, selecciona la pestaña Instantánea.
- En el menú desplegable Instantánea de origen, selecciona la instantánea de la VM de origen que creaste antes en estos pasos.
- Haz clic en Listo.
Haz clic en Guardar.
Conéctate a la VM temporal mediante SSH.
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.
Crea un punto de activación en
/mnt/newdisk
:sudo mkdir /mnt/newdisk
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
obad 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:
Desactiva el disco adicional que está activado en
/mnt/newdisk
en la VM temporal:cd ~ sudo umount /mnt/newdisk
En la consola de Google Cloud, ve a la página Instancias de VM.
Selecciona la VM temporal que creaste.
Haz clic en
Editar.En Discos adicionales, haz clic en
en el disco que creaste en pasos anteriores para desconectar el disco adicional de la VM temporal.Haz clic en Guardar.
Ve a la página Instancias de VM en la consola de Google Cloud.
Si la VM inaccesible aún se está ejecutando, detenla.
Haz clic en el nombre de la VM que acabas de detener y, luego, en
Editar.En Disco de arranque, haz clic en
Desconectar disco de libro para desconectar el disco de arranque saliente de la VM inaccesible.A continuación, haz clic en Recupera una VM en esta página.
CONFIGURAR DISK BOOT para conectar el disco que creaste y corregiste antes en- En la sección Disco de arranque, haz clic en la pestaña Discos existentes.
- En la lista desplegable, selecciona el disco que creaste en la sección anterior, por ejemplo,
my-recovery-disk
. - Haz clic en Seleccionar y, luego, en Guardar.
Ahora deberías poder conectarte a la VM con SSH.