可以从在存储帐户中存储为托管磁盘或非托管磁盘的通用 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 模块。 运行以下命令来安装该模块。
Install-Module AzureRM.Compute -RequiredVersion 2.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 -Name myVM -ResourceGroupName $rgName
-
获取托管磁盘的 ID。
PowerShell复制$diskID = $vm.StorageProfile.OsDisk.ManagedDisk.Id
-
创建映像配置。
Azure PowerShell复制试用$imageConfig = New-AzureRmImageConfig -Location $location
$imageConfig = Set-AzureRmImageOsDisk -Image $imageConfig -OsState Generalized -OsType Windows -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 -OsState Generalized -OsType Windows -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 -OsType Windows -OsState Generalized -BlobUri $osVhdUri
$image = New-AzureRmImage -ImageName $imageName -ResourceGroupName $rgName -Image $imageConfig
后续步骤
- 现在,可以从通用托管映像创建 VM。
立即访问http://market.azure.cn