10

我认为有关如何捕获 VM 映像的官方 Azure 说明必须不正确或不完整。我自己进行了各种测试(详情如下),超过两打人在页面上抱怨说明不起作用和/或损坏他们的虚拟机。说明中肯定缺少某些内容,因为人们必须能够从 Azure VM 捕获图像。

http://www.windowsazure.com/en-us/manage/windows/how-to-guides/capture-an-image/

页面上的说明非常简单:

  • 远程桌面到你的 Azure VM
  • 打开管理员命令窗口
  • 使用指示的设置(Out-Of-Box-Experience、Generalize、Shutdown)运行 sysprep
  • 点击确定
  • 等待系统关闭虚拟机
  • 单击门户中的捕获。

这听起来很简单,但虚拟机从未真正关闭,因此您实际上无法单击捕获按钮。如果您手动关闭实例,即使在等待数小时后,生成的映像也无法工作,并且原始 vhd 在此过程中被破坏。

任何人都可以确认您能够使用此工作流或其他工作流捕获正在运行的 Azure 实例吗?如果是这样,你能告诉我你在做什么与我在做什么不同吗?

详细信息 - 我运行的测试如下:

测试 1 - 小型实例上的 Win2k8 R2

  • 在美国西部地区启动 Win2k8 R2 小实例
  • 远程桌面进入镜像
  • 使用 OOBE 运行 sysprep、概括、关闭
  • Azure 仪表板显示 sysprep 15 分钟后完成的所有 CPU 活动,设备处于空闲状态,稳定状态为 0.41% cpu
  • 等待几个小时(在此实例上写这篇文章时 > 2.5 小时,在其他测试中 > 12 小时)
  • Azure VM 仍在运行,门户中实例的捕获按钮不可用

测试 2 - 大型实例上的 Win2k8 R2

  • 与测试 1 相同的步骤,但在大型实例上
  • 除了稳态 CPU 利用率在 15 分钟后为 0.08% 外,结果相同

测试 3 - 小型实例上的 Win2k12 数据中心版

  • 与测试 1 相同的步骤,但运行 Win2k12 数据中心
  • 结果与测试 1 相同,但稳态 CPU 利用率为 4.2%

测试 4 - 带有 Windows 更新的小型实例上的 Win2k8 R2

  • 与测试 1 相同的步骤,但重复运行 Windows 更新,直到在运行 sysprep 之前没有可用的更新
  • 与测试 1 相同的结果

测试 5 - 带有 Visual Studio 2012 更新 3 的小型实例上的 Win2k8 R2

  • 与测试 1 相同的步骤,但在运行 sysprep 之前安装 VS2012 Ultimate 和 VS2012 Update 3
  • 与测试 1 相同的结果

测试 6 - 具有完全配置的 IIS 服务器的大型实例上的 Win2k8 R2

  • 在大型实例上配置我们的标准服务器配置(IIS、.NET 4.5)
  • 运行我们的标准 Web 服务测试
  • 使用 OOBE 运行 sysprep、概括、关闭
  • 等待 4 小时,让 sysprep 运行
  • 使用门户关闭实例
  • 使用门户捕获实例
  • 生成的图像不起作用(使用它的配置机器会在几个小时后超时)
  • 原始 VHD 不起作用(无法远程桌面进入使用 VHD 创建的实例)

测试 7 - 具有完全配置的 IIS 服务器的大型实例上的 Win2k8 R2

  • 与测试 6 相同,除了等待 12 小时允许 sysprep 运行
  • 截至撰写本文时(12 小时以上),VM 仍未关闭
4

1 回答 1

9

对您的工作流程进行一项简单的更改:在 sysprep 期间,选择退出而不是关闭。这将完成 sysprep 过程,但随后退出 sysprep 应用程序。

tl; dr:在命令行上运行以下命令:

c:\windows\system32\sysprep\sysprep.exe /generalize /oobe /quit

此时,您只需在门户中选择正在运行的 VM 并将其关闭(只需片刻)。然后您可以查看它,它将显示为已停止(已解除分配)。此时,按照您指向的教程中的描述创建图像。您将给它一个名称(例如“我的专用图像”),单击说明它已被系统准备好的复选框,然后单击确定。您的图像已创建,您的原始 vhd 已删除(因为现在您拥有它的通用版本),该图像在您的订阅中注册为图库中的可选图像(这需要几分钟),然后您就完成了。

此时,从图库中创建一个新图像。查看我的图像- 您将看到列出的全新图像(您可能需要等待一分钟左右才能尝试此操作 - 它可能不会立即出现在列表中)。

现在只需给它一个用户名和密码,你应该都设置好了。

注意:如果您担心在此步骤中丢失您的虚拟机(例如出现问题),您始终可以先制作一个 vhd 副本。您需要使用 PowerShell(或基于节点的跨平台命令行工具),两者均可从 windowsazure.com下载页面下载。然后,您可以将 vhd 复制到一个全新的 blob,这实际上会为您进行备份。如果出现问题,您可以使用备份的映像作为新虚拟机的基础(尚未进行系统准备),或者制作它的副本(等等)。为此,您需要 vhd 的 url,它显示在正在运行的 VM的仪表板页面的磁盘部分中。

于 2013-09-29T01:30:01.227 回答