什么是KVM

kvm是一个完整的全虚拟化解决方案. 当前主机操作系统支持linux系统和x86架构. 它包括了一个可加载的内核模块(kvm.ko)和一个用户空间组件. 通过使用kvm虚拟化技术, 你可以运行多个未修改的linux或windows虚拟机. 每一个虚拟机有自己的虚拟硬件: 一个网卡, 磁盘, 图形适配器, 等.

KVM支持全虚拟化和半虚拟化. 你可以通过给当前内核打kvm-paravirt-patches补丁来支持半虚拟化.

kvm architecture

参考资料

KVM包含两大组件

  1. a device driver for managing the virtualization hardware; this driver exposes its capabilities via a character device /dev/kvm
  2. a user-space component for emulating PC hardware; this is a lightly modified QEMU process
QEMU is a well known processor emulator written by French computer wizard Fabrice Bellard.

KVM的优缺点

kvm具有以下优点

  1. 速度 kvm的cpu效率和磁盘效率绝对是最优秀的。
  2. 稳定 目前的感受是最稳定的,不比 vmware 差。
  3. 扩展性 kvm是一个新的项目,以后逐步在图形效率,3d和硬件上面得到linux的支持。

当然也有缺点

  1. 使用不太方便。很多人惧怕命令行的东西,但是会发现命令行是那么的清晰和简单。
  2. 目前有些功能不太完善,比如图形性能,usb等。
  3. cpu需要支持VM技术,否则不能体现 kvm 的优势。但这种基于硬件的技术也正是性能的保证。

Ubuntu+KVM+Kqemu实战

系统背景

Ubuntu 9.04
kvm-84

先了解qemu和kvm的关系

  1. kvm基本是一个独立的系统,只不过借用了qemu的代码和操作界面。也就是说,你在命令行中如果使用 qemu 的地方,只需要题换成 kvm,其他的参数基本都不用修改就可以运行,这样的效率是 qemu 的很多倍。
  2. 如果要用kvm,你的cpu必须支持 vm 技术,否则和 qemu 的效率基本相同。
如果你对KVM指令很困惑的话,可以先安装qemu GUI界面进行配置,然后导出qemu命令行就可以了解KVM的用法

如何判断cpu是否支持 vm 技术

首先使用

egrep '(vmx|svm)' /proc/cpuinfo

如果有输出,说明你的cpu支持VM

注意,大多BIOS缺省是关掉了vm支持的,你需要首先设置你的bios。

CPU支持硬件VM虚拟技术(BIOS里设置),就能够加载kvm-intel or kvm-amd模块

安装软件

sudo apt-get install kqemu-common kqemu-source kvm
如果想使用kqemu内核加速模块,kqemu-source软件包必须安装,它会根据内核版本编译相应模块提供安装。

检查模块

geminis@geminis-ubuntu:~$ lsmod |less
Module                  Size  Used by
 
kqemu                 137892  0 
bridge                 56340  0 
kvm_intel              50624  0 
kvm                   152640  1 kvm_intel

创建虚拟硬盘

kvm-img create -f 参数

-f 参数表示创建文件格式,后边所带的子参数qcow/qcow2 表示KVM默认镜像格式, vmdk表示VMWARE的磁盘格式。
建议大家不要创建qcow格式的磁盘文件.它生成的磁盘文件比较占用空间.该命令是常规命令.可以使用vmdk格式,这两种创建方式在使用的过程中没有很大区别,唯一的区别在于磁盘占用率上。
# sudo kvm-img create -f vmdk arch.img 2G
 
Formatting 'arch.img', fmt=vmdk, size=2097152 kB
 
# chmod 777 arch.img           #允许虚拟机能够读写镜像文件

启动qemulator配置Archlinux

配置intel x86架构和内存 使用Kqemu加速,导出Kqemu指令

KVM 网络配置

参考资料

KVM支持三种网络模式,跟VMware所支持的一样:NAT, Host-Only, Bridge

DHCP+NAT 模式

这是最简单的一种,直接在启动参数中加上-net user即可,主机打开DHCP功能,客户机通过DHCP获取IP,该置下客户机可以上网,但不能跟主机通讯。

kvm  -net nic -net user

KVM NAT 模式 KVM NAT 原理图

Host-Only

使用tap/tun虚拟出一个网卡,需要内核支持tap/tun模块(一般都支持),还需要配置iptables转发,因为tap网卡上的ip不能和主机上ip在同一个网段。客户使用该网卡可以跟主机通讯也可以上网,但局域网内的其他机器不能直接访问客户机,需要主机通过端口转发或者其他方式来访问。

我的简单配置(内核需要支持tap/tun):

(1)修改/etc/sysctrl.conf, 将net.ipv4.ip_forward=1打开,也就是ip转发功能打开,修改完后需要reboot机器。

(2)建立一个脚本/etc/kvm-ifup.sh,内容很简单:

#!/bin/bash
sudo ifconfig $1 172.0.100.1 netmask 255.255.255.0 up

该脚本就是配置tap虚拟网卡设备的ip。$1通常会是tap0,根据你在kvm启动参数中给定的名字而定。

(3)在qemu启动参数中给定相关的虚拟网卡设备名,和相关的设备初始化脚本,也就是上面的这个脚本:

kvm  -hda /virtualOS/winxp.img -m 512 -no-frame -localtime -no-acpi      \
         -net nic,model=virtio -net tap,ifname=tap0,script=/etc/kvm-ifup.sh   \
         -usb -usbdevice tablet

(4)在客户机中,手动的配置ip,网关和DNS,跟tap虚拟网卡的ip同一网段,而网关就是虚拟网卡的ip,比如我的xp配置:

IP: 172.0.100.101
MASK: 255.255.255.0
GATEWAY:172.0.100.1

(5)配置iptables的NAT:

iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

我是放在一个启动脚本里,每次启动kvm会执行一下,也可以在主机系统启动的时候就添加这条规则。

Bridge 模式

这种应该是功能最全的一种,虚拟客户机的ip和主机处在同一个网段,客户机就如局域网中的一台主机一样,既可以和主机通讯也可以上网,同时网路中的其他主机也可以访问客户机而不需要主机转发。

KVN Bridge 原理图

KVM仅支持 tap 或 tun 网卡设备,因此,我们需要安装创建TAP界面的工具

sudo apt-get install bridge-utils
sudo apt-get install uml-utilities
kvm -net nic -net tap,ifname=tap0,script=/etc/kvm/kvm-ifup downscript=/etc/kvm/kvm-ifdown ,hostname=kvm-host

/etc/kvm/kvm-ifup脚本

#!/bin/sh
BRIDGE=br0
OLD_IF=eth0
 
## 获取原来主系统 eth0 的 IP 和网关
IP=`ifconfig $OLD_IF|grep "inet addr"|awk '{print $2}'|sed 's/addr://'`
GATEWAY=`route -n|grep ^0.0.0.0|awk '{print $2}'`
 
## 删除 eth0 的 IP
ip addr del $IP dev $OLD_IF
 
## 激活 tap0 ($1 是qemu传递过来的网卡名称,即tap0)
ip link set $1 up
 
## 停止并删除存在的网桥
ip link set $BRIDGE down &>/dev/null
brctl delbr $BRIDGE &>/dev/null
 
## 添加网桥接口 br0
brctl addbr $BRIDGE
 
## 将 eth0 加入网桥
brctl addif $BRIDGE $OLD_IF
 
## 将 tap0 加入网桥
brctl addif $BRIDGE $1
 
## 启动网桥
ifconfig $BRIDGE $IP up
 
## 添加默认路由
route add default gw $GATEWAY

/etc/kvm/kvm-ifdown脚本

#!/bin/sh
BRIDGE=br0
OLD_IF=eth0
 
IP=`ifconfig $BRIDGE|grep "inet addr"|awk '{print $2}'|sed 's/addr://'`
GATEWAY=`route -n|grep ^0.0.0.0|awk '{print $2}'`
 
## 停止并删除存在的网桥
ip addr del $IP dev $BRIDGE
ip link set $BRIDGE down
brctl delbr $BRIDGE
 
## 恢复原来的网络配置
ifconfig $OLD_IF $IP up
route add default gw $GATEWAY
不过如果在无线网卡上做桥接会遇到一定的问题,很可能就不成功,因为KVM跟无线网卡驱动有一定的关系

参考 http://www.linuxfoundation.org/en/Net:Bridge

KVM 基本操作

KVM 的命令格式

kvm [options] [disk_image]

常用参数的说明

-hda/-hdb file           使用 'file' 作为 IDE 硬盘 0/1 的虚拟磁盘。
-hdc/-hdd file           使用 'file' 作为 IDE 硬盘 2/3 的虚拟磁盘。
-cdrom file                使用 'file' 作为 IDE CD-ROM光盘镜像(文件应该是ISO类型)(不可以跟 -hdc 参数同时使用)。
-cdrom /dev/hdX      使用实体光驱机作为IDE CD-ROM,X为实际上光驱机从系统取得的代号(a,b,c or d)
-boot [a|d|c]              使用软盘a,光盘d,或者硬盘c启动.
-m memorysize         设定虚拟机器使用多少内存(预设为 128MB)。
-soundhw c1,...          开启音效支援,使用 -soundhw ? 列出可用的声卡,若要开启全部,请使用 -soundhw all。
-usb                           允许使用usb设备.
-usbdevice 名字         添加一个usb设备“名字”.
-net nic                      创建一块新的网卡.
-kernel-kqemu         开启 KQEMU 完全加速模式,预设则为 User Mode。
                                (AMD64 用户如果是自行编译 QEMU,必须使用 qemu-system-x86_64 才能带此参数)

预设会有网路(User Mode),并由 DHCP 自动发配 IP。其余参数及详细说明请自行参阅 KVM 的 Manual Page。

KVM 操作范例

#-kernel-kqemu 
 
kvm -hda /var/cache/apt/arch.img   \
        -cdrom /home/geminis/sda10/soft/archlinux-2009.02-core-i686.iso   \
        -M pc -smp 2 -m 256   \
        -net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=/etc/kvm/kvm-ifup,downscript=/etc/kvm/kvm-ifdown,hostname=kvm-winxp \
        -soundhw ac97   \
        -localtime   \
        -clock rtc    \
        -usb            \
        -smb           \
        -usbdevice tablet -vnc 127.0.0.1:0 -redir tcp:3389::3389  \
        -boot d \
        -daemonize 

此行命令表示:

  • hda 设定为 'arch.img'
  • CD-ROM 设定为 'archlinux-2009.02-core-i686.iso'
  • 机器类型为x86标准PC,2个CPU,内存为 256MB
  • 网络为用户预设模式
  • 开启 Sound Card 'ac97'
  • 使用本地时间( 一定要加这个参数,不然虚拟机时间会有问题
  • 使用rtc时钟( 开启此项,有可能会导致window无法启动,酌情关闭
  • 开启USB支持
  • 使用SMB文件共享
  • 打开远程桌面支持,并把虚拟机的远程桌面服务器端口映射到宿主机的端口,等同于windows的远程桌面
  • 从光驱开机
  • 开启 KQEMU 完全加速模式 ( 如果是KVM直接运行,则不需要再加速 )
  • 后台运行(可以使用远程桌面控制,详见下面)

当虚拟机在后台运行时,你有两种方式查看虚拟机的界面

  • 使用远程桌面工具,地址 localhost , 端口 5900。
  • 使用远程终端,地址 localhost 端口 3389
如果你的虚拟机还没有配置远程桌面,请先用第一种方式访问虚拟机界面,然后设定虚拟机(我的是XP)远程桌面方式,然后就可以了。

下一步是整合虚拟机到你的桌面,就和我的贴图一样,使用以下命令

rdesktop localhost:3389 -u danny -p xxxxxx -g 1024x720 -D -r sound:local
-u 后面的是用户名
-p 后面的是密码
-r sound:local 是启用声音
-D 是消除远程终端窗口的边框
-g 设置远程桌面的分辨率为1024x720

KVM 快速键

  • Ctrl+Alt:在 KVM 中释放或使用键盘/鼠标。
  • Ctrl+Alt+f:切换全屏模式。

KVM 快速克隆镜像

#suspend newvm
 
#virt-clone --connect=qemu:///system -o vm1 -n vm2 --file=/home/xxx/vms/vm2.img --force --print-xml -d
 
#resume newvm

KVM 疑难解答

trying to set up timer as Virtual Wire IRQ

如果启动引导镜像位于FAT或NTFS文件系统,可能也会引发这个问题,最好建议镜像位于linux分区中。

方法一

方法二

开机进入BIOS配置,关闭APIC高级选项。不过,这种做法有可能会影响多系统中的其它系统。

could not initialize alarm timer

去除 -clock rtc 或者 检查运行用户是否为 root

VMware (VMDK)、VirtualBox (VDI) 转换成 Qemu COW2 (qcow2) 格式

    #Converting VMDK to Qemu image
    qemu-img convert -f vmdk myimage.vmdk -O qcow2 myimage.qcow2
 
    #Converting VDI to Qemu image
    wget http://dhiru.kholia.googlepages.com/vditool.tar (for AMD64 systems)
    sudo tar xf vditool.tar -C /usr/lib/virtualbox
    LD_LIBRARY_PATH=/usr/lib/virtualbox /usr/lib/virtualbox/vditool COPYDD ~/.VirtualBox/VDI/myimage.vdi myimage.raw
 
    qemu-img convert -f raw myimage.raw -O qcow2 myimage.qcow2

挂载 RAW image file

    qemu-img convert -f qcow2 myimage.qcow2 -O raw myimage.raw
    mount -o loop,offset=32256 myimage.raw /mnt

由VMWare转KVM格式

如何禁用virbr0网卡

virbr0是用来做NAT转换的虚拟网卡,在有些环境下是不需要NAT的。因此,可以关闭virbr0

显示已经激活的网卡

# virsh net-list
 
Name                 State      Autostart
-----------------------------------------
default              active     yes

禁用默认的网卡

# virsh net-destroy default
# virsh net-undefine default
# service libvirtd restart
# ifconfig

CentOS EL/KVM部署实战

服务器硬件配置

硬件名称型号数量单价
CPU XEON 2620+1U 散热器 2 2700
硬盘 ST 300G SAS 15K.7 4 1150
内存 创见 8G DDR3 ECC 1333MHZ 8 440
主机板 INTEL S2600CP4/RKSASR5 1 4380

BIOS/RAID配置

SAS控制器 -> MegaSAS控制器
MegaSAS配置为 Raid 5
Intel Virtualation Technique(如果不支持升级固件)

Intel 主板及raid驱动

搜索关键词“INTEL S2600CP4 raid driver download”

根据INTEL S2600CP4主板型号,先下载相应的raid驱动,通过安装光盘的dd方式加载

CentOS EL6安装细节

CentOS EL6分区规划

分区挂载点文件系统大小
/bootext4200M
swapext42000M
/ext45G
/var/lib/libvirt/imagesxfs100G
剩余空间保留,系统安装后再分割裸分区供虚拟机挂载

CentOS 软件包选择

Desktop Envirnoments -> Gnome Desktop Envirnoment
Virtualization -> KVM (KVM里面的所有包全选)

使用VNC来远程连接安装

#vi /etc/libvirt/qemu.conf
#vnc_listen = "0.0.0.0"
#/etc/rc.d/init.d/libvirtd start
 
virt-install   \
  --connect qemu:///system --virt-type=kvm --accelerate --noapic --noacpi \
  --name ubuntu12 --vcpus=1 --ram 512 --os-type=linux --os-variant=virtio26  \
  --network bridge=br0 --cdrom=/root/ubuntu-12.10-server-amd64.iso --force \
  --graphics type=vnc,listen=192.168.0.123,port=5901  \
  --disk path=/var/lib/libvirt/images/ubuntu12.img,bus=virtio,size=10,io=native,format=qcow2,cache=writethrough

修改Grub使用KVM

安装之后需要修改/boot/grub/menu.lst文件,因为默认为:

Red Hat Enterprise Linux Server (2.6.18-164.el5xen)

将开机默认加载改为:

Red Hat Enterprise Linux Server-base (2.6.18-164.el5)

创建桥接设备

/etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0
BOOTPROTO=static
TYPE=Bridge
IPADDR=192.168.1.238
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
ONBOOT=yes
DELAY=0

/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
BRIDGE=br0
MTU=9000

配置后台服务

  • 关闭不必要的服务
  • 关闭防火墙
  • 关闭SElinux
  • 开启 vncserver(因为服务器运行在终端模式下,远程创建虚拟机)
libvirtd 负责KVM进程,必须启动
  • 开启 dnsmasq进程会禁用KVM中的NAT模式
  • 关闭 messagebus进程会禁止haldaemon启动
  • 关闭 haldaemon进程会禁用KVM中的Bridge模式

VIRTIO测试

with virtio_blk ( Good! )

[root@V1-Geminis-DEV test1]# rm -rf 1G;time dd < /dev/zero > 1G bs=1024 count=1000000
1000000+0 records in
1000000+0 records out
 
real    0m17.366s
user    0m0.154s
sys     0m3.062s

without virtio_blk

[root@V1-Geminis-DEV test]# rm -rf 1G;time dd < /dev/zero > 1G bs=1024 count=1000000
1000000+0 records in
1000000+0 records out
 
real    0m28.559s
user    0m0.194s
sys     0m2.974s

with virtio_net ( Good! )

client
[root@Geminis-DEV ~]# iperf -c 192.168.1.244 -p 12345 -w 65535 -t 10
------------------------------------------------------------
Client connecting to 192.168.1.244, TCP port 12345
TCP window size:   128 KByte (WARNING: requested 64.0 KByte)
------------------------------------------------------------
[  3] local 192.168.1.137 port 54216 connected with 192.168.1.244 port 12345
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec    112 MBytes  93.6 Mbits/sec
server
[root@V1-Geminis-DEV ~]# iperf -s -w 65536 -p 12345
------------------------------------------------------------
Server listening on TCP port 12345
TCP window size:   128 KByte (WARNING: requested 64.0 KByte)
------------------------------------------------------------
[  4] local 192.168.1.244 port 12345 connected with 192.168.1.137 port 54216
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec    112 MBytes  93.6 Mbits/sec

without virtio_net

client
-bash-3.00# iperf -c 192.168.10.244 -p12345 -w65535 -t 10
------------------------------------------------------------
Client connecting to 192.168.10.244, TCP port 12345
TCP window size:   128 KByte (WARNING: requested 64.0 KByte)
------------------------------------------------------------
[  3] local 192.168.10.1 port 9953 connected with 192.168.10.244 port 12345
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec    110 MBytes  91.9 Mbits/sec
server
[root@V1-Geminis-DEV test1]# iperf -s -w 65536 -p 12345
------------------------------------------------------------
Server listening on TCP port 12345
TCP window size:   128 KByte (WARNING: requested 64.0 KByte)
------------------------------------------------------------
[  4] local 192.168.10.244 port 12345 connected with 192.168.10.1 port 9953
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec    110 MBytes  91.8 Mbits/sec

网络传输中非常稳定,速率也很理想,有图为证

客户端使用ftp工具下载软件,速率非常稳定且理想

KVM性能优化

启用KSM/UKSM特性

参考资料

Enable KSM - Kernel SamePage Merging

echo "1" > /sys/kernel/mm/ksm/run
Determining whether to use KSM, or turn it off

If the purpose is to run as many VMs as possible, and performance is not an issue, KSM should be kept running. Which means maximum hardware usage efficiency. But, if a server is running with a relatively small amount of VMs and performance is an issue, KSM should be turned off.

CPU性能调优

一个原则,虚拟机CPU默认使用与宿主机相同的CPU类型(qemu -cpu host),但是你也可以虚拟CPU只支持几种特性,如(qemu -cpu qemu64,+ssse3,+sse4.1,+sse4.2,+x2apic)

cat /proc/cpuinfo | grep flags | uniq

网络性能调优

KVM默认使用网络配置只考虑了兼容性,所以性能绝对不是最佳的。

  1. 强烈推荐利用宿主机的桥接设备
  2. 使用KVM virtio网络模型来匹配网络
qemu -net nic,model=virtio,mac=… -net tap,ifname=…

调度算法的优化

  1. 宿主机使用elevator=deadline
  2. 虚拟机使用elevator=noop
for f in /sys/block/sd*/queue/scheduler; 
do echo "deadline" > $f;
done

磁盘IO调优

  1. KVM提供cache=wirtethrough要比cache=writeback(aio=native)安全,但性能稍差
  2. 裸设备(RAW)性能要高于qcow2等文件类型
  3. 如果是RAW,关闭cache=none(aio=threads),减少数据拷贝和总线流量,)
  4. 不要使用默认的IDE模型,建议使用virtio模型
qemu -drive file=/dev/mapper/Guest1,cache=none,if=virtio
目前不支持BTRFS,会导致严重的IO堵塞!

文件系统的优化

  1. EXT4/XFS 性能好于 EXT3
  2. 无论宿主机,虚拟机,设置 noatime,nodiratime

要使用 mkfs.xfs 将您的新 XFS 文件系统配置成最佳性能,有两个选项。

第一个这样的选项是 -l size=32m ,它告诉 mkfs.xfs 配置您的文件系统使之拥有一个高达 32 MB 的元数据日志。这通过降低在文件系统处于繁忙使用期间元数据日志将“填满”的可能性而改善了性能。

第二个选项通过告诉 mkfs.xfs 将创建的分配组的数目最小化文件系统的性能。

通常,mkfs.xfs 自动选择分配组的数目,但是,根据我的经验,它通常会选择一个比大多数用于一般用途的 Linux 工作站和服务器过高一点的数目。分配组让 XFS 并行执行多个元数据操作。这为高端服务器带来了便利,但是太多的分配组确实会增加一些开销。因此,不要让 mkfs.xfs 为您的文件系统选择分配组的数目,而是通过使用 -d agcount=x 选项指定一个数目。将 x 设置成一个小数目,如 4、6 或 8。您需要使得您的目标块设备中每 4 GB 容量至少有一个分配组。同时进行这两项调整,使用下面的命令创建“优化的”XFS 文件系统:

# mkfs.xfs -d agcount=4 -l size=32m /dev/sdb

既然已经创建了文件系统,您就可以挂装它了。挂装时,您将使用一些性能增强 mount 选项来最大程度地发掘出(或发挥出)您的新文件系统的性能。

# mount /dev/sdb /mnt -o noatime,nodiratime,osyncisdsync

前面的两个 mount 选项关闭 atime 更新,几乎不需要 atime 更新,并且它除了降低文件系统性能之外几乎不起任何作用。 osyncisdsync 选项调整 XFS 的同步/异步行为,以便它同 ext3 更一致。多亏了我们的 mkfs.xfs 和 mount 调整,您的新 XFS 文件系统比没这么调整时的性能要好得多。

Best practice: Optimize block I/O performance by using the Deadline I/O scheduler

虚拟机SWAP内存优化

参考资料

grep Huge /proc/meminfo
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Intel VT和 AMD-V 是一套与支持该技术的虚拟机监视器相结合的硬件增强特性(指令集扩展)。
kvm可在原始硬件速度下通过运行完全隔离的虚拟机来执行任务。
APIC: Advanced Programmable Interrupt Controller高级程序中断控制器.

APIC 是装置的扩充组合用来驱动 Interrupt 控制器。在目前的建置中,系统的每一个部份都是经由 APIC Bus 连接的。

“本机 APIC” 为系统的一部份,负责传递 Interrupt 至指定的处理器;举例来说,当一台机器上有三个处理器则它必须相对的要有三个本机 APIC。自 1994 年的 Pentium P54c 开始Intel 己经将本机 APIC 建置在它们的处理器中。实际建置了 Intel 处理器的电脑就己经包含了 APIC 系统的部份。

系统中另一个重要的部份为 I/O APIC。系统中最多可拥有 8 个 I/O APIC。它们会收集来自 I/O 装置的 Interrupt 讯号且在当那些装置需要 interrupt 时传送讯息至本机 APIC。每个 I/O APIC 有一个专有的 interrupt 输入 (或 IRQ) 号码。Intel 过去与目前的 I/O APIC 通常有 24 个输入 – 其它的可能有多逹 64 个。而且有些机器拥有数个 I/O APIC,每一个分别有自己的输入号码,加起来一台机器上会有上百个 IRQ 可供装置 Interrupt 使用。

问题跟踪

Cannot find display

[root@SA-KVM ~]#
login as: root
root@192.168.0.253's password:
Last login: Wed May 11 20:12:48 2011
/usr/bin/xauth:  creating new authority file /root/.Xauthority
yum groupinstall “X Window System”
export DISPLAY=0.0

如果管理界面出现了方块码

yum install -y libfonts.x86_64 xorg-x11-fonts-Type1.noarch

sudo virt-manager 报错的快速解决方法

virt-manager 报以下错误

X11 connection rejected because of wrong authentication.
Traceback (most recent call last):
File "/usr/share/virt-manager/virt-manager.py", line 383, in <module>
main()
File "/usr/share/virt-manager/virt-manager.py", line 286, in main
raise gtk_error
RuntimeError: could not open display

使用 mkxauth 命令将ssh登陆的用户的 Xauthority 信息加入到 root 用户的/root/.Xauthority 文件中

$ssh -X bitbi@mybitbihost
$sudo mkxauth -m bitbi
merging /home/bitbi/.Xauthority into /root/.Xauthority ...
done
$sudo virt-manager

下面运行 sudo virt-manager 命令就正常了。

或者更换display端口, /etc/profile

export DISPLAY=localhost:10.0

HARDWARE ERROR! Processor Context Corrupt

wiki/public/linux/virtualization/kvm内核级虚拟化技术.txt · 最后更改: 2025/11/04 14:04