开发者社区> 问答> 正文

通过云服务器ECS(Linux)访问SMB文件系统如何排查问题?

通过云服务器ECS(Linux)访问SMB文件系统如何排查问题?

展开
收起
小天使爱美 2020-03-31 21:59:37 1506 0
1 条回答
写回答
取消 提交回答
  • 本文详细列出了从云服务器ECS(Linux)访问SMB文件系统时的常见问题、原因与解决方案。

    无法挂载SMB文件系统 通常原因: 使用了低版本或者不兼容的Linux操作系统版本,SMB文件系统支持如下的Linux分发版本。 CentOS 7.6 64bit (3.10.0-957.5.1.el7.x86_64) Ubuntu 18.04 64bit(4.15.0-48-generic) Debian 9.9 64bit(4.9.0-9-amd64) Suse Enterprise Server 12 SP2 64bit(4.4.74-92.35-default) OpenSUSE 42.3 64bit(4.4.90-28-default) Aliyun Linux(4.19.34-11.al7.x86_64) CoreOS(4.19.43-coreos VersionID=2079.4.0) 客户端上未安装CIFS挂载工具(cifs-utils)或者mount.cifs不在PATH指定的命令搜寻目录中。 云服务器ECS(Linux)和SMB文件系统的网络不通。 云服务器ECS(Linux)和SMB文件系统不属于同一个阿里云用户。 云服务器ECS(Linux)和SMB文件系统不在同一个阿里云地域(region)。 云服务器ECS(Linux)和SMB文件系统不处于可连通的网络(VPC或经典网络)中。 说明 NAS支持本地挂载,如果Linux客户端在用户IDC中,可能是该IDC和SMB文件系统所处的的网络(VPC或经典网络)没有通过阿里云高速通道连接成功。 SMB文件系统的白名单设置不允许云服务器ECS(Linux)连接。 云服务器ECS(Linux)防火墙设置为不允许访问SMB文件系统的IP地址或445端口。 云服务器ECS(Linux)试图通过不受支持的TCP端口连接,现在SMB只支持445端口。 说明 您可以通过ping 和 telnet 445检查连通性。

    如果端口445未打开,请在目标ECS实例的安全组中添加关于端口445的安全组规则,详情请参见添加安全组规则。

    云服务器ECS(Linux)管理员没有root权限或者没有被设置为有mount命令的sudo权限。 挂载时使用的文件系统类型不是cifs。 挂载时使用的vers选项不是2.0。 挂载时没有指定guest方式挂载。 挂载时指定的uid、gid、dir_mode或者file_mode不正确。 挂载的目标目录的SELINUX设置不正确。 云服务器ECS(Linux)挂载连接数太多,超过了单文件系统挂载上限(1000)。这个在容器场景较容易发生。 解决方案: 参见通过云服务器ECS(Linux)访问SMB文件系统及上述可能原因,自行排查。 检查/var/log/messages和dmesg输出,自行排查。 联系阿里云NAS团队排查。 同时请提供Linux版本信息、具体挂载命令、/var/log/messages和dmesg输出。

    文件系统性能不佳 如果SMB文件系统性能不佳,您可以从以下方面进行排查。

    原因1:SMB单个文件系统的吞吐能力与存储量是相联系的。单文件系统的吞吐(读+写)上限与当前存储量呈线性关系。 解决方案:使用fio工具来测试SMB文件系统性能,详情请参见NAS性能测试。

    原因2:云服务器ECS(Linux)的单机网络带宽较小。 解决方案:使用多个云服务器ECS(Linux)达到文件系统的总体预期性能。

    原因3:禁用了SMB文件系统的客户端缓存。 解决方案:在挂载SMB文件系统时,cache=none表示禁用缓存,默认或者cache=strict表示使用缓存;您可以通过sudo mount | grep cifs命令检查所用的选项是否正确。

    原因4:没有设置合适的SMB客户端的I/O大小。 解决方案:根据业务需求调整rsize/wsize,缺省值:1048576。

    原因5:云服务器ECS(Linux)的CPU或内存的规格过低,或被其它业务占有过多。 解决方案:选择合适的云服务器ECS(Linux)规格、检查系统其它应用资源,确保系统满足CPU和内存要求。 您可以通过top命令检查系统cpu、mem使用情况。

    原因6:挂载时使用了atime选项。 解决方案:如果您的业务不是对文件的访问时间(atime)极为敏感请不要在挂载时使用atime选项。

    原因7:遇到大量小文件频繁读、少量写但需要写时通知的WebServer场景。 解决方案:您可以在客户端配置该WebServer(如Apache)产品特定的缓存机制或者联系阿里云NAS团队开通WebServer场景加速功能。

    迁移/复制文件系统中的文件时速度缓慢 如果已经排除了上述文件系统本身的性能问题,则可能原因是您没有使用并发式迁移/复制文件。您可以通过以下开源工具进行迁移/复制。

    GNU Parallel 说明 根据系统资源,选择合适的线程数。 示例:find * -type | parallel --will-cite -j 10 cp {} /mnt/smb/ & Fpart Fpsync multi 访问文件系统时,报错:Permission denied 原因:Linux管理员在挂载时使用了不正确的uid、gid、file_mode、dir_mode。

    解决方案:检查是否正确设置了uid、gid、file_mode、dir_mode等挂载选项,详情请参见通过云服务器ECS(Linux)访问SMB文件系统。

    文件名大小写变更 SMB文件系统对文件名大小写不敏感,和Windows系统保持一致。但在文件名大小写改名这个场景暂时没有支持。

    您可以先从大写文件名改成一个其它名字的文件,再改成小写文件名,反之亦然。

    不能改变文件owner,文件/目录mode 现在暂时不支持动态改变,只能在挂载时指定,详情请参见通过云服务器ECS(Linux)访问SMB文件系统。

    并发访问同一文件时,客户端出现无响应35s现象 原因:当前Linux SMB 内核驱动有缺陷,会造成在使用vers=2.1 or 3.0挂载时,在某些并发场景不能发出服务器端期待的SMB BreakAck协议包,导致服务器端无响应35s。

    解决方案:挂载文件系统时,使用vers=2.0 协议。

    不能使用ACL 暂时不支持使用ACL,如果您有强烈需求,请联系阿里云NAS团队。

    SMB挂载点无响应 原因:在Linux内核为3.10.0-514之前的Linux分发版中,SMB内核驱动在并发场景有时会crash(内核stack如下所示),导致挂载点无法被访问。内核日志中有如下类似信息: ... [ ] cifs_oplock_break+0x1f1/0x270 [cifs] [ ] process_one_work+0x17a/0x440 [ ] rescuer_thread+0x294/0x3c0 ... 解决方案: 使用cache=none重新挂载(性能会受影响)。 升级云服务器ECS(Linux)的操作系统。

    2020-03-31 22:23:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
如何运维千台以上游戏云服务器 立即下载
网站/服务器取证 实践与挑战 立即下载
ECS计算与存储分离架构实践 立即下载