我在 Ubuntu 16.04.3 LTS 笔记本电脑上设置了 Windows 10 VM。总体而言,体验很好——甚至可以为客人配置多个显示器。
我首先安装了在这里找到的 QEMU 客户代理:
这让我走得很远,但鼠标性能之类的东西很糟糕。
最终遇到了这个很棒的包,它使一切都变得更好:
有了这个代理,事情要好得多,包括动态屏幕大小调整、来宾/主机之间的剪贴板等。
就目前而言,我已经安装了两者。但是,看起来“spice-guest-tools”安装的驱动程序与我使用 QEMU 来宾 ISO 手动安装的大部分驱动程序相同。
删除 QEMU 访客代理是否安全?如果我这样做,我会失去通过 virsh 向 VM 发送命令的能力吗?保持两者完好无损有任何明显的问题(现在似乎一切正常)?
查看手册似乎没有提供大量指导:
充其量,它是一厢情愿的,这取决于您安装其他驱动程序的方式。
“spice-guest-tools”安装是否可以独立安装在 Windows 客户机上,或者我是否需要两个代理才能获得完整功能?
我不习惯使用 Ubuntu 或 Debian 作为服务器。我更习惯于 Red Hat/Fedora 方式,甚至是 Gentoo(哎呀)。
在 Red Hat 安装下,您通常可以使用由服务命名的 /etc/sysconfig 中的配置文件来配置大多数从 init 启动的服务。在 Ubuntu 下有没有等价的东西?
具体来说,就命令行选项而言,我试图控制 libvirtd 和 kvm 进程的启动方式。我需要在某处添加 --listen 选项。
我的主机操作系统是 Ubuntu Server 11.04(整洁)
按照 Ubuntu 的帮助详细说明之后,我使用创建了一个 KVM 映像
sudo ubuntu-vm-builder kvm hardy --libvirt qemu:///system
Run Code Online (Sandbox Code Playgroud)
图像文件被创建为
-rw-r--r-- 1 root root 438M 2011-06-17 14:39 ubuntu-kvm/tmpK9hbU5.qcow2
Run Code Online (Sandbox Code Playgroud)
我可以通过 sudo virsh -c qemu:///system "list --all" 用 virsh 列出它
Id Name State
----------------------------------
- ubuntu shut off
Run Code Online (Sandbox Code Playgroud)
Buth 当我打电话时
sudo virsh -c qemu:///system "start ubuntu"
Run Code Online (Sandbox Code Playgroud)
错误被抛出:
error: Failed to start domain ubuntu
error: internal error process exited while connecting to monitor: kvm: -drive file=/home/myuser/vmopt/ubuntu-kvm/tmpK9hbU5.qcow2,if=none,id=drive-ide0-0-0,format=qcow2: could not open disk image /home/myuser/vmopt/ubuntu-kvm/tmpK9hbU5.qcow2: Permission denied
Run Code Online (Sandbox Code Playgroud)
用户“myuser”已添加到组 …
这些中的任何一个比其他的更好吗?家庭使用的实际条款有何不同?
我正在将 kvm 虚拟机从旧主机(硬件和操作系统)迁移到新主机。
对于网络,virt-manager 向我提出了一个新选项:macvtap。这看起来是在 eth0 上设置网桥的一个不错的选择。
所以现在来宾启动就好了,从我的本地网络 DHCP 服务器获取 IP,可以访问互联网。来宾也看到本地网络上的其他机器,我可以ssh它们等。
问题是主人和客人看不到对方。我无法使用来宾 IP 从主机访问来宾,也无法使用主机 IP 从来宾访问主机。没有ping,ssh,http,什么都没有。
这是route -n来自主机的命令:
$ /sbin/route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
Run Code Online (Sandbox Code Playgroud)
(来自客人的相同输出)。
我可能会设置一个新的 tun/tap 接口,专门用于主机和来宾之间的通信,但它看起来有点矫枉过正。有没有办法让主人和客人交流?
我正在尝试使用 PCI-Passthrough 将旧显卡 (Radeon 4770) 连接到虚拟机。我正在使用 Linux-KVM 在 Debian Linux (Wheezy, 3.2.0-4-amd64) 主机上运行我的虚拟机。
澄清一下,我不确定使用 Linux KVM 实现 PCI-Passthrough 的正确“路径”是什么。在这个阶段,我怀疑正确的操作是将CONFIG_DMAR、CONFIG_DMAR_DEFAULT_ON和添加CONFIG_PCI_STUB到内核源代码的“总线选项(PCI 等)”部分并重新编译。
但我不确定这是否是重新编译前必要添加的详尽清单。或者如果需要重新编译内核——也许有更简单的方法?
在我参考的指南中,只有linux-kvm.org明确提到编译是必要的。Linux-KVM 已安装并用作管理程序。
在这一点上,我认为我的问题与我的内核有关。我的主要资源是linux-kvm.org ( http://www.linux-kvm.org/page/How_to_assign_devices_with_VT-d_in_KVM ) 上的指南。但是,我发现其他资源表明(似乎)特定于分发的方法略有不同:
SUSE--"openSUSE: Virtualization with KVM"(由于低相关性和 2 个链接限制,链接被省略)
Fedora 指南一直有效,直到引用setsebool似乎是 RedHat 特定的。SUSE 指南表明 SUSE 不支持显卡分配,但是我也引用它,因为它表明我应该CONFIG_DMAR_DEFAULT_ON在 /boot/config-`uname -r` 中找到一个字符串。该linux-kvm.org网站还引用CONFIG_DMAR_DEFAULT_ON,所以这似乎是一个共同的和必要的组成部分。
注意:我在 Fedora 或 Debian 的指南中没有发现对显卡的限制。引用的 SUSE 文档的日期为 2006-2013。
我 …
我有一个专用的 Linux (Debian 7.5) 根服务器,并设置了许多来宾服务器。来宾是 KVM 实例,并通过桥接工具(NAT、内部 IP、使用主机作为网关)获得网络访问权限。
例如,一个 KVM 是我的 WebServer 来宾,它可以通过主机 IP 以这种方式访问:
iptables -t nat -I PREROUTING -p tcp -d 148.251.Y.Z
--dport 80 -j DNAT --to-destination 192.168.100.X:80
Run Code Online (Sandbox Code Playgroud)
我对其他服务也做同样的事情,让它们保持独立、NATed 和隔离。
但是一个来宾应该是网络监视器,并且应该执行网络流量检查(如 IDS)。通常,在非虚拟设置中,我会使用 VACL 或 SPAN 端口来镜像流量。当然,在这台主机中,我不能这样做(很容易,因为我不想使用复杂的虚拟交换方法)。
vnet1.vnet1作为管理接口(带有 IP)时,来宾是否需要特定的接口设置?我很高兴能指出正确的方向:
iptables 1.4.14-3.1
linux 3.2.55
bridge-utils 1.5-6
Run Code Online (Sandbox Code Playgroud)
非常感谢 :)
我正在尝试使用以下 Vagrantfile 设置一个带有 vagrant 和 libvirt 的框
Vagrant.configure("2") do |config|
config.vm.define :test_vm do |test_vm|
test_vm.vm.box = "test"
test_vm.vm.network :private_network, :ip => '10.20.30.40'
end
config.vm.provider :libvirt do |libvirt|
libvirt.driver = "qemu"
libvirt.host = "localhost"
libvirt.connect_via_ssh = false
libvirt.username = "root"
libvirt.storage_pool_name = "data"
end
end
Run Code Online (Sandbox Code Playgroud)
在 RHEL 6.4 上,我收到以下错误
Error while connecting to libvirt: Error making a connection to libvirt URI qemu://localhost/system?no_verify=1:
Call to virConnectOpen failed: Unable to import client certificate /etc/pki/CA/cacert.pem
Run Code Online (Sandbox Code Playgroud)
我试图像这里描述的那样设置证书http://libvirt.org/remote.html#Remote_TLS_CA但这并没有改变任何东西。
如果我尝试通过 ssh 连接 vagrant 能够缓慢上传盒子,但之后我会遇到下一次失败
Call …Run Code Online (Sandbox Code Playgroud) 我收到了一个服务器的 .img 文件,它是在 KVM 环境中运行的虚拟机。虚拟机与 Ubuntu 一起安装。
我现在想使用这个 .img 文件并在 VirtualBox 中“模拟”服务器。所以我使用 qemu-img 从 raw 到 vdi 将 .img 文件转换为 .vdi 文件,但是 VirtualBox 实例启动并简单说明:
FATAL: No bootable medium found! System halted.
Run Code Online (Sandbox Code Playgroud)
我不知道是否必须在 VirtualBox 中安装 KVM,然后将其配置为在我的 .img 文件中运行 VM,或者我是否能够将图像从 KVM 转换为 VDI,然后直接在 VirtualBox 中运行服务器.
我已经尝试过使用 qemu 将 .img 原始文件转换为 .vdi,但这产生了上述错误。
我还阅读了有关此服务器故障问题的答案,但此问题略有不同,因为它讨论的是将 Windows VM 从 KVM 移至 VirtualBox。
我还尝试使用 qemu-img linux 包从 qcow2 转换为 vdi,但是我不断收到以下错误消息:
#> qemu-img convert -f qcow2 original.img -O vdi converted.vdi
qemu-img: Could not open './duketest.img': Invalid …Run Code Online (Sandbox Code Playgroud) 我调查了这个话题,这是我的结论(但我仍然有问题,如果我的结论有任何错误,请纠正我):
虚拟机:
VMWare 于 1999 年开发了其 VM Hypervisor SW,但它是专有的。
动车组:
在 VMWare 之后 4 年后,法国开发商 Fabrice Bellard 于 2003 年开发了 QEMU(快速仿真器)Hyporvisor 并使其免费和开源。经过多年的社区发展,QEMU 然后成为“完全虚拟化”的 2 类管理程序。
QEMU 无需任何其他 VM SW 即可独立运行。
硬件虚拟化:
英特尔和 AMD 都在 2006 年推出了他们的硬件虚拟化技术(VT-x 和 AMD-V)。
KVM:
2006 年,一家小公司(两年后于 2008 年被 Red Hat 收购)为 Linux 开发了一个名为“KVM”的可加载内核模块,它能够使用前面提到的硬件虚拟化技术创建 VM。然后在 2007 年正式合并到 Linux 内核中。
linux-kvm ×10
linux ×4
qemu ×4
ubuntu ×3
networking ×2
virtualbox ×2
debian ×1
init ×1
iptables ×1
libvirt ×1
mount ×1
vagrant ×1
virt-manager ×1
vt-d ×1