1. 程式人生 > >Windows下NFS客戶端的安裝及設定

Windows下NFS客戶端的安裝及設定

在Windows上使用NFS客戶端,需要把nfs共享目錄對映到一個驅動器。此處假定為對映的驅動器為N:,而nfs共享目錄為192.168.6.55:/vmsnfs。

1 安裝Microsoft Windows Services for UNIX
 

Windows Services for UNIX 3.5 提供支援充分和整合完全的跨平臺網路服務,適應需要 Windows 和 UNIX 基礎環境之間互動操作性的企業客戶。 Windows Services for UNIX 3.5 為企業客戶提供儲存在多個平臺的資訊之緊密存取,統一了跨平臺的網路管理,並且重複使用 UNIX 應用程式和 Windows 上的指令碼。其中包括支援網路檔案系統 (NFS)。

下載Microsoft Windows Services for UNIX

安裝程式:SFU35SEL_EN.exe 217 MB (228,178,504 位元組)

安裝Microsoft Windows Services for UNIX

注意與NFS有關的兩個元件是一定要安裝的

NFS->Client for NFS
Authentication tools for NFS->Server for PCNFS

安裝過程比較簡單,此處略過。

2 在Windows下配置NFS客戶端
 

開啟Services for UNIX Administration配置使用者名稱

點 “開始選單”->“所有程式”->“Windows Services for UNIX”->“Services for UNIX Administration”, 會彈出一個名為“Services for UNIX Administration”的視窗。

左邊欄切到Server for PCNFS。

右邊欄切到Groups,新增Group Name為root,Group ID(GID)為0的組。

右邊欄切到Users,新增User name為root,User logon name為root,Primary group name為root,User ID(UID)為0的使用者,密碼不必與Linux系統的密碼相同。

點選右上角的Apply儲存。

對映網路驅動器到NFS共享目錄(介面操作方式,不推薦

在“網路上的芳鄰”上按右鍵,選擇“對映網路驅動器”,會彈出對映網路驅動器對話方塊。

選擇碟符,比如N:

輸入網路資源路徑:192.168.6.55:/vmsnfs

點 “確定”。會彈出一個NFS login successful的資訊框,注意檢查顯示的UID和GID的值(一般為-2),點“否”,會彈出 Client for NFS Drive N:對話方塊。選中Login using PCNFS authentication對話方塊,在 Server name中填入localhost,在User name中填入root,在Password中填入前面設定的密碼,點“確定”,會再次彈出NFS login successful的資訊框,此次會顯示UID和GID均為0,點“確定”。

這時開啟“我的電腦”,會看到增加了一個碟符N:。在其上按右鍵開啟屬性對話方塊,切換到NFS Attributes頁,會看到許可權,切換到NFS Mount Options,會看到UID和GID等資訊。注意確認一下UID和GID一定要為0。

對映網路驅動器到NFS共享目錄(批處理指令碼方式,推薦)

上面這段挺費勁的,但我不推薦使用這種方式來設定,因為一旦重新啟動機器,你再開啟“我的電腦”,在NFS對應的碟符N:屬性就會看到UID和GID由還原成了-2。還得先把它斷開,然後重新設定,挺麻煩的。所幸微軟提供了類似Unix下的命令列工具mount.exe,可以編寫如下內容的批處理指令碼並儲存為nfs.bat。其中第一行是用來記錄操作日誌的,第二行啟動Server for PCNFS,第三行是避免mount命令出錯,第四行是把nfs共享目錄掛載到N:(注意-p:xxx要設定成前面設定的密碼),第五行列出N:下的檔案和目錄。

批處理程式碼  
echo mount nfs at %date% %time% >>c:\nfs.log   
net start pcnfsd >>c:\nfs.log   
net use /pers:no >>c:\nfs.log   
mount -o mtype=hard -o pcnfs=localhost -u:root -p:xxx 192.168.6.55:/vmsnfs N: >>c:\nfs.log   
dir N: >>c:\nfs.log   
echo mount nfs at %date% %time% >>c:\nfs.log
net start pcnfsd >>c:\nfs.log
net use /pers:no >>c:\nfs.log
mount -o mtype=hard -o pcnfs=localhost -u:root -p:xxx 192.168.6.55:/vmsnfs N: >>c:\nfs.log
dir N: >>c:\nfs.log 
 

雙擊執行nfs.bat,然後開啟“我的電腦”就可以看到N:了,然後開啟c:\nfs.log看一下。

Text程式碼  
mount nfs at 2010-11-19 星期五 11:33:39.15    
命令成功完成。   
  
N: is now successfully connected to 192.168.6.55:/vmsnfs   
  
The command completed successfully.   
mounted    
mount nfs at 2010-11-19 星期五 11:33:39.15 
命令成功完成。

N: is now successfully connected to 192.168.6.55:/vmsnfs

The command completed successfully.
mounted  
 

如果看到successully之類的關鍵字眼,就表明mount成功了。

3 在Windows下使用NFS客戶端會碰到的問題
 

Q:在掛載nfs共享目錄時,mount.exe報1326錯誤,是什麼原因?

Network Error - 1326

Type 'NET HELPMSG 1326' for more information.

A:根據提示,使用net helpmsg看一下,如下所示:

C:\>net helpmsg 1326

登入失敗: 未知的使用者名稱或錯誤密碼。

這時,需要檢查一下mount命令後面的-u:user和-p:password這兩部分是否正確了。

Q:在掛載nfs共享目錄時,mount.exe報85錯誤,是什麼原因?

Network Error - 85

Type 'NET HELPMSG 85' for more information.

A:根據提示,使用net helpmsg看一下,如下所示:

C:\>net helpmsg 85

本地裝置名已在使用中。

這是由於對同一個驅動器重複執行mount命令造成的,確認驅動器選擇是否正確。

Q:建立目錄或檔案時報“拒絕訪問”,怎麼辦?

A:首先開啟“我的電腦”,在NFS對映的驅動器上按右鍵,開啟屬性對話方塊。切換到NFS Mount Options頁,看顯示的UID和GID是否為0,可能你看到的是-2。關閉屬性對話方塊之後,在驅動器上按右鍵,選擇“斷開”,然後參照上一節重新設定。

如果看到NFS Mount Options頁顯示的UID和GID都為0,那麼就要到NFS服務端去查詢原因了。比如,檢查一下共享目錄的屬主和組是否為nfsnobody,參見前面的章節。

Q:怎樣做到登入Windows之後自動啟動NFS?

A:按照4.2建立nfs.bat指令碼,然後複製到“啟動”目錄(我的XP系統是“C:\Documents and Settings\Administrator\「開始」選單\程式\啟動”目錄)。在登入之後就會自動掛載nfs共享目錄。如果需要確認是否成功,開啟c:\nfs.log看一下。

Q:怎樣做到啟動Windows之後自動掛載NFS,而不管是否登入?

A:這個就有點難了。本人試驗瞭如下兩種方式,都無法成功的掛在nfs共享目錄。(奇怪,手工直接執行nfs.bat就能成功)

(1)安裝Windows Resource Kits,裡面有instsrv.exe和srvany.exe兩個程式,製作了系統服務MountNFS,用來執行nfs.bat指令碼。

(2)設定“任務計劃”,執行檔案為nfs.bat,觸發條件為“計算機啟動時”。

最後,只能將XP系統設定為自動登入才得以解決,不算很完美。具體如下:

先按照上一個問題中所述,將nfs.bat複製到“啟動”目錄。

然後執行“rundll32 netplwiz.dll,UsersRunDll”,在彈出的使用者賬戶對話方塊中,把“要使用本機,使用者必須輸入使用者名稱和密碼(E)”前面的鉤去掉,然後點“確定”。這時,會提示輸入賬號和密碼,輸入好之後儲存就行了。下次啟動機器就會直接登入,而無需手工輸入賬號和密碼了。

因為自動登入Windows之後會自動去執行“啟動”目錄的nfs.bat指令碼,也就會掛載nfs共享目錄了。

Q:怎樣才能在Windows下用程式訪問檔案伺服器上的檔案?

A:在Linux下檔案/vmsnfs/subdir/file.wav,可以直接訪問,在Windows下在路徑前面加上N:無法訪問N:/vmsnfs/subdir/file.wav,必須要把路徑裡面的vmsnfs去掉,變成N:/subdir/file.wav才能訪問。這樣程式處理起來稍微有點麻煩。

如果在Linux檔案伺服器的共享目錄上建立一個名為vmsnfs符號連結,就可以用N:/vmsnfs/subdir/file.wav來訪問了,具體做法如下:

cd /vmsnfs

ln -s . vmsnfs

Q:檔案伺服器重啟之後,Windows上mount的nfs共享目錄還能繼續正常訪問嗎?

A:有待試驗。

點選下面的連結檢視本文其他部分內容: