安装

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. [dpdk] service core

    dpdk 17.11 增加了一组新的API,serivce core 如命名,就是用一组core跑service函数. 我自己的测试程序如下: https://github.com/tony-caot ...

  2. Mysql undo redo 总结

  3. Fiddler笔记一移动端连接

    一.下载Fiddler 百度搜索”fiddler 下载“ ,安装最新版本   二.Fiddler手机抓包原理 在本机开启了一个http的代理服务器,然后它会转发所有的http请求和响应. Fiddle ...

  4. 嵌套表用法详解(PLSQL)

    嵌套表 嵌套表是一种类似于索引表的结构,也可以用于保存多个数据,而且也可以保存复合类型的数据 嵌套表指的是一个数据表定义事同时加入了其他内部表的定义,这一概念是在oracle 8中引入的,它们可以使用 ...

  5. TensorFlow环境

    vps cenots7自带的python2.7各种毛病,浪费了不少时间,装了pyhton3一下就搞定了 mac上有些依赖库需要sudo安装 vps上是基于Anaconda搭建的,感谢极客学院的教程ht ...

  6. 【Mock】mock-server 环境搭建

    前言 mock 除了用在单元测试过程中,还有一个用途,当前端开发在开发页面的时候,需要服务端提供 API 接口 此时服务端没开发完成,或者说没搭建测试环境,这个时候前端开发会自己 mock一个 api ...

  7. if __name__==__main__:的应用

    1. if __name__==__main__:代码的作用 python的文件有两种使用的方法:(1)直接作为脚本执行:(2)import到其他的python脚本中被调用(模块重用)执行: 因此if ...

  8. python的运行机制

    不需要生成二进制代码,python解释器把源码->字节码,然后在执行这些字节码. 解释器的具体工作: 1.完成模块(module)的加载和链接 2.将源代码编译成pyCodeObject(字节码 ...

  9. Vim配色方案报错解决方案

    求Linux大神解答,我刚刚从网上下载了个vim的配色方案,配置好后启动vim就报如下错误,怎么处理呢?小白,求不被鄙视~ 处理 /usr/share/vim/vim72/colors/rainbow ...

  10. Spark学习:ShutdownHookManager虚拟机关闭钩子管理器

    Java程序经常也会遇到进程挂掉的情况,一些状态没有正确的保存下来,这时候就需要在JVM关掉的时候执行一些清理现场的代码. JAVA中的ShutdownHook提供了比较好的方案. JDK提供了Jav ...