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. Si el sistema de archivos raíz se divide en varios discos, debes crear una instantánea de cada uno.
- Crea una VM temporal con una imagen pública más cercana al SO de la VM inaccesible. En algunos casos, una política de imágenes confiables puede restringir la creación de discos de arranque a partir de imágenes públicas. En esos casos, debes pedirle a un administrador que quite temporalmente esta restricción para que puedas crear una VM de recuperación. Consulta Configura restricciones de acceso a imágenes para obtener más información.
Para cada una de las instantáneas de los discos de arranque de la VM inaccesible que creaste anteriormente, crea un disco nuevo a partir de la instantánea y conéctalo a la VM de recuperación. Para ello, haz lo siguiente:
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 para identificar el nombre de cada uno de los discos que conectaste anteriormente a la VM:
lsblk -d -o NAME,SERIAL
El resultado es similar a este:
NAME SERIAL sda rescue-vm sdb my-recovery-disk
En este ejemplo,
rescue-vm
es el disco de arranque de la VM de recuperación ymy-recovery-disk
es el disco de arranque de la instantánea de la VM inaccesible. Anota elNAME
de la VM inaccesible para usarlo en el siguiente paso.Para cada uno de los discos que conectaste anteriormente a la VM, haz lo siguiente:
Ejecuta el siguiente comando para identificar el sistema de archivos de cada partición:
fdisk -l /dev/NAME -o Device,Size,Type
Reemplaza
NAME
por el nombre del disco de inicio de la VM inaccesible del paso anterior. En este ejemplo, el nombre seríasdb
.El resultado es similar a este:
Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors Disk model: PersistentDisk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: gpt Disk identifier: B31430F1-F041-4555-96B9-B2F43DC057AD Device Size Type /dev/sdb1 2M BIOS boot /dev/sdb2 20M EFI System /dev/sdb3 10G Linux filesystem
En la columna
Type
, se muestra el sistema de archivos de cada partición. Si falta el tipo de sistema de archivos de alguna partición, ejecuta el siguiente comando:file -sL /dev/PARTITION_NAME
Reemplaza
NAME
por el nombre de la partición.El resultado difiere según el tipo de sistema de archivos:
Sin sistema de archivos: Si el resultado solo muestra
data
, la partición no contiene un sistema de archivos. Salida de ejemplo:/dev/sdb1: data
Sistema de archivos EFI: Si el resultado describe un sector de arranque DOS/MBR, la partición tiene un sistema de archivos EFI. Salida de ejemplo:
dev/sdb2: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, reserved sectors 4, root entries 512, sectors 40960 (volumes <=32 MB), Media descriptor 0xf8, sectors/FAT 40, sectors/ track 32, heads 64, serial number 0xf2af2664, label: "EFI ", FAT (16 bit)
Sistema de archivos de Linux: Si el resultado describe datos del sistema de archivos, la partición es un sistema de archivos de Linux. Salida de ejemplo:
/dev/sdb3: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
Anota el nombre de la partición del sistema de archivos de Linux.
Crea un punto de activación en
/rescue
:sudo mkdir /rescue
Activa la partición del sistema de archivos de Linux en
/rescue
:sudo mount PARTITION_NAME /rescue
Reemplaza PARTITION_NAME por el nombre del sistema de archivos de Linux que anotaste antes.
Si deseas modificar el directorio raíz del sistema de archivos con el comando
chroot
, además, debes activar el sistema de archivos y los dispositivos virtuales. Para ello, ejecuta los siguientes comandos:sudo mount -t proc /proc /rescue/proc sudo mount -t sysfs /sys /rescue/sys sudo mount -o bind /dev /rescue/dev sudo mount -o bind /dev/pts /rescue/dev/pts sudo mount -o bind /run /rescue/run
El sistema de archivos del disco de inicio inaccesible ahora está activado en
/rescue
. 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
/rescue
en la VM temporal:cd ~ sudo umount /rescue
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.