Centos

在 CentOS 上禁用所有 NFS 客戶端記憶體

  • February 12, 2017

我有一個導出 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預設沒有執行。

認為您的問題是正在進行的記憶體與 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 上看到客戶端正確生成的所有流量,我再次問,您實際上想在這裡做什麼? 為什麼必須禁用$$ cacheing $$,並從redhat發送實際的FILE READ “?因為目前,它看起來確實沒有問題。

引用自:https://serverfault.com/questions/831387