高端存储也需要需要ALUA吗?

昨天我们聊了HDS的一些产品更新,其中有一个路标大家看到没有?也就是HDS要在明年Q1支持双活卷的ALUA。这个怎么理解呢?高端不是全对称的多活吗,为啥需要ALUA?而且单独要支持GAD卷?

要说清楚这个问题之前,我们首先要看一下什么是ALUA。其实ALUA就是Asymmetric Logical Unit Access的缩写,指的是某个LUN或卷的访问不是对称的,也就是非对称逻辑单元访问。

要搞清楚ALUA的真正意义,我们先从历史说起。这里以EMC的中端存储为例来说明。

在CX的年代,阵列虽然是双控形态,但是LUN访问是主备方式。也就是主机虽然到一个LUN有两条链路,但只有一条链路是激活的,另外一条是闲置的。这种方式太浪费资源了,因为LUN归属某个控制器,这个控制器上的I/O和Cache就忙坏了,而两位一个控制器平时就闲着了。当然,如果有多个LUN,平均归属到两个控制器上,这样会好一些。

但这样还是有一个问题,如果主机把I/O送到非归属控制器,怎么办?没有太好的办法,一个办法是把I/O直接丢掉,但这不是存储干的事啊。另外一个办法就是把LUN控制权抢过来,把I/O处理完。问题是主机不懂啊,在两个路径来回送I/O,造成路径反复被鞭打(path thrashing)。性能会降至冰点。因此,那个主备时代,一般要求主机上安装厂商自己的多路径软件,来控制这个路径的选择。

后来发展到VNX这一代开始支持ALUA,这种AA就可以充分利用两条路径,特别是主机完全可以采用标准的多路径软件,因为标准的多路径软件都支持ALUA功能。也就是主机查询路径下面的LUN的时候,存储不仅会告诉主机LUN的信息,而且还可以告诉主机这个路径是否是最优路径。这个时候虽然LUN还是有归属的,但两个路径都可以接受I/O请求,只是非归属控制器收到I/O后,要转发给归属控制器落盘。这种情况比主备方式好了很多,可以称做AA了,但由于访问的路径不是对称的,因此也叫ALUA active-active。但是,这种方式还不是最理想的,因此存储系统内部要做转发,占用大量的内部带宽资源,效率上也不是很高。而且,还有一个问题,也就是一个控制器坏了,这个控制器上的LUN要被另外一个控制器接管,这个接管有一个专业的术语叫LUN trespass。这个trepass是有害的,因为trespass指入侵的意思。

在国外的很多私人场地,如果你入侵私人领地,人家有权枪杀你的,可见危害有多深。

对于应用来说,如果存储发生了LUN trespass,体现在主机应用就是不响应了。这个停滞的时间大约是300ms-1000ms这个数量级,这个1秒钟的时延,对于关键应用(如股票交易)来说是非常致命的,特别是高端存储,一秒甚至就是几百万个IOPS啊。

因此,到了VNX2时代,EMC才支持对称的active-active。EMC采用LBA地址锁的方式来处理LUN的访问。也就是LUN不再有归属,任何一个控制器收到写I/O后,把相应的LBA地址锁住,写完再释放。

这个方式虽然实现的对称的双活,但LBA是物理地址,因此VNX2只能支持传统的LUN,传统的LUN数据服务太少了,很多特性必须用POOL LUN才支持,大大限制了对称双活的应用场景。

而大部分的高端存储,从一开始设计的时候就是没有LUN归属的,也就是多个控制器之间其实都是对称多活的。比如EMC就宣称VMAX3是真正的active-active,没有trespass这个问题。

如果这样的情况,高端存储好像无需支持ALAU啊?因为主机你通过那个路径访问我,都是一样的。但现实不是这么简单,有些场景,还是需要ALAU支持的。举几个例子。

1、虚拟机场景

假设一个VMware虚拟机32个节点的集群,下面接了两个存储,一个是高端存储(对称双活)做tier 1,一个是的中端存储(非对称双活)做tier 2。由于中端存储支持ALAU,因此,可以告诉主机那条路径是最优路径。如果高端存储不支持ALAU,那么VMware虽然看到所有的路径,但为了保险,只能用一条路径。如果高端存储支持ALAU,那么可以告诉VMWARE每一条路径都是优选路径,那么VMWARE就会用Round Robin方法轮流使用所有的路径,性能要比用一个路径高了N倍,充分发挥高端存储的性能优势。

2、异构虚拟化场景

现在高端存储支持了异构虚拟化,也就是可以接第三方的阵列。一般这些中端阵列都是支持ALAU的,因此高端存储要支持ALAU向下对接,同时对上也要支持ALAU给服务器使用。

3、颗粒度比较大的锁场景

EMC的VNX2采用LBA地址锁实现对称双活,但高端存储不一定这样。不同的厂商实现不同。3PAR是针对region这一级有归属(也就是常说的sub-LUN归属),颗粒度还算比较小。但HDS VSP是针对LDEV这一层有归属,归属某个VSD。LDEV有时候甚至对应一个LUN,颗粒度太大了,如果池化会好些。这种情况下,如果支持ALUA,路径还可以优化,比如VSP在使用两个控制机箱情况下,如果访问的LUN包含的LDEV大部分在某一个控制机箱,支持ALUA就可以把这个机箱的路径设为优选。不过,这种场景是我YY的,现实中比较少。

看到这里,大家知道高端存储为什么要支持ALAU了吧?HDS在明年对GAD卷支持ALAU,就可以让主机采用标准的多路径软件,优先选择适合的路径。比如同机房部署双活,那么所有路径都是优选,如果是远程部署双活,优先本地站点。如果不支持ALAU,只能用自己的多路径软件,部署限制就多了。因为有时候主机接多个厂商的存储,你是无法使用自己专用的多路径软件。

【学习心得】

存储的知识点还是很多的,一个ALAU就够我们讲半天。但这些概念还是很重要的,我原来也比较模糊,只是现在各家的架构看多了以后,才能总结出一些内容,但不一定对,请大家批判吸收。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2015年11月17日
下一篇 2015年11月17日

相关推荐