Linux系统下搭建NFS服务并挂载详解

前言】网络文件系统(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 --reload

Ubuntu机器执行以下命令开放 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

结束语】因技术能力有限,文章如有不妥之处,恳请各位技术大佬留言指正! 

猜你喜欢

转载自blog.csdn.net/m0_56121792/article/details/133364406