可以从在存储帐户中存储为托管磁盘或非托管磁盘的通用 VM 中创建托管映像资源。 然后可以使用该映像创建多个 VM。
使用 Sysprep 通用化 Windows VM
Sysprep 将删除所有个人帐户信息及其他某些数据,并准备好要用作映像的计算机。 有关 Sysprep 的详细信息,请参阅如何使用 Sysprep:简介。
确保 Sysprep 支持计算机上运行的服务器角色。 有关详细信息,请参阅Sysprep Support for Server Roles
Important
如果在首次将 VHD 上传到 Azure 之前运行 Sysprep,请确保先准备好 VM,然后再运行 Sysprep。
登录到 Windows 虚拟机。
以管理员身份打开“命令提示符”窗口。 将目录切换到%windir%\system32\sysprep,然后运行sysprep.exe。
在“系统准备工具”对话框中,选择“进入系统全新体验(OOBE)”,确保已选中“通用化”复选框。
在“关机选项”中选择“关机”。
单击“确定”。
在 Sysprep 完成时,它会关闭虚拟机。 请勿重启 VM。
在门户中创建托管映像
打开门户。
在左侧菜单中,单击“虚拟机”,然后从列表中选择 VM。
在 VM 页的上部菜单中,单击“捕获”。
在“名称”中,键入想要用于映像的名称。
在“资源组”中,选择“新建”或键入名称,或选择“使用现有”并从下拉列表中选择要使用的资源组。
如果想要在创建映像后删除源 VM,选择“创建映像后自动删除此虚拟机”。
完成后,单击“创建”。
创建映像后,在资源组的资源列表中,你会看到它作为“映像”资源而出现。
使用 PowerShell 创建 VM 映像
直接从 VM 创建映像可确保映像中包含与 VM 关联的所有磁盘,包括 OS 磁盘和任何数据磁盘。 本示例演示如何从使用托管磁盘的 VM 创建托管映像。
在开始之前,请确保有最新版本的 AzureRM.Compute PowerShell 模块。 运行以下命令来安装该模块。
PowerShell复制
Install-ModuleAzureRM.Compute-RequiredVersion2.6.0
有关详细信息,请参阅Azure PowerShell 版本控制。
创建一些变量。powershell $vmName = "myVM" $rgName = "myResourceGroup" $location = "ChinaEast" $imageName = "myImage"
确保 VM 已解除分配。
PowerShell复制
Stop-AzureRmVM-ResourceGroupName$rgName-Name$vmName-Force
将虚拟机的状态设置为“通用化”。
PowerShell复制
Set-AzureRmVm-ResourceGroupName$rgName-Name$vmName-Generalized
获取虚拟机。
PowerShell复制
$vm=Get-AzureRmVM-Name$vmName-ResourceGroupName$rgName
创建映像配置。
PowerShell复制
$image=New-AzureRmImageConfig-Location$location-SourceVirtualMachineId$vm.ID
创建映像。
PowerShell复制
New-AzureRmImage-Image$image-ImageName$imageName-ResourceGroupName$rgName
使用 PowerShell 从托管磁盘创建映像
如果你只想创建 OS 磁盘的映像,还可通过将托管磁盘 ID 指定为 OS 磁盘来创建映像。
创建一些变量。
PowerShell复制
$vmName="myVM"$rgName="myResourceGroup"$location="ChinaEast"$snapshotName="mySnapshot"$imageName="myImage"
获取 VM。
PowerShell复制
$vm=Get-AzureRmVm-NamemyVM-ResourceGroupName$rgName
获取托管磁盘的 ID。
PowerShell复制
$diskID=$vm.StorageProfile.OsDisk.ManagedDisk.Id
创建映像配置。
Azure PowerShell复制试用
$imageConfig=New-AzureRmImageConfig-Location$location$imageConfig=Set-AzureRmImageOsDisk-Image$imageConfig-OsStateGeneralized-OsTypeWindows-ManagedDiskId$diskID
创建映像。
PowerShell复制
New-AzureRmImage-ImageName$imageName-ResourceGroupName$rgName-Image$imageConfig
使用 PowerShell 从快照创建映像
可以从通用 VM 的快照创建托管映像。
创建一些变量。
PowerShell复制
$rgName="myResourceGroup"$location="ChinaEast"$snapshotName="mySnapshot"$imageName="myImage"
获取快照。
PowerShell复制
$snapshot=Get-AzureRmSnapshot-ResourceGroupName$rgName-SnapshotName$snapshotName
创建映像配置。
PowerShell复制
$imageConfig=New-AzureRmImageConfig-Location$location$imageConfig=Set-AzureRmImageOsDisk-Image$imageConfig-OsStateGeneralized-OsTypeWindows-SnapshotId$snapshot.Id
创建映像。
PowerShell复制
New-AzureRmImage-ImageName$imageName-ResourceGroupName$rgName-Image$imageConfig
从存储帐户中的 VHD 创建映像
从存储帐户中的通用 OS VHD 创建托管映像。 需要存储帐户中 VHD 的 URI,其格式为 https://mystorageaccount.blob.core.chinacloudapi.cn/container/vhd_filename.vhd。 在本示例中,使用的 VHD 位于名为 vhdcontainer 的容器中的 mystorageaccount 中,且 VHD 文件名为 osdisk.vhd。
首先,设置公共参数:
PowerShell复制
$vmName="myVM"$rgName="myResourceGroup"$location="ChinaEast"$imageName="myImage"$osVhdUri="https://mystorageaccount.blob.core.chinacloudapi.cn/vhdcontainer/osdisk.vhd"
停止\解除分配 VM。
PowerShell复制
Stop-AzureRmVM-ResourceGroupName$rgName-Name$vmName-Force
将 VM 标记为通用。
PowerShell复制
Set-AzureRmVm-ResourceGroupName$rgName-Name$vmName-Generalized
使用通用 OS VHD 创建映像。
PowerShell复制
$imageConfig=New-AzureRmImageConfig-Location$location$imageConfig=Set-AzureRmImageOsDisk-Image$imageConfig-OsTypeWindows-OsStateGeneralized-BlobUri$osVhdUri$image=New-AzureRmImage-ImageName$imageName-ResourceGroupName$rgName-Image$imageConfig
后续步骤
现在,可以从通用托管映像创建 VM。
立即访问http://market.azure.cn