免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 691 | 回复: 0
打印 上一主题 下一主题

学习nfs服务器 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-04 09:48 |只看该作者 |倒序浏览
NFS 就是 Network FileSystem 的缩写,最早之前是由 Sun 这家公司所发展出来的。他最大的功能就是可以透过网络,让不同的机器、不同的操作系统、可以彼此分享个别的档案 ( share file ),这个 NFS Server 可以让PC 将网络远程的 NFS 主机分享的目录,挂载到本地端的机器当中,所以,在本地端的机器看起来,那个远程主机的目录就好像是自己的一个磁盘一样 ( partition )。

要启动 NFS 必须要有两个套件才行,分别是:
nfs-utils
nfs-utils-clients  portmap
* portmap:
portmap服务负责的是端口映射!也就是说,在启动任何一个 RPC server 之前,我们都需要启动 portmap 才行呢!那么这个 portmap 到底在干嘛呢?就如同这个服务的名称,就是作 port 的 mapping(映射) 啊!
      
* nfs-utils:
就是提供 rpc.nfsd 及 rpc.mountd 这两个 NFS daemons 与其它相关 documents 与说明文件、执行档等的套件!这个就是 NFS 的主要套件。
NFS套件的重要文件:
   * /etc/exports:这个档案就是 NFS 的主要设定档了!不过,系统并没有默认值,所以这个档案『不一定会存在』,所以您必须要使用 vi 主动的建立起这个档案喔!我们等一下要谈的设定也仅只是这个档案而已吶!
    * /usr/sbin/exportfs:这个是维护 NFS 分享资源的指令,我们可以利用这个指令重新分享 /etc/exports 变更的目录资源、将 NFS Server 分享的目录卸载或重新分享等等,这个指令是 NFS 系统里面相当重要的一个喔!至于指令的用法我们在底下会再介绍。
    * /usr/sbin/showmount:这是另一个重要的 NFS 指令。exportfs 是用在 NFS Server 端,而 showmount 则主要用在 Client 端。这个 showmount 可以用来察看 NFS 分享出来的目录资源。
    * /var/lib/nfs/xtab:这个档案则是主要的 NFS 的纪录文件咯!当我们的 NFS 分享出目录资源后,到底有哪些 Client 端曾经连接上我们的 NFS 主机呢?呵呵!就是看这个档案的内容。
NFS 的整个流程也差不多是这样:
 
   
首先,需要确认一下 Linux 主机是否可以支持 NFS
这项服务,然后再设定一下使用者的来源IP或主机名称以及分享出去的目录的权限,之后呢,启动 NFS 即可将刚刚设定的目录给他分享出去了!
那么在 Client 端怎么使用这个分享出来的目录?就是先以 showmount 这支程序检查 Linux Server 是否有可以使用的
NFS 目录,如果有的话,就将他 mount 在本机上面,如果可以 mount ,那么就可以使用 NFS 主机提供的资源了!
最重要的就是exports文件啦!在/etc目录下应该有一个exports的文件(如果没有手动建立吧)  
这个是它的一些参数:
############################################################################
#rw:可擦写的权限;
#ro:只读的权限;
#no_root_squash:登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限!这个项目『极不安全』,不建议使用!
#root_squash:在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个系统账号的身份;
#all_squash:不论登入 NFS 的使用者身份为何,他的身份都会被压缩成为匿名使用者,通常也就是 nobody 啦!
#anonuid:前面关于 *_squash 提到的匿名使用者的 UID 设定值,通常为 nobody,但是您可以自行设定这个 UID 的值!当然,这个 UID 必需要存在于您的 /etc/passwd 当中!
#anongid:同 anonuid ,但是变成 group ID 就是了!
#sync:数据同步写入到内存与硬盘当中;
#async:数据会先暂存于内存当中,而非直接写入硬盘!
############################################################################
还是用例子来说明吧:
   1. 假设我的 Linux 主机为 192.168.0.100 这一部;
   2. 预计将 /tmp 以可擦写,并且不限制使用者身份的方式分享给所有 192.168.0.0/24 这个网域中的所有 Linux 工作站;
   3. 预计开放 /home/nfs 这个目录,使用的属性为只读,可提供除了网域内的工作站外,向外亦提供数据内容;
   4. 预计开放 /home/upload 做为 192.168.0.0/24 这个网域的数据上传目录,其中,这个 /home/upload 的使用者及所属群组为 nfs-upload 这个名字,他的 UID 与 GID 均为 210;
   5. 预计将 /home/zjz 这个目录仅分享给 192.168.0.50 这部 Linux 主机,以提供该主机上面 zjz 这个使用者来使用,也就是说, zjz: 在 192.168.0.50 及 192.168.0.100 均有账号,且账号均为 zjz ,所以预计开放 /home/zjz 给 zjz 使用他的家目录啦!
    * 首先,就是要建立 /etc/exports 这个档案的内容啰,您可以这样写吧!
      [root @test root]# vi /etc/exports
      /tmp     192.168.0.*(rw,no_root_squash)
      /home/nfs  192.168.0.*(ro)  *(ro,all_squash)
      /home/upload 192.168.0.*(rw,all_squash,anonuid=210,anongid=210)
      /home/andy  192.168.0.50(rw)

    * 再来,就是要建立每个对应的目录的实际 Linux 权限了!我们一个一个来看:
      1. /tmp
      [root @test root]# ll /
      drwxrwxrwt    6 root     root         4096 Nov 16 09:07 tmp
      2. /home/nfs
      [root @test root]# mkdir -p /home/nfs            <==建立所需要的目录
      [root @test root]# chmod 755 -R /home/nfs      <==修改较为严格的档案权限
      将目录与档案设定成只读!不能写入的状态,会更保险一点!
      3. /home/upload
      [root @test root]# groupadd -g 210 nfs-upload  <==先建立所需要的 210 这个群组
      [root @test root]# useradd -g 210 -u 210 -M nfs-upload <==建立需要的使用者名称
      [root @test root]# mkdir -p /home/upload       <==建立起目录了!
      [root @test root]# chown -R nfs-upload:nfs-upload /home/upload <==修改拥有者!
      如此,则使用者与目录的权限都设定妥当啰!
      4. /home/zjz
      [root @test root]# ll /home
      drwx------    3 zjz     zjz         4096 Oct 28 13:37 zjz
      这样子一来,权限的问题大概就可以解决啰!
    *   启动 portmap 与 nfs 服务:
      [root @test root]# /etc/rc.d/init.d/portmap start
      [root @test root]# /etc/rc.d/init.d/nfs start
    *   在 192.168.0.50 这部机器上面演练一下:
      1. 确认可用目录
      [andy @linux50 andy]$ showmount -e 192.168.0.100
      Export list for 192.168.0.100:
      /tmp         192.168.0.*
      /home/nfs    (everyone)
      /home/upload 192.168.0.*
      /home/zjz   192.168.0.50
      2. 建立挂载点:
      [andy @linux50 andy]$ mkdir -p /home/zzz/tmp
      [andy @linux50 andy]$ mkdir -p /home/zzz/nfs
      [andy @linux50 andy]$ mkdir -p /home/zzz/upload
      [andy @linux50 andy]$ mkdir -p /home/zzz/zjz
      3. 实际挂载:
      [andy @linux50 andy]$ su   <==通常 Linux 只允许 root 来挂载!
      [root @linux50 andy]# mount -t nfs 192.168.0.100:/tmp /home/zzz/tmp
      [root @linux50 andy]# mount -t nfs 192.168.0.100:/home/nfs /home/zzz/nfs
      [root @linux50 andy]# mount -t nfs 192.168.0.100:/home/upload /home/zzz/upload
      [root @linux50 andy]# mount -t nfs 192.168.0.100:/home/andy /home/zzz/zjz

整个步骤大致上就是这样,好好练习吧!


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/36711/showart_667887.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP