【前言】网络文件系统(Network File System)是一个分布式文件系统协议,允许你通过网络共享远程文件夹,通过NFS的方式,将远程文件夹挂载到本地系统上,并且操作远程机器的文件,就像本地文件一样方便。可见NFS它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。
1、环境说明
服务端:Ubuntu 18.04机器。
客户端:CentOS7机器
注意:它们均可互为服务端或客户端,根据自己的实际需求指定。
2、安装NFS服务
(1)Ubuntu安装NFS服务
在Ubuntu上安装NFS服务端:
sudo apt install nfs-kernel-server -y
或 sudo apt install portmap -y
在Ubuntu上安装NFS客户端:
sudo apt install nfs-common -y
(2)Centos安装NFS服务
在Centos上安装NFS服务端:
yum -y install rpcbind nfs-utils
(服务端和客户端同一个)
(3)查看NFS安装版本信息
安装完后,NFS服务将会自动启动,默认NFS2 被禁用,NFS3和NFS4可以使用。
输入以下命令查看NFS的版本信息 + 表示支持 - 表示不支持:sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2
3、配置NFS服务
(1)创建全局共享目录
Ubuntu机器共享目录为:/nfsroot
详细信息如下:
drwxrwxrwx 2 nobody root 4096 Aug 6 2019 nfsroot
目录权限根据自己需求设定,此处权限为:可读可写可执行。
CentOS机器共享目录为:/nfs_share
drwxrwxrwx 2 root root 6 Sep 26 04:55 nfs_share
目录权限根据自己需求设定,此处权限为:可读可写可执行。
(2)修改NFS配置文件
将共享目录添加到配置文件中,输入以下命令打开配置文件:
sudo vim /etc/exports
在文件中添加如下内容:
Ubuntu机器:
/nfsroot *(insecure,rw,sync,no_root_squash,no_subtree_check)
CentOS机器:
/nfs_share *(insecure,rw,sync,no_root_squash,no_subtree_check)
参数说明:
/nfsroot和 /nfs_share :即为你新建的共享目录
* :表示所有IP都可以访问。(可在此处指定某网段内IP可访问,例如:192.168.18.0)
insecure:表示每次挂载前重启NFS服务
rw:表示允许读写访问
sync:表示数据同步写入内存和硬盘中,保证数据的安全性
no_root_squash:表示允许 root 用户访问共享目录
输入以下命令使配置立即生效:
sudo exportfs -r
(3)启动NFS服务
启动NFS服务:
sudo systemctl start nfs-server.service
NFS服务在系统启动时自动启动:
sudo systemctl enable nfs-server.service
(4)查看NFS服务挂载情况
showmount -e localhost
挂载情况如下所示:
至此CentOS和Ubuntu机器均已经配置了 NFS 服务。接下来就可以通过客户端来挂载使用 NFS 协议访问共享目录。
4、挂载NFS服务
(1)设置防火墙
如果网络上有防火墙,需要在防火墙中添加一条规则,允许流量通过NFS端口。此处使用ufw
管理防火墙。
查看防火墙状态:
sudo ufw status
如果防火墙服务已经开启,终端会显示 active (running)。
如果防火墙服务未开启,终端会显示 inactive (dead)。
如果防火墙(firewalld)正在运行,需要允许NFS流量通过防火墙。 具体操作如下:
CentOS机器执行以下命令开放 NFS 服务的端口:
sudo firewall-cmd --permanent --zone=public --add-service=nfs
sudo firewall-cmd --permanent --zone=public --add-service=rpc-bind
sudo firewall-cmd --permanent --zone=public --add-service=mountd
sudo firewall-cmd --reloadUbuntu机器执行以下命令开放 NFS 服务的端口:
sudo ufw allow from <客户端IP地址> to any port nfs
注:以上只涉及到客户端
(2)挂载共享目录
此处我是将Ubuntu作为服务端,CentOS作为客户端。则在客户端命令行上输入以下命令:
sudo mount -t nfs 192.168.xxx.xxx:/nfsroot /nfs_share -o nolock,nfsvers=3
如果不加 -o nolock,nfsvers=3 则在挂载目录下的文件属主和组都是nobody,如果指定版本号为3:nfsvers=3则显示root。
通过df -h 或 mount | grep nfs 命令查看挂载情况。
至此,成功将服务端的/nfsroot目录,挂载到了客户端/nfs_share目录上。
(3)开机自动挂载
我们不要把挂载项写到/etc/fstab文件中,因为开机时先挂载本机磁盘再启动网络,而NFS是需要网络启动后才能挂载的,所以我们把挂载命令写入到/etc/rc.d/rc.local文件中即可。
打开文件:
vim /etc/rc.d/rc.local
在文件的最后一行加上你的挂载语句即可。例如:
sudo mount -t nfs 192.168.xxx.xxx:/nfsroot /nfs_share
(4)移除NFS挂载
umount /xxx
【结束语】因技术能力有限,文章如有不妥之处,恳请各位技术大佬留言指正!