zoukankan      html  css  js  c++  java
  • 从专用磁盘创建 Windows VM

    通过使用 Powershell 将专用托管磁盘附加为 OS 磁盘来创建新 VM。 专用磁盘是保留原始 VM 中的用户帐户、应用程序和其他状态数据的现有 VM 中虚拟硬盘 (VHD) 的副本。

    使用专用 VHD 创建新 VM 时,新 VM 将保留原始 VM 的计算机名。 还会保留其他计算机特定信息,在某些情况下,这种重复信息可能会导致问题。 请注意,在复制 VM 时,应用程序依赖哪些类型的计算机特定信息。

    可以使用两个选项:

    本主题演示如何使用托管磁盘。 如果有需要使用存储帐户的旧版部署,请参阅从存储帐户中的专用 VHD 创建 VM

    开始之前

    如果使用 PowerShell,请确保使用的是最新版本的 AzureRM.Compute PowerShell 模块。

    PowerShell
    Install-Module AzureRM.Compute -RequiredVersion 2.6.0
    

    有关详细信息,请参阅 Azure PowerShell 版本控制

    选项 1:上传专用 VHD

    可从使用本地虚拟化工具(如 Hyper-V)创建的专用 VM 或从另一个云导出的 VM 上传 VHD。

    准备 VM

    如果想要使用当前 VHD 创建新 VM,请确保完成以下步骤。

    • 准备好要上传到 Azure 的 Windows VHD。 不要使用 Sysprep 通用化 VM。
    • 删除 VM 上安装的所有来宾虚拟化工具和代理(例如 VMware 工具)。
    • 确保 VM 配置为通过 DHCP 来提取其 IP 地址和 DNS 设置。 这确保服务器在启动时在 VNet 中获取 IP 地址。

    获取存储帐户

    需要 Azure 中的存储帐户来存储上传的 VHD。 可以使用现有存储帐户,也可以创建新存储帐户。

    显示可用的存储帐户,请键入:

    PowerShell
    Get-AzureRmStorageAccount
    

    如果要使用现有存储帐户,请转到上传 VHD 部分。

    若要创建存储帐户,请执行以下步骤:

    1. 需要应在其中创建存储帐户的资源组的名称。 若要查找订阅中的所有资源组,请键入:

      PowerShell
      Get-AzureRmResourceGroup
      

      若要在中国北部区域中创建名为 myResourceGroup 的资源组,请键入:

      PowerShell
      New-AzureRmResourceGroup -Name myResourceGroup -Location "China North"
      
    2. 使用 New-AzureRmStorageAccount cmdlet 在此资源组中创建名为 mystorageaccount 的存储帐户:

      PowerShell
      New-AzureRmStorageAccount -ResourceGroupName myResourceGroup -Name mystorageaccount -Location "China North" `
          -SkuName "Standard_LRS" -Kind "Storage"
      

    将 VHD 上传到存储帐户

    使用 Add-AzureRmVhd cmdlet 将 VHD 上传到存储帐户中的容器。 本示例将文件 myVHD.vhd 从 "C:UsersPublicDocumentsVirtual hard disks" 上传到 myResourceGroup 资源组中名为 mystorageaccount 的存储帐户。 该文件存储在名为 mycontainer 的容器中,新文件名为 myUploadedVHD.vhd

    PowerShell
    $resourceGroupName = "myResourceGroup"
    $urlOfUploadedVhd = "https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer/myUploadedVHD.vhd"
    Add-AzureRmVhd -ResourceGroupName $resourceGroupName -Destination $urlOfUploadedVhd `
        -LocalFilePath "C:UsersPublicDocumentsVirtual hard disksmyVHD.vhd"
    

    如果成功,会显示类似于下面的响应:

    PowerShell
    MD5 hash is being calculated for the file C:UsersPublicDocumentsVirtual hard disksmyVHD.vhd.
    MD5 hash calculation is completed.
    Elapsed time for the operation: 00:03:35
    Creating new page blob of size 53687091712...
    Elapsed time for upload: 01:12:49
    
    LocalFilePath           DestinationUri
    -------------           --------------
    C:UsersPublicDoc...  https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer/myUploadedVHD.vhd
    

    完成执行此命令可能需要一段时间,具体取决于网络连接速度和 VHD 文件的大小

    从 VHD 创建托管磁盘

    使用 New-AzureRMDisk 通过存储帐户中的专用 VHD 创建托管磁盘。 此示例使用 myOSDisk1 作为磁盘名称,将磁盘置于 StandardLRS 存储中并使用 https://storageaccount.blob.core.chinacloudapi.cn/vhdcontainer/osdisk.vhd 作为源 VHD 的 URI。

    创建适用于新 VM 的新资源组。

    PowerShell
    $destinationResourceGroup = 'myDestinationResourceGroup'
    New-AzureRmResourceGroup -Location $location -Name $destinationResourceGroup
    

    从上传的 VHD 创建新 OS 磁盘。

    PowerShell
    $sourceUri = (https://storageaccount.blob.core.chinacloudapi.cn/vhdcontainer/osdisk.vhd)
    $osDiskName = 'myOsDisk'
    $osDisk = New-AzureRmDisk -DiskName $osDiskName -Disk `
        (New-AzureRmDiskConfig -AccountType StandardLRS  -Location $location -CreateOption Import `
        -SourceUri $sourceUri) `
        -ResourceGroupName $destinationResourceGroup
    

    选项 2:复制现有 Azure VM

    通过拍摄 VM 快照来创建使用托管磁盘的 VM 副本,并使用该快照创建一个新的托管磁盘和一个新 VM。

    拍摄 OS 磁盘快照

    可拍摄整个 VM(包括所有磁盘)快照或仅拍摄单个磁盘快照。 以下步骤展示了如何使用 New-AzureRmSnapshot cmdlet 拍摄仅 VM 的 OS 磁盘的快照。

    设置一些参数。

    PowerShell
    $resourceGroupName = 'myResourceGroup' 
    $vmName = 'myVM'
    $location = 'chinanorth' 
    $snapshotName = 'mySnapshot'  
    

    获取 VM 对象。

    PowerShell
    $vm = Get-AzureRmVM -Name $vmName -ResourceGroupName $resourceGroupName
    

    获取 OS 磁盘名称。

    PowerShell
    $disk = Get-AzureRmDisk -ResourceGroupName $resourceGroupName -DiskName $vm.StorageProfile.OsDisk.Name
    

    创建快照配置。

    PowerShell
    $snapshotConfig =  New-AzureRmSnapshotConfig -SourceUri $disk.Id -OsType Windows -CreateOption Copy -Location $location 
    

    创建快照。

    PowerShell
    $snapShot = New-AzureRmSnapshot -Snapshot $snapshotConfig -SnapshotName $snapshotName -ResourceGroupName $resourceGroupName
    

    如果计划使用快照创建需要高性能的 VM,请结合使用 -AccountType Premium_LRS 参数和 New-AzureRmSnapshot 命令。 该参数创建快照,使其作为高级托管磁盘进行存储。 高级托管磁盘比标准托管磁盘开销大。 因此使用该参数前,请确保确实需要高级托管磁盘。

    从快照创建新磁盘

    使用 New-AzureRMDisk 从快照创建托管磁盘。 此示例使用“myOSDisk”作为磁盘名称。

    创建适用于新 VM 的新资源组。

    PowerShell
    $destinationResourceGroup = 'myDestinationResourceGroup'
    New-AzureRmResourceGroup -Location $location -Name $destinationResourceGroup
    

    设置 OS 磁盘名称。

    PowerShell
    $osDiskName = 'myOsDisk'
    

    创建托管磁盘。

    PowerShell
    $osDisk = New-AzureRmDisk -DiskName $osDiskName -Disk `
        (New-AzureRmDiskConfig  -Location $location -CreateOption Copy `
        -SourceResourceId $snapshot.Id) `
        -ResourceGroupName $destinationResourceGroup
    

    创建新 VM

    创建新 VM 使用的网络和其他 VM 资源。

    创建子网和 vNet

    创建虚拟网络的 vNet 和子网。

    创建子网。 本示例在资源组“myDestinationResourceGroup”中创建名为“mySubNet”的子网,并将子网地址前缀设置为 10.0.0.0/24。

    PowerShell
    $subnetName = 'mySubNet'
    $singleSubnet = New-AzureRmVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.0.0/24
    

    创建 vNet。 本示例将虚拟网络名称设置为 myVnetName,将位置设置为“中国北部”,将虚拟网络的地址前缀设置为 10.0.0.0/16。

    PowerShell
    $vnetName = "myVnetName"
    $vnet = New-AzureRmVirtualNetwork -Name $vnetName -ResourceGroupName $destinationResourceGroup -Location $location `
        -AddressPrefix 10.0.0.0/16 -Subnet $singleSubnet
    

    创建网络安全组和 RDP 规则

    若要使用 RDP 登录到 VM,需要创建一个允许在端口 3389 上进行 RDP 访问的安全规则。 由于新 VM 的 VHD 是从现有专用 VM 创建的,因此可以将源虚拟机中的帐户用于 RDP。

    本示例将 NSG 名称设置为 myNsg,将 RDP 规则名称设置为 myRdpRule。

    PowerShell
    $nsgName = "myNsg"
    
    $rdpRule = New-AzureRmNetworkSecurityRuleConfig -Name myRdpRule -Description "Allow RDP" `
        -Access Allow -Protocol Tcp -Direction Inbound -Priority 110 `
        -SourceAddressPrefix Internet -SourcePortRange * `
        -DestinationAddressPrefix * -DestinationPortRange 3389
    $nsg = New-AzureRmNetworkSecurityGroup -ResourceGroupName $destinationResourceGroup -Location $location `
        -Name $nsgName -SecurityRules $rdpRule
    

    有关终结点和 NSG 规则的详细信息,请参阅 Opening ports to a VM in Azure using PowerShell(使用 PowerShell 在 Azure 中打开 VM 端口)。

    创建公共 IP 地址和 NIC

    若要与虚拟网络中的虚拟机通信,需要一个 公共 IP 地址 和网络接口。

    创建公共 IP。 在此示例中,公共 IP 地址名称设置为 myIP。

    PowerShell
    $ipName = "myIP"
    $pip = New-AzureRmPublicIpAddress -Name $ipName -ResourceGroupName $destinationResourceGroup -Location $location `
       -AllocationMethod Dynamic
    

    创建 NIC。 在此示例中,NIC 名称设置为 myNicName。

    PowerShell
    $nicName = "myNicName"
    $nic = New-AzureRmNetworkInterface -Name $nicName -ResourceGroupName $destinationResourceGroup `
        -Location $location -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id
    

    设置 VM 名称和大小

    此示例将 VM 名称设置为“myVM”,将 VM 大小设置为“Standard_A2”。

    PowerShell
    $vmName = "myVM"
    $vmConfig = New-AzureRmVMConfig -VMName $vmName -VMSize "Standard_A2"
    

    添加 NIC

    PowerShell
    $vm = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $nic.Id
    

    添加 OS 磁盘

    使用 Set-AzureRmVMOSDisk 将 OS 磁盘添加到配置。 此示例将磁盘大小设置为 128 GB 并附加托管磁盘作为 Windows OS 磁盘。

    PowerShell
    $vm = Set-AzureRmVMOSDisk -VM $vm -ManagedDiskId $osDisk.Id -StorageAccountType StandardLRS `
        -DiskSizeInGB 128 -CreateOption Attach -Windows
    

    完成该 VM

    使用刚刚创建的 New-AzureRMVM 配置创建 VM。

    PowerShell
    New-AzureRmVM -ResourceGroupName $destinationResourceGroup -Location $location -VM $vm
    

    如果此命令成功,会看到类似于下面的输出:

    PowerShell
    RequestId IsSuccessStatusCode StatusCode ReasonPhrase
    --------- ------------------- ---------- ------------
                             True         OK OK   
    

    验证是否已创建 VM

    应会在 Azure 门户的“浏览” > “虚拟机”下看到新建的 VM,也可以使用以下 PowerShell 命令查看该 VM:

    PowerShell
    $vmList = Get-AzureRmVM -ResourceGroupName $destinationResourceGroup
    $vmList.Name
    

    后续步骤

    若要登录到新虚拟机,请在门户中浏览到该 VM,单击“连接”,然后打开远程桌面 RDP 文件。 使用原始虚拟机的帐户凭据登录到新虚拟机。 有关详细信息,请参阅 How to connect and log on to an Azure virtual machine running Windows(如何连接并登录到运行 Windows 的 Azure 虚拟机)。

    立即访问http://market.azure.cn

  • 相关阅读:
    立体图
    旅行家的预算
    洛谷P多米诺骨牌
    洛谷P2331最大子矩阵
    理想的正方形
    2015 ACM/ICPC Asia Regional Hefei Online Find a path
    Atcoder abc 138 F
    Atcoder abc 138 E String of Impurity
    zlb的8.19考试
    Atcoder abc 138
  • 原文地址:https://www.cnblogs.com/zangdalei/p/7942032.html
Copyright © 2011-2022 走看看