1

我正在尝试使用 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方法,Domain createVm = con.domainCreateXML(str, 0); 因为str我正在传递xml字符串

4

1 回答 1

0

镜像文件的创建是在 libvirt API 之外的,因为关心实际磁盘设备的是 qemu。从技术上讲,VM 磁盘设备可以是像 *.img 这样的原始映像文件,或者像映射的 iscsi 目标这样的循环设备或存储设备,而 libvirt 不知道它来自哪里。

因此,您需要自己处理 VM 磁盘文件的创建。两者qemu-img兼而有之dd。请参阅此问题的答案。如果你只想为 KVM VM 创建原始文件,实际上你只需要通过 Java File API创建一个稀疏文件。请参阅在 Java 中创建具有给定大小的文件的问题,它的工作与所做的完全相同qemu-img create

于 2013-07-07T14:36:06.897 回答