虚拟化与网络存储技术

虚拟化技术简介

一、常见的虚拟化技术分类

1、CPU虚拟化
CPU的虚拟化技术是一种硬件方案,支持虚拟化技术的CPU带有特别优化过的指令集来控制虚拟过程,通过这些指令集,VMM会很容易提高性能。
2、服务器虚拟化
服务器虚拟化能够通过区分资源的优先次序,并随时随地将服务器资源分配给最需要他们的工作负载来简化管理和提高效率,从而减少为单个光子负载峰值而储备的资源。
3、存储虚拟化
虚拟存储设备需要通过大规模的raid子系统和多个1/0通道连接到服务器上,智能控制器提供LUN访问控制、缓存和其他如数据复制等管理功能。
4、网络虚拟化
网络虚拟化整合后的设备组成了一个逻辑单元,在网络中表现为一个网元节点,管理简单化、配置简单化、可跨设备链路聚合,极大简化网络架构,同时进一步增强冗余可靠性。
5、应用虚拟化
应用虚拟化通常包括两层含义,一是应用软件的虚拟化,一是桌面的虚拟化。

二、XEN虚拟化技术的技术简介

在这里插入图片描述

XEN虚拟化技术的优缺点

1、优点
(1)Xen构建于开源的虚拟机管理程序上,结合使用半虚拟化和硬件协助的虚拟化。操作系统与虚拟化平台之间的这种协作支持开发一个较简单的虚拟机管理程序来提供高度优化的性能。
(2) Xen提供了复杂的工作负载均衡功能,可捕获CPU、内存、磁盘I/O和网络I/O数据,它提供了两种优化模式:一种针对性能,另一种针对密度。

(3) Xen利用一种名为Citrix Storage Link 的独特的存储集成功能。使用Citrix Storage Link,系统管理员可直接利用来自HP、Dell Equal Logic、NetApp、EMC等公司的存储产品。

(4) Xen包含多核处理器支持、实时迁移、物理服务器到虚拟机转换(P2V)和虚拟到虚拟转换(V2V)工具。集中化的多服务器管理、实时性能监控,以及Windows和Linux的快速性能。

2、缺点:
(1) Xen会占用相对较大的空间,且依赖于0号虚拟机中的Linux操作系统。
(2) Xen依靠第三方解决方案来管理硬件设备驱动程序、存储、备份和恢复,以及容错
任何具有高I/O速率的操作或任何会吞噬资源的操作都会使Xen陷入困境,使其他虚拟机缺乏资源。
(3) Xen缺少802.1Q 虚拟局域网(VLAN)中继,出于安全考虑,它没有提供目录服务集成、基于角色的访问控制、安全日志记录和审计或管理操作。
(4) Xen目前最大的困难在于Linux内核社区的抵制,导致XEN相关的内核改动一直不能顺利进入内核源代码,从而无法及时得到内核最新开发成果的支持。

三、KVM虚拟化技术简介

在这里插入图片描述
KVM虚拟化技术功能和特性

功能特性:
1.内存管理
KVM 从 LinuX继承了强大的内存管理功能。一个虚拟机的内存与任何其他 Linux 进程的内存一样
进行存储,可以以大页面的形式进行交换以实现更高的性能,也可以以硬盘文件的形式进行共享。Numa
支持(非一致性内存访问,针对多处理器的内存设计)允许虚拟机有效地访问大量内存。
KVM支持最新的基于硬件的内存虚拟化功能,支持 Intel 的扩展页表(EPT)和 AMD 的嵌套页表
(NPT,也叫“快速虚拟化索引-RVI”),以实现更低的 CPU 利用率和更高的吞吐量。
内存页面共享通过一项名为内核同页合并(Kernel Same-Page Merging,KSM)的内核功能来
支持。KSM 扫描每个虚拟机的内存,如果虚拟机拥有相同的内存页面,KSM 将这些页面合并到一个在
虚拟机之间的共享页面,仅存储一个副本。如果一个客户机尝试更改这个共享页面,它将得到自己的专
用副本。
上理
2.存储
KVM 能够使用 Linux 支持的任何存储方式来存储虚拟机镜像,包括具有 IDE、SCSI和 SATA的
本地硬盘,网络附加存储(NAS )(包括 NFS 和 SAMBA/CIFS),或者支持 ISCSI和光纤通道的 SAN。
多路径 VO 可用于改进存储吞吐量和提供冗余。由于 KVM 是 Linux 内核的一部分,它可以利用所有领
先存储供应商都支持的一种成熟且可靠的存储基础架构,它的存储堆栈在生产部署方面具有良好的记录。
KVM 还支持全局系统(GFS2)等共享文件系统上的虚拟机镜像,以允许虚拟机镜像在多个宿主
之间共享或使用逻辑卷共享。硬盘镜像支持按需分配,仅在虚拟机需要时分配存储空间,而不是提前分
配整个存储空间,提高存储利用率。KVM 的原生硬盘格式为 QCOW2,它支持快照,允许多级快照
3.设备驱动程序
KVM 支持混合虚拟化,其中准虚拟化的驱动程序安装在客户机操作系统中,允许虚拟机使用优化
的I/O 接口而不使用模拟的设备,从而为网络和块设备提供高性能的 VO。KVM 准虚拟化的驱动程序使
用 IBM和 Red Hat 联合 Linux 社区开发的 Virtio 标准,它是一个与虚拟机管理程序独立的、构建设备
驱动程序的接口,允许为多个虚拟机管理程序使用一组相同的设备驱动程序,能够实现更出色的虚拟机
交互。
4. Linux 的性能和可伸缩性
KVM 也继承了 Linux 的性能和可伸缩性。KVM 虚拟化性能在很多方面(如计算能力、网络带宽等)
已经可以达到非虚拟化原生环境 95%以上的性能。KVM 的扩展性也非常好,客户机和宿主机都可以支
持非常多的 CPU 数量和非常大的内存。例如,Red Hat 官方文档就介绍过,RHEL 6.×系统中的一个
KVM 客户机可以支持 160 个虚拟 CPU 和高达 2Tb 的内存,KVM 宿主机支持 4096 个CPU 核心和
高达 64Tb 的内存。

优势:
1、开源:KVM 一个开源项目,这就决定了KVM一直是开放的姿态,许多虚拟化的新技术都是首先在KVM上应用,再到其他虚拟化引擎上推广。
2、性能:KVM吸引许多人使用的一个动因就是性能,在同样的硬件条件下,能提供更好的虚拟机性能,主要是因为KVM架构简单,代码只有2万行,一开始就支持硬件虚拟化,这些技术特点保证了KVM的性能。
3、免费:KVM因为是开源项目,绝大部分KVM的解决方案都是免费方案,随着KVM的发展,KVM虚拟机越来越稳定,兼容性也越来越好,因而也就得到越来越多的应用。
4、技术支持:免费并不意味着KVM没有技术支持。在KVM的开源社区,数量巨大的KVM技术支持者都可以提供KVM技术支持。另外,如果需要商业级支持,也可以购买红帽公司的服务。

四、红帽RHEV虚拟化系统简介

RHEV(Red Hat Enterprise Virtualization)红帽企业虚拟化,是一个服务器虚拟化的管理平台。由RHEV-M(Manager)、RHEV-H(Hypersior)和存储组成,能够简便、集中的对KVM虚拟机进行创建、删除、迁移、快照等操作,实现企业服务器物理资源的充分使用。是一种非常适合中小型企业的虚拟化解决方案。其组成如下图所示:
在这里插入图片描述
RHEV技术功能特性及优缺点
功能特性:
1、在线迁移
2、高可用
3、系统计划调度(自动迁移完成,设定CPU负载阀值)
4、电源管理
5、模板管理
6、快照

优点:
1、性能和可扩展性:为实现企业级的虚拟化应用程序,如Oracle、SAP和Microsoft Exchange,为其提供领先的性能和可扩展性。
2、安全性:业界领先的安全性,在安全增强型红帽企业Linux内核基础上构建。
3、企业功能:业虚拟化管理功能,包括实时迁移、高可用性、负载均衡、节能等。
4、灵活性:通过消除桌面操作系统和基础硬件之间的依赖性,实现业务灵活性和连续性。
5、成本优势:与其他解决方案相比较,凭借红帽软件订阅模式的强大功能,能够以更低的购置和总拥有成本获得相同或更好的功能集,从而获得收益。
缺点:
1、技术不成熟:KVM的出现不过三四年时间,在可用资源、平台支持、管理工具、实施经验方面当然不能与出现8年之久的Xen相比。
2、需要Windows支持;KVM3.0之前的RHEV-M管理程序需要Windows支持,这是KVM在部署过程中最大的障碍,RedHat公司已经意识到这个问题的严重性,从KVM3.0开始,开发出基于Linux的RHEV-M,取消了其只能运行于Windows服务器上的尴尬,这一改动得到大量Linux用户的支持。
3、管理的物理服务器数量少,每台M端只能管理500台以内的H端服务器。

##五、 其他虚拟化技术及实现方法
其他虚拟化技术
1、VMware
VMware公司创办于1998年,从公司的名称就可以看出,这是一家专注于提供虚拟化解决方案的公司。VMware公司很早就预见到了虚拟化在未来数据中心中的核心地位,有针对性的开发虚拟化软件,从而抓住了21世纪初虚拟化兴起的大潮,成为了虚拟化业界的标杆。下面是VMware主要产品的简单介绍。
(1)VMware Workstatio
VMware Workstation是VMware公司销售的运行于台式机和工作站上的虚拟化软件,也是VMware公司第一个面市的产品(1999年5月)。该产品最早采用了VMware在业界知名的二进制翻译技术,在x86 CPU硬件虚拟化技术还未出现之前,为客户提供了纯粹的基于软件的全虚拟化解决方案。
(2)VMware ESX Serve
ESX服务器(一种能直接在硬件上运行的企业级的虚拟平台),虚拟的SMP,它能让一个虚拟机同时使用四个物理处理器,和VMFS一样,它能使多个ESX服务器分享块存储器。
2、Virtual Box
Oracle VirtualBox是由德国InnoTek软件公司出品的虚拟机软件,现在由甲骨文公司进行开发,是甲骨文公司xVM虚拟化平台技术的一部分。它提供使用者在32位或64位的Windows、Solaris及Linux操作系统上虚拟其他X86的操作系统。使用者可以在VirtualBox上安装并执行Solaris、Windows、DOS、Linux、OS/2 Warp、OpenBSD及FreeBSD等操作系统作为客户端操作系统。最新的VirtualBox还支持运行Android4.0系统。
3、Hyper-V
Hyper-V是微软提出的一种系统管理程序虚拟化技术。Hyper-V设计的目的是为广泛的用户提供更为熟悉及成本效益更高的虚拟化基础设施软件,这样可以降低运作成本、提高硬件利用率、优化基础设施并提高服务器的可用性。

Hyper-V的设计借鉴了Xen,采用微内核的架构,兼顾了安全性和性能的要求。Hyper-V底层的Hypervisor运行在最高的特权级别下,微软将其称为ring-1(而Intel也将其称为root mode),而虚拟机的操作系统内核和驱动运行在ring0,应用程序运行在ring3。
在这里插入图片描述

Qemu—KVm介绍

KVM原理简介

1、KVM工作流程
在这里插入图片描述
用户模式的qemu利用libkvm通过ioctl进入内核模式,kvm模块为虚拟机创建虚拟内存,虚拟CPU后执行VMLauch指令进入客户模式。加载Guest OS并执行。如果Guest OS 发生外部中断或者影子页表缺页之类的情况,会暂停Guest OS的执行,退出客户模式,执行异常处理,之后重新进入客户模式,执行客户代码。如果发生I/O事件或者信号队列中有信号到达,就会进入用户模式处理。
2、KVM架构
在这里插入图片描述
如图所示,左侧部分是一个标准的Linux操作系统,可以是RHEL、Fedora、Ubuntu等。KVM内核模块在运行时按需加载进入内核空间运行。KVM本身不执行任何设备模拟,需要用户空间程序QEMU通过/dev/kvm接口设置一个虚拟客户机的地址空间,向它提供模拟的I/O设备,并将它的视频显示映射回宿主机的显示屏。
3、KVM模块
(1) KVM模块是KVM虚拟机的核心部分。其主要功能是初始化CPU硬件,打开虚拟化模式,然后将虚拟客户机运行在虚拟机模式下,并对虚拟客户机的运行提供一定的支持。
(2)KVM模块加载之初,只存在/dev/kvm文件,而针对该文件的最重要的IOCTL调用就是“创建虚拟机”。在这里,“创建虚拟机”可以理解成KVM为了某个特定的虚拟客户机(用户空间程序创建并初始化)创建对应的内核数据结构。
(3)处理器对设备的访问主要是通过IO指令和MMIO,其中IO指令会被处理器直接截获,MMIO会通过配置内存虚拟化来捕捉。但是,外设的模拟一般并不由KVM模块负责。一般来说,只有对性能要求比较高的虚拟设备才会由KVM内核模块来直接负责,比如虚拟终端控制器和虚拟时钟,这样可以大量减少处理器的模式切换的开销。

Qemu原理介绍

1、Qemu架构
在这里插入图片描述

Qemu是纯软件实现的虚拟化模拟器,几乎可以模拟任何硬件设备,是一个完整的可以运行的软件,非常灵活可移植,我们最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机,虚拟机认为自己和硬件打交道,但其实是和Qemu模拟出来的硬件打交道,Qemu将这些指令转译给真正的硬件。

2、Qemu模块
(1)QEMU本身并不是KVM的一部分,其自身就是一个著名的开源虚拟机软件。与KVM不同,QEMU虚拟机是一个纯软件的实现,所以性能地下。但是,其优点是在支持QEMU本身编译运行的平台上就可以实现虚拟机的功能,甚至虚拟机可以与宿主机并不是同一个架构。作为一个存在已久的虚拟机,QEMU的代码中有整套的虚拟机实现,包括处理器虚拟化、内存虚拟化,以及KVM使用到的虚拟设备模拟(比如网卡、显卡、存储控制器和硬盘等)。
(2)从QEMU和KVM模块之间的关系可以看出,这是典型的开源社区在代码共用和开发项目共用上面的合作。诚然,QEMU可以选择其他的虚拟机或技术来加速,比如Xen或者KQEMU;KVM也可以选择其他的用户空间程序作为虚拟机实现,只要它按照KVM提供的API来设计。但是在现实中,QEMU与KVM两者的结合是最成熟的选择,这对一个新开发和后起的项目(KVM)来说,无疑多了一份未来成功的保障。
3、Qemu运行模式
在这里插入图片描述
(1) 第一种模式是通过kqemu模块实现内核态的加速。
(2)第二种模式是在用户态直接运行QEMU,由QEMU对目标机的 所有 指令进行翻译后执行,相当于全虚拟化。
(3)第三种模式则是KVM官方提供的kvm-qemu加速模式。
4、Qemu的特点
(1)QEMU的两种操作模式:完整的系统仿真和用户模式仿真。
(2)QEMU具有以下特点:
①QEMU可以在没有主机内核驱动程序的情况下运行。
②它适用于多种操作系统(GNU / Linux,* BSD,Mac OS X,Windows)和体系结构。
(3)QEMU用户模式仿真具有以下功能:
①通用Linux系统调用转换器,包括大部分ioctls。
②使用本机CPU clone的仿真为线程使用Linux调度程序。
③通过将主机信号重新映射到目标信号来实现精确信号处理 。(4) QEMU全系统仿真具有以下特点:
①QEMU使用完整的软件MMU来实现最大的便携性。
②QEMU可以选择使用内核加速器,如kvm。加速器本地执行大部分客户代码,同时继续模拟机器的其余部分。
③可以仿真各种硬件设备,并且在某些情况下,客户机操作系统可以透明地使用主机设备(例如串行和并行端口,USB,驱动器)。主机设备传递可用于与外部物理外围设备(例如网络摄像头,调制解调器或磁带驱动器)交谈。
④对称多处理(SMP)支持。目前,内核加速器需要使用多个主机CPU进行仿真

KVM和Qemu的关系

1、KVM和Qemu的关系
在这里插入图片描述
Qemu是一个独立的虚拟化解决方案,通过intel-VT 或AMD SVM实现全虚拟化,安装qemu的系统,可以直接模拟出另一个完全不同的系统环境。QEMU本身可以不依赖于KVM,但是如果有KVM的存在并且硬件(处理器)支持比如Intel VT功能,那么QEMU在对处理器虚拟化这一块可以利用KVM提供的功能来提升性能。
KVM是集成到Linux内核的Hypervisor,是X86架构且硬件支持虚拟化技术(Intel-VT或AMD-V)的Linux的全虚拟化解决方案。它是Linux的一个很小的模块,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等。准确来说,KVM是Linux kernel的一个模块。

Qemu工具介绍

1、qemu—img
qemu-img是QEMU的磁盘管理工具,在qemu-kvm源码编译后就会默认编译好qemu-img这个二进制文件。qemu-img也是QEMU/KVM使用过程中一个比较重要的工具。
①check [-f fmt] filename
对磁盘镜像文件进行一致性检查,查找镜像文件中的错误,目前仅支持对“qcow2”、“qed”、“vdi”格式文件的检查。
②create [-f fmt] [-o options] filename [size]
创建一个格式为fmt大小为size文件名为filename的镜像文件。
③commit [-f fmt] [-t cache] filename
提交filename文件中的更改到后端支持镜像文件(创建时通过backing_file指定的)中去。
④convert [-c] [-p] [-f fmt] [-t cache] [-O output_fmt] [-o options] [-s snapshot_name] [-S sparse_size] filename [filename2 […]] output_filename
将fmt格式的filename镜像文件根据options选项转换为格式为output_fmt的名为output_filename的镜像文件。
⑤info [-f fmt] filename
展示filename镜像文件的信息。
⑥snapshot [-l | -a snapshot | -c snapshot | -d snapshot] filename
“-l” 选项是查询并列出镜像文件中的所有快照,“-a snapshot”是让镜像文件使用某个快照,“-c snapshot”是创建一个快照,“-d”是删除一个快照。
⑦rebase [-f fmt] [-t cache] [-p] [-u] -b backing_file [-F backing_fmt] filename
改变镜 像文件的后端镜像文件,只有qcow2和qed格式支持rebase命令。
⑧rebase [-f fmt] [-t cache] [-p] [-u] -b backing_file [-F backing_fmt] filename
改变镜像文件的后端镜像文件,只有qcow2和qed格式支持rebase命令。
2、qemu—KVM
此命令用于创建虚拟机,其使用格式为“qemu-kvm [options] [disk_image]”,其选项非常多,大致可分为如下几类:
标准选项;
USB选项;
显示选项;
i386平台专用选项;
网络选项;
字符设备选项;
蓝牙相关选项;
Linux系统引导专用选项;
调试/专家模式选项;
PowerPC专用选项;
Sparc32专用选项。
(1)qemu-kvm的标准选项
该选项主要涉及指定主机类型、CPU模式、NUMA、软驱设备、光驱设备及硬件设备等。
(2)qemu-kvm的显示选项
该选项主要用来配置虚拟机的显示状态。
(3)网络属性相关选项:
该选项用来配置虚拟机的网络信息。
3、qemu—ga
qga是一个运行在虚拟机内部的普通应用程序(可执行文件名称默认为qemu-ga,服务名称默认为qemu-guest-agent),其目的是实现一种宿主机和虚拟机进行交互的方式,这种方式不依赖于网络,而是依赖于virtio-serial(默认首选方式)或者isa-serial,而QEMU则提供了串口设备的模拟及数据交换的通道,最终呈现出来的是一个串口设备(虚拟机内部)和一个unix socket文件(宿主机上)。
qga通过读写串口设备与宿主机上的socket通道进行交互,宿主机上可以使用普通的unix socket读写方式对socket文件进行读写,最终实现与qga的交互,交互的协议与qmp(QEMU Monitor Protocol)相同(简单来说就是使用JSON格式进行数据交换),串口设备的速率通常都较低,所以比较适合小数据量的交换。
4、qemu—io
这是一个执行 Qemu I/O 操作的命令行工具,可以对qemu-img创建的镜像进行I/O测试,其帮助文档为,使用格式为qemu-io [-h] [-V] [-rsnm] [-c cmd] … [file],下面是常用的选项:
(1)-c, --cmd:执行指令;
(2)-r, --read-only:设置出口为只读模式;
(3)-s, --snapshot:使用快照文件进行测试;
(4)-n, --nocache:禁用主机缓存;
(5)-k, --native-aio:使用内核AIO实现(仅在Linux上);
(6)-t, --cache=MODE:对image使用指定的缓存模式。
5、qemu-nbd
qemu-nbd在有的系统上叫kvm-nbd,qemu-nbd-xen等。基本上都一样。用qemu-nbd实现mount虚拟硬盘到Host上的功能。
网络块设备: Network Block Device。可以将一个远程主机的磁盘空间,当作一个块设备来使用,就像一块硬盘一样。使用它,可以很方便的将另一台服务器的硬盘空间增加到本地服务器上。
NBD与NFS有所不同,NFS只是提供一个挂载点供客户端使用,客户端无法改变这个挂载点的分区格式。而NBD提供的是一个块设备,客户端可以把这个块设备格式化成各种类型的分区,更便于用户的使用。

Qemu支持的磁盘格式

1、qemu-img支持非常多种的文件格式,我们可以通过“qemu-img --help”查看帮助文档得到,它支持二十多种格式:vvfat、vpc、vmdk、vhdx、vdi、ssh、sheepdog、rbd、raw、host_cdrom、host_floppy、host_device、file qed、qcow2、qcow、parallels、nbd、iscsi、gluster、 dmg、tftp、ftps、ftp、https、http、cloop、bochs、blkverify、blkdebug。
(1)
raw
raw格式是简单的二进制镜像文件,一次性会把分配的磁盘空间占用。
(2) host_device
在需要将镜像转化到不支持空洞的磁盘设备时需要用这种格式来代替raw格式。
(3)qcow2
qcow2是QEMU目前推荐的镜像格式,它是功能最多的格式。
(4)qcow
较旧的QEMU镜像格式,现在已经很少使用了,一般用于兼容比较老版本的QEMU。它支持backing_file(后端镜像)和encryption(加密)两个选项。
(5)cow
copy-on-write format,写时复制格式。曾经qemu的写时拷贝的镜像格式,目前由于历史遗留原因不支持窗口模式,后来被qcow格式所取代。
(6)vdi
兼容Oracle(Sun)VirtualBox1.1的镜像文件格式(Virtual Disk Image)。vmdk
(7)vmdk
VMDK(VMWare Virtual Machine Disk Format)是虚拟机VMware创建的虚拟硬盘格式,文件存在于VMware文件系统中,被称为VMFS(虚拟机文件系统)。
(8)vpc
兼容Microsoft的Virtual PC的镜像文件格式(Virtual Hard Disk format)。
(9)sheepdog
Sheepdog项目是由日本的NTT实验室发起的,为QEMU/KVM做的一个开源的分布式存储系统,为KVM虚拟化提供块存储。
(10)cloop
压缩的loop格式,主要用于可直接引导优盘或者光盘的一种镜像格式。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值