安装

1 环境描述:
    * 网络环境:
                  NFS server: 192.168.102.47
                  NFS client: 192.168.102.15
                  NFS client: 192.168.102.61
    * 软件版本
                  nfs-common              5-20 
                  nfs-kernel-server       1.0.9-5 
                  portmap                 1.0.9-5
2 安装:
服务器端安装
    在Debian系统下安装NFS是相当简单的,在NFS服务器上执行下面的命令即可
                # aptitude install  nfs-common nfs-kernel-server portmap
在客户端则需要安装:
                # aptitude install  nfs-common portmap
3 服务的启动与停止
启动服务
                # /etc/init.d/nfs-kernel-server start
停止服务
                # /etc/init.d/nfs-kernel-server stop
重启服务
                # /etc/init.d/nfs-kernel-server restart
*************************
服务器端配置
1 创建共享目录
            # mkdir /home/share
            # chown nobody.nogroup /home/share
2 创建或修改/etc/exports 配置文件
这个文件的内容非常简单,每一行由抛出路径,客户名列表以及每个客户名后紧跟的访问选项构成:
            [共享的目录] [主机名或IP(参数,参数)] 
其中参数是可选的,当不指定参数时,nfs将使用默认选项。默认的共享选项是 sync,ro,root_squash,no_delay。
当主机名或IP地址为空时,则代表共享给任意客户机提供服务。
当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:
            [共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]
下面是一些NFS共享的常用参数:
            ro                      只读访问 
            rw                      读写访问 
            sync                    所有数据在请求时写入共享 
            async                   NFS在写入数据前可以相应请求 
            secure                  NFS通过1024以下的安全TCP/IP端口发送 
            insecure                NFS通过1024以上的端口发送 
            wdelay                  如果多个用户要写入NFS目录,则归组写入(默认) 
            no_wdelay               如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。 
            hide                    在NFS共享目录中不共享其子目录 
            no_hide                 共享NFS目录的子目录 
            subtree_check           如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认) 
            no_subtree_check        和上面相对,不检查父目录权限 
            all_squash              共享文件的UID和GID映射匿名用户anonymous,适合公用目录。 
            no_all_squash           保留共享文件的UID和GID(默认) 
            root_squash             root用户的所有请求映射成如anonymous用户一样的权限(默认) 
            no_root_squas           root用户具有根目录的完全管理访问权限 
            anonuid=xxx             指定NFS服务器/etc/passwd文件中匿名用户的UID 
            anongid=xxx             指定NFS服务器/etc/passwd文件中匿名用户的GID 
配置文件/etc/exports内容如下:
            $ cat /etc/exports
            /home/share 192.168.102.15(rw,sync) *(ro)
配置说明: 对192.168.102.15赋予读写权限,其他机器仅有只读权限。
3 重启NFS服务
            # /etc/init.d/nfs-kernel-server restart
4 在客户机上查看NFS的资源共享情况
            # showmount -e 192.168.102.47
            Export list for 192.168.102.47:
            /home/share (everyone)
5 使用mount命令即可挂栽共享资源
在客户机 192.168.102.15 上加载共享资源
            # mount 192.168.102.47:/home/share /mnt
            # cd /mnt
            # echo '12345'> 123
即可发现对服务器共享目录可写
            # umount /mnt
在客户机 192.168.102.61 上加载共享资源
            # mount 192.168.102.47:/home/share /mnt
            # cd /mnt
            # ls
            123
            # touch 321
            touch: cannot touch `321': Permission denied
            # echo '123455' >123
            -bash: 123: Permission denied
即可发现对服务器共享目录只有读取权限,
这与我们在服务器端的权限设置是相符的。
是不是我们每次修改了配置文件都需要重启nfs服务呢? 这个时候我们就可以用exportfs命令重新扫描/etc/exports文件,来使改动立刻生效。
比如:
            # exportfs -au 卸载所有共享目录
            # exportfs -rv 重新共享所有目录并输出详细信息
exportfs 命令有软件包 nfs-kernel-server 提供,详细的 exportfs 命令说明请查看:
            man exportfs
中文的手册说明可以查看这里:
exportfs联机手册
当完成资源共享, 我们如何知道发布了哪些权限呢?这时我们可以查看 /var/lib/nfs/etab 文件,它是有 exportfs 命令根据 /etc/exports 生成的。
            # cat /var/lib/nfs/etab
            /home/share     192.168.102.15(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash, subtree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534)
            /home/share     *(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,subtree_check, secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534)
现在我们来查看服务器上有关NFS服务器启动了哪些端口:
            tonybox:/home/share# lsof -i|grep rpc
            portmap   1931 daemon    3u  IPv4   4289       UDP *:sunrpc
            portmap   1931 daemon    4u  IPv4   4290       TCP *:sunrpc (LISTEN)
            rpc.statd 3206  statd    3u  IPv4   7081       UDP *:1029
            rpc.statd 3206  statd    6u  IPv4   7072       UDP *:838
            rpc.statd 3206  statd    7u  IPv4   7085       TCP *:1031 (LISTEN)
            rpc.mount 3483   root    6u  IPv4   7934       UDP *:691
            rpc.mount 3483   root    7u  IPv4   7937       TCP *:694 (LISTEN)
***************************
5. 安全问题:
5.1 Iptables 防火墙
如果我们的NFS服务器在防火墙后边,则需要在防火强策略中加入如下策略:
            -A INPUT -p tcp -m state --state NEW -m multiport --dport 111,2049,4001,32764:32767 -j ACCEPT
            -A INPUT -p udp -m state --state NEW -m multiport --dport 111,2049,4001,32764:32767 -j ACCEPT
5.2 使用 /etc/hosts.allow和/etc/hosts.deny 控制客户端的访问
/etc/hosts.allow和/etc/hosts.deny这两个文件是tcpd服务器的配置文件,tcpd服务器可以控制外部IP对本机服务的访问。这两个配置文件的格式如下:
            #服务进程名:主机列表:当规则匹配时可选的命令操作
            server_name:hosts-list[:command]
/etc/hosts.allow控制可以访问本机的IP地址,/etc/hosts.deny控制禁止访问本机的IP。如果两个文件的配置有冲突,以 /etc/hosts.deny为准。下面是一个/etc/hosts.allow的示例:
            ALL:127.0.0.1         #允许本机访问本机所有服务进程
            smbd:192.168.0.0/255.255.255.0     #允许192.168.0.网段的IP访问smbd服务
ALL关键字匹配所有情况,EXCEPT匹配除了某些项之外的情况,PARANOID匹配你想控制的IP地址和它的域名不匹配时(域名伪装)的情况。
比如,在服务器的 /etc/hosts.deny 文件作如下设置:
            # cat /etc/hosts.deny
            portmap:192.168.102.15
然后在客户机192.168.102.15上加载共享目录
            #  mount 192.168.102.47:/home/share /mnt
            mount to NFS server '192.168.102.47' failed.
我们发现现在已经无法加载共享目录的。
**********************
6. 资源使用
除了使用mount的命令手动挂栽共享资源,还可以使用其他方法实现共享资源的自动挂栽:
6.1 启动时自动挂栽
修改客户机的 /etc/fstab文件,加入类似如下行:
            192.168.102.47:/home/share      /mnt    nfs     rsize=8192,wsize=8192,timeo=14,intr
重启客户机,即可实现系统启动时自动挂栽共享资源
6.2 使用 autofs 实现资源挂栽
autofs 使用 automount 守护进程来管理你的挂载点,它只在文件系统被访问时才动态地挂载它们。 autofs 查询主配置文件 /etc/auto.master 来决定要定义哪些挂载点。然后,它使用适用于各个挂载点的参数来启动 automount 进程。主配置中的每一行都定义一个挂载点,然后用单独的配置文件定义在该挂载点下要挂载的文件系统。
安装 autofs
            # aptitude  install autofs
修改/etc/auto.master文件, 加入如下内容:
            /mnt      /etc/auto.nfs
创建 /etc/auto.nfs 文件内容如下:

nfs -rw,soft,intr,rsize=8192,wsize=8192 192.168.102.47:/home/share

这样,每当您进入 /mnt/nfs 目录时,系统都会尝试将服务器的共享资源挂栽到该目录上。应当注意nfs目录是由 automount 动态地创建的,它不应该在客户机器上实际存在。

tonybox2:/# cd /mnt
            tonybox2:/mnt# ls
            tonybox2:/mnt# cd nfs
            tonybox2:/mnt/nfs# ls
            123
            tonybox2:/mnt/nfs# ls -l
            total 4
            -rw-r--r-- 1 nobody nogroup 6 2006-08-22 07:50 123
            tonybox2:/mnt/nfs#

如果修改了/etc/auto.master主配置文件,则需要运行

#/etc/init.d/autofs reload

对其进行重新加载
***************************
7. 参考文献

DebianWiki-NFS

Linux NFS Overview, FAQ and HOWTO Documents

网络文件系统(NFS)

简易 NFS 服务器配置

Setting Up NFS HowTo

Linux NFS-HOWTO
Next Previous Contents

NFS配置与安装的更多相关文章

  1. 根文件系统制作、NFS配置与安装及利用NFS挂载根文件系统

    最近打算从头开始制作根文件系统,下面是开发过程. 一.根文件系统的制作 0.FHS(Filesystem Hierarchy Standard)标准介绍 该标准规定了根目录下各个子目录的名称及其存放的 ...

  2. LINUX下NFS系统的安装配置

    准备:NFS系统服务器IP 192.168.135.1 ,NFS共享目录/mnt/NFS 一.安装NFS 查看nfs是否安装 #rpm -qa | grep nfs 若没有则安装nfs包 #yum i ...

  3. ubuntu下nfs服务器的安装与配置

    nfs服务器的安装和配置 1.安装nfs 服务器,前提是你的系统能连上网. 2.设置/etc/exports配置文件 (1) 进入/etc/exports配置文件 (2) 在最后一行加入红色那行,/h ...

  4. NFS服务器的安装与配置

    由于实验室的项目需要实现在CephFS之上建立NFS之上,所以记录一下NFS服务器的安装与配置流程. 1.NFS服务的简介: NFS 是 Network File System 的缩写,是Sun公司于 ...

  5. Linux NFS服务器的安装与配置方法(图文详解)

    这篇文章主要介绍了Linux NFS服务器的安装与配置方法(图文详解),需要的朋友可以参考下(http://xb.xcjl0834.com) 一.NFS服务简介 NFS 是Network File S ...

  6. NFS相关、NFS服务端安装配置、exportfs命令、nfs客户端的问题

    1.NFS (network file system,基于RPC协议) 2.NFS服务端安装配置安装服务端:yum install nfs-utils rpcbind -y安装客户端:yum inst ...

  7. NFS介绍 NFS服务端安装配置 NFS配置选项

    NFS 介绍 • NFS是Network File System的缩写 • NFS最早由Sun公司开发,分2,,4三个版本,2和3由Sun起草开发,.0开始Netapp公司参与并主导开发,最新为4.1 ...

  8. Linux NFS服务器的安装与配置详解

    一.NFS服务简介 NFS是Network File System(网络文件系统).主要功能是通过网络让不同的服务器之间可以共享文件或者目录.NFS客户端一般是应用服务器(比如web,负载均衡等),可 ...

  9. NFS介绍、服务端安装配置、NFS配置选项

    6月21日任务 14.1 NFS介绍14.2 NFS服务端安装配置14.3 NFS配置选项 14.1 NFS介绍 14.2 NFS服务端安装配置 1.首先需要2台机器,一台是服务端,一台是客户端,分别 ...

随机推荐

  1. Android SDK 环境搭建

    Android SDK(Software Development Kit,软件开发工具包)提供了 Android API 库和开发工具构建,测试和调试应用程序.简单来讲,Android SDK 可以看 ...

  2. Django 正向解析与反向解析

    正向解析就是按照顺序查找访问(urls.py---view--templates) 反向解析就是根据命名空间命名来调到指定的页面 用反向解析的原因: 随着功能的增加会出现更多的视图,可能之前配置的正则 ...

  3. django--验证码功能实现

    首先建立验证码的视图函数1需要安装pillow库 #导入绘图库 from PIL import ImageDraw #导入绘图字体库 from PIL import ImageFont #导入图片库 ...

  4. oracle创建表空间 授权

    --创建表空间 临时表空间 create temporary tablespace xiaodai_temp tempfile '/main/app/oracle/oradata/devdb/xiao ...

  5. 并查集——易爆物D305

    部分内容摘自博客http://blog.csdn.net/u012881011/article/details/46883863,感谢 易爆物D305             运行时间限制:1000m ...

  6. 八、自定义starter

    starter: 1.这个场景需要使用到的依赖是什么? 2.如何编写自动配置 @Configuration //指定这个类是一个配置类 @ConditionalOnXXX //在指定条件成立的情况下自 ...

  7. 用CSS来画空心三角形的方法

    画这里三角形的方法: 用CSS来实现:整个弹框的ID是#favoriteOptionMenus,对于#favoriteOptionMenus这个元素设置:before和:after的样式,让:befo ...

  8. dedecms自定义表单提交成功后提示信息修改和跳转链接修改

    我们在用dedecms自定义表单提交成功后提示信息一般是"Dedecms 提示信息",这个要怎么改成自己想要的文字呢?还有就是提示页停留时间,目前估计就2秒,太快了,要如何设置长点 ...

  9. dxRangeTrackBar使用教程

    Properties: Max:最大值 Min:最小值 Frequency:设置刻度值多大值显示PageSize:选择时跳动的区域大小 SelectionColor:选择区域颜色 ShowSelect ...

  10. Linksys E 刷Tomato shibby

    前言 一直以来都用Linksys的无线路由器~因为它的稳定~多年来一直用Linksys自身的固件~因为之前没用它做什么特别的应用~所以一直用了下来~它的原厂固件的稳定性也从没让我操过心~近来要为用户提 ...