NFS服务器搭建

一、NFS:Network File System  网络文件系统

    NFS:协议,类Unix系统,文件系统(内核)

发展:sun公司    NFSv1   NFSv2  NFSv3  NFSv4(红帽6以上)  

RFC(远程过程调用)

   2049(tcp/udp)

    NFS+LDAP(SSL)很大的场景才会用。

RPC:portmapper

     监听

        111/tcp

        111/udp

二、NFS原理:

          NFS服务端:                              用户进程

 RPC服务   {------  NFS服务               本地文件访问                 RPC服务  

(rpcbind)         (nfs-utils)                  ||                     (rpcbind)

   ||第一步           ||                                                 ||

TCP/IP协议栈      本地文件访问                                       TCP/IP协议栈

第二步去找NFS服务     ||                       ||

     本地磁盘 {--------------}本地磁盘


三、访问流程:

         1.首先用户访问应用程序,由程序在NFS客户端上发出NFS文件存取功能的查询请求,这时NFS客户端(及执行程序的服务器)RPC服务(及rpcbind服务)就会通过

网络向NFS服务器端的rpcbind的111端口发出NFS文件存取功能的询问请求。


          2.NFS服务器端的rpcbind服务找到对应的已注册的NFS daemon 端口后,通知NFS客户端的rpcbind服务。

 

 3.此时NFS客户端就可以获取到正确的端口,然后直接与NFS daemon联系存取数据了。

 

 4.NFS客户端把数据存取成功后,返回给前端访问程序,告知给用户存取结果。

 

  总结:由于NFS的各项功能都需要向rpcbind服务注册,所以rpcbind服务才能获取到NFS服务的各项功能对应的port number服务注册,PID,NFS在主机

  所监听的IP等,而NFS需要有各个rpcbind服务的协助才能成功提供服务。

  

   综上所述:无论是NFS客户端还是服务端,需要使用NFS时,都首先需要启动rpcbind服务。


四、挂载格式: 挂载命令   挂载的格式类型   NFS服务器提供的共享目录   NFS客户端需要挂载的目录

            mount       -t nfs            192.168.11.39:/data      /data/video

完整方式: mount -t nfs 192.168.11.39:/data /data/video

五、文件系统导出属性:

      rw :读写;

      ro :只读; 

      sync :同步模式,请求或写入数据时,内存中数据写入到NFS-server的磁盘后才会退出;

      async :请求或写入数据时;先返回请求,再讲数据写入到内存缓存和硬盘中。可以提供NFS性能,但是安全性较低。不建议使用

      no_root_squash :加上这个选项后,root用户就会对共享的目录拥有至高的权限控制,就像是对本机的目录操作一样。不安全,不建议使用;

      root_squash:和上面的选项对应,root用户对共享目录的权限不高,只有普通用户的权限,即限制了root;

      all_squash:不管使用NFS的用户是谁,他的身份都会被限定成为一个指定的普通用户身份;

      anonuid/anongid :要和root_squash 以及all_squash一同使用,用于指定使用NFS的用户限定后的uid和gid,前提是本机的/etc/passwd中存在这个uid和gid。

六、NFS在网站中的位置    共享给Apache/Nginx服务器组。一般是放图片,视频


七、NFS的局限:

         1.局限性是存在单点故障,如果NFS server宕机了所以客户端都不能访问共享目录。--可以使用负载均衡和高可用方案弥补。

2.高并发支持能力较差。适合2000W PV以下。

3.安全性不高,基于IP和主机名认证,数据明文。  做基于内网

         4.维护麻烦,可做基于autofs的方式。

 

********************************************************

********************************************************

生产环境项目案例;适合1500W pv以下使用。

Server端:

一、server端,安装两个包 

   yum remove  nfs-utils*  rpcbind*  如果有可以卸载安装最新的

   yum -y install  nfs-utils* rpcbind*   

    

二、提供nfs-server服务的机器上 

    vim /etc/exports

/data/              192.168.11.0/24(rw,sync,all_squash,anonuid=501,anonuid=501)

/data/              /data/ 192.168.11.0/24(rw,sync,all_squash)

本机需要挂载的目录   允许挂载的IP段 (rw读写,sync同步写入磁盘,no_root_squash不压缩用户 all_squash压缩用户,anonuid=501,anonuid=501用户uid和gid)

NFS配置的一些选项说明

    rw :读写;

    ro :只读; 

    sync :同步模式,内存中数据时时写入磁盘;

    async :不同步,把内存中数据定期写入磁盘中;

    no_root_squash :加上这个选项后,root用户就会对共享的目录拥有至高的权限控制,就像是对本机的目录操作一样。不安全,不建议使用;

    root_squash:和上面的选项对应,root用户对共享目录的权限不高,只有普通用户的权限,即限制了root;

    all_squash:不管使用NFS的用户是谁,他的身份都会被限定成为一个指定的普通用户身份;

    anonuid/anongid :要和root_squash 以及all_squash一同使用,用于指定使用NFS的用户限定后的uid和gid,前提是本机的/etc/passwd中存在这个uid和gid。

    [root@NFS /]# chown -R nfsnobody.nfsnobody data/

三、启动服务

   必须按顺序启动rpcbind

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

 

  启动nfs 

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

  

  关闭iptables和selinux

  

四、查看挂载的目录

 [root@NFS ~]# showmount -e 192.168.11.31

 clnt_create: RPC: Program not registered

 [root@NFS ~]# showmount -e 192.168.11.39

 Export list for 192.168.11.39:

 /data 192.168.11.0/24

 [root@NFS ~]#   

###########################################################################

###########################################################################

Client端:

一、只需安装nfs-utils*

    yum -y install  nfs-utils*

二、查看远程挂载的目录

    [root@app-1 opt]# showmount -e 192.168.11.39

     Export list for 192.168.11.39:

     /data 192.168.11.0/24

     [root@app-1 opt]# 

 

三、客户端挂载并检查挂载情况:

[root@app-1 opt]# mount -t nfs 192.168.11.39:/data /mnt/

[root@app-1 opt]# df -h

Filesystem           Size  Used Avail Use% Mounted on

/dev/sda2            4.9G  1.1G  3.6G  23% /

tmpfs                392M     0  392M   0% /dev/shm

/dev/sda1            485M   32M  428M   7% /boot

/dev/sda3            2.0G   35M  1.8G   2% /home

192.168.11.39:/data  4.0G  365M  3.4G  10% /mnt


[root@app-1 mnt]# umount -lf /mnt/  强制卸载挂载


[root@NFS /]# cat /var/lib/nfs/etab 

/data 192.168.11.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,all_squash)


本文出自 “山猫” 博客,谢绝转载!

你可能感兴趣的:(linux,nfs,共享)