我正在尝试使用java创建一个使用libvirt api的kvm。我面临的问题是我需要一个设备(图像文件(例如:kvm.img))。我使用.xml文件使用libvirt api和java创建kvm。现在我正在做的是首先使用终端的qemu-img创建.img文件。 qemu-img create /var/lib/libvirt/images/kvm.img 10G
是我正在使用的代码,在xml中创建kvm我提到<source file='var/lib/libvirt/images/kvm.img'/>
现在我需要知道libvirt api中是否有任何方法来创建传递xml文件的.img文件,我需要了解xml文件(创建img文件)
我正在使用libvirt 1.0
我用来创建kvm的xml文件是:
<domain type='kvm'><name>ft</name><memory>131072</memory><currentMemory>131072</currentMemory><vcpu>1</vcpu><os><type arch='x86_64' machine='pc-0.12'>hvm</type><boot dev='hd'/></os><features><acpi/></features> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff><on_reboot>restart</on_reboot><on_crash>destroy</on_crash> <devices><emulator>/usr/bin/kvm</emulator><disk type='file' device='disk'><source file='var/lib/libvirt/images/ft.img'/><target dev='hda' bus='ide'/></disk><interface type='network'><mac address='52:54:00:8b:08:dd'/><source network='default'/><model type='virtio'/></interface><input type='mouse' bus='ps2'/><graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1'/><video><model type='cirrus' vram='9216' heads='1'/> </video></devices></domain>
在java中使用libvirt metod作为Domain createVm = con.domainCreateXML(str, 0);
as str
我正在传递xml字符串
答案 0 :(得分:0)
图像文件创建超出libvirt API,因为qemu关心实际的磁盘设备。从技术上讲,VM磁盘设备可能是原始图像文件,如* .img,或循环设备或存储设备,如映射的iscsi目标,而libvirt不知道它来自何处。
因此,您需要自己处理VM磁盘文件的创建。 qemu-img
或dd
都可以完成这项工作。请参阅此question的答案。如果您只想为KVM VM创建原始文件,实际上您只需要通过Java File API创建稀疏文件。请参阅问题Create file with given size in Java,该问题与qemu-img create
的工作完全相同。