当前位置:Linux教程 - Linux - Windows文件映射到异种操作系统

Windows文件映射到异种操作系统

  许多局域网都是由大型主机和微机组成的。一般客户端微机采用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: fs,就可进行安装了。这个软件大小还不到450KB,含十几个文件,其中与安装和配置有关的文件有Exports、rpc、Portmap、nfs等。

  图1 NFS工作原理

  现在可以安装软件了。安装之前,你必须确定你的Windows系统已经安装好TCP/IP协议,并能正常工作。

  本文中凡涉及到UNIX和Windows NT的操作,均须以系统管理员的账号登录。

  第一步,打开一个MS-DOS窗口,并把该软件所在目录设置为当前目录,命令为:cd c: fs

  第二步,在Windows所在目录(Windows 95/98一般是C:Windows,Windows NT则为C:Winnt)中创建一个名为etc的子目录,并把软件提供的Exports文件和rpc文件复制到这个目录中。具体命令为:

   mkdir %WINDIR%ETC

   copy exports %WINDIR%ETCexports

   copy RPC %WINDIR%ETCRPC

  第三步,如果未指定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:WindowsHosts);对于Windows NT,则在操作系统所在目录下的System32DriversETC子目录中(文件全名一般是C:WinntSystem32

  DriversetcHosts)。值得一提的是,一般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年购置)上做试验,均取得良好效果。