1、服务器虚拟化

虚拟化使得一台物理服务器上可以运行多台虚拟机,虚拟机共享物理机的CPU、内存、IO硬件资源,但是逻辑上虚拟机是相互隔离的。

2、虚拟化中物理机和虚拟机的叫法

1)宿主机(Host)

     运行了虚拟机的物理服务器

2)客户机(Guest)

     运行在宿主机上的虚拟机

3、虚拟机的组成

虚拟机由虚拟机的硬件设备组成,虚拟机的硬件设备是由Hypervisor(虚拟化层)从物理服务器上的硬件设备虚拟而来的。

二、虚拟化的分类

根据虚拟化层的实现方式和所处位置分为I型和II型虚拟化

1型虚拟化(原生架构)

虚拟化层直接安装在物理机上,多个虚拟机都在虚拟化层上运行,虚拟化层实现方式是一个特殊定制的linux系统,xen和ESXI都属于这个类型,就是原生架构和裸金属架构,但是在KVM里面它叫1型虚拟化。

II型虚拟化

在物理服务器上安装操作系统,在操作系统之上安装虚拟化软件,使操作系统变成虚拟化层,例如VMware workstation、KVM、virtual box

分类规则:按照Hypervisor所处位置和实现方式

1、I型虚拟化(原生架构)

在物理服务器上直接安装软件实现虚拟化层,例如ESXI、Xen

2、II型虚拟化(寄居架构)

在物理服务器上安装操作系统,在操作系统之上安装虚拟化软件,使操作系统变成虚拟化层,例如VMware workstation、KVM、virtual box

三、kvm

1、简介

 KVM基于Linux内核来实现的虚拟化,全称“Kernel-Based Virtual Machine”

课下根据课堂要求了解KVM一些关键模块

2、关键模块

1)kvm.ko

用于管理虚拟CPU和内存

备注:虚拟磁盘和虚拟网卡是由QEMU提供

2)libvirt

用于管理虚拟机的生命周期(创建、启停、删除)

libvirt也是由三部分组成。

  1.libvirtd

    libvirt的守护进程

  2.virsh

是由libvirt提供的一个命令行工具(通过这个命令行工具,可以创建、启停、创建虚机)

3.API库(应用程序接口库)

可以允许其他软件通过libvirt管理虚拟机,例如virt-manager可以通该接口连接到libvirt,然后对虚拟机进行操作

KVM架构

KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的 全虚拟化解决方案。在kvm上安装的虚拟机它不知道自己运行在虚拟化环境的,它会认为运行在硬件之上的,安装之前要把Intel VT技术开启,如果是AMD就开启AMD的虚拟化技术,在KVM里面,装完KVM创建虚机,它就会体现为linux操作系统的进程,由标准的调度程序来调度,

 

怎么看服务器虚拟化数量 服务器如何划分虚拟机_数据

 

 

图解:底层是服务器的硬件,有硬件的CPU、硬件的内存、还包括输入输出设备,上面安装了linux操作系统,它提供了KVM模块, kvm模块给虚机提供了虚拟的CPU和虚拟内存,但不提供虚拟磁盘和网卡,虚拟磁盘和网卡是由QEMU程序来提供的,QEMU是安装在linux操作系统之上的,但是,KVM 本身不执行任何硬件模拟,需要用户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟 I/O,用户空间就是QEMU,也就是所KVM内存本身是不提供硬盘和网卡,就是有用户空间的QEMU来提供虚拟硬盘和网卡。

内核空间:

KVM模块,负责管理虚拟机的虚拟CPU和内存;负责拦截虚拟机的IO操作,交给QEMU处理

用户空间:

QEMU程序,负责处理虚拟机的IO操作,提供虚拟机的虚拟硬盘和虚拟网卡

五、CPU和内存虚拟化

1、CPU的虚拟化

1)实施虚拟化技术前,需要查看服务器是否支持虚拟化

      1.进入服务器的BIOS菜单,查看虚拟化相关配置

2.进入服务器上的Linux系统,运行

egrep  '(vmx|svm)'  /proc/cpuinfo  

2)KVM虚拟机运行起来是以进程的形式存在于Linux操作系统中的;虚拟机的虚拟CPU是由物理服务器的CPU线程来进行模拟的。

3)CPU资源的超分,在一台宿主机上运行的所有虚拟机分配的vcpu数可以超过物理机的CPU数。

备注:超配前一定要进行测试,不严重影响虚拟机性能的前提下可以适当超配

2、内存的虚拟化

1)概念

VA:虚拟机中应用程序使用的内存空间

PA:虚拟机的物理内存

MA:物理服务器的内存

       VA--->PV---->MV (映射关系)

2)内存虚拟化的实现方式

1.软件方式:例如影子页面技术

2.硬件方式:开启CPU的辅助功能,例如Intel EPT/VT或者AMD NPT/AMD-V

3.KSM方式:可以将多个内存中的数据副本进行合并,释放内存空间,相当于ESXI中的透明页面共享技术。

3)内存的管理机制

1.气球技术(同ESXI的气球回收机制)就是将虚拟机里面非活动的内存数据占用空间回收回主机,

将VM中非活动内存数据占用的内存空间回收至宿主机

2.大页技术

默认每个页帧大小是4KB,大页技术中可以支持一个页帧2M、4M、8M,可以加快内存数据的查找和访问(相当于硬盘的簇和块的概念,把块的大小调大后,占用的块数量减少,加快内存数据的查找和访问)

六、存储的虚拟化

Kvm的存储虚拟化是通过存储池(storage pool)和卷(volume)来管理的storage pool是用来存储volume的,volume类似于一块硬盘,storage pool是宿主机的一块存储空间,volume pool就是storage pool划分出的一部分空间,volume给虚拟机使用,在虚拟机里看到的就是一块硬盘。

 

怎么看服务器虚拟化数量 服务器如何划分虚拟机_虚拟化_02

 

 

 

怎么看服务器虚拟化数量 服务器如何划分虚拟机_怎么看服务器虚拟化数量_03

 

 


 

1)概念

1.Storage  Pool:存储池,宿主机上能够看到的一块存储空间,用于保存volume;

2.Volume:卷,可以用作虚拟机的虚拟磁盘使用;

2)Storage Pool的类型

1.目录类型

通过目录保存volume,默认目录:/var/lib/libvirt/images

2.LVM类型

LVM类型的Storage Pool是一个VG,VG中的LV作为Volume

3.其他类型

ISCSI、Ceph、NFS等等

3)Volume的类型

1. raw:原始磁盘镜像格式,不支持快照功能,浪费宿主机的存储空间(相当于ESXI上虚拟机磁盘置备模式中的厚置备立即置零)

2.vmdk:VMware磁盘格式

3.qcow2:推荐的KVM虚拟机的磁盘格式,支持多快照,节约宿主机的存储空间(相当于支持类似ESXI上虚拟机磁盘置备模式中的精简置备)

4.ISO:映像文件格式


七、网络的虚拟化

1)Linux Bridge

实现KVM的网络虚拟化的,Linux Bridge可以连接KVM虚拟机的网卡和宿主机的物理网卡,实现KVM虚拟机之间以及KVM虚拟机与外界通信,类似于一个虚拟的二层交换机。

2)KVM中常见的三种网络模式

1.隔离模式

可以让VM之间相互通信,但是VM无法与宿主机及其他外部网络通信,相当于VMware workstation中的LAN区段模式;

 

怎么看服务器虚拟化数量 服务器如何划分虚拟机_数据_04

 

 

2.NAT模式(默认)

可以实现VM之间相互通信,也可以让VM与宿主机及外部网络通信,但是对外部网络发送的数据包将进行网络地址转换;

 

怎么看服务器虚拟化数量 服务器如何划分虚拟机_服务器_05

 

 

这种模式在linux bridge上有一个NAT设备,这个NAT设备可以让linux bridge可以跟物理网卡之间相连,物理网卡可以连接到外部网络,NAT可以做地址转换让虚拟机可以跟网络设备进行通讯,虚拟机发出的可以让外部接收,但是外部访问内部虚拟机就会被隔离。

 

3.桥接模式

 

怎么看服务器虚拟化数量 服务器如何划分虚拟机_怎么看服务器虚拟化数量_06

 

 

可以让VM之间相互通信,也可以让VM与宿主机及外部网络通信。在桥接模式下,物理网卡上的网络参数配置将配置到网桥上(br0),而物理网卡变成了一个通信的通道