我有一个运行良好的 KVM/Qemu 设置。现在我想简化新虚拟机的配置。
两种显而易见的方法是克隆现有磁盘或从头开始安装(使用自动预置/kickstart)。
在我的测试中,使用 preseed/kickstart 进行安装从创建到启动和运行至少需要几分钟(即使使用本地镜像)。结果很好,但时间太长了。
克隆显然要快得多,但是一旦您需要比源更大的磁盘,它就会产生问题。
现在,如果这只是一次性的事情,那么启动它并手动扩展磁盘将是微不足道的。但是,我希望在首次启动时以自动方式执行此操作。
基本上需要执行三个任务:
- 扩展磁盘(fdisk/cfdisk 等)
- 调整卷池的大小(在 LVM 的情况下)
- 展开实际的文件系统
虽然可以编写脚本,但我想在这里提出它,因为我怀疑我是唯一一个希望以自动化方式执行此操作的人。我发现的最接近的东西是用于 Raspberry Pi 的raspi-config,它为此提供了一个自动化工具。
我当然可以从 raspi-config 中提取代码,但它做了很多假设,所以我希望可能有一个更通用的工具可用。
libguestfs可能可以胜任这项任务,但它不能就地完成,引用:
这样做作为克隆步骤应该可以工作。
事实证明, Cloud Init
growroot
的一部分可以做到这一点。有关其工作原理的完整示例,请查看我在vmprep中的实现。