使用 qemu-img 创建虚拟机磁盘并配置到 libvirt

是的,这段代码是用来创建虚拟机磁盘的。

for _, dist := range req.Dists {
    path := fmt.Sprintf('%s/%s', join, dist.Name+'.qcow2')
    mem := fmt.Sprintf('%dG', dist.Size)
    _, err = utils.ShellExec('qemu-img', 'create', '-f', 'qcow2', path, mem)
    if err != nil {
        logger.Error(err.Error())
        return '', err
    }
    disk := libvirtxml.DomainDisk{
        Device: 'disk',
        Driver: &libvirtxml.DomainDiskDriver{
            Name: 'qemu',
            Type: 'qcow2',
        },
        Source: &libvirtxml.DomainDiskSource{
            File: &libvirtxml.DomainDiskSourceFile{
                File: path,
            },
        },
        Target: &libvirtxml.DomainDiskTarget{
            Bus: dist.Name,
        },
    }
    disks = append(disks, disk)
}

代码解析:

  1. 循环遍历 req.Dists,获取每个磁盘的信息。
  2. 使用 fmt.Sprintf 函数拼接磁盘路径和大小。
  3. 使用 qemu-img create 命令创建一个 qcow2 格式的磁盘文件,大小为 dist.Size GB。
  4. 创建 libvirtxml.DomainDisk 结构体,用于表示虚拟机磁盘。
    • Device: 设置为 'disk',表示这是一个磁盘设备。
    • Driver: 设置磁盘驱动,这里使用 qemu 驱动。
    • Source: 设置磁盘文件的来源,这里使用创建的 qcow2 文件。
    • Target: 设置磁盘的目标总线类型,可以使用 'ide'、'sata'、'virtio' 或 'scsi',具体取决于虚拟化技术和虚拟机配置。
  5. 将创建的 DomainDisk 结构体添加到 disks 数组中。

注意:

  • Target 中的 Bus 字段需要根据实际情况设置,建议优先选择性能更好的 'virtio' 类型。
  • 代码中使用 dist.Name 作为磁盘总线类型,建议根据实际需求修改。
使用 qemu-img 创建虚拟机磁盘并配置到 libvirt

原文地址: https://www.cveoy.top/t/topic/f2hm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录