CFS 支持哪些协议?
协议 | 适用文件系统 | 适用 OS |
NFS 3.0 | 通用标准型、通用标准型(增强型)、通用性能型、通用性能型(增强型) | Linux |
NFS 4.0 | 通用标准型、通用标准型(增强型)、通用性能型、通用性能型(增强型) | Linux |
CIFS/SMB | 通用标准型、吞吐型 | Windows |
POSIX / MPI | Turbo 标准型、Turbo 性能型 | Linux(需安装 Turbo 专属客户端) |
注意:
NFS 和 SMB 不可同时挂载同一文件系统。通用标准型(增强型)和通用性能型(增强型)仅支持 NFS 协议,不支持 SMB 协议。
NFS 和 SMB 怎么选?
场景 | 推荐协议 |
性能优先 | NFS 3.0 |
需要文件锁定(并发写同一目录或文件) | NFS 4.0 |
Windows 客户端 | SMB/CIFS |
Linux 客户端 | NFS |
说明:
Turbo 系列是否支持 Windows?
仅吞吐型支持 Windows,提供大规模、分布式高性能共享存储。Turbo 标准型和 Turbo 性能型仅支持 Linux 客户端,使用 POSIX/MPI 私有协议。
通用标准型(增强型)是否支持 SMB?
不支持。通用标准型(增强型)仅支持 NFS 协议。如需使用 SMB 协议,请选择通用标准型或吞吐型。
如何在 Linux 上挂载 CFS 文件系统?
如何在 Windows 上挂载 CFS 文件系统?
挂载 CFS 时常见报错有哪些?如何解决?
Linux 常见报错:
报错 | 原因 | 解决方法 |
wrong fs type | 未安装 NFS 工具 | yum install nfs-utils 或 apt-get install nfs-common |
access denied | 挂载路径错误或权限组未放通 | 检查挂载点 ID 和权限组规则 |
Connection reset by peer | NFS v3端口未完全放通 | 放通111、892、2049端口 |
Windows 常见报错:
报错 | 原因 | 解决方法 |
错误53(找不到网络路径) | 网络不通 / 注册表未配置 | 检查 VPC、安全组、注册表 |
错误85(设备名已使用) | 盘符已被占用 | 更换目标盘符 |
错误1272(无权限) | Win10/2019+ Guest 访问未开启 | 修改注册表 AllowInsecureGuestAuth |
文件系统需要开放哪些端口?
文件系统协议 | 开放端口 | 确认网络连通性 |
NFS 3.0 | 111、892、2049 | telnet 文件系统 IP 2049 telnet 文件系统 IP 111 telnet 文件系统 IP 892 |
NFS 4.0 | 2049 | telnet 文件系统 IP 2049 |
CIFS/SMB | 445 | telnet 文件系统 IP 445 |
TURBO | 512 - 1023 | telnet 文件系统 IP 988 |
挂载点无法 mount,如何处理?
请参考以下方法进行排查:
查看错误消息。
检查是否安装了 nfs-utils、nfs-common、cifs-utils 等客户端工具。
确认本地挂载目录是否存在。
检查挂载点所在 VPC 网络是否和客户端主机所在 VPC 网络一致,地域是否相同。
检查 CFS 客户端所在主机的安全组策略是否禁止了外部端口访问。
CFS 无法写入,如何处理?
请参考以下方法进行排查:
查看报错信息。
检查客户端所在主机网络是否正常,telnet 挂载点端口是否通。
如果挂载的不是挂载点的根目录,请确认对应挂载的挂载点目录是否存在。
通用系列文件系统请确认 CFS 权限组是否允许客户端 IP 读写对应文件系统。
文件内容更新不同步,如何解决?
问题现象:两台 Linux 云服务器挂载同一个 NFS 文件系统,在服务器 A 上使用 append 方式写文件,在服务器 B 上用
tail -f 观察文件内容变化。服务器 A 写完后,10~30 秒延时后服务器 B 才能看到更新内容。但直接在服务器 B 上打开文件(如使用 vi)则可立即看到更新。原因:NFS 协议默认挂载时,kernel 维护了一份文件和目录属性的 metadata 缓存,用于减少 NFSPROC_GETATTR 远程调用次数。
tail -f 通过 sleep+fstat 观察文件属性变化,由于 metadata 缓存的存在,fstat 轮询到的并非实时属性,因此输出有延时。解决办法:请参见 通用系列 CFS 实践指南,使用 NFS 4.0协议挂载,同时增加
noac 选项禁用属性缓存。设置的访问权限不生效怎么办?
NFS 协议的文件系统支持配置多条规则,并根据优先级生效:
当同一权限组内单条 IP 与网段中包含的 IP 权限有冲突时,若优先级相同则优先生效单条 IP 的权限。
若配置了两个有重叠的网段、权限不同但优先级相同,则重叠网段的权限会随机生效,请尽量避免重叠网段配置。
注意:
CIFS/SMB 文件系统不支持优先级,配置后不生效。
Docker 或 Kubernetes 部分挂载成功、部分失败如何处理?
由于协议兼容问题,若使用 Docker 或 Kubernetes 等客户端挂载 CFS,推荐使用 NFS v3协议(使用 NFS v4可能出现部分客户端无法正常挂载的问题)。
使用 NFS 挂载后,Windows 下没有写入权限,如何处理?
请严格按照操作指引,修改注册表,允许匿名用户/用户组访问,并将 mount 的 Lock 参数置为1,推荐重启系统使注册表生效再尝试挂载。详情请参见 在 Windows 客户端上使用 CFS 文件系统。
Windows Server 2016 上 IIS 与 CIFS 协议无法协同工作?
对于 Windows Server 2016 操作系统,由于默认安全策略的更改,需完成以下配置才能实现 IIS 和 CIFS 协议协同工作:
1. 修改 SMB 客户端注册表项:
HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\LanmanWorkstation\\Parameters\\AllowInsecureGuestAuth,设置值为 1(若不存在则新建 DWORD 32 位值)2. 指定本地用户访问存储:打开 IIS 管理器 → 网站 > Default Web Site → 基本设置 → 连接为 → 选择特定用户 → 设置用户名密码 → 确定。
使用 vers=4.0挂载命令报错如何处理?
使用 vers=4.0挂载时,部分客户端支持 NFS v4.1协议,会优先与服务端协商尝试 NFS v4.1挂载。由于 CFS 暂时只支持 NFS v4.0,可能报
NFS4ERR_MINOR_VERS_MIMATCH 错误。该错误不影响挂载,可忽略;协商失败后客户端和服务端会继续使用 NFS v4.0挂载。Windows 下修改文件名/目录名异常?
由于客户端对协议支持问题,Windows 客户端使用 NFS 协议挂载文件系统时,可能出现文件或目录无法重命名的情况。建议 Windows 用户使用 CIFS/SMB 协议来使用 CFS 文件系统。