登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

【单骑】的旅途

跨越距离

 
 
 
 
 

日志

 
 

Oplock机制说明和FAS上的相关操作  

2011-06-29 23:41:08|  分类: IT |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

在文件系统中,要支持对文件的并发读写,解决文件读写一致性问题,必须要有一种机制来对文件的并发操作进行控制。当前文件系统一般都使用缓存技术来加快数据访问的速度。其原理为将最近访问的文件数据保持在缓存中,下次访问相同的文件数据时则不需要再访问低速的磁盘,直接从缓冲中得到,从而获得较高的I/O 速度。在基于客户端服务器模型的分布式文件系统中,缓存技术的引进使得一致性问题更加突出,它需要为系统中所有的文件系统客户端提供一个一致性的视图,解决多客户端并发访问控制和缓存一致性的问题。

 

如果只有一个客户访问服务器的某一文件,显然在客户端缓存文件数据是安全的。当两个客户同时访问一个文件时,必须采取一定的措施保证客户和服务器数据文件的一致。CIFS协议采用机会锁(oplock, opportunistic locks)的机制来解决分布式缓存的一致性(distributed cache coherency)问题。当一个客户访问服务器文件时,它必须首先请求机会锁。服务器授予客户的机会锁的类型决定了客户能采用的缓存方式。有三种主要的机会锁类型:

ü  Ⅰ级机会锁 独占锁。用于一个客户独占一个文件。拥有这种类型机会锁的客户能在客户端对相应文件进行读写缓存。

ü  Ⅱ级机会锁 共享锁。拥有Ⅱ级机会锁的客户可以对相应文件进行缓存读,但是任何对文件的写操作会使Ⅱ级机会锁失效。

ü  批处理机会锁。是有最大许可权的机会锁。拥有这种类型机会锁的客户不仅能在客户端对相应文件进行读写缓存,同时打开关闭文件不需要额外请求机会锁。批处理机会锁通常用来支持批处理文件的执行,在执行时通常需要反复打开关闭一个文件。如果个客户没有机会锁,那么它就不能在本地进行缓存读或缓存写,而是直接从服务器接收数据或者把所做的所有修改直接发往服务器。

 

         从存储角度出发,SAN环境下通常只使用LUN级别的锁定(锁的粒度很粗),每个LUN只能同时供某一台主机访问,简单的Active/Passive(Active/Standby)集群系统就使用这种粗粒度的锁;更细粒度的共享访问(如文件级别或应用数据块【区别于存储的数据块】)则需要文件系统或应用级别的锁机制,如Oracle并行服务器(Oracle Parallel Server, OPS)就利用了分布式锁管理器技术(Distributed Lock Manager, DLM)。

 

         NAS的技术含量则远深于SAN。换个眼光看,NAS环境也可视作集中存放、分布访问的文件系统。CIFS环境下,Oplocks (opportunistic locks)使得客户端在一些场景下能够执行客户端缓存从而达到提前读取、延后写入的性能优化效果(不仅降低了延迟,也降低了网络流量)。

 

         有写缓存就有数据丢失风险,任何文件系统和存储都是这样。当写缓存中有脏数据时,如果网络突然中断或客户端崩溃,数据就会丢失。缓存自身是不负责数据丢失后的错误修复的——这部分由应用处理,在应用架构设计时需要考虑这一点(例如Oraclelog写入后才确认commit成功,则data block buffer丢失后可通过redo log修复)。

 

         NetApp FAS(filer)中的CIFS oplock机制默认是打开的;如果网络很不稳定,或者应用不允许缓存数据丢失却又没有错误修复机制,则可能需要关闭oplock

整个系统关闭:options cifs.oplocks.enable off

部分卷或目录关闭:qtree oplocks name disable

 

         打开oplock机制的话,存在一个多久断开的问题。Windows客户端向FAS发送open-file请求,FAS响应之后再经过至少”options cifs.oplocks.opendelta”毫秒,FAS才向客户端发送oplock断开请求,避免客户端刚打开文件就收到要断开的请求。(如果没有这个cifs.oplocks.opendelta延迟,某些情况下会话可能陷入紊乱:客户端申请、FAS端让它断开、客户端再申请、FAS端再申请断开……)。由于WindowsFAS在不同版本中都可能存在处理方式的调整,允许动态设置cifs.oplocks.opendelta选项的能力显得很有必要。

 

         类似以下错误可以考虑调整(加大)该时延:

         Mon Jul 25 14:23:52 CST [fas3140a: cifs.oplock.break.timeout:warning]: CIFS: An oplock break request to station 192.168.11.11() for filer FAS3140A, share share1, file \subdir\file.txt has timed out.

Rretreived from http://liaohairun.blog.163.com

  评论这张
 
阅读(3926)| 评论(3)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018