2017-02-18 76 views
0

我有应用程序与存储帐户和磁盘部署虚拟机,我想将其转换为使用托管磁盘 - 因为这是Azure存储的未来。我期待的REST API - 和我丢失了两两件事:1。 如何创建现有管理磁盘快照的形式,有创建快照的API,但它是空的或旧的非托管 2.我可以选择创建磁盘的LUN?天青 - 管理的磁盘,如何创建快照

回答

2
  1. 如何创建现有管理磁盘快照的形式,有创建快照的API,但它是空的或旧的非托管

根据您的描述中,我创建了一个测试演示来创建现有托管磁盘(操作系统磁盘)的快照,它运行良好。 我创建一个Windows VM并使用托管磁盘作为操作系统磁盘,然后创建另一个托管磁盘并将其添加到虚拟机。

结果如下图所示: enter image description here 如果要创建现有管理磁盘(它的数据)的快照,我建议你可以发送请求到以下网址。

Url: https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Compute/snapshots/{snapshotName}?api-version={api-version} 

Method: PUT 

Parameter: 
subscriptionId The identifier of your subscription where the snapshot is being created. 
resourceGroup The name of the resource group that will contain the snapshot. 
snapshotName The name of the snapshot that is being created. The name can’t be changed after the snapshot is created. Supported characters for the name are a-z, A-Z, 0-9 and _. The max name length is 80 characters. 
api-version The version of the API to use. The current version is 2016-04-30-preview. 

Request content: 
{ 
    "properties": { 
    "creationData": { 
     "createOption": "Copy", 
     "sourceUri": "/subscriptions/{subscriptionId}/resourceGroups/{YourResourceGroup}/providers/Microsoft.Compute/disks/{YourManagedDiskName}" 
    } 
    }, 
    "location": "eastasia" 
} 

更多细节,你可以参考遵循C#代码:

json.txt:

{ 
    "properties": { 
    "creationData": { 
     "createOption": "Copy", 
     "sourceUri": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/BrandoSecondTest/providers/Microsoft.Compute/disks/BrandoTestVM" 
    } 
    }, 
    "location": "eastasia" 
} 

代码:

static void Main(string[] args) 
     { 
      string body = File.ReadAllText(@"D:\json.txt"); 
      // Display the file contents to the console. Variable text is a string. 
      string tenantId = "xxxxxxxxxxxxxxxxxxxxxxxx"; 
      string clientId = "xxxxxxxxxxxxxxxxxxxxxxxx"; 
      string clientSecret = "xxxxxxxxxxxxxxxxxxxx"; 
      string authContextURL = "https://login.windows.net/" + tenantId; 
      var authenticationContext = new AuthenticationContext(authContextURL); 
      var credential = new ClientCredential(clientId, clientSecret); 
      var result = authenticationContext.AcquireTokenAsync(resource: "https://management.azure.com/", clientCredential: credential).Result; 
      if (result == null) 
      { 
       throw new InvalidOperationException("Failed to obtain the JWT token"); 
      } 
      string token = result.AccessToken; 
      HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("https://management.azure.com/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/xxxxxxxxxxxxxxxx/providers/Microsoft.Compute/snapshots/BrandoTestVM_snapshot2?api-version=2016-04-30-preview"); 
      request.Method = "PUT"; 
      request.Headers["Authorization"] = "Bearer " + token; 
      request.ContentType = "application/json"; 

      try 
      { 
       using (var streamWriter = new StreamWriter(request.GetRequestStream())) 
       { 
        streamWriter.Write(body); 
        streamWriter.Flush(); 
        streamWriter.Close(); 
       } 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex.Message); 
      } 
      //Get the response 
      var httpResponse = (HttpWebResponse)request.GetResponse(); 
      using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
      { 
       Console.WriteLine(streamReader.ReadToEnd()); 
      } 

      Console.ReadLine(); 
     } 

结果: enter image description here

  • 可以我选择在其上创建该磁盘纶?
  • 你的意思是你想用azuredeploy选择磁盘的LUN?

    如果这是你的意见,我建议你可以参考遵循JSON的例子来了解如何建立虚拟机的部署内容,并选择它的LUN。

    更多细节,你可以参考下面deploymentTemplate JSON(晴):

    "diskArray": [ 
        { 
        "name": "datadisk1", 
        "lun": 0, 
        "vhd": { 
        "uri": "[concat('http://', variables('storageAccountName'),'.blob.core.windows.net/vhds/', 'datadisk1.vhd')]" 
        }, 
        "createOption": "Empty", 
        "caching": "[variables('diskCaching')]", 
        "diskSizeGB": "[variables('sizeOfDataDisksInGB')]" 
        }, 
        ] 
    

    更多细节,你可以参考以下网站: 201-vm-dynamic-data-disks-selection/azuredeploy.json