×

非常全面的LINUX NFS文档

消耗积分:1 | 格式:rar | 大小:0.3 MB | 2017-11-07

分享资料个

 这是我写的第一份笔记式文档,是对自己最近在研究NFS方面的一个小小的总结,这个稳定也参考和引用了一部分别人的文档,这里表示感谢,这篇是根据LINUX来写的,有空的话我还会写一篇FOR FREEBSD和SOLARIS的。
  超全的NFS文档(FOR LINUX)
  上海 天俊
  欢迎大家和我交流网络方面的技术问题
  msn:bcst@citiz.net qq:11300242
  如果要转载的话请保留以上信息,谢谢配合
  一、NFS简介
  NFS-Network FileSystem的缩写,NFS是由Sun开发并发展起来的一项用于在不同机器,不同操作系统之间通过网络互相分享各自的文件。NFS server也可以看作是一个FILE SERVER,它可以让你的PC通过网络将远端得NFS SERVER共享出来的档案MOUNT到自己的系统中,在CLIENT看来使用NFS的远端文件就象是在使用本地文件一样。
  NFS协议从诞生到现在为止,已经有多个版本,如NFS V2(rfc1094),NFS V3(rfc1813)(最新的版本是V4(rfc3010)。
  二、各NFS协议版本的主要区别
  V3相对V2的主要区别:
  1、文件尺寸
  V2最大只支持32BIT的文件大小(4G),而NFS V3新增加了支持64BIT文件大小的技术。
  2、文件传输尺寸
  V3没有限定传输尺寸,V2最多只能设定为8k,可以使用-rsize and -wsize 来进行设定。
  3、完整的信息返回
  V3增加和完善了许多错误和成功信息的返回,对于服务器的设置和管理能带来很大好处。
  4、增加了对TCP传输协议的支持
  V2只提供了对UDP协议的支持,在一些高要求的网络环境中有很大限制,V3增加了对TCP协议的支持
  *5、异步写入特性
  6、改进了SERVER的mount性能
  7、有更好的I/O WRITES 性能。
  9、更强网络运行效能,使得网络运作更为有效。
  10、更强的灾难恢复功能。
  异步写入特性(v3新增加)介绍:
  NFS V3 能否使用异步写入,这是可选择的一种特性。NFS V3客户端发发送一个异步写入请求到服务器,在给客户端答复之前服务器并不是必须要将数据写入到存储器中(稳定的)。服务器能确定何时去写入数据或者将多个写入请求聚合到一起并加以处理,然后写入。客户端能保持一个数据的copy以防万一服务器不能完整的将数据写入。当客户端希望释放这个copy的时候,它会向服务器通过这个操作过程,以确保每个操作步骤的完整。异步写入能够使服务器去确定最好的同步数据的策略。使数据能尽可能的同步的提交何到达。与V2比较来看,这样的机制能更好的实现数据缓冲和更多的平行(平衡)。而NFS V2的SERVER在将数据写入存储器之前不能再相应任何的写入请求。
  V4相对V3的改进:
  1:改进了INTERNET上的存取和执行效能
  2:在协议中增强了安全方面的特性
  3:增强的跨平台特性
  三、CLIENT和SERVER的具体操作和设置
  在讲NFS SERVER的运作之前先来看一些与NFS SERVER有关的东西:
  RPC(Remote Procedure Call)
  NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议勇士用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER.所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。
  NFS需要启动的DAEMONS
  pc.nfsd:主要复杂登陆权限检测等。
  rpc.mountd:负责NFS的档案系统,当CLIENT端通过rpc.nfsd登陆SERVER后,对clinet存取server的文件进行一系列的管理
  NFS SERVER在REDHAT LINUX平台下一共需要两个套件:nfs-utils和PORTMAP
  nfs-utils:提供rpc.nfsd 及 rpc.mountd这两个NFS DAEMONS的套件
  portmap:NFS其实可以被看作是一个RPC SERVER PROGRAM,而要启动一个RPC SERVER PROGRAM,都要做好PORT的对应工作,而且这样的任务就是由PORTMAP来完成的。通俗的说PortMap就是用来做PORT的mapping的。
  一:服务器端的设定(以LINUX为例)
  服务器端的设定都是在/etc/exports这个文件中进行设定的,设定格式如下:
  欲分享出去的目录 主机名称1或者IP1(参数1,参数2) 主机名称2或者IP2(参数3,参数4)
  上面这个格式表示,同一个目录分享给两个不同的主机,但提供给这两台主机的权限和参数是不同的,所以分别设定两个主机得到的权限。
  可以设定的参数主要有以下这些:
  rw:可读写的权限;
  ro:只读的权限;
  no_root_squash:登入到NFS主机的用户如果是ROOT用户,他就拥有ROOT的权限,此参数很不安全,建议不要使用。
  root_squash:在登入 NFS 主機使用分享之目錄的使用者如果是 root 時,那麼這個使用者的權限將被壓縮成為匿名使用者,通常他的 UID 與 GID 都會變成 nobody 那個身份;
  all_squash:不管登陆NFS主机的用户是什么都会被重新设定为nobody。
  anonuid:将登入NFS主机的用户都设定成指定的user id,此ID必须存在于/etc/passwd中。
  anongid:同 anonuid ,但是變成 group ID 就是了!
  sync:资料同步写入存储器中。
  async:资料会先暂时存放在内存中,不会直接写入硬盘。
  insecure 允许从这台机器过来的非授权访问。
  例如可以编辑/etc/exports为:
  /tmp     *(rw,no_root_squash)
  /home/public 192.168.0.*(rw)   *(ro)
  /home/test  192.168.0.100(rw)
  /home/linux  *.the9.com(rw,all_squash,anonuid=40,anongid=40)
  设定好后可以使用以下命令启动NFS:
  /etc/rc.d/init.d/portmap start (在REDHAT中PORTMAP是默认启动的)
  /etc/rc.d/init.d/nfs start
  exportfs命令:
  如果我们在启动了NFS之后又修改了/etc/exports,是不是还要重新启动nfs呢?这个时候我们就可以用exportfs命令来使改动立刻生效,该命令格式如下:
  exportfs [-aruv]
  -a :全部mount或者unmount /etc/exports中的内容
  -r :重新mount /etc/exports中分享出来的目录
  -u :umount 目录
  -v :在 export 的時候,将详细的信息输出到屏幕上。
  具体例子:
  [root @test root]# exportfs -rv 《==全部重新 export 一次!
  exporting 192.168.0.100:/home/test
  exporting 192.168.0.*:/home/public
  exporting *.the9.com:/home/linux
  exporting *:/home/public
  exporting *:/tmp
  reexporting 192.168.0.100:/home/test to kernel
  exportfs -au 《==全部都卸载了。
  客户段的操作:
  1、showmout命令对于NFS的操作和查错有很大的帮助,所以我们先来看一下showmount的用法
  showmout
  -a :这个参数是一般在NFS SERVER上使用,是用来显示已经mount上本机nfs目录的cline机器。
  -e :显示指定的NFS SERVER上export出来的目录。
  例如:
  showmount -e 192.168.0.30
  Export list for localhost:
  /tmp *
  /home/linux *.linux.org
  /home/public (everyone)
  /home/test 192.168.0.100
  2、mount nfs目录的方法:
  mount -t nfs hostname(orIP):/directory /mount/point
  具体例子:
  Linux: mount -t nfs 192.168.0.1:/tmp /mnt/nfs
  Solaris:mount -F nfs 192.168.0.1:/tmp /mnt/nfs
  BSD: mount 192.168.0.1:/tmp /mnt/nfs
  3、mount nfs的其它可选参数:
  HARD mount和SOFT MOUNT:
  HARD: NFS CLIENT会不断的尝试与SERVER的连接(在后台,不会给出任何提示信息,在LINUX下有的版本仍然会给出一些提示),直到MOUNT上。
  SOFT:会在前台尝试与SERVER的连接,是默认的连接方式。当收到错误信息后终止mount尝试,并给出相关信息。
  例如:mount -F nfs -o hard 192.168.0.10:/nfs /nfs
  对于到底是使用hard还是soft的问题,这主要取决于你访问什么信息有关。例如你是想通过NFS来运行X PROGRAM的话,你绝对不会希望由于一些意外的情况(如网络速度一下子变的很慢,插拔了一下网卡插头等)而使系统输出大量的错误信息,如果此时你用的是HARD方式的话,系统就会等待,直到能够重新与NFS SERVER建立连接传输信息。另外如果是非关键数据的话也可以使用SOFT方式,如FTP数据等,这样在远程机器暂时连接不上或关闭时就不会挂起你的会话过程。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !