标签 virt-manager 下的文章

在本指南中,你将学习如何在 virt-manager 的 KVM、QEMU 和 libvirt 的主机和客户机之间共享文件夹。

virt-manager 应用或软件包使用 libvirt 库来提供虚拟机管理服务。它有一个桌面界面,有助于创建、删除和管理多个虚拟机。

virt-manager 桌面界面及其组件为各种个人和商业场景提供了灵活的虚拟机管理服务。它是一个自由开源的应用,主要用于 KVM 虚拟机。然而,它也可以支持其他管理程序,如 Xen 和 LXC。

在之前的文章中,我解释了 如何使用 virt-manager 创建虚拟机。这篇文章介绍了如何在客户机和主机之间无缝访问文件和文件夹。

关于 virtiofs 的说明

共享文件和文件夹是由名为 virtiofs 的 libvirt 共享文件系统提供的。它提供了访问主机上的目录树的所有功能和参数。由于大多数 virt-manager 虚拟机的配置都被翻译成 XML,所以共享文件/文件夹也可以通过 XML 文件来指定。

在 virt-manager中共享文件夹

首先,确保你的客户机关闭了电源。在 virt-manager GUI 中,选择虚拟机,点击“ 打开 Open ”,弹出控制台设置。

打开设置

点击工具条上显示虚拟硬件细节的图标。然后点击左边面板上的“ 内存 Memory ”。

选择选项 “ 启用共享内存 Enable shared memory ”。点击应用。

启用共享内存选项

然后点击底部的 “ 添加硬件 Add hardware ”。

点击添加硬件

在添加新硬件的窗口中,从左边的面板上选择 “ 文件系统 File system ”。

然后在 “ 细节 Details ” 标签中选择 “ 驱动程序 Driver ” 为 “virtiofs”。点击 “ 浏览 Browse > 浏览本地 browse local ”,选择你想在客户机内访问的主机路径

在目标路径中,输入你想要的任何名字。这只是一个文件标签,将在挂载时使用。

所以,如果我想访问 Pictures/Screenshots 文件夹(/home/debugpoint/Pictures/Screenshots),示例设置可以是这样:

添加一个新的文件系统硬件

下面是上述配置的 XML 设置。你可以在 XML 标签中找到它。

<filesystem type="mount" accessmode="passthrough">
  <driver type="virtiofs"/>
  <binary path="/usr/libexec/virtiofsd"/>
  <source dir="/home/debugpoint/Pictures/Screenshots"/>
  <target dir="mount_tag_pictures"/>
  <alias name="fs1"/>
  <address type="pci" domain="0x0000" bus="0x08" slot="0x00" function="0x0"/>
</filesystem>

点击 “ 完成 Finish ”。在 virt-manager 主窗口中,右键点击虚拟机,点击运行,启动虚拟机。确保点击“ 显示图形控制台 show the graphical console ”(如果虚拟机没有显示,点击工具条上的监视器图标)。

在客户机中,创建一个你想挂载主机文件夹的文件夹。在这个例子中,我使用了 /mnt/pictures

sudo mkdir /mnt/pictures

最后,使用你在上述步骤中创建的标签将主机文件夹挂载到这个新文件夹。使用下面的命令在终端做这件事。确保根据你的系统改变下面命令中的标签和文件夹名称。

sudo mount -t virtiofs mount_tag_pictures /mnt/pictures

现在你可以在 virt-manager 中的主机和客户机之间的无缝地浏览文件夹和添加/删除项目。

从 virt-manager 客户机访问主机文件

总结

我希望这个方案能帮助你从客户机上访问主机文件和文件夹。记住,你的用户 ID,也就是用来启动 virt-manager 应用的用户,应该有同样的权限来访问主机文件夹。

如果你遇到任何错误,上述指南帮助了你,请在下面留言。


via: https://www.debugpoint.com/share-folder-virt-manager/

作者:Arindam 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

提问: 当我尝试在虚拟机中安装一个新的Linux时,虚拟机不能启动且报了下面这个错误:"unsupported configuration: hda-duplex not supported in this QEMU binary."(“不支持的配置:hda-duplex在此QEMU文件中不支持。”) 我该如何修复?

这个错误可能来自一个当默认声卡型号不能被识别时的一个qemu bug。

无法完成安装:‘不支持的配置:hda-duplex在此QEMU文件中不支持’

要解决这个问题,按照下面的做。

方案一: virt-manager

virt-manager中,打开虚拟机的虚拟硬件详细菜单,进入声卡选项,改变默认的设备型号为ac97。

点击“应用”按钮并保存设置。看一下虚拟机现在是否可以启动了。

方案二: Virsh

如果你使用的是virsh 而不是virt-manager, 你可以编辑VM相应的配置文件。在节点中查找sound节点,并按照下面的默认声卡型号改成ac97

<devices>
  . . .
  <sound model='ac97'>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
  </sound>
  . . .
</device>

via: http://ask.xmodulo.com/hda-duplex-not-supported-in-this-qemu-binary.html

译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

提问: 我使用libvirt和virt-manager在我的Linux系统上创建虚拟机。我注意到虚拟机镜像位于/var/lib/libvirt/images目录。有没有办法改变虚拟机镜像的默认路径?

libvirt和它的GUI前端virt-manager可以使用不同的虚拟机管理程序创建和管理VM,例如LVM和Xen。默认上所有的虚拟机镜像通过libvirt创建到/var/lib/libvirt/images目录。然而,这有时并不是我们希望的。比如 /var/lib/libvirt/images 此处的磁盘分区大小有限。或者你想要存储所有的虚拟机镜像到一个特定的用于管理的仓库中。

实际上,你可以非常容易地改变libvirt镜像的默认目录,或者称之为“存储池”。

有两种方法可以改变默认存储池。

方法一: Virt-Manager GUI

如果你正在使用virt-manager GUI程序,改变默认存储池非常容易。

进入virt-manager的菜单GUI “编辑” -> "连接细节"。

你可以看到如下所是的默认存储池。在窗口的左下角,点击叉形按钮,将会停止默认的存储池。存储池一旦停止后,点击右边的垃圾桶,将会删除存储池。注意这个动作不会删除池中的镜像。

现在点击左边的加号增加一个新的存储池。

输入新的存储池的名字(比如:default),并且选择存储池的类型。本例中,因为我们只是改变存储池目录所以选择“文件系统目录”。

输入新的存储池路径(比如,/storage)。

这时,新的存储池应该启动了,并且自动在你创建一个新的虚拟机的时候使用。

方法二: Virsh 命令行

另外一个改变默认存储池目录的方法是使用来自libvirt包的virsh 命令行工具。

首先,运行下面的命令来导出默认存储池的XML定义。

 $ virsh pool-dumpxml default > pool.xml 

用文本编辑器打开XML文件,并且改变节点中的/var/lib/libvirt/images改成新的地址。

<pool type='dir'>
  <name>default</name>
  <uuid>0ec0e393-28a2-e975-feec-0c7356f38d08</uuid>
  <capacity unit='bytes'>975762788352</capacity>
  <allocation unit='bytes'>530052247552</allocation>
  <available unit='bytes'>445710540800</available>
  <source>
  </source>
  <target>
    <path>/var/lib/libvirt/images</path>
    <permissions>
      <mode>0711</mode>
      <owner>-1</owner>
      <group>-1</group>
    </permissions>
  </target>
</pool>

移除现在的默认池。

$ virsh pool-destroy default 

Pool default destroyed

现在创建一个基于更新后的XML文件的新存储池。

$ virsh pool-create pool.xml 

Pool default created from pool.xml

这时,默认池已经改变到新的地址了,并且可以使用了。


via: http://ask.xmodulo.com/change-default-location-libvirt-vm-images.html

译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出