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

[经验分享] 部署KVM虚拟化平台

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-31 08:48:59 | 显示全部楼层 |阅读模式
简介

    KVM是Kernel  Virtual  Machine的简写,目前Red  Hat只支持在64位的RHEL5.4及以上的系统运行KVM,同时硬件需要支持VT技术。KVM的前身是QEMU,2008年被Red  Hat公司收购并获得一项hypervisor技术,不过Red  Hat的KVM被认为是将成为未来Linux  hypervisor的主流,准确来说,KVM仅仅是Linux内核的一个模块。管理和创建完整的KVM虚拟机,需要更多的辅助工具。


案例:搭建KVM虚拟化平台


一、案例分析

1、案例概述

    公司部分Linux服务器利用率不高,为充分利用这些Linux服务器,可以部署KVM,在物理机上运行多个业务系统。例如,在运行Nginx的服务器上部署KVM,然后在虚拟机上运行Tomcat


2、案例前置知识点

    KVM自Linux  2.6.20版本后就直接整合到Linux内核,它依托CPU和虚拟化指令集(如Inter-VT、AMD-V)实现高性能的虚拟化支持。由于与Linux内核高度整合,因此在性能、安全性、兼容性、稳定性上都有很好的表现

wKiom1Xhy8LyeATvAACjlsp-kfM077.jpg
    图上简单描述了KVM虚拟化架构,在KVM环境中运行的每个虚拟化操作系统都将表现为单个独立的系统进程。因此它可以很方便地与Linux系统中的安全模块进行整合(SElinux),可以灵活地实现资源的管理及分配


3、案例环境

    采用Centos  6.6  x86_64,开启CPU虚拟化支持

二、案例实施

1、安装方式

(1)最简单的安装方法就是在安装系统的时候,选择桌面安装,然后选择虚拟化选项

wKioL1Xihm-SoFfWAAFoB2Kg64Y116.jpg
                                                                                                        安装桌面


wKiom1Xhzg7BfqN4AAF9_Gl59KA921.jpg
                                                                                                安装虚拟化平台


(2)在已有系统基础上,安装KVM所需软件

    yum  -y  groupinstall  "Desktop"                        //安装GNOME桌面环境
    yum  -y  install  qemu-kvm.x86_64                  //KVM模块
    yum  -y  install  qemu-kvm-tools.x86_64       //KVM调试工具,可不安装

    yum  -y  install  python-virtinst.noarch            //python组件,记录创建VM时的xml文件

    yum  -y  install  qemu-img.x86_64                    //qemu组件,创建磁盘、启动虚拟机等

    yum  -y  install  bridge-utils.x86_64                  //网络支持工具

    yum  -y  install  libvirt                                              //虚拟机管理工具

    yum  -y  install  virt-manager                              //图形界面管理虚拟机

    yum  -y  install  libguestfs*                                     //virt-cat等命令的支持软件包

(3)验证。重启系统后,查看CPU是否支持虚拟化,对于Inter服务器可以 通过一下命令查看,只要有输出就说明CPU支持虚拟化;AMD服务器可用cat  /proc/cpuinfo  |  grep  smv命令查看

[iyunv@localhost ~]# cat  /proc/cpuinfo  |  grep  vmx
flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc up arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid

    检查KVM模块是否安装:


[iyunv@localhost ~]# lsmod  |  grep  kvm
kvm_intel              55496  0
kvm                   337772  1 kvm_intel

2、设置KVM网络

    宿主服务器安装完成KVM,首先要设定网络,在libvirt中运行KVM网络有两种方法:NAT和Bridge,默认是NAT


    关于两种模式的说明:


(1)用户模式,即NAT方式,这种方式是默认网络,数据包由NAT方式通过主机的接口进行传送,可以访问外网,但是无法从外部访问虚拟机网络

(2)桥接模式,这种模式允许虚拟机像一台独立的主机一样拥有网络,外部的机器可以直接访问到虚拟机内部,但需要网卡支持,一般有线网卡都支持

    这里以Bridge(桥接)为例


[iyunv@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:4C:0C:24
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
BRIDGE="br0"

[iyunv@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=dhcp

    重启network服务

[iyunv@localhost ~]# service network restart
正在关闭接口 br0:                                    [确定]
正在关闭接口 eth0:                                  [确定]
关闭环回接口:                                             [确定]
弹出环回接口:                                             [确定]
弹出界面 eth0:                                            [确定]
弹出界面 br0:
正在决定 br0 的 IP 信息...完成。            [确定]

    确认IP地址信息                                                           

[iyunv@localhost ~]# ifconfig
br0       Link encap:Ethernet  HWaddr 00:0C:29:4C:0C:24  
          inet addr:192.168.0.106  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe4c:c24/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:70 errors:0 dropped:0 overruns:0 frame:0
          TX packets:25 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:69660 (68.0 KiB)  TX bytes:3066 (2.9 KiB)

eth0      Link encap:Ethernet  HWaddr 00:0C:29:4C:0C:24  
          inet6 addr: fe80::20c:29ff:fe4c:c24/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:28413 errors:0 dropped:0 overruns:0 frame:0
          TX packets:20243 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:37239885 (35.5 MiB)  TX bytes:1683986 (1.6 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:140 errors:0 dropped:0 overruns:0 frame:0
          TX packets:140 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:12096 (11.8 KiB)  TX bytes:12096 (11.8 KiB)

virbr0    Link encap:Ethernet  HWaddr 52:54:00:0B:01:73  
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

    出现以上信息,说明网卡桥接成功了


3、KVM管理

[iyunv@localhost ~]# virt-manager

    virt-manager是基于libvirt的图像化虚拟机管理软件。请注意,不同的发行版上virt-manager的版本可能不同,图形界面和操作方法可能不同。本文使用了Centos  6企业版。创建KVM虚拟机最简单的方法是通过virt-manager接口。从控制台窗口启动这个工具,以root身份输入virt-manager命令

wKiom1Xh596DJXEWAADBrQpeyp4440.jpg
                                                                                                  虚拟机管理界面


    虚拟机管理步骤如下

(1)创建存储池,双击localhost(QEMU),选择“存储选项卡”,然后单击“+”按钮新建存储池。单击“前进”按钮,根据提示输入或浏览以设置存储目录,如/data_kvm/store,最后单击“完成”按钮即可

wKiom1Xh6WeRSCYwAADi-8wtENU391.jpg
                                                                                                     创建存储池

(2)以同样的操作创建一个镜像存储池,命名为linux_iso,目录为/data_kvm/iso即可。在安装操作系统时,我们把镜像上传到服务器目录/data_kvm/iso

wKiom1Xh6s2RylcKAAGbMRe4T2M659.jpg
                                                                                                创建镜像存储池


(3)创建存储卷,单击刚创建好的“linux”,单击对话框右下角的“新建卷”按钮建立一个存储卷,并设置最大容量与分配容量

wKioL1Xh7gvycdaUAAE4LwvEJAU932.jpg
                                                                                                   创建存储卷


(4)单击“完成”按钮后,回到虚拟系统管理器。右击“localhost(QEMU)”,然后选择“新建”选项,在弹出的对话框中将虚拟机名称命令为“Centos-6.6”,然后单击“前进”按钮

wKioL1Xh70fABxHWAAERNiZMB5E697.jpg
                                                                                                    新建虚拟机(1)

    单击“浏览”按钮选择镜像文件,再选择操作系统类型及版本


wKioL1Xh8p3TKQmsAAFXJmtiYz8814.jpg
                                                                                                   新建虚拟机(2)

    单击“前进”按钮,在对话框中适当分配内存和CPU资源,如1核CPU、512MB内存

wKiom1Xh8SiQY_SEAAC1pxA2QYk514.jpg
                                                                                                      新建虚拟机(3)

    单击“前进”按钮,在对话框中勾选“立即分配整个磁盘”复选框,点选“管理的或者其他现有存储”单选按钮,单击“浏览”按钮选择文件,然后单击“前进”按钮


wKiom1Xh8drxon3pAAEUDD1wFAY436.jpg
                                                                                                       新建虚拟机(4)


    在所示的对话框中勾选“在安装前自定义配置”复选框,单击“完成”按钮,弹出对话框


wKioL1Xh9OLiLxXLAADzZjGzVdE641.jpg
                                                                                                         新建虚拟机(5)

wKiom1Xh8xSgvhPxAAI_vpgQTKg550.jpg
                                                                                                       新建虚拟机(6)

    在“Overview”视图中,定位到“机器设置”,把机器设置-时钟偏移-改为“localtime”,单击“应用”按钮即可。定位到“Boot  Options”,勾选“主机引导时启动虚拟机”复选框,这样在物理宿主机启动后,这个VM也会启动,最后单击“应用”按钮。如果要远程管理,需要在“显示VNC”中,将Keymap设置为“Copy  Local  Keymap”


wKiom1Xh9V3SAt7YAAHwRlpbvxs352.jpg
                                                                                                            新建虚拟机(7)

    最后单击“Begin  Installation”按钮即可,整个虚拟机配置过程完成。下面就是安装操作系统的工作,和平时安装Linux系统一样

wKiom1XilNHBRViFAAPPlNuGALQ898.jpg
                                                                                                       Centos安装界面

案例:使用KVM命令集管理虚拟机

一、案例分析

    案例环境使用一台物理机器,一台服务器安装Centos  6.6的64位系统(即Stranded), Centos-6.6是在宿主机Stranded中安装的虚拟机


主机
操作系统
IP地址
主要软件
Stranded
Centos-6.6  x86_64
192.168.1.100
Xshell
Centos-6.6
Centos-6.6  x86_64
192.168.1.103
Xmanager

二、案例实施

1、安装Linux虚拟机

    安装过程同上一案例,使用Xshell远程控制Stranded主机


2、KVM基本功能管理

(1)查看命令帮助

[iyunv@localhost ~]# virsh  -h
......           //省略输出内容

(2)查看KVM的配置文件存放目录(Centos-6.6.xml是虚拟机系统实例的配置文件)

[iyunv@localhost ~]# ls  /etc/libvirt/qemu
autostart   Centos-6.6.xml   networks

(3)查看虚拟机状态

[iyunv@localhost ~]# virsh  list  --all
Id    名称                                状态
----------------------------------------------------
2     Centos-6.6                  running

(4)虚拟机关机与开机

    首先要确认acpid服务安装并运行


[iyunv@localhost ~]# virsh  shutdown  Centos-6.6
[iyunv@localhost ~]# virsh  start  Centos-6.6

(5)强制实例系统关闭电源

[iyunv@localhost ~]# virsh  destroy  Centos-6.6

(6)通过配置文件启动虚拟机系统实例

[iyunv@localhost ~]# virsh  create  /etc/libvirt/qemu/Centos-6.6.xml
[iyunv@localhost ~]# virsh  list  --all
Id    名称                                 状态
----------------------------------------------------
3     Centos-6.6                   running

(7)挂起虚拟机

[iyunv@localhost ~]# virsh  suspend  Centos-6.6

    查看虚拟机状态


[iyunv@localhost ~]# virsh  list  --all
Id    名称                                状态
----------------------------------------------------
3     Centos-6.6                   暂停

(8)恢复虚拟机

[iyunv@localhost ~]# virsh  resume  Centos-6.6

[iyunv@localhost ~]# virsh  list  --all
Id    名称                                状态
----------------------------------------------------
3     Centos-6.6                  running

(9)配置虚拟机实例伴随宿主机自动启动

[iyunv@localhost ~]# virsh  autostart  Centos-6.6

    上述命令将创建/etc/libvirt/qemu/autostart/目录,目录内容为开机自动启动的系统

(10)导出虚拟机配置

[iyunv@localhost ~]# virsh  dumpxml  Centos-6.6 >/etc/libvirt/qemu/Centos-02-6.6.xml

(11)虚拟机的删除与添加

    删除虚拟机

[iyunv@localhost ~]# virsh  shutdown Centos-6.6
[iyunv@localhost ~]# virsh  undefine Centos-6.6

    查看删除结果,Centos-6.6的配置文件被删除,但磁盘文件不会被删除


[iyunv@localhost ~]# ls  /etc/libvirt/qemu
autostart  Centos-02-6.6.xml  networks

    通过virsh  list  -all查看不到Centos-6.6的信息,说明此虚拟机被删除


[iyunv@localhost ~]# virsh  list --all
Id    名称                         状态
----------------------------------------------------

    通过备份的配置文件重新定义虚拟机


[iyunv@localhost ~]# cd  /etc/libvirt/qemu
[iyunv@localhost qemu]# mv  Centos-02-6.6.xml  Centos-6.6.xml

    重新定义虚拟机

[iyunv@localhost qemu]# virsh  define Centos-6.6.xml

    查看虚拟机信息

[iyunv@localhost qemu]# virsh   list  --all
Id    名称                              状态
----------------------------------------------------
-     Centos-6.6                   关闭

(12)修改虚拟机配置信息(用来修改系统内存大小、磁盘文件等信息)

    直接通过vim命令修改

[iyunv@localhost ~]# vim  /etc/libvirt/qemu/Centos-6.6.xml

    通过virsh命令修改

[iyunv@localhost ~]# virsh  edit  Centos-6.6

3、KVM文件管理

通过文件管理可以直接查看、修改、复制虚拟机的内部文件。例如,当系统因为配置问题无法启动时,可以直接修改虚拟机的文件。虚拟机磁盘文件有raw与qcow2格式,KVM虚拟机默认使用raw格式,raw格式性能最好,速度最快,其缺点是不支持一些新的功能,如镜像、Zlib磁盘压缩、AES加密等,针对两种格式的文件有不同的工具可供选择。这里介绍本地YUM安装libguestfs-tools后产生的命令行工具(这个工具可以直接读取qcow2格式的磁盘文件,因此需要将raw格式的磁盘文件转换成qcow2的格式)

(1)转换raw格式磁盘至qcow2格式

    查看当前磁盘格式


[iyunv@localhost ~]# qemu-img  info  /data_kvm/store/linux_kvm.img
image: /data_kvm/store/linux_kvm.img
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 10G

    关闭虚拟机


[iyunv@localhost ~]# virsh  shutdown  Centos-6.6

    转换磁盘文件格式


[iyunv@localhost ~]# qemu-img  convert  -f  raw  -O  qcow2  /data_kvm/store/linux_kvm.img  /data_kvm/store/linux_kvm.qcow2

(2)修改Centos-6.6的xml配置文件

[iyunv@localhost ~]# virsh  edit  Centos-6.6
......            //省略部分内容
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='none'/>
      <source file='/data_kvm/store/linux_kvm.qcow2'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </disk>
......            //省略部分内容

(3)virt-cat命令,类似于cat命令

[iyunv@localhost ~]# virt-cat  -a  /data_kvm/store/linux_kvm.qcow2  /etc/sysconfig/network
NETWORINT=yes
HOSTNAME=localhost.localdomain

(4)virt-edit命令,用于编辑文件,用法与vim基本一致

[iyunv@localhost ~]# virt-edit  -a  /data_kvm/store/linux_kvm.qcow2  /etc/resolv.conf
nameserver  8.8.8.8

(5)virt-df命令用于查看虚拟机磁盘信息

[iyunv@localhost  ~]# virt-df  -h  Centos-6.6
Filesystem                                                     Size        Used       Available   Use%
Centos-6.6:/dev/sda1                              476M       32M         419M         7%
Centos-6.6:/dev/sdb1                              4.3G        4.3G            0             100%
Centos-6.6:/dev/VolGroup/lv_root     8.3G        620M       7.2G            8%

4、虚拟机克隆

(1)查看虚拟机状态

[iyunv@localhost  ~]# virsh   list  --all
Id    名称                              状态
----------------------------------------------------
-     Centos-6.6                   关闭

(2)从Centos-6.6克隆Centos-02-6.6


[iyunv@localhost  ~]# virt-clone  -o  Centos-6.6  -n  Centos-02-6.6  -f  /data_kvm/store/Centos-02-6.6.qcow2

(3)查看虚拟机状态

[iyunv@localhost  ~]# virsh   list  --all
Id    名称                                 状态
----------------------------------------------------
-     Centos-02-6.6              关闭
-     Centos-6.6                     关闭

(4)启动虚拟机

[iyunv@localhost  ~]# virsh  start  Centos-02-6.6

5、虚拟机快照

    KVM虚拟机要使用快照功能,磁盘格式必须是qcow2,之前已经将Centos-6.6的磁盘格式转换成了qcow2


    下面介绍KVM虚拟机快照备份的过程


(1)对Centos-6.6创建快照

[iyunv@localhost  ~]# virsh  snapshot-create  Centos-6.6
Domain snapshot 1440950172 created

(2)查看虚拟机快照版本信息

[iyunv@localhost ~]# virsh   snapshot-current  Centos-6.6
<domainsnapshot>
  <name>1440950172</name>                    //快照版本号
  <state>shutoff</state>
......            //省略部分内容

(3)查看快照信息

[iyunv@localhost ~]# virsh  snapshot-list  Centos-6.6
名称                       Creation Time                       状态
------------------------------------------------------------
1440950172      2015-08-30 23:56:12  +0800 shutoff

(4)创建新快照

[iyunv@localhost ~]# virsh  snapshot-create  Centos-6.6
Domain snapshot 1440950433 created

(5)查看快照信息

[iyunv@localhost ~]# virsh  snapshot-list  Centos-6.6
名称               Creation Time                                  状态
------------------------------------------------------------
1440950172        2015-08-30 23:56:12  +0800 shutoff
1440950433        2015-08-31 00:00:33  +0800 shutoff

(6)回复虚拟机状态至1440950172

[iyunv@localhost ~]# virsh  snapshot-revert   Centos-6.6  1440950172

(7)查看虚拟机快照版本信息

[iyunv@localhost ~]# virsh   snapshot-current  Centos-6.6
<domainsnapshot>
  <name>1440950172</name>                    //快照版本号
  <state>shutoff</state>
......            //省略部分输出

(8)删除快照

[iyunv@localhost ~]# virsh  snapshot-delete  Centos-6.6  1440950172
Domain snapshot 1440950172 deleted


运维网声明 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-106578-1-1.html 上篇帖子: KVM虚拟机命令行管理和LV M的高级使用 下篇帖子: 请教各位大神:原有业务虚拟化部署,需要考虑那些可靠性方面的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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