ECS实例上挂载NAS文件存储失败的排查方法

概述

本文主要介绍在ECS实例上挂载阿里云NAS文件存储时,挂载失败的排查方法。

详细信息

NAS挂载失败分为NFS文件系统挂载失败和SMB文件系统挂载失败,以下是相关排查思路:

NFS文件系统挂载问题

在ECS实例中挂载NFS文件系统失败时,可根据操作系统的不同,参见以下操作进行排查解决:

Linux挂载NFS文件系统

在Linux系统的ECS实例中挂载NFS文件系统失败时,请参见以下操作进行排查解决:

  1. 请确认ECS和NAS属于同一个UID,不同账号间的挂载需要建立VPC专线,详情请参见跨账户挂载文件系统
  2. 登录管理控制台,查看ECS和NAS是否在同一区域,归属的VPC是否相同。不同区域间的挂载需要建立VPC专线,详情请参见跨账户挂载文件系统,同一区域的不同可用区可以直接挂载。
  3. 检查挂载地址是否与挂载命令中输入的一致。
  4. 请执行以下步骤,通过自动检查脚本定位问题。
    1. 登录挂载文件系统失败的Linux服务器。
    2. 执行以下命令,下载自动检查脚本。
      wget -N https://code.aliyun.com/nas_team/nas-client-tools/raw/master/linux_client/check_alinas_nfs_mount.py -P /tmp/
    3. 执行以下命令,执行自动检查脚本。修正挂载配置后,自动检查脚本会返回挂载命令,并提示检查结束。
      python2.7 /tmp/check_alinas_nfs_mount.py [$Mount_Address]:/ /mnt
      说明
      • [$Mount_Address]为挂载点地址。
      • /为NAS文件系统目录。
      • /mnt为当前服务器上待挂载的本地路径,请您根据实际情况替换。
    4. 复制并执行挂载命令,检查挂载结果。
  5. 登录挂载文件系统失败的服务器,执行以下命令,确认和NAS间的网络连通性正常。
    ping [$Address]
    说明:[$Address]为NAS的地址。
  6. 执行以下命令,确认和NAS间的端口连通性正常。若端口不通,则检查权限设置是否正确或检查是否欠费。
    telnet [$Address] 2049
  7. 若依然挂载失败,则依次执行以下命令,收集信息。
    sudo grep "not responding, still trying" /var/log/messages
    uname -a
    sudo nfsstat
    sudo mountstats
    sudo netstat -alnp | grep 2049
  8. 根据上一步收集的信息,请参见自动挂载NFS文件系统,使用fstab方式进行相关配置。

Windows挂载NFS文件系统

推荐Windows系统挂载使用SMB文件系统,由于Windows系统对NFS协议的兼容程度不如Linux系统完善,建议仅在需要跨操作系统共享数据的情况下使用Windows系统挂载NFS文件系统。在Windows系统的ECS实例中挂载NFS文件系统失败时,请参见以下操作进行排查解决:

  • 如果存在以下报错,请根据以下具体报错信息进行处理:
    • 报错信息:无效文件句柄

      解决方法:请您按照正确步骤及参数配置重新挂载,详情请参见Windows系统挂载NFS文件系统

    • 报错信息:网络错误-53

      解决方法:请您按照正确步骤及参数配置重新挂载,详情请参见Mounting NFS on a Windows Client

    • 报错信息:网络错误-1222
      MISTAKE

      解决方法:请您安装NFS客户端之后,重新执行挂载操作。详情请参见安装NFS客户端

  • 不存在以上报错,请参见Linux挂载NFS文件系统章节的第1~3步,进行问题排查。

SMB文件系统挂载问题

在ECS实例中挂载SMB文件系统失败时,可根据操作系统的不同,参见以下操作进行排查解决:

Windows挂载SMB文件系统

Windows挂载SMB文件系统失败可能存在多种原因,您可以通过以下操作进行排查:

  1. 登录挂载文件系统失败的Windows服务器,下载挂载排查脚本
  2. 在Windows的Powershell工具或者Powershell ISE工具中,执行以下命令,执行alinas_smb_windows_inspection.ps1挂载排查脚本。
    .\alinas_smb_windows_inspection.ps1 -MountAddress [$Mount_Address] -Locale zh-CN
    说明:[$Mount_Address]为挂载点地址。
    如果PowerShell显示“无法加载,因为在此系统中禁止运行脚本”,则执行以下命令,更改系统脚本执行策略。
    Set-ExecutionPolicy RemoteSigned
  3. 更多Windows挂载SMB文件系统的报错及解决方案,请参见Windows SMB挂载失败的原因分析,根据错误码查询解决方案。

Linux挂载SMB文件系统

文件存储NAS支持在Linux系统中挂载SMB文件系统,挂载失败的原因如下,请参见Linux系统挂载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未打开,请在目标ECS实例的安全组中添加关于端口445的安全组规则,详情请参见添加安全组规则
    • 云服务器ECS(Linux)管理员没有root权限或者没有被设置为有mount命令的sudo权限。
    • 挂载时使用的文件系统类型不是cifs。
    • 挂载时使用的vers选项不是2.0。挂载时没有指定guest方式挂载。
    • 挂载时指定的uid、gid、dir_mode或者file_mode不正确。
    • 挂载的目标目录的SELINUX设置不正确。
    • 云服务器ECS(Linux)挂载连接数太多,超过了单文件系统挂载上限(1000)。这个在容器场景较容易发生。

相关文档

关于NAS文件存储挂载失败的排查与处理,请参见挂载失败的排查与处理方法

适用于

  • 文件存储NAS