森哥瞧世界

您现在的位置是:首页>文档内容页

文档详情

NFS服务器安装配置及客户端接入

jeson 2020-03-04 15:30:30 应用服务7898
在服务器的使用过程中,很容易遇到数据盘不足,或是数据备份盘使用的尴尬问题。今天森哥带您一起搭建一台NFS服务器,及在客户端挂载NFS和使用时,遇到的问题点和解决方法。

前言就不说太多,在内容摘要中,已说明了此教程的目的,这里就不多说了,森哥就直接切入主题,带大家一起来搭建NFS服务器及客户端接入使用。

一、环境配置

关闭Selinux

sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
setenforce 0

服务器系统未重启前,显示的是:

[root@nfs ~]# getenforce
permissive

重启服务器,查看是否关闭成功,显示Disabled则表示成功:

[root@nfs ~]# getenforce
Disabled

卸载系统自带防火墙

systemctl stop firewalld    //停止系统默认的防火墙
systemctl mask firewalld    //屏蔽服务(让它不能启动)
yum remove -y firewalld     //卸载服务

安装常用的运维工具

yum install -y chkconfig  net-tools ntsysv mlocate lrzsz wget lsof setuptool git

更新yum源

yum install -y epel-release
yum clean all
yum makecache

二、NFS服务安装配置

2.1、NFS服务端安装

yum install -y nfs-utils rpcbind
  • nfs-utils-* :包括基本的NFS命令与监控程序

  • rpcbind-* :支持安全NFS RPC服务的连接,rpcbind在旧版CentOS系统里叫做portmap

查看系统是否已安装NFS

[root@nfs ~]# rpm -qa | grep nfs              
libnfsidmap-0.25-19.el7.x86_64
nfs-utils-1.3.0-0.65.el7.x86_64
[root@nfs ~]# rpm -qa | grep rpcbind
rpcbind-0.2.0-48.el7.x86_64

2.2、NFS服务器的配置

NFS服务器的配置相对比较简单,只需要在相应的配置文件中进行设置,然后启动NFS服务器即可。

NFS的常用目录:

/etc/exports                           NFS服务的主要配置文件
/usr/sbin/exportfs                   NFS服务的管理命令
/usr/sbin/showmount              客户端的查看命令
/var/lib/nfs/etab                      记录NFS分享出来的目录的完整权限设定值
/var/lib/nfs/xtab                      记录曾经登录过的客户端信息

NFS服务的配置文件为 /etc/exports,这个文件是NFS的主要配置文件,在新的centos版本下,会默认创建 ,而在旧版本的centos下,可能要手动建立,然后在文件里面写入配置内容。

/etc/exports文件内容格式
<输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]
说明:
1、输出目录:输出目录是指NFS系统中需要共享给客户机使用的目录;
2、客户端:客户端是指网络中可以访问这个NFS输出目录的计算机
         客户端常用的指定方式:
         指定ip地址的主机:192.168.8.106
         指定子网中的所有主机:192.168.0.0/24或 192.168.0.0/255.255.255.0
         指定域名的主机:wj.bsmart.com
         指定域中的所有主机:*.bsmart.com
         所有主机:*
3、 选项:选项用来设置输出目录的访问权限、用户映射等。
 NFS主要有3类选项:
 1)访问权限选项:
    设置输出目录只读:ro
    设置输出目录读写:rw
 2)用户映射选项
   all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
   no_all_squash:与all_squash取反(默认设置);
   root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);
   no_root_squash:与rootsquash取反;
   anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
   anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);

 3)其它选项
   secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
   insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
   sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
   async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
   wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
   no_wdelay:若有写操作则立即执行,应与sync配合使用;
   subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
   no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

2.3、NFS服务器的启动与停止

NFS服务器的启动、停止、查看状态

systemctl start rpcbind.service     //启动rpc服务
systemctl start nfs                 //启动nfs服务
systemctl enable rpcbind.service    //设置rpc自启动
systemctl enable nfs                //设置nfs自启动
systemctl status rpcbind.service    //查看rpc状态
systemctl status nfs                //查看nfs状态
systemctl stop nfs                  //停止nfs服务
systemctl stop rpcbind.service      //停止rpc服务

旧版本下的nfs服务名为:nfs-service,新版本为的nfs

2.4、客户端实例操作

将NFS Server的 /home/senge/ 共享给172.16.2.140/32服务器(CentOS系统),权限读写

2.4.1、NFS服务器设置

cd /home
mkdir senge
cd senge
vi /etc/exports
/home/senge/    172.16.2.140/32(rw)
[root@nfs senge]# exportfs 
/home/senge     172.16.2.140/32

2.4.2、重启nfs、rpcbind服务

systemctl restart nfs
systemctl restart rpcbind

2.4.3、客户端链接NFS服务器

关闭Selinux与防火墙

sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
setenforce 0

systemctl stop firewalld    //停止系统默认的防火墙
systemctl mask firewalld    //屏蔽服务(让它不能启动)
yum remove -y firewalld     //卸载服务

创建目录做挂载点

[root@mail ~]# mkdir /senge
[root@mail ~]# cd /senge/
[root@mail senge]# pwd
/senge

2.4.4、挂载操作

第一次挂载的时候,提示如下的错误。

[root@mail senge]# mount -t nfs 172.16.2.77:/home/senge /senge
mount: 文件系统类型错误、选项错误、172.16.2.77:/home/senge 上有坏超级块、
      缺少代码页或助手程序,或其他错误
      (对某些文件系统(如 nfs、cifs) 您可能需要
      一款 /sbin/mount.<类型> 助手程序)

      有些情况下在 syslog 中可以找到一些有用信息- 请尝试
      dmesg | tail  这样的命令看看。

这个问题是因为在CentOS 7.X版本以上,不支持直接nfs的挂载,需要安装一下nfs-utils

[root@mail senge]# rpcinfo -p
-bash: rpcinfo: 未找到命令

[root@mail senge]# yum -y install nfs-utils

[root@mail senge]# rpcinfo -p
  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

再次挂载时,就成功了。

[root@mail senge]# mount -t nfs 172.16.2.77:/home/senge /senge/

接下来,在客户端创建文件夹或文件的时候,提示权限不够

[root@mail senge]# mkdir senge-test
mkdir: 无法创建目录"senge-test": 权限不够

这个问题是要检查NFS服务器上共享目录的权限

默认创建的共享目录,一般都是创建该文件夹的当前用户。比如森哥这边是使得root创建的,权限的归属就是root,如下:

[root@nfs home]# ll
总用量 4
drwxr-xr-x. 2 root root 4096 3月   4 14:09 senge

而NFS共享文件夹的权限,应该为nfsnobody,因此会提示权限问题。现在我们对NFS服务器上的共享目录进行赋权一下。

[root@nfs home]# chown nfsnobody.nfsnobody /home/senge
[root@nfs home]# ll
总用量 4
drwxr-xr-x. 2 nfsnobody nfsnobody 4096 3月   4 14:09 senge

然后再去客户端测试创建文件夹或文件,即可正常。

[root@mail senge]# mkdir senge-test
[root@mail senge]# ll
总用量 4
drwxr-xr-x 2 nfsnobody nfsnobody 4096 3月   4 15:08 senge-test

2.4.5、自动挂载

每次客户端重启的时候,就得需要手动挂载一次。

现在,森哥带着您,一起解决自动挂载的方法。

vi /etc/fstab

172.16.2.77:/home/senge            /senge    nfs     defaults        0  0

再也不用担心客户端重启后,不能自动挂载的问题了。


好了。一台全新的NFS服务器创建好了。

您可以把这个当成文件服务器,用来挂载到您想要挂载的客户端,专门用来当数据盘使用。


文章评论

Cancel the reply
Login Participate In Comments

Review(