自动调整虚拟机磁盘大小

自动调整虚拟机磁盘大小

我有一个运行良好的 KVM/Qemu 设置。现在我想简化新虚拟机的配置。

两种明显的方法是克隆现有磁盘或从头开始安装(使用自动预置/启动)。

在我的测试中,使用 preseed/kickstart 安装从创建到启动和运行至少需要几分钟(即使使用本地镜像)。结果很棒,但花费的时间太长了。

克隆显然要快得多,但是当你需要比源更大的磁盘时就会产生问题。

现在,如果这只是一次性的事情,那么手动启动并扩展磁盘就很简单了。但是,我希望在第一次启动时以自动方式执行此操作。

基本上有三项任务需要执行:

  • 扩展磁盘(fdisk/cfdisk 等)
  • 调整卷池大小(对于 LVM)
  • 扩展实际文件系统

虽然可以编写脚本,但我想在这里提出这一点,因为我怀疑我不是唯一一个希望以自动化方式完成此操作的人。我发现最接近的方法是raspi-配置适用于 Raspberry Pi,它为此提供了自动化工具。

我当然可以从 raspi-config 中提取代码,但是它做了很多假设,所以我希望可能有一个更通用的工具可用。

答案1

可能可以胜任这项任务,但它无法在原地完成,Quote:

Copy olddisk to newdisk, extending one of the guest's partitions to fill the extra 5GB of space.

    virt-filesystems --long -h --all -a olddisk

    truncate -r olddisk newdisk
    truncate -s +5G newdisk

    # Note "/dev/sda2" is a partition inside the "olddisk" file.
    virt-resize --expand /dev/sda2 olddisk newdisk

按照这个步骤进行克隆应该可以成功。

答案2

事实证明growroot,这是云初始化可以做到这一点。有关其工作原理的完整示例,请查看我的实现虚拟机准备

相关内容