Si no se puede acceder a su máquina virtual Linux por algún motivo, puede intentar rescatarla siguiendo los siguientes pasos.
Roles requeridos
Para obtener los permisos que necesita para rescatar una VM, solicite a su administrador que le otorgue los siguientes roles de IAM en el proyecto:
- Administrador de instancias informáticas (v1) (
roles/compute.instanceAdmin.v1
) - Máquinas virtuales 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, consulte Administrar 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 requieren, expanda la sección Permisos requeridos :
Permisos requeridos
Se requieren los siguientes permisos para rescatar 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 nueva máquina virtual -
compute.disks.use
en el disco -
compute.instances.start
en VM nueva e inaccesible -
compute.instances.stop
en VM nueva e inaccesible
Es posible que también pueda obtener estos permisos con roles personalizados u otros roles predefinidos .
Rescatar una máquina virtual
Si no puede conectarse a su VM o su disco de arranque está lleno, debe crear una VM temporal para rescatar la VM inaccesible.
- (Opcional) Detenga la máquina virtual inaccesible.
- Cree una instantánea desde el disco de arranque de la VM inaccesible. Si el sistema de archivos raíz está dividido en varios discos, debe tomar una instantánea de cada disco.
- Cree una máquina virtual temporal utilizando una imagen pública más cercana al sistema operativo de la máquina virtual inaccesible . En algunos casos, una política de imágenes confiables puede impedirle crear discos de arranque a partir de imágenes públicas. En tales casos, debe pedirle a un administrador que elimine temporalmente esta restricción antes de poder crear una máquina virtual de rescate. Consulte Establecer 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 creó anteriormente, cree un nuevo disco a partir de la instantánea y conéctelo a la VM de rescate haciendo lo siguiente:
En la consola de Google Cloud, vaya a la página de instancias de VM .
Haga clic en el nombre de la VM temporal que creó.
Haga clic en
Editar .En Discos adicionales , haga clic en
Agregar nuevo disco y luego haga lo siguiente:- Agregue el nombre del disco, como my-recovery-disk
- Para Tipo de fuente , seleccione la pestaña Instantánea .
- En el menú desplegable Instantánea de origen , seleccione la instantánea de la máquina virtual de origen que creó anteriormente en estos pasos.
- Haga clic en Listo .
Haga clic en Guardar .
Conéctese a la VM temporal mediante SSH.
Identifique el nombre de cada uno de los discos que conectó previamente a la VM ejecutando el siguiente comando:
lsblk -d -o NAME,SERIAL
El resultado es similar al siguiente:
NAME SERIAL sda rescue-vm sdb my-recovery-disk
En este ejemplo,
rescue-vm
es el disco de inicio de la VM de rescate ymy-recovery-disk
es el disco de inicio de la instantánea de la VM inaccesible. Anote elNAME
de la VM inaccesible para usarla en el siguiente paso.Para cada uno de los discos que conectó previamente a la VM, haga lo siguiente:
Identifique el sistema de archivos de cada partición ejecutando el siguiente comando:
fdisk -l /dev/NAME -o Device,Size,Type
Reemplace
NAME
con el nombre del disco de arranque de la VM inaccesible del paso anterior. En este ejemplo, el nombre seríasdb
.El resultado es 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
enumera el sistema de archivos de cada partición. Si falta el tipo de sistema de archivos para alguna partición, ejecute el siguiente comando:file -sL /dev/PARTITION_NAME
Reemplace
NAME
con el nombre de la partición.La salida difiere según el tipo de sistema de archivos:
Sin sistema de archivos : si la salida 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 Linux : si la salida describe datos del sistema de archivos, la partición es un sistema de archivos Linux. Salida de ejemplo:
/dev/sdb3: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
Tenga en cuenta el nombre de la partición del sistema de archivos de Linux.
Crea un punto de montaje en
/rescue
:sudo mkdir /rescue
Monte la partición del sistema de archivos de Linux en
/rescue
:sudo mount PARTITION_NAME /rescue
Reemplace PARTITION_NAME con el nombre del sistema de archivos de Linux que anotó anteriormente.
Si desea modificar el directorio raíz del sistema de archivos usando el comando
chroot
, además debe 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
. Puede navegar por el sistema de archivos, cambiar archivos de configuración, solucionar problemas o recuperar los datos.
Revierta los cambios y reinicie la VM inaccesible
Una vez que se solucione el problema o se recuperen los datos, deberá recuperar la máquina virtual real. Utilice los siguientes pasos para restaurar la VM original:
Desmonte el disco adicional que está montado en
/rescue
en la VM temporal:cd ~ sudo umount /rescue
En la consola de Google Cloud, vaya a la página de instancias de VM .
Seleccione la VM temporal que creó.
Haga clic en
Editar .En Discos adicionales , haga clic
para el disco creado en pasos anteriores para desconectar el disco adicional de la máquina virtual temporal.Haga clic en Guardar .
Vaya a la página de instancias de VM en la consola de Google Cloud.
Si la VM inaccesible todavía se está ejecutando, deténgala .
Haga clic en el nombre de la máquina virtual que acaba de detener y luego haga clic en
Editar .En Disco de arranque , haga clic
Separar disco del libro para desconectar el disco de arranque saliente de la máquina virtual inaccesible.A continuación, haga clic en Rescatar una máquina virtual en esta página.
CONFIGURAR DISCO DE ARRANQUE para adjuntar el disco que creó y arregló anteriormente en- En la sección Disco de arranque , haga clic en la pestaña Discos existentes .
- En la lista desplegable, seleccione el disco que creó en la sección anterior, por ejemplo
my-recovery-disk
. - Haga clic en Seleccionar y luego haga clic en Guardar .
Ahora debería poder conectarse a la máquina virtual mediante SSH.