在 CentOS 上禁用所有 NFS 客戶端記憶體
我有一個導出 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 “?因為目前,它看起來確實沒有問題。