你好,rick。
CIFS协议采用机会锁(oplock, opportunistic locks)的机制来解决多个客户端同时读写一个文件的问题。当一个客户访问服务器文件时,它必须首先请求机会锁。服务器授予客户的机会锁的类型决定了客户能采用的缓存方式。
有三种主要的机会锁类型:
Ⅰ级机会锁 独占锁。
用于一个客户独占一个文件。拥有这种类型机会锁的客户能在客户端对相应文件进行读写缓存。
Ⅱ级机会锁 共享锁。
拥有Ⅱ级机会锁的客户可以对相应文件进行缓存读,但是任何对文件的写操作会使Ⅱ级机会锁失效。
批处理机会锁。
是有最大许可权的机会锁。拥有这种类型机会锁的客户不仅能在客户端对相应文件进行读写缓存,同时打开关闭文件不需要额外请求机会锁。批处理机会锁通常用来支持批处理文件的执行,在执行时通常需要反复打开关闭一个文件。如果—个客户没有机会锁,那么它就不能在本地进行缓存读或缓存写,而是直接从服务器接收数据或者把所做的所有修改直接发往服务器。
Celerra的机会锁默认是打开的,用户可以通过命令server_mount进行自定义设置。机会锁使得客户端在一些场景下能够执行客户端缓存从而达到提前读取、延后写入的性能优化效果。当然,在写缓存就有数据丢失风险,任何文件系统和存储都是这样。当写缓存中有脏数据时,如果网络突然中断或客户端崩溃,数据就会丢失。另外,CIFS客户端只对CIFS相关的机会锁进行反馈,会忽略NFS机会锁设置。