我使用带有 KVM 的“tap”网络设备让我的虚拟机连接到 Internet。但是我必须是root,或者使用'sudo',这很不方便。我想我可以将我的用户帐户放入某个组,这样我就可以在没有 root 权限的情况下访问网络设备。我试过netdev组,但不起作用。我的帐户已经在kvm组中。
我还应该做什么?或者有什么方法可以让我在没有权限问题的情况下自由使用 KVM?
我有时会遇到带有 Tap 接口的机器(例如,当 KVM 运行时)。我如何知道哪个进程附加到 TAP 接口?
我有一个带有 4 个 KVM linux 来宾的 linux 主机。所有来宾都非常空闲,来宾内部的负载<0.1。
现在,如果我top
在主机上做一个,每个 KVM 进程使用大约 30% 的 CPU。
这是正常行为吗?我希望主机只需要更少的 CPU 来承载一个空闲的来宾。
如果正常,是什么原因造成的?
如果不正常,可能是什么问题?
我正在使用virt-install
(见下文)来创建一个访客。一切似乎都很好,直到它抱怨 SPICE TLS 端口的自动分配。
这是我正在运行的内容和完整的输出:
# sudo virt-install --name vmname --ram 1024 --os-type=linux --os-variant=ubuntutrusty --disk path=/data/vm/vmname_sda.qcow2,bus=virtio,size=10,sparse=false --noautoconsole --console pty,target_type=virtio --accelerate --hvm --network=network:default --graphics spice,port=20001,listen=127.0.0.1
Starting install...
Retrieving file MANIFEST... | 2.1 kB 00:00 ...
Retrieving file MANIFEST... | 2.1 kB 00:00 ...
Retrieving file linux... | 11 MB 00:00 ...
Retrieving file initrd.gz... | 41 MB 00:00 ...
ERROR unsupported configuration: Auto allocation of spice TLS port requested but spice TLS is disabled in qemu.conf
Domain installation does …
Run Code Online (Sandbox Code Playgroud) KVM 的 qcow2 映像文件格式可以使用 AES 加密。加密应用于集群级别:
每个簇内的每个扇区都使用 AES 密码块链接模式独立加密,使用小端格式的扇区偏移量(相对于设备的开头)作为 128 位初始化向量的前 64 位。
所述簇的大小可以设置从512个字节至2M(64K似乎是默认值)。
使用 qcow2 加密的主要问题之一是 CPU 的性能损失 - 每个磁盘写入或非缓存读取都需要加密或取消加密。
我想知道的是 QEMU/KVM 是否使用Intel AES 指令来减轻主机 CPU 具有的性能损失?如果是这样,使用情况或性能是否在很大程度上取决于集群大小?
英特尔® AES 指令是一组新指令,从基于 32 纳米英特尔® 微架构代号 Westmere 的全新 2010 英特尔® 酷睿™ 处理器家族开始。这些指令使用 FIPS 出版物编号 197 定义的高级加密标准 (AES) 实现快速、安全的数据加密和解密。 由于 AES 目前是主要的分组密码,并且用于各种协议,因此新指令很有价值用于广泛的应用。
我已经创建了一个 Windows XP 映像,并且正在使用 qemu 启动它。当通过 使用“用户模式网络”时-net user
,我的来宾操作系统(windows xp)获得分配的 10.0.2.15 IP,我可以 ping 10.0.2.2,以便正确安装 Windows 驱动程序。
不幸的是,我无法访问其他任何内容。我阅读了教程,发现“用户模式网络”不会将连接转发到互联网,我必须使用 TAP 设备或桥接设备。
我不熟悉这些设备,教程非常混乱和复杂。
其中一个教程建议我使用 qemu-bridge-helper。我将 /etc/qemu/bridge.conf 配置为允许 br0 桥接设备并通过brctl addbr br0
.
我按照教程并以这种方式启动了我的 winxp:
qemu-system-x86_64 --enable-kvm -m 2048 \
-drive file=winxp.img,if=virtio \
-net nic,model=virtio \
-net bridge,br=br0
Run Code Online (Sandbox Code Playgroud)
图像启动良好,但我没有获得 IP 地址。原因是 Windows 被配置为使用 DHCP,但“br0”没有提供 DHCP 地址,因为它只是一个桥接接口(不知何故与 tap0 绑定,但我不确定这意味着什么)。
我的问题是 - 如何配置“br0”以通过 DHCP 为 winxp 提供地址?我必须在 tap0 接口上运行 dhcp 服务器吗?br0、tap0 和 eth0 有什么关系?(eth0 是我的静态 IP 接口,唯一的 Internet 接口。)
我的第二个问题是 - 是否有更简单的方法来配置所有这些以允许对来宾操作系统进行简单的互联网访问?
是否有一种简单的方法可以在 KVM 来宾系统上运行 X11 应用程序,就像它在主机系统上的显示方式一样?
我知道我可以使用 X11 转发 ssh 到访客,但我想知道是否有本地 KVM/libvirt 方法或更简单的方法。
在我的 CentOS 7.2 中,我安装了以下软件包:
yum install -y epel-release qemu-kvm libvirt virt-install bridge-utils
Run Code Online (Sandbox Code Playgroud)
然后当我显示ip a
:
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether e8:9a:8f:50:4a:dc brd ff:ff:ff:ff:ff:ff
inet 13.19.241.25/29 brd 13.19.241.31 scope global em1
valid_lft forever …
Run Code Online (Sandbox Code Playgroud) 作为简单的 KVM 服务器,我必须将raw和qcow2图像存储在特殊路径上,例如:
/kvm-storage
Run Code Online (Sandbox Code Playgroud)
我想知道设置此路径以实现更好性能的文件系统和挂载选项的最佳实践是什么。
ext4
/xfs
还是?例如我使用ext4
并设置largefile4
和noatime
我还将磁盘总线设置为virtio,将缓存总线设置为none,将io 模式设置为native。
/kvm-storage-0/image.raw
and/kvm-storage-1/image.raw
并在 vm 中对其进行突袭?我知道 kvm-qemu 支持 Linux 上的 Intel (VT-x) 嵌套虚拟化,因为我有这个工作。不过,我在以 os x 为主机的 mac 上无法使用此功能。
我的配备双核 Intel i5 的 Macbook Air 支持 VT-x 虚拟化。我知道这一点是因为该命令显示“VMX”:
$ sysctl -a | grep machdep.cpu.features
我使用以下命令启动 qemu(qemu-system-x86_64,版本 4.2.0):
$ qemu-system-x86_64 -m 2048 -vga virtio -usb -device usb-tablet -show-cursor -enable-kvm -drive file=~/vms-qemu/lmde.qcow2 -accel hvf -cpu 主机,vmx
这给了我一个警告:“主机不支持请求的功能:CPUID.01H:ECX.vmx [位5]”。
在虚拟机中,运行 Linux Mint Debian Edition 的来宾虚拟化不可用,正如预期的那样给出警告。这是通过 libvirt-clients 包中的 virt-host-validate 命令显示的。另外,命令 lscpu 不显示:
虚拟化:VT-x
虚拟机管理程序供应商:KVM
虚拟化类型:全虚拟化
为什么 Qemu 警告主机不支持 VMX?我问是因为主机/确实/支持此功能。Apple 多年来一直默认启用此功能 ( https://support.apple.com/en-us/HT203296 )。
我成功地在 Linux 主机上启用了嵌套虚拟化,并在 qemu (2.8.1) …
kvm ×10
networking ×4
qemu ×3
cpu ×2
libvirt ×2
bridge ×1
dhcp ×1
encryption ×1
macos ×1
performance ×1
permissions ×1
process ×1
qcow2 ×1
spice ×1
storage ×1
tap ×1
ubuntu ×1
x11 ×1