Si no puedes acceder a tu máquina virtual Linux por cualquier motivo, puedes intentar rescatarla siguiendo estos pasos.
Roles obligatorios
Para obtener los permisos que necesitas para recuperar una VM, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en el proyecto:
-
Administrador de instancias de Compute (v. 1) (
roles/compute.instanceAdmin.v1
) -
VMs que usan una cuenta de servicio:
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
)
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para rescatar una VM. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Para rescatar una VM, se necesitan los siguientes permisos:
-
compute.instances.create
en el proyecto -
compute.disks.create
en el proyecto -
compute.instances.get
en el proyecto -
compute.disks.createSnapshot
en los discos -
compute.instances.attachDisk
en la nueva VM -
compute.disks.use
en disco -
compute.instances.start
en una máquina virtual nueva e inaccesible -
compute.instances.stop
en una máquina virtual nueva e inaccesible
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Recuperar una VM
Si no puedes conectarte a tu VM o el disco de arranque está lleno, debes crear una VM temporal para recuperar la VM inaccesible.
- (Opcional) Detén la VM inaccesible.
- Crea una instantánea del 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 disco.
- Crea una VM temporal con una imagen pública que tenga el SO más parecido al de la VM inaccesible. En algunos casos, una política de imágenes de confianza puede impedir que crees discos de arranque a partir de imágenes públicas. En estos casos, debes pedir a un administrador que levante temporalmente esta restricción para poder crear una VM de recuperación. Para obtener más información, consulta Definir restricciones de acceso a imágenes.
Por cada una de las capturas de los discos de arranque de la VM inaccesible que hayas creado anteriormente, crea un disco a partir de la captura y adjúntalo a la VM de rescate. Para ello, sigue estos 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 has creado.
Haz clic en
Editar.En Discos adicionales, haz clic en
Añadir nuevo disco y, a continuación, haz lo siguiente:- Añade el nombre del disco, como my-recovery-disk
- En Tipo de fuente, selecciona la pestaña Instantánea.
- En el menú desplegable Snapshot de origen, selecciona la captura de la VM de origen que has creado anteriormente en estos pasos.
- Haz clic en Listo.
Haz clic en Guardar.
Conéctate a la VM temporal mediante SSH.
Identifica el nombre de cada uno de los discos que has asociado anteriormente a la VM ejecutando el siguiente comando:
lsblk -d -o NAME,SERIAL
El resultado debería ser similar al siguiente:
NAME SERIAL sda rescue-vm sdb my-recovery-disk
En este ejemplo,
rescue-vm
es el disco de arranque de la VM de rescate ymy-recovery-disk
es el disco de arranque de la captura de la VM inaccesible. Anota elNAME
de la máquina virtual inaccesible para usarlo en el siguiente paso.En cada uno de los discos que has asociado anteriormente a la VM, haz lo siguiente:
Identifica el sistema de archivos de cada partición ejecutando el siguiente comando:
fdisk -l /dev/NAME -o Device,Size,Type
Sustituye
NAME
por el nombre del disco de arranque de la máquina virtual inaccesible del paso anterior. En este ejemplo, el nombre seríasdb
.El resultado debería ser similar al siguiente:
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
La columna
Type
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
Sustituye
NAME
por el nombre de la partición.La salida varía en función del tipo de sistema de archivos:
Sin sistema de archivos: si la salida solo muestra
data
, la partición no contiene ningún sistema de archivos. Ejemplo:/dev/sdb1: data
Sistema de archivos EFI: si la salida describe un sector de arranque DOS/MBR, la partición tiene un sistema de archivos EFI. 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 la salida describe datos del sistema de archivos, la partición es un sistema de archivos de Linux. 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 montaje en
/rescue
:sudo mkdir /rescue
Monta la partición del sistema de archivos de Linux en
/rescue
:sudo mount PARTITION_NAME /rescue
Sustituye PARTITION_NAME por el nombre del sistema de archivos de Linux que anotaste anteriormente.
Si quieres modificar el directorio raíz del sistema de archivos con el comando
chroot
, también debes montar el sistema de archivos virtual y los dispositivos ejecutando 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 arranque inaccesible ahora está montado en
/rescue
. Puedes desplazarte por el sistema de archivos, cambiar archivos de configuración, solucionar problemas o recuperar los datos.
Deshacer los cambios y volver a iniciar la VM inaccesible
Una vez que se haya solucionado el problema o se hayan recuperado los datos, deberá restaurar la VM. Sigue estos pasos para restaurar la máquina virtual original:
Desmonta el disco adicional que está montado en
/rescue
en la máquina virtual temporal:cd ~ sudo umount /rescue
En la consola de Google Cloud , ve a la página Instancias de VM.
Selecciona la VM temporal que has creado.
Haz clic en
Editar.En Discos adicionales, haz clic en
del disco creado en los pasos anteriores para separar el disco adicional de la VM temporal.Haz clic en Guardar.
Ve a la página Instancias de VM de la Google Cloud consola.
Si la máquina virtual inaccesible sigue ejecutándose, detenla.
Haga clic en el nombre de la máquina virtual que acaba de detener y, a continuación, en
Editar.En Disco de arranque, haz clic en
Desvincular disco de arranque para desvincular el disco de arranque de la VM inaccesible.A continuación, haz clic en Recuperar una VM de esta página.
CONFIGURAR DISCO DE ARRANQUE para adjuntar el disco que has creado y corregido anteriormente en la sección- En la sección Disco de arranque, haga clic en la pestaña Discos existentes.
- En la lista desplegable, selecciona el disco que has creado en la sección anterior, por ejemplo,
my-recovery-disk
. - Haz clic en Seleccionar y, a continuación, en Guardar.
Ahora deberías poder conectarte a la VM mediante SSH.