开始新对话

未解决

此帖子已超过 5 年

2769

2013年9月3日 19:00

【与EMC新一代VNX中端存储极速致胜】新一代VNX软件架构 - MCx多核优化

​ ​
​ ​

​新一代VNX软件架构 - MCx多核优化​

​ ​
​ ​

​ ​

​转载请在文首保留原文出处:​​EMC​​中文支持论坛​​ ​​- ​​https://community.emc.com/go/chinese​

​ ​
​ ​

​介绍​

​ ​
​ ​

​ ​

​ 为了充分利用现代​​CPU​​多核的设计和​​NAND​​闪存存储带来的优势,​​EMC​​历时​​7​​年时间,研发了​​MCx​​平台。本文将介绍​​MCx​​的几项重要的特性和变化。更多关于新一代​​VNX​​的其他改进,请继续关注论坛文章!​

​ ​

​ 最新!​​EMC新一代VNX中端存储介绍汇总贴​

​ ​
​ ​

​更多信息​

​ ​
​ ​

​ ​

​MCx​​概述​​:​

​ ​

​ ​

​ 新一代​​VNX​​引入的多核心优化(​​MCx​​)是未来​​EMC​​中端存储的关键技术。这一技术可以让内存管理和后端​​RAID​​管理进程充分利用多核​​CPU​​的优势。​

​ ​

flare_mcx_cpu_load.jpg

​ ​

​ ​

​ ​

​ 观察​​Block OE R32​​之前的核心利用率,系统的​​RAID​​校验计算、​​I/O​​处理、缓存等任务只会分配给一个​​CPU​​核心,其余的都在空闲状态。而现在​​R33​​的存储任务是平均分给全部的​​CPU​​核心,而且通常情况下每个核心都有剩余资源以应付突发的处理需求。如果未来有频率更快、核心更多的​​CPU​​,那新一代​​VNX​​的能力还能进一步提升。​

​ ​

​ MCx​​包含三部分:​​MCC​​(​​Multi-Core Cache​​)、​​MCR​​(​​Multi-Core RAID​​)和​​MCF​​(​​Multi-Core FAST Cache​​)​​。这一改进除了性能上的巨大提升以外,还让新的​​VNX​​在底层上支持同步“双活”(​​Symmetrical Active-Active​​)和自适应缓存管理。​

​ ​

​ ​

​自适应缓存​​:​

​ ​

​ ​

​ MCC​​的自适应缓存直观上的变化是取消了读、写缓存和高​​/​​低水线(​​High/Low Watermark​​)的设置:​

​ ​

mcc_pre_33.jpg

​ ​

mcc_r33.jpg

​ ​

​ ​​ ​​ ​

​ ​

​ 这当然不是说新的​​VNX​​不再需要读、写缓存,事实上现在大多数的​​NDU​​操作下,读、写缓存都始终启用。​​MCC​​缓存将干净和“脏“缓存页面放在单个缓存中,它会自动决定如何使用内存空间以最大化读操作和写操作的性能。用户无需纠结读、写缓存的分配比例,​​MCC​​会根据应用的需要来动态分配空间。当“脏“缓存页面被清空(即写入硬盘),数据仍然保留在缓存中以供读缓存使用。不管写操作是否会刷新进硬盘,写操作的数据始终会更新进缓存以供读操作命中。​

​ ​

​ 在​​FLARE R32​​之前,读、写缓存会被分割在不同的区域并且仅能被读或者写缓存使用。当主机发起读​​I/O​​后,数据就被载入缓存供后续访问。由于读缓存通常很小,如果数据没有立刻被重新读取的话,缓存页面会很快被丢弃。写缓存会被镜像地一分为二以提供冗余,而读缓存没有镜像。由于主动​​-​​被动架构的限制,当主机发起写​​I/O​​时,它只能由一侧的​​SP​​进入,不过好在写缓存通过​​CMI​​(​​Communication Manager Interface​​)​​内部通道做了镜像。这份写​​I/O​​的数据会保留在写缓存中,直到被写入硬盘。​

​ ​

r32_cache.jpg

​ ​

​ ​

​ 从​​R5.33​​开始,​​MCC​​缓存使用同一个内容页面供读、写请求使用。如下图所示,读、写操作同时进入镜像的缓存中。最终当“脏“缓存页面被写入硬盘,数据仍然保留在缓存中以供读缓存使用。那么什么时候缓存才会将数据写入硬盘(​​flush​​)呢?​​MCC​​改变了缓存清除模型,除了“脏”缓存页面,它还会监视相应的硬盘​​LBA​​(​​Logical Block Address​​,逻辑区块地址)以及主机对​​MCC​​和​​RAID group​​的访问需求。​​MCC​​在预测工作负载时不仅仅衡量进站​​I/O​​的数量,还会监视下层的​​RAID group​​。如果某个工作负载在向​​RAID group​​写入​​I/O​​时有大量的“脏”页面正等待写入硬盘,那很有可能这个负载需要更多的缓存资源。系统会评估进站写入​​I/O​​和​​RAID group​​页面刷新成功率之间的差异。​

​ ​

​ 这一革新允许​​MCC​​针对不同的工作负载动态调整自己的策略。​

​ ​

r33_cache.jpg

​ ​

​ ​

​ ​

​FAST Cache​​的改进:​

​ ​

​ ​

​ MCF​​的改进如下:​

​ ​

​·​​ ​​新的驱动栈顺序将​​MCC​​层至于​​FAST Cache​​层之上。这样所有在内存缓存(​​DRAM cache​​)中命中的​​I/O​​无需再检查一遍​​FAST Cache​​,从而节省了​​CPU​​开销。​

​ ​

​·​​ ​​改进了提升队列,从而可以同时支持更多的提升。​

​ ​

​·​​ ​​引入了一个主动的清除进程,以降低为了释放​​FAST Cache​​中的空间而强制刷新(​​force flush​​)“脏”缓存页面(​​dirty page​​)的可能。这一机制通过清除进程动态管理非活动的和脏缓存页面来实现。​

​ ​

​·​​ ​​更积极的初始数据预热(​​warm-up​​)策略。不同于之前的“三次命中”策略,现在如果​​FAST Cache​​空间未满,则一次命中就会加载数据到缓存中。而缓存空间达到​​80%​​时,则重新采用先前的“三次命中”策略。​

​ ​

mcf_architecture.jpg

​ ​

​ ​

​ FAST VP​​也有改进,现在它的颗粒度(或可迁移的数据片大小)从之前的​​1GB​​细化到​​256MB​​。​

​ ​

​ ​

​永久热备份:​

​ ​

​ ​

​ MCR​​的一项特性是永久热备份。在第一代​​VNX​​或更早的​​CLARiiON​​,用户必须手动创建热备份盘;当出现故障盘时,某块热备份盘会顶上坏盘直到故障盘被替换,然后再将所有数据拷贝回新替换的硬盘。从​​R5.33​​的​​MCR​​开始,任何未被使用的硬盘不管在盘柜的哪个位置,只要满足条件,都可以被用作热备份盘。事实上现在用户都无需再手动创建热备份盘。​

​ ​

​ 热备份盘和故障盘的对调是永久性的,因此也就不再需要想到耗费时间的数据回拷(​​Equalization​​)的步骤。​

​ ​

permanent_spare.jpg

​ ​

​ ​

​ 注意​​Vault Drive​​上的热备份处理会有一些不同:如果​​Vault​​硬盘大于​​300GB​​,则只有除去系统占用以外的空间可以作为用户​​RAID group​​的一部分,并同样受新的热备份机制保护。​

​ ​

​ ​

​硬盘漫游:​

​ ​

​ ​

​ MCR​​另一项改进是支持硬盘漫游,这也是为了配合永久热备份机制。从​​Block OE R5.33​​开始,每一块物理硬盘会被视作一个物理的虚拟驱动器(​​Physical Virtual Drive​​,​​PVD​​)。​​每一个​​PVD​​会被分配一个序列号,这些序号保存在阵列系统内,这样在重新排序​​DAE​​时可以不影响​​RAID group​​。另一种使用场景是可以将硬盘在线地从一个​​DAE​​移至同阵列的另一个​​DAE​​。不过硬盘离开阵列不能超过​​5​​分钟,否则系统会激活热备份开始重建数据,这​​5​​分钟的​​I/O​​由重建日志(​​Rebuilding Logging​​)功能负责写入在​​RAID group​​内,以供硬盘插回阵列后写回。关于重建日志功能的介绍可以参考文档:​​https://community.emc.com/docs/DOC-17678​

​ ​

drive_mobility.jpg

​ ​

​ ​

​双活(​​Active-Active​​)架构​​:​

​ ​

​ ​

mcr_active_active.jpg

​ ​

​ 从这一代开始,​​VNX​​实现了同步的“双活”架构。​​CLARiiON​​之前的系列(​​CX​​、​​CX3​​)只支持“主动​​-​​被动”架构,这意味着同时只有一个​​SP​​(​​Storage Processor​​,即存储控制器)在处理某个​​LUN​​的​​I/O​​。当路径出现故障时,故障侧的​​LUN​​必须切换(​​trespass​​)至另一侧的​​SP​​,由另一侧的​​SP​​来处理后续​​I/O​​,这一切换的过程会造成显著的性能延迟。​​CLARiiON CX4​​和第一代​​VNX​​支持异步双活(​​Asymmetrical Active-Active​​),主机上可以通过任意到两台​​SP​​的路径“看到”​​LUN​​,但同一时间只有一个​​SP​​处理到该​​LUN​​的​​I/O​​。当活动路径出现故障时,不会立即触发​​LUN trespass​​,而是(在一定时间内)​​I/O​​通过另一侧路径,仍然交由​​LUN​​的所有者​​SP​​处理。这一机制可以显著减少​​LUN trespass​​的可能性,提高了系统性能。​

​ ​

​ 新一代的​​VNX​​在此基础上更进一步,实现了“双活”架构。​​LUN​​可以同时被两个​​SP​​看到和访问,从而提升了两倍的性能。如果单侧的路径或​​SP​​发生故障或者在​​NDU​​(​​Non-disruptive Upgrade​​,无中断升级)操作时,不会出现​​LUN trespass​​,对​​LUN​​的​​I/O​​访问没有任何延时。尽管目前版本的“双活”功能仅支持传统的​​RAID Group LUN​​,但这让​​VNX​​离真正的同步“双活”阵列更近了一步。​

​ ​

mcr_active_active_usecase.jpg

​ ​

​ ​

​ 为了让主机可以通过两侧的​​SP​​同时写入​​I/O​​,新一代​​VNX​​添加了一个新的服务​​LUN​​并行访问锁服务(​​LUN Parallel Access Locking Service​​)。它可以允许每个​​SP​​在准备写入信息时保留相应的​​LBA​​地址。​​SP​​通过之间的​​CMI​​内部通道沟通​​LUN​​的信息和写入位置。沟通所需传输的信息非常短小,沟通频率也比实际写入操作高,所以不会影响写入进程。​​SP​​就用这些锁来并行地写入​​LUN​​的不同位置。​

​ ​

​ 读操作也是一样,会有一个共享的读取锁。一方面是​​SP​​需要知道是从硬盘中还是从​​SP​​的缓存中读取数据,因为“脏”缓存页面的数据可能还没有被刷新至硬盘;另一方面也防止另一个​​SP​​同时对其进行写操作。​​I/O​​完成后,锁即被释放。​

​ ​

mcr_active_active_locking_service.jpg

​ ​

​ ​
​ ​

​参考​

​ ​
​ ​

​ ​

​EMC​​技术白皮书​

​ ​

​《​​VNX MCxMulticore Everything​​》​

​ ​
​ ​

​应用于​

​ ​
​ ​

​ ​

​VNX​​系列(​​VNX5400​​、​​VNX5600​​、​​VNX5800​​、​​VNX7600​​、​​VNX8000​​)​

​ ​

​ ​

46 消息

2013年9月7日 20:00

真正的同步“双活”阵列 应该是什么样的呢?

3.2K 消息

2013年9月8日 03:00

真正的双活是没有SPA SPB的世界,那么symmetrix系列是您唯一的选择。

请看

dmx.jpg

在这种结构中通过global memory就不需要SPA,SPB啦,简略点的就是,

stucture.JPG.jpg

那么作为数据存储的元数据在symmetrix里面的传输也是无阻碍的。

dmx message.JPG.jpg

如果您真的对于业务有苛刻的要求,那么选择symmetrix应该是您最好的选择,

1.8K 消息

2013年9月8日 06:00

非常及时的新材料。

40 消息

2013年12月18日 18:00

是否可以这么理解:

1、在VNX时,盘阵的锁是在lun这一层,所以lun只能被一个sp抓住

2、到VNX2了,盘阵的锁到了比lun颗粒度,所以从表面看起来。lun可以同时被两个sp抓住

在VNX时,如果一个raid的不同lun属于不同的sp,会怎么操作?

谢谢

4K 消息

2013年12月18日 20:00

Locking Service是新一代VNX(VNX2)才引入的技术吧,上一代VNX时的"盘阵锁"指的是?

什么样的情况下VNX的LUN会“属于"不同的SP?或者你指的是ALUA?

要不再看看白皮书?

http://www.emc.com/collateral/analyst-reports/h12090-emc-vnx-mcx.pdf

http://www.emc.com/collateral/hardware/white-papers/h2890-emc-clariion-asymm-active-wp.pdf

643 消息

2013年12月23日 17:00

‘双活’对中端存储是一个质的变化。

找不到事件!

Top