本文将以宿主上直接写文件到VM内部为例讲解为何要注入以及如何实现
tag: qemu-ga, qemu guest agent, kvm, guest-file-write, inject
小慢哥的原创文章,欢迎转载
目录
▪ 为什么要“注入”到VM内部
▪ 如何实现“注入”
▪ Step1. 为VM配置channel
▪ Step2. 部署qemu-ga
▪ Step3. 注入操作说明
▪ Step4. Base64计算
▪ Step5. 开始注入
▪ 附1. qemu-ga支持的所有指令
▪ 附2. 配置多个channel
▪ 参考文档
为什么要“注入”到VM内部
原因很简单:在VM外部无法实现,只能进入到VM内来实现
KVM不像Docker(container)只是对进程进行cgroup隔离,KVM是全封闭的环境。
对于基于KVM的虚拟机来说,通常存在如下需求:
▷ 在线修改密码
▷ 在线增加公钥
▷ 在线采集性能(如cpu使用率、负载、内存使用量等性能指标)
▷ 其他各种在线功能
上述这些场景的共性:仅在VM外部是无法实现的。因此就有了多种解决方案,但无论哪种解决方案都要同时满足以下2点才能实现:
▷ 通道:在VM内部与外部(宿主)之间打开一个通道,可以进行数据交互
▷ agent:在VM内部种下一个agent,用于接收外部的指令并反馈结果
在VM内部种下agent的做法可以形象地称之为"inject 注入"
如何实现“注入”
第一步,打开通道