Linux学习之路-虚拟化(1)介绍20180303

一、虚拟化:Virtualization

虚拟化技术类型:

主机虚拟化:xen, kvm, virtualbox, …

(缺陷就是总是有一层内核的管理)

容器(用户空间隔离): lxc(LinuX Container), openvz, …

用户空间就是根文件系统,静态的就是文件系统树,动态的就是进程树

需要内核级的支持,就是内核与容器之间的管理层。

系统库虚拟化:wine, …

可以夸平台跑应用程序的软件

应用程序级虚拟化:jvm, pvm,...

虚拟化技术的分类:

(1) 模拟:Emulation(虚拟机的arch与物理平台的arch可以不相同)

Qemu, PearPC, Bochs, ...

(2) 完全虚拟化 Full Virtualization,Native Virtualization

BT/HVM

VMWare Workstation,

VirtualBox,

VMWare Server

Parallels Desktop,

KVM(hvm)

XEN(hvm)

(3) 半虚拟化(准虚拟化)

Para-Virutalization

特点:GuestOS明确知道自己运行虚拟机之上;

修改虚拟机中的内核,让虚拟机中的内核明确知道不能直接调物理机CPU的环0,

而是调用虚拟机平台管控器的指令,开发是针对于虚拟机平台的开发

xen, UML(user-mode linux)

(4) 容器级虚拟化

LXC,

OpenVZ,

libcontainer

runC, rkt

Linux V Servers

Virtuozzo, ...

(5) 系统库级别虚拟化

wine

(6) 应用程序级虚拟化

jvm, pvm, …

各种虚拟化的性能对比:

通过对比,进行推荐使用的模式

CPU、MMU 建议硬件支持的虚拟化

Network 建议半虚拟化

DiskIO    建议半虚拟化

Time       建议半虚拟化,必须使用NTP服务

主机虚拟化:

CPU:

模拟:emulation, 虚拟机的arch与物理平台的arch可以不相同;qemu;

虚拟:virtualization

完全虚拟化(full-virt)

BT: 二进制转换 (软件)

BT技术:二进制转换,能够快速调用,提升虚拟机的性能,完全虚拟化

HVM:硬件辅助的虚拟化(硬件)

HVM:硬件辅助的虚拟化,物理机CPU的环-1上,虚拟机CPU跑在环0上

半(准)虚拟化 (para-virt)

GuestOS得明确知道自己运行于虚拟化技术

内存:

MMU virtualization:

Intel: EPT, Extended Page Table(扩展的页表,直接从虚拟机的线性地址直接到物理机的物理地址)

AMD: NPT, Nested Page Table(嵌套的页表)

MMU硬件:内存管理单元,加速内核分配对线性地址和物理地址的对应记录,每次要加载页表

shadowMMU:影子内存管理单元,虚拟的内存管理单元

TLB virtualization:

tagged TLB(标签的TLB,不用跨虚拟机的切换在清TLB表了,需要硬件级的支持)

TLB:转换的后援缓冲器,CPU当中的一段硬件缓存空间

Page table:页表是要靠MMU帮助快速完成对应路由分级转换,这样才能快速查找

IO:

Emulation(模拟的硬盘)

Para-virtualization(半虚拟化,明确告诉虚拟机使用的是虚拟磁盘)

IO-through:IO透传(直接给虚拟机加物理硬盘)

主机虚拟化的类型:

TYPE-I:

于硬件级别直接运行hypervisor;

xen, vmware ESX/ESXI

TYPE-II:

于硬件级别运行一个OS(Host OS),而此OS上运行一个VMM;

vmware workstation, virtualbox, kvm

Linux目前流行的开源虚拟化技术解决方案:

主机虚拟化:xen, kvm, virtualbox

容器级:lxc, libcontainer, runC, openvz

模拟器:qemu

计算机的组成:CPU(运算器、控制器)、主存(RAM)、IO(磁盘、网络)

主板:MainBoard(提供各种总线以及各种扩展接口)

什么是虚拟机?

我们把一组提供了计算机底层基础结构实体的资源划分出多个彼此间相互隔离的虚拟的资源逻辑组合。

每一个彼此之间相互隔离的逻辑组合就是一个虚拟机。

每一个虚拟机就是一个进程,拿到的内存地址就是线性地址,虚拟机上的运行的程序,认为拿到的内存就是在线性地址上的线性地址。

计算机的多任务模式,其实就是虚拟化,CPU通过把时间片分发给各应用使用。

程序就是指令加数据组成的,指令后面给的就是内存的地址

冯氏计算机体系明确说明了存储程序体系,程序和指令是一块都放在硬盘上或内存中的。

CPU有四类指令

环0、1、2、3(核心程度依次向外)

内核模式:运行在环0上,程序调用的特权指令(集),只能通过内核调用CPU

用户模式:运行在环3上,程序调用的非特权指令,可以直接调用CPU

分级管理系统:快速实现查找某一文件的路由

task struct:内核级的链表结构,追踪当前主机的所有进程,

Thin provision:硬盘虚拟化,超配使用,文件模拟的方式供应假硬盘的使用

网卡虚拟化:

网卡队列,有多个虚拟机的时候,通讯的时候需要给每一个虚拟机虚拟一个网卡(拥有虚拟的mac地址),物理网卡需要设置为混杂模式,物理网卡相当于交换机(桥接模式)。

如果虚拟机不需要与外网通讯,就是仅主机模式(only host),就是用软件实现一个交换机,虚拟主机的虚拟网卡直接连到虚拟的交换机上,物理网卡也虚拟一个虚拟的网卡,连接到虚拟的交换机上。

Nat模式,宿主机上打开核心转发,并且做地址转换,而且所有的虚拟机的网关指向物理机虚拟出的虚拟网卡的仅主机地址,宿主机就把转给自己的虚拟机的请求,通过物理网卡转出去,就是一个Nat转发网络。

隔离网络模型:只能在虚拟机之间的通讯

仅主机模型:只能虚拟机之间及宿主机之前的通讯

路由模型:可以与外网通讯,但是不一定能转发回来,但是如果打开转发功能,就是Nat模型

跨物理机之间的虚拟机通讯使用隧道通讯,

GRE:通用路由封装技术,把二层报文借助一个隧道转发到另外一台物理机上。

VLAN技术:虚拟局域网,大家在同一二层网络,但是可以在三层隔离分开,只能支持到4093个用户。

VxLAN技术:扩展的虚拟局域网技术,自身就带有路由封装的功能。

SDN技术:Software Driven Network 软件驱动网络,把三个平面切割分开,把其中的一个平面拿出来统一找一个中心控制。

网络有控制平面、数据平面、传输平面,每一个网络是自制系统,它自我能学习能转发,三个平面是在同一个硬件内部封装的。

NFV技术:网络虚拟化技术

网络层级:

  1. 我们需要虚拟个设备
  2. 我们要确保网络资源可以复用的
  3. 要构建一个本机局部的虚拟网络,仅虚拟机之间通讯,虚拟机与物理机通讯,虚拟机与外网通讯

网络通讯,之间发送信息的就是电压信号,高低电频,1000M 1b/s bit (125MB/s)

云原生应用:针对云平台开发

系统分为基础架构层、数据支撑、应用层、业务层。

二、VMM-Virtual Machine Monitor

VMM(Virtual Machine Monitor,虚拟机监控器)它包括规划、部署、管理和优化虚拟基础结构等端到端功能。

按照VMM的实现架构分类,可以分为Hypervisor模型、宿主模型和混合模型。

1.Hypervisor模型(TYPE-I)

在这种架构里面,VMM可以视为一个具有虚拟化功能的操作系统,即管理物理资源和虚拟环境的创建、管理。

优点: 效率高;  缺点:只支持部分型号设备,需要重写驱动或者协议。

典型产品:VMware ESX server3, Kvm

2.宿主模型(TYPE-II)

宿主机OS管理物理资源,VMM作为宿主机OS的一个独立的内核模块来提供虚拟化功能。

VMM通过调用宿主OS的相关服务来获取资源,创建出来的虚拟机也作为宿主OS的一个进程来参与调度。

优点:个人理解就是充分利用现有的OS的device driver,无需重写;物理资源的管理直接利用宿主OS来完成。

缺点: 效率不够高,安全性一般、依赖于VMM和宿主OS的安全性。

典型产品: VMware server , VMware workstation,virtual  PC, virtual server,

3.混合模型

顾名思义,混合模型就是上述两种模型的混合体。

VMM处在最底层,拥有全部物理资源,但是与Hypervisor模型不同的是,大部分I/O设备是由一个运行在特权虚拟机中的特权OS来管理的。

CPU和Memory的虚拟化依然由VMM来完成,而I/O的虚拟化则由VMM和特权OS来共同完成。

混合模型集合了上述两种模型的优点,但是缺点就是经常需要在VMM与特权OS之间进行上下文切换,开销较大。

典型产品: window server 2008之hyper-v, Xen,

三、XEN、KVM介绍

XEN是英国剑桥大学实验室研发的虚拟机技术,那个时代没有硬件支持的,直接奔着半虚拟化技术。安装后需要重启系统,重启后,xen变成了Hypervisor,原来系统的内核变成了第一个虚拟机的内核。后续系统每次启动都是启动xen,而且xen没有管理接口,直接把第一个虚拟机当做管理接口,而且还当做IO虚拟化的接口,xen只虚拟CPU和内存。

在这之上每个虚拟机叫一个域,第一个虚拟机编号Dom0,全称叫做privileged domain,其他虚拟机统称叫做DomU。

其他的虚拟机都需要通过Dom0来创建,DomU关于CPU及内存的调用都是通过xen来完成的,但是需要IO设备的时候,需要通过Dom0来完成。

Dom0需要通过qemu来实现IO模拟,qemu还是个虚拟器,IO模拟完整,内存模拟完整。

Xen需要在网上的源中 virt中加载,红帽不支持,只能使用centos高版本的内核才能使用。

KVM是以色列的一家公司研发的,全称叫做 kernel-based vm 基于内核的虚拟机。

kvm是个内核模块,模块装载后就变成了kvm的hypervisor,用户空间直接创建虚拟机即可,虚拟机的CPU和内存是由kvm来实现,IO还是由用户空间的qemu来实现。

云栈的类别:

IaaS-Infrastructure AS a Service 基础架构级服务,代表软件有OpenStack

PaaS-platform AS a Service 平台级服务,可以直接跑软件

SaaS-Service AS a Service 服务级服务

FWaaS

DBaaS 数据库级服务

LBaaS 负载均衡级服务

...

原文地址:http://blog.51cto.com/exia00linux/2109143

时间: 2024-08-30 05:11:02

Linux学习之路-虚拟化(1)介绍20180303的相关文章

linux学习之路之LVM

试想一种情况,当初我们在规划磁盘的时候,只给某一个磁盘或分区之划分了30G的容量,但是后来,随着业务的需求,该磁盘或者分区的使用量会越来越大,等到以后再有数据存放时,发现该磁盘或者分区的容量不够用,此时该怎么办了?可以新增一个磁盘,经过格式化,挂载等过程就可以使用这个磁盘了,再将原来磁盘的数据完全的复制过来.等到后来又发现,规划的磁盘又太大了,然后又使用上述方法来减少磁盘的大小.虽然这种方法可行,但是效率低,比较复杂.不应该是我们首选的方法. 当然,我们可以这样做,将多个磁盘或者分区(PV)组合

linux学习之路之磁盘管理和文件系统三

ext3文件系统和ext2文件系统的区别? 在某些时候,某个用户在linux系统上写入数据,这时系统正好断电或者系统核心出现错误,写入的数据仅有inode table和datablock而已,可能会导致之前写过的数据没有保存在磁盘上.而当系统重启后,系统可能会对没有保存的数据进行数据恢复.但是,由于系统并不知道是哪个文件不完整,因此会遍历整个文件系统中inode,来查看block是否完整.不过,当某个文件的数据太大时,数据的恢复时间可能会比较长,而这对于服务器来说是不利的.所以在这种情况下,也就

linux学习之路之vim编辑器的使用

本章将介绍vim编辑器的使用 vim编辑器是vi编辑器的增强版 vim是一种全屏的编辑器,是一种模式化的编辑器,之所以称为模式化的编辑器,因为vim有多种模式. 接下来将介绍vim主要的三种模式: 编辑模式(也叫命令模式):在该模式下你可以完成字符串跳转,字符串删除,翻屏操作等操作 输入模式:在该模式下输入的任何字符都会保存在该文件中,作为文件的一部分 末行模式:在该模式下,可以实现字符串搜索,字符串替换等操作 vim编辑器的三种模式之间的相互转换 模式转换: 编辑模式-->输入模式 i:在当前

linux学习之路之文本的查找---find命令的使用

文本的查找可以使用两种方式来实现,即使用locate命令来查找和find命令来查找 那么这两种方式有什么区别呢? locate:是一种非实时查找,所谓非实时查找就是查找的不够实际,不够精确.因为locate查找是在 系统文件数据库中进行的,而数据库默认是一天更新一次,也就是说你查找的文件再数据库 更新之前查找的话,有可能找不到文件,因为那时数据库还没有去读取硬盘上的文件,所以 有些文件没有写入到数据库中. 可以收到更新数据库,使用命令updatedb 因为不上在硬盘上读取,因此速度快 locat

linux学习之路之sed命令使用

本章主要介绍sed的命令使用 sed(Stream Editor)是一种流编辑器,或者叫做行编辑器,以行为单位进行编辑处理,而后续会介绍的vi编辑器是一种全屏编辑器. sed的工作原理: 逐行读取文件中的每一行,并将其放在内存空间中,在对内存空间中的数据进行处理,将处理后的结果打印到屏幕上.而这种内存空间也叫做模式空间. 所谓模式空间:就是将放在内存空间的数据根据模式来匹配,匹配成功的数据进行相应的编辑处理,将处理后的数据打印到屏幕上去. 说明:sed命令默认将文件中所有的行打印到屏幕上去. s

linux学习之路之目录管理和文件管理

我们知道linux文件系统是一个树型结构,在最上层是'/'目录,根目录的下面就是其他目录,而这些目录下面又可以有多个子目录,这样一层一层的就形成一个树型结构图.那是不是我们查找某一个文件必须要从根目录开始往下查找的呢?当然不是,在这里我将会介绍两种路径方式:相对路径和绝对路径. 什么是相对路径和绝对路径? 绝对路径:就是从'/'根目录开始往下一级一级的查找,直到目的所经过的线路. 相对路径:就是相对当前位置而言来找到目的地所经过的线路. 目录的创建 mkdir:用于创建目录 语法格式:mkdir

linux学习之路及文本查看和文本处理命令

这一篇主要介绍几个常用的文本查看命令和文本处理命令. 首先介绍文本查看命令 cat:用于连接文件并显示 说明:当只有一个文件时,则用于查看文件内容:当有多个文件时,cat命令会将这些文件连接起来,在一起显示出来 语法格式:cat [option] FILE... -n:显示内容的时候把行号显示出来 -E:显示每一行的结束符$符(默认不显示) tac:也是用于显示文件内容,只不过他是将文件的内容倒过来显示,与cat相反 -n:显示行号 -E:显示每一行结尾的结束符$ 分屏操作命令 more与les

linux学习之路之创建私钥CA及使用CA为客户端颁发证书

创建CA(Certificate Authority) CA的储存格式主要有2种:x509和pkcs12 x509是目前最主流的CA储存格式,在x509格式的证书中,储存的内容主要有: 证书的公钥和使用期限 证书的合法拥有着 证书该如何被使用 CA的信息 CA签名的校验码 默认情况下,TCP/IP模型和OSI模型,并没有实现数据的加密,而要实现数据的加密需要使用TLS/SSL协议,TLS和SSL在有些Linux版本上实现的机制是相同的,因此在这里我们之介绍SSL协议 SSL(Secure Soc

linux学习之路之bash及其特性

我们知道当我们用鼠标点击,或输入一个命令,系统就玩帮我们完成一个任务,那么当我们点击一个链接时,系统由是如何知道要去完成相应的操作呢?这是因为通过shell来完成的. 那么什么是shell呢? shell就是用户和操作系统之间的一个接口,通过这个接口shell接受来自用户的命令,并调用相应的应用程序来呼叫kernel来处理相应的工作. 在linux系统上面存放着多种类型的shell,这些shell存放在/etc/shells文件里,默认RedHat使用的shell为bash 下面介绍一些bash