启动与虚拟机故障

已启用 Cloud-init 的 VM 需要很长时间才能启动 - Virtual Machines

· 52CE 我爱测

适用于:✔️ Linux VM 总结 本文介绍如何对使用 cloud-init 功能Azure虚拟机(VM)的意外启动延迟进行故障排除(/zh-cn/azure/virtual-machines/linux/using-cloud-init)。 这种延迟可能导致启用了 cloud-init 的 Azure vm 部署需要两分钟(120 秒)以上的启动。 现象 启动Azure VM 需要两分钟以上才能完成未提供本地临时磁盘的 VM 产品,例如以下产品: -

适用于:✔️ Linux VM

总结

本文介绍如何对使用 cloud-init 功能Azure虚拟机(VM)的意外启动延迟进行故障排除。 这种延迟可能导致启用了 cloud-init 的 Azure vm 部署需要两分钟(120 秒)以上的启动。

现象

启动Azure VM 需要两分钟以上才能完成未提供本地临时磁盘的 VM 产品,例如以下产品:

如果检查 /var/log/cloud-init.log 和 /var/log/waagent.log (init 阶段)等日志文件,则会看到类似于以下示例的输出:

# grep "did not appear after 120 seconds"  *

cloud-init.log:2021-12-01 19:35:50,455 - DataSourceAzure.py[WARNING]: ephemeral device '/dev/disk/cloud/azure_resource' did not appear after 120 seconds.
cloud-init.log:2021-12-01 21:19:58,531 - DataSourceAzure.py[WARNING]: ephemeral device '/dev/disk/cloud/azure_resource' did not appear after 120 seconds.
cloud-init-output.log:2021-12-01 19:35:50,455 - DataSourceAzure.py[WARNING]: ephemeral device '/dev/disk/cloud/azure_resource' did not appear after 120 seconds.
cloud-init-output.log:2021-12-01 21:19:58,531 - DataSourceAzure.py[WARNING]: ephemeral device '/dev/disk/cloud/azure_resource' did not appear after 120 seconds.
messages:Dec  1 19:35:50 redhat84noephstor01 cloud-init[1065]: 2021-12-01 19:35:50,455 - DataSourceAzure.py[WARNING]: ephemeral device '/dev/disk/cloud/azure_resource' did not appear after 120 seconds.
messages:Dec  1 21:19:58 redhat84noephstor01 cloud-init[931]: 2021-12-01 21:19:58,531 - DataSourceAzure.py[WARNING]: ephemeral device '/dev/disk/cloud/azure_resource' did not appear after 120 seconds.
# /var/log/cloud-init.log

2021-12-01 19:35:50,481 - util.py[WARNING]: Failed partitioning operation
Device /dev/disk/cloud/azure_resource did not exist and was not created with a udevadm settle.
2021-12-01 19:35:50,481 - util.py[DEBUG]: Failed partitioning operation
Device /dev/disk/cloud/azure_resource did not exist and was not created with a udevadm settle.
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/cloudinit/config/cc_disk_setup.py", line 141, in handle
    func=mkpart, args=(disk, definition))
  File "/usr/lib/python3.6/site-packages/cloudinit/util.py", line 2292, in log_time
    ret = func(*args, **kwargs)
  File "/usr/lib/python3.6/site-packages/cloudinit/config/cc_disk_setup.py", line 780, in mkpart
    assert_and_settle_device(device)
  File "/usr/lib/python3.6/site-packages/cloudinit/config/cc_disk_setup.py", line 

原因

在 VM 启动期间,cloud-init在 Python 中运行 DataSourceAzure.py 文件,然后等待本地临时磁盘(/mnt/azure_resource)可用。 由于使用的是没有本地临时磁盘的 Azure VM,cloud-init 必须等到进程超时。临时磁盘的超时间隔是启动过程继续之前的 120 秒。

解决方案

将 cloud-init 的副本升级到版本 21.2 或更高版本。

解决方法

如果无法将 cloud-init 升级到版本 21.2 或更高版本,可以编辑 DataSourceAzure.py 文件来缩短超时值。 以下示例将超时值从 120 秒修改为 2 秒:

sudo sed -i 's/maxwait=120/maxwait=2/g' $(locate DataSourceAzure.py)

资料来源与适用范围

资料来源
微软官方 Linux 虚拟机排障文档
适用范围
Azure Linux 虚拟机;按正文发行版、内核及代理版本
内容语言
中文;命令、路径和错误标识保留技术原文
本地收录日期
2026-10-26
授权说明
CC BY 4.0

正文与所需资源由本站本地存储。查看来源及更新记录 ↗

请按适用版本和实际日志确认原因;本站没有对每一种系统或设备逐项执行文中的操作。