如何将磁盘映像导入 libvirt?

如何将磁盘映像导入 libvirt?

有人能发布正确的语法吗?我尝试使用 chmod 命令,但我做错了。我只是想将 centos iso 文件移动到 /images 以设置测试虚拟机

答案1

您实际上“不应该”这样做,因为 libvirt 会管理自己的卷池。使用:

size=$(stat -Lc%s centos.iso)
virsh vol-create-as default centos $size --format raw
virsh vol-upload --pool default centos centos.iso

这将在默认池中创建一个名为 virsh 卷,centos其内容为centos.iso

这样,libvirt 会自行处理所有所需的权限和所有权。

答案2

我知道这是一篇旧帖子但我想分享我所做的事情。

在我的例子中,我需要将 qcow2 映像导入卷。我使用了 jq、qemu-img 和 bash:

# export IMGSIZE=$(qemu-img info --output json /data/myfile.qcow2 | jq -r .[\"virtual-size\"])
# export IMGFMT=$(qemu-img info --output json /data/myfile.qcow2 | jq -r .format)

列出池并选择所需的池:

# virsh pool-list --all
 Name                 State      Autostart
-------------------------------------------
 default              active     yes

# export IMGPOOL=default

创建卷:

# virsh vol-create-as $IMGPOOL myvolume $IMGSIZE --format $IMGFMT
Vol myvolume created

并上传图片:

# virsh vol-upload --pool $IMGPOOL myvolume /data/myfile.qcow2

我不知道您是否可以将 qemu-img 通过管道传输到 virsh,有点像“qemu-img dd ... | virsh vol-upload ...”,但那样会很方便 :-)

感谢@Robie Basak 的帖子,我用它来写下上述信息。

答案3

我假设有两点:/var/lib/libvirt/images/是 拥有的root并且你不是root。这很好,但你必须尊重这就是问题所在。

复制文件可能最有意义以 root 身份, 使用sudo

sudo cp my-image /var/lib/libvirt/images/

或者,你可以接管/var/lib/libvirt/images/

sudo chown $USER /var/lib/libvirt/images/

或者(最不好的)你可以使它全局可写:

sudo chmod 755 $USER /var/lib/libvirt/images/

我会遵循这样的逻辑,即它是有原因的,但如果你只是在玩,而且这永远不会成为一台生产机器,你可能不需要那么小心。

答案4

您可以尝试在 nautilus 中执行此操作,只需输入

sudo -i nautilus

然后像平常一样复制文件。

相关内容