【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的方法

你可能感兴趣的:(Linux,实施工程师,nfs,共享目录)