部署KVM虚拟化平台

案例:搭建KVM虚拟化平台

需求概述

公司现有部分Linux服务器利用率不高,为充分利用这些Linux服务器,可以部署KVM,在物理机上运行多个业务系统

案例前置知识点

什么是虚拟化

虚拟化就是把硬件资源从屋里方式转变为逻辑方式,打破原有物理结构,使用户可以灵活管理这些资源,并且允许1台物理机上同时运行多个操作系统,以实现资源利用率最大化和灵活管理的一项技术

虚拟化特征

虚拟化主要有四大特征

  • 分区:对物理机分区,可实现在单一物理机上同时运行多个虚拟机
  • 隔离:同一物理机上多个虚拟机相互隔离
  • 封装:整个虚拟机执行环境封装在独立文件中
  • 当对于硬件独立:虚拟机无须修改,可运行在任何物理机上

虚拟化的优势

  • 减少服务器数量,降低硬件采购成本
  • 资源利用率最大化
  • 降低机房空间、散热、用电消耗的成本
  • 硬件资源可动态调整,提高企业IT业务灵活性
  • 高可用性
  • 在不中断服务的情况下进行物理硬件调整
  • 降低管理成本
  • 具备更高效的灾备能力

虚拟化架构的分类

根据在整个系统中的位置不同,虚拟化架构分为以下几种:

  • 宿主型虚拟化
    部署KVM虚拟化平台_第1张图片
    指在宿主操作系统之上安装和运行虚拟化程序,依赖于宿主操作系统对设备的支持和物理资源的管理。如:KVM
  • 裸金属型虚拟化
    部署KVM虚拟化平台_第2张图片
    裸金属虚拟化架构指直接在硬件上面安装虚拟化软件,再在其上安装操作系统和应用,依赖虚拟层内核和服务器控制台进行管理。如Xen、ESXi
  • 操作系统虚拟化
    部署KVM虚拟化平台_第3张图片
    操作系统虚拟化架构在操作系统层面增加虚拟服务器功能。操作系统虚拟化架构把单个的操作系统划分为多个容器,使用容器管理器来进行管理。宿主操作系统负责在多个虚拟服务器(即容器)之间分配硬件资源,并且让这些服务器彼此独立。如:Docker
  • 混合虚拟化架构
    部署KVM虚拟化平台_第4张图片
    混合虚拟化架构将一个内核级驱动器插入到宿主操作系统内核。这个驱动器作为虚拟硬件管理器来协调虚拟机和宿主操作系统之间的硬件访问。
    根据虚拟化对象来区分,计算机虚拟化又分为:CPU虚拟化、内存虚拟化和I/O虚拟化
    CPU虚拟化又分为全虚拟化和半虚拟化

内存虚拟化:物理内存映射给虚拟机,
I/O虚拟化:模拟虚拟化,半虚拟化,I/O透传

主流计算虚拟化技术

开源的:KVM、Xen 闭源的:Hyper-V 、VMware ESXi 、Huawei FusionSphere
KVM是全虚拟化的,Xen有全虚拟化和半虚拟化
KVM的核心是KVM module(Linux Kernel):主要功能是初始化。

KVM虚拟化架构

KVM模块直接整合在Linux内核中
部署KVM虚拟化平台_第5张图片
1.KVM组成

  • KVM Driver
    虚拟机创建
    虚拟机内存分配
    虚拟CPU寄存器读写
    虚拟CPU运行
  • QEMU(经过简化与修改)
    模拟PC硬件的用户控件组件
    提供I/O设备模型及访问外设的途径

2.KVM虚拟化三种模式
客户模式
用户模式
内核模式
部署KVM虚拟化平台_第6张图片
3. KVM工作原理
部署KVM虚拟化平台_第7张图片

案例环境

环境:
使用一台物理机器,安装Centos7.5_x64 系统(bdqn)作为宿主机,在bdqn安装KVM并安装虚拟机test01

主机 操作系统 IP地址
bdqn Centos7.5 192.168.137.70
test01 Centos7.5 192.168.137.72

案例需求:
安装KVM
安装Linux虚拟机
使用KVM命令集管理虚拟机

案例实施

  1. 安装KVM
    在这里插入图片描述
安装KVM所需软件
yum -y groupinstall Desktop  安装桌面
yum -y install qemu-kvm	 KVM模块		
yum -y install qemu-kvm-tools  KVM调试工具
yum -y install virt-install		
yum -y install qemu-img   qemu组件,创建磁盘、启动虚拟机等
yum -y install bridge-utils  网络支持工具
yum -y install libvirt      虚拟机管理工具
yum -y install virt-manager  图形界面管理虚拟机

查看CPU是否支持虚拟化(如果是AMD的服务器使用cat /proc/cpuinfo | grep svm命令查看)只要结果非空,代表已支持虚拟化
[root@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 mmx fxsr 
sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc 
eagerfpu pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave 
avx f16c rdrand hypervisor lahf_lm ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust 
smep arat spec_ctrl intel_stibp flush_l1d arch_capabilities

检查KVM模块是否安装
[root@localhost ~]# lsmod | grep kvm
kvm_intel             183621  0 
kvm                   586948  1 kvm_intel
irqbypass              13503  1 kvm

  1. 设置KVM网络
    KVM网络包括:用户模式(NAT)与桥接模式
    本案例中使用桥接模式
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-br0 
vim ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="b2a0537e-c7d3-4998-8f49-bc467742274b"
DEVICE="ens33"
ONBOOT="yes"
BRIDGE="br0"
#IPADDR="192.168.137.70"
#PREFIX="24"
#GATEWAY="192.168.137.2"
#DNS1="114.114.114.114"
#IPV6_PRIVACY="no"

vim ifcfg-br0
TYPE="Bridge"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="br0"
UUID="b2a0537e-c7d3-4998-8f49-bc467742274b"
DEVICE="br0"
ONBOOT="yes"
IPADDR="192.168.137.70"
PREFIX="24"
NETMASK="255.255.255.0"
GATEWAY="192.168.137.2"
DNS1="114.114.114.114"

systemctl restart network
ip a
6: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:0c:29:56:9f:32 brd ff:ff:ff:ff:ff:ff
    inet 192.168.137.70/24 brd 192.168.137.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe56:9f32/64 scope link 
       valid_lft forever preferred_lft forever

  1. KVM图形化管理
    部署KVM虚拟化平台_第8张图片
    virt-manager是基于libvirt的图形化虚拟机管理软件
[root@localhost ~]# virt-manager
  • 新建存储池
    创建存储池store和镜像存储池iso
    部署KVM虚拟化平台_第9张图片
    部署KVM虚拟化平台_第10张图片
    部署KVM虚拟化平台_第11张图片
    部署KVM虚拟化平台_第12张图片
    部署KVM虚拟化平台_第13张图片
    部署KVM虚拟化平台_第14张图片
  • 新建存储卷
    单击创建好的存储池store,创建存储卷
    部署KVM虚拟化平台_第15张图片
    部署KVM虚拟化平台_第16张图片
  • 准备镜像文件到镜像存储池iso下
    部署KVM虚拟化平台_第17张图片
    部署KVM虚拟化平台_第18张图片
  1. 开始新建虚拟机配置
    部署KVM虚拟化平台_第19张图片
    部署KVM虚拟化平台_第20张图片
    部署KVM虚拟化平台_第21张图片
    部署KVM虚拟化平台_第22张图片
  • 安装虚拟机
    部署KVM虚拟化平台_第23张图片
    在这里插入图片描述

使用KVM命令集管理虚拟机

KVM基本功能管理

[root@localhost ~]# whatis qemu-img
qemu-img (1)         - QEMU disk image utility
查看虚拟机信息
[root@localhost ~]# qemu-img info /var/lib/libvirt/images/store/test01.qcow2 
image: /var/lib/libvirt/images/store/test01.qcow2
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 1.4G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: true
查看虚拟机状态
[root@localhost ~]# virsh list --all
 Id    名称              状态
----------------------------------------------------
 4     centos7.0          running
虚拟机关机或开机
[root@localhost ~]# virsh shutdown centos7.0 
域 centos7.0 被关闭
[root@localhost ~]# virsh start test02
域 test02 已开始
虚拟机暂停(挂起)与恢复
[root@localhost ~]# virsh suspend centos7.0
域 centos7.0 被挂起
[root@localhost ~]# virsh resume centos7.0 
域 centos7.0 被重新恢复
配置虚拟机伴随宿主机自动启动
[root@localhost ~]# virsh autostart centos7.0 
域 centos7.0标记为自动开始
虚拟机克隆(语法:virt-clone -o 原虚拟机 -n 新虚拟机 -f 新img文件)
[root@localhost ~]# virt-clone -o centos7.0 -n test02 -f /var/lib/libvirt/images/store/test02.qcow2 				//*确保在关机状态下进行克隆
WARNING  当卷已经被全部分配后,需要的卷容量将超过可用池空间。(20480 M 需要的容量 > 7477 M 可用容量)
正在分配 'test02.qcow2'              |  20 GB  00:00:53     
成功克隆 'test02'。
制作快照
 [root@localhost ~]# virsh list –all 
 Id    名称                         状态
----------------------------------------------------
 5     test02                         running
 -     centos7.0                      关闭
[root@localhost ~]# virsh snapshot-create centos7.0
已生成域快照 1572105184
快照管理
[root@localhost ~]# virsh snapshot-list centos7.0			//查看快照
 名称               生成时间              状态
------------------------------------------------------------
 1572105184           2019-10-26 23:53:04 +0800 shutoff
[root@localhost ~]# virsh snapshot-revert centos7.0 1572105184			//恢复快照
[root@localhost ~]# virsh snapshot-delete centos7.0 1572105184			//删除快照
已删除域快照 1572105184
[root@localhost ~]# virsh snapshot-list centos7.0
 名称               生成时间              状态

查看虚拟机帮助
[root@localhost ~]# virsh -h

命令行安装虚拟机

[root@localhost iso]# virt-install  --name demo --ram 500 --disk path=/kvm/images/demo.img,size=8   --cdrom /kvm/images/iso/CentOS-7-x86_64-DVD-1810.iso --graphics vnc

参数说明
-n        | --name         #指定创建虚拟机名称
--ram                 	  #指定内存大小
--vcpus                 	  #指定CPU个数
--disk path          		  #指定虚拟机文件存储名称及位置
size			              #虚拟机大小,单位G						
--cdrom                    #指定镜像位置
vnc		                  #指定远程连接

删除虚拟机
[root@localhost iso]# virsh undefine demo
域 demo 已经被取消定义

你可能感兴趣的:(虚拟化)