Liunx下NFS服务器的搭建与配置

时间:2021-02-27 05:51:12

一、NFS简介

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

NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本NFS数据传输基于RPC(Remote Procedure Call)协议。

NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。

NFS在文件传送或信息传送过程中依赖于RPC协议。RPC (远程过程调用) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。

简单来说:NFS可以透过网络,让不同的主机、不同的操作系统实现共享存储。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。

二、NFS搭建

2.1 NFS服务端所需的软件列表
nfs-utils: 这个是NFS服务主程序(包含rpc.nfsd、rpc.mountd、daemons)
rpcbind: 这个是CentOS6.X的RPC主程序(CentOS5.X的为portmap)

2.2 检查软件是否安装

cat /etc/redhat-release #查看系统版本
uname -r #查看系统内核版本
uname -m #查看系统是否64位
rpm -qa nfs-utils rpcbind #检查安装的软件包

2.3 如果 nfs-utils 和 rpcbind 没有安装,可以使用 yum 命令进行安装

yum install -y nfs-utils rpcbind

2.4 启动NFS服务端相关服务 (CentOS7.4)

/bin/systemctl start rpcbind.service
/bin/systemctl start nfs.service

如果是CentOS 6.x,执行以下脚本

service rpcbind start
service nfs start

三、 配置NFS服务端

3.1 创建共享目录,例如是 /data/nfs_share

mkdir -p /data/nfs_share

3.2 给目录添加权限

chown -R nfsnobody /data/nfs_share

3.2 编辑配置文件

vi /etc/exports

3.3 添加配置 (例如共享网段为 192.168.1.*)

/data/nfs_share 192.168.1.0/(rw,sync)

3.4 使配置生效

exportfs -r

3.5 重启服务

/bin/systemctl restart rpcbind.service
/bin/systemctl restart nfs.service

如果是CentOS 6.x

service rpcbind start
service nfs start

3.6 查询NFS服务器

showmount -e localhost

如果正确,会打印 /data/nfs_share 192.168.1.0/24

四、 配置NFS客户端

4.1 客户端也需要安装rpcbind和nfs-utils软件,并且设置开机自启动。(只需要启动rpcbind即可)

systemctl enable rpcbind.service  

( CentOS 6.x 的命令是 chkconfig rpcbind on )

4.2 查看可以挂载目录 (这里假设NFS服务器IP是 192.168.1.1)

showmount -e 192.168.1.1

会打印出可以挂载的目录信息

4.3 创建挂载目录(目录路径根据实际情况创建)

mkdir /mnt/nfs_share 

4.3 挂载目录

mount -t nfs 192.168.1.1:/data/nfs_share/  /mnt/nfs_share -o proto=tcp -o nolock

4.4 如果需要开机自动挂载目录,需要将挂载命令放在rc.local里面

五、 配置Windows NFS客户端

如果客户端是Windows,我们需要在程序和功能里面启用 NFS客户端。

控制面板 -> 程序 -> 程序和功能 --> 勾选 NFS服务,NFS客户端,确定。

之后可以在命令行使用mount命令挂载远程目录 (比如挂载到 Z 盘)

mount ip:/192.168.1.1/ /data/nfs_share/ z:

另外也可以在我的电脑(计算机) 中,创建映射网络驱动器,来挂载远程目录。

如果Windows版本不支持NFS服务,那么需要安装  Windows Services for UNIX ,然后在Korn Shell (开始菜单 -> 程序 ->  Windows Services for UNIX -> Korn Shell) 中执行 mount命令。

六、 配置防火墙

如果网络环境中需要开启防火墙,那么需要在防火墙上打开如下端口:

1. portmap 端口 111 udp/tcp;
2. nfsd 端口 2049 udp/tcp;
3. mountd 端口 "随机(32768-65535)" udp/tcp

防火墙常用命令

#启动防火墙
systemctl start firewalld.service
#关闭防火墙
systemctl stop firewalld.service
#重新载入
systemctl restart firewalld.service
#查看配置结果
firewall-cmd --list-all
#添加规则(指定端口,--permanent永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --add-port=8080/tcp --permanent
#添加规则(指定IP与端口)
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.2" port protocol="tcp" port="" accept"
#删除规则
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.1.2" port protocol="tcp" port="" accept"
#添加规则(端口段)
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.2" port protocol="tcp" port="-" accept"