可共享的文件存储服务
由于协议兼容问题,若使用 Docker 或者 Kubernetes 等客户端挂载 CFS, 推荐使用 NFS v3 协议。(使用 NFS v4 协议可能会出现部分客户端无法正常挂载的问题)
由于 IIS 服务器挂载文件系统时,会将 NFS v3.0 协议挂载中需要用到的 FSID 转换为大写,因此导致文件系统无法正常挂载。建议使用 Windows Server 2016 主机来规避该问题。
请严格按照操作指引,在注册表中添加 AnonymousUid 和 AnonymousGid ,并重启系统后在重试。
使用 vers=4.0 挂载命令挂载时,由于部分客户端支持 NFS v4.1协议,客户端会优先跟服务端协商尝试使用 NFS v4.1协议挂载,此时由于 CFS 暂时只支持 NFS v4.0 协议,可能会报 NFS4ERR_MINOR_VERS_MIMATCH 错误,但是该错误不会影响客户端挂载、可以忽略;协商失败后,客户端和服务端会继续协商使用 NFS v4.0 进行挂载。
对于 Windows Server 2016 操作系统,由于默认安全策略的更改,还需完成以下配置才能实现 IIS 和 cifs 协议协同工作:
由于客户端对协议支持问题, Windows 客户端使用 NFS 协议挂载文件系统,会出现文件或者目录无法重命名的情况。此类情况,建议 Windows 用户使用 CIFS/SMB 协议来使用 CFS 文件系统。
Linux 可以使用下面 shell 脚本来加速复制本地文件到 CFS。下面代码中,"线程数量" 可以根据需要调整。
threads=<线程数量>; src=<源路径/>; dest=<目标路径/>; rsync -av -f"+ */" -f"- *" $src $dest && (cd $src && find . -type f | xargs -n1 -P$threads -I% rsync -av % $dest/% )
<!--例如,threads=24; src=/root/github/swift/; dest=/nfs/; rsync -av -f"+ */" -f"- *" $src $dest && (cd $src && find . -type f | xargs -n1 -P$threads -I% rsync -av % $dest/% )-->
文件系统协议 | 开放端口 | 确认网络联通性 |
---|---|---|
NFS 3.0 | 111,892,2049 | telnet 文件系统 IP 2049 |
NFS 4.0 | 2049 | telnet 文件系统 IP 2049 |
CIFS/SMB | 445 | telnet 文件系统 IP 445 |