• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

solaris上安装使用nfs服务详解。

发布: 2007-6-08 22:43 | 作者: peng   软件测试论坛讨论

领测软件测试网
作者:peng  
mail :peng.zhang@bj.china.com  
转载请保留作者信息 

前言: 
    最近工作用到nfs服务,以前没有接触过这筷。。这两天仔细的看了看,写个心得,希望能对大家有所帮助。也感谢南非蜘蛛MM的热心帮助.
    所有的测试环境都是sun的solaris系统。

1、理解nfs服务器和客户端功能。

   nfs是sun公司来建立来使用tcp/ip协议以及sun的远程调用和外部数据表示规范的产品。nfs的使用非常方便,也比较可靠。他具有在不同操作系统之间共享文件的能力。
   nfs服务器可以使用nfs来让其他远程机器共享它的本地资源。nfs客户机是访问nfs服务器的共享资源的机器。其实在实际工作中,一台主机即可以是nfs服务器,也可以是nfs客户机。他们可以互相共享和访问。
   只要你能理解nfs服务器和nfs客户机之间的不同。剩下的就很easy了。

2、 nfs服务器和nfs客户机区别。
2、1   solaris使用分布式文件系统或dfs命令公享资源。公享资源可以手动和自动设置。
    nfs服务器运行两个守侯进程:mountd 和 nfsd。
    用到的文件是:
    /etc/rc3.d/S15nfs.server
    /etc/dfs/dfstab
    /etc/dfs/sharetab
    /etc/rmtab
    nfs服务器使用命令是:share unshare shareall unshareall

   nfs客户机上运行的守侯进程是:statd 和 lockd。
   用到的文件是:
   /etc/vfstab
   /etc/mnttab
   nfs客户机使用命令是:mount umount mountall umountall
 
2、2  nfs服务器设置
   nfs服务器需要运行两个守侯进程mountd和nfsd来工作。当nfs客户机试图访问一个远程的nfs服务器资源。nfs客户机通过mount命令请求与 nfs服务器的mountd守侯进程进行连接。当nfs服务器响应客户机时候,返回给可户机一个信息。客户机把这个信息写到本地的/etc/mnttab文件中。这个信息是服务器中共享文件和目录的信息。它是资源信息的编码:磁盘设备号、节点生成号、节点号等。这个是唯一的。
   一旦可户机得到请求信息,nfs服务器上的mountd进程就会在服务器本地的/etc/rmtab文件中添加一条信息。这是为了保持对当前加载可户机上文件的跟踪。这个文件为每一个被加载资源添加一个条目,格式是:
 remote hostname:  local filename name

注意:mountd每一次重新启动和可户机发一个卸载请求,都会更新服务器的/etc/rmtab文件中的旧条目。

2、3 共享设置命令。
   明白了以上的道理,下面说具体的操作了。nfs服务器使用/usr/sbin/share命令为客户机共享资源。
  命令详解:
  # share  ---显示所有可以安装的资源,不管它是否已经被安装。 
  # share [ -F filesystem ] [ -o options ] [-d description ]  pathname-to-resource
  ---指定共享文件。
  * -F  file system type 指定被公享的文件系统类型。
  * -o  options  指定客户对资源访问的类型。
  * -d  description  功享资源的简单描述。当你share命令不带任何参数运行,他就会被显示。
  * pathname-to-resource  在服务器上共享的资源名字。  
------------------------------------------------------
  *-o  指定了允许客户访问共享资源的用户也权限。具体如下:
  rw  表示用户可读/写,是默认植。
  rw=client1:client2  指定用户可以有读/写权限。可以有很多用户,用冒号分隔。
  ro  表示只读。
  ro=client1:client2  指定用户client1和client2只读。client1可以是用户名,也可以是ip地址,或者一个网段。例如:ro=@202.99.88.0/24
  root=client:client2 指定client1和client2上的root用户对共享资源有超级用户的权限。但是,他的优先级小于nfs服务器的本地权限。
  
  例如:用户peng有个目录/exprot/home/games要共享。
  # share -F nfs -o rw=lnx3000:race , ro=@202.88.99.0/24:sune450 ,root=mmmmn -d "i love MM !" /export/home/peng/games 
  运行结果:共享/exprot/home/peng/games目录,名字是lnx3000和race的两台主机有读/写权限;202.88.99.0这个c类网的机器和sun450这个主机只有读的权限;mmmmn这台主机的root用户可以对共享资源有超级用户访问权限。但是声名一点,要是我给共享目录/exprot/home/peng/games目录只读,mmmmn的root权限也没有用,只能只读。因为服务器本地权限大于任何share的权限。。
  
  取消share资源。
  # unshare [ -F nfs ] path-to-resource
  *  -F nfs 指定系统类型,默认。
  *  path-to-resource 指定共享路径。
  例如:
   # unshare /export/home/peng/games 
   取消这个共享资源了。

2、4 开机自动共享资源。
     以上的命令方法,在机器重新启动的时候,设置消失。如何保留和开机自动启动nfs共享。我们可以用/etc/dfs/dfstab文件来实现自动共享文件。只要主机启动进入运行级别3,nfs资源共享自动启动。
   1、编辑/etc/dfs/dfstab文件,添加:
  share [ -F filesystem ] [ -o options ] [-d description ]  pathname-to-resource
   -----这个和命令行是一样的。。。
  2、# /etc/init.d/nfs.server start 
  这样就ok了。
  
  3、手工快速命令。
  # shareall   --共享所有列在/etc/dfs/dfstab中的共享资源。
  # unshareall  --取消所有列在/etc/dfs/dfstab中的共享资源。

2、5 资源查看。
  # dfshares  
  用以查看服务器的共享资源 。输入格式如下:
  resource  server access  transprot
  * resource  可被远程调用的资源的主机和路径名。
  * server   指定资源的系统名称。 
  *  access  服务器指定的权限,默认是rw,显示为“-”。
  * transport  指定共享资源的端口。

  # dfmounts命令   
  显示服务器上查看共享资源被利用的状况,输出格式如下:  
  RESOURCE     SERVER PATHNAME                  CLIENTS
  *  resource  共享资料名称。
  *  server pathname  共享资料目录。
  *  client  连接的客户端。

  # nfsstat 
  看nfs的全部状态

3、nfs客户机设置。
   安装好nfs服务器后,就可以用客户端使用共享资料了。首先要检测nfs服务器,然后安装。

3、1 检测nfs服务器。
 # showmount [ -ade ] <hostname>
 * -a  显示已经已经使用的资源和来自哪个nfs服务器。
 * -d  显示已经被远程安装的资源。
 * -e  显示可以被安装的可以资源。一般用-e来查看远程主机的可以资源。

3、2 建立共享。
 # mount [ -F nfs ] [ -o options ] path-to-resource path-to-local-mount-point
 * -F nfs  指定共享文件系统,默认的。没必要指定。
 * -o options 指定选项,例如权限。默认rw,可读/写。也可以ro--只读。
 * path-to-rescource  指定nfs服务器的主机名和共享资源路径。
 * path-to-local-mount-point 指定共享资源在本地的mount点。
 
 例如:
 # mkdir /export/home/games
 # mount peng:/export/home/peng/games /exprot/home/games
  共享远程主机peng的/export/home/peng/games目录,可读写,挂接在本地的/exprot/home/games目录上。

3、3取消共享。
# umount [-F nfs] remote-path-to-resource path-to-local-mount-point
* -F nfs  默认的文件系统。
* remote-path-to-resource 远程主机和共享目录路径,主机和共享目录路径用冒号分隔。
* path-to-local-mount-point  本地主机挂点。

例如:
# umount peng:/export/home/peng/games /export/home/games
取消远程主机peng上的/exprot/home/peng/games这个目录的在本地/export/home/games上的共享。

3、4 系统开机自动共享。
  修改/etc/vfstab文件,格式如下:  
device to mount   device to fsck   mount point  FS type   fsck pass   mount at boot   mount options

*  device to mount 指定远程服务器名和共享路径。远程服务器名和共享路径用冒号分开。
*  device to fsck  这个是空的。从来不从客户机进行文件检测。
*  mount point  指定本地的mount点。这个目录必须是已经存在的。
*  FS type  对于nfs资源系统来说,当然是nfs了。
*  fsck pass  这个也是空的。表示不从客户机进行文件系统检测。
*  mount at boot 选择yes or no,yes就是启动时自动安装。
*  mount options 用逗号分隔的mount命令的列表。

例如:
 # vi /etc/vfstab 添加:
 peng:/export/home/peng/games - /export/home/games nfs - yes soft,bg

表示开机自动把远程主机peng的/export/home/peng/games目录自动挂到本机的/export/home/games下。soft选项是目录不能安装,产生一个错误。bg选项,系统启动过程中安装在后台。
关于mount options的参数,请用 man mount 自己看看吧。  
 
 3、5 手工调试命令。
# mountall 
  不带任何参数,安装所有列在/etc/vfstab文件中mount at boot中为yes的资源。
# mountall -r 只影响远程文件
# mountall -l 只影响本地文件

# umountall
  不带任何参数,谢载已经安装的资源。不包括/ 、/proc、/usr、/var。另外,系统忙,也可能不会卸载。
# umountall -r 只影响远程文件
# umountall -l 只影响本地文件

小节:
   到这里我想应该没有什么问题了。
   大家只要注意一下客户端和服务器端的区分。
   nfs服务器端运行守侯进程mound、nfsd
   nfs服务器端使用文件/etc/dfs/dfstab、/etc/dfs/sharetab、/etc/rmtab
   nfs服务器使用命令是:share unshare shareall unshareall
   
   nfs客户端运行守侯进程statd、lockd。
   用到的文件是/etc/vfstab、/etc/mnttab
   nfs客户机使用命令是:mount umount mountall umountall
   知道这些,就ok了。

FAQ :
1、运行mount命令不能得到共享资源,得到信息:“nfs server not responding”。           
answer:确信服务器上nfsd和mountd已经运行,资源已经用共享命令正确共享。  
2、当我企图共享到本地磁盘时,错误为:“mount:/tmp_mount not found”.
answer: 你有没有在本地创建mount点。。。 

由于本人参考可南非蜘蛛和其他人资料,如有雷同,不敢保证是巧合。。。 

 iricyan 回复于:2003-11-06 18:53:58
peng,你太厉害了,崇拜你,才学solaris这么几天就能写好东东了。

 C.Arthur 回复于:2003-11-06 18:59:04
好东东,藏

 peng 回复于:2003-11-06 19:17:04
[quote:9665dc9e85="iricyan"]peng,你太厉害了,崇拜你,才学solaris这么几天就能写好东东了。[/quote:9665dc9e85]

我那能和你比啊。。

你都是sun的。。。。了。  

以后还要靠你指点啊。

 nanaskylead 回复于:2003-11-06 19:49:45
好东西,支持原创!

 南非蜘蛛 回复于:2003-11-06 20:31:34
偶像,说的太深奥了,看不懂呀
可否写的浅显一点的

 qyt743 回复于:2003-11-07 08:01:25
请问NTFS格式的磁盘可否作为NFS文件系统加载,谢谢!!!

 race 回复于:2003-11-07 08:04:40
[quote:ab5f88389f="qyt743"]请问NTFS格式的磁盘可否作为NFS文件系统加载,谢谢!!![/quote:ab5f88389f]
你得有运行在PC上的NFS服务器端软件,出口之后,在UNIX上就可以
mount了

 wind521 回复于:2003-11-07 09:29:25
哈哈,拿下来

好东东

 cookiwu 回复于:2003-11-07 09:34:01
请问一下,nfs2 和nfs3 的区别,现在solaris 9中带的是哪个版本?如何确定?谢谢!

 metor78 回复于:2003-11-07 09:59:17
写的不错,顶,很有用!

 baijianyi 回复于:2003-11-07 14:33:13
[quote:1c53a8199b="peng"]remote-path-to-resource path-to-local-mount-point
* -F nfs  默认的文件系统。
* remote-path-to-resource 远程主机和共享目录路径,主机和共享目录路径用冒号分隔。
* path-to-local-mount-point  本地主机挂..........[/quote:1c53a8199b]
你们有很多sun 机器吗?
什么单位啊

 peng 回复于:2003-11-07 15:14:53
[quote:d879861167="baijianyi"]
你们有很多sun 机器吗?
什么单位啊[/quote:d879861167]

不知道,我负责50多台吧。。
机房还没有去过。
过几天用10k的机器装o817。。。

 C.Arthur 回复于:2003-11-07 15:17:24
[quote:32f9cd53c1="peng"]

不知道,我负责50多台吧。。
机房还没有去过。
过几天用10k的机器装o817。。。[/quote:32f9cd53c1]
K,奢侈

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网