Share via


Solucionar problemas de una VM Linux adjuntando el disco del sistema operativo a una VM de recuperación con la CLI de Azure

Si su máquina virtual Linux (VM) se encuentra con un error de arranque o de disco, es posible que tenga que realizar los pasos de solución de problemas en el propio disco duro virtual. Un ejemplo común sería una entrada no válida en /etc/fstab que impide que la VM pueda arrancar correctamente. Este artículo detalla cómo utilizar la CLI de Azure para conectar su disco duro virtual a otra VM Linux para corregir cualquier error y, a continuación, volver a crear su VM original.

Introducción al proceso de recuperación

El proceso de solución de problemas es el siguiente:

  1. Detenga la máquina virtual afectada.
  2. Tome una instantánea del disco del sistema operativo de la VM.
  3. Cree un disco de la instantánea del disco del sistema operativo.
  4. Conecte y monte el nuevo disco del sistema operativo en otra máquina virtual Linux para solucionar problemas.
  5. Conéctese a la máquina virtual de solución de problemas. Edite archivos o ejecute cualquier herramienta para solucionar problemas en el disco del nuevo sistema operativo.
  6. Desmonte y separe el nuevo disco del sistema operativo de la máquina virtual de solución de problemas.
  7. Cambie el disco del sistema operativo de la máquina virtual afectada.

Para realizar estos pasos de solución de problemas, necesita tener instalada la última versión de Azure CLI y haber iniciado sesión en una cuenta de Azure mediante az login.

Puede usar los comandos de reparación de máquina virtual para automatizar los pasos 1, 2, 3, 4, 6 y 7. Para obtener más documentación e instrucciones, consulte Reparar una máquina virtual Linux mediante los comandos de reparación de máquinas virtuales de Azure.

Importante

Los scripts de este artículo solo se aplican a las máquinas virtuales que usan Managed Disks.

En los siguientes ejemplos, sustituya los nombres de los parámetros por sus propios valores, como myResourceGroup y myVM.

Determinación de los problemas de arranque

Examine la salida serie para determinar por qué su VM no es capaz de arrancar correctamente. Un ejemplo común es una entrada no válida en /etc/fstab, o que el disco duro virtual subyacente haya sido borrado o movido.

Obtenga los registros de arranque con az vm boot-diagnostics get-boot-log. El siguiente ejemplo obtiene la salida en serie de la máquina virtual denominada myVM en el grupo de recursos denominado myResourceGroup:

az vm boot-diagnostics get-boot-log --resource-group myResourceGroup --name myVM

Revise la salida serie para determinar por qué la máquina virtual no arranca. Si la salida serie no está proporcionando ninguna indicación, es posible que tenga que revisar los archivos de registro en /var/log una vez que tenga el disco duro virtual conectado a una máquina virtual de solución de problemas.

Parada de la máquina virtual

En el ejemplo siguiente se detiene la máquina virtual llamada myVM del grupo de recursos myResourceGroup:

az vm stop --resource-group MyResourceGroup --name MyVm

Tome una instantánea del disco del sistema operativo de la máquina virtual afectada.

Una instantánea es una copia completa de solo lectura de un disco duro virtual. No se puede adjuntar a una máquina virtual. En el siguiente paso, crearemos un disco a partir de esta instantánea. En el ejemplo siguiente se crea una instantánea llamada mySnapshot del disco del sistema operativo de la máquina virtual "myVM".

#Get the OS disk Id 
$osdiskid=(az vm show -g myResourceGroup -n myVM --query "storageProfile.osDisk.managedDisk.id" -o tsv)

#creates a snapshot of the disk
az snapshot create --resource-group myResourceGroupDisk --source "$osdiskid" --name mySnapshot

Creación de un disco a partir de la instantánea

Este script crea un disco administrado llamado myOSDisk desde la instantánea denominada mySnapshot.

#Provide the name of your resource group
$resourceGroup="myResourceGroup"

#Provide the name of the snapshot that will be used to create Managed Disks
$snapshot="mySnapshot"

#Provide the name of the Managed Disk
$osDisk="myNewOSDisk"

#Provide the size of the disks in GB. It should be greater than the VHD file size.
$diskSize=128

#Provide the storage type for Managed Disk. Premium_LRS or Standard_LRS.
$storageType="Premium_LRS"

#Provide the OS type
$osType="linux"

#Get the snapshot Id 
$snapshotId=(az snapshot show --name $snapshot --resource-group $resourceGroup --query id -o tsv)

# Create a new Managed Disks using the snapshot Id.

az disk create --resource-group $resourceGroup --name $osDisk --sku $storageType --size-gb $diskSize --source $snapshotId

Si el grupo de recursos y la instantánea de origen no se encuentran en la misma región, recibirá el error "No se encuentra el recurso" al ejecutar az disk create. En este caso, debe especificar --location <region> para crear el disco en la misma región que la instantánea de origen.

Ahora ya tiene una copia del disco del sistema operativo original. Puede montar este nuevo disco en otra máquina virtual de Windows para solucionar problemas.

Adjuntar el nuevo disco duro virtual a otra máquina virtual

En los siguientes pasos, utilizará otra máquina virtual para solucionar problemas. Conecte el disco a esta máquina virtual de solución de problemas para examinar y editar el contenido del disco. Este proceso le permite corregir cualquier error de configuración o revisar archivos de registro adicionales de la aplicación o del sistema.

Este script adjunta el disco myNewOSDisk a la VM MyTroubleshootVM:

# Get ID of the OS disk that you just created.
$myNewOSDiskid=(az disk show -g $resourceGroup -n $osDisk --query id -o tsv)

# Attach the disk to the troubleshooting VM
az vm disk attach --disk $myNewOSDiskid --resource-group $resourceGroup --size-gb $diskSize --sku $storageType --vm-name MyTroubleshootVM

Montar el disco de datos adjunto

Nota:

Los siguientes ejemplos detallan los pasos necesarios en una máquina virtual Ubuntu. Si utiliza una distribución de Linux diferente, como Red Hat Enterprise Linux o SUSE, las ubicaciones de los archivos de registro y los comandos mount pueden ser un poco diferentes. Consulte la documentación de su distribución específica para conocer los cambios apropiados en los comandos.

  1. Establezca una conexión SSH a la VM de solución de problemas con las credenciales apropiadas. Si este disco es el primer disco de datos conectado a su VM de solución de problemas, es probable que el disco esté conectado a /dev/sdc. Utilice dmesg para ver los discos conectados:

    dmesg | grep SCSI
    

    El resultado es similar al siguiente ejemplo:

    [    0.294784] SCSI subsystem initialized
    [    0.573458] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
    [    7.110271] sd 2:0:0:0: [sda] Attached SCSI disk
    [    8.079653] sd 3:0:1:0: [sdb] Attached SCSI disk
    [ 1828.162306] sd 5:0:0:0: [sdc] Attached SCSI disk
    

    En el ejemplo anterior, el disco de SO está en /dev/sda y el disco temporal proporcionado para cada VM está en /dev/sdb. Si tuvieras varios discos de datos, deberían estar en /dev/sdd, /dev/sde, etc.

  2. Cree un directorio para montar su disco duro virtual existente. El siguiente ejemplo crea un directorio llamado troubleshootingdisk:

    sudo mkdir /mnt/troubleshootingdisk
    
  3. Si tiene varias particiones en el disco duro virtual existente, monte la partición necesaria. El siguiente ejemplo monta la primera partición primaria en /dev/sdc1:

    sudo mount /dev/sdc1 /mnt/troubleshootingdisk
    

    Nota:

    La mejor práctica es montar discos de datos en máquinas virtuales en Azure utilizando el identificador único universal (UUID) del disco duro virtual. Para este breve escenario de solución de problemas, no es necesario montar el disco duro virtual utilizando el UUID. Sin embargo, en condiciones normales de uso, la edición de /etc/fstab para montar discos duros virtuales utilizando el nombre del dispositivo en lugar del UUID puede hacer que la máquina virtual no arranque.

Solucionar problemas en el disco del nuevo sistema operativo

Una vez montado el disco virtual existente, puede realizar todos los pasos de mantenimiento y solución de problemas según sea necesario. Una vez que se han resuelto los problemas, continúe con los pasos siguientes.

Desmontaje y desconexión del disco de SO

Una vez resueltos los errores, desmonte y desconecte el disco virtual existente de la VM de solución de problemas. No se podrá usar el disco virtual en ninguna otra VM hasta que se libere la concesión que conecta el disco virtual a la VM de solución de problemas.

  1. Desde la sesión SSH a su VM de solución de problemas, desmonte el disco duro virtual existente. Salga primero del directorio principal de su punto de montaje:

    cd /
    

    Ahora desmonte el disco duro virtual existente. El siguiente ejemplo desmonta el dispositivo en /dev/sdc1:

    sudo umount /dev/sdc1
    
  2. Ahora desconecte el disco duro virtual de la máquina virtual. Salga de la sesión SSH a su máquina virtual de solución de problemas:

    az vm disk detach -g MyResourceGroup --vm-name MyTroubleShootVm --name myNewOSDisk
    

Cambio del disco del sistema operativo de la máquina virtual afectada

Puede usar la CLI de Azure para intercambiar los discos de SO. No es necesario eliminar ni volver a crear la máquina virtual.

En este ejemplo se detiene la máquina virtual myVM y se asigna el disco denominado myNewOSDisk como nuevo disco del sistema operativo.

# Stop the affected VM
az vm stop -n myVM -g myResourceGroup

# Get ID of the OS disk that is repaired.
$myNewOSDiskid=(az disk show -g $resourceGroup -n $osDisk --query id -o tsv)

# Change the OS disk of the affected VM to "myNewOSDisk"
az vm update -g myResourceGroup -n myVM --os-disk $myNewOSDiskid

# Start the VM
az vm start -n myVM -g myResourceGroup

Pasos siguientes

Si tiene problemas para conectarse a la VM, consulte Solución de problemas de conexiones SSH a una VM de Azure. Para problemas relacionados con el acceso a aplicaciones que se ejecutan en su VM, consulte Solucionar problemas de conectividad de aplicaciones en una máquina virtual Linux.

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.