如何在 cirros 启动时禁用元数据查找?

Jef*_*dge 5 libvirt kvm-virtualization

我正在使用 libvirt 在 Openstack 环境之外启动 cirros 虚拟机。启动时,虚拟机会检查元数据二十次,这会增加启动时间的大量延迟。

cirros-ds 'net' 升级至 6.14
检查http://169.254.169.254/2009-04-04/instance-id 失败1/20:上涨6.18。请求失败 2/20失败:上涨18.32。请求失败 3/20失败:上涨30.38。请求失败 4/20 失败:上涨 42.44。请求失败 [剪]

我正在使用 cirros-0.3.3。

我可以使用 cloud-init 或其他机制来禁用元数据查找吗?

Jef*_*dge 2

经过几天的研究,我能够回答我自己的问题。您必须将“ds=nocloud”作为内核选项传递给虚拟机。

我是这样做的。

#!/bin/sh

导出 VM_NAME=cirros$$
IMAGES_BASE=/var/lib/libvirt/images
cp $IMAGES_BASE/cirros/cirros-0.3.0-i386-blank.img $IMAGES_BASE/$VM_NAME.img

virt-install -r 256 \
  -n $VM_NAME \
  --vcpu=1 \
  - 进口 \
  - 自动启动 \
  --memballoon virtio \
  --网桥=virbr0 \
  --boot kernel=$IMAGES_BASE/cirros/cirros-0.3.0-i386-vmlinuz,initrd=$IMAGES_BASE/cirros/cirros-0.3.0-i386-initrd,kernel_args="console=/dev/ttyS0 ds=nocloud" \
  --磁盘 $IMAGES_BASE/$VM_NAME.img \
  --noautoconsole

内核、initrd 和空白映像包含在下载页面上的 cirros UEC 版本中。

更新 - 另一种方法是编辑 /etc/cirros-init/config。更改 DATASOURCE_LIST 变量。此方法需要更新 VM 映像,因此我更喜欢使用内核参数方法。文件 /etc/cirros-init/config 存在于 cirros-0.3.3 中,但不存在于 cirros-0.3.0 中。我没有检查其他版本。