KVM 虚拟化技术

KVM 虚拟化技术

传统物理机部署方案

1,服务器选型及采购
2,IDC选择
3,服务器系统选择、系统安装、上架
4,应用规划及部署
5,域名选择及注册
6,DNS映射
7,测试外网访问

传统数据中心面临的问题

服务器资源利用率低下,CPU、内存等不能共享 
资源分配不合理 
初始化成本高 
自动化能力差 
集群环境需要大量的服务器主机

虚拟化技术

虚拟化是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),分割、组合为一个或多个计算机配置环境,以达到最大化合理利用物理资源的目的

优势包括:
  降低资金成本和运维成本 
  最大限度减少或消除停机
  提高 IT 部门的工作效率、效益、敏捷性和响应能力
  加快应用和资源的调配速度
  提高业务连续性和灾难恢复能力

虚拟机

虚拟机:
虚拟计算机称为“虚拟机”(VM,Virtual Machine),它是一种严密隔离且内含操作系统和应用的软件容器。每个虚拟机都是完全独立的。通过将多台虚拟机放置在一台计算机上,可仅在一台主机上运行多个操作系统和应用,名为“hypervisor”的精简软件层可将虚拟机与主机分离开来,并根据需要为每个虚拟机动态分配计算资源。

虚拟机的主要特性:
  共享硬件,可在一台物理机上运行多个操作系统,可在虚拟机之间分配系统硬件资源。
  相互隔离,各虚拟机之间相互隔离互不影响。
  封装可将虚拟机的完整状态保存到文件中,移动和复制虚拟机就像移动和复制文件一样轻松 
  独立于硬件,可将任意虚拟机调配或迁移到其他理服务器上

虚拟化类型

#服务器虚拟化:
   服务器虚拟化支持将多个操作系统作为高效的虚拟机在单个物理服务器上运行
#网络虚拟化:
   通过软件定义网络,即网络的创建不再依赖于物理设备,如公有云厂商允许用户自己创建新的网络,在kubernetes、openstack中都会使用到网络虚拟化
#桌面虚拟化:
   将桌面部署为代管服务使 IT 组织能够更快地响应不断变化的工作场所需求和新出现的机会。还可以将虚拟化桌面和应用快速、轻松地交付给分支机构、外包和离岸员工以及使用 iPad 和 Android 平板电脑的移动员工
#应用虚拟化:
   将软件虚拟化,比如 office 365
#存储虚拟化: 
   SAN(基于磁盘)/NAS(NFS/Samba)/GlusterFS/ceph等
#库虚拟化
   在linux上运行windows 程序使用 wine,在mac系统运行windows程序使用CrossOver等
#容器虚技术
   被称为下一代虚拟化技术,典型的就是docker、Linux Container(LXC)、pouch  

虚拟化技术分类

#模拟器:
  在一个host之上通过虚拟化模拟器软件,模拟出一个硬件或者多个硬件环境,每个环境都是一个独立的虚拟机,CPU、IO、内存等都是模拟出来的,可以在宿主机模拟出不同于当前物理机CPU指令集的虚拟机


#全虚拟机化 full virtualization / 准虚拟化:
全虚拟化/准虚拟化不做CPU和内存模拟,只对CPU和内存做相应的分配等操作,全虚拟化需要物理硬件的支持,比如需要CPU必须支持并且打开虚拟化功能,例如Intel 的 Intel VT-X/EPT,AMD的AMD-V/RVI,以在CPU层面支持虚拟化功能和内存虚拟化技术,因此完全虚拟化也是基于硬件辅助的虚拟化技术。
全虚拟化软件(硬件辅助全虚拟化): 
  KVM:KVM是硬件辅助的虚拟化技术,主要负责比较繁琐的CPU和内存虚拟化,而Qemu则负责I/O虚拟化


#半虚拟化 para virtualization:
半虚拟化要求guest OS的内核是知道自己运行在虚拟化环境当中的,因此guest OS的系统架构必须和宿主机的系统架构相同,并且要求对guest OS的内核做相应的修改,因此半虚拟化只支持开源内核的系统,比较常见的半虚拟化就是早期版本的XEN,但是Xen从其3.0 版本开始,可以支持利用硬件虚拟化技术的支持,实现了完全虚拟化,可以在平台上不加修改的直接运行如Linux/Windows 等系列的操作系统,使得系统具备了更好的兼容性。 
半虚拟化软件: 
  Xen 
虚拟机名称 开发商及官网 虚拟类型 执行效率 许可类型
Vmware http://www.vmware.com/ 完全虚拟化 较高 私有
KVM http://www.linux-kvm.org 完全虚拟化 较高 GPL
Xen http://www.xensource.com/ 完全/半虚拟化 非常高 GPL
QEMU http://www.qemu.com/ 模拟 较低 LGPL/GPL

Hypervisor类型

Hypervisor是一种运行在基础物理服务器和操作系统之间的中间软件层,其可以允许多个操作系统和应用共享底层的内存、CPU、磁盘等物理硬件,也可叫做VMM(virtual machine monitor),即虚拟机监视器。

Hypervisor是所有虚拟化技术的核心,非中断地支持多工作负载迁移的能力是Hypervisor的基本功能,当服务器启动并执行Hypervisor时,它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载所有虚拟机的客户操作系统
直接运行到物理机:vmware esxi,rhev hypervisor
需要运行到操作系统:KVM,XEN等

#常见的Hypervisor类型
类型I-裸机型:直接运行在硬件设备上的,这种架构搭建的虚拟化环境称为裸机虚拟化环境,VMware ESXI等
类型II-主机托管型,运行在具有虚拟化功能的操作系统上的,构建的是主机虚拟化环境,VMware,Workstation、VirtualBox

硬件虚拟化技术

Intel从2005年开始支持在CPU中加入硬件虚拟化的支持,intel virtualazation tochnology,简称intel VT,IntelVT虚拟化技术包括分别针对CPU的增强虚拟化技术IntelVT-x、I/O虚拟化的IntelVT-d、网络虚拟化的IntelVT-c

云计算

云计算(Cloud Computing)的概念最早是由Google前首席执行官 埃里克•施密特(Eric Schmidt)在2006 年8月9日的搜索引擎大会上首次提出的一种构想,云计算以虚拟化为基础,以网络为中心,为用户提供安全、快速、便捷的数据存储和网络计算服务,包括所需要的硬件、平台、软件及服务等资源,而提供资源的网络就被称为“云”

虚拟化和云计算的对比

项目 虚拟化 云计算
定义 技术 方法
目的 从1个物理硬件系统创建多个模拟环境 汇聚并自动化分配虚拟资源以供按需使用
用途 针对具体用途为特定用户提供打包资源 针对多种用途为用户群组提供不同资源
可扩展性 纵向扩展 横向扩展
使用场景 少量服务器的环境 从多服务器的环境

云计算分类

#公有云:
   比如阿里云/aws、azure、金山云、腾讯云等都属于公有云,每个人都可以付费使用,不需要自己关心底层硬件,但是数据安全需要考利
#私有云:
   在自己公司内部或IDC自建Openstack、VMware等环境 
#混合云:
   既要使用公有云,又要使用私有云,即自己的私有云的部分业务和公有云有交接,这部分称为混合云
   
#云计算分层
传统IDC:直接在物理机运行服务,不能快速对业务横向扩容
IaaS:基础设施服务,Infrastructure as a service #自检机房(openstack)、阿里云ECS
PaaS:平台服务,Platform-as-a-service #公有云上的Redis、RDS、Docker等服务
SaaS:软件服务,Software-as-a-service #企业邮箱、OA系统等可以通过浏览器直接访问

虚拟化技术之KVM

KVM 是Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux2.6之后集成在Linux的各个主要发行版本中,KVM目前已成为学术界的主流VMM之一(VMM:virtual machine monitor,虚拟机监视器,也称为hypervisor)

KVM(基于内核的虚拟机)针对Linux的完全虚拟化解决方案,它在x86硬件上包含虚拟化扩展(Intel VT或AMD-V)。它由提供核心虚拟化基础架构的可加载内核模块kvm.ko和处理器特定模块kvm-intel.ko或kvm-amd.ko组成

KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术),是基于硬件的完全虚拟化,而Xen早期则是基于软件模拟的半虚拟化,新版本则是支持基于硬件支持的完全虚拟化,但Xen本身有自己的进程调度器,存储管理模块等
Guest:
    客户机系统,包括CPU(vCPU)、内存、驱动(Console、网卡、I/O 设备驱动等),被KVM置于一种受限制的CPU模式下运行
KVM:
    运行在内核空间,提供CPU和内存的虚级化,以及客户机的I/O拦截,Guest的部分I/O被KVM拦截后,交给QEMU处理
Qemu:
    纯软件实现的虚拟化模拟器,能够模拟一台能够独立运行操作系统的虚拟机,虚拟机认为自己和硬件打交道,但其实是和Qemu模拟出来的硬件打交道,Qemu将这些指令转译给真正的硬件,正因为Qemu是纯软件实现的,所有的指令都要经过qemu,性能非常低,所以,在生产环境中,大多数的做法都是配合KVM来完成虚拟化工作,KVM完成复杂及要求比较高的设备虚拟化,而Qemu完成像鼠标、键盘等设备的虚拟化

CPU指令集

#X86/x86_64架构
CISC复杂指令集,主导桌面计算机与服务器芯片市场

#ARM架构
RISC精简指令集,嵌入式系统设计,低耗电节能,非常适用移动通讯领域智能手机等

#POWER架构  
 由IBM设计,POWER系列微处理器在不少IBM服务器、超级计算机、小型计算机及工作站中,广泛使用
 
#RISC-V架构
  当前CPU的两大架构是CISC(复杂指令集)和RISC(精简指令集),x86是CISC的代表架构。ARM作为RISC的一种,在智能手机等移动处理器市场占领主要地位,针对物联网、5G、AI新兴领域的应用,RISC-V和MIPS两大精简指令集架构再次登上历史舞台。
  RISC-V 架构参与企业:阿里,华米科技,阿里云玄铁

宿主机环境准备

KVM需要宿主机CPU必须支持虚拟化功能,因此如果是在vmware workstation上使用虚拟机做宿主机,那么必须要在虚拟机配置界面的处理器选项中开启虚拟机化功能
grep -E "vmx|svm" /proc/cpuinfo | wc -l  #验证宿主机是否开启虚拟化

准备镜像ISO文件
关闭firewalld和selinux
systemctl stop firewalld  

安装KVM工具包

#Ubuntu:
apt install qemu-kvm virt-manager libvirt-daemon-system -y
kvm-ok  #验证是否支持kvm

#Centos:
yum install -y qemu-kvm qemu-kvm-tools libvirt libvirt-client virt-manager virt-install
systemctl enable --now libvirtd  #启动KVM服务
ip a   #生成了virbr0网卡

vim /etc/libvirt/qemu/networks/default.xml
<ip address='10.30.0.2' netmask='255.255.255.0'>
   <dhcp>
      <range start='10.30.0.3' end='10.30.0.200'/>
   </dhcp>
   
systemctl restart libvirtd  #重启服务
ip a  #此时virbr0 网卡地址为 10.20.0.2

虚拟机常用管理工具

libvirt 使用最多的KVM虚拟化管理工具和应用程序接口,即通过libvirt调用KVM创建虚拟机,libvirt是KVM通用的访问API,其不但能管理KVM,还能管理VMware、Xen、Hyper-V、virtualBox等虚拟化方案。 

virsh: 是一个常用的管理KVM虚拟化的命令行工具,常用语管理运行在单个宿主机上的虚拟机,virsh是一个使用C语言编写调用libvirt API的虚拟化管理命令行工具。 

virt-manager: virt-manager是一个虚拟化管理图形软件,包括虚拟机的创建、删除、启动、停止以及一些简单的监控功能等。 

openstack: openstack是一个开源的虚拟化编排工具,常用于构建大规模的虚拟化环境,用于管理成千上万虚拟机的创建、启 动、删除等整个生命周期。

创建磁盘

#磁盘格式
ll /var/lib/libvirt/images/  #默认磁盘文件存放路径
mkdir /opt/kvm   #在此目录中准备镜像
qemu-img create -f raw /opt/kvm/CentOS-7.raw 10G  #raw,立即占用10G空间
qemu-img create -f qcow2 /opt/kvm/centos7.qcow2 10G  #qcow2,空间随着磁盘大小变化

#虚拟磁盘格式
1,raw:裸磁盘,指定多大就创建多大,直接占用指定大小的空间,性能高
2,qcow2:稀疏磁盘,是openstack默认也是比较推荐的格式,空间是动态增长的:
3,wmdk:VMware的格式,性能高,稳定性好

#磁盘格式转换
qemu-img   convert   将磁盘文件转换为指定格式的文件
                    -f   指定需要转换文件的文件格式
                    -O  指定要转换的目标格式
qemu-img info centos7.qcow2   #查看磁盘详细信息与格式                    
qemu-img convert -f raw CentOS-7.raw -O qcow2 centos-7.qcow2  #raw转为qcow2
qemu-img convert -f qcow2 centos-7.qcow2 -O raw centos-7.raw  #qcow2转为raw
#注:转换后将生成一个新磁盘文件,原文件依然保存

虚拟机管理命令 virsh

virsh list --all     #列出所有虚拟机
virsh shutdown CentOS7  #正常关机
virsh start CentOS7     #正常开机
virsh undefine Centos7  #强制删除
virsh destroy centos7   #虚拟机强制断电
virsh autostart centos7  #设置当前虚拟机为开机自启

virt-install 命令使用帮助

virt-install --help
  --version   #查看版本
  --memory 1024  #虚拟内存
  --vcpus 2   #虚拟cpu核心
  --cdrom=     #安装光盘路径
  --disk=      #磁盘文件路径
  --network network=default   #指定网络类型   
  --virt-type kvm  #要使用的管理程序名称(kvm、qemu、xen等等)
  --graphics vnc,listen=0.0.0.0  #开启vnc连接
  --noautoconsole   #不自动连接到客户端控制台

创建nat网络虚拟机

qemu-img create -f qcow2 /opt/kvm/centos7.qcow2 10G

virt-install --virt-type kvm --name centos7 --memory 1024 --vcpus 2 \
--cdrom=/opt/kvm/CentOS-7-x86_64-Minimal-1908.iso \
--disk=/opt/kvm/centos7.qcow2 --network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole

 vnc连接 10.0.0.13:5900
 virt-manager   #通过virt-manager连接管理虚拟机,安装
 注:虚拟机可以连接外网,外网无法直接连接虚拟机

创建bridge网桥虚拟机

桥接网络可以让运行在宿主机上的虚拟机使用和宿主机同网段IP,并且可以从外部直接访问到虚拟机,目前企业中大部分场景都使用桥接网络
Ubuntu 18.04创建桥接网卡
vim /etc/netplan/01-netcfg.yaml
network:
  bridges: 
    br0: 
      dhcp4: no
      dhcp6: no
      addresses: [172.20.0.1/16]
      gateway4: 172.20.0.1
      nameservers: 
        addresses: [223.5.5.5]
      interfaces:   
        - eth1
netplan apply  #生效网络

qemu-img create -f qcow2 /opt/kvm/centos7-2.qcow2 10G  #创建磁盘文件
virt-install --virt-type kvm --name centos7-bridge --memory 1024 --vcpus 2 \
--cdrom=/opt/kvm/CentOS-7-x86_64-Minimal-1908.iso \
--disk=/opt/kvm/centos7-2.qcow2 --network bridge=br0 \
--graphics vnc,listen=0.0.0.0 --noautoconsole

virt-manager  #进行安装
ssh 192.168.11.7   #外网可以直接连接虚拟机

快速创建虚拟机

通过copy虚拟机磁盘文件,可以快速创建虚拟机
cp /opt/kvm/centos7-2.qcow2 /opt/kvm/centos7-3.qcow2
virt-install --virt-type kvm --name centos7-2-bridge --memory 1024  \
--vcpus 2 --cdrom=/opt/kvm/CentOS-7-x86_64-Minimal-1908.iso \
--disk path=/opt/kvm/centos7-3.qcow2 \
--network bridge=br0 \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole

#虚拟机不要开始安装过程,即虚拟机启动后立即强制关系重新启动即可进入到虚拟机系统

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