内容:

1、NFS简介

2、NFS服务端的配置

3、NFS客户端的配置以及使用命令

4、NFS服务的搭建测试



一、NFS简介

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

1)、设置Linux系统之间的文件共享(Linux与Windows中间文件共享采用SAMBA服务);

2)、NFS只是一种文件系统,本身没有传输功能,是基于RPC协议实现的,才能达到两个Linux系统之间的文件目录共享;

3)、NFS为C/S架构;


二、NFS服务端的配置

    1、需要安装的软件包:

    rpcbind:提供rpc服务(mapping),在centos5以前叫portmap,5以后改名为rpcbind

    nfs-utils:提供nfs,mountd与其他相关程序。


    我们可以rpm -ql nfs-utils来查看nfs服务的应用程序主要有以下几个:

        nfsd:NFS的守护进程,工作在tcp与udp的2049端口上。

        mountd:NFS用来验证客户端信息的守护进程,工作在随机端口。

        rquotad:磁盘限额进程。

        lockd:文件锁。

        idmapd:权限映射。

    辅助类的服务:rpc (portmap)

        rpc.mountd:认证;

        rpc.lockd:加锁

        rpc.statd:状态


    2、配置文件:

    /etc/exports:nfs的主要设定文件。

    /var/lib/nfs/*tab:设定记录文件。

        etab:共享目录的完整权限设定。

        xtab:曾经连接的客户端资料。

    /usr/sbin/exportfs:NFS分享资源命令,可以用来重新获取共享文件设定,挂载,卸载等。

    /usr/sbin/showmount:用来查看远程主机的共享信息。

    3、exports文档设定格式

    管理共享的nfs文件系统:配置文件每一行定义一个共享文件系统

        /PATH/TO/SOME_DIR   CLIENTS_1(export_options,...)  CLIENTS_2(export_options,...) 

    CLIENTS:

    single host: IPv4, IPv6, FQDN

    IP networks:network/netmask,支持两种格式的掩码;

    wildcards:在主机名字符串中使用通,*.maideliang.com,

    anonymous:*,表示所有的客户端主机;

    export_options:

        ro:只读;

        rw:读写;

        sync:同步

        async:异步

    User ID Mapping:

    root_squash:压缩root用户的权限,默认行为;nfsnobody

    no_root_squash:不压缩root用户的权限;

    all_squash:压缩所有用户的权限; 

    anonuid and anongid:将压缩的用户映射为此处指定的用户

命令:

    exportfs命令(可以不重启nfs而生效):

        -a:跟-r或-u选项同时使用,表示重新挂载所有文件系统或取消导出所有文件系统;

        -r: 重新导出

        -u: 取消导出

        -v: 显示详细信息

    4、权限相关

        当远程用户访问共享文件夹时是使用什么权限呢?如果创建文件那么属主和属组又是什么呢?  

        其实也samba共享服务一样,nfs默认是使用你本地主机当前用户UID与GID相对应的身份来使用,如果远程服务端没有此用户或组就会以数字的形式呈现。  

        如果是root用户,那么在远程主机上肯定就是使用root了,因为root默认的uid gid都是0!这样就太危险了,所以如果使用了root访问,NFS会自动压缩权限为最小权限nfsnobady。

当本地用户使用不一样的名字,UID却是相同的创建文件,会通过idmapd这个进程来映射,所以你在远程看到的还会是你原来的name。

        当你将权限都设定完成后记得去更改服务器端文件夹的权限,推荐使用acl来设定,因为你的权限其实为 "用户权限与文件夹权限的交集"。

三、NFS客户端命令:

        1、挂载NFS目录:

        mount -t nfs NFS_SERVER:/PATH/TO/EXPORTED_DIR  /MOUNT_POINT  [-rvVwfnsh] [-o OPTIONS]


        2、查看NFS服务的命令:

        showmount -e NFS_SERVER: 查看NFS服务器“导出”的各文件系统

        showmount -a NFS_SERVER: 查看NFS服务器所有被挂载的文件系统及其挂载的客户端对应关系列表

        showmount -d NFS_SERVER: 显示NFS服务器所有导出的文件系统中被客户端挂载了文件系统列表


        3、开机自动挂载

    编辑fstab文件添加即可,不过需要注意添加挂载选项

    例:设定开机自动挂载:

        10.1.252.109:/shared
/mnt/nfs  
nfs  
defaults,_rnetdev  
0  
0

        最好加载挂载选项:_rnetdev,代表如果检查nfs远端服务如果没开则跳过检查,否则会导致开机不成功(已测试验证)

四、NFS服务的搭建测试

        1、服务端安装相关的程序包

[00:18 [email protected]~]# yum install -y nfs-utils rpcbind

        2、编写/etc/exports到处列表,并启动nfs服务

[00:39 [email protected]~]# cat !$
cat /etc/exports
/shared 10.1.0.0/16(rw) #把/shared目录共享给10.1.0.0/16的所有用户,并有读写权限
[00:42 [email protected]~]# service nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting RPC idmapd:                                       [  OK  ]


        3、客户端挂载测试

[root@localhost ~]# showmount -e 10.1.252.109 #查看服务端的exports到处列表
clnt_create: RPC: Program not registered
[root@localhost ~]# showmount -e 10.1.252.109
Export list for 10.1.252.109:
/shared 10.1.0.0/16
[root@localhost ~]# showmount -a 10.1.252.109
All mount points on 10.1.252.109:
[root@localhost ~]# showmount -d 10.1.252.109
Directories on 10.1.252.109:
[root@localhost ~]# mkdir /mydata/nfs
[root@localhost ~]# mount -t nfs 10.1.252.109:/shared /mydata/nfs/ #挂载NFS文件系统
[root@localhost ~]# showmount -e 10.1.252.109
Export list for 10.1.252.109:
/shared 10.1.0.0/16
[root@localhost ~]# showmount -d 10.1.252.109
Directories on 10.1.252.109:
[root@localhost ~]# showmount -a 10.1.252.109
All mount points on 10.1.252.109:
[root@localhost ~]# mount #检查已经挂载成功
/dev/mapper/vg0-root on / type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
vmware-vmblock on /var/run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)
//10.1.252.109/windows on /mydata/samba type cifs (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
10.1.252.109:/shared on /mydata/nfs type nfs (rw,vers=4,addr=10.1.252.109,clientaddr=10.1.252.187)



        注意:如果出现以下错误说明,本机没有安装 mount.nfs了,我们只要安装mount.nfs就可以了

[root@localhost ~]# mount -t nfs 10.1.252.109:/shared /mnt
mount: wrong fs type, bad option, bad superblock on 10.1.252.109:/shared,
       missing codepage or helper program, or other error
       (for several filesystems (e.g. nfs, cifs) you might
       need a /sbin/mount. helper program)
       In some cases useful info is found in syslog - try
       dmesg | tail or so.
      
[root@localhost ~]# yum install -y nfs-utils   
[root@localhost ~]# mount
mount       mount.nfs   mount.nfs4  mountpoint  mountstats  
[root@localhost ~]# mount -t nfs 10.1.252.109:/shared /mnt

  


        接下来就可以做各种基于NFS共享的负载均衡实验了。

OK,更多内容请关注我的博客。