Find Communities by: Category | Product

工程师手记

1 Post authored by: Kevin

此篇博文,记录自己学习存储虚拟化的笔记和心得。独立成文,保持更新。交流请入内。

先从入门开始。。。

1.png

VPLEX是存储虚拟化平台,实现跨异构存储整合,包括EMC和非EMC块存储阵列。 VPLEX安装在网络上,在主机和存储之间,并能在数据中心之间延长数据存储的距离,多亏了一项EMC的创新——accessanywhere。虽然VPLEX家族有多个系列产品,它们都具有几个共同的特点,包括在集群中和集群之间的跨引擎的高速缓存一致性,N +1缩放性能,N-1的弹性,以及一个可以支持全局化应用的架构。


VPLEX结合向外扩展(scale-out)的集群和实现了分布式高速缓存一致性的先进的数据缓存来提供更好的存储管理方法。 VPLEX建立成集群,每个集群可以由1,2或4个冗余的引擎组成。每个集群支持8000个虚拟卷。您添加引擎到VPLEX集群的原因是提升性能,更多的内存,更多的缓存,更多的端口,和进一步的弹性。当您使用VPLEX Metro或VPLEX Geo连接2个集群实现分布式联合,这2个集群提供了2个分别包含8000个卷的池,总共16000个卷。

 

1.png

 

VPLEX家族包含3个产品:

VPLEX Local为单个数据中心打造。

VPLEX Metro可让您在可同步的距离内连接2 个VPLEX集群,在它们之间移动或共享数据。

VPLEX Geo让您在异步的距离内连接两个VPLEX集群。

 

VPLEX Local允许在混合平台内镜像存储,而无需主机提供资源和分配虚拟存储设备。 VPLEX Metro与服务器虚拟化相结合,使用户​​能够透明地跨地域地移动虚拟机及其数据。 VPLEX Metro还允许在同一地点内和跨地点地镜像卷和分布数据。 VPLEX Geo利用Accessanywhere提供支持异步距离的范围可达到 2个站点之间相距超过100公里的能力。


OS是Geosynchrony 5.0 。

1.png

Accessanywhere能够:
1.vplex Geo提供accessanywhere支持高达50ms的延迟。
2.一致性组是一组虚拟卷,要求写顺序的一致性。主机写入到VPLEX分布式一致性组中,以保证后端存储的静像在两个站点上互为精确的副本。
3.write缓存:VPLEX认可一个到主机的写入,异步地写入数据到后端阵列。
4.cache vaulting:VPLEX director重启前将其缓存中的内容写入到存储,在重新启动后取回数据。


VPLEX管理控制台能够:
1.vplex元管理器API:一组定制的脚本,作为与其他系统的接口。


VPLEX工具包能够:
1.vplex witness是一个虚拟机,自动帮助VPLEX检测由于站点故障和站点分区造成的差异,并在出现故障时保持应用在线。


VPLEX存储服务能够:
1.host跨集群连接:为了高可用性,每台ESX主机必须连接到一个VPLEX Metro的每个VPLEX系统。
2.vpcopy:它可以跨阵列,无中断地移动卷。
3.基于ALUS阵列:VPLEX支持全方位的中层阵列。

 

5/14/2013 更新:

 

一个VPLEX Metro配置中可添加第二个集群,该集群最多可有4个引擎来支持“accessanywhere”或支持从连接到任何一个集群的主机一个虚拟的LUN的共享访问。集群可以位于相同的数据中心内或超过同步距离的数据中心之间- 最高可达约100公里。

 

共享集群之间的LUN时,每个LUN是从单个群集的总数减去。所以如果你要分享8000个横跨2个集群的分布式卷,你会消耗16000  - 最大的两个群集的虚拟卷数。所以根据VPLEX Metro,你可以在2个集群上有2个独立管理的池,每个池有8000个卷,共16000,或最多8000个共享和分发的卷。


在VPLEX集群之间共享LUN可以结合基于主机的集群技术来透明地在主机群集或不同位置之间移动或重新定位的应用。支持VMware在ESX集群之间启用vMotion。额外的主机群集支持包括微软Hyper-V和MSCS集群,在同步距离内。

 

untitled.png

一个VPLEX Geo配置几乎是和一个VPLEX Metro配置一样,不同的是集群可以位于同一个数据中心内或达到异步距离的数据中心之间 - 最高可达约1000公里。

 

untitled.png

VPLEX的创新用一句简单的话说就是:在2个独立的站点内的相同的信息,可以同时从这两个站点访问。我们称这是一个“分布式存储集群”。 VPLEX是今天唯一的可用的技术,提供这种功能。信息同时访问的事实是关键 - 许多产品提供远程复制,但在辅助站点上的数据不能被相同的应用程序同时使用。这是通过高速缓存一致性模型,跟踪和记录远程动态写入实现的。

untitled.png

 

VPLEX提供可用性,移动性和协作性,以满足客户的需求。

 

关于移动性:

untitled.png

1.首先VPLEX是一个分布式存储集群,用户能从两个地点访问数据,利用任意站点的存储和主机资源通过VPLEX自动平衡负载。站点之间是典型的A/A模式。

2.结合主机虚拟化,例如VMware vMotion,VPLEX提供在站点间迁移、共享基础架构资源的能力。重要的是这种迁移完全是在线的,不需要宕机。

 

关于可用性:

untitled.png

即使整个站点奔溃了,数据仍然保持在线,不需要手动恢复或者重启。在同步距离内部署VPLEX Metro后,基本上灾难在发生之前就被屏蔽掉了。好处是:

1.同步距离和读写缓存架构提供的低延迟提高了性能

2.故障的设备完全隔离,不影响网络上的其他设备。在A/A模式中,VPLEX Witness 作为一个封闭的虚拟机安装,且部署在与 VPLEX 群集不同的故障域中(以消除单个故障同时影响群集和 VPLEX Witness 的可能性)。VPLEX Witness 通过管理 IP 网络连接至两个 VPLEX 群集。VPLEX Witness 通过将其自身的观察与群集定期报告的信息进行协调,让群集可区分群集内网络分区故障和群集故障,并在这些情况下自动恢复 I/O。

3.RTO就是等于0

4.软硬件的升级完全不影响应用继续。

5.主机跨集群链接配置要求主机连接到两个集群中,确保主机始终能访问需要的信息。

untitled.png

关于协作性:

一份数据始终是可以被不用站点的用户访问。

untitled.png

 

5/27/2013 更新:

 

VPLEX Local

0.png

集中化的管理、分配和监控单个数据中心内的块存储,数据不间断移动,单个集群支持5000虚拟volume

 

01.png

关键词:AccessAnywhere、同步距离、共享虚拟volumes、分布式读写缓存、跨距离VMotion

 

来看一个案例:

02.png

 

用户在两个站点部署了一批VMware虚拟机来运行微软的应用服务器,并在运维过程中遇到了如下挑战:

1.站点间不平衡的资源利用率,大部分应用都跑在站点1上

2.计划中的系统维护要宕机ESX主机

 

03.png

 

我们建议用户采纳基于VPLEX Metro的解决方案,来从容应对上述挑战:

1.通过在站点间VMotion,调整虚拟机的部署来实现负载平衡,典型的双活方案

2.在计划中的系统维护发生前,将应用服务器迁移到另一个站点

 

此外,还用如下好处:

1.灾难避免

2.可用性和性能改进

 

04.png

VPLEX系统的基本构建是引擎。多个引擎可以被配置,以形成一个单一的VPLEX集群的可扩展性。每个引擎包含两个高可用的Director,集成前端和后端光纤通道端口。 Director上的FE和BE端口作为标准的光纤端口。 单个集群中的多个director通过冗余的、专用光纤通道链路LCOM链接在相互之间进行通讯。


每个集群都包括一个1-U管理服务器,通过公共IP端口在数据中心的管理IP网络上进行系统管理。管理服务器也有私人的,冗余的IP网络
连接到集群内的每个director。


VPLEX实施从根本上涉及三个任务:

1.通过director的BE端口,呈现后端阵列的SAN卷给VPLEX引擎
2.通过必要的配置和保护水平,包装这些后端的SAN卷成为VPLEX虚拟卷

3.通过VPLEX的FE端口,把这些虚拟卷呈现给SAN中的生产主机


目前,一个的VPLEX系统可以支持最多两个集群。双集群系统被称为Metro-Plex。对于双群集配置,两个站点必须是在相隔不到100公里,往返延迟时间5毫秒或更短FC链接。 单个Metro-Plex中的VPLEX集群之间通过director的FC-MAN端口通信。


VPLEX实现两个集群管理服务器之间的VPN通道。这使得每个管理服务器通过专用IP网络与任一director通信。有了这个设计,就能方便地从任一个站点管理Metro-Plex。

 

6/5/2013 更新:

 

11.png

这个是VPLEX的引擎,他的规格如下:

1.每个引擎有两个冗余的director,每个director上都运行GeoSynchorny软件提供VPLEX的基本功能

2.每个director上有16个FE/BE FC port

3.两个director之间通过FC链接

4.支持64GB的global memory

5. 冗余的电源

 

12.png

 

在每一个VPLEX集群中有一台管理服务器,他分割VPLEX内部的管理网络和外部的生产网络,利用私有IP连接和director内部的firmware层通信。在Metro-Plex中,有两台管理服务器通过VPN连接能管理任意VPLEX集群,管理控制台运行在管理控制器上。

 

13.png

 

 

简单看看VPLEX是如何利用分布式缓存一致性管理I/O的:

当一台主机提出I/O请求,会由任意本地集群的任意引擎提供服务。VPLEX把数据块和引擎的关系抽象为一张目录,每次I/O都会更新这个目录,这个目录在所有引擎之间共享。

这个目录使用少量的metadata来告诉其他引擎哪一个数据块在哪个时候属于哪个引擎。

假如一个读请求进来了,VPLEX自动检索这个目录寻找数据块的所有引擎。一旦找到了并且对该数据块的写完成目录也更新了,这个读请求就直接被转向这个引擎所有者,直接把数据块从这个引擎所有者个缓存中读取出来(如果数据块还在缓存中就不会读硬盘)。

这个模式让VPLEX能分布式地把引擎缓存一致性目录共享在多个引擎之间,多个集群之间和多个站点之间。

 

14.png

规格表如上

 

下面是关于VPLEX的存储对象之间的关系

 

15.png

 

后台异构存储阵列呈现LUN到VPLEX BE端口。

每个BE LUN被映射为一个VPLEX storage volume,初始为unclaimed状态。

VPLEX claim存储卷,把它切割成一个或者若干个持续的extent。一个extent不能跨storage volume。

extent被用来创建RAID group,RAID group创建出device。

Device被通过storage view呈现给主机。

 

这个storage view当然有几部分组成,host initiator、VPLEX FE port、根据device配置而成的virtual volume。

 

当前版本的VPLEX的virtual volume的product id是“Invista”。

 

 

6/21/2013 更新:

 

下面这张截图来自EMC VPLEX管理控制台,显示了如何进行空间分配

 

sd.png

 

右面部分列出了存储空间分配的步骤,基本步骤包括:

1. 找到VPLEX连接到的可用的存储

2.基于异构存储阵列提供的volume创建出VPLEX storage volume

3.在VPLEX storage volume内创建出extents

4.基于extent创建出RAID based device

5.基于device创建出virtual volume

6.注册要访问VPLEX的initiator

7.为整个VPLEX创建存储视图,包含上述所有对象

 

左面部分形象地给出了各个VPLEX存储对象之间的层次和关系,以便创建。

 

关于把现有的SAN volume上的数据迁移到VPLEX volume,通过一对一的方式,叫做encapsulation。

这种方式就是直接把原来的SAN volume作为VPLEX volume加入到VPLEX中。优点是不需要额外的存储空间,只有一份数据。缺点是要把原来的LUN从主机端“移走”再给主机“呈现”新的LUN,对主机来说会有一个数据down time。

还有另一种传统的方式就是在VPLEX上新建一个virtual volume,然后利用传统的复制手段,例如SAN copy。优点是对主机来说不会有数据down time,缺点是需要额外空间,同时保留两份数据。

 

第一种方式中,为了便于“移动”,volume的metadata并不会存放在这个volume中,而是存放在独立的metadata volume中。他的一些主要步骤如下:

  • 把源LUN呈现给VPLEX BE
  • 在VPLEX上把这个LUN认作是VPLEX storage volume
  • 创建一个extent,包含整个storage volume
  • 在这个extent里创建一个RAID0 device
  • 在这个device里创建一个virtual volume
  • 把源LUN从主机端“移走”
  • 把VPLEX virtual volume“呈现”给主机

 

as.png

 

在VPLEX的device级别,可以创建基于extent或者device的RAID。

 

下面来看看怎么在VPLEX内部的存储阵列之间迁移数据

VPLEX支持基于extent的迁移,就是把一个extent从一台阵列上迁移到另一台阵列上。

整个迁移过程中数据访问不会中断。device到extent的映射关系将会改变。

仅支持在同一个VPLEX cluster内部的两个阵列之间迁移数据。

 

qa.png

 

另一种方式是迁移device,就是把一个device从一台阵列上迁移到另一台阵列上。

整个迁移过程中数据访问不会中断。device到extent的映射关系将会改变。

仅支持在同一个VPLEX cluster内部的两个阵列之间迁移数据。

甚至支持在不同的RAID之间迁移device。

 

 

7/1/2013 更新:

 

VPLEX METRO与AccessAnywhere

AccessAnywhere提供一个逻辑设备来满足不同地点不同主机对数据的完全读写访问,同步距离可达100km。

它的一项关键技术是分布式设备,允许跨VPLEX集群配置一个RAID1的镜像设备。任意站点的主机可以进行并发I/O到这个共享卷。分布式共享缓存一致性保证了卷数据完整性。这个镜像的设备在不同的站点间是相同的身份,但是通过不同的VPLEX FC端口呈现给每个集群。

它的另一项关键技术是远程设备,允许在某个站点配置好的设备能够呈现给另一个站点的initiators进行完全读写访问。

 

dr.png

 

对于分布式设备来说,当主机执行写操作,数据被放到接受请求的director的cache中。数据写到阵列上,然后主机获得确认。

 

vvv.png

 

对于远程设备来说,远程读请求能有效地利用本地cache、远程cache和sequential read-ahead实现类似于本地读取的性能。而远程写请求,新数据缓存在远程,本地的原有数据将失效,然后新数据从远程写到本地。

 

rd.png

 

在METRO-PLEX环境中存在两种失败类型,partition failure和site failure。METRO-PLEX利用detach rule来处理这两种失败。

 

fa.png

 

如下图所示,为分布式设备配置一个rule。预示着,当失败发生时,cluster-1继续工作而cluster-2中止在这个设备上的I/O。

 

de.png

 

VPLEX分布式设备支持三种detach:

biased-site detach

non-biased-site detach

manual detach

 

监控VPLEX性能

 

通过monitor和sink可以收集VPLEX系统的性能数据。

使用VPlexcli的monitor命令创建monitor,默认每30秒收集统计信息。monitor被创建在/monitoring目录下。

 

ms.png

 

为了收集和查看统计信息,必须要创建sink。它们是存放monitor数据的文件,可以通过MS Excel打开。

 

 

9/9/2013 更新:

 

如何处理读
当主机发出一个读请求, VPLEX搜索其本地缓存。
如果数据被找到,就返回到主机。
如果数据在本地缓存中没有找到, VPLEX搜索全局缓存。
全局缓存包括VPLEX Local的单VPLEX集群内的和VPLEX Metro和VPLEX Geo的VPLEX集群内互相连接的所有director。
如果在本地集群中有一个全局读命中(即同一个群集,但不同的director),然后读将在同一个集群的全局缓存得到实现。如果一致性组设置的“本地读越权”设置为false(默认值是true ),也可能是远程全局缓存来服务这次读。
每当读是从全局缓存服务(相同的群集或远程的)的 ,一个副本也被存储在接受请求的director的本地缓存中。
无论从本地缓存或全局缓存,它如果不能服务读,则直接读取后端存储。在这些情况下,无论是全局还是本地缓存都进行更新。


本地读命中的I / O数据流
1。主机发出读取请求到虚拟卷。
2。查找director的本地缓存。
3。命中时,从本地缓存返回数据给主机。


全局读命中的I / O数据流
1。主机发出读取请求到虚拟卷。
2。查找director的本地缓存。
3。未命中时,查看全局缓存。
4 。命中时,数据从所有者director被复制到本地缓存。
5 。从本地缓存返回数据到主机。


全局读未命中的I / O数据流
1。主机发出读取请求到虚拟卷。
2。查找director的本地缓存。
3。未命中时,查看全局缓存。
4 。仍未命中时,数据从存储卷读取到本地缓存。
5 。从本地缓存返回数据到主机。
6 。返回数据的director变成数据chunck的所有者。

 

如何处理写
对于VPLEX Local和Metro,所有写操作都是通过后端存储的缓存。只有数据写入到后端阵列,主机的写操作才算完成。在VPLEX metro的情况下,每次写都是在集群中进行复制。其中一个副本,写入到本地后端阵列,而另外一个被写入到远程VPLEX,再把它写入到远程的后端磁盘。主机只有在这两个写入都完成后才会得到确认。


写未命中的I / O数据流
1。主机发出写请求到虚拟卷。
2。看看本地缓存中之前的数据。
3。看看全局缓存中之前的数据。
4 。将数据传输到本地缓存。
5 。数据写入到后端存储。
6 。主机获得写确认。


写命中的I / O数据流
1。主机发出写请求到虚拟卷。
2。看看本地缓存中之前的数据。
3。看看全局缓存中之前的数据。
4 。把之前的数据无效。
5 。将数据传输到本地缓存。
6 。数据写入到后端存储。
7。主机获得写确认。

 

 

12/23/2012更新

 

 

本期更新的内容是利用VPLEX把A存储上的数据迁移到B存储上的在线迁移步骤。

 

 

第一阶段:把存储都加到vplex并配置好

1 把现有的sun存储和VNX都接入到vplex的后端端口,sun上的存储卷和VNX的LUN都能被vplex发现。

2 在vplex上分别claim这些存储单元,变成内被vplex识别和处理的storage volume

3 利用这些storage volume创建extent和device,根据你的情况,要把原来的sun映射过来的storage volume创建成一个extent再创建成一个RAID 0的device,而把VNX映射过来的storage volume创建成若干个extent再创建出一个RAID 0的device

4 利用第一个device创建出virtual volume

5 在vplex上注册主机的initiator

6 在vplex上创建storage view,包括host initiator、vplex前端口和刚创建的virtual volume

7 撤销从主机端对sun存储卷的访问路径,这里会有访问中断,如果用了多路径软件就不会中断。

 

第二阶段:把数据从一个device移动到另一个device

1 复制数据

命令:dm migration start -f device -t device

2 提交复制

命令:dm migration commit

3 把源device干掉

命令:dm migration clean

 

4 清除迁移操作的记录

命令:dm migration remove

现在数据已经在VNX映射过来的device上面了,而整个过程因为storage view没有发生任何变化,所以对于主机来说迁移是透明的。

 

这个方法同样适用于在两个vplex cluster之间迁移数据。

当vplex认到盘的时候那是另一个设备名(就是对应了一条path),主机不可能通过两套path同时访问两套存储同时指向的却是同一个LUN,必须先清除一个在使用另一个,所以肯定会有downtime。但是如果安装了多路径软件如powerpath,那么这是可以避免的。

只要vplex claim过的盘那么迁移数据都是在vplex之下管理,可以在线迁移。

Filter Blog

By date:
By tag: