使用 Azure 门户将 OS 磁盘附加到恢复 VM,对 Linux VM 进行故障排除

如果 Linux 虚拟机 (VM) 遇到启动或磁盘错误,则可能需要对虚拟硬盘本身执行故障排除步骤。 一个常见示例是 中的 /etc/fstab 无效条目,导致 VM 无法成功启动。 本文详细介绍了如何使用 Azure 门户将虚拟硬盘连接到另一个 Linux VM 以修复任何错误,然后重新创建原始 VM。

恢复过程概述

故障排除过程如下:

  1. 停止受影响的 VM。
  2. 为 VM 的 OS 磁盘快照。
  3. 从 快照创建虚拟硬盘。
  4. 将虚拟硬盘附加并装载到另一个 Linux VM,以便进行故障排除。
  5. 连接到故障排除 VM。 编辑文件或运行任何工具来修复原始虚拟硬盘上的问题。
  6. 卸载虚拟硬盘并将其从故障排除 VM 中分离。
  7. 交换 VM 的 OS 磁盘。

注意

本文不适用于具有非托管磁盘的 VM。 有关加密的 Linux 磁盘,请参阅 解锁加密的 Linux 磁盘进行脱机修复

确定启动问题

检查启动诊断和 VM 屏幕截图,以确定 VM 无法正确启动的原因。 一个常见示例是 中的无效条目 /etc/fstab或正在删除或移动的基础虚拟硬盘。

在门户中选择 VM,然后向下滚动到 “支持 + 故障排除 ”部分。 单击“启动诊断”以查看从 VM 流式传输的控制台消息。 查看控制台日志,查看是否可以确定 VM 遇到问题的原因。 以下示例显示了一个 VM 停滞在需要手动交互的维护模式下:

查看 V M 启动诊断控制台日志的屏幕截图。

还可以单击启动诊断日志顶部的“屏幕截图”,下载 VM 屏幕截图的捕获。

获取 OS 磁盘的快照

快照是虚拟硬盘驱动器 (VHD) 的完整只读副本。 建议在执行快照之前完全关闭 VM,以清除正在进行的任何进程。 若要快照 OS 磁盘,请执行以下步骤:

  1. 转到Azure 门户。 从边栏中选择“ 虚拟机 ”,然后选择有问题的 VM。

  2. 在左窗格中,选择“ 磁盘”,然后选择 OS 磁盘的名称。

    屏幕截图显示了操作系统磁盘的名称。

  3. 在 OS 磁盘的“概述”页上,选择“创建快照”。

  4. 在 OS 磁盘所在的同一位置创建快照。

从快照创建磁盘

若要从快照创建磁盘,请执行以下步骤:

  1. Azure 门户选择Cloud Shell。

    Azure 门户中“Cloud Shell”按钮的屏幕截图。

  2. 运行以下 PowerShell 命令,从 快照创建托管磁盘。 应将这些示例名称替换为适当的名称。

    #Provide the name of your resource group
    $resourceGroupName ='myResourceGroup'
    
    #Provide the name of the snapshot that will be used to create Managed Disks
    $snapshotName = 'mySnapshot' 
    
    #Provide the name of theManaged Disk
    $diskName = 'newOSDisk'
    
    #Provide the size of the disks in GB. It should be greater than the VHD file size. In this sample, the size of the snapshot is 127 GB. So we set the disk size to 128 GB.
    $diskSize = '128'
    
    #Provide the storage type for Managed Disk. Premium_LRS or Standard_LRS.
    $storageType = 'Standard_LRS'
    
    #Provide the Azure region (e.g. westus) where Managed Disks will be located.
    #This location should be same as the snapshot location
    #Get all the Azure location using command below:
    #Get-AzLocation
    $location = 'westus'
    
    $snapshot = Get-AzSnapshot -ResourceGroupName $resourceGroupName -SnapshotName $snapshotName 
    
    $diskConfig = New-AzDiskConfig -AccountType $storageType -Location $location -CreateOption Copy -SourceResourceId $snapshot.Id
    
    New-AzDisk -Disk $diskConfig -ResourceGroupName $resourceGroupName -DiskName $diskName
    
  3. 如果命令成功运行,你将在提供的资源组中看到新磁盘。

将磁盘附加到另一个 VM

在接下来的几个步骤中,请使用另一个 VM 进行故障排除。 将磁盘附加到故障排除 VM 后,可以浏览和编辑磁盘的内容。 此过程允许更正任何配置错误或查看其他应用程序或系统日志文件。 若要将磁盘附加到另一个 VM,请执行以下步骤:

  1. 从门户中选择资源组,然后选择故障排除 VM。 依次选择“ 磁盘”、“ 编辑”和“ 添加数据磁盘”:

    Azure 门户中“添加数据磁盘”选项的屏幕截图。

  2. “数据磁盘 ”列表中,选择已标识的 VM 的 OS 磁盘。 如果未看到 OS 磁盘,请确保故障排除 VM 和 OS 磁盘位于同一区域 (位置) 。

  3. 选择保存应用更改。

装载附加的数据磁盘

注意

以下示例详细介绍了 Ubuntu VM 上所需的步骤。 如果使用的是其他 Linux 发行版(例如 Red Hat Enterprise Linux 或 SUSE),日志文件位置和 mount 命令可能略有不同。 有关命令的相应更改,请参阅特定发行版的文档。

  1. 使用适当的凭据通过 SSH 连接到故障排除 VM。 如果此磁盘是附加到故障排除 VM 的第一个数据磁盘,则它可能已连接到 /dev/sdc。 使用 dmseg 列出附加的磁盘:

    dmesg | grep SCSI
    

    输出类似于以下示例:

    [    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
    

    在前面的示例中,OS 磁盘位于 /dev/sda ,为每个 VM 提供的临时磁盘位于 /dev/sdb。 如果有多个数据磁盘,它们应位于 /dev/sdd/dev/sde等位置。

  2. 创建用于装载现有虚拟硬盘的目录。 以下示例创建一个名为 的 troubleshootingdisk目录:

    sudo mkdir /mnt/troubleshootingdisk
    
  3. 如果现有虚拟硬盘上有多个分区,请装载所需的分区。 以下示例在 装载第一个主分区 /dev/sdc1

    sudo mount /dev/sdc1 /mnt/troubleshootingdisk
    

    注意

    最佳做法是使用虚拟硬盘的通用唯一标识符 (UUID) 在 Azure 中的 VM 上装载数据磁盘。 对于此简短的故障排除方案,不需要使用 UUID 装载虚拟硬盘。 但是,在正常使用下,使用设备名称而不是 UUID 进行编辑 /etc/fstab 以装载虚拟硬盘可能会导致 VM 无法启动。

修复原始虚拟硬盘上的问题

装载现有虚拟硬盘后,现在可以根据需要执行任何维护和故障排除步骤。 解决问题后,请继续执行以下步骤。

卸载和分离原始虚拟硬盘

解决错误后,从故障排除 VM 中分离现有虚拟硬盘。 在解除将虚拟硬盘附加到故障排除 VM 的租约之前,不能将虚拟硬盘与任何其他 VM 一起使用。

  1. 从 SSH 会话到故障排除 VM,卸载现有虚拟硬盘。 首先更改装载点的父目录:

    cd /
    

    现在卸载现有虚拟硬盘。 以下示例在 中卸载设备 /dev/sdc1

    sudo umount /dev/sdc1
    
  2. 现在,从 VM 分离虚拟硬盘。 在门户中选择 VM,然后单击“ 磁盘”。 选择现有虚拟硬盘,然后单击“ 分离”:

    从 V M 分离虚拟硬盘的屏幕截图。

    请等待 VM 成功分离数据磁盘,然后再继续操作。

交换 VM 的 OS 磁盘

Azure 门户现在支持更改 VM 的 OS 磁盘。 为此,请按照下列步骤操作:

  1. 转到Azure 门户。 从边栏中选择“ 虚拟机 ”,然后选择有问题的 VM。

  2. 在左窗格中,选择“ 磁盘”,然后选择“ 交换 OS 磁盘”。

    Azure 门户中“交换 O S 磁盘”选项的屏幕截图。

  3. 选择修复的新磁盘,然后键入 VM 的名称以确认更改。 如果在列表中看不到磁盘,请在从故障排除 VM 分离磁盘后等待 10 到 15 分钟。 此外,请确保磁盘与 VM 位于同一位置。

  4. 选择“确定”。

后续步骤

如果在连接到 VM 时遇到问题,请参阅 排查与 Azure VM 的 SSH 连接问题。 有关访问 VM 上运行的应用程序的问题,请参阅 排查 Linux VM 上的应用程序连接问题

有关使用资源管理器的详细信息,请参阅 Azure 资源管理器概述

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。