mount nfs常见出错信息总结

在配置上s3c-2410开发环境的过程中,开发时设置共享目录进行挂载, 但是老是出现各种各样的问题, 整了一个下午才全部完成,所以在这里总结一下

通常当NFS不能正常使用时候会给出提示,一般给出一下几种:

Permission denied


mount: 192.168.81.32:/opt failed, reason given by server: Permission denied
查看配置文件exports,是否为允许挂载的客户。

errno = No route to host


mount: RPC: Unable to receive; errno = No route to host
首先看是否在同一网段
再者输入:
[root@localhost etc]# service iptables status
看防火墙是否开启,有则将其关闭
[root@localhost etc]# service iptables stop
注意:但是这样子有时候其实还是有一些问题, 因此我们干脆直接将防火墙关闭掉, 同时关闭selinux

errno = Connection refused


mount: RPC: Unable to receive; errno = Connection refused
① 首先看nfs服务是否开启,
② 其次看rpcbind是否开启,
如果rpcbind没有运行,那在重新开启rpcbind后,要再restart nfs服务,
因为重启rpcbind已对nfs的一些配置造成影响,需要restart.
没错,看到这时候,你已经找到问题了,
[root@localhost etc]# service iptables stop
,然后再service nfs restart 下就可以了。

需要将在linux里交叉编译好的程序放在arm上运行,所以首先要将程序copy至arm上,选择了nfs。
但在arm上mount nfs的时候遇到了失败的情况:

在网上查找解决方案:
nfs mount 默认选项包括文件锁,依赖于portmap提供的动态端口分配功能。
解决方法:kill 文件锁(lockd)或者mount -o nolock
于是尝试mount -o nolock -t nfs 192.168.1.24:/home/test /mnt/nfs,正常工作。

not responding,still trying..


有时候传输大文件会出错,
NFS: server 192.168.81.32 not responding,still trying..
这个可能是NFS有问题,与RING或buffer的大小有关,
问题的原因分析:

1、NFS 的默认传输协议是 UDP,而PC机与嵌入式系统通过UPD交互时就会出现严重的网卡丢包现象;
2、server机和目标机网卡传输速率冲突,使得目标机需要大量时间复制大量数据包,其实如果目标机的网卡速率够大,则不用分那么多包,也不会冲突。
问题的解决方案:

方法一:

在客户端改用TCP协议,使用下面的命令,在mount命令中加上参数tcp
mount -o tcp ,nolock 192.168.14.223:/nfs_root /mnt
也可这样干:
跟踪了fs/nfs/nfsroot.c的代码,发现在nfs作为根文件系统时,参数可以直接写在“nfsroot=”后面,每个参数用逗号隔开,如:
nfsroot=192.168.10.1:/rootfs,proto=tcp,nfsvers=3,nolock
这样就可以指定nfs使用tcp协议
方法二:

指定传输速率(限定传输时一次读写的数据大小)

mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168.14.223:/nfs_root /mnt

3.挂载时出卡在连接状态
解决:在确认网络连接无异常的情况下则可能是iptable或者网络防火墙阻拦了NFS使用的TCP和UDP的111以及2049端口.以ESX为例,在需要挂载NFS共享盘时首先需要编辑防火墙安全文件允许访问该端口.或者干脆禁止防火墙

svc: failed to register lockdv1 RPC service (errno 111).

解决方案:

nfs mount 默认选项包括文件锁,依赖于portmap提供的动态端口分配功能。
解决方法:kill 文件锁(lockd)或者mount -o nolock

挂载时使用了RW权限挂载,当时读写仍然Permission denied


重启NFS服务以后,在客户机通过

mount -o tcp,nolock 192.168.10.77:/home/gatieme/Work/NfsRoot /mnt/nfs

命令将网络文件mount到本地。执行完成之后,目录是可以访问了,但无法写入。感觉有点奇怪,明明在命令中指定可以写入了。
于是到网上搜索资料,发现exports目录权限中,有这么一个参数no_root_squash
其作用是:登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有root 的权限!。

默认情况使用的是相反参数root_squash
在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个身份。

因为我的客户端是使用root登录的,自然权限被压缩为nobody了,难怪无法写入。将配置信息改为:

/home/gatieme/Work/NfsRoot 192.168.10.123(rw,no_root_squash)

据说有点不安全,但问题是解决了。

<think>嗯,用户问的是关于NFS在CentOS 6.5上的配置。首先,我需要确认自己是否还记得NFS的基本概念。NFS是网络文件系统,允许不同服务器之间共享目录和文件。CentOS 6.5已经比较老了,但可能有些用户还在用,所以得确保步骤适用于那个版本。 接下来,应该分服务端和客户端两部分来考虑。服务端需要安装NFS相关的软件包,比如nfs-utils和rpcbind。记得CentOS 6用的是service命令来管理服务,而不是systemd。所以启动服务的时候要用service命令,并且要设置开机启动,使用chkconfig。 然后是配置exports文件,这里需要注意语法,每个共享目录的权限设置,比如rw表示读写,sync是同步写入,no_root_squash可能会涉及安全风险,需要提醒用户谨慎使用。配置完成后,需要重新加载exports,使用exportfs -ra命令。 防火墙设置方面,CentOS 6默认用的是iptables。需要开放NFS相关的端口,比如111(rpcbind)、2049(nfsd),还有可能需要其他端口,比如mountd、statd等。这部分容易出错,用户可能会遇到连接问题,所以得详细说明如何添加iptables规则,或者暂时关闭防火墙进行测试。 服务端测试部分,可以用showmount命令检查共享是否正常,这样用户能确认配置是否正确。 客户端方面,同样需要安装nfs-utils和rpcbind,然后创建挂载点,使用mount命令挂载。还要记得修改/etc/fstab实现开机自动挂载,这里要提醒用户使用正确的NFS版本参数,比如nfsvers=3,特别是如果服务端是旧版本的话。 可能遇到的问题:如果客户端挂载失败,可能是防火墙问题,或者版本不兼容,或者rpcbind服务没启动。需要检查这些方面。另外,SELinux可能会干扰,可能需要临时禁用或者调整策略。 安全方面,要提醒用户共享权限不要设置太宽松,尤其是生产环境中。还有,CentOS 6.5已经EOL,建议升级到更新的版本以获得支持。 整个过程中,命令的准确性很重要,比如正确的软件包名称,正确的服务管理命令。另外,考虑到用户可能不太熟悉旧版系统,步骤要详细,避免遗漏关键点。同时,注意中文字符的正确使用,避免编码问题。</think>以下是在CentOS 6.5系统中配置NFS服务的详细步骤: --- ### 一、服务端配置 1. **安装必要软件包** ```bash $ yum install nfs-utils rpcbind ``` 2. **创建共享目录** ```bash $ mkdir /nfs_share $ chmod 755 /nfs_share ``` 3. **配置exports文件** ```bash $ vi /etc/exports ``` 添加内容: ```bash /nfs_share 192.168.1.0/24(rw,sync,no_root_squash) ``` - `rw`:读写权限 - `sync`:同步写入 - `no_root_squash`:允许root用户访问 4. **启动服务** ```bash $ service rpcbind start $ service nfs start $ chkconfig rpcbind on $ chkconfig nfs on ``` 5. **生效配置** ```bash $ exportfs -ra ``` --- ### 二、客户端配置 1. **安装客户端工具** ```bash $ yum install nfs-utils ``` 2. **创建挂载点** ```bash $ mkdir /mnt/nfs_client ``` 3. **挂载NFS共享** ```bash $ mount -t nfs 192.168.1.100:/nfs_share /mnt/nfs_client ``` 4. **永久挂载(可选)** ```bash $ vi /etc/fstab ``` 添加: ```bash 192.168.1.100:/nfs_share /mnt/nfs_client nfs defaults 0 0 ``` --- ### 三、防火墙配置 ```bash $ vi /etc/sysconfig/iptables ``` 添加规则: ```bash -A INPUT -m state --state NEW -p tcp --dport 111 -j ACCEPT -A INPUT -m state --state NEW -p udp --dport 111 -j ACCEPT -A INPUT -m state --state NEW -p tcp --dport 2049 -j ACCEPT ``` 重启防火墙: ```bash $ service iptables restart ``` --- ### 四、验证测试 1. **服务端查看共享状态** ```bash $ showmount -e localhost ``` 2. **客户端写入测试** ```bash $ touch /mnt/nfs_client/testfile ``` --- ### 五、常见问题 1. **挂载失败** - 检查`rpcbind`服务状态 - 确认防火墙规则 - 使用`nfsvers=3`参数指定版本: ```bash $ mount -t nfs -o nfsvers=3 192.168.1.100:/nfs_share /mnt/nfs_client ``` 2. **权限问题** - 确保共享目录权限正确 - 检查SELinux状态: ```bash $ setenforce 0 # 临时关闭 ``` > **注意**:CentOS 6.5已于2020年11月停止维护,建议升级到CentOS 7/8或迁移至AlmaLinux/Rocky Linux等替代系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值