AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 831387
Accepted
ilansch
ilansch
Asked: 2017-02-09 09:06:24 +0800 CST2017-02-09 09:06:24 +0800 CST 2017-02-09 09:06:24 +0800 CST

在 CentOS 上禁用所有 NFS 客户端缓存

  • 772

我有一个导出 NFS 共享 (NFS3) 的 netapp 服务器。
我正在监视 netapp 服务器上的 fpolicy,这意味着,我监听卷的所有文件读取操作(和共享..)。

在 CentOS 机器上,我挂载 NFS 并执行文件读取 (cat) 操作。
第一次我会做“cat”,在netapp中我可以看到有一个FILE READ事件。

但是,如果我做额外的“cat 文件名”,我不会让事件 FILE READ 计数器增加。
如果我到另一台机器上,挂载 NFS 共享,然后执行 cat,我会看到计数器加一。
我假设 - NFS 客户端具有内部缓存机制。

我想禁用 NFS 客户端缓存。

我使用以下命令安装了 NFS:

mount -o lookupcache=none,actimeo=0,noac 10.10.10.1:/vol/vol0_unix /mnt/nfs1

注意 lookupcache=none,actimeo=0,noac 选项 -取自 link。

我是否缺少其他 NFS 客户端缓存机制?

我的 NFS 客户端是:Linux CENTOS 6.4 2.6.32-358.el6.x86_64

机器 NFS 版本:

[ilan@DevCore-Centos6 nfs1]$ rpm -qa|grep -i nfs
nfs-utils-1.2.3-36.el6.x86_64
nfs-utils-lib-1.1.5-6.el6.x86_64
nfs4-acl-tools-0.3.3-6.el6.x86_64
[ilan@DevCore-Centos6 nfs1]$

我假设cachefilesd默认没有运行。

centos nfs mount netapp
  • 2 2 个回答
  • 5102 Views

2 个回答

  • Voted
  1. Best Answer
    MadHatter
    2017-02-11T04:36:31+08:002017-02-11T04:36:31+08:00

    我认为您的问题是正在进行的缓存与 NFS 无关。这是我在五秒钟内第二次md5sum执行一个小型 NFS 挂载文件时在网络上看到的内容:

    12:29:27.615255 IP6 2a02:xxxx:6049:11:76d4:35ff:fe8d:39ec.1003 > 2a02:xxxx:6049:11:7271:bcff:feac:445a.2049: Flags [P.], seq 3028:3236, ack 34857, win 1432, options [nop,nop,TS val 453693630 ecr 2105657370], length 208: NFS request xid 3660266482 204 getattr fh 0,2/53
    12:29:27.617595 IP6 2a02:xxxx:6049:11:7271:bcff:feac:445a.2049 > 2a02:xxxx:6049:11:76d4:35ff:fe8d:39ec.1003: Flags [P.], seq 34857:35153, ack 3236, win 500, options [nop,nop,TS val 2105661555 ecr 453693630], length 296: NFS reply xid 3660266482 reply ok 292 getattr NON 3 ids 0/-2006101416 sz 1610612736
    12:29:27.617632 IP6 2a02:xxxx:6049:11:76d4:35ff:fe8d:39ec.1003 > 2a02:xxxx:6049:11:7271:bcff:feac:445a.2049: Flags [.], ack 35153, win 1432, options [nop,nop,TS val 453693632 ecr 2105661555], length 0
    

    内核所做的只是检查文件是否未被修改,使用 a getattr(因为它正确地没有缓存任何属性,而是返回服务器获取新的属性)。然后它知道文件没有被修改,因此它可以使用仍然包含内容的核心页面。如果我理解正确的话,这也正是它对本地文件所做的事情。

    因此,您并不是要关闭NFS 缓存,而是要修改 VM 子系统中的文件缓存,以使其不适用于 NFS 挂载的内容。这可能要困难得多,因为您不是要关闭已经存在的东西,而是要引入一个全新的区别,如果您关注我的话,现在可能不存在。

    我想我同意 Andrew Henle 的观点,这听起来像是一个 XY 问题。也许你应该告诉我们你真正想要做什么。

    编辑:您断言本地文件访问并非如此。然而,我认为你错了。我已将 HDD 连接到只有一个进程可以访问的桌面,并且在用于监视进出物理设备的流量md5sum时,我连续两次使用了一个文件。iostat

    第一次:

    Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
    sdc               0.00     0.00    0.80    0.00    49.60     0.00   124.00     0.08   95.75   95.75    0.00  94.00   7.52
    

    注意来自驱动器的读取流量 (rkB/s);现在第二次:

    sdc               0.00     0.20    0.00    0.40     0.00     2.40    12.00     0.00    1.00    0.00    1.00   1.00   0.04
    

    所以看起来,VM子系统也阻碍了。因此,目前我认为没有理由认为您没有在您的 netapp 上看到客户端正确生成的所有流量,我再次问,您实际上想在这里做什么? 为什么您“必须禁用 [缓存],并从 redhat 发送实际的 FILE READ ”?因为目前看来,这确实不是问题。

    • 4
  2. Basil
    2017-02-09T11:19:00+08:002017-02-09T11:19:00+08:00

    假设您正在测试 fpolicy 并且只是在寻找一种可靠地生成一些流量的方法,我将完全跳过 OS NFS 堆栈,而只使用使用libnfs或其他东西的 python 脚本。您对何时生成 NFS 操作具有完整的、记录在案的控制权。操作系统不是为此而设计的,一个快速的谷歌告诉我,虽然它应该可以工作,但它并不明显,当然也不是默认行为。

    • 3

相关问题

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 使用 crontab 和 /etc/cron.hourly,daily,weekly 的区别

  • 持续监控许多服务器运行状况的简单方法?

  • Hudson 无法在 tomcat5 中启动

  • CentOS 的依赖挑战

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve