网络文件系统(NFS)是一个分布式文件系统协议,它允许你通过网络共享远程文件夹。
NFS 协议默认是不加密的,不提供用户身份鉴别。服务端通过限定客户端的 IP 地址和端口来限制访问。
- NFS 特点:
- 基于TCP/IP协议,服务于linux之间资源共享
- 将远程主机上共享资源挂载到本地目录,使得像使用本地文件一样方便。
1. 建立 NFS 服务器
1.1 安装 NFS 服务端(CentOS8中默认安装了nfs-utils软件包)
- 用rpm检查是否有nfs-utils的包已安装:
1 | [root@localhost ~]# rpm -qa | grep nfs-utils |
- 如果没有安装 执行如下命令安装:
1 | [root@localhost ~]# dnf install nfs-utils |
- 启用并启动 NFS 服务:
1 | [root@localhost ~]# systemctl enable --now nfs-server |
- 默认情况下,在 CentOS8 上,NFS3 和 NFS4 都可以用,NFS2 被禁用。想要验证,运行下面的cat命令:
1 | [root@localhost ~]# cat /proc/fs/nfsd/versions |
NFS 服务器配置选项在/etc/nfsmount.conf
和/etc/nfs.conf
文件中。默认的设置足够满足我们的要求。
1.2 创建文件系统
- 创建共享目录,并开放目录权限
1 | [root@localhost ~]# mkdir /nfs_database |
- 编辑NFS服务程序配置文件(允许IP地址
192.168.2.*
的所有主机访问NFS共享资源文件夹)
1 | [root@localhost ~]# vim /etc/exports |
配置完成后,使nfs配置生效,使用exportfs实用程序有选择地导出目录,而无需重新启动NFS服务
1 | 使用exportfs实用程序有选择地导出目录,而无需重新启动NFS服务 |
NFS配置文件参数 | 作用 |
---|---|
ro | 只读(read only) |
rw | 读写(read write) |
root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器匿名用户 |
no_root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 |
all_squash | 表示客户机所有用户访问时,映射为NFS服务器匿名用户 |
sync | 同时将数据写入到内存与硬盘中,保证不丢失数据 |
async | 优先将数据保存到内存,然后再写入硬盘,效率更高,但可能丢失数据 |
- 启动和启用rpcbind服务程序
1 | 安装rpcbind |
1.3 防火墙设置
将该服务添加到防火墙中进行放行。
部署nfs服务不仅需要nfs服务软件包,还需要rpc-bind服务和mountd服务。
因为nfs服务需要向客户端广播地址和端口信息,nfs客户端需要使用mount对远程nfs服务器目录进行挂载。
1 | [root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=nfs |
2. 客户端配置
- 查询远程nfs服务器是否能够连通
1 | [root@localhost ~]# showmount -e 192.168.2.100 |
showmount参数 | 作用 |
---|---|
-e | 显示NFS服务器共享列表 |
-a | 显示本地挂载的文件资源情况 |
-v | 显示版本号 |
- 创建本地nfs专用共享目录
1 | [root@localhost ~]# mkdir /nfs_database |
- 将远程nfs服务器共享目录挂载到本地创建的nfs共享目录
1 | [root@localhost ~]# mount -t nfs 192.168.2.100:/nfs_database /nfs_database |
- mount参数:
-t
:使用TCP协议nfs
:nfs服务192.168.2.100:/nfs_database
:远程nfs服务器资源共享目录/nfs-database
:本地资源共享目录
- 本机查看共享文件
1 | [root@localhost ~]# cd /nfs_database |