libvirt-go 设置不同类型磁盘:SCSI、IDE、SATA、VIRIO
可以使用以下代码来设置四个磁盘,类型分别为'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()
}
原文地址: https://www.cveoy.top/t/topic/fZwO 著作权归作者所有。请勿转载和采集!