常见问题

最近更新时间: 2024-06-12 15:06:00

CFS 支持哪些平台?

支持在例如云服务器的 Linux 、 Unix、 Windows 等客户端、容器等;同时,通过打通 VPN、专线接入或者其他方式 ,客户 IDC 或其他平台的计算节点也可以访问 CFS。

文件存储怎么收费?

仅存储费用。按实际存储量计费(按每小时峰值存储量收取费用)。

文件存储支持哪些访问协议?

NFS v3.0/v4.0 协议。

其中由于 Windows 及 Linux 3.10 (例如 CentOS 6.* ) 早期版本内核的操作系统客户端对 NFS v4.0 协议兼容问题,挂载后无法正常使用,此类客户端请使用 NFS v3.0 挂载。

文件存储相关概念有哪些?

文件系统:文件系统是文件存储的实例,将文件系统挂载( mount )到 CVM 云服务器后,可以像使用本地文件系统一样使用文件存储、支持子目录挂载。

挂载点:挂载点是计算节点访问文件存储的入口,定义了什么类型网络的计算节点、采用怎样的权限来访问文件存储。

挂载点无法 mount,如何处理?

请参考以下方法进行排查:

  • 查看错误消息。
  • 检查是否安装了 nfs-utils 、 nfs-common 、cifs-utils 等。
  • 本地挂载目录是否存在。
  • 挂载点所在 VPC 网络是否和客户端主机所在 VPC 网络一致,地域是否相同。
  • CFS 客户端所在的主机是否有做禁止访问外部端口的安全组策略,具体端口请参考 文件系统开放端口说明

使用 vers=4.0 挂载命令有报错该如何处理?

使用 vers=4.0 挂载命令挂载时,由于部分客户端支持 NFS v4.1协议,客户端会优先跟服务端协商尝试使用 NFS v4.1协议挂载,此时由于 CFS 暂时只支持 NFS v4.0 协议,可能会报 NFS4ERR_MINOR_VERS_MIMATCH 错误,但是该错误不会影响客户端挂载、可以忽略;协商失败后,客户端和服务端会继续协商使用 NFS v4.0 进行挂载。

在 Windows Server 2016 操作系统设置了 Windows IIS Web 服务后, IIS 和 cifs 协议仍无法协同工作?

对于 Windows Server 2016 操作系统,由于默认安全策略的更改,还需完成以下配置才能实现 IIS 和 cifs 协议协同工作:

  1. 修改 SMB 客户端的注册表项:

    HKEY_LOCAL_MACHINE> SYSTEM> CurrentControlSet> Services> LanmanWorkstation> Parameters> AllowInsecureGuestAuth

    若该设置已经存在,则设置成1即可;若设置不存在,则需要点击鼠标右键、选择【新建】>【DWORD(32 位)值】, 设置数值名称为 AllowInsecureGuestAuth,其值设置为1。

  2. 指定一个本地用户来访问存储:

    打开 Internet 信息服务(IIS)管理器,在当前主机下:

    1. 选择【网站】> 【Default Web Site】,单击【基本设置】。
    2. 在编辑网站对话框中,单击【连接为】,选择特定用户。
    3. 单击【设置】,设置用户名、密码。
    4. 最后单击【确定】即可。

CFS 无法写入,如何处理?

请参考以下方法进行排查:

  • 查看报错信息。
  • 检查客户端所在主机网络是否正常,telnet 挂载点端口是否通,具体端口请参考 文件系统开放端口说明
  • 如果挂载的不是挂载点的根目录,请确认对应挂载的挂载点目录是否存在(这里常见的错误信息是“Stale file handle”,可以通过已经挂载根目录的设备查看其对应子目录是否存在)。

文件系统需要开放哪些端口?

文件系统协议 开放端口 确认网络联通性
NFS 3.0 111,892,2049 telnet 文件系统 IP 2049
NFS 4.0 2049 telnet 文件系统 IP 2049
CIFS/SMB 445 telnet 文件系统 IP 445

注意: CFS 暂不支持 ping。

设置的访问权限不生效怎么办?

NFS 协议的文件系统,支持配置多条规则,并根据优先级生效。其中:

  • 当同一个权限组内单条 IP 与网段中包含的 IP 的权限有冲突时,会生效优先级高的规则。若优先级相同则优先生效单条 IP 的权限。
  • 若配置了两个有重叠的网段权限不同但优先级相同,则重叠网段的权限会随机生效,请尽量避免重叠网段的配置。

注意: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/% )-->

Windows 下修改文件名/目录名异常?

由于客户端对协议支持问题, Windows 客户端使用 NFS 协议挂载文件系统,会出现文件或者目录无法重命名的情况。此类情况,建议 Windows 用户使用 CIFS/SMB 协议来使用 CFS 文件系统。

使用 nfs 挂载后,Windows 下没有写入权限,如何处理?

请严格按照操作指引,在注册表中添加 AnonymousUid 和 AnonymousGid ,并重启系统后在重试。 可参考文档:在 Windows 客户端上使用 CFS 文件系统

Windows IIS 无法使用 mapped driver,怎么办?

按照 在 Windows 客户端上使用 CFS 文件系统 中的步骤,配置正确的 NFS 客户端程序并修改注册(添加访问用户)表。 重启客户端后,打开 IIS 配置页面,增加站点并单击【高级设置】。

将高级设置中的 "物理路径" 为 CFS 挂载点。

如何处理 Docker 或 Kubernetes 部分挂载成功、部分失败问题?

由于协议兼容问题,若使用 Docker 或者 Kubernetes 等客户端挂载 CFS, 推荐使用 NFS v3 协议。(使用 NFS v4 协议可能会出现部分客户端无法正常挂载的问题)

希望在 Window Server 2012 R2 上使用 CFS 文件系统作为 IIS 服务器目录,但无法挂载文件系统?

由于 IIS 服务器挂载文件系统时,会将 NFS v3.0 协议挂载中需要用到的 FSID 转换为大写,因此导致文件系统无法正常挂载。建议使用 Windows Server 2016 主机来规避该问题。

文件内容更新不同步,如何解决?

问题现象

两台 Linux 云服务器挂载同一个 NFS 文件系统,在云服务器 A 上使用 append 方式写文件,在云服务器 B 上用tail -f观察文件内容的变化。在云服务器 A 上写完之后,10 - 30秒的延时后在云服务器 B 上才能看到更新后的内容。但在相同的场景下,如果直接在云服务器 B 上打开文件(例如使用 vi 命令)则可立即看到更新的内容。

问题出现原因

与 NFS 协议 mount 命令的选项以及tail -f的实现相关,用户使用此挂载命令:

sudo mount -t nfs -o vers=4.0 <挂载点IP>:/ <待挂载目标目录>

当云服务器 B 以 NFS mount 命名挂载的文件系统,默认情况下 kernel 维护了一份文件和目录属性的 metadata 缓存。文件和目录属性包括许可权、大小、和时间戳记等,缓存的目的是减少 NFSPROC_GETATTR 远程过程调用(RPC)的次数。

tail -f的实现是通过 sleep+fstat 来观察文件属性(主要是文件大小)的变化,然后读入文件并输出。因此,fstat 的结果决定了 tail -f是否能实时输出文件内容。但是,由于文件及目录的 metadata 缓存的存在,fstat 轮询到的并不是实时的文件属性,因此, NFS 服务器端文件虽然已经更新,但tail -f却没法知道文件已经发生了变化,因此输出会有延时。

解决办法

使用 mount 命令挂载文件系统时增加 noac 选项可以禁用文件和目录属性的缓存。挂载命令如下:

sudo mount -t nfs -o vers=4.0,noac <挂载点IP>:/ <待挂载目标目录>
sudo mount -t nfs -o vers=3,noac,nolock,proto=tcp <挂载点IP>:/<FSID或者子目录> <待挂载目标目录>

Windows 7-based 或 Windows Server 2008 R2-based 操作系统使用 NFS 协议挂载时报错(0x800704C9)

问题原因

由于这些版本机器缓存了 NFS 初始的端口地址,使用旧的地址与 nlockmgr 通信,详细原因参考 微软官网说明

解决办法

打开 Windows 的自动更新功能,将系统升级到官方最新版本后即可修复该问题。

Windows 客户端使用 NFS v3协议挂载后创建或修改文件报错,如何解决?

问题原因

NFSv3 协议暂不支持锁,需要关闭,否则会导致修改文件失败。

解决方法

挂载好文件系统后,打开命令行工具,在命令行工具中输入“mount”。 若字段 Locking=yes,则请修改注册表,强制关闭锁。

操作步骤

  1. 找到如下注册表路径 【HKEY_LOCAL_MACHINE】 > 【SOFTWARE】 > 【Microsoft】 > 【ClientForNFS】 > 【CurrentVersion】 > 【User】 > 【Default】 > 【Mount】。
  2. 在右侧内容区右键新建【DWORD (64-位)值】,名称为”Locking”,值为”0” 。