• NFS指定端口,NFS缓存(转载)


    nfs服务端:

    #编辑/etc/nfsmount.conf,在末尾添加:

    #RQUOTAD_PORT=30001
    #LOCKD_TCPPORT=30002
    #LOCKD_UDPPORT=30002
    #MOUNTD_PORT=30003
    #STATD_PORT=30004

    cat /etc/sysconfig/nfs|grep -v "^#"
    RQUOTAD_PORT=10001
    LOCKD_TCPPORT=10002
    LOCKD_UDPPORT=10002
    MOUNTD_PORT=10003
    STATD_PORT=10004

    iptables  -P INPUT DROP

    iptables  -P OUTPUT ACCEPT

    nfs客户端防火墙:

    iptables -A INPUT -s (服务端IP) -p tcp -m multiport --dport 111,2049,30001:30004 -j ACCEPT

     

    nfs服务端防火墙:

    iptables -A INPUT -s (客户端IP) -p tcp -m multiport  --dport 111,2049,30001:30004 -j ACCEPT

     测试:服务端telnet 客户端IP 端口

    服务端exports文件,多个IP用空格隔开:

    /data/web_log/  10.46.121.240 10.46.121.182(ro,anonuid=65534,anongid=65534,sync)

    如下报错:
    mount: no type was given - I'll assume nfs because of the colon
    mount.nfs: timeout set for Fri Apr 21 10:07:26 2017
    mount.nfs: trying text-based options 'vers=4,addr=10.46.121.222,clientaddr=10.46.121.240'
    mount.nfs: mount(2): No such file or directory
    mount.nfs: trying text-based options 'addr=10.46.121.222'
    mount.nfs: prog 100003, trying vers=3, prot=6
    mount.nfs: trying 10.46.121.222 prog 100003 vers 3 prot TCP port 2049
    mount.nfs: prog 100005, trying vers=3, prot=17
    mount.nfs: trying 10.46.121.222 prog 100005 vers 3 prot UDP port 47203
    解决:逐级输出目录,客户端逐级挂载(在nfs服务器端exports文件如下)
    /data/web_log/ 10.46.121.240(ro,anonuid=65534,anongid=65534,sync)
    /data/apache-tomcat/tomcat-cms-web-1031/logs 10.46.121.240(ro,sync,no_root_squash,no_all_squash)

    NFS挂载的客户端缓存以及如何使用noac选项

    现象:

    用户两台ECS挂载同一个NFS文件系统,在ECS-A上append写文件,在ECS-B用tail -f观察文件内容的变化。在ECS-A写完之后,在ECS-B看到文件内容变化会有10-30秒的延时。然而相同的场景下,如果直接在ECS-B上打开文件(比如vi)却是立即可以看到更新的内容的。

    原因:跟mount的选项以及tail -f实现相关。

    用户使用的mount命令:mount -t nfs4 /mnt/

    对于在ECS-B上以这一方式NFS mount的文件系统,默认情况下kernel对文件和目录的属性维护了一份metadata缓存,文件和目录属性(包括许可权、大小、和时间戳记)缓存的目的是减少 NFSPROC_GETATTR 远程过程调用(RPC)的需求。

    tail -f 的实现是sleep+fstat来观察文件属性(主要是文件大小)的变化,然后读入文件并输出。可见,tail -f是否能实时输出文件内容,主要取决于fstat的结果,由于前面描述得metadata cache的存在,fstat轮询到的并不是实时的文件属性,因此,即使在NFS服务器端文件已经更新了,但tail -f却没法知道文件已经改动了,于是输出就会有一个延时。

    解决办法:使用mount 的noac选项可以disable文件和目录属性的缓存。

    mount -t nfs4 -o noac /mnt/

    原文出处:

    https://www.cnblogs.com/yum777/p/6228723.html

  • 相关阅读:
    C#实战Microsoft Messaging Queue(MSMQ)消息队列(干货)
    实现动态的XML文件读写操作(依然带干货)
    多线程下访问控件的方式(您一定会用到,附源码啦!)
    Microsoft.VisualBasic.dll的妙用(开发中肯定会用到哦)
    vue使用element-ui的el-input监听不了键盘事件解决
    vue强制刷新组件
    asp.net微信公众平台本地调试设置
    武大女硕士面试被拒,改简历冒充本科生找工作的感想(原创)
    完整的站内搜索Demo(Lucene.Net+盘古分词)
    ASP.NET多线程下使用HttpContext.Current为null解决方案
  • 原文地址:https://www.cnblogs.com/eos666/p/11006106.html
Copyright © 2020-2023  润新知