Gentoo Linux 透過 NFS mount FreeBSD partition 的問題 - BBS
By Damian
at 2009-03-29T19:41
at 2009-03-29T19:41
Table of Contents
NFS client 是 Gentoo Linux,
kernel 是 2.6.29-gentoo,
跟 NFS 相關的套件裝的是 nfs-utils 1.1.5,
系統有裝 iptables 不過 default policy 都是 pass,
只是用來搭 sshguard 擋暴力 try 密碼的東西而已;
該開的 RPC service 和 portmap 這些東西都有開。
NFS server 是 FreeBSD 7.1-STABLE (目前已升到 7.2-PRELEASE 做測試),
有使用 pf 搭 sshguard,
其餘都是 pass,
hosts.allow 第一條 rule 就是 ALL : ALL : allow,
該開的 RPC service 都有打開。
目前 Linux 這端無論使用 autofs 或是寫死在 /etc/fstab,
過了一段時間之後跟 FreeBSD 的 NFS 連線都會 hang 住,
觀察發現無論用哪種方法 Linux 這端都會在閒置一段時間後切斷 NFS 的連線,
也就是會把 tcp socket 給 shutdown 掉。
問題就在這個 shutdown 的過程有時候會成功有時候卻不成功,
在使用 tcpdump 觀察後發現會成功的流程是:
1. Linux (client) -----FIN----> FreeBSD (server)
2. Linux (client) <----ACK----- FreeBSD (server)
3. Linux (client) <----FIN----- FreeBSD (server)
4. Linux (client) -----ACK----> FreeBSD (server)
會 hang 住的情況就是只有進行完 1. 和 2.,
FreeBSD 這端並沒有主動發送 FIN 給 Linux 這端,
導致 Linux 這端的 tcp socket 進入 FIN_WAIT2 狀態:
tcp 0 0 linux:789 freebsd:nfs FIN_WAIT2
而 FreeBSD 那端對應的 nfsd 也會停在 CLOSE_WAIT 狀態。
Google 查過各式各樣的關鍵字不過都沒有看到有效的解法,
比方說是在 mount option 裡加入 rsize=1024 和 wsize=1024 也是無效,
在 FreeBSD 裡把 net.inet.tcp.keepidle 改成一分鐘也是沒有改善,
打死它都不肯回傳一個 FIN,
不曉得有沒有人遇過相似的問題並解決的呢?
--
kernel 是 2.6.29-gentoo,
跟 NFS 相關的套件裝的是 nfs-utils 1.1.5,
系統有裝 iptables 不過 default policy 都是 pass,
只是用來搭 sshguard 擋暴力 try 密碼的東西而已;
該開的 RPC service 和 portmap 這些東西都有開。
NFS server 是 FreeBSD 7.1-STABLE (目前已升到 7.2-PRELEASE 做測試),
有使用 pf 搭 sshguard,
其餘都是 pass,
hosts.allow 第一條 rule 就是 ALL : ALL : allow,
該開的 RPC service 都有打開。
目前 Linux 這端無論使用 autofs 或是寫死在 /etc/fstab,
過了一段時間之後跟 FreeBSD 的 NFS 連線都會 hang 住,
觀察發現無論用哪種方法 Linux 這端都會在閒置一段時間後切斷 NFS 的連線,
也就是會把 tcp socket 給 shutdown 掉。
問題就在這個 shutdown 的過程有時候會成功有時候卻不成功,
在使用 tcpdump 觀察後發現會成功的流程是:
1. Linux (client) -----FIN----> FreeBSD (server)
2. Linux (client) <----ACK----- FreeBSD (server)
3. Linux (client) <----FIN----- FreeBSD (server)
4. Linux (client) -----ACK----> FreeBSD (server)
會 hang 住的情況就是只有進行完 1. 和 2.,
FreeBSD 這端並沒有主動發送 FIN 給 Linux 這端,
導致 Linux 這端的 tcp socket 進入 FIN_WAIT2 狀態:
tcp 0 0 linux:789 freebsd:nfs FIN_WAIT2
而 FreeBSD 那端對應的 nfsd 也會停在 CLOSE_WAIT 狀態。
Google 查過各式各樣的關鍵字不過都沒有看到有效的解法,
比方說是在 mount option 裡加入 rsize=1024 和 wsize=1024 也是無效,
在 FreeBSD 裡把 net.inet.tcp.keepidle 改成一分鐘也是沒有改善,
打死它都不肯回傳一個 FIN,
不曉得有沒有人遇過相似的問題並解決的呢?
--
Tags:
BBS
All Comments
Related Posts
啟動apache時產生的訊息
By Tracy
at 2009-03-27T17:41
at 2009-03-27T17:41
啟動apachectl時產生的訊息
By Tracy
at 2009-03-27T15:48
at 2009-03-27T15:48
cvsup.tw.FreeBSD.org
By Mia
at 2009-03-27T11:21
at 2009-03-27T11:21
軟體管理一問
By Sierra Rose
at 2009-03-26T22:26
at 2009-03-26T22:26
cvsup.tw.FreeBSD.org
By Dorothy
at 2009-03-26T21:41
at 2009-03-26T21:41