五十四、NFS介绍、NFS服务端安装配置、NFS配置选项

五十四、NFS介绍、NFS服务端安装配置、NFS配置选项

一、NFS介绍

NFS是Network File System的缩写。

    NFS最早由sun公司开发,分2,3,4三个版本,2和3由sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本。

NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写。

    NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别挂载A共享的数据目录,从而B和C访问到的数据和A上的一致。

1.png

NFS原理:

RPC服务是由rpcbind所实现的,centos5及之前叫protmap,centos6及之后叫rpcbind,是一个东西,原理就是启动了这个rpcbind服务,实现了RPC协议的通信;默认NFS服务不监听任何端口,启动了服务但是不会监听端口;客户端和服务端监听端口实现TCP/IP协议通信的是由rpcbind这个服务产生的RPC协议实现的;rpcbind会监听111端口;TCP/IP协议先通信,然后NFS服务会在RPC协议里注册一个端口,NFS告诉服务端RPC通信的端口是谁,然后服务端RPC再告诉客户端的RPC,然后NFS客户端这台机器再和NFS服务端的这个端口去通信,最终实现数据传输。

总结:NFS服务需要通过RPC协议进行通信。

2.png


二、NFS服务端安装配置

准备两台机器,一台服务端,一台客户端。

服务端上安装两个包:nfs-utils和rpcbind;

客户端上安装一个包:nfs-utils。

# yum install -y nfs-utils rpcbind

//这里不管写不写rpcbind,这个nfs-utils都会给你安装上这个包。

当epel这个安装很慢的时候,把这个文件改一个名字即可:

# cd /etc/yum.repos.d/

# mv epel.repo epel.repo.1


# vim /etc/exports    //加入如下内容

/home/nfstestdir 192.168.93.2/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

这里指定共享的目录,共享的机器的IP或IP段。

保存配置文件后,执行如下准备操作

# mkdir /home/nfstestdir

# chmod 777 /home/nfstestdir    给777权限是为了方便做实验

# netstat -lntp    //可以看到111端口已经被监听了,这个就是rpcbind服务,安装完rpcbind以后这个就会自动的启动。

tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd

# systemctl start rpcbind

# systemctl start nfs

# ps aux |grep nfs

root       5745  0.0  0.0      0     0 ?        S<   21:33   0:00 [nfsd4_callbacks]

root       5751  0.0  0.0      0     0 ?        S    21:33   0:00 [nfsd]

root       5752  0.0  0.0      0     0 ?        S    21:33   0:00 [nfsd]

root       5753  0.0  0.0      0     0 ?        S    21:33   0:00 [nfsd]

root       5754  0.0  0.0      0     0 ?        S    21:33   0:00 [nfsd]

root       5755  0.0  0.0      0     0 ?        S    21:33   0:00 [nfsd]

root       5756  0.0  0.0      0     0 ?        S    21:33   0:00 [nfsd]

root       5757  0.0  0.0      0     0 ?        S    21:33   0:00 [nfsd]

root       5758  0.0  0.0      0     0 ?        S    21:33   0:00 [nfsd]

root       5763  0.0  0.0 112676   984 pts/1    S+   21:33   0:00 grep --color=auto nfs

# ps aux |grep rpcbind      当nfs启动以后,rpcbind会自动启动一些相关的服务

rpc        5694  0.1  0.0  64956  1404 ?        Ss   21:31   0:00 rpcbind

rpcuser    5717  0.0  0.0  42376  1744 ?        Ss   21:33   0:00 /usr/sbin/rpc.statd

root       5718  0.0  0.0      0     0 ?        S<   21:33   0:00 [rpciod]

root       5734  0.0  0.0  42564   944 ?        Ss   21:33   0:00 /usr/sbin/rpc.mountd

root       5735  0.0  0.0  43816   540 ?        Ss   21:33   0:00 /usr/sbin/rpc.idmapd

root       5765  0.0  0.0 112680   980 pts/1    S+   21:35   0:00 grep --color=auto rpc

# systemctl enable rpcbind

# systemctl enable nfs       开机启动,在服务端执行。


三、NFS配置选项

/home/nfstestdir 192.168.93.2/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

rw 读写

ro 只读

sync 同步模式,内存数据实时写入磁盘,可以很快写入磁盘,相应的会降低磁盘效率。

async 非同步模式,不实时写入磁盘,每隔一段时间会把内存的东西写到磁盘里去,这样的好处是能保证磁盘的效率,缺点是万一断电了,数据就会丢一部分。

no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大

root_squash 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户

all_squash 客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户

anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid

客户端挂载

# yum install -y nfs-utils

# showmount -e 192.168.93.130   //该ip为NFS服务端ip

clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

//报错,不能和93.130的111端口通信,原因有2个:一,是93.130的111端口是否打开;二,防火墙导致。

# systemctl stop firewalld    建议:关掉防火墙,服务端和客户端都关。

# getenforce        检查Selinux,也要关,服务端和客户端都要关。

Disabled

# showmount -e 192.168.93.130    通信OK

Export list for 192.168.93.130:

/home/nfstestdir 192.168.93.2/24       看到了93.130这台机器共享目录和共享的机器给了这个IP段。

# mount -t nfs 192.168.93.130:/home/nfstestdir /mnt   把它挂载起来到/mnt

# df -h

# touch /mnt/aminglinux.txt    客户端/mnt下touch个文件,再到服务端看,就有

# ls -l /mnt/aminglinux.txt   //可以看到文件的属主和属组都为1000

anonuid=1000,anongid=1000

//因为这里uid和gid都定义了1000,所以不管你用哪个用户操作的,最终都会以1000uid和1000gid的用户反应给服务端和客户端。


猜你喜欢

转载自blog.51cto.com/13576245/2114639