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

我正在使用libvirt在Openstack环境之外引导cirros虚拟机。 在启动时,VM检查元数据二十次,这为启动时间增加了很多延迟。

环比“净”上涨至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或其他一些机制来禁用元数据查找吗?

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

这是我做的。


 #!/ bin / sh的

导出VM_NAME = cirros $$
 IMAGES_BASE =的/ var / lib中/ libvirt的/图像
 cp $ IMAGES_BASE / cirros / cirros-0.3.0-i386-blank.img $ IMAGES_BASE / $ VM_NAME.img

 virt-install -r 256 \
   -n $ VM_NAME \
   --vcpus = 1 \
   - import\
   - 自动启动 \
   --memballoon virtio \
   --network bridge = 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” \
   --disk $ IMAGES_BASE / $ VM_NAME.img \
   --noautoconsole

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

更新 – 另一种方法是编辑/ etc / cirros-init / config。 更改DATASOURCE_LISTvariables。 这种方法需要更新虚拟机映像,所以我更喜欢使用内核的参数方法。 文件/ etc / cirros-init / config存在于cirros-0.3.3中,而不是cirros-0.3.0。 我没有检查其他版本。

您可能感兴趣: https : //github.com/eprasad/virt-cirros 。 虚拟化平台友好的cirros形象