NFS详细配置记录

为什么要用NFS
   NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
   NFS最早是由Sun公司发展出来的,
  简单的来说:它就是是可以透过网络,让不同的主机、不同的操作系统可以共享存储。
以下是NFS最显而易见的好处:
  1. 节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
  2. 用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。
  3. 一些存储设备CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。
  NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。
  NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。

1.   nfs服务器准备

服务端准备工作:查看系统版本信息

cat /etc/redhat-release

CentOS release 6.8 (Final)      #查看操作系统版本信息

[root@db1 ~]# uname -n

db1                             #查看机器名   

[root@db1 ~]# uname -r

2.6.32-642.el6.x86_64

[root@db1 ~]# uname -m          #查看centos当前系统内核版本号

x86_64

1.1  服务器端ip:192.168.45.177

     客户端ip:192.168.45.178

1.2  nfs软件

要部署nfs服务。必须安装下面两个软件包:

  *nfs-utils :这个是服务主程序

  *rpcbind :rpc主程序(cent5.x为portmap,cent 6.x为rpcbind)

NFS可以被视作一个RPC程序,在启动任何一个RPC之前,需要做好端口映射工作,这个映射工作就是由rpcbind()服务来完成的。因此,提供nfs之前必须启动 prcbind服务。

1.2.1 查询默认情况下cent6.8 NFS软件的安装情况

 [root@db1 ~]# rpm -aq nfs-utils rpcbind

rpcbind-0.2.0-13.el6_9.1.x86_64

nfs-utils-1.2.3-75.el6_9.x86_64

   提示:如果没有安装,不要紧,通过[root@db1 ~]# yum install nfs-utils -y   安装。同时也会把rpcbind装上。

1.2.2 查看rpcbind服务是否启动

   [root@db1 ~]# /etc/init.d/rpcbind status

    rpcbind is stopped

    [root@db1 ~]# /etc/init.d/rpcbind start

    Starting rpcbind:                                         [  OK  ]

    [root@db1 ~]# /etc/init.d/rpcbind status

     rpcbind (pid  18709) is running...

1.2.3查看nfs服务是否启动

         [root@db1~]# /etc/init.d/nfs status   

         rpc.svcgssdis stopped

         rpc.mountdis stopped

         nfsdis stopped

         rpc.rquotadis stopped

1.2.4  启动nfs服务并加入开机自启

         [root@db1~]# /etc/init.d/nfs start

         StartingNFS services:                                     [  OK  ]

         StartingNFS quotas:                                       [  OK  ]

         StartingNFS mountd:                                       [  OK  ]

         StartingNFS daemon:                                       [  OK  ]

         StartingRPC idmapd:                                       [  OK  ]

         [root@db1~]# /etc/init.d/nfs status

         rpc.svcgssdis stopped

         rpc.mountd(pid 18832) is running...

    说明:从NFS服务启动的提示,我们可以看出运行NFS默认需要启动的进程至少有:rpc.mountd,   

rpc.rquotad,rpc.idmapd。

 [root@db1 ~]# ps -ef|egrep "rpc|nfs"        #查看指定过滤的进程

rpc     18709     1  0 11:44 ?        00:00:00 rpcbind

root    18811     2  0 11:47 ?        00:00:00 [rpciod/0]

root    18812     2  0 11:47 ?        00:00:00 [rpciod/1]

root    18813     2  0 11:47 ?        00:00:00 [rpciod/2]

root    18814     2  0 11:47 ?        00:00:00 [rpciod/3]

root    18815     2  0 11:47 ?        00:00:00 [rpciod/4]

root    18816     2  0 11:47 ?        00:00:00 [rpciod/5]

root    18817     2  0 11:47 ?        00:00:00 [rpciod/6]

root    18818     2  0 11:47 ?        00:00:00 [rpciod/7]

root    18827     1  0 11:47 ?        00:00:00 rpc.rquotad  #磁盘配额 

root    18832     1  0 11:47 ?        00:00:00 rpc.mountd   #权限管理

root    18839     2  011:47 ?        00:00:00 [nfsd4]

root    18840     2  0 11:47 ?        00:00:00 [nfsd4_callbacks]

root    18841     2  0 11:47 ?        00:00:00 [nfsd]

root    18842     2  0 11:47 ?        00:00:00 [nfsd]

root    18843     2  0 11:47 ?        00:00:00 [nfsd]

root    18844     2  0 11:47 ?        00:00:00 [nfsd]

root    18845     2  0 11:47 ?        00:00:00 [nfsd]

root    18846     2  0 11:47 ?        00:00:00 [nfsd]

root    18847     2  0 11:47 ?        00:00:00 [nfsd]

root    18848     2  0 11:47 ?        00:00:00 [nfsd]

root    18879     1  0 11:47 ?        00:00:00 rpc.idmapd   #rpc-服务

root    18969 18358  0 11:58 pts/1    00:00:00 egrep rpc|nfs

    NFS服务的主要任务是进行文件系统的共享,文件系统的共享与权限有关。所以NFS服务启动时最少需要两个deamons,一个管理client端是否能够登入的问题,另一个管理client端能够取得的权限。如果还需要管理quota的话,NFS还要加载rpc.rquoad程序。

1.nfsd(prc.nfsd)

这个daemon的主要功能主要是管理client端能否登入主机,其中还包含登入者id的判别。

         2.rpc.mountd

这个daemon的主要功能主要是管理nfs文件系统的权限管理。

1.3 配置nfs等服务开机启动

         [root@db1~]# chkconfig nfs on

         [root@db1~]# chkconfig rpcbind on

         提示:在生产工作环境中一般放在/etc/rc.local 中开机自启服务。

         [root@db1~]# vi /etc/rc.local

         在里面添加:#nfsstart by ruien at 20180312

         /etc/init.d/rpcbindstart

         /etc/init.d/nfsstart

     查看是否开机自启:

         [root@db1~]# chkconfig --list nfs

         nfs             0:off   1:off  2:on    3:on    4:on   5:on    6:off

         [root@db1~]# chkconfig --list rpcbind

         rpcbind         0:off  1:off   2:on    3:on   4:on    5:on    6:of

1.3.1exports 文件格式    #nfs默认文件地址

         NFS共享的目录 NFS客户端地址1(参1,参2....)  客户端地址2(参1,参2....)

      

         其中各项参数的含义如下:

         1.  NFS共享的目录: 为NFS服务端要共享的实际目录,要用绝对路径(如/data/bbs)

         2.  NFS客户端地址: 为NFS服务端授权的可访问共享目录的NFS客户端地址,可以为单独的ip地    

址、域名等。也可以是整个网段的地址

         3.  参数集:  对授权的客户端的访问权限设置

         生产环境常见配置实例:

常用格式说明

要共享的目录 客户端IP地址或IP段(参1,参2……)

配置例一

/data/bbs 10.0.0.0/24(rw,sync)    →注意,深黄色部分没有空格

配置例二

/home/ryan 10.0.0.0/24(rw,sync,all_squash,anonuid=2000, anongid=2000)

→生产环境常用的一种配置,适用多客户端共享一个NFS目录

配置例三

/home/ruien 10.0.0.15(ro) →只读共享

生产环境可能用于运维给开发提供某个正式服务器的查看数据的能力。

1.4

创建共享文件并授权:

mkdir /data/bbs –p

[root@db1 bbs]# chown -R nfsnobody.nfsnobody/data/bbs   #nobody授权

在/etc/export配置如下:

vi /etc/export

#shared bbs dir to 192.168.45.0/24

/data/bbs 192.168.45.0/24(rw,sync)

查看export下的修改的文件

[root@db1 bbs]#  cat /etc/exports

#shared bbs dir to 192.168.45.0/24

/data/bbs 192.168.45.0/24(rw,sync)

1.5 NFS配置权限设置

         NFS配置权限设置,即/etc/exports文件配置格式中小括号()里面的参数,详见表1.5

参数名称

参数用途

rw

Read-write,表示可读写权限。

ro

Read-only,表示只读权限。

sync

请求或写入数据时,数据同步写入到NFS Server的硬盘后才会返回。

async

请求或写入数据时,先还回请求,再将数据写入到内存缓存和硬盘中,此

参数可以提升NFS性能,但是会降低数据的安全性。因此,一般情况下,建议不用。

no_root_squash

访问NFS server 共享目录的用户是root的话,它对该共享目录具有root权限。这个配置原本为无盘客户端准备的。用户应避免使用!

all_squash

压缩所有用户为来宾

no_all_squash

不压缩所有用户为来宾

subtree

若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置

no_subtree

即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率

secure

限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置)

insecure

允许客户端从大于1024的tcp/ip端口连接服务器

anonuid=uid/anongid=gid

(压缩来宾为指定的用户/压缩来宾为指定的用户组)

有了这个参数我们配置起来就很方便了,这是让我们改变默认的来宾用户。默认的来宾用户是nfsnobody

我们可以通过cat /etc/passwd来找到这个nfsnobody用户。

表 1.5

2.客户端准备

2.1检查是否启动rpcbind服务   #客户端只需要启动rpcbind服务(cent6.x是rpcbind,5.x是rpcmaps)

[root@db1 ~]# /etc/init.d/rpcbind status

    rpcbind is stopped

    [root@db1 ~]# /etc/init.d/rpcbind start

开启rpcbind服务开机自启:

[root@db222 ~]# chkconfig rpcbind on

[root@db222 ~]# chkconfig --list rpcbind

rpcbind         0:off  1:off   2:on    3:on   4:on    5:on    6:off

查看挂载点

[root@db222 ~]# showmount -e 192.168.45.177

Export list for 192.168.45.177:

/data/bbs 192.168.45.0/24

挂载共享

[root@db222 ~]# mount -t nfs192.168.45.177:/data/bbs /mnt

查看磁盘

[root@db222 ~]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda2             2.6T  771M 2.5T   1% /

tmpfs                  48G     0  48G   0% /dev/shm

/dev/sda1             190M   35M 146M  20% /boot

192.168.45.177:/data/bbs  50G 2.0G   45G   5% /mnt    →表示成功

测试读写数据:

创建文件:touch a.txt

总结NFS服务的配置过程:
--服务端--
1.安装软件
yum install -y nfs-utils rpcbind
2.启动服务(先启动rpcbind)
/etc/init.d/rpcbind start
/etc/init.d/nfs start
3.设置开机自启动
chkconfig nfs on
chkconfig rpcbind on
修改rc.local
4.配置NFS服务
echo "/data 192.168.1.5/24(rw,sync)"
mkdir -p /data
chown -R nfsnobody.nfsnobody /data
5.重新加载服务
/etc/init.d/nfs reload 或者 exportfs -r
6.检查或测试挂载
showmount -e localhost
mount -t nfs 192.168.45.177:/data /mnt
 
--客户端-
1.安装软件
yum install -y nfs-utils rpcbind
2.启动rpcbind
/etc/init.d/rpcbind start
3.配置开机自启动
chkconfig rpcbind on
或者修改rc.local
4.测试服务端共享情况
show -e 192.168.45.177
5.挂载
mkdir -p /data

mount -t nfs 192.168.45.177:/data/bbs /mnt

6.测试是否有读写权限
-----------------------------------------------------------------------------------------------
常见错误
1.df -h 检查服务端的NFS服务是不是启动成功,
2.确认NFS客户端showmount是否OK。
3.确认rpcbind上是否有NFS注册,(rpcbind必须先启动)
3.确认网络是否通畅
4.确认是否因为防火墙挡住(一般内网不需要开启防火墙,在出口加防火墙就够了)
-----------------------------------------------------------------------------------------
参考内容: 老男孩老师视频

猜你喜欢

转载自blog.csdn.net/l821133235/article/details/79537238