NFS 的总结

 NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它容许网络中的计算机之间经过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用能够透明地读写位于远端NFS服务器上的文件,就像访问本地文件同样。html

   NFS最先是由Sun公司发展出来的,服务器

  简单的来讲:它就是是能够透过网络,让不一样的主机、不一样的操做系统能够共享存储。网络

如下是NFS最显而易见的好处:less

  1. 节省本地存储空间,将经常使用的数据存放在一台NFS服务器上且能够经过网络访问,那么本地终端将能够减小自身存储空间的使用。async

  2. 用户不须要在网络中的每一个机器上都建有Home目录,Home目录能够放在NFS服务器上且能够在网络上被访问使用。tcp

  3. 一些存储设备CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等均可以在网络上被别的机器使用。这能够减小整个网络上可移动介质设备的数量。ide

  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是负责负责信息的传输。ui


服务端:spa

安装准备:(个人环境是6.5 其实我也不知看着内核有啥用)

[root@NFS-server ~]# cat /etc/redhat-release #查看系统版本
CentOS release 6.8 (Final)
[root@NFS-server ~]# uname -r #查看系统内核版本
2.6.32-642.11.1.el6.x86_64
[root@NFS-server ~]# uname -m #查看系统是否64位
x86_64

须要的软件

    nfs-utils: 这个是NFS服务主程序(包含rpc.nfsd、rpc.mountd、daemons)

    rpcbind: 这个是CentOS6.X的RPC主程序(CentOS5.X的为portmap)

检查软件是否安装   

[root@NFS-server ~]# rpm -qa nfs-utils rpcbind #检查安装的软件包rpcbind-0.2.0-12.el6.x86_64
nfs-utils-1.2.3-70.el6_8.2.x86_64

这是已经安装了,若是没有安装

[root@NFS-server ~]# yum install -y nfs-utils rpcbind #安装上述所需的两个软件包

4、启动NFS服务端相关服务

---开启rpcbind服务

[root@NFS-server ~]# /etc/init.d/rpcbind status  #查询rpcbind服务状态并启动rpcbind (pid 1281) is running...
[root@NFS-server ~]# LANG=en

复制代码

[root@NFS-server ~]# lsof -i :111  #查询rpcbind监听状态 (111是rpcbind的主端口)COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1281 rpc 6u IPv4 10766 0t0 UDP *:sunrpc
rpcbind 1281 rpc 8u IPv4 10769 0t0 TCP *:sunrpc (LISTEN)
rpcbind 1281 rpc 9u IPv6 10771 0t0 UDP *:sunrpc
rpcbind 1281 rpc 11u IPv6 10774 0t0 TCP *:sunrpc (LISTEN)

复制代码

复制代码

[root@NFS-server ~]# netstat -lntup |grep rpcbind #查询rpcbind服务启动状态 (同lsof查询端口效果同样)tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1281/rpcbind
tcp 0 0 :::111 :::* LISTEN 1281/rpcbind
udp 0 0 0.0.0.0:608 0.0.0.0:* 1281/rpcbind
udp 0 0 0.0.0.0:111 0.0.0.0:* 1281/rpcbind
udp 0 0 :::608 :::* 1281/rpcbind
udp 0 0 :::111 :::* 1281/rpcbind

复制代码

[root@NFS-server ~]# chkconfig --list rpcbind #检查rpcbind自启动状况rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off
1
root@NFS-server ~]# rpcinfo -p localhost #查看NFS服务项rpc服务器注册的端口信

<这个是还未启动FNS服务的rpcbind状态>

---启动NFS服务

[root@NFS-server ~]# /etc/init.d/nfs status #查看NFS服务并启动rpc.svcgssd is stopped
rpc.mountd (pid 1526) is running...
nfsd (pid 1542 1541 1540 1539 1538 1537 1536 1535) is running...
rpc.rquotad (pid 1521) is running...

复制代码

[root@NFS-server ~]# netstat -lntup|grep nfs #查看NFS端口启动(FNS默认端口为2049)[root@NFS-server ~]# lsof -i :2049 #查看NFS端口启动(FNS默认端口为2049)[root@NFS-server ~]# netstat -lntup|grep 2049 #查看NFS端口启动(FNS默认端口为2049)tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -tcp 0 0 :::2049 :::* LISTEN -udp 0 0 0.0.0.0:2049 0.0.0.0:* -udp 0 0 :::2049 :::* -

复制代码

[root@NFS-server ~]# rpcinfo -p localhost #启动NFS事后rpcbind服务已经启用了对FNS的端口映射

<这个是启动FNS服务事后 的rpcbind的状态>

[root@NFS-server ~]# chkconfig --list nfs  #查看nfs的开机自启动状况nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@NFS-server ~]# chkconfig nfs on #让FNS开机自启动

因为在FNS服务过程当中,必须先启动rpcbind,再启动nfs,这样才能让NFS在rpcbind上注册成功

[root@NFS-server ~]# less /etc/init.d/rpcbind  #查看rpcbind服务启动详情

同理咱们查看nfs服务的自启动详情

[root@NFS-server ~]# less /etc/init.d/nfs

<由上面能够看出系统默认会让rpcbind服务先启动,再启动nfs服务,可是在实际生产环境中,咱们最好不要用chkconfig来控制服务的开机自启动,咱们生产环境中咱们通常用rc.local来管理。主要是为了方便之后查阅哪些服务开机本身,而且能控制前后顺序,如图>

<为了规范化咱们用rc.local来管理开机自启动>

[root@NFS-server ~]# vi /etc/rc.local

NFS服务常见进程的详细说明

咱们能够重NFS服务的启动过程看到如下几个进程:

复制代码

[root@NFS-server ~]# ps -ef |egrep "rpc|nfs" #查看nfs相进程rpcuser 1303 1 0 Nov22 ? 00:00:00 rpc.statd  #检查文件一致性root 1512 2 0 Nov22 ? 00:00:00 [rpciod/0]
rpc 2723 1 0 02:43 ? 00:00:00 rpcbind
root 2896 1 0 02:56 ? 00:00:00 rpc.rquotad  #磁盘配额进程root 2901 1 0 02:56 ? 00:00:00 rpc.mountd #权限管理验证等root 2908 2 0 02:56 ? 00:00:00 [nfsd4]
root 2909 2 0 02:56 ? 00:00:00 [nfsd4_callbacks]
root 2910 2 0 02:56 ? 00:00:00 [nfsd]
root 2911 2 0 02:56 ? 00:00:00 [nfsd]
root 2912 2 0 02:56 ? 00:00:00 [nfsd]
root 2913 2 0 02:56 ? 00:00:00 [nfsd] #NFS主进程,管理登入,身份断定root 2914 2 0 02:56 ? 00:00:00 [nfsd]
root 2915 2 0 02:56 ? 00:00:00 [nfsd]
root 2916 2 0 02:56 ? 00:00:00 [nfsd]
root 2917 2 0 02:56 ? 00:00:00 [nfsd]
root 2948 1 0 02:56 ? 00:00:00 rpc.idmapd  #名称映射

复制代码

<若是对上述进程不明白能够 用man命令查阅帮助信息,如 “man rpc.statd”>

5、配置NFS服务端

前面介绍了NFS的启动,接下来咱们配置NFS服务端的配置

/etc/exports 是NFS程序的配置文件。而且默认为空

/etc/exports文件的配置格式为:

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

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

<咱们在此共享给 192.168.1.0/24全部主机,>

<man exports 查看 例子和参数详情。以下:>

配置完成exports后平滑重启NFS服务 ,下面两条命令等同

[root@NFS-server ~]# /etc/init.d/nfs reload
[root@NFS-server ~]# exportfs -r
[root@NFS-server ~]# showmount -e 127.0.0.1 #查看本机挂载状况

<必须先启动rpcbinc 再启动nfs才会显示正确>

[root@NFS-server ~]# mount -t nfs 192.168.1.5:/data /mnt #在本机测试挂载


客户端挂载:


1.安装软件

yum install -y nfs-utils rpcbind

2.启动rpcbind

/etc/init.d/rpcbind start

3.配置开机自启动

chkconfig rpcbind on

或者修改rc.local

4.测试服务端共享状况

 showmount -e 192.168.0.2015.挂载

mkdir -p /data

mount -t nfs 192.168.1.5:/home/wwwroot /home/wwwroot

6.测试是否有读写权限


挂载结束

挂载是要注意的几点

1.客户端添加挂载盘的时候用 

exportfs -rv

不须要重启

2注意权限问题服务端挂载的参数


NFS主要有3类选项:

访问权限选项

  • 设置输出目录只读:ro

  • 设置输出目录读写:rw

用户映射选项

  • all_squash:将远程访问的全部普通用户及所属组都映射为匿名用户或用户组(nfsnobody);

  • no_all_squash:与all_squash取反(默认设置);

  • root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);

  • no_root_squash:与rootsquash取反;

  • anonuid=xxx:将远程访问的全部用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);

  • anongid=xxx:将远程访问的全部用户组都映射为匿名用户组帐户,并指定该匿名用户组帐户为本地用户组帐户(GID=xxx);

其它选项

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

  • insecure:容许客户端从大于1024的tcp/ip端口链接服务器;

  • sync:将数据同步写入内存缓冲区与磁盘中,效率低,但能够保证数据的一致性;

  • async:将数据先保存在内存缓冲区中,必要时才写入磁盘;

  • wdelay:检查是否有相关的写操做,若是有则将这些写操做一块儿执行,这样能够提升效率(默认设置);

  • no_wdelay:如有写操做则当即执行,应与sync配合使用;

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

  • no_subtree:即便输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样能够提升效率;




资源参考:

http://www.cnblogs.com/alonones/p/6105586.html

http://blog.csdn.net/dongfengkuayue/article/details/27386067

http://www.cnblogs.com/mchina/archive/2013/01/03/2840040.html

相关文章
相关标签/搜索