你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

为 Azure Stack Edge Pro GPU 设备创建自定义 VM 映像

适用范围:对于 Pro GPU SKU 是必需的Azure Stack Edge Pro - GPU对于 Pro 2 SKU 是必需的Azure Stack Edge Pro 2对于 Pro R SKU 是必需的Azure Stack Edge Pro R对于 Mini R SKU 是必需的Azure Stack Edge Mini R

若要在 Azure Stack Edge Pro GPU 设备上部署 VM,你需要能够创建可用于在 Azure 中创建 VM 的自定义 VM 映像。 本文介绍了在 Azure 中为 Windows 和 Linux VM 创建自定义 VM 映像并将这些映像下载或复制到 Azure 存储帐户的步骤。

准备自定义 VM 映像需要一个工作流。 对于映像源,需要使用 Azure 支持的任意大小的固定 VHD。 有关 VM 大小选项,请参阅支持的 VM 大小

先决条件

创建 VM 映像之前,请先完成以下先决条件:

  • 下载 AzCopy。 AzCopy 提供了一种将 OS 磁盘复制到 Azure 存储帐户的快速方法。

创建自定义 VM 映像

为 Windows 或 Linux VM 准备自定义 VM 映像的步骤有所不同。

执行以下步骤以创建 Windows VM 映像:

  1. 在 Azure 中创建 Windows 虚拟机。 有关门户说明,请参阅在 Azure 门户中创建 Windows 虚拟机。 有关 PowerShell 说明,请参阅教程:使用 Azure PowerShell 创建和管理 Windows VM

    虚拟机可以是第 1 代或第 2 代 VM。 用于创建 VM 映像的 OS 磁盘必须是 Azure 支持的任意大小的固定大小的 VHD。 有关 VM 大小选项,请参阅支持的 VM 大小

    可以在 Azure 市场中使用具有固定大小的 VHD 的任何 Windows Gen1 或 Gen2 VM。 有关可用的 Azure 市场映像列表,请参阅 Azure Stack Edge 的常用 Azure 市场映像

  2. 通用化虚拟机。 若要通用化 VM,请连接到虚拟机,打开命令提示符,并运行以下 sysprep 命令:

    c:\windows\system32\sysprep\sysprep.exe /oobe /generalize /shutdown /mode:vm
    

    重要

    在命令完成后,VM 将会关闭。 不要重新启动 VM。 重启 VM 将损坏刚准备的磁盘。

将 OS 磁盘下载到存储帐户

若要使用自定义 VM 映像在设备上部署 VM,必须将 OS 磁盘下载到 Azure 存储帐户。 建议使用与设备相同的存储帐户。

若要将 VM 的 OS 磁盘下载到 Azure 存储帐户,请执行以下步骤:

  1. 在门户中停止 VM。 即使 Windows VM 在你运行 sysprep 进行通用化后关闭,你也需要执行此操作来解除分配 OS 磁盘。

  2. 为 OS 磁盘生成下载 URL,并记下 URL。 默认情况下,URL 在 3600 秒(1 小时)后过期。 如果需要,可以增加该时间。

  3. 使用以下方法之一将 VHD 下载到 Azure 存储帐户:

    • 方法 1:若要加快传输速度,请使用 AzCopy 将 VHD 复制到 Azure 存储帐户。 有关说明,请参阅下面的使用 AzCopy 将 VM 映像复制到存储帐户

    • 方法 2:对于简单的一键式方法,你可以在生成下载 URL 时(在步骤 3b 中)选择“下载 VHD 文件”,从门户下载磁盘。 使用此方法时,磁盘复制可能需要很长时间,并且需要将 VHD 上传到 Azure 存储帐户才能使用门户创建 VM。

现在可以使用此 VHD 在 Azure Stack Edge Pro GPU 设备上创建和部署 VM。

使用 AzCopy 将 VHD 复制到存储帐户

以下过程介绍如何使用 AzCopy 将自定义 VM 映像复制到 Azure 存储帐户,以便可以使用该映像在 Azure Stack Edge Pro GPU 设备上部署 VM。 建议将自定义虚拟机映像存储在你所使用的任一现有存储帐户中,该帐户应与 Azure Stack Edge 位于同一区域/订阅中。

为容器创建目标 URI

AzCopy 需要一个目标 URI,该 URI 告诉你将新映像复制到存储帐户的哪个位置。 在运行 AzCopy 之前,将为你要将文件复制到的 blob 容器生成共享访问签名 (SAS) URL。 若要创建目标 URI,请将文件名添加到 SAS URL。

若要为已准备好的 VHD 创建目标 URI,请执行以下步骤:

  1. 为 Azure 存储帐户中的容器生成 SAS URL,请执行以下步骤:

    1. 在 Azure 门户中,打开存储帐户,然后选择“容器”。 选择并右键单击要使用的 blob 容器,然后选择“生成 SAS”

      Azure 门户中 blob 容器的“生成 SAS”选项的屏幕截图

    2. 在“生成 SAS”屏幕上,在“权限”中选择“读取”和“写入”

      选择了“读取”和“写入”权限的“生成 SAS”屏幕的屏幕截图

    3. 选择“生成 SAS 令牌和 URL”,然后选择“复制”以复制“Blob SAS URL”

      “生成 SAS”屏幕的屏幕截图,其中包含用于生成和复制 Blob SAS URL 的选项

  2. 若要为 azcopy 命令创建目标 URI,请将所需的文件名添加到 SAS URL。

    Blob SAS URL 采用以下格式。

    Blob SAS URL 图示,其中包含用于插入带标记的新文件名的容器路径和位置

    在查询字符串开始的问号之前插入文件名,格式为 /<filename>.vhd。 文件扩展名必须为 VHD。

    例如,以下 Blob SAS URL 会将 osdisk.vhd 文件复制到 mystorageaccount 中的 virtualmachines Blob 容器。

    名为 osdisk 的 VHD 的 Blob SAS URL 示例图示

将 VHD 复制到 blob 容器

若要使用 AzCopy 将 VHD 复制到 blob 容器,请执行以下步骤:

  1. 下载 AZCopy(如果尚未这样做)。

  2. 在 PowerShell 中,导航到存储 azcopy.exe 的目录,并运行以下命令:

    .\azcopy copy <source URI> <target URI> --recursive

    其中:

    例如,以下 URI 会将名为“windowsosdisk.vhd”的文件复制到 mystorageaccount 存储帐户中的“虚拟机”blob 容器:

    .\azcopy copy "https://md-h1rvdq3wwtdp.z24.blob.storage.azure.net/gxs3kpbgjhkr/abcd?sv=2018-03-28&sr=b&si=f86003fc-a231-43b0-baf2-61dd51e3a05a&sig=o5Rj%2BNZSook%2FVNMcuCcwEwsr0i7sy%2F7gIDzak6JhlKg%3D" "https://mystorageaccount.blob.core.windows.net/virtualmachines/osdisk.vhd?sp=rw&st=2021-05-21T16:52:24Z&se=2021-05-22T00:52:24Z&spr=https&sv=2020-02-10&sr=c&sig=PV3Q3zpaQ%2FOLidbQJDKlW9nK%2BJ7PkzYv2Eczxko5k%2Bg%3D" --recursive
    

示例输出

对于上面的示例 AzCopy 命令,以下输出表明已成功完成复制。

PS C:\azcopy\azcopy_windows_amd64_10.10.0> .\azcopy copy "https://md-h1rvdq3wwtdp.z24.blob.storage.azure.net/gxs3kpbgjhkr/abcd?sv=2018-03-28&sr=b&si=f86003fc-a231-43b0-baf2-61dd51e3a05a&sig=o5Rj%2BNZSook%2FVNMcuCcwEwsr0i7sy%2F7gIDzak6JhlKg%3D" "https://mystorageaccount.blob.core.windows.net/virtualmachines/osdisk.vhd?sp=rw&st=2021-05-21T16:52:24Z&se=2021-05-22T00:52:24Z&spr=https&sv=2020-02-10&sr=c&sig=PV3Q3zpaQ%2FOLidbQJDKlW9nK%2BJ7PkzYv2Eczxko5k%2Bg%3D" --recursive
INFO: Scanning...
INFO: Failed to create one or more destination container(s). Your transfers may still succeed if the container already exists.
INFO: Any empty folders will not be processed, because source and/or destination doesn't have full folder support

Job 783f2177-8317-3e4b-7d2f-697a8f1ab63c has started
Log file is located at: C:\Users\aseuser\.azcopy\783f2177-8317-3e4b-7d2f-697a8f1ab63c.log

INFO: Destination could not accommodate the tier P10. Going ahead with the default tier. In case of service to service transfer, consider setting the flag --s2s-preserve-access-tier=false.
100.0 %, 0 Done, 0 Failed, 1 Pending, 0 Skipped, 1 Total,

Job 783f2177-8317-3e4b-7d2f-697a8f1ab63c summary
Elapsed Time (Minutes): 1.4671
Number of File Transfers: 1
Number of Folder Property Transfers: 0
Total Number of Transfers: 1
Number of Transfers Completed: 1
Number of Transfers Failed: 0
Number of Transfers Skipped: 0
TotalBytesTransferred: 136367309312
Final Job Status: Completed

PS C:\azcopy\azcopy_windows_amd64_10.10.0>

后续步骤