WAFL工作原理

基本结构如下图:

wKioL1nPYMiRJCGbAADlI6rWRuU680.jpg-wh_50


客户端发送写请求

wKioL1nPYMmSGPlEAADxH257hCc240.jpg-wh_50


控制器1将数据写到系统内存和NVRAM中,并将数据同步到控制2上

wKioL1nPYMqB-CdhAAD0l9538pg897.jpg-wh_50



控制器2发送确认给控制器1

wKioL1nPYMzCmOy2AADsfcYATZI476.jpg-wh_50


控制器1发送确认给客户端

wKioL1nPYNDDkB6cAADyNpg4CsU870.jpg-wh_50


另一个客记端发送写请求

wKiom1nPYRTBeY49AADtGkBjnBQ676.jpg-wh_50


控制器1将数据写入系统内存和NVRAM中,并同步给控制器2

wKioL1nPYNKxyiANAADyoZ_AKU8404.jpg-wh_50


控制器2发送确认给控制器1

wKiom1nPYRbgEbMkAADujo-HnQQ017.jpg-wh_50


控制器1发送确认给客户端

wKioL1nPYNTTColjAADvztkwmTU788.jpg-wh_50


另一客户端发送写请求到控制器1,控制器1写入内存和NVRAM,并将数据同步给控制器2

wKiom1nPYRnRmQ8BAAD5JPZZAa8511.jpg-wh_50


控制器2发送确认给控制器1

wKiom1nPYRqgHcxXAADvy2EnJpI218.jpg-wh_50


控制器1发送确认给客户端

wKiom1nPYRvwCRzIAADwCA_3Fz4071.jpg-wh_50


此时控制器的NVRAM已满一半

wKiom1nPYRziFCcCAADtk-Ctyn0356.jpg-wh_50


此时触发一致点,控制器将内存中的数据写入到磁盘中

(触发一致点的条件:NVRAM满一半;距离上一次发生CP超过10秒;快照被创建;管理员关闭系统)

wKioL1nPYNrwN5RXAADw-yOTeAg014.jpg-wh_50


完成一致性,NVRAM被清空

wKioL1nPYNvDBwUkAADp6ZhOfYc659.jpg-wh_50

WAFL一旦数据写入内存,将立即给客户端发送确认。 这在数据被写入磁盘之前进行以优化性能。对客户端而言,数据已被永久写入存储。如果断电,系统内存中内容将丢失。如果数据只写入到系统内存,将导致一个不一致状态。NVRAM是非易失性的 它可以在停电时仍保存数据,如果数据在写入磁盘之前发生断电则可以从NVRAM恢复。NVRAM会将数据写入到系统内存并将它们从一致点写入磁盘。 将数据写入HA对中的两个控制器,以便如果有接管HA对等体可以将数据写入磁盘。



控制器1失效后

wKiom1nPYSDQyEFLAAD48mCww5Y469.jpg-wh_50


控制器2将NVRAM的内写入到内存

wKiom1nPYSGyrUMjAAD7Cyf91KQ928.jpg-wh_50


控制器2然后将内存中的数据写入到磁盘

wKioL1nPYN-Qzc4yAAEBvk-GEPk584.jpg-wh_50


控制器2将NVRAM清空

wKiom1nPYSPShD7OAAECaq-DODk735.jpg-wh_50


客户端给控制器1发送写请求

wKioL1nPYOSw2PWRAADy2X8dXPQ930.jpg-wh_50


控制器1将数据写入内存和NVRAM,并同步给控制器2

wKiom1nPYSijVxtdAAD077c038k824.jpg-wh_50


控制器2发送确认给控制器1

wKiom1nPYSqxRF26AADtZm73Rec948.jpg-wh_50


控制器1给客户端发送确认

wKioL1nPYOvBga2tAADzRF2gIUo485.jpg-wh_50


客户端向控制器1发送读请求

wKiom1nPYTLi38e-AAD30YqNXqA381.jpg-wh_50


控制器1首先从内存中查找数据

wKioL1nPYPKTGYW2AAD2bMRmLwA860.jpg-wh_50


如果内存中有该数据,将该数据上移至最顶部

wKioL1nPYPTQA3F_AAD5uoHbaDU439.jpg-wh_50


其它数据被下移,并将查找到的数据发送给客户端

wKiom1nPYTmClN84AAD3A3I4XvA990.jpg-wh_50


另一个客户端也发送读请求

wKioL1nPYPjgj-aYAAD76qTpQ6o083.jpg-wh_50


控制在在内存中未找到,需要从磁盘读取

wKiom1nPYTzCT0nGAAEBTNErbdQ283.jpg-wh_50


从磁盘中读取的数据被放到内存的最顶部

wKioL1nPYPrir-5VAADtgCCNST4450.jpg-wh_50




间接数据访问: 客户端通过控制器2发送读请求

wKiom1nPoPKRYtigAAEYrkL_XNs696.jpg-wh_50


控制器2将该请求发送给控制器1

wKiom1nPoPLiDvzDAAEZYlMPdec392.jpg-wh_50


控制器1从磁盘中查找数据并放到内存中,并传送给控制器2以提供给客户端

wKioL1nPoK-wA6HuAAEde4Fcyy0915.jpg-wh_50


此数据将被放到内存的顶部

wKiom1nPoPKTaMQOAAEMZSTbvGk356.jpg-wh_50





DATA SVM

Data SVM是安全多租户的基本单元,它能将集群分区,以程现为多个不相关的SVM。每个SVM对客户端程现为单个独立的服务器。

除非集群管理员开启,否则在集群中流量不会SVM之间传输。

如果不启用多租户,仍然需要至少一个DataSVM

SVM之前被称之为vserver, GUI介面被叫做SVM,但是CLI模式仍然使用“vserver “命令。

可以在集群中仅有一个或多个SVM,单个SVM可以提供SANNAS协议,或两个都使用。

每个SVM对客户端来说是一个专有的服务器

Data SVM独立于节点和aggregate, 它可以基于多个节点和aggregate,或者仅在一个上面。不同的DataSVM可以在相同的节点和使用相同的aggregate. 也可以指定SVM指定一个aggregate. 可以为SMV指定专用的卷和Data LIFs.

 

Data Namespace

每个SVMNAS有它自己唯一的”namespace”,自己的目录结构。

当创建SVM时,它的根卷也并被创建。

为构建名称空间,每个SVM中的卷通过junction path彼此相连,并挂载在junction path上。

根卷位于命名空间层次结构的顶层,其它卷通过junction path挂载到根卷下。

 

 

IPSpaces

IPspaces允许同一个集群中的SVM拥有重叠的子网和IP地址,在以前的Data ONTAP上,Data LIFs必须用不同的IP地址。

通过IPspaces, 不同SVM上的LIFs可以使用其它SVM相同的IP地址。

IPspaces对安全多租户不是必须的,因为已经由SVM提供地址空间。

每个SVM维护它自己的路由表,IPspaces等同于VRF(虚拟路由转发表)。



转载出处:http://blog.51cto.com/chaozhs/category1.html