首页/系统与基础设施/存储速查/SMB 目录租赁与客户端缓存机制
NAS 与文件共享50 条

SMB 目录租赁与客户端缓存机制

SMB 租约让客户端合法地缓存文件数据甚至目录列表,服务端在别人要访问时发起中断。它显著提升浏览与打开速度,同时带来「别人看不到我写入的内容」这类一致性困惑。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌​‌‌​‌​‌‌​​​‌​​​‌​‌‌​‌​‌‌​​‌​​​‌‌​‌​​‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌‌‌​​‌​​‌​‌‌​‌​‌‌​‌‌​​​‌‌​​‌​‌​‌‌​​​​‌​‌‌‌​​‌‌​‌‌​​‌​‌​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌​​​‌‌​‌​​‌​‌‌​​‌​‌​‌‌​‌‌‌​​‌‌‌​‌​​​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​​​​‌​‌‌​​​‌‌​‌‌​‌​​​​‌‌​​‌​‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

租约与目录缓存的作用

从 SMB2.1 起,客户端可以就一个文件向服务端申请租约,取得读缓存甚至写缓存的权利;SMB3 又把这种缓存扩展到了目录,允许客户端把整个目录的枚举结果缓存在本地。好处很直接:浏览含成千上万文件的目录、反复打开同一批文件时不必每次都走网络。代价是需要服务端在别的客户端请求同一对象时发起「中断」,把缓存收回,收回期间那一方的操作会短暂等待。

基本信息

适用平台Windows Server/客户端;Samba 4 部分支持
共享属性CachingMode:Manual、Documents、Programs、None、BranchCache
查看命令Get-SmbShare、Get-SmbConnection
客户端侧离线文件功能与客户端缓存独立于服务端设置
影响面浏览性能、打开延迟、多客户端写法一致性

缓存模式与行为

缓存模式典型行为适用场合
Manual应用自行决定是否缓存通用文件服务器默认值
Documents自动缓存文档类访问模式办公文档共享
Programs面向程序文件的访问模式只读程序分发
None禁用客户端缓存多写方共享、要求强一致
BranchCache配合分支缓存加速分支机构广域访问

查看与调整

查看与调整
# Windows:查看各共享的缓存模式
Get-SmbShare | Select-Object Name,CachingMode,ContinuouslyAvailable
# Windows:把多写方共享改为不做客户端缓存(需评估浏览性能影响)
Set-SmbShare -Name data -CachingMode None -Force
# 客户端侧核对是否存在离线缓存条目
Get-ChildItem $env:WINDIR\CSC | Select-Object -First 5
# Linux 客户端缓存行为主要受挂载参数控制,可对比 actimeo 参数的差异

典型使用场景

  • 超大目录频繁浏览:目录租约减少重复的枚举请求
  • 只读程序或安装包分发:缓存带来的收益大且没有一致性风险
  • 多台服务器写入同一共享目录:需要评估缓存收回带来的延迟
  • 分支机构经广域网访问总部共享:配合分支缓存降低重复传输
「刚写完别人看不到」要在缓存这一层找原因:提供写缓存租约时,其他客户端要等租约被收回才能看到新内容。若业务要求写入后立即可见,应把该共享设为不做客户端缓存,而不是到处刷新客户端。
服务端发起租约中断但客户端响应缓慢时,请求方会表现为访问卡顿甚至超时。这类故障在服务端看不出异常,需要在客户端侧的事件日志与网络抓包中确认中断往返是否被拖慢。

易错点

  • 多写方共享保留客户端写缓存:各客户端看到的内容长期不一致,排查时容易误判为数据丢失
  • 把缓存模式改动当成无风险调整:去掉缓存会明显增加广域链路的元数据流量
  • 忽略租约中断的往返时延:高时延链路上表现成随机卡顿,而吞吐与带宽指标都正常
  • 让备份或杀毒程序长期持有读租约:其他客户端访问同一目录时被拖慢
  • 把客户端离线缓存与服务端共享缓存混为一谈:两者的失效与清理方式不同,问题定位会跑偏

数据来源与参考

  • 微软 MS-SMB2 目录租赁与 Lease Break 章节
  • 微软 Learn《What's new in SMB 3.0》目录租赁说明
  • Samba 官方文档《SMB 客户端缓存与 oplock》

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/storage/smb-directory-lease-client-cache.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌​‌‌​‌​‌‌​​​‌​​​‌​‌‌​‌​‌‌​​‌​​​‌‌​‌​​‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌‌‌​​‌​​‌​‌‌​‌​‌‌​‌‌​​​‌‌​​‌​‌​‌‌​​​​‌​‌‌‌​​‌‌​‌‌​​‌​‌​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌​​​‌‌​‌​​‌​‌‌​​‌​‌​‌‌​‌‌‌​​‌‌‌​‌​​​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​​​​‌​‌‌​​​‌‌​‌‌​‌​​​​‌‌​​‌​‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​