許多局域網都是由大型主機和微機組成的。一般客戶端微機采用Windows操作系統進行數據采集,主機系統則運行UNIX操作系統,完成數據處理。這樣就不可避免地會遇到異種操作系統間的數據通信問題。
在這種環境中要實現數據共享,最方便的措施是采取硬盤映射技術,這在UNIX中可通過NFS來實現。遺憾的是,微軟的各系列操作系統均不支持該協議。下面談一談如何使Windows操作系統成為NFS Server,從而使UNIX主機能夠直接mount其硬盤和目錄。
運行在Windows系統下的第三方NFS軟件並不少,但大多需要另外購買。這裡向大家推薦一免費軟件——TrueGrid NFS Server。
TrueGrid NFS Server可使Windows 95/98/NT為操作系統的機器成為NFS服務器,通過硬盤映射方式實現異種操作系統之間的數據共享,從而達到數據通信對應用程序透明的目的,減輕編程強度,提高系統可靠性(見圖1)。該軟件的地址是http://www.truegrid.com/nfs.Html。把下載的文件用WinZip等軟件解壓縮,存入一新建的目錄,比如c:\nfs,就可進行安裝了。這個軟件大小還不到450KB,含十幾個文件,其中與安裝和配置有關的文件有EXPorts、rpc、Portmap、nfs等。
圖1 NFS工作原理
現在可以安裝軟件了。安裝之前,你必須確定你的Windows系統已經安裝好TCP/IP協議,並能正常工作。
本文中凡涉及到UNIX和Windows NT的操作,均須以系統管理員的賬號登錄。
第一步,打開一個MS-DOS窗口,並把該軟件所在目錄設置為當前目錄,命令為:cd c:\nfs
第二步,在Windows所在目錄(Windows 95/98一般是C:\Windows,Windows NT則為C:\Winnt)中創建一個名為etc的子目錄,並把軟件提供的Exports文件和rpc文件復制到這個目錄中。具體命令為:
mkdir %WINDIR%\ETC
copy exports %WINDIR%\ETC\exports
copy RPC %WINDIR%\ETC\RPC
第三步,如果未指定DNS,則修改(或創建)Hosts文件。為使WinSock能夠轉換機器名和IP地址,Windows操作系統必須有名為Hosts的文件。該文件是文本文件,每一行的格式如下:
IP地址 機器名
一般第一行總是:
127.0.0.1 localhost
第二行則指明本機的IP地址和機器名,比如筆者的機器為:
129.0.0.65 wwj
其它各行則應包括本機所在局域網內各主機節點的IP地址和機器名,至少應包括將來擬共享本PC機文件系統的那些機器的IP地址和機器名。
對於Windows 95/98,本文件應存放在操作系統所在目錄(文件全名一般是C:\Windows\Hosts);對於Windows NT,則在操作系統所在目錄下的System32\Drivers\ETC子目錄中(文件全名一般是C:\Winnt\System32\
Drivers\etc\Hosts)。值得一提的是,一般Windows 95/98提供一個例子文件,名為Hosts.sam,而Windows NT則原本就存有這個文件。
這一步完成後,可以用TrueGrid NFS Server提供的finfhost命令來驗證。比如命令:findhost wwj或findhost 192.0.0.65
若能得到類似下面的響應:
Official Name:wwj
Address:192.0.0.65
就表明相應的機器名及其IP地址已經正確設置完畢。
第四步,修改相應UNIX主機的Hosts文件。UNIX主機的Hosts文件格式與上述相同,存放在root的etc目錄中,換言之,它的全名是/etc/hosts。
准備共享PC文件系統的UNIX主機的Hosts文件中,都需包含該PC的IP地址和其機器名。比如:
129.0.0.65 wwj
129.0.0.66 sgi-o2
第五步,啟動TrueGrid NFS Server。回到第一步所打開的MS-DOS窗口中,如果是Windows 95/98系統,使用下列命令啟動TrueGrid NFS Server(見圖2):
portmap
nfs
若使用Windows NT,則用下列命令啟動:
PORTMAP add
NFS add
NFS start
請注意add和start要用小寫。
圖2 在Windows 95/98上運行時的任務列表
然後可以用該軟件的rpcinfo -p和showmount -e命令驗證程序是否已經啟動,正常情況下兩個命令的提示分別類似於:
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 790 mountd
100005 1 tcp 793 mountd
100003 2 udp 2049 nfs
和/c (everyone)
第六步,測試。以root登錄到相應的UNIX主機,臨時在根目錄上建立一目錄,如/pcdir,然後以mount命令把PC的C盤mount到/pcdir,命令如下:
mount wwj:/c /pcdir
隨後進入/pcdir目錄,就可以對PC機C盤的所有目錄和文件直接進行讀、寫或復制、刪除等操作了,與對本地目錄操作完全相同。
測試完畢,可用umount命令停止共享,並把測試用目錄/pcdir刪除。PC機端則可以停止NFS Server的運行:對Windows 95/98而言,可用任務管理器關閉nfs;對Windows NT則可用nfs stop命令來停止NFS Server。
如何使軟件自動啟動呢?對於PC機端,如果運行Windows 95/98,則可把portmap.exe和nfs.exe先後加入“啟動”程序組,注意順序;若運行Windows NT,只要上述安裝步驟是成功的就可以了。對於UNIX主機端,則在/etc/fstab中增加相應的控制語句即可。
對於日常維護和配置,我們介紹etc下的Exports文件:控制PC機的目錄共享的有關參數文件。
Exports是一個文本文件,每一行對應輸出一個本機的目錄,供其它系統mount。各行格式:共享名 -選項
例如,TrueGrid NFS Server提供的缺省參數是:
/c -path=c:\
/d -path=d:\
表示該PC機的C:\和D:\目錄可被任何機器mount,其muont名分別是/c和/d。
選項有多種,現介紹下面幾種:
Access=host:host... 僅允許這些主機mount本行指定的目錄;
path=path_name 指定輸出的目錄,使用絕對路徑;
ro=host:host... 輸出的目錄對所列主機是只讀的;
uid=n 指定輸出目錄的各文件的uid;
gid=n 指定輸出目錄的各文件的gid;
umask=m 指定輸出目錄的各文件的umask;
dmask=m 指定輸出目錄的各文件的dmask;
lc 輸出的目錄和文件均映射為小寫;
UC 輸出的目錄和文件均映射為大寫。
其它選項請參考軟件提供的文檔。
請注意該文件的語法:選項之間以逗號分開,但第一個選項前要加減號即:-。
比如我想把C:\jingzhi共享為文件系統jz,且該目錄下的文件映射到UNIX下的訪問權限置為rwxr-xr-x,可把如下一行加入etc中的Exports文件:/jz -umask=022,lc,path=c:\jingzhi
TrueGrid NFS Server可使Windows 95/98/NT操作系統的文件系統輸出給所有支持NFS的UNIX操作系統。筆者在Windows 95/98/NT和新型SGI O2工作站及一台非主流小型機(1992年購置)上做試驗,均取得良好效果。