可以使用以下代码来设置四个磁盘,类型分别为'scsi'、'ide'、'sata'、'virtio',大小均为10GB:

import (
    "github.com/libvirt/libvirt-go"
    "github.com/libvirt/libvirt-go-xml"
)

func main() {
    conn, err := libvirt.NewConnect("qemu:///system")
    if err != nil {
        panic(err)
    }
    defer conn.Close()

    domainXML := libvirtxml.Domain{
        Type: "kvm",
        Name: "my-domain",
        Devices: &libvirtxml.DomainDeviceList{
            Disks: []libvirtxml.DomainDisk{
                {
                    Type: "file",
                    Device: "disk",
                    Driver: &libvirtxml.DomainDiskDriver{
                        Name: "qemu",
                        Type: "qcow2",
                    },
                    Source: &libvirtxml.DomainDiskSource{
                        File: &libvirtxml.DomainDiskSourceFile{
                            File: "/path/to/disk1.qcow2",
                        },
                    },
                    Target: &libvirtxml.DomainDiskTarget{
                        Dev: "vda",
                        Bus: "virtio",
                    },
                    Address: &libvirtxml.DomainAddress{
                        Type: "pci",
                        Domain: "0x0000",
                        Bus: "0x00",
                        Slot: "0x04",
                        Function: "0x0",
                    },
                },
                {
                    Type: "file",
                    Device: "disk",
                    Driver: &libvirtxml.DomainDiskDriver{
                        Name: "qemu",
                        Type: "qcow2",
                    },
                    Source: &libvirtxml.DomainDiskSource{
                        File: &libvirtxml.DomainDiskSourceFile{
                            File: "/path/to/disk2.qcow2",
                        },
                    },
                    Target: &libvirtxml.DomainDiskTarget{
                        Dev: "vdb",
                        Bus: "scsi",
                    },
                    Address: &libvirtxml.DomainAddress{
                        Type: "pci",
                        Domain: "0x0000",
                        Bus: "0x00",
                        Slot: "0x05",
                        Function: "0x0",
                    },
                },
                {
                    Type: "file",
                    Device: "disk",
                    Driver: &libvirtxml.DomainDiskDriver{
                        Name: "qemu",
                        Type: "qcow2",
                    },
                    Source: &libvirtxml.DomainDiskSource{
                        File: &libvirtxml.DomainDiskSourceFile{
                            File: "/path/to/disk3.qcow2",
                        },
                    },
                    Target: &libvirtxml.DomainDiskTarget{
                        Dev: "vdc",
                        Bus: "ide",
                    },
                    Address: &libvirtxml.DomainAddress{
                        Type: "pci",
                        Domain: "0x0000",
                        Bus: "0x00",
                        Slot: "0x06",
                        Function: "0x0",
                    },
                },
                {
                    Type: "file",
                    Device: "disk",
                    Driver: &libvirtxml.DomainDiskDriver{
                        Name: "qemu",
                        Type: "qcow2",
                    },
                    Source: &libvirtxml.DomainDiskSource{
                        File: &libvirtxml.DomainDiskSourceFile{
                            File: "/path/to/disk4.qcow2",
                        },
                    },
                    Target: &libvirtxml.DomainDiskTarget{
                        Dev: "vdd",
                        Bus: "sata",
                    },
                    Address: &libvirtxml.DomainAddress{
                        Type: "pci",
                        Domain: "0x0000",
                        Bus: "0x00",
                        Slot: "0x07",
                        Function: "0x0",
                    },
                },
            },
        },
    }

    domainDef, err := domainXML.Marshal()
    if err != nil {
        panic(err)
    }

    domain, err := conn.DomainDefineXML(string(domainDef))
    if err != nil {
        panic(err)
    }
    defer domain.Free()
}
libvirt-go 设置不同类型磁盘:SCSI、IDE、SATA、VIRIO

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

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