Linux中详细搭建NFS服务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中详细搭建NFS服务相关的知识,希望对你有一定的参考价值。

1.nfs简介

            NFS (Network File System)即网络文件系统。由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。
            nfs适用于Linux与Unix之间实现文件共享,不能实现Linux与Windows间的文件共享功能
            nfs是运行在应用层的协议,其监听与2049/tcp和2049/udp套接字上
            nfs服务只能基于IP进行认证,这也是它的缺点之一。

2.所需要的软件及软件结构
要设定好 NFS 服务器我们必须要有两个软件才行,分别是:

   RPC 主程序:rpcbind

      就如同刚刚提的到,我们的 NFS 其实可以被视为一个 RPC 服务,而要启动任何一个 RPC 服务之前,我们都需要做好 port 的对应 (mapping) 的工作才行,这个工作其实就是『 rpcbind 』这个服务所负责的!也就是说, 在启动任何一个 RPC 服务之前,我们都需要启动 rpcbind 才行! (在 CentOS 5.x 以前这个软件称为 portmap,在 CentOS 6.x 之后才称为 rpcbind 的!)

    NFS 主程序:nfs-utils

      就是提供 rpc.nfsd 及 rpc.mountd 这两个 NFS daemons 与其他相关 documents 与说明文件、执行文件等的软件!

3.nfs配置

            主要配置文件:/etc/exports
            这个档案就是 NFS 的主要配置文件了!不过,系统并没有默认值,所以这个档案『 不一定会存在』,你可能必须要使用 vim 主动的建立起这个档案喔!我们等一下要谈的设定也仅只是这个档案而已吶! 
            NFS 文件系统维护指令:/usr/sbin/exportfs
      这个是维护 NFS 分享资源的指令,我们可以利用这个指令重新分享 /etc/exports 变更的目录资源、将 NFS Server 分享的目录卸除或重新分享等等,这个指令是 NFS 系统里面相当重要的一个喔!至于指令的用法我们在底下会介绍。

            分享资源的登录档:/var/lib/nfs/*tab
       在 NFS 服务器的登录文件都放置到 /var/lib/nfs/ 目录里面,    在该目录下有两个比较重要的登录档, 一个是 etab ,主要记录了 NFS 所分享出来的目录的完整权限设定值;另一个 xtab 则记录曾经链接到此 NFS 服务器的相关客户端数据。

            客户端查询服务器分享资源的指令:/usr/sbin/showmount
    这是另一个重要的 NFS 指令。exportfs 是用在 NFS Server 端,而 showmount 则主要用在 Client 端。这个 showmount 可以用来察看 NFS 分享出来的目录资源

4.nfs服务器端运行着四个进程:

    nfsd //nfs 的守护进程,监听在2049/tcp和2049/udp端口上
 //不负责文件存储(由NFS服务器本地内核复制调度存储),用于理解客户端发起放rpc请求,并将其转交给本地内核,而后存储在指定的文件系统上
    mountd //用于验证客户端是否在允许访问此NFS文件系统的客户端列表中,在则允许访问(发放一个令牌,持令牌去找nfsd),否则拒绝访问
    idmapd //实现用户账号的集中映射,把所有的账号都映射为NFSNOBOY,但是在访问时却能以本地用户的身份去访问
    portmapper //NFS服务器的rpc服务,其监听于111/Tcp和111/UDP套接字上,用于管理远程过程调用(RPC)

5.nfs的体系组成

        nfs体系至少有两个主要部分:
             一台nfs服务器
             若干个客户机

6.实例演示:

服务器端 客户端
192.168.209.12 192.168.209.13
服务器端做以下操作:
//关闭firewalld防火墙
[[email protected] ~]# systemctl disable firewalld
[[email protected] ~]# systemctl stop firewalld

//关闭selinux
[[email protected] ~]# vim /etc/selinux/config
disabled
[[email protected] ~]# setenforce 0

    //安装nfs工具
[[email protected] ~]# yum -y install nfs-utils rpcbind

    //启动nfs服务
[[email protected] ~]# systemctl start rpcbind

[[email protected] ~]# systemctl start nfs-server

    //nfs配置文件
[[email protected] ~]# vim /etc/exports
/lanzhiyong 192.168.209.13(rw,async)

    //创建分享的目录
[[email protected] ~]# mkdir -p /lanzhiyong
[[email protected] ~]# grep "65534" /etc/passwd

    //给分享目录权限
[[email protected] ~]# chown -R nfsnobody.nfsnobody /lanzhiyong

    //重启nfs服务
[[email protected] ~]# systemctl restart nfs-server

    //查看分享的目录
[[email protected] ~]# cat /var/lib/nfs/etab 

    //查看配没配置好
[[email protected] ~]# showmount -e 192.168.209.12 

客户端做以下操作:
//关闭firewalld防火墙
[[email protected] ~]# systemctl disable firewalld
[[email protected] ~]# systemctl stop firewalld

//关闭selinux
[[email protected] ~]# vim /etc/selinux/config
disabled
[[email protected] ~]# setenforce 0
[[email protected] ~]# yum -y install nfs-utils rpcbind
[[email protected] ~]# systemctl start rpcbind

//查看NFS服务器端共享的文件系统
[[email protected] ~]# showmount -e 192.168.209.12

//挂载NFS文件系统
[[email protected] ~]# mkdir /opt/lan
[[email protected] ~]# mount -t nfs 192.168.209.12:/lanzhiyong /opt/lan
[[email protected] ~]# df -h
[[email protected] ~]# cd /opt/lan/
[[email protected] lan]# touch 123

服务搭建起来后的验证:
    在服务器端 进行查看是否有123 这个文件
    [[email protected] ~]# cd /lanzhiyong

以上是关于Linux中详细搭建NFS服务的主要内容,如果未能解决你的问题,请参考以下文章

搭建nfs文件服务器——超详细

Linux 环境下搭建NFS服务

Linux系列—搭建:httpNFSDHCP服务的详细步骤

linux redhat6.5中 搭建NFS服务

linux集群搭建之nfs服务的搭建

Linux6.5中搭建NFS服务,远程存储数据。