简介:

    NFS是network file system的缩写及网络文件系统。nfs主要功能是通过局域网让不同的主机之间可以共享文件或目录;nfs系统和Windows网络共享、网络驱动器类似,只不过Windows用于局域网nfs用于企业集群架构中;如果是大型网站,会用到更复杂的分布式文件系统FastDFS(音频,小说,视频),glustrfs(ISO镜像),HDFS

nfs(2049端口):

    解决前端web静态资源的共享

    解决前端web静态资源一致性

    解决前端web磁盘空间的浪费

    并不能解决网站访问的延时,如果想解决访问延时:静态资源走CDN

nfs实现原理:

  1. 用户进程访问NFS客户端使用不同的函数对数据进行处理
  2. NFS客户端通过TCP/IP的方式传递给NFS服务端
  3. NFS服务端接收到请求后,会先调用portmap进程进行端口映射
  4. nfsd进程用于判断NFS客户端是否拥有连接NFS服务端
  5. Rpc.mount进程判断客户端是否有对应的权限进行验证
  6. idmap进程实现用户映射和压缩
  7. 最后NFS服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件

    注意:rpc是一个远程过程调用,那么使用nfs必须有rpc服务

nfs安装:

    yum install nfs-utils -y        [默认安装rpcbind并启动]

配置:

    rpm -qc nfs-utils

    vim /etc/exports

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

    mkdir /data

    chown -R nfsnobody,nfsnobody /data

启动:

    systemctl start nfs

    systemctl enable nfs

检查:

    cat /var/lib/nfs/etab

客户端:

    安装

    yum install nfs-utils -y

检查NFS是否有共享的内容

    showmount -e 172.16.1.31

挂载:

    mount -t nfs 172.16.1.31:/data /opt

    echo "172.16.1.31:/data /opt nfs defaults 0 0">>/etc/fstab

    mount -a #验证fstab开机启动是否填写错误

配置文件参数详解

    rw            读写权限

    ro            只读权限

    root_squash        当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户(不常用)

    no_root_squash    当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员(不常用)

    all_squash        无论NFS客户端使用什么账户访问,均隐射为NFS服务器的匿名用户

    no_all_squash    无论NFS客户端使用什么账户访问,都不进行压缩

    sync            同时将数据写入到内存与硬盘中,保证不丢失数据

    async            优先将数据保存到内存,然后写入硬盘,这样效率更高,但可能丢失数据

    anonuid        配置all_squash使用,指定NFS的用户UID,必须存在系统

    anongid        配置all_squash使用,指定NFS的用户GID,必须存在系统

 

nfs存储优点

  1. NFS文件系统简单易用、方便部署、数据可靠、服务稳定、满足中小企业需求
  2. NFS文件系统内存的数据都在文件系统之上,所有数据都是能看得见

NFS存储局限

  1. 存在单点故障,如果构建高可用维护麻烦
  2. NFS数据明文,并不对数据做任何检验
  3. 客户端挂载NFS服务没有密码验证,安全性一般(内网使用)

NFS应用建议

  1. 生产场景应将静态数据尽可能往前端推,减少后端存储压力
  2. 必须将存储里的静态资源通过CDN缓存jpg/png/mp4/avi/css/js
  3. 如果没有缓存或架构本身示例遗留问题太大,在多存储也无用
posted on 2019-05-02 13:24  叶秀儿  阅读(306)  评论(0编辑  收藏  举报