NFS服务器搭建与配置


Linux下NFS服务器部署

NFS服务所需软件及主要配置文件:
安装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 与说明文件、执行文件等的软件!这个就是 NFS 服务所需要的主要软件。
NFS的相关文件:
主要配置文件:/etc/exports
这是 NFS 的主要配置文件了。该文件是空白的,有的系统可能不存在这个文件,主要手动建立。NFS的配置一般只在这个文件中配置即可。
NFS 文件系统维护指令:/usr/sbin/exportfs
这个是维护 NFS 分享资源的指令,可以利用这个指令重新分享 /etc/exports 变更的目录资源、将 NFS Server 分享的目录卸除或重新分享。
分享资源的登录档:/var/lib/nfs/*tab
在 NFS 服务器的登录文件都放置到 /var/lib/nfs/ 目录里面,在该目录下有两个比较重要的登录档, 一个是 etab ,主要记录了 NFS 所分享出来的目录的完整权限设定值;另一个 xtab 则记录曾经链接到此 NFS 服务器的相关客户端数据。
客户端查询服务器分享资源的指令:/usr/sbin/showmount
这是另一个重要的 NFS 指令。exportfs 是用在 NFS Server 端,而 showmount 则主要用在 Client 端。showmount 可以用来察看 NFS 分享出来的目录资源。

服务端安装NFS服务步骤:

第一步:安装NFS和rpc。

yum install -y  nfs-utils   
#安装nfs服务
yum install -y rpcbind
#安装rpc服务

第二步:启动服务和设置开启启动:

systemctl start rpcbind    #先启动rpc服务
systemctl enable rpcbind   #设置开机启动
systemctl start nfs-server #启动nfs
systemctl start nfs-secure-server  #nfs-secure-server 服务成为静态服务,因此无法再启用这里可以执行也可以不执行 

systemctl enable nfs-server nfs-secure-server
#开机启动启动nfs服务和nfs安全传输服务

防火墙需要打开rpc-bind和nfs的服务

firewall-cmd --zone=public --permanent --add-service={rpc-bind,mountd,nfs}
firewall-cmd --reload

配置共享目录

服务启动之后,我们在服务端配置一个共享目录

mkdir /data
chmod 755 /data

根据这个目录,相应配置导出目录

vi /etc/exports

添加如下配置

/data/     192.168.0.0/24(rw,sync,all_squash,anonuid=501,anongid=501)

这个配置文件就这样简单一行。共分为三部分,第一部分就是本地要共享出去的目录,第二部分为允许访问的主机(可以是一个IP也可以是一个IP段)第三部分就是小括号里面的,为一些权限选项。关于第三部分,笔者简单介绍一下:
rw :读写;
ro :只读;
sync :同步模式,内存中数据时时写入磁盘;
async :不同步,把内存中数据定期写入磁盘中;
no_root_squash :加上这个选项后,root用户就会对共享的目录拥有至高的权限控制,就像是对本机的目录操作一样。不安全,不建议使用;
root_squash :和上面的选项对应,root用户对共享目录的权限不高,只有普通用户的权限,即限制了root;
all_squash :不管使用NFS的用户是谁,他的身份都会被限定成为一个指定的普通用户身份;
anonuid/anongid :要和root_squash 以及 all_squash一同使用,用于指定使用NFS的用户限定后的uid和gid,前提是本机的/etc/passwd中存在这个uid和gid。
介绍了上面的相关的权限选项后,再来分析一下笔者刚刚配置的那个/etc/exports文件。其中要共享的目录为/home,信任的主机为10.0.2.0/24这个网段,权限为读写,同步,限定所有使用者,并且限定的uid和gid都为501。

:wq 保存设置之后,重启NFS服务。

systemctl restart nfs

可以检查一下本地的共享目录

showmount -e localhost
Export list for localhost:
/data 192.168.0.0/24

这样,服务端就配置好了,接下来配置客户端,连接服务端,使用共享目录。

Linux客户端

与服务端类似

yum install nfs-utils  #客户端安装
systemctl enable rpcbind   #设置rpcbind服务的开机启动
systemctl start rpcbind   #启动NFS服务

注意

客户端不需要打开防火墙,因为客户端时发出请求方,网络能连接到服务端即可。
客户端也不需要开启NFS服务,因为不共享目录。
客户端连接NFS
先查服务端的共享目录

showmount -e 192.168.0.110
Export list for 192.168.0.110:
/data 192.168.0.0/24
mkdir /data #在客户端创建目录
mount -t nfs 192.168.0.101:/data /data #挂载

挂载之后,可以使用mount命令查看一下

#mount
192.168.0.110:/data on /data type nfs4 (rw,relatime,sync,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.0.100,local_lock=none,addr=192.168.0.101)

这说明已经挂载成功了。

客户端自动挂载

自动挂载很常用,客户端设置一下即可。

vi /etc/fstab

在结尾添加类似如下配置

/dev/mapper/cl-root     /                       xfs     defaults        0 0
UUID=414ee961-c1cb-4715-b321-241dbe2e9a32 /boot                   xfs     defaults        0 0
/dev/mapper/cl-home     /home                   xfs     defaults        0 0
/dev/mapper/cl-swap     swap                    swap    defaults        0 0
192.168.0.110:/data     /data                   nfs     defaults        0 0

由于修改了/etc/fstab,需要重新加载systemctl。

systemctl daemon-reload

之后查看一下就好了
关于nfs服务端具体会用到那些端口查询一下就知道了

rpcinfo -p | grep nfs

有需要就自己去折腾 哈哈不会有人内网穿透nfs吧
参考1
参考2
参考3
参考4

声明:小小博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - NFS服务器搭建与配置


Carpe Diem and Do what I like