CentOS 下 KVM QEMU 虚拟机 安装 配置 详解

KVM包括很多部件:首先,它是一个Linux内核模块(现在包括在主线中)用于转换处理器到一种新的用户 (guset) 模式。用户模式有自己的ring状态集合,但是特权ring0的指令会陷入到管理器(hypervisor)的代码。由于这是一个新的处理器执行模型,代码不需要任何的改动。

除了处理器状态转换,这个内核模块同样处理很小一部分低层次的模拟,比如MMU注册(用于管理VM)和一部分PCI模拟的硬件。

在可预见的未来,Qemu团队专注于硬件模拟和可移植性,同时KVM团队专注于内核模块(如果某些部分确实有性能提升的话,KVM会将一小部分模拟代码移进来)和与剩下的用户空间代码的交互。

kvm-qemu可执行程序像普通Qemu一样:分配RAM,加载代码,不同于重新编译或者调用calling KQemu,它创建了一个线程(这个很重要);这个线程调用KVM内核模块去切换到用户模式,并且去执行VM代码。当遇到一个特权指令,它从新切换会KVM内核模块,该内核模块在需要的时候,像Qemu线程发信号去处理大部分的硬件仿真。

这个体系结构一个比较巧妙的一个地方就是客户代码被模拟在一个posix线程,这允许你使用通常Linux工具管理。如果你需要一个有2或者4核的虚拟机,kvm-qemu创建2或者4个线程,每个线程调用KVM内核模块并开始执行。并发性(若果你有足够多的真实核)或者调度(如果你不管)是被通用的Linux调度器,这个使得KVM代码量十分的小

当一起工作的时候,KVM管理CPU和MEM的访问,QEMU仿真硬件资源(硬盘,声卡,USB,等等)当QEMU单独运行时,QEMU同时模拟CPU和硬件。

二,安装配置KVM

# yum -y install kvm Python-virtinst libvirt bridge-utils \
virt-manager qemu-kvm-tools virt-viewer virt-v2v qemu-kvm tunctl

[root@localhost ~]#vim /etc/sysconfig/selinux //关闭selinux

SELINUX=disabled

[root@localhost ~]#reboot

[root@localhost ~]# cat /etc/RedHat-release
CentOS release 6.5 (Final)    //centos 6.5

三,启动libvirtd

[root@localhost ~]# /etc/init.d/libvirtd start  //启动

[root@localhost ~]# ps -e|grep libvirtd  //查看是否启动
19458 ?        00:00:01 libvirtd

四,查看kvm模块是否正确加载

[root@localhost ~]# lsmod |grep kvm 
kvm_intel              54285  0 
kvm                  333172  1 kvm_intel 

五,配置网络桥接

[root@localhost network-scripts]# cat ifcfg-eth0 |awk '{if($0 !~ /^$/ && $0 !~ /^#/) {print $0}}'
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
BRIDGE=br0
IPV6INIT=no
HWADDR=F8:BC:12:60:99:86

[root@localhost network-scripts]# cat ifcfg-br0 |awk '{if($0 !~ /^$/ && $0 !~ /^#/) {print $0}}'
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.10.103
GATEWAY=192.168.10.1
NETMASK=255.255.255.0
DNS1=192.168.10.1
IPV6INIT=no
DELAY=0

重启网络,发现报以下错误:

[root@localhost network-scripts]# /etc/init.d/network start
弹出环回接口:                                            [确定]
弹出界面 eth0: 错误:激活连接失败:Master connection not found or invalid
                                                          [失败]
弹出界面 br0: 错误:激活连接失败:Failed to determine connection's virtual interface name
                                                          [失败]
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists

解决办法:

[root@localhost rules.d]# service NetworkManager stop  //这个关闭掉就行
停止 NetworkManager 守护进程:                            [确定]

[root@localhost rules.d]# service network restart
正在关闭接口 br0:                                        [确定]
正在关闭接口 eth0:                                        [确定]
关闭环回接口:                                            [确定]
弹出环回接口:                                            [确定]
弹出界面 eth0:                                            [确定]
弹出界面 br0: Determining if ip address 192.168.10.103 is already in use for device br0...
                                                          [确定]

如果以下内容就说明配置成功了:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/16039.html