zoukankan      html  css  js  c++  java
  • 上传通用化 VHD 并使用它在 Azure 中创建新 VM

    本主题逐步讲解如何使用 PowerShell 将通用化 VM 的 VHD 上传到 Azure、从该 VHD 创建映像,然后从该映像创建新 VM。 可以上传从本地虚拟化工具或其他云导出的 VHD。 对新的 VM 使用托管磁盘可以简化 VM 管理,在将 VM 置于可用性集中时提供更好的可用性。

    若要使用示例脚本,请参阅将 VHD 上传到 Azure 并创建新的 VM 的示例脚本

    开始之前

    使用 Sysprep 通用化 Windows VM

    Sysprep 将删除所有个人帐户信息及其他某些数据,并准备好要用作映像的计算机。 有关 Sysprep 的详细信息,请参阅如何使用 Sysprep:简介

    确保 Sysprep 支持计算机上运行的服务器角色。 有关详细信息,请参阅 Sysprep Support for Server Roles

    Important

    如果在首次将 VHD 上传到 Azure 之前运行 Sysprep,请确保先准备好 VM,然后再运行 Sysprep。

    1. 登录到 Windows 虚拟机。
    2. 以管理员身份打开“命令提示符”窗口。 将目录切换到 %windir%system32sysprep,然后运行 sysprep.exe
    3. 在“系统准备工具”对话框中,选择“进入系统全新体验(OOBE)”,确保已选中“通用化”复选框。
    4. 在“关机选项”中选择“关机”。
    5. 单击 “确定”。

      启动 Sysprep

    6. 在 Sysprep 完成时,它会关闭虚拟机。 不要重新启动 VM。

    登录到 Azure

    如果尚未安装 Azure PowerShell 1.4 版或更高版本,请阅读 如何安装和配置 Azure PowerShell

    1. 打开 Azure PowerShell 并登录到 Azure 帐户。 此时会打开一个弹出窗口让输入 Azure 帐户凭据。

      PowerShell
      Login-AzureRmAccount -EnvironmentName AzureChinaCloud
      
    2. 获取可用订阅的订阅 ID。

      PowerShell
      Get-AzureRmSubscription
      
    3. 使用订阅 ID 设置正确的订阅。 将 替换为正确订阅的 ID。

      PowerShell
      Select-AzureRmSubscription -SubscriptionId "<subscriptionID>"
      

    获取存储帐户

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

    如果要使用 VHD 为 VM 创建托管磁盘,存储帐户位置必须与要创建 VM 的位置相同。

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

    PowerShell
    Get-AzureRmStorageAccount
    

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

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

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

      PowerShell
      Get-AzureRmResourceGroup
      

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

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

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

      -SkuName 的有效值为:

      • Standard_LRS - 本地冗余存储。
      • Standard_ZRS - 区域冗余存储。
      • Standard_GRS - 异地冗余存储。
      • Standard_RAGRS - 读取访问权限异地冗余存储。
      • Premium_LRS - 高级本地冗余存储。

    将 VHD 上传到存储帐户

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

    PowerShell
    $rgName = "myResourceGroup"
    $urlOfUploadedImageVhd = "https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer/myUploadedVHD.vhd"
    Add-AzureRmVhd -ResourceGroupName $rgName -Destination $urlOfUploadedImageVhd `
        -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 创建托管磁盘或新 VM,请保存 目标 URI 路径供稍后使用。

    用于上传 VHD 的其他选项

    也可以使用以下方法之一将 VHD 上传到存储帐户:

    通过上传的 VHD 创建托管映像

    使用通用 OS VHD 创建托管映像。 将值替换为自己的信息。

    1. 首先,设置公共参数:

      PowerShell
      $vmName = "myVM"
      $computerName = "myComputer"
      $vmSize = "Standard_DS1_v2"
      $location = "China East" 
      $imageName = "yourImageName"
      
    2. 使用通用 OS VHD 创建映像。

      PowerShell
      $imageConfig = New-AzureRmImageConfig -Location $location
      $imageConfig = Set-AzureRmImageOsDisk -Image $imageConfig -OsType Windows -OsState Generalized -BlobUri $urlOfUploadedImageVhd
      $image = New-AzureRmImage -ImageName $imageName -ResourceGroupName $rgName -Image $imageConfig
      

    创建虚拟网络

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

    1. 创建子网。 此示例创建名为 mySubnet 的子网,其地址前缀为 10.0.0.0/24

      PowerShell
      $subnetName = "mySubnet"
      $singleSubnet = New-AzureRmVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.0.0/24
      
    2. 创建虚拟网络。 此示例创建名为 myVnet 的虚拟网络,其地址前缀为 10.0.0.0/16

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

    创建公共 IP 地址和网络接口

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

    1. 创建公共 IP 地址。 此示例创建名为 myPip的公共 IP 地址。

      PowerShell
      $ipName = "myPip"
      $pip = New-AzureRmPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location `
          -AllocationMethod Dynamic
      
    2. 创建 NIC。 此示例创建名为 myNic的 NIC。

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

    创建网络安全组和 RDP 规则

    若要使用 RDP 登录到 VM,需要创建一个允许在端口 3389 上进行 RDP 访问的网络安全规则 (NSG)。

    此示例创建名为 myNsg 的 NSG,其中包含一个允许通过端口 3389 传输 RDP 流量的、名为 myRdpRule 的规则。 有关 NSG 的详细信息,请参阅 Opening ports to a VM in Azure using PowerShell(使用 PowerShell 在 Azure 中打开 VM 端口)。

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

    为虚拟网络创建变量

    为完成的虚拟网络创建变量。

    PowerShell
    $vnet = Get-AzureRmVirtualNetwork -ResourceGroupName $rgName -Name $vnetName
    

    获取 VM 的凭据

    以下 cmdlet 将打开一个窗口,需在其中输入远程访问 VM 所用的本地管理员帐户的新用户名和密码。

    PowerShell
    $cred = Get-Credential
    

    将 VM 的名称和大小添加到 VM 配置。

    PowerShell
    $vm = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize
    

    将 VM 映像设置为新 VM 的源映像

    使用托管 VM 映像的 ID 设置源映像。

    PowerShell
    $vm = Set-AzureRmVMSourceImage -VM $vm -Id $image.Id
    

    设置 OS 配置并添加 NIC。

    输入 OS 磁盘的存储类型(PremiumLRS 或 StandardLRS)和大小。 此示例将帐户类型设置为 PremiumLRS,将磁盘大小设置为 128 GB,将磁盘缓存设置为 ReadWrite

    PowerShell
    $vm = Set-AzureRmVMOSDisk -VM $vm -DiskSizeInGB 128 `
    -CreateOption FromImage -Caching ReadWrite
    
    $vm = Set-AzureRmVMOperatingSystem -VM $vm -Windows -ComputerName $computerName `
    -Credential $cred -ProvisionVMAgent -EnableAutoUpdate
    
    $vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id
    

    创建 VM

    使用存储在 $vm 变量中的配置创建新 VM。

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

    验证是否已创建 VM

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

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

    后续步骤

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

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

  • 相关阅读:
    用AVIFile函数制做AVI文件基本步骤
    RHEL5下源码安装Mysql
    RHEL 6.2/i686配置使用CentOS YUM源
    教你选择最稳定的 MySQL 版本
    RHEL 6.2/i686桌面版解决风扇狂转的问题 安装官方闭源ATI显卡驱动
    Ubuntu 11.10下解决JUK播放MP3乱码的方法
    Ubuntu 10.04下SVN+Apache安装、配置与使用
    Ubuntu 11.10安装(卸载)ATI闭源驱动导致黑屏进不了系统的解决办法
    ubuntu 11.10下创建eclipse桌面快捷方式
    Ubuntu 11.10与Windows双系统的硬盘安装方法
  • 原文地址:https://www.cnblogs.com/zangdalei/p/7698119.html
Copyright © 2011-2022 走看看