记得我在2012年参加vFourm大会之后撰写了《VMware的存储野心(上):软件定义、分布式DAS支持》和《VMware的存储野心(下):虚拟卷和闪存缓存》,当时水平有限,并且只是参考规划中的简单ppt介绍。3年前已经有了VVOL这个名词,而VSAN还没提出。
之后的两年,包括今年vFourm我都参加了,VMware在业界影响力不断扩大,参会人数感觉也突破了新高,存储相关特性不断增强。而对于关注技术的我,再也没有感觉到当初那种惊喜——因为主要产品都已推出乃至落地,更新的只是在部分方面。 在本文中,我想谈谈今天参会的主要感想——“微创新”和“技术借鉴”,由于有些内容是现学现卖,算不上是专业的技术分析,权且当作一个随笔吧。 同时也要说明,本文系个人观点,与任何公司无关。由于时间仓促,如有错误和不足之处欢迎批评指正,谈到某个产品的优缺点,也只是从技术角度出发的思考而已。 从全闪存VSAN联想到Compellent自动分层 今天一早,我看到一篇Memblaze资深方案架构师朱磊撰写的,解析全闪存Virtual SAN架构的文章,使我再次回想起下面这个图。 在vSphere 5.5也就是第一次版本VSAN的时候,官方要求SSD+HDD混合部署,SSD读/写缓存默认的分配比例为7/3。从vSphere 6.0开始,新的VSAN正式支持全闪存配置。所有写入数据一律进入写性能/寿命相对较高的缓存层SSD,然后逐渐“下沉”至相对廉价的容量层SSD;由于两种SSD的读性能并没有明显的差距,因此不再需要专门设计读缓存了,容量层的数据直接读就好了。 讲到这里,如果是对戴尔SC(Compellent)系列存储比较熟悉的朋友,估计也会有和我一样的同感,是不是比较相似呢? 上面这张图,冬瓜哥在《浅析固态介质在存储系统中的应用方式》一文中也曾引用,我在这里不做过多讲述,有兴趣的读者可以点击本文底部“阅读原文”,然后打开对应的文章链接即可。 Compellent数据分级的精髓在于依靠Replay(快照)触发数据下沉,也可以根据访问频率再提升。当然戴尔SC不只支持2个分层,在SLC(写密集型)+MLC(读密集型)SSD的基础上还可以加入磁盘来存储更“冷”的数据。 根据上图中的5种配置文件,在同一台Compellent阵列当中也可以混合使用不同的自动分层存储策略。比如第三种是比较常用的全闪存SLC+MLC;而像Oracle redo log这样的写密集型数据采用第二种配置(或者全硬盘RAID 10)不做数据调度显然更合适一些。 至于VSAN呢,我觉得更多考虑的是简单易用,支持虚拟化环境中的大多数应用即可,因此全闪存也只能分层。 尽管VSAN 6.0推荐的应用,在虚拟桌面、灾难恢复和测试/开发基础上加入了关键业务(原来是第2/3层生产应用),但我觉得这个是在一定程度上支持。毕竟Oracle官方是不认证VMware虚拟机的,物理硬件性能在虚拟化之后多少会打点折扣。 我再打个比方,有人说在Ceph上也能跑Oracle RAC+ASM,但真的不是最佳配置。相对于传统集中式存储阵列来说,尽管这些分布式存储计算出来的多副本数据可靠性相当高,但见到明确承诺可用性的还不多,目前能够稳定达到99.99%的感觉已经不错了。 关于软件定义存储这个话题,有机会再跟大家聊更多,再来看看下面这张图。 我看到有人对VSAN和ScaleIO给出的定位关系,首先VSAN应用受限于自家虚拟化平台,特长是简单,更多适用于ROBO、HCIA、SMB,对企业级数据中心和服务提供商来说ScaleIO应该是更合适的选择。 新星Nimble CASL:有些像NetApp WAFL和ZFS? 最近Nimble小火了一把,尽管他们IPO已经有一段时间,但却是第一次进入Gartner通用磁盘阵列魔力象限中的领导者象限。日前还看到同行朋友为此撰写了一篇文章,只是遗憾没有谈Nimble的技术好在哪里。 今天在vForum上有幸听到Nimble的讲解,ppt资料感觉很不错,由于时间关系我先引用下面2张产品资料中图片来做说明。 Nimble核心的CASL架构全称Cache-Accelerated Sequential Layout(缓存加速的顺序布局),上图为写优化的数据布局。首先(随机 )写入的数据块在NVRAM中做线内压缩,然后合并为固定尺寸完整的条带,并发写入到机械硬盘RAID组;同时将热数据副本写入SSD,以优化后续的读性能。 由于将小块的随机写合并成了大块顺序写,Nimble认为CASL的写入性能不比全闪存阵列差,而且延时就是NVRAM的延时。这时我很自然地联想到NetApp WAFL(写任意位置布局),同样是优秀的随机写性能,并使用PCIe闪存卡来做只读缓存。 尽管NetApp一开始没有数据压缩(最近应该是在AFF全闪存型号上有加入?这方面我了解有限),小块数据在NVRAM中合并的机制可能也没有Nimble先进?但可以比较明显看出技术上的一脉相承,听说Nimble的研发人员有一部分就来自NetApp。 那么,对于NetApp WAFL和ZFS相对较弱的一个方面——随机写之后的顺序读性能,我想Nimble也是同样存在的。我觉得这个要看应用场景了,比如听Nimble演讲的VDI分会场就不怎么受到这个影响,因为在高度虚拟化环境下来自虚拟机的顺序IO也被“搅拌”成随机了。 再来看看读,这时Nimble CASL就主要依赖SSD缓存了,对于未命中的数据需要从磁盘中读取。缓存预取和淘汰算法我感觉也无外乎MRU(最近使用)和MFU(最常用)两种,这方面与NetApp和ZFS没有本质区别。 这种固态混合存储,在VDI等热数据相对集中的应用中表现会比较好,但如果没有明显的数据热点,还是像VSAN和Compellent等全闪存方案性能会更好。听说Nimble后来也推出全闪存配置了?竞争力如何我不太清楚。 Nimble的SSD不进行RAID保护,其中如有故障也只是影响读性能(因为没有唯一数据,这是缓存和分层的一个重要区别),HDD的RAID保护级别支持3块校验盘,这又让我想起了ZFS的RAID Z3。ZFS是事物型文件系统,它的随机读操作也要一次读取一个完整条带(即RAID组所有成员盘),因此其读性能主要靠ARC内存和L2ARC闪存缓存来弥补。当然,也有存储厂商宣称用纠删码实现了三重校验。Nimble具体实现的方式我还不清楚,因此这一点不做判断。 总之,个人认为Nimble CASL一部分是在已有技术基础上的改良,而非XtremIO那样较为接近推倒式的创新。其成功原因,也不排除有商业方面的因素。比如今天Nimble说他们的阵列软件功能全免费(这点戴尔EqualLogic也一直如此)——如果不比NetApp卖得贵?软件还白送的话,成长快也不奇怪吧。当然有个前提是,产品要先做好,不能光飚数字还要成熟稳定。 类似的例子还有Tegile。ZFS文件系统有很多地方像NetApp,通常人们认为它不是太以性能见长,而Tegile这家初创公司却基于ZFS研发了闪存阵列。看来事在人为,还是在于优化。 注:本文只代表作者个人观点,如有错误和不足之处欢迎批评指正。 重 |
|