【问题标题】:Azure Add-AzureDisk is not workingAzure Add-AzureDisk 不工作
【发布时间】:2018-07-23 23:34:38
【问题描述】:

我正在使用 PowerShell ISE。当我运行Add-AzureDisk 我得到一个 CLI 向导并填写 DiskName 我的剪贴板中有 vhd 文件 uri(从门户网站复制) 当我使用没有 "..." 的 uri 时,我得到:

Add-AzureDisk : 无效的 URI: 无法解析主机名。

在 line:1 char:1

  • 添加-AzureDisk
  • ~~~~~~~~~~~~~
    • CategoryInfo : NotSpecified: (:) [Add-AzureDisk], UriFormatException
    • FullyQualifiedErrorId:System.UriFormatException,Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS.AddAzureDisk 命令

当我使用 "uri here" 时,我得到:

Add-AzureDisk : 无效的 URI:URI 方案无效。在 line:1 char:1

我使用了这个按钮:

我开始认为我的 powershell 模块已经过时了,所以我将Get-Module AzureRm.Profile -ListAvailable 运行为suggested here

目录:C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ResourceManager\AzureResourceManager

ModuleType 版本名称 ExportedCommands
---------- -------- ---- ----
清单 4.0.0 AzureRM.Profile {Disable-AzureRmDataCollection, Disable-AzureRmContextAutosave,...

但我也有 v5(在 the docs website 上找到):

Get-Module -ListAvailable -Name AzureRm.Resources |选择版本

版本

5.0.0

您可能已经猜到了,我更习惯于门户网站。但是我正在尝试使用两个 un托管磁盘 vhd 创建一个新的虚拟机,这些磁盘位于我的 blob 存储容器中。

编辑我尝试了 Azure CLI:

az vm create -n "tmp-vm" -g "resource-tmp" --attach-os-disk "https://the-uri-copied-from-ui.blob.core.windows.net/vhd-container/vm-osdisk.vhd" --size Standard_DS1_v2 --use-unmanaged-disk --os-type windows

得到:

At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-debug for usage details. 
{
  "status": "Failed",
  "error": {
    "code": "ResourceDeploymentFailure",
    "message": "The resource operation completed with terminal provisioning state 'Failed'.",
    "details": [
      {
        "code": "DiskBlobPendingCopyOperation",
        "message": "Disk blob https://the-uri-copied-from-ui.blob.core.windows.net/vhd-container/vm-osdisk.vhd is not ready. Copy state: Failed. Please retry when the blob is ready."
      }
    ]
  }
}  Correlation ID: 0e1231a9-aa0e-4d79-8953-92ea43c658eb

我使用在此处找到的 powershell 命令创建了 vhd: https://stackoverflow.com/a/45569760/169714 也许失败了?我没有收到错误或任何东西?我该如何巩固它?

edit2 我尝试了templates 并且很难获得调试信息。但我现在发现了错误。和以前一样:

blob 似乎具有预期的大小。租赁状态说可用。上次修改日期是一秒前,这是否意味着底层存储仍在进行中?我试图运行Get-AzureStorageBlobCopyState -Blob tmpvmosdisk.vhd -Container vhd-containers -WaitForComplete,但这给出了一个关于非必需(我不知道)参数的错误: Get-AzureStorageBlobCopyState : Could not get the storage context. Please pass in a storage context or set the current storage context.

edit 3 数据磁盘似乎再次刷新。原来是 512GB,现在又归零了?

所以当我想将 vhd 添加为磁盘时,我再次收到未准备好的消息...

【问题讨论】:

  • 如果要将数据磁盘添加到 Azure VM,请使用:Add-AzureDataDisk 参考:docs.microsoft.com/en-us/powershell/module/azure/…
  • 它不仅仅是一个数据盘。它是主要的操作系统磁盘,因为我不想要托管磁盘,而是更便宜的非托管磁盘。所以我将一个快照(我认为/希望)存储在一个 blob 容器中,并想用它创建一个虚拟机。

标签: powershell azure


【解决方案1】:

正如 Hannel 所说,Add-AzureDisk 是一个经典命令。您不能使用它来创建 ARM 模式 VM。

--attach-os-disk 它需要一个托管磁盘,现在,你给一个非托管磁盘(VHD),所以,你会得到错误日志。看到这个link

根据您的场景,简单的方法是使用模板创建 VM。你可以使用这个template:Create a Virtual Machine from a User Image

如果你有现有的 VNet,你也可以使用这个template

【讨论】:

  • 您好,该模板适合您吗?如果你真的想使用 Power Shell 创建虚拟机,可以在 template 中使用 Power Shell。
  • 那么 Azure CLI 是 ARM 模式,无法使用非托管磁盘创建 VM?所以我需要 ASM,因此需要 powershell(模板)来使用 add-azuredisk 来使用 vhd 并创建非托管磁盘?
  • 但我认为模板可以更轻松地做到这一点。
  • 将尝试模板。但是我找到了为什么我的 blob 还没有准备好...imgur.com/a/6sl2o所以我必须重试创建 vhd
  • 是的,你的 VHD 是 0。你需要再做一次。
【解决方案2】:

我可以强调多个问题,我会尽力回答所有问题。

首先,Add Add-AzureDisk 是一个 ASM(经典部署)命令,但您提到的是 AzureRM 模块。是 ARM 还是 ASM 部署?

其次,您的 CLI 是 ARM 部署,失败是因为您复制了 VHD,而复制操作尚未完成,因此您无法使用 VHD。在使用 VHD 之前,您应该可以使用 az storage blob show 命令验证 VHD 复制/移动是否已完成。

希望这会有所帮助。

【讨论】:

  • 我不介意是asm还是arm。只要我可以从我的 blob 存储 vhd 中获得非托管磁盘 :)
猜你喜欢
  • 2017-10-11
  • 1970-01-01
  • 1970-01-01
  • 2015-01-22
  • 2013-01-28
  • 1970-01-01
  • 2013-02-07
  • 1970-01-01
  • 2013-11-07
相关资源
最近更新 更多