Linux NFS服务详解

大纲:

一、NFS简介

二、系统环境

三、安装配置NFS

四、NFS配置文件详解


一、NFS简介

NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。

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


二、系统环境

系统平台:CentOS release 6.5 (Final)

NFS-Server端:172.16.1.103    node1        

NFS-Client端:172.16.1.104    node2


三、安装配置NFS

NFS的安装是非常简单的,只需要两个软件包即可,而且在通常情况下,是作为系统的默认包安装的。

    nfs-utils-* :包括基本的NFS命令与监控程序

    rpcbind :支持安全NFS RPC服务的连接

1、先查看所需安装包(nfs-utils、rpcbind)是否已经安装

[root@node1 ~]# rpm -qa | grep "rpcbind"
rpcbind-0.2.0-11.el6.x86_64
[root@node1 ~]# rpm -qa | grep "nfs"
nfs-utils-1.2.3-64.el6.x86_64
nfs-utils-lib-1.1.5-11.el6.x86_64

2、没有安装的话则执行以下命令安装

[root@node1 ~]# yum -y install nfs-utils rpcbind

3、NFS配置文件及共享目录

[root@node1 ~]# mkdir /www
[root@node1 ~]# vim /etc/exports
/data/www    172.16.0.0/16(rw,no_root_squash)

4、先启动rpcbind,再启动NFS

[root@node1 ~]# service rpcbind start
Starting rpcbind:                                          [  OK  ]
[root@node1 ~]# netstat -tunlp | grep :111
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      60625/rpcbind       
tcp        0      0 :::111                      :::*                        LISTEN      60625/rpcbind       
udp        0      0 0.0.0.0:111                 0.0.0.0:*                               60625/rpcbind       
udp        0      0 :::111                      :::*                                    60625/rpcbind  
[root@node1 ~]# service nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting RPC idmapd:                                       [  OK  ]
[root@node1 ~]# rpcinfo -p                            # 可以看到NFS服务器端已向RPC注册端口
   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
    100005    1   udp  34849  mountd
    100005    1   tcp  53780  mountd
    100005    2   udp  55188  mountd
    100005    2   tcp  34271  mountd
    100005    3   udp  52608  mountd
    100005    3   tcp  35970  mountd
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    2   tcp   2049  nfs_acl
    100227    3   tcp   2049  nfs_acl
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    2   udp   2049  nfs_acl
    100227    3   udp   2049  nfs_acl
    100021    1   udp  41610  nlockmgr
    100021    3   udp  41610  nlockmgr
    100021    4   udp  41610  nlockmgr
    100021    1   tcp  53871  nlockmgr
    100021    3   tcp  53871  nlockmgr
    100021    4   tcp  53871  nlockmgr
    
ps:如果要让开机自启动,则执行如下命令
chkconfig rpcbind on
chkconfig nfs on

5、客户端挂载

(1).showmount查看NFS共享目录

[root@node2 ~]# mount -t nfs 172.16.1.103:/data/www /mnt                # 客户端挂载NFS
[root@node2 ~]# ls /mnt/
a.com  b.net  c.edu  d.org  node1.com                                   # 此时可以看到里面的文件了
[root@node2 ~]# showmount -d 172.16.1.103   # 显示NFS服务器所有导出的并且被客户端挂载了的文件系统列表
Directories on 172.16.1.103:
/data/www
[root@node2 ~]# showmount -a 172.16.1.103   # 查看NFS服务器所有被挂载的文件系统及其挂载的客户端对应列表
All mount points on 172.16.1.103:
172.16.1.104:/data/www
[root@node2 ~]# showmount -e 172.16.1.103     # 查看NFS服务器导出的各文件系统
Export list for 172.16.1.103:
/data/www 172.16.0.0/16

(2).exportfs导出目录

[root@node1 ~]# cat /etc/exports 
/data/www	172.16.0.0/16(rw)                    # 此时只导出了/data/www
[root@node1 ~]# vim /etc/exports
[root@node1 ~]# cat /etc/exports
/data/www	172.16.0.0/16(rw)
/var/ftpshared	172.16.0.0/16(rw)                    # 增加了/var/ftpshared
[root@node1 ~]# exportfs -avr                        # 重新导出所有的文件系统
exporting 172.16.0.0/16:/var/ftpshared
exporting 172.16.0.0/16:/data/www
[root@node1 ~]#  showmount -e 172.16.1.103            # 可以看到刚刚新加的也被导出了
Export list for 172.16.1.103:
/var/ftpshared 172.16.0.0/16
/data/www      172.16.0.0/16                    
[root@node1 ~]# exportfs -avu                        # 取消所有的导出
[root@node1 ~]#  showmount -e 172.16.1.103
Export list for 172.16.1.103:                        # 可以看到所有的导出都撤销了

6、实现开机自动挂载NFS文件系统

[root@node2 ~]# vim /etc/fstab 
[root@node2 ~]# cat /etc/fstab 
/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0
172.16.1.103:/data/www	/mnt			           nfs	 defaults,_netdev	0 0



四、NFS配置文件详解

NFS配置文件:/etc/exports

共享目录    允许访问NFS的主机或网络地址(选项)

下面列出一些常见的选项

      ro:默认选项,以只读的方式共享。

       rw:以读写的方式共享。

       root_squash:将客户端使用的是root用户时,则映射到NFS服务器的用户为NFS的匿名用户(nfsnobody)。

       no_root_squash:将客户端使用的是root用户时,则映射到FNS服务器的用户依然为root用户。

       all_squash:默认选项,将所有访问NFS服务器的客户端的用户都映射为匿名用户,不管客户端使用的是什么用户。

       anonuid:设置映射到本地的匿名用户的UID

       anongid:设置映射到本地的匿名用户的GID

       sync:默认选项,保持数据同步,数据同步写入到内存和硬盘。

       async:异步,先将数据写入到内存,在将数据写入到硬盘。

       secure:NFS客户端必须使用NFS保留端口(通常是1024以下的端口),默认选项。

       insecure:允许NFS客户端不使用NFS保留端口(通常是1024以上的端口)。


   




 





你可能感兴趣的:(nfs)