centos kvm qemu 虚拟机 安装 配置 详解

张映 发表于 2014-06-20

分类目录: 云计算

标签:, , , , , , ,

一,什么是KVM

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

  1. # yum -y install kvm python-virtinst libvirt bridge-utils \  
  2. virt-manager qemu-kvm-tools virt-viewer virt-v2v qemu-kvm tunctl  
  3.   
  4. [root@localhost ~]#vim /etc/sysconfig/selinux //关闭selinux  
  5.   
  6. SELINUX=disabled  
  7.   
  8. [root@localhost ~]#reboot  
  9.   
  10. [root@localhost ~]# cat /etc/redhat-release  
  11. CentOS release 6.5 (Final)    //centos 6.5  

三,启动libvirtd

  1. [root@localhost ~]# /etc/init.d/libvirtd start  //启动  
  2.   
  3. [root@localhost ~]# ps -e|grep libvirtd   //查看是否启动  
  4. 19458 ?        00:00:01 libvirtd  

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

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

五,配置网络桥接

  1. [root@localhost network-scripts]# cat ifcfg-eth0 |awk '{if($0 !~ /^$/ && $0 !~ /^#/) {print $0}}'  
  2. DEVICE=eth0  
  3. TYPE=Ethernet  
  4. ONBOOT=yes  
  5. BOOTPROTO=none  
  6. BRIDGE=br0  
  7. IPV6INIT=no  
  8. HWADDR=F8:BC:12:60:99:86  
  9.   
  10. [root@localhost network-scripts]# cat ifcfg-br0 |awk '{if($0 !~ /^$/ && $0 !~ /^#/) {print $0}}'  
  11. DEVICE=br0  
  12. TYPE=Bridge  
  13. ONBOOT=yes  
  14. BOOTPROTO=static  
  15. IPADDR=192.168.10.103  
  16. GATEWAY=192.168.10.1  
  17. NETMASK=255.255.255.0  
  18. DNS1=192.168.10.1  
  19. IPV6INIT=no  
  20. DELAY=0  

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

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

解决办法:

  1. [root@localhost rules.d]# service NetworkManager stop  //这个关闭掉就行  
  2. 停止 NetworkManager 守护进程:                             [确定]  
  3.   
  4. [root@localhost rules.d]# service network restart  
  5. 正在关闭接口 br0:                                         [确定]  
  6. 正在关闭接口 eth0:                                        [确定]  
  7. 关闭环回接口:                                             [确定]  
  8. 弹出环回接口:                                             [确定]  
  9. 弹出界面 eth0:                                            [确定]  
  10. 弹出界面 br0: Determining if ip address 192.168.10.103 is already in use for device br0...  
  11.                                                            [确定]  

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

  1. [root@localhost network-scripts]# ifconfig  
  2. br0       Link encap:Ethernet  HWaddr F8:BC:12:60:99:86  //有这个就OK  
  3.           inet addr:192.168.10.103  Bcast:192.168.10.255  Mask:255.255.255.0  
  4.           inet6 addr: fe80::fabc:12ff:fe60:9986/64 Scope:Link  
  5.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1  
  6.           RX packets:36416 errors:0 dropped:0 overruns:0 frame:0  
  7.           TX packets:28648 errors:0 dropped:0 overruns:0 carrier:0  
  8.           collisions:0 txqueuelen:0  
  9.           RX bytes:13151508 (12.5 MiB)  TX bytes:5962449 (5.6 MiB)  
  10.   
  11. eth0      Link encap:Ethernet  HWaddr F8:BC:12:60:99:86  
  12.           inet6 addr: fe80::fabc:12ff:fe60:9986/64 Scope:Link  
  13.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1  
  14.           RX packets:1360857 errors:0 dropped:0 overruns:0 frame:0  
  15.           TX packets:902173 errors:0 dropped:0 overruns:0 carrier:0  
  16.           collisions:0 txqueuelen:1000  
  17.           RX bytes:1913592871 (1.7 GiB)  TX bytes:72387220 (69.0 MiB)  
  18.   
  19. lo        Link encap:Local Loopback  
  20.           inet addr:127.0.0.1  Mask:255.0.0.0  
  21.           inet6 addr: ::1/128 Scope:Host  
  22.           UP LOOPBACK RUNNING  MTU:16436  Metric:1  
  23.           RX packets:176842 errors:0 dropped:0 overruns:0 frame:0  
  24.           TX packets:176842 errors:0 dropped:0 overruns:0 carrier:0  
  25.           collisions:0 txqueuelen:0  
  26.           RX bytes:880282316 (839.5 MiB)  TX bytes:880282316 (839.5 MiB)  
  27.   
  28. virbr0    Link encap:Ethernet  HWaddr 52:54:00:1A:B6:F1  
  29.           inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0  
  30.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1  
  31.           RX packets:0 errors:0 dropped:0 overruns:0 frame:0  
  32.           TX packets:37 errors:0 dropped:0 overruns:0 carrier:0  
  33.           collisions:0 txqueuelen:0  
  34.           RX bytes:0 (0.0 b)  TX bytes:4651 (4.5 KiB)  
  35.   
  36. [root@localhost network-scripts]#  brctl show  
  37. bridge name    bridge id        STP enabled    interfaces  
  38. br0           8000.f8bc12609986    no        eth0     //有这个就OK  
  39. virbr0        8000.5254001ab6f1    yes        virbr0-nic  

六,用virt-install生成.img文件

  1. # virt-install --name=ubuntu1 \  
  2. --ram 1024 --vcpus=1 \  
  3. --disk path=/root/ubuntu1.img,size=10 \  
  4.  --accelerate --cdrom /root/ubuntu-14.04-desktop-amd64.iso \  
  5. --graphics vnc,port=5920 --network bridge=br0  

如果报以下错误:

  1. could not open disk image  : Permission denied  

解决方法:

  1. [root@localhost ~]# cat /etc/libvirt/qemu.conf |awk '{if($0 !~ /^$/ && $0 !~ /^#/) {print $0}}'  
  2. vnc_listen = "0.0.0.0"  
  3. user = "root"               //去掉注释  
  4. group = "root"              //去掉注释  
  5. dynamic_ownership = 0       //去掉注释,把1改为0  

这一步做完,系统文件就好了。

七,启动虚拟机

如果报以下错误

  1. [root@localhost ~]# virsh start ubuntu1  
  2. 错误:域已经活跃  

解决办法:

  1. [root@localhost ~]# pkill qemu-kvm  
  2.   
  3. [root@localhost ~]# virsh start ubuntu1  
  4. 域 ubuntu1 已开始  
  5.   
  6. [root@localhost ~]# virt-viewer ubuntu1   //进入图形界面  

看一下成果

centos kvm 安装配置成功

centos kvm 安装配置成功



转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/cloud/1627.html

2 条评论

  1. Qing_L 留言

    为什么进行网络桥接配置后主机就不能上网了

  2. Qing_L 留言

    为什么进行网络桥接配置后,主机无法上网