这个系列的文章主要来介绍EMC VNX系列存储相关的技术,包括flare lun、thin lun、thick lun、meta lun、snapshoot、provisioning、fast vp、fast cach这些基本概念,也包括较复杂的vnx系列存储配置,快照挂载,虚拟化配置等,记录这些技术是我注册这个博客的根本目的,也将是我今后项目实施的重点。

首先介绍几本概念:

一,flare lun、thin lun、thick lun、meta lun

1)flare lun:

最传统的lun,基于raid group上的分区,没有虚拟化的概念,分了100G挂给host,host就占用了100G。

但是在vnx上的flare lun(vnx中成为raid group lun)也可以扩容,右键extend可以做成meta lun。

2)thick lun:

在vnx等具有虚拟化功能的存储上的概念,与传统存储相比,这类存储在raid group之上建立了【storage pool】概念,thick lun和thin lun都是基于storage pool的概念,thick lun其实理解起来和flare lun是一样的,分了100G挂给host,host就占用了所有空间,但是与flare不同的是在vnx存储上thick lun可以扩容,右键lun选择extend,就会从storage pool中划空间。

3)thin lun:

基于storage pool的概念,thin lun是典型的provisioning概念,他可以给host分配虚拟的磁盘大小,甚至可以比lun实际空间还要大,但是主机并不是真正占用了这些空间,比如分配了100G的thin lun,实际可能只有10G,只有在写入数据大于10G时,才会真正开始占用空间,对磁盘的利用率有很大提高。

4)meta lun:

较为庞大的概念,实际是多个flare lun components的集合,分为串联和条带化两种,内容较多,可以参考emc的文档,在之后的实际操作文档中会逐渐补充。

mata lun在很多时候可以和LVM相比较,后者其实更好维护。

2016-1-14更新:

在emc vmax挂lun时,项目是这样的:

1)因为aix hp-ux linux对lun的整合能力好,所以当os team需要例如135G空间时,存储直接分给storage group10个13.5Glun就可以了。

2) windows整合硬盘能力不好,所以需要存储测先把10个13.5Glun合并成meta lun,再分给windows.

3) 今天有个case是给windows加lun时加多了,例如多加了10个,server关机后,在vmaxgui操作删除10个lun,然后os端还要操作metalun与storage group之间的关系。

二,SSD、SAS、LS-SAS、SATA硬盘

在unisphere中会有不同类型硬盘的pool配置。

NL-SAS和SAS从技术上来说,没啥大区别。NL-SAS更注重容量和价格,SAS更注重性能上的考虑。

至于sata硬盘就是民用主流的接口,串口分sata2和3,主流是3代——6g每秒。实际速度读出100m,写入60m吧。SSD是性能最好的。所以性能的排名肯定清楚了。

三,RAID group、Storage pool,Storage group,Hot spare

在VNX系列的存储配置中,这三个概念肯定是会遇到的。

首先在storage界面可以选择创建RAID group和pool,先说raid group,这个就是传统的raid,多个磁盘合成的一个磁盘合集,但是最多只能负担16块盘,hot spare也是在它上面划分的,只要在选择raid类型时选择hot spare就可以了,创建完rg,可以继续创建lun,基于rg的lun也是没有虚拟化概念的,不能扩展。(还不能确定,看文档据说是可以extend为meta lun)

而pool是一个虚拟化的概念,说白了实在RG上面的一层抽象,如果选择创建pool,emc给出了RAID创建时的推荐磁盘数量配置,例如RAID5推荐用5块盘的倍数(4+1)来创建,这也是基于虚拟化的最佳配置搭配,比如拿10块盘做raid5, pool会自动做两个5块盘的raid5,分20个(磁盘数的2倍)lun,因为两个raid的结构一样,在之后的动态扩展中性能肯定最好,如果用9块盘,pool会自动做一个4+1,一个3+1,两个raid上的lun结构不同,不利于拓展性能。创建完pool可以创建thin lun,如果不勾选默认就是thick lun。如果做成pool,不会受磁盘数量限制,但是如果做大型pool,比如40个盘的,要先做小pool再扩展。

四,snapshot、snapshot mount point(SMP)

VNX的snapshot使用的是redirect on write(ROW)的技术,与snapview snapshot的copy on first write(cofw)(cofw和snapview理解的比较模糊)不同。

首先看上面第一个图,在进行snapshot的时候,需要把【文件系统描述区】复制一份,在有的文档也把这个描述区叫做在RIAD控制区的catch中建立一个区域指针,这个指针指向一一对应的数据块,在数据还没修改时,ss创建一个快照也是一一对应着数据块,与源文件一样,如果某个block数据被修改,在被修改前,会先把尚未修改的block数据保存到snaplun中,这个lun是在ss最初就被预留的,也有叫reserved lun的,然后指向修改block的指针也会发生变动,如上面的第二个图,所以ss本质还是一个指针,也是占用空间的,最极端的情况如果所有block都被修改了,ss lun要占用与源lun一般大的空间,在一般情况下肯定是源lun数据+指针+ss lun的数据组成ss的全部数据(我的理解),系统指针指向的是最新的数据block,ss指针指向的是原始数据。在读取数据时,如果要读取源lun的数据,直接读取就好,如果要读取ss的数据,先查询这个文件描述区的指针,未修改的数据从源lun读,修改的从ss lun中读。所以ss提供一个瞬时的影响,数据被修改才会把元数据存到新的lun中,如果数据修改不打,ss占用空间就不大。

更新:ss其实在创建之后 会动态的进行多次snapshot,即数据被改变时就会进行snapshot2,系统也会保存多份snapshot.

接下来说一下snapshot mount point:

SMP其实不要理解成挂载点,理解成一个类lun比较好,这个lun是根据源lun做的ss,然后加入到storage group,然后connect到主机,和传统lun一个方法,主机就可以来读写了(前提是在创建ss的时候要勾选允许读写),smp的配置方法参照另一篇文章: