前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Isilon的分布式缓存是动了真格的!

Isilon的分布式缓存是动了真格的!

作者头像
冬瓜哥
发布2019-06-10 17:28:29
1.1K0
发布2019-06-10 17:28:29
举报
文章被收录于专栏:大话存储大话存储

很久之前有个客栈,由于客流量众多,所以有两个人在前台负责办理入住退房。它们共同维护了一个bitmap,凡是某间房已入住,则标记一个黑点,白点则表示该房无人住。但是这个bitmap只有一份,两个人都要使用,很不方便。于是将其复制了一份,每人各记录各的。这就产生了问题,这两个人相互都不知道哪间房退房了以及哪间空房被入住了。于是他们约定,在更改bitmap时,要向对方吼一声,对方把接收到的变更跟着落地到自己本地的bitmap中。这就是缓存一致性的基本原理。欲知详情,往下看。

本文组织:

  1. DELLEMC Isilon集群NAS系统简介
  2. Isilon的分布式缓存管理的真本事

1

Isilon集群NAS系统简介

DELLEMC的Isilon是一个分布式集群NAS系统。其支持主流的网络文件系统、对象、REST、SWIFT、HDFS等访问协议。Isilon系统分为三个子型号:F、H、A。

Isilon F800 All-Flash

Isilon Hybrid Scale-out NAS

Isilon Archive Scale-out NAS

Isilon还拥有一系列的数据管理软件功能,包括:INSIGHTIQ、SMARTPOOLS、SMARTQUOTAS、SMARTCONNECT、SNAPSHOTIQ、CLOUDPOOLS、SMARTDEDUPE、SYNCIQ、SMARTLOCK、ASPERA。

Isilon系统的核心就是它的OneFS集群文件系统。OneFS是一个分布式、对称式、并行集群文件系统。关于对集群文件系统的架构界定标准,可参阅冬瓜哥这一系列文章:

【冬瓜哥手绘雄文】集群文件系统架构演变终极深度梳理图解

【冬瓜哥手绘】从多控缓存管理到集群锁

2

Isilon分布式缓存管理的真本事

在分布式系统中,很少有产品启用缓存。因为除了需要采用NVRAM/NVDIMM来做掉电保护之外,最关键的是解决分布式缓存的一个关键问题,Cache Coherency(缓存一致性)。由于OneFS属于对称式集群,意味着任何一个节点均可以承载I/O访问,那就会带来一个问题,比如节点1和节点2同时缓存了数据A,Host1向节点1发起写请求更改了数据A为B,那么此时节点2上的数据A就必须被立即作废。

我们不妨先来看看PowerMax这个分布式集群SAN系统是如何处理缓存一致性问题的。DELLEMC的PowerMax(原来的V-MAX)采用的是通过Hash方式来确定某个数据块的唯一的缓存节点,这样就不存在缓存一致性问题,但是代价则是需要跨节点产生数据流量,而不仅仅是控制流量,因为数据需要在多个节点中传来传去。比如数据块A只能缓存在节点1,那么如果节点2需要访问数据块A,则先计算Hash得出数据块A所在的节点,然后向该节点发送请求让其传递数据块A的部分或全部到节点2,然后将数据发送给Host端,同时节点2将数据块A从其本地缓冲区删除,不能作为下次访问使用,因为节点2根本不知道数据块A在其他节点上是否已经发生了变化。

大家自然想到,如果让数据块A的变化情况能够让集群中所有节点都知道,广播出去,不就可以保证数据一致性了么?没错,多核心多CPU其实也是一个分布式集群,其对缓存的管理就是这样的,借助于核间、片间高带宽低时延网络,能够让分布式缓存的访存时延降低到一个可接受的范围内。缓存一致性协议协议规定了多个缓存之间在什么时候、传送什么消息、问答方式等。比如Intel使用MESIF协议,AMD使用MOESI协议。

《大话计算机》一书中,冬瓜哥详细介绍了缓存一致性的原理,并从零推导出MESIF协议的全貌,可点击上面链接获取详细目录和简介。

Isilon的OneFS采用了与CPU类似的缓存一致性协议,开发这套协议需要相当的技术水平。Isilon采用Infiniband互联,采用Sockets Direct Protocol (SDP) over InfiniBand (IB)来实现节点间同步。Isilon采用MESI协议实现缓存一致性。MESI表示每个缓存行的4种状态:

M – Modified: The data exists only in local cache, and has been changed from the value in shared cache. Modified data is typically referred to as dirty. E – Exclusive: The data exists only in local cache, but matches what is in shared cache. This data is often referred to as clean. S – Shared: The data in local cache may also be in other local caches in the cluster.

I – Invalid: A lock (exclusive or shared) has been lost on the data

每个节点均记录本地缓存行的状态,就可以决定是否要发出广播。比如访问一个E状态的缓存行,就无需通知其他节点,因为E表示该缓存行只存在于本地,其他节点没有缓存。

不得不说,Isilon把CPU集群所采用的缓存一致性协议搬移到了集群节点间来用软件实现,这种正宗的分布式缓存实现,在市面上的分布式集群系统中是不多见的,至少目前冬瓜哥只知道Isilon这么做,其它厂商还没有听说。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大话存储 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档