重连的两个层面
第一层是映射与会话的恢复:断开后客户端是否自动重建会话、自动重连的凭据从哪里来。第二层是已打开文件的处理:正在写入的句柄是否仍有效,还是直接返回错误给应用。第一层不恢复,用户需要手工重新登录;第二层不保留,正在进行的作业就会中断,即使随后连接恢复也无法续写。
基本信息
| 适用平台 | Windows 客户端(SMB)与 Linux 客户端(SMB/NFS) |
|---|---|
| Windows 侧 | net use /persistent、凭据管理器 |
| Linux SMB | cifs 挂载的重试与软硬行为 |
| Linux NFS | hard/soft 挂载语义与超时重试参数 |
| 协议差异 | 支持连续可用的共享可做到切换期间不报错 |
不同配置下的行为
| 配置 | 断线时的表现 | 代价 |
|---|---|---|
| 持久映射 | 重启后自动重连 | 凭据变更后映射失效需人工更新 |
| 非持久映射 | 每次登录都要重新建立 | 用户操作不便,脚本需自行处理 |
| NFS 硬挂载 | 持续重试直到服务端恢复 | 服务端长期不可达时进程会一直阻塞 |
| NFS 软挂载 | 超时后把错误返回给应用 | 数据完整性风险,不适合写入型负载 |
| 连续可用共享 | 切换期间短暂阻塞后继续 | 需要集群与协议版本支持 |
配置示例
配置示例
# Windows:查看与设置持久映射
net use
net use \\10.0.0.20\data /persistent:yes
# Linux:NFS 读写型共享倾向硬挂载,避免把错误当成功
mount -t nfs -o vers=4.2,hard,timeo=600,retrans=2 10.0.0.10:/data /mnt/data
# Linux:cifs 挂载可指定重试行为,具体参数以自身内核文档为准
mount -t cifs -o vers=3.1.1,username=svc,uid=1001 //10.0.0.20/data /mnt/data写型负载不要用软挂载换便利:超时后应用收到错误却可能已经把失败当成写入结束,造成文件截断或内容不完整。需要妥协时应改用能保持句柄的方案,或把重试逻辑放到应用层显式处理。
Windows 的持久映射是按用户保存的,凭据来自凭据管理器。域密码变更、账号被停用或凭据被清理后,映射会在下次登录时静默失败,用户看到的只是「网络位置不可用」,实际原因在凭据而不在服务器。