如何使用自定义 Debian VHD 对 Azure 进行故障排除;错误消息“配置失败”?

如何使用自定义 Debian VHD 对 Azure 进行故障排除;错误消息“配置失败”?

我已经构建了一个定制的 Debian (Jessie/8) VHD,并尝试在 Azure 上运行它。根据我的研究(以及我读过的 MS 文档),它符合 Azure Linux VHD 要求。我尽量谨慎行事,以减少或消除可能导致问题的原因。以下是有关我的 VHD 的一些一般信息:

  • 静态 VHD 文件(一些来源表明支持动态文件,但有人说不支持)。
  • VHD 采用 VPC 格式,并与 1 MB 对齐。
  • 没有 LVM(同样,一些消息来源说它受支持,而另一些消息来源说它不受支持)。
  • 单个可启动的主分区(无交换),使用 VHD 上的所有空间(一些资料指出这是要求)。
  • grub 已根据要求进行了调整(根据https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-debian-create-upload-vhd/
  • waagent 已安装、配置并且服务器已“取消配置”。

我无法访问 MS HyperV,因此我仅在 VirtualBox 中本地测试了它。FWIW 它在那里运行良好。

我正在使用 azure-cli(为什么你要用 NodeJS 编写命令行客户端让我大吃一惊,但那是另外一个故事了...!)。我还在使用较新的“资源管理器”模式(而不是旧的“经典”模式)。

上传过程很顺利,我已经解决了一些问题(例如 Azure 删除了 vhd 文件扩展名),但现在我陷入了困境。当我尝试配置服务器时,它需要很长时间(实际上是几个小时)才能完成,然后最终失败。azure-cli 没有给出任何有用的错误消息;只是“配置失败”之类的信息。

我有不少使用 AWS 和 Linux 的经验,但基本没有使用 Azure 的经验。不管怎样,这应该不会这么难吧!?

那么我该如何解决我的问题呢?

Azure 中是否有某个地方(或 azure-cli 的未记录的调试开关)可以让我获取更详细的错误消息?

是否有一个我可以解决的常见问题列表?

任何帮助都将不胜感激!提前致谢。

[更新]以下是我正在使用的命令:

azure storage blob upload <path-to-vhd> <container-name> <vhd-on-azure-name> -k <access-key> -a <storage-account-name>

值得一提的是,使用的存储帐户与虚拟机位于同一资源组中。

那么这是有问题的部分(永远存在并最终失败):

azure vm create -u <admin-username> -p <admin-password> --location "AustraliaEast" -g "<my-resource-group>" "<vm-name>" -Q <full-vhd-urn> -f <nic-name> -F <vnet-name> -P 10.0.0.0/8 -j <subnet-name> -k 10.0.0.0/24 -o <storage-account-name> -y linux

nic、vnet 和子网最初是由第一个失败的 vm-create 自动创建的。从那时起,我就不再使用自动创建了,但为了避免污染 Azure 帐户,我只是记下了它们的名称以供重复使用。

其他附加信息:

  • 图像最初在 Debian Jessie 上构建为 raw(然后是 vhd)。
  • 为了测试 QEMU 的较新版本,我使用以下命令在 Arch Linux 上使用 QEMU 2.7 调整了原始 raw 文件的大小并将其转换为 vhd: qemu-img convert -f raw -O vpc -o subformat=fixed

  • 还测试了使用和不使用“force_size”来保持一致性。

  • 所有尝试在 VirtualBox 中都可以正常进行,但使用 Azure 时却全部失败。

[另一个更新] 感谢@Sam 建议尝试使用“经典”。经典界面似乎有更好的错误报告。它说 VHD 有问题(尽管没有给出任何线索)。我会尝试对其进行进一步调整,如果发现任何问题,我会回复。谢谢大家。

相关内容