【Linux】配置NFS共享目录

环境

[root@localhost file]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.6 (Maipo)

服务端:10.198.1.165
客户端:10.198.1.166

配置前先统一uid和gid,参考2022年4月11日补充

步骤

服务器侧

1.查看是否安装有NFS服务
[root@localhost file]# rpm -qa|grep nfs
nfs-utils-1.3.0-0.61.el7.x86_64
libnfsidmap-0.25-19.el7.x86_64
[root@localhost file]# 

没有的话需要进行安装

yum install nfs-utils
yum install libnfsidmap

日志

2.创建共享目录,并赋予读写权限。

设置共享目录,并赋予读写权限

mkdir /home/file
chmod -R 777 /home/file
3.修改配置文件/etc/exports
[root@localhost init.d]# vi /etc/exports
/home/file 10.198.1.166(rw,insecure)

/home/file是服务器端要共享出来的目录,
10.198.1.166是客户端的ip,
rw代表客户端可以对共享目录进行读写操作,
insecure 一个安全选项, 如果nfs服务端口号小于1024则可以不添加这个选项, 否则不添加的话, 是无法访问的.其他主机访问的话就会被拒绝.

附:
2021年1月11日补充问题
客户端挂载报错

[root@localhost nrms]# mount 10.198.1.165:/home/file /home/file
mount.nfs: access denied by server while mounting 10.198.40.165:/home/file

后来配置文件改为如下重启可以了

/home/file *(rw,insecure)
[root@localhost file]# service nfs restart
4.启动NFS服务
systemctl start nfs

启动NFS服务。

5.停闭防火墙或开放端口

需要开放端口或停闭防火墙,二取其一
方案一:停闭防火墙

systemctl stop firewalld

适用个人环境或要求不高环境
方案二:开放端口
在设置了防火墙的环境中使用NFS,需要在防火墙上打开如下端口:

  1. portmap 端口 111 udp/tcp;
  2. nfsd 端口 2049 udp/tcp;
  3. mountd 端口 “xxx” udp/tcp
    以下命令可以查看mountd端口
[root@localhost init.d]# rpcinfo -p localhost
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    3   udp   2049  nfs_acl
    100021    1   udp  46315  nlockmgr
    100021    3   udp  46315  nlockmgr
    100021    4   udp  46315  nlockmgr
    100021    1   tcp  37699  nlockmgr
    100021    3   tcp  37699  nlockmgr
    100021    4   tcp  37699  nlockmgr
    100024    1   udp  38048  status
    100024    1   tcp  37274  status
    100005    1   udp  20048  mountd
    100005    2   udp  20048  mountd
    100005    3   udp  20048  mountd
[root@localhost init.d]# 

根据防火墙和安全策略不同用不同命令开通相应端口
iptables

/sbin/iptables -I INPUT -p tcp --dport 111  -j ACCEPT
/sbin/iptables -I INPUT -p udp --dport 111  -j ACCEPT

firewall

firewall-cmd --zone=public --add-port=111/tcp --permanent 
firewall-cmd --zone=public --add-port=111/udp --permanent 

客户端

1.创建挂载目录。

在客户端创建一个目录用来挂载共享目录,设置挂载目录,并赋予读写权限

mkdir /home/file
chmod -R 777  /home/file
2.验证服务器情况
[root@localhost file]# showmount -e 10.198.1.165
Export list for 10.198.1.165:
/irmsdate/file 10.198.1.166
[root@localhost file]# 

以下情况就是服务端口没开,去服务端开端口

[root@localhost ~]# showmount -e 10.198.1.165
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
#mount服务端口没开:
rpc mount export: RPC: Unable to receive; errno = No route to host
2.挂载共享目录。

命令格式:# mount NFS服务器ip:共享目录 本地挂载点目录

mount 10.198.1.165:/home/file /home/file

附:
挂载有个报错,这个是原来这个做了nfs服务器,停了nfs好了

Message from syslogd@localhost at Jan 12 05:12:18 ...
 kernel:NMI watchdog: BUG: soft lockup - CPU#3 stuck for 22s! [migration/3:24]

2021年1月26日补充

rm: 无法删除或资源忙
今天准备重新挂载到新的nfs服务器,结果删除文件链接用了
rm -rf file/ 最后多了个斜杠,直接把原服务的内容都删了,还好不是正式,下次谨记。
另外提示已经mount
先查看资源占用情况,

fuser -m -v /data/

查到进程id,杀掉进程,重新umount或mount

umount /data/
mount 10.198.1.165:/home/file /home/file

2022年4月11日补充

今天出现的问题是生成的文件在其他服务器客户端无法访问,显示权限是数字
如下:

[yyq@yyq download]$ ll
total 176272
-rwxrwxrwx 1 1005   1005         0 Apr 11 18:09 1
-rwxrwxrwx 1 1005   1005         0 Apr 11 18:09 2

这个经查,是两台服务器用户uid,组的gid不一致导致
查看两台服务器用户信息

vi /etc/passwd

主服务器

oracle:x:5301:3302::/home/oracle:/bin/bash
yyq:x:1005:1005::/data/yyq:/bin/bash

客户端服务器

oracle:x:5301:3302::/home/oracle:/bin/bash
yyq:x:5302:5302::/data/yyq:/bin/bash

主服务器1的uid和gid都是1005,但服务器2同用户的uid和gid是5302,所以1005传到服务器2没有找到对应的用户,只能显示数字
解决方法:杀掉所有进程,修改用户uid和gid
1.到服务器2杀掉所有yyq用户启动的进程

ps -ef|grep yyq
kill -9 xxx

2.修改yyq的uid和gid

##修改uid
usermod -u 1005 yyq
##修改gid
groupmod -g 1005 yyq

3.批量修改原有文件权限

find / -user 5302 -exec chown -h foo {} \;
find / -group 5302 -exec chgrp -h foo {} \;

参考:

1.Linux服务器之间如何设置共享目录
2.rhel7配置NFS时出现clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host) 的问题
3.centos7下的nfs配置
4.Centos firewalld开放端口
5.linux与linux之间共享目录
6.NFS共享目录配置
7.nfs挂载mount.nfs: access denied by server while mounting解决方法
8.Linux中修改用户UID和组GID的方法

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Linux上挂载NFS共享目录,你可以按照以下步骤进行操作: 1. 首先,确保NFS服务器已经正确配置并且共享目录已经设置好。你可以使用命令`showmount -e <NFS服务器IP>`来查看NFS服务器上可用的共享目录。例如,`showmount -e 192.168.1.100`会显示可用的共享目录列表。 2. 在本地Linux机器上创建一个用于挂载的目录。你可以使用命令`mkdir <本地目录路径>`来创建目录。例如,`mkdir /mnt/nfs`会在/mnt目录下创建一个名为nfs的子目录。 3. 使用`mount`命令来挂载NFS共享目录。命令的基本格式是`sudo mount -t nfs <NFS服务器IP>:<共享目录路径> <本地目录路径>`。例如,`sudo mount -t nfs 192.168.1.100:/nfs/test/common /mnt/nfs`会将NFS服务器上的/nfs/test/common目录挂载到本地的/mnt/nfs目录下。 4. 如果需要在每次启动时自动挂载NFS共享目录,可以将挂载信息添加到/etc/fstab文件中。打开/etc/fstab文件并在文件末尾添加一行类似于`<NFS服务器IP>:<共享目录路径> <本地目录路径> nfs defaults 0 0`的内容。保存文件后,下次启动时系统会自动挂载NFS共享目录。 请注意,挂载NFS共享目录需要确保网络连接正常,并且NFS服务器和本地Linux机器之间没有防火墙或防火墙已正确配置允许NFS流量通过。如果在挂载过程中遇到问题,可以根据错误信息进行排查,比如检查网络连接、防火墙设置等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

实施工程师木易

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值