最常用的虚拟机的管理,最常用的虚拟化技术有哪些

  

  Labs 导读   

  

  在上一篇文章《存储虚拟化概述》中,我们提到了存储虚拟化和软件定义存储SDS的区别在于,它的控制平面数据和存储平面数据是紧密耦合的。因此,各厂商的存储虚拟化解决方案都是一种“私有”解决方案,不仅不同厂商之间不兼容,甚至通常不同产品之间也不兼容。因此,考虑到电信云NFV的应用场景和设备厂商分布,我们主要讨论华为的虚拟化存储解决方案和华为的分布式存储融合存储。   

  

     

  

  一、华为存储虚拟化的存储模型华为对存储虚拟化的定义:存储虚拟化是将存储设备抽象为数据存储,虚拟机在数据存储中作为一组文件存储在自己的目录中。和数据存储是一个逻辑容器,类似于一个文件系统,它隐藏了每个存储设备的特性,提供了一个统一的模型来存储虚拟机文件。同时,存储虚拟化技术可以更好地管理虚拟基础设施的存储资源,大大提高存储资源的利用率和灵活性,提高应用程序的正常运行时间。   

  

     

  

  能够封装为数据存储的存储单元包括:   

  

  LUN按SAN存储划分(包括iSCSI或光纤通道SAN存储);NAS存储上文件系统的共享目录;华为分布式存储融合存储上的存储池;主机的本地硬盘和主机的本地存储盘;数据存储可支持文件系统格式:   

  

  华为的私有虚拟镜像管理系统(VIMS)是一个针对存储虚拟机而优化的高性能文件系统。主机可以在任何基于SCSI的本地或网络存储设备上部署虚拟镜像管理系统数据存储,包括光纤通道、以太网光纤通道和iSCSI SAN设备。网络文件系统(NFS),NAS设备上的文件系统。Fusion支持NFS V3协议,可以访问位于NFS服务器上的NFS磁盘,挂载磁盘,满足任何存储需求。EXT4,FusionSphere支持服务器的本地磁盘虚拟化。从上面华为存储虚拟化的定义可以看出,主要涉及三个概念:存储资源,存储设备数据存储.华为这些基本概念的定义都很精彩。从我个人的理解来说,他们是一个反人类的定义,如下图。按照正常人的理解,存储设备指的是真实的物理存储,存储资源指的是抽象的逻辑存储,但它的定义正好相反。   

  

     

  

  在华为的存储虚拟化模型中,存储概念的定义如下:   

  

  存储资源:是指物理存储设备,如IPSAN、Advanced SAN、NAS等。其中高级SAN不支持虚拟化。一个存储资源可以包含多个物理存储。主机访问存储资源时,先需要添加存储资源,再选定主机关联存储资源。如下:   

  

     

  

  指管理单元中的存储设备:存储资源,包括本地磁盘、LUN、高级SAN存储池、融合存储存储池、NAS共享目录等。多个存储设备可以属于一个存储资源,根据不同的制造商,存储设备必须被添加为数据存储才能使用。LUN在使用前需要在存储侧或者交换机侧进行配置,的配置会有所不同。具体请参考相关厂商的技术文件。存储设备需要通过主机探测的方式进行扫描来发现:主机需要链接存储资源,然后才能扫描存储资源中包含的存储设备,并且每个主机都可以发现自己的存储设备以及共享的存储设备。如下所示:   

  

     

  

  数据存储:在存储设备上创建的逻辑管理单元需要在指定的存储设备上创建,一个存储设备只能创建一个数据存储,数据存储和存储设备一一对应,且数据存储大小依赖于存储设备的大小。数据存储与主机关联,为主机提供资源。数据存储可以与多个主机相关联,并且一个主机也可以使用多个数据存储。数据存储承载特定的虚拟机服务,例如创建磁盘。SAN存储上的LUN也可以被虚拟机直接用作数据存储,而不是创建虚拟磁盘。这个过程被称为裸设备映射,它目前只支持带有某些操作系统的虚拟机。   

用于搭建数据库服务器等对磁盘空间要求较大的场景。如果使用裸设备部署应用集群服务(如 Oracle RAC等),建议不要使用虚拟机的快照、快照恢复功能,快照恢复后,会导致应用集群服务异常。数据存储映射的示意图如下:

  

  

比如:裸设备映射方式可以将一个SAN设备【存储资源】分配的一个LUN【存储设备】接入到FusionCompute环境成为一个数据存储【数据存储】,可以在该数据存储上创建运行业务的虚拟机,对外提供服务。

  

在华为的FusionCompute中配置数据存储时,首先需要完成存储接口的设置,然后可以通过以下流程接入和使用存储资源,如下图所示:

  

  

在FusionCompute界面上首先添加存储资源(如:IPSAN等等),并在存储设备上进行主机启动器的配置。

  

主机关联存储资源后,执行“扫描存储设备”动作,将IPSAN上的LUN扫描到主机。

  

主机选择存储设备,执行“添加数据存储”动作,并选择“虚拟化”,存储配置完成。

  

随后,可以在数据存储上可以进行创建卷、创建快照等行为。

  

所谓存储接口,是指主机与存储设备连接所用的端口。可以将主机上的一个物理网卡,或者多个物理网卡的绑定设置为存储接口。当使用iSCSI存储时,一般使用主机上两个物理网卡与存储设备多个存储网卡相连,组成存储多路径,此时不需要绑定主机存储平面的物理网卡;当使用NAS存储时,为保证可靠性,建议将主机的存储平面网卡以主备模式进行绑定设置为存储接口与NAS设备连接。

  

同时,在存储接口设置还有个存储多路径的概念,主要指存储设备通过多条链路与主机一个或多个网卡连接,通过存储设备的控制器控制数据流的路径,实现数据流的负荷分担,保证存储设备与主机连接的可靠性。一般情况下,iSCSI存储和光纤通道存储(如IP SAN存储设备、FC SAN存储设备、OceanStor 18000系列存储)均支持存储多路径。而且在华为的解决方案中,存储多路径包含华为多路径通用多路径两种模式,通用多路径下虚拟机采用裸设备映射的磁盘时,不支持Windows Server操作系统的虚拟机搭建MSCS集群。

  


  

二、华为虚拟化存储的链接2.1 FC-SAN

  

存储区域网络(Storage Area Networks,SAN)是一个用在服务器和存储资源之间的、专用的、高性能的网络体系。SAN是独立于LAN的服务器后端存储专用网络。SAN采用可扩展的网络拓扑结构连接服务器和存储设备,每个存储设备不隶属于任何一台服务器,所有的存储设备都可以在全部的网络服务器之间作为对等资源共享。SAN主要利用Fibre Channel protocol(光纤通道协议),通过FC交换机建立起与服务器和存储设备之间的直接连接,因此我们通常也称这种利用FC连接建立起来的SAN为FC-SAN。如下图所示,FC特别适合这项应用,原因在于一方面它可以传输大块数据,另一方面它能够实现较远距离传输。SAN主要应用在对于性能、冗余度和数据的可获得性都有很高的要求高端、企业级存储应用上。

  

  

SAN架构中常用的三种协议:

  

FC 协议 (Fibre Channel) ,使用该种协议的SAN架构,称为FC-SAN。iSCSI 协议 (Internet SCSI),使用该种协议的SAN架构,称为IP-SAN。FCoE 协议(Fibre Channel over Ethernet),FC 协议通常和iSCSI协议用于现代的SAN架构中,而FCoE协议在服务器需要融合SAN和LAN业务时,也是用得越来越多。2.2 IP-SAN

  

以TCP/IP协议为底层传输协议,采用以太网作为承载介质构建起来的存储区域网络架构。

  

实现IP-SAN的典型协议是iSCSI,它定义了SCSI指令集在IP中传输的封装方式。IP-SAN把SCSI指令集封装在了TCP/IP上。类似于不管我们是选择哪家快递公司,最终都是把我们想要发送的东西发送至目的地,都是由我们发起寄送请求,快递公司进行响应,差别只在于快递公司不同而已。iSCSI是全新建立在TCP/IP和SCSI指令集的基础上的标准协议,所以其开放性和扩展性更好。如下图所示,IP-SAN具备很好的扩展性、灵活的互通性,并能够突破传输距离的限制,具有明显的成本优势和管理维护容易等特点。

  

  

IP-SAN典型组网方式有:

  

直连:主机与存储之间直接通过以太网卡、TOE卡或iSCSI HBA卡连接,这种组网方式简单、经济,但较多的主机分享存储资源比较困难;单交换:主机与存储之间由一台以太网交换机,同时主机安装以太网卡或TOE卡或iSCSI HBA卡实现连接。这种组网结构使多台主机能共同分享同一台存储设备,扩展性强,但交换机处是一个故障关注点;双交换:同一台主机到存储阵列端可由多条路径连接,扩展性强,避免了在以太网交换机处形成单点故障。IP-SAN是基于IP网络来实现数据块传输的网络存储形态,与传统FC SAN的最大区别在于传输协议和传输介质的不同。目前常见的IP-SAN协议有iSCSI、FCIP、iFCP等,其中iSCSI是发展最快的协议标准,大多时候我们所说的IP-SAN就是指基于iSCSI实现的SAN。

  

2.3 NAS

  

网络附加存储,是一种将分布、独立的数据进行整合,集中化管理,以便于对不同主机和应用服务器进行访问的技术。如下图所示,NAS和SAN最大的区别就在于NAS有文件操作和管理系统,而SAN却没有这样的系统功能,其功能仅仅停留在文件管理的下一层,即数据管理。

  

  

SAN和NAS并不是相互冲突的,是可以共存于一个系统网络中的,但NAS通过一个公共的接口实现空间的管理和资源共享,SAN仅仅是为服务器存储数据提供一个专门的快速后方存储通道。NAS文件共享功能有点儿类似FTP文件服务,但是两者是完全不同的。FTP只能将文件传输到本地的目录之后才能执行,而网络文件系统NAS可以允许直接访问源端的文件,不需要将数据复制到本地再访问。

  


  

三、华为存储虚拟化的原理存储虚拟化技术可以将不同存储设备进行格式化,屏蔽存储设备的能力、接口协议等差异性,将各种存储资源转化为统一管理的数据存储资源,可以用来存储虚拟机磁盘、虚拟机配置信息、快照等信息,使得用户对存储的管理更加同质化。华为的虚拟化存储栈示意图如下所示,其实现存储虚拟化的关键的就是中间的文件系统那一层。

  

华为虚拟化存储栈中文件系统作用就是提供文件操作接口,屏蔽底层存储设备的差异,并且为虚拟化卷文件提供存放空间。当前FusionCompute所支持的文件系统格式有:

  

VIMS、EXT4、NFS。它们在应用场景,虚拟化特性支持方面的差异如下:

  

  

其中,NFS不支持创建文件系统是因为NFS本身就具备文件系统功能,而且NFS是以共享目录的方式提供数据存储,如果采用延迟置零卷的分配方式,容易造成数据丢失。EXT4主要用于服务器本地硬盘,如果要支持共享,需要在存储I/O通道上通过锁机制来避免竞争,目前方案不支持。上述的三个文件系统中,VIMS是华为自研的文件系统,其余两个都是标准文件系统类型。

  

VIMS (Virtual Image Manage System)虚拟镜像管理系统,属于华为自研的一种文件系统,是一种高性能集群文件系统。在华为存储虚拟化解决方案中,它是实现是自动精简置备磁盘、快照、存储迁移等高级特性的技术基础。如下图所示,VIMS使虚拟化技术的应用超出了单个存储系统的限制,其设计、构建和优化针对虚拟服务器环境,可让多个虚拟机共同访问一个整合的集群式存储池,从而显著提高了资源利用率。

  

  

VIMS兼容FC SAN、IPSAN、NAS、本地磁盘,支持建立固定空间磁盘、动态空间磁盘、差分磁盘等。主要应用于需要存储迁移、快照、链接克隆等高级存储特性虚拟机。

  

四、虚拟磁盘的类型一个虚拟机在虚拟化计算节点文件系统上表现为一个或多个虚拟磁盘文件,也就是说,一个虚拟机磁盘体现为一个或多个虚拟磁盘文件。在华为存储虚拟化解决方案中,虚拟磁盘的格式为VHD镜像格式。它是FusionCompute实现精简卷、快照等功能的基本载体,实现了FusionCompute虚拟机镜像数据的基本储存功能。如下所示,虚拟机的一个虚拟磁盘对应一个VHD文件。

  

  

在华为存储虚拟化解决方案中,虚拟机的虚拟磁盘类型分为三种:固定空间磁盘、动态空间磁盘和差分磁盘。

  

4.1 固定空间磁盘

  

创建时需要将磁盘文件对应的存储块空间全部进行初始化成”0”,创建速度慢,但是IO性能最佳,适用于对IOPS要求较高的场景。如下图所示,磁盘大小恒定,创建后使用空间和预留空间相等。

  

  

数据区主要用来存放虚拟机业务数据,未写满的时候内部空间包含大量0,数据冗余度很高。最后一个扇区用来存放磁盘的元数据,也就是虚拟磁盘的大小、块的个数,位于物理存储的位置等数据,固定空间的磁盘主要应用于系统中的普通卷。

  

4.2 动态空间磁盘

  

创建时只需写头和结束块,创建速度块,IO性能较差,适用于应用于精简磁盘和普通延迟置零磁盘。如下图所示,磁盘大小会随着用户写入数据而增长,但不会随着用户删除数据而缩减,只能通过磁盘空间回收来手动缩减应用在系统中的精简磁盘空间。

  

  

前面和后面共m+1个扇区用来存放虚拟磁盘的元数据信息,其余扇区用来存放虚拟机业务数据。当用来建立精简磁盘时,首次创建只建立头和尾共m+1扇区的元数据区,后续随着虚拟机业务数据的增加逐渐增加数据区的大小,因此在一些IOPS要求不高的场景可以节省物理存储空间。动态空间磁盘通过工具可以和固定空间磁盘互相转换,例如,可以用一个精简磁盘的模板部署一个普通磁盘的虚拟机。

  

4.3 差分磁盘

  

差分磁盘的结构和动态磁盘一模一样,只是文件头中会记录它的父文件路径,因此差分卷不能独立存在,必须能够访问到父文件才能正常工作,如下图所示,主要用于链接克隆场景。

  

  

前m个扇区和最后一个扇区存放虚拟磁盘自身的元数据信息,从m+1到k扇区之间存储父文件的元数据信息,数据区存放相对于父文件数据的增量业务数据,所以被称为差分磁盘。差分卷也可以成为父文件,在此场景下,差分卷不仅集成自身父文件的数据,还要向其子卷提供数据,类似祖孙三代中父亲的角色。

  

差分磁盘的特性和动态盘类似,但是很多业务有限制。差分磁盘以块为单位记录相对于父文件的修改。配合快照、非持久化磁盘、链接克隆等功能被使用,起到保护源盘不被修改,并可以跟踪虚拟机磁盘差异数据的作用。

  


  

五、华为存储虚拟化特性华为存储虚拟化提供基于磁盘的RAID 2.0+、基于虚拟磁盘的精简置备和空间回收、快照、连接克隆、存储热迁移等特性,适用于各类不同业务场景下的虚拟机。

  

5.1 RAID 2.0+

  

我们在了解华为RAID2.0+技术原理之前,可以先了解一下我们的传统RAID技术。我们传统的RAID技术是一种盘级虚拟化的技术,有RAID0 RAID1 RAID5 RAID10等常见的RAID技术,如下图所示,是一个RAID 50的组合。

  

  

传统RAID的状态主要有几种:创建RAID、RAID组正常工作、RAID组降级、RAID组失效。传统RAID技术热备方式主要是通过固定的盘来进行数据的恢复。在传统的RAID技术中,是将几块小容量廉价的磁盘组合成一个大的逻辑磁盘给大型机使用。后来硬盘的容量不断增大,组建RAID的初衷不再是构建一个大容量的磁盘,而是利用RAID技术实现数据的可靠性和安全性,以及提升存储性能。如下图所示,由于单个容量硬盘都已经较大了,数据硬盘组建的RAID容量更大,然后再把RAID划分成一个一个的LUN映射给服务器使用。

  

  

随着硬盘技术的发展,单块硬盘的容量已经达到数T,传统RAID技术在重建的过程中需要的时间越来越长,也增加了在重构过程中其它硬盘再坏掉对数据丢失造成的风险,为了解决这一问题,块虚拟化技术应运而生,将以前以单块硬盘为成员盘的RAID技术再细化,将硬盘划分成若干的小块,再以这些小块为成员盘的方式构建RAID,也就是现在业界所说的RAID2.0+技术。

  

  

RAID2.0+是一种块级的虚拟化技术,如下图所示。

  

  

它由不同类型的硬盘组成硬盘域,把硬盘域内每个硬盘切分为固定64MB的块(CK),硬盘域内同种类型的硬盘被划分为一个个的Disk Group(DG),从同一个DG上随机选择多个硬盘,每个硬盘选取CK按照RAID算法组成Chunk Group(CKG),CKG被划分为固定大小的Extent,Thick LUN以Extent为单位映射到LUN(上图上半部分),也可以采用Grain在Extent的基础上进行更细粒度的划分,Thin LUN以Grain 为单位映射到LUN(上图下半部分)。

  

为了进一步说明RAID 2.0+各类逻辑概念以及相互之间的关系,通过下图RAID 2.0+的软件逻辑架构进行说明。

  

  

Disk Domain(磁盘域):一个硬盘域上可以创建多个存储池(Storage Pool)一个硬盘域的硬盘可以选择SSD、SAS、NL-SAS中的一种或者多种,不同硬盘域之间是完全隔离的,包括故障域、性能和存储资源等。 Storage Pool(存储池)& Tier:一个存储池基于指定的一个硬盘域创建,可以从该硬盘域上动态的分配Chunk(CK)资源,并按照每个存储层级(Tier)的“RAID策略”组成Chunk Group(CKG)向应用提供具有RAID保护的存储资源。Disk Group(DG):由硬盘域内相同类型的多个硬盘组成的集合,硬盘类型包括SSD、SAS和NL-SAS三种。LD(逻辑磁盘):是被存储系统所管理的硬盘,和物理硬盘一一对应。Chunk(CK):是存储池内的硬盘空间切分成若干固定大小的物理空间,每块物理空间的大小为64MB,是组成RAID的基本单位。Chunk Group(CKG):是由来自于同一个DG内不同硬盘的CK按照RAID算法组成的逻辑存储单元,是存储池从硬盘域上分配资源的最小单位。Extent:是在CKG基础上划分的固定大小的逻辑存储空间,大小可调,是热点数据统计和迁移的最小单元(数据迁移粒度),也是存储池中申请空间、释放空间的最小单位。Grain:在Thin LUN模式下,Extent按照固定大小被进一步划分为更细粒度的块,这些块称之为Grain。Volume & LUN:Volume即卷,是存储系统内部管理对象;LUN是可以直接映射给主机读写的存储单元,是Volume对象的对外体现。RAID2.0+ 优秀性能主要体现在负载均衡优、数据重构时间短和提升单卷(LUN)的读写性能等几个方面。

  

1)RAID2.0+的负载均衡更优,如下图所示,数据在存储池中硬盘上的自动均衡分布,避免了硬盘的冷热不均,从而降低了存储系统整体的故障率。

  

  

RAID 2.0+的负载均衡方式主要有两种:第一种是根据crush算法,在创建CKG的时候选择CK,保证硬盘被选中的概率与硬盘剩余容量成正比;第二种就是smartmotion,主要用于数据迁移发生在DG层次。当有新盘加入硬盘域的时候,会触发smartmotion,查出待均衡的原CKG,然后给该CKG分配一个目标CKG,该CKG包含来源于新盘的CK,如果原CKG和目标CKG中对应位置的CK落在不同的盘,就会触发实现均衡。那么有数据的原CKG迁移到目标CKG中,没有数据的只需要改变CKG的映射关系即可。

  

2)RAID2.0+的数据重构时间短,如下图所示,相较传统RAID重构数据流串行写入单一热备盘的方式,RAID2.0+采用多对多的重构,重构数据流并行写入多块磁盘,极大缩短数据重构时间,1TB数据仅需30分钟。

  

  

RAID2.0+的数据重构方式主要有三种:第一种是全盘重构,就是当一块盘故障或者被拔出之后进行数据恢复;第二种是局部重构,就是硬盘上出现坏块,通过RAID算法将上面的数据重构到热备CK中;第三种是恢复重构,就是在某块硬盘正常访问期间的写操作无法完成,只能处于降级写状态,会在系统上记录相关的日志并且更新校验值,待硬盘恢复后,将故障期间的数据根据RAID算法计算之后更新数据。

  

3)提升单卷(LUN)的读写性能,如下图所示,RAID2.0+的热备采用的是空间的形式,每个盘上面的CK都可以作为磁盘热点,这种条块化的分割极大提升单卷(LUN)的读写IOPS。

  

  

传统存储的RAID通常是以单个磁盘为粒度来建立RAID,RAID被限制在有限的几个磁盘上,所以当主机对一个较小的卷进行密集访问时,只能访问到有限的几个磁盘,这就造成磁盘访问瓶颈,导致磁盘热点。而RAID2.0+技术基于Chunk而非物理磁盘构成RAID。一个物理磁盘上的不同CK可以用于构成不同RAID类型的卷。对于HVS阵列而言,即使是很小的卷也可以通过CK的方式分布到很多磁盘上。宽条带化技术使得小的卷不再需要额外的大容量即可获得足够的高性能,且避免了磁盘热点。物理磁盘上剩余的CK还可以用于其它的卷。

  

在使用RAID 2.0+ 技术时,首先创建硬盘域,指定该硬盘域使用的硬盘类型和每种类型硬盘的数量;另外还要指定针对不同类型的硬盘,使用其上的CK创建CKG时采取的RAID算法,不同类型的硬盘可以使用不同的RAID算法,比如针对故障率高的SATA硬盘采用可靠性更高的RAID 6算法等。接下来创建存储池,一个存储池是基于一个硬盘域的,创建存储池时可以设置该存储池所使用的Extent大小,设置后不能更改。然后在存储池内创建LUN,只需要指定LUN的容量大小即可,系统会根据事先定义的规则(数据分层、自动迁移等)选择适当的Extent完成创建。最后将创建好的LUN映射给需要的主机,主机在使用LUN时RAID 2.0+ 技术就会在后台发挥作用。

  

由此可以看出,当一块硬盘损坏时,只会影响该硬盘域上的存储池中的CKG,对于其它硬盘域上的CKG无影响,因此可以实现故障隔离。

  

5.2 精简磁盘和空间回收

  

华为存储虚拟化支持创建精简磁盘,可以随着用户使用而自动分配空间。但是,后续膨胀的精简磁盘不会随着用户删除数据而缩小,必须使用空间回收工具可以将用户删除的数据空间释放到数据存储。如下图所示,创建虚拟机可以选择精简磁盘模式,提高磁盘使用率,增加虚拟机部署密度。

  

  

精简磁盘可应用于局点运行初期,用户磁盘使用率低的情况。能够降低初始存储投资及维护成本,存储设备只保存有效数据,不保存预留空间,可以提高存储资源利用率。

  

在FusionCompute中,选择“存储池”。进入“存储池”页面。在左侧导航树,选择“站点名称 > 数据存储名称”。显示“入门”页签。单击“磁盘”。显示磁盘信息列表。单击“创建磁盘”。弹出“创建磁盘”对话框,如图所示。

  

  

5.2.1 配置模式

  

普通:根据磁盘容量为磁盘分配空间,在创建过程中会将物理设备上保留的数据置零。这种格式的磁盘性能要优于其他两种磁盘格式,但创建这种格式的磁盘所需的时间可能会比创建其他类型的磁盘长,且预留空间和实际占用空间相等,建议系统盘使用该模式。精简:该模式下,系统首次仅分配磁盘容量配置值的部分容量,后续根据使用情况,逐步进行分配,直到分配总量达到磁盘容量配置值为止。数据存储类型为“FusionStorage”或“本地内存盘”时,只支持该模式;数据存储类型为“本地硬盘”或“SAN存储”时,不支持该模式。普通延迟置零:根据磁盘容量为磁盘分配空间,创建时不会擦除物理设备上保留的任何数据,但后续从虚拟机首次执行写操作时会按需要将其置零。创建速度比“普通”模式快;IO性能介于“普通”和“精简”两种模式之间。只有数据存储类型为“虚拟化本地硬盘”“虚拟化SAN存储”或版本号为V3的“Advanced SAN存储”时,支持该模式。5.2.2 磁盘模式

  

从属:快照中包含该从属磁盘,默认选项。独立-持久:更改将立即并永久写入磁盘,持久磁盘不受快照影响。即对虚拟机创建快照时,不对该磁盘的数据进行快照。使用快照还原虚拟机时,不对该磁盘的数据进行还原。独立-非持久:关闭电源或恢复快照后,丢弃对该磁盘的更改。5.3 快照和快照链

  

虚拟机快照记录了虚拟机在某一时间点的内容和状态,通过恢复虚拟机快照使虚拟机多次快速恢复到这一时间点,比如我们初次手动安装OpenStack服务时,每安装一个服务都会创建一个快照,这样当后续出现错误且无法恢复时,可以通过前面快照恢复这一步安装前的状态,而不用从头再来。虚拟机快照包含磁盘内容、虚拟机配置信息、内存数据,多次快照之间保存差量数据,节约存储空间。主要适用于虚拟机用户在执行一些重大、高危操作前,例如系统补丁,升级,破坏性测试前执行快照,可以用于故障时的快速还原。

  

虚拟机快照的创建、恢复和删除都是由用户手动触发的,系统并不会自动执行。如下图所示,创建快照时会生成一个新的差分卷,创建的方式一般包括COW(写时拷贝)、ROW(写时重定向)和WA(随机写),一般都是写时重定向ROW方式创建。

  

  

当创建快照采用了ROW方式时,快照虚拟机会挂载这个差分卷,快照创建后的写操作会进行重定向,所有的写IO都被重定向到新卷中,所有旧数据均保留在只读的源卷中。

  

当用户对一个虚拟机进行多次快照操作,可以形成快照链,如下图所示,一个虚拟机生成快照的数量不能超过32个,也是快照链的最大长度。

  

  

SNAP1是基于源卷的第一次差分卷,SNAP2是基于SNAP2的第二次差分卷,且虚拟机源卷始终挂载在快照链的最末端。用户可以将虚拟机从当前状态恢复到快照链中的某个状态,且快照链中任意一个快照都可以删除而不影响其余快照。

  

5.4 链接克隆

  

链接克隆在桌面云解决方案里面有重要的地位,在电信云NFV领域目前暂时没有应用,因此只需要了解链接克隆特性以及与快照的区别即可。

  

链接克隆技术是一种通过将源卷和差分卷组合映射为一个链接克隆卷,提供给虚拟机使用的技术。如下图所示,一个链接克隆模板可以创建多个链接克隆差分卷,对应创建多个链接克隆虚拟机。

  

  

上图中黄色部分为虚拟机源卷,VM1和VM2两个虚拟机是基于源卷+各自差分卷创建出来的链接克隆虚拟机。链接克隆虚拟机新创建的差分卷初始占用空间很小,随着虚拟机的使用,空间会逐渐膨胀。

  

与快照相同的是,链接克隆虚拟机的写IO操作也只会更新到差分卷中,且创建数量和创建时间不限。不同的是,链接克隆虚拟机可以和源虚拟机同时运行,且能同时处于同一网络,但是快照与源虚拟机不能同时运行,自然也就不能处于同一网路。而且,快照主要用于记录源虚拟机某一时间的状态,链接克隆虚拟机主要用于同质业务虚拟机多拷贝分发。虚拟机快照可以在源虚拟机运行时创建,但是链接克隆虚拟机必须在源虚拟机关闭时才能创建。

  

5.5 存储热迁移

  

华为存储虚拟化解决方案支持将虚拟机的磁盘从一个数据存储迁移到另一个数据存储。当需要对数据存储空间进行减容时,这时我们需要将源数据存储上的虚拟机磁盘进行迁移,如下如所示,可以将虚拟机的所有磁盘整体迁移,也可以单个磁盘分别迁移。

  

  

在迁移虚拟机虚拟磁盘文件时,虚拟机的快照可以一起迁移(但只支持关机状态下冷迁移),且无论虚拟机是开启或者关闭状态,都可以迁移。当虚拟机为关机状态时,这种数据存储间的迁移称为冷迁移,数据存储冷迁移前后性能对比如下:

  

  

当虚拟机为开机状态时,这种迁移就称为存储热迁移。数据存储冷迁移前后性能对比如下:

  

  

当发生存储热迁移时,同时需迁移虚拟机磁盘镜像和系统内存状态,也就说存储热迁移一般和虚拟机热迁移同步进行。存储热迁移的示意图如下所示:

  

  

在存储热迁移场景下,华为的解决方案并不完美,仍然受以下条件限制:不支持迁移已挂载为“共享”类型的磁盘和链接克隆虚拟机的磁盘。当虚拟机为“运行中”时,不支持非持久化磁盘、带快照虚拟机磁盘和开启iCache功能虚拟机磁盘的迁移,可将虚拟机关闭后迁移;当虚拟机为“已停止”时,如果目标数据存储为块存储,不支持非持久化磁盘、带快照虚拟机磁盘的迁移。

  

根据上图,华为存储虚拟化解决方案中存储热迁移的步骤如下:

  

Step1:在目的存储上创建一个与源相同的空镜像文件。

  

Step2:将目的存储的镜像文件设置为源镜像文件的mirror,使虚拟机的I/O写也能落盘在目的存储上,保证了脏块数据的同步。

  

Step3:通过迭代迁移的技术,将源镜像的数据迁移到目的镜像中,保证了基线数据的同步。

  

Step4:在基线数据同步完成后,短暂的时间内暂停虚拟机的I/O请求,将虚拟机的存储文件从源镜像切换到目的镜像上,这样就完成了存储的迁移。

  

而且,在华为存储虚拟化解决方案中,可以通过界面设置3种不同热迁移速率,应对不同的业务场景:

  

适中 (迁移速率不高于20M/s,用于存储IO压力较大场景,缓解迁移操作对用户虚拟机的影响)快速 (迁移速率不高于30M/s,用于存储IO压力正常场景,在保证迁移速度的同时可以适当减少对用户虚拟机的影响)不限 (迁移速率不高于1024M/s,用于用户虚拟机业务优先级很低的场景)

相关文章