1.简介


1.1NFS

  网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。NFS服务只能应用在Linux系统上,FTP、samba服务均支持linux和windows。


1.2工作原理

  部署好NFS服务,在NFS服务端创建一个data共享目录;NFS客户端创建一个本地video目录,作为挂载点,通过mount命令实现网络挂载,将NFS服务器上的data目录挂载到本地video目录挂载点上;NFS客户端上在video目录中,增加、删除、修改数据的操作,都等价于在NFS服务端data目录中的操作。


2.环境准备

[root@nfs01 ~]# cat /etc/redhat-release 

CentOS Linux release 7.2.1511 (Core) 

[root@nfs01 ~]# uname -r

3.10.0-327.el7.x86_64

[root@nfs01 ~]# getenforce 

Disabled

[root@nfs01 ~]# systemctl status firewalld.service 

● firewalld.service - firewalld - dynamic firewall daemon

   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)

   Active: inactive (dead)

[root@nfs01 ~]# ifconfig

eth0: flags=4163  mtu 1500

        inet 10.0.0.31  netmask 255.255.255.0  broadcast 10.0.0.255

        inet6 fe80::20c:29ff:fe7a:66a4  prefixlen 64  scopeid 0x20

        ether 00:0c:29:7a:66:a4  txqueuelen 1000  (Ethernet)

        RX packets 1204  bytes 327779 (320.0 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 111  bytes 14968 (14.6 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


eth1: flags=4163  mtu 1500

        inet 172.16.1.31  netmask 255.255.255.0  broadcast 172.16.1.255

        inet6 fe80::20c:29ff:fe7a:66ae  prefixlen 64  scopeid 0x20

        ether 00:0c:29:7a:66:ae  txqueuelen 1000  (Ethernet)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 10  bytes 744 (744.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


lo: flags=73  mtu 65536

        inet 127.0.0.1  netmask 255.0.0.0

        inet6 ::1  prefixlen 128  scopeid 0x10

        loop  txqueuelen 0  (Local Loopback)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


3.部署NFS服务端


3.1检查是否安装NFS

[root@nfs01 ~]# rpm -qa nfs


3.2安装NFS

[root@nfs01 ~]# yum install -y nfs-utils rpcbind


3.3创建共享目录的管理用户

[root@nfs01 ~]# useradd -s /sbin/nologin -M www

[root@nfs01 ~]# id www

uid=1000(www) gid=1000(www) groups=1000(www)


3.4编写NFS配置文件

[root@nfs01 ~]# cat /etc/exports

/data 172.16.1.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

/data     共享目录

172.16.1.0/24    允许挂载的网段

rw    读写权限

sync    数据同步写入NFS服务端的硬盘

all_squash    所有用户都做映射

anonuid=1000,anongid=1000    NFS客户端的www用户与NFS服务端的www用户完全相同(企业中,不可能只用1台web服务器,所以需要多台web服务器同时挂载到同一个目录,防止其中的某台不能读取或写入数据)


3.5创建共享目录

[root@nfs01 ~]# mkdir /data

[root@nfs01 ~]# chown -R www.www /data/


3.6启动相关服务

[root@nfs01 ~]# systemctl start rpcbind.service       必须先启动rpcbind服务      

[root@nfs01 ~]# systemctl start nfs.service 


3.7本地检测

[root@nfs01 ~]# rpcinfo -p 172.16.1.31   

   program vers proto   port  service

    100000    4   tcp    111  portmapper

    100000    3   tcp    111  portmapper

    100000    2   tcp    111  portmapper

    100000    4   udp    111  portmapper

    100000    3   udp    111  portmapper

    100000    2   udp    111  portmapper

    100024    1   udp  46849  status

    100024    1   tcp  50012  status

    100005    1   udp  20048  mountd

    100005    1   tcp  20048  mountd

    100005    2   udp  20048  mountd

    100005    2   tcp  20048  mountd

    100005    3   udp  20048  mountd

    100005    3   tcp  20048  mountd

    100003    3   tcp   2049  nfs

    100003    4   tcp   2049  nfs

    100227    3   tcp   2049  nfs_acl

    100003    3   udp   2049  nfs

    100003    4   udp   2049  nfs

    100227    3   udp   2049  nfs_acl

    100021    1   udp  48689  nlockmgr

    100021    3   udp  48689  nlockmgr

    100021    4   udp  48689  nlockmgr

    100021    1   tcp  42653  nlockmgr

    100021    3   tcp  42653  nlockmgr

    100021    4   tcp  42653  nlockmgr

[root@nfs01 ~]# showmount -e 172.16.1.31

Export list for 172.16.1.31:

/data 172.16.1.0/24


4.客户端部署NFS


4.1安装NFS相关服务(不需启动,只需要使用相关命令)

yum install -y nfs-utils rpcbind


4.2挂在目录

mount -t nfs 172.16.1.31:/data /mnt  (/mnt只是测试,工作中需要挂载站点的相关目录)