• NFS详解


    一 服务端的配置 
    首先安装 nfs-utils 和 rpcbind 
    1)启动 rpcbind 服务 
    service rpcbind status ,service rpcbind start 
    2)启动NFS 服务 
    service nfs status , service nfs start 
    3)将 rpcbind和nfs 服务加入开机自启动 
    vim /etc/rc.local , 输入 service rpcbind start service nfs start 
    4)修改NFS服务端的配置文件 
    vim /etc/exports ,输入 /data 192.168.200.0/24( rw,sync,all_squash) {注意,0/24与小括号之间没有空格} 
    5)修改配置文件以后,重启nfs服务 
    service nfs reload 
    6)给共享目录更改属主属组为nfsnobody 
    chown -R nfsnobody.nfsnobody /data 
    注意:必须先开启rpcbind服务,再开启nfs服务 
    测试: 
    进行本地挂载测试 
    mount 192.168.200.128:/data /mnt 
    二 客户端设置 
    1)首先确认 nfs-utils软件是否安装 
    rpm -qa nfs-utils 
    2)检查远端的showmount 
    Showmount -e 192.168.200.128 
    3)客户端挂载 
    Mount 192.168.200.128:/data /mnt 
    4)进行文件的读写及同步测试 
    Touch , ssh root@192.128.200.128 “ls /data”(远程查看服务端的共享目录) 
    5)配置开机自动挂载 
    echo “mount 192.168.200.128:/data /mnt” >> /etc /rc.local

    1.7 NFS配置权限设置常用参数说明 
    rw Read-write,表示可读写权限 
    ro Read-only,表示只读权限 
    sync (同步,实时)请求或吸入数据时,数据同步写入到NFS Server的硬盘后才返回 
    async (异步)写入时数据会先写到内存缓冲区,只到硬盘有空档才会写入磁盘,这样可以提升写入速率!风险为若服务器挂掉或不正常关机,会损失缓冲区中未写入磁盘的数据 
    no_root_squash 访问NFS Server共享目录的用户如果是root,它对该共享目录具有root权限。 
    root_squash 如果访问目录的是root,则它的权限将被压缩成匿名用户。 
    all_squash 不管访问共享目录的用户身份如何,它的权限都被压缩成匿名用户。 
    anonuid 指定共享文件夹里文件所有者的uid号:例如:(rw,squash,anonuid=12306,anongid=12306) 
    anongid 指定共享文件夹里文件所有者的gid号:例如:(rw,squash,anonuid=12306,anongid=12306)

    1.10 exports配置文件相关参数应用领域的详细解释 (NFS精华重点) 
    1)(rw,sync) :可读可写,同步传输 
    2)(ro,async):只读,异步传输。 
    详细说明: 
    rw或者ro,主要控制的是所有客户端用户(包含root)的读写权限。如果设置成ro,就算root也只有读权限。它是NFS权限设置的第一道总闸阀门。 
    sync:同步传输,实时进行。 
    async:异步传输:攒一会在传输。 
    3)root_squash:将root账户在共享目录里的身份降低为匿名者(默认nfsnobody)身份 
    4)no_root_squash:不降低root账户在共享目录的身份,身份还是root 
    5)all_squash:将所有访问用户在共享目录里的身份都降低为匿名者(默认nfsnobody)身份

    2.1 NFS配置文件优化 
    -NFS客户端挂载后,往共享目录写入数据时卡住了 
    -NFS服务端,重启restart服务,客户端如果写入数据卡住了。 
    解答: 
    1,nfs服务端重启之后,共享文件夹进入grace time(无敌时间) 
    2,客户端在服务端重启后写入数据大概要等90秒 
    3,nfs配置文件:/etc/sysconfig/nfs 
    NFSD_V4_GRACE=90 <===>/proc/fs/nfsd/nfsv4gracetime 
    NFSD_V4_LEASE=90 <===>/proc/fs/nfsd/nfsv4leasetime 
    NLM_GRACE_PERIOD=90 <===>/proc/fs/nfsd/nfsv4recoverydir 
    这三条是控制无敌时间的,去掉#直接修改时间即可,改后别忘了重启服务。一旦启用了这三条,/proc临时目录下便会生成对应的临时文件

    2.3.2 mount挂载性能优化参数选项 
    下面介绍几个在企业生产环境下,NFS性能优化挂载的例子。 
    1)禁止更新目录及文件时间戳挂载,命令如下: 
    mount -t nfs -o noatime,nodiratime 172.16.1.31:/data /mnt 
    2)安全加优化的挂载方式如下: 
    mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,intr,rsize=131072,wsize=131072 172.16.1.31:/data /mnt 
    3)默认的挂载方式如下: 
    mount -t nfs 172.16.1.31:/data /mnt 
    如果是本地文件系统,使用如下命令: 
    mount /dev/sdb1 /mnt -o defaults,async,noatime,data=writeback,barrier=0 
    注意: 
    如果本地文件系统挂载时,如果加入nodiratime会报错

    2.4 NFS系统应用的优缺点说明 
    NFS服务可以让不同的客户端挂载使用同一个共享目录,也就是将其作为共享存储使用,这样可以保证不同节点客户端数据的一致性,在集群架构环境中经常会用到。如果是windows和Linux混合环境的集群系统,可以用samba来实现。 
    优点: 
    1.简单,容易上手,容易掌握 
    2.NFS 文件系统内数据是在文件系统之上的,即数据是能看得见的。 
    3.部署快速,维护简单方便,且可控,满足需求的就是最好的。 
    4.可靠,从软件层面上看,数据可靠性高,经久耐用。数据是在文件系统之上的。 
    5.服务非常稳定 
    局限: 
    1.存在单点故障,如果NFS Server宕机了,所有客户端都不能访问共享目录。这个需要负载均衡及高可用来弥补。 
    2.在大数据高并发的场合,NFS效率,性能有限(2千万/日以下PV(pageview)的网站不是瓶颈,除非网站架构设计太差。) 
    3.客户端认证是基于IP和主机名的,权限要根据ID识别,安全性一般(用于内网则问题不大)。 
    4.NFS数据是明文的,NFS本身不对数据完整性做验证。 
    5.多台客户机器挂载一个NFS服务器时,连接管理维护麻烦(耦合度高)。尤其NFS服务端出问题后,所有NFS客户端都处于挂掉状态(测试环境可使用autofs自动挂载解决,正式环境可修复NFS服务或强制卸载) 
    涉及了同步(实时等待)和异步(解耦)的概念,NFS服务端和客户端相对来说就是耦合度有些高。网站程序也是一样,尽量不要耦合度太高,系统及程序架构师的重要职责就是为程序及架构解耦,让网站的扩展性变得更好。

  • 相关阅读:
    hdu4549(费马小定理 + 快速幂)
    java 四种实现延迟加载的方法
    浅谈java缓存
    JavaWeb实现文件上传下载功能实例解析
    java分页之页面分页
    浅析Java开发模式—Model1、Model2和三层
    构建一个简单的基于MVC模式的JavaWeb
    Java中MVC详解以及优缺点总结
    Servlet
    通过JDBC进行简单的增删改查(以MySQL为例)
  • 原文地址:https://www.cnblogs.com/666boke/p/9933081.html
Copyright © 2020-2023  润新知