设为首页 收藏本站
查看: 1582|回复: 0

[经验分享] 关于kvm轻度使用的一些总结

[复制链接]

尚未签到

发表于 2015-10-10 10:31:23 | 显示全部楼层 |阅读模式
关于kvm轻度使用的一些总结


  •   关于kvm和qemu和virt-tools、libvirt
  •   如何安装虚拟机和简单使用
  •   trouble-shooting


1. 关于kvm、qemu、virt-tools、libvirt

什么是 KVM ?
  kVM 是指基于 Linux 内核的虚拟机(Kernel-based Virtual Machine)。 2006 年 10 月,由以色列的Qumranet 组织开发的一种新的“虚拟机”实现方案。 2007 年 2 月发布的 Linux 2.6.20 内核第一次包含了 KVM 。增加 KVM 到 Linux 内核是 Linux 发展的一个重要里程碑,这也是第一个整合到 Linux 主线内核的虚拟化技术。
  KVM 在标准的 Linux 内核中增加了虚拟技术,从而我们可以通过优化的内核来使用虚拟技术。在 KVM 模型中,每一个虚拟机都是一个由 Linux 调度程序管理的标准进程,你可以在用户空间启动客户机操作系统。一个普通的 Linux 进程有两种运行模式:内核和用户。 KVM 增加了第三种模式:客户模式(有自己的内核和用户模式)。

什么是libvirt?
  Libvirt是库,是一种实现 Linux 虚拟化功能的 Linux? API,它支持各种虚拟机监控程序,包括 Xen 和 KVM,以及 QEMU 和用于其他操作系统的一些虚拟产品。
  他提供一个命令和一个稳定的层来管理node上的域,甚至乎远程管理。

libvirt提供所有API来做管理,例如提供,创建,修改,监控,控制,迁移,和停止域。
  他的构成是这样的:


  • a node is a single physical machine
  • an hypervisor is a layer of software allowing to virtualize a node in a set of virtual machines with possibly different configurations than the node itself
  • a domain is an instance of an operating system (or subsystem in the case of container virtualization) running on a virtualized machine provided by the hypervisor
DSC0000.png
  libvirt把物理机叫节点node,将虚拟客户机比作域domain,还有一个hypervisor的软件负责虚拟化的(负责通讯和处理api请求等)
  其实他的架构师这样的:
DSC0001.gif
  从另外一个层面来看是这样的
DSC0002.png
  引用参考:


  • http://www.ibm.com/developerworks/cn/linux/l-libvirt/
  • http://en.wikipedia.org/wiki/Libvirt
  • http://libvirt.org/goals.html

什么是qemu
  表格一解释了qemu就是面向各种架构的平台仿真器.
  QEMU是一套由Fabrice Bellard所编写的模拟处理器的自由软件。它与Bochs,PearPC近似,但其具有某些后两者所不具备的特性,如高速度及跨平台的特性。经由kqemu这个开源的加速器,QEMU能模拟至接近真实电脑的速度。
  进一步理解的话,kvm只能虚拟x86平台的虚拟机,而qemu就可以虚拟arm,mips平台的虚拟机,这就是他们最大的区别。
  引用参考:


  • http://wiki.qemu.org/Main_Page
  • http://zh.wikipedia.org/wiki/QEMU

什么是virt-tools
  virt-tools是管理libvirt的工具,例如virt-install virsh等工具
  引用参考:


  • http://libvirt.org/virshcmdref.html

  表格一是列出各种不同的虚拟机程序的区别:

虚拟机监控程序
描述

Xen
面向 IA-32,IA-64 和 PowerPC 970 架构的虚拟机监控程序
QEMU
面向各种架构的平台仿真器
Kernel-based Virtual Machine (KVM)
Linux 平台仿真器
Linux Containers(LXC)
用于操作系统虚拟化的 Linux(轻量级)容器
OpenVZ
基于 Linux 内核的操作系统级虚拟化
VirtualBox
x86 虚拟化虚拟机监控程序
User Mode Linux
面向各种架构的 Linux 平台仿真器
Test
面向伪虚拟机监控程序的测试驱动器
Storage
存储池驱动器(本地磁盘,网络磁盘,iSCSI 卷)

2. 如何安装虚拟机和简单使用

CentOS6.5 x64上安装KVM功能模块步骤
  操作都以root用户进行。


  •   检查CPU信息
      KVM 需要有 CPU 的支持(Intel VT 或 AMD SVM),在安装 KVM 之前检查一下 CPU 是否提供了虚拟技术的支持。

    基于 Intel 处理器的系统,运行 grep vmx /proc/cpuinfo 查找 CPU flags 是否包括 vmx 关键词。

     grep vmx /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce
cx8 apic sep  mtrr pge mca cmov pat
pse36 clflush dts acpi mmx
fxsr sse sse2 ss ht tm pbe syscall nx lm
constant_tsc arch_perfmon pebs bts
rep_good pni monitor ds_cpl
vmx est tm2 ssse3 cx16 xtpr lahf_lm ida
flags : fpu vme de pse tsc msr pae mce
cx8 apic sep mtrr pge mca cmov pat
pse36 clflush dts acpi mmx fxsr sse sse2
ss ht tm pbe syscall nx lm constant_tsc
arch_perfmon pebs bts rep_good pni
monitor  ds_cpl vmx est tm2 ssse3 cx16  xtpr lahf_lm ida

基于 AMD 处理器的系统,运行 grep svm /proc/cpuinfo 查找 CPU flags 是否包括 svm 关键词。

     grep svm /proc/cpuinfo

  注 : 一些厂商禁止了机器 BIOS 中的 VT 选项 , 这种方式下 VT 不能被重新打开。

注意:/proc/cpuinfo 仅从 Linux 2.6.15(Intel) 和 Linux 2.6.16(AMD) 开始显示虚拟化方面的信息。请使用 uname -r 命令查询您的内核版本。如有疑问,请联系硬件厂商。


  •   检查BIOS,确保BIOS里开启VT选项:
      Intel(R) Virtualization Tech [Enabled]

    如有必要,还需在BIOS中开启VT并重启机器。
  •   关掉networkmanager,因为这个会导致虚拟网卡配置冲突

    service NetworkManager stop
chkconfig --del NetworkManager


  • 关掉selinux

    修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
setenforce 0  


  • 安装软件

    其中一种安装都可以

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

    yum install kvm virt-* libvirt

    yum groupinstall Virtualization 'Virtualization Client'
yum install libvirt

安装完成后需要重启服务器

    service libvirtd start
chkconfig --level 3 libvirtd on

检查是否可以使用kvm模块

    lsmod | grep kvm
kvm_intel              54285  9
kvm                   333172  1 kvm_intel


  •   配置网卡
      进入网卡配置目录

    cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-br0

将eth0的网卡配置和br0的网卡配置修改为如下内容:

    [iyunv@test02 network-scripts]# cat ifcfg-eth0
DEVICE=eth0
HWADDR=BC:EE:7B:9A:5E:91
TYPE=Ethernet
UUID=a257d75d-072c-4eac-8daa-b131324fff52
ONBOOT=yes
NM_CONTROLLED=yes
#BOOTPROTO=static
#IPADDR=192.168.0.12
#NETMASK=255.255.255.0
#GATEWAY=192.168.0.1
DNS1=8.8.8.8
BRIDGE=br0
[iyunv@test02 network-scripts]# cat ifcfg-br0
DEVICE=br0
HWADDR=BC:EE:7B:9A:5E:91
UUID=a257d75d-072c-4eac-8daa-b131324fff52
ONBOOT=yes
TYPE=Bridge
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.0.12
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=8.8.8.8

配置完成后 执行
service network restart 即可看到效果

  评论:

1. DNS服务器配置随意
2. br0是虚拟网卡,`libvirt`是安装这个软件后出来的
3. 实体网卡去掉相关ip属性,如`BOOTPROTO` `IPADDR` `NETMASK` `GATEWAY`,虚拟网卡将这些属性补充到自己的网卡配置文件里面去,但其他配置一律不变动,相当于br0变成实体网卡了,但只是相当于而已。
4. 虚拟网卡需要将TYPE改为Bridge,证明是使用桥接模式。

安装虚拟机


  •   创建虚拟机磁盘镜像文件
      创建磁盘文件不能太小,不然会coredump。
      qcow2格式是kvm支持的标准格式,raw格式为虚拟磁盘文件通用格式。有测试数据表明raw格式的I/O性能略高于qcow2格式,但是在加密,容量,快照方面qcow2格式有优势

    qemu-img create -f qcow2 test.qcow2 20G  //建立qcow2格式磁盘文件
qemu-img create -f raw test.raw 20G      //建立raw格式磁盘文件
qemu-img info test.qcow2                 //查看已经创建的虚拟磁盘文件


  • 创建并安装虚拟机

    以下是ubuntu为例,ubuntu 14

    cat vir_ubuntu.sh
#!/bin/bash
virt-install --name ubuntu \
--boot network,cdrom,menu=on \
--ram 512 --vcpus=1 \
--os-variant=generic \
--cdrom=/app/ftp_data/team/public/system_iso/ubuntu-14.04-desktop-i386.iso \
--disk path=/app/kvm/images/centos.qcow2,size=10,format=qcow2,bus=virtio \
--bridge=br0,model=virtio --keymap=en-us \
--vnc --vncport=5910 --vnclisten=0.0.0.0

以下是centos 6.5为例

    cat vir_centos.sh
#!/bin/bash
virt-install --name centos6.5x64 \
--boot network,cdrom,menu=on \
--ram 512 --vcpus=1 \
--os-variant=generic \
--cdrom=/app/ftp_data/team/public/system_iso/CentOS-6.5-x86_64-bin-DVD1.iso \
--disk path=/app/ftp_data/team/public/system_iso/another_CentOS-6.5-x86_64-bin-DVD1.iso,device=cdrom \
--disk path=/app/kvm/images/centos.qcow2,size=10,format=qcow2,bus=virtio \
--bridge=br0,model=virtio --keymap=en-us \
--vnc --vncport=5911 --vnclisten=0.0.0.0

评论:
1.  os-variant是指支持什么虚拟机,以下是支持的类型,按需选择即可

         win7                 : Microsoft Windows 7
vista                : Microsoft Windows Vista
winxp64              : Microsoft Windows XP (x86_64)
winxp                : Microsoft Windows XP
win2k8               : Microsoft Windows Server 2008
win2k3               : Microsoft Windows Server 2003
freebsd8             : FreeBSD 8.x
generic              : Generic
debiansqueeze        : Debian Squeeze
debianlenny          : Debian Lenny
fedora16             : Fedora 16
fedora15             : Fedora 15
fedora14             : Fedora 14
mes5.1               : Mandriva Enterprise Server 5.1 and later
mandriva2010         : Mandriva Linux 2010 and later
rhel6                : Red Hat Enterprise Linux 6
rhel5.4              : Red Hat Enterprise Linux 5.4 or later
rhel4                : Red Hat Enterprise Linux 4
sles11               : Suse Linux Enterprise Server 11
sles10               : Suse Linux Enterprise Server
ubuntuoneiric        : Ubuntu 11.10 (Oneiric Ocelot)
ubuntunatty          : Ubuntu 11.04 (Natty Narwhal)
ubuntumaverick       : Ubuntu 10.10 (Maverick Meerkat)
ubuntulucid          : Ubuntu 10.04 (Lucid Lynx)
ubuntuhardy          : Ubuntu 8.04 LTS (Hardy Heron)

2. disk属性就是指虚拟机使用哪一个磁盘镜像文件作为存储地方,指定刚才创建的镜像文件位置即可,size=10,format=qcow2,bus=virtio分别是指大小,格式(跟镜像格式一致),磁盘总线类型(指Value can be ’ide’, ’scsi’, ’usb’, ’virtio’ or ’xen’,virtio是专门为kvm制定的bus,比较常用),大小需要比镜像文件大小要小,相当于镜像是容器,这个disk是里面的水,水太多就溢出了。
3. bridge=br0,model=virtio --keymap=en-us分别指网卡使用,网卡模式即驱动模式,和键盘制式,桥接模式都使用br0,而虚拟机需要使用virtio这个驱动才能使用虚拟网卡,这个虚拟网卡驱动在linux下支持很好,在windows下支持一般,键盘制式如果不指定的话会出现键位错乱的情况,一般我们使用英式
4. 安装centos6.5的时候我使用了2次disk,原因是因为centos6.5的安装盘启动引导安装有问题,会出现无法查找到安装源的情况,所以特地加载多一个iso,一个作为启动使用,一个作为安装源使用,作为安装源使用的时候是使用磁盘格式存储
5. vnc相关配置,这个vnc如果配置了的话是virt-tools组件自带的,无需要额外安装vnc服务端,默认绑定127.0.0.1,这里将其改为 0.0.0.0 以便可以通过外部连接,每一台的虚拟机的端口都不能一致,一致就会冲突而造成无法启动安装。
6. 如果无须使用图形界面安装,virt-install默认是支持文本模式安装的。


3. trouble-shooting


  • 默认情况下virsh工具不能对linux虚拟机进行关机操作,linux操作系统需要开启与启动acpid服务。在安装KVM linux虚拟机必须配置此服务。

# chkconfig acpid on   
# service acpid restart


  • 关于安装windows虚拟机问题
  xp是可以安装成功的,但win2008r2安装失败,我提了http://stackoverflow.com/questions/25662436/can-not-install-windows-2008-r2-in-kvm 和 http://segmentfault.com/q/1010000000659199 但依然没有高手能帮忙到,不过在安装winxp的过程中我总结了一下经验:


  • kvm其实对windows系列支持并不是太好,虽然补充了兼容windows的磁盘驱动和网卡驱动,但给我的感觉并不大气,不过我也想了一下,其实也没有必要使用kvm去虚拟windows,也有vmware这种大鳄可以做,而且服务器一般是linux,所以其实用的不多。
  • windowsxp的安装样例我也给出来,可以做实验之用。

cat vir_xp2.sh
virt-install \
--name=xp2 \
--ram 256 \
--vcpus=1 \
--disk path=/app/kvm/images/xp2.img,size=10 \
--cdrom=/app/ftp_data/team/public/system_iso/zh-hans_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74070.iso \
--vnc --vncport=5913 --vnclisten=0.0.0.0 \
--network bridge=br0,model=virtio \
--noautoconsole \
--os-variant=winxp \
--keymap=en-us  

  需要注意的是安装磁盘驱动是在安装程序出现寻找磁盘时选择加载驱动

DSC0003.jpg

网卡驱动安装参考:
  http://lvii.github.io/system/2013/11/15/xp-sp3-kvm-network-virtio-install-failed
  官方磁盘和网卡驱动下载:
  http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/


  • 关于磁盘在线扩容和热插拔

    磁盘在线扩容和热插拔磁盘的时候会报错

error: this function is not supported by the hypervisor: disk bus 'ide' cannot be hotplugged.
error: Requested operation is not valid: cannot attach device on inactive domain
error: Failed to attach device from /gfs1/disk2tovm2.xml
error: this function is not supported by the hypervisor: disk bus 'ide' cannot be hotplugged

  原因是ide驱动的磁盘不支持热插拔,需要使用 SCSI
  大神解释:

http://stackoverflow.com/questions/6082474/problem-with-virsh-commands

  原文出处:http://www.godblessyuan.com/2014/09/16/about_kvm_use_thinking/

版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-124997-1-1.html 上篇帖子: KVM启动 下篇帖子: how to use kvm
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表