当挂载文件系统失败后,优先推荐您通过自动脚本或排查思路定位问题。部分挂载操作的报错,自动检查脚本无法排查处理,NAS也提供了常见报错FAQ便于您查阅。本文介绍云服务器ECS挂载NAS文件系统时,挂载失败的排查方法与解决方案。
通过自动检查脚本定位问题
交叉挂载失败排查思路
常见挂载报错FAQ
Linux挂载NFS协议文件系统失败自动检查脚本
Linux挂载NFS协议文件系统失败可能存在多种原因,您可以执行以下步骤通过自动检查脚本定位问题。
登录挂载文件系统失败的Linux服务器。
下载自动检查脚本。
wget https://nas-client-tools.oss-cn-hangzhou.aliyuncs.com/linux_client/check_alinas_nfs_mount.py -P /tmp/
执行自动检查脚本并检查返回的配置正确性。
python2.7 /tmp/check_alinas_nfs_mount.py file-system-id.region.nas.aliyuncs.com:/ /mnt
重要参数说明如下所示,请根据实际值替换。
file-system-id.region.nas.aliyuncs.com:NAS NFS协议文件系统挂载点地址。您可以在NAS控制台,单击目标文件系统,然后单击挂载使用,将鼠标放置在挂载地址列的图标上获取挂载点地址。
/:NAS文件系统目录。
/mnt:当前服务器上待挂载的本地路径。
修正挂载配置后,自动检查脚本会返回挂载命令,并提示检查结束。
复制并执行挂载命令,检查挂载结果。
Windows挂载SMB协议文件系统失败自动检查脚本
Windows挂载SMB协议文件系统失败可能存在多种原因,您可以执行以下步骤通过自动检查脚本定位问题。
登录挂载文件系统失败的Windows服务器。
在PowerShell工具或者PowerShell ISE工具中执行以下命令下载并运行挂载排查脚本,并根据脚本给出的具体解决方案执行操作。
下载排查脚本。
Invoke-WebRequest https://nas-client-tools.oss-cn-hangzhou.aliyuncs.com/windows_client/alinas_smb_windows_inspection.ps1 -OutFile alinas_smb_windows_inspection.ps1
运行排查脚本。
.\alinas_smb_windows_inspection.ps1 -MountAddress abcde-123.region-id.nas.aliyuncs.com -Locale zh-CN
其中abcde-123.region-id.nas.aliyuncs.com为挂载点,请根据实际值替换。
Linux挂载SMB协议文件系统失败排查思路
Linux挂载SMB协议文件系统失败可能存在多种原因,您可以根据以下步骤依次排查或者检查/var/log/messages
和dmesg
输出。
Linux操作系统版本检查。
由于Linux系统对SMB协议的兼容程度较低,NAS SMB协议文件系统支持如下的Linux操作系统版本。
操作系统类型
操作系统版本
CentOS
CentOS 7.6 64位:3.10.0-957.21.3.el7.x86_64及以上
Alibaba Cloud Linux
Alibaba Cloud Linux 2.1903 64位:4.19.43-13.2.al7.x86_64及以上
Alibaba Cloud Linux 3.2104 64位:5.10.23-4.al8.x86_64及以上
Debian
Debian 9.10 64位:4.9.0-9-amd64及以上
Ubuntu
Ubuntu 18.04 64位:4.15.0-52-generic及以上
OpenSUSE
OpenSUSE 42.3 64位:4.4.90-28-default及以上
SUSE Linux
Enterprise Server 12 SP2 64位:4.4.74-92.35-default及以上
CoreOS
CoreOS 2079.4.0 64位:4.19.43-coreos及以上
CIFS客户端检查。
确认Linux操作系统是否已安装CIFS(cifs-utils)客户端或者
mount.cifs
是否在PATH指定的命令搜寻目录中。您可参照以下命令查看是否已安装CIFS客户端。如果未安装CIFS客户端或不在指定目录,请重新安装CIFS客户端。具体操作,请参见安装CIFS客户端。
操作系统
执行命令
Ubuntu
sudo apt list cifs-utils
Debian
RHEL
sudo yum list cifs-utils
CentOS
OpenSUSE
sudo zypper search -i cifs-utils
SLES12-SP2
CoreOS
which mount.cifs
网络连通检查。
您可以通过执行
ping <VolumeDomainName>
命令,检查网络连通性。确认云服务器ECS(Linux)和SMB协议文件系统是否属于同一个阿里云账号。
如果不属于同一个阿里云账号,请在ECS所属账号中创建SMB协议文件系统或者通过云企业网连通网络。更多信息,请参见通过云企业网实现跨账号跨地域挂载NAS。
确认云服务器ECS(Linux)和SMB协议文件系统处于同一个VPC中。
如果不在同一个VPC,请重新创建SMB协议文件系统或者通过云企业网连通网络。更多信息,请参见通过云企业网实现同地域跨VPC挂载NAS。
445端口检查。
确认云服务器ECS(Linux)安全组是否设置为不允许访问SMB协议文件系统的IP地址或445端口。
您可以通过执行
telnet <VolumeDomainName> 445
命令,检查连通性。如果端口445未打开,请在目标ECS实例的安全组中添加关于端口445的安全组规则。具体操作,请参见添加安全组规则。
确认云服务器ECS(Linux)未试图通过不受支持的TCP端口连接。
权限组检查。
确认SMB协议文件系统挂载点的权限组允许ECS访问。
如果不允许ECS访问,请修改权限组配置。具体操作,请参见修改权限组配置。
ECS管理员挂载权限检查。
确认云服务器ECS(Linux)管理员具备root权限或者sudo权限。
挂载命令检查。
确认挂载SMB协议文件系统的挂载命令正确。手动挂载命令如下所示:
sudo mount -t cifs //file-system-id.region.nas.aliyuncs.com/myshare /mnt -o vers=2.0,guest,uid=0,gid=0,dir_mode=0755,file_mode=0755,mfsymlinks,cache=strict,rsize=1048576,wsize=1048576
如果挂载命令参数设置错误,请修改为正确的命令。有关Linux挂载SMB协议文件系统的挂载参数说明,请参见Linux挂载SMB协议文件系统挂载参数说明。
SELINUX检查。
确认挂载的目标目录的SELINUX设置正确。
文件系统同一时刻挂载的计算节点数量检查。
确认是否云服务器ECS(Linux)挂载连接数太多,超过了单文件系统挂载上限(1000个)。
如果超出挂载上限,请根据业务场景调整。
如果未超出上限,请提交工单处理。
同时请提供文件系统信息、Linux版本信息、具体挂载命令、/var/log/messages和dmesg输出。
Windows系统挂载NFS协议的通用型NAS文件系统失败排查思路
Windows系统挂载NFS协议的通用型NAS文件系统失败可能存在多种原因,您可以根据以下步骤依次排查。
账号检查。
确认ECS实例和挂载点属于同一个账号。如果ECS实例和挂载点不属于同一个账号,您可通过云企业网连通账号后再挂载NFS协议文件系统。具体操作,请参见通过云企业网实现跨账号跨地域挂载NAS。
挂载点网络检查。
确认ECS实例与挂载点属于同一个VPC。如果ECS实例与挂载点不属于同一个VPC,您可以通过云企业网连通VPC然后挂载NFS协议文件系统。具体操作,请参见通过云企业网实现同地域跨VPC挂载NAS。
2049和111端口检查。
确认ECS安全组允许访问挂载点的2049和111端口。如果ECS安全组不允许访问挂载点的2049和111端口,请修改安全组规则。具体操作,请参见修改安全组规则。
您可通过telnet命令或Test-NetConnection命令检测端口的连通性。
在命令提示符中使用telnet命令。
telnet $mount_point.$region.nas.aliyuncs.com 2049 telnet $mount_point.$region.nas.aliyuncs.com 111
在PowerShell下使用Test-NetConnection命令。
Test-NetConnection $mount_point.$region.nas.aliyuncs.com -Port 2049 Test-NetConnection $mount_point.$region.nas.aliyuncs.com -Port 111
NFS协议文件系统权限组检查。
确认挂载点的权限组允许ECS访问。如果挂载点的权限组不允许ECS访问,请修改权限组配置。具体操作,请参见修改权限组配置。
如何解决子目录不存在报错?
报错信息:mount.nfs: access denied by server while mounting xxxx.nas.aliyuncs.com:/<dir>
挂载子目录时,挂载命令中指定的NAS子目录<dir>不存在导致报错。您可以先挂载NAS根目录,挂载成功后,创建需要的子目录,再重新挂载子目录。具体操作,请参见如何在Linux系统中创建NAS子目录并完成挂载?。
如何解决ECS实例重命名报错?
问题现象
NFSv4.0挂载时报错信息:mount.nfs: Operation not permitted或mount.nfs: an incorrect mount option was specified
,但是使用NFSv3却可以挂载成功。
问题原因
对于某些内核版本,如果执行挂载操作的ECS实例名称与其他ECS实例名称相同,且该重名ECS实例已使用NFSv4.0挂载了同一个NFS挂载点,此时会产生冲突。
解决方案
在报错的ECS实例上执行以下命令。
echo 'install nfs /sbin/modprobe --ignore-install nfs nfs4_unique_id=`cat /sys/class/dmi/id/product_uuid`' >> /etc/modprobe.d/nfs.conf
在业务低峰期重启ECS实例。
您也可以手动卸载所有已挂载的NFS协议文件系统,并执行
rmmod
命令卸载NFSv4.0客户端和NFS内核模块。重新挂载NFS协议文件系统。具体操作,请参见挂载NFS协议文件系统。
挂载NFS协议文件系统时,返回mount.nfs: No such device
该如何处理?
问题现象
在ECS实例中挂载NFS协议文件系统的NAS时,返回如下报错信息。
mount.nfs: No such device
原因分析
可能是/etc/modprobe.d/sunrpc.conf文件中的options sunrpc tcp_slot_table_entries=128
配置写成了options sunrpc tcp_slot_entries=128
,导致sunrpc模块没有正常加载到内核。
解决方案
将/etc/modprobe.d/sunrpc.conf文件中的配置修改为
options sunrpc tcp_slot_table_entries=128
。执行
modprobe sunrpc
命令,加载sunrpc模块。重新挂载NFS协议文件系统。
挂载NFS协议文件系统时,返回mount: can't find /root/nas in /etc/fstab
该如何处理?
问题现象
在ECS实例中挂载NAS NFS协议文件系统时,返回如下报错信息。
mount: can't find /root/nas in /etc/fstab
问题原因
可能是执行命令格式错误。
解决方案
使用正确的挂载命令挂载NAS NFS协议文件系统。关于Linux挂载NFS协议文件系统的挂载命令参数说明,请参见挂载命令参数说明。
通用型NAS,请执行以下命令。
使用NFS v3协议挂载文件系统:
sudo mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.region.nas.aliyuncs.com:/ /mnt
使用NFS v4协议挂载文件系统:
sudo mount -t nfs -o vers=4,minorversion=0,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.region.nas.aliyuncs.com:/ /mnt
极速型NAS,请执行以下命令。
sudo mount -t nfs -o vers=3,nolock,noacl,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.region.extreme.nas.aliyuncs.com:/share /mnt
其中,file-system-id.region.nas.aliyuncs.com
为NFS协议文件系统挂载点地址,请根据实际值替换。
如何解决挂载通用型NAS NFS协议文件系统时,系统返回file handle error
错误?
问题原因
可能是系统不存在Locking注册表,或Locking注册表存在,但Locking值不为1。
解决方案
打开命令提示符,执行
regedit
命令,进入注册表编辑器页面。选择
,然后右击空白处,选择 。将注册表名称修改为Locking,然后双击Locking,在弹出的编辑DWORD(32位)值窗口中,将数值数据修改为1。
单击确定。
重启ECS实例。
重新挂载NFS协议的通用型NAS文件系统。
mount -o nolock -o mtype=hard -o timeout=60 \\file-system-id.region.nas.aliyuncs.com\! Z:
请根据实际情况替换盘符
Z:
和挂载点域名file-system-id.region.nas.aliyuncs.com
。执行
mount
检查是否挂载成功。挂载完成后,回显信息必须包括mount=hard、locking=no以及timeout参数>=10,否则说明挂载有问题。
如何检查和解决Windows挂载SMB协议文件系统返回系统错误53?
错误描述
未找到网络路径。
原因分析
网络未连通。
TCP/IP NetBIOS Helper服务未启动。
注册表未正确配置LanmanWorkstation。
解决方案
执行ping <挂载点地址>命令检查挂载点地址是否连通,延时是否正常。
如果网络连接正常,则执行步骤b。
如果网络连接不通,请您先通过以下方式排查网络异常。
确认挂载命令正确,无多余或缺少
/
、\
、空格及myshare等内容。正确挂载SMB协议文件系统的命令格式:
net use <挂载目标盘符> \\<挂载点地址>\myshare
示例:
net use z: \\xxxx.cn-hangzhou.nas.aliyuncs.com\myshare
在控制台确认文件系统类型为SMB。
确认挂载点地址填写正确。
确认ECS实例与挂载点在同一个VPC中。
确认跨VPC或通过VPN连入的客户端,网络配置正确。
执行telnet <挂载点地址> 445命令检查SMB服务是否可用。
确认是否已启动TCP/IP NetBIOS Helper服务。具体操作,请参见挂载SMB协议文件系统。
打开注册表,确认
中ProviderOrder的值已包括LanmanWorkstation。如果没有,请添加。
如何检查和解决Windows挂载SMB协议文件系统返回系统错误58?
错误描述
指定的服务器无法运行请求的操作。
原因分析
客户端SMB协议版本不兼容。
解决方案
请确认Windows系统版本为Windows 2008 R2及以上版本(不包括Windows 2008)。
如何检查和解决Windows挂载SMB协议文件系统返回系统错误64?
错误描述
指定的网络名不可用。
原因分析
NAS权限组未允许目标ECS访问。
NAS权限组未正确配置目标ECS的内网IP地址或VPC IP地址。
服务欠费。
选择经典网络进行挂载时,ECS和NAS不属于同一阿里云UID。
文件系统类型不是SMB。
解决方案
无权访问NAS文件系统资源,请从以下方面进行排查。
确认文件系统挂载点权限组已包含该机器的内网IP或VPC IP。
确认阿里云UID未欠费。
确认经典网络挂载时,ECS和NAS属于同一个阿里云UID。
确认文件系统类型为SMB。
如何检查和解决Windows挂载SMB协议文件系统返回系统错误67?
错误描述
找不到网络名。
原因分析
关键的网络服务未启动。
解决方案
启动如下服务,具体操作,请参见挂载SMB协议文件系统。
启用Workstation服务。
启用TCP/IP NetBIOS Helper服务。
如何检查和解决Windows挂载SMB协议文件系统返回系统错误85?
错误描述
本地设备名已在使用中。
原因分析
目标盘符已被占用。
解决方案
请更换目标盘符重新挂载文件系统。
如何检查和解决Windows挂载SMB协议文件系统返回系统错误1231?
错误描述
无法连接网络位置。
原因分析
系统未安装或未启用Microsoft网络客户端。
系统未安装或未启用Microsoft网络的文件和打印机共享。
解决方案
安装并启用Microsoft网络客户端或Microsoft网络的文件和打印机共享。
如果已安装但未启用Microsoft网络客户端或Microsoft网络的文件和打印机共享,请选中对应的选项。并通过以下方式安装并开启对应的选项。
打开网络与共享中心,单击主机所连网络。
单击属性。
在无线网络连接属性对话框中,单击安装
安装Microsoft网络客户端。
在选择网络功能类型对话框中,选择客户端,单击添加。
选择Client for Microsoft Networks,单击确定。
安装Microsoft网络的文件和打印机共享。
在选择网络功能类型对话框中,选择服务,单击添加。
选择
,单击确定。
如何检查和解决Windows挂载SMB协议文件系统返回系统错误1272?
错误描述
系统提示:不能访问此共享文件夹,因为您组织的安全策略阻止未经身份验证的访客访问。这些策略可帮助保护您的电脑免受网络上不安全设备或恶意设备的威胁。
原因分析
Windows系统因安全策略阻挡了以来宾访问权限(Guest Auth)访问SMB协议文件系统的用户。
解决方案
若您的系统为Windows Server 2016之后版本(不包括Windows Server 2016),请修改以下注册表项允许来宾访问权限(Guest Auth)。
登录挂载文件系统的ECS服务器。
打开命令提示符,执行
regedit
命令,进入注册表编辑器页面。在
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
路径下,确认AllowInsecureGuestAuth注册项值为1。如果AllowInsecureGuestAuth注册项的值为0,则单击鼠标右键修改AllowInsecureGuestAuth,将数值数据(V)中的值修改为1。
如果未找到AllowInsecureGuestAuth注册项,则切换到PowerShell,执行以下命令,添加AllowInsecureGuestAuth注册项。
New-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters -Name AllowInsecureGuestAuth -PropertyType DWORD -Value 1
重新挂载SMB协议文件系统。
net use Z: \\file-system-id.region.nas.aliyuncs.com\myshare
如果继续返回1272错误,可能是RequireSecuritySignature注册项的值为1,请将该值修改为0,然后再重新挂载SMB协议文件系统。
RequireSecuritySignature注册项路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
。
更多信息,请参见Guest access in SMB2 disabled by default in Windows和Overview of Server Message Block signing。
如何解决服务器开机自启动挂载NFS协议文件系统失败?
问题现象
已配置服务器重启后自动挂载NFS协议文件系统,但重启时,自动挂载失败。
原因分析
可能服务器的系统为CentOS 7.0。CentOS 7.0默认不处理fstab中的非local文件系统,remote-fs.target服务状态为disable,因此导致重启云服务器后,自动挂载NFS协议文件系统失败。
配置项不会随着内核版本升级而变动,所以CentOS 7.0升级到7.9内核时,remote-fs.target服务依然是关闭的,需要您手动开启remote-fs.target服务。
解决方案
您可以任选以下一种方案实现服务器开机自启动挂载NFS协议文件系统,然后再打开/etc/fstab配置文件,添加挂载配置。如何添加挂载配置,请参见挂载NFS协议文件系统。
方案一:彻底解决
依次执行以下命令,开启remote-fs.target服务,实现服务器开机自启动挂载NFS协议文件系统。
systemctl start remote-fs.target
systemctl enable remote-fs.target
方案二:临时解决
通过在系统的rc.local中执行以下命令,开启remote-fs.target服务,实现服务器开机自启动挂载NFS协议文件系统。
[ ! -f /etc/rc.local ] && echo '#!/bin/bash' > /etc/rc.local; echo "mount -a -t nfs" >> /etc/rc.local; chmod +x /etc/rc.local
为什么Windows Server 2016 IIS无法加载SMB volume文件?
Windows Server 2016的IIS无法加载SMB协议文件系统的解决方案,请参见安装和配置AD域。
如何检查并解决Windows NFS soft挂载问题?
问题描述
在Windows系统上使用NFS协议文件系统时,默认使用soft模式进行挂载,而在以下场景中soft模式会对数据一致性造成影响,并且会造成应用异常退出。
数据一致性:使用soft模式挂载时,如果请求超时,则返回错误。对于应用,这个操作是未完成的;对于服务端,这个请求可能已经执行,所以会造成数据不一致。
应用异常退出:使用soft模式挂载时,如果请求超时,则返回超时错误。在某些语言中,会抛出异常,如果应用未处理,则会异常退出。
解决方案
在Windows系统中,使用hard模式挂载NFS协议文件系统,可以避免以上问题。
执行
mount
命令检查当前的挂载模式。如果显示
mount=soft
,则按照以下步骤进行整改。如果显示
mount=hard
,则无需整改。
停止当前正在使用此NFS协议文件系统的应用。
卸载NFS协议文件系统。
umount H:
请根据实际挂载盘符进行替换挂载命令中的盘符
H:
。重新挂载NFS协议文件系统。
mount -o nolock -o mtype=hard -o timeout=60 \\xxxxxx.cn-hangzhou.nas.aliyuncs.com\! h:
请根据实际情况替换挂载点地址
xxxxxx.cn-hangzhou.nas.aliyuncs.com
和挂载盘符h:
。执行
mount
命令验证挂载结果。如果回显信息包括mount=hard、locking=no以及timeout的参数值>=10,则表示挂载成功。
如何解决Windows挂载NFS协议文件系统的报错?
问题描述:无效文件句柄
解决方案:请您按照正确步骤及参数配置重新挂载。具体操作,请参见挂载NFS协议文件系统(通用型NAS)。
问题描述:网络错误-53
解决方案:请您按照正确步骤及参数配置重新挂载,具体操作,请参见挂载NFS协议文件系统(通用型NAS)。
问题描述:网络错误-1222
解决方案:请您安装NFS客户端之后,重新执行挂载操作。具体操作,请参见步骤一:安装NFS客户端。
使用容器挂载NAS时,提示access denied by server while mounting <挂载地址>
问题现象
为容器挂载NAS文件系统时,提示access denied by server while mounting <挂载地址>
。
问题原因
可能存在以下原因:
挂载目录不存在。
启动容器时使用的宿主机角色,没有修改NAS的权限
挂载点配置的权限组无容器的访问权限
解决方案
确认挂载目录是否存在。
您可以执行
cd <挂载目录>
命令,验证挂载目录是否存在。确认容器启动用户是否有root权限。
如果容器启动用户无root权限,则需要通过root登录NAS文件系统,改变权限属性后再挂载,保持容器用户和挂载点文件系统的权限一致。在容器内挂载时,需要以privileged方式运行容器。
确认挂载点配置的权限组是否包含容器的IP。
通过云助手批量挂载、卸载、查询状态失败时,该怎么办?
首先确认填写的挂载参数都符合条件。其次观察命令结果的错误码,根据错误提示进一步处理。更多信息,请参见错误信息。最后可以使用一键挂载功能,尝试先在一台ECS上面执行操作,如果失败再看相关报错提示,处理问题。
您也可以通过NAS控制台,先在一台ECS实例上挂载文件系统,如果挂载失败,请根据提示信息进一步处理。
通过控制台挂载文件系统失败可能有哪些原因?
请您排查以下挂载失败原因并尝试修复。
挂载失败分类 | 挂载失败可能原因 | 解决方案 |
ECS实例或云助手状态异常 | ECS实例非运行中状态 | 在ECS控制台检查目标ECS实例状态并修复。 |
云助手客户端未安装 | 请您安装云助手客户端。具体操作,请参见Linux实例安装云助手Agent。 | |
挂载命令运行超时或中断 | NFS客户端安装太慢 | 等待一段时间,再次尝试挂载操作。 |
NFS客户端安装失败 | NFS客户端软件源识别失败 | 请您登录ECS实例,手动安装NFS客户端。具体操作,请参见安装NFS客户端。 |
输入参数格式错误 | 挂载路径和NAS目录传入错误 | 请您检查挂载路径和NAS目录都必须是绝对路径,非必填参数使用默认值即可。 |
挂载路径不符合要求 | 挂载路径非空目录 | 请您更换挂载路径,然后再次尝试挂载。 |
挂载路径已挂载在其他挂载点上 | ||
挂载路径的父目录已挂载在其他挂载点上 | ||
挂载命令错误 | 挂载参数配置错误 | 建议您使用默认挂载配置再次尝试挂载操作。 |
其他挂载失败原因 | 请执行错误排查脚本定位具体问题。具体操作,请参见挂载文件系统失败故障排查。 |