Linux 玩转nfs

发布于:2025-05-23 ⋅ 阅读:(21) ⋅ 点赞:(0)

服务端和客户端区分:

Server服务端配置:

首先服务端是LVMLinux虚拟机:

ip地址是192.168.73.129

Client客户端配置:

客户端配置是名称为Centos7的虚拟机:

ip地址是192.168.73.128

NFS服务端配置

首先安装在服务端上安装nfs服务:

yum install nfs-utils

发现使用yum安装报错,提示:Cannot find a valid baseurl for repo: base/7/x86_64,查询后原因为没有配置网络镜像源,无法连接到对应的仓库镜像地址。

设置镜像源:

使用yum repolist命令查看yum list:

创建一个文件夹,备份一下这个原来的文件:

mkdir /etc/yum.repos.d/backup

备份原来的yum源文件:

mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/

然后可以使用 wget 命令来下载阿里云提供的适用于 CentOS 7 的 yum 源配置文件,但是测试发现404notfound,找不到文件,估计是配置文件拉不到:

Linux设置yum源为阿里云镜像源_linuxyum源为阿里云-CSDN博客

wget命令下载: wget [options] [url]
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

后面尝试用wget也能拉取:

# wget命令下载: wget [options] [url]
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

查询资料后使用curl去拉取配置文件:

curl命令下载: curl [options] [url]
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

清理缓存,并更新缓存:

yum clean all
yum makecache

继续安装

配置完镜像源后,继续尝试yum安装nfs-utils

编辑配置导出目录:

vi /etc/exports --配置导出目录

/data/nfs_share 192.168.1.0/24(ro,sync,no_subtree_check)

– /data/nfs_share:服务端要共享的目录路径。

– 192.168.1.0/24(ro,sync,no_subtree_check):指定客户端的 IP 地址段或主机名,以及访问权限

– ro:只读访问权限。如果需要读写权限,可以使用 rw。

– sync:同步写入,确保数据立即写入磁盘。默认情况下,NFS 使用异步写入(async),可能会导致数据丢失的风险。

– no_subtree_check:禁用子树检查,减少服务器的开销。当导出的目录是另一个目录的子目录时,建议启用此选项

格式:[共享目录] [主机名或IP] (参数,参数…)

例:/home/xd/nfs *(rw,sync,no_root_squash)

共享目录:/home/xd/nfs,客户端访问的目录

主机名或IP: 要是想被所有主机都能匹配,就用 * 来表示

(参数,参数 …): 括号内容是访问控制方式,括号里面的共享的参数,用逗号来分割,参数查询:man exports

rw: 可读可写

ro: 只读访问

sync: 同步,数据实时同步到共享目录里(默认)

async: NFS在写入数据前可以响应请求

secure: NFS通过1024以下的安全TCP/IP端口发送

insecure: NFS通过1024以上的端口发送

wdelay: 如果多个用户要写入NFS目录,则归组写入(默认)

no_wdelay: 如果多个用户要写入NFS目录,则立即写入,当使用async时,则需此设置 hide 共享NFS目录的子目录

subtree_check: 要求检查请求访问的目录或文件是否在共享目录下

no_subtree_check: NFS客户端访问共享目录下的一个目录时,NFS服务器是否检测这个目录是否是这个共享目录下的某个子目录

all_squash: 共享文件的UID和GID映射匿名用户anonymous,适合公用目录

no_all_squash: 保留共享文件的UID和GID(默认)

root_squash: root用户的所有请求映射成如anonymous用户一样的权限(默认)

no_root_squash: root用户访问共享目录,是否保留root的完整控制权限

anonuid=xxx: 指定NFS服务器/etc/passwd文件中匿名用户的UID

anongid=xxx: 指定NFS服务器/etc/passwd文件中匿名用户的GID

/data/nfs_share 192.168.73.0/24(rw,sync,no_subtree_check)

启动服务:

systemctl enable --now rpcbind.service --启动 PPC 服务

systemctl enable --now nfs-server --启动 NFS 服务

systemctl status nfs-server --检查 NFS服务状态

exportfs -av --检查当前导出的目录及其配置

exportfs -ar --更新exports文件后,使配置文件的更改生效

systemctl enable --now rpcbind nfs-server  --启动rpcbind服务和nfs-server服务
systemctl status nfs-server  --查看NFS服务状态

此时去执行会报错,说找不到这个文件夹:

创建文件夹后,再次执行:

再次检查下nfs服务器状态:

NFS客户端配置

设置镜像源,这里忽略:

安装同上,忽略:

yum install nfs-utils

挂载

挂载文件系统服务器:

报错,内容为:

clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)-CSDN博客

[root@localhost ~]# showmount -e 192.168.73.129
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

启动客户端的nfs服务:

[root@localhost ~]# systemctl start rpcbind nfs-server
[root@localhost ~]# showmount -e 192.168.73.129
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

发现还是有问题,这个时候需要关闭服务器的防火墙

systemctl status firewalld  --查看服务器防火墙状态
systemctl stop firewalld   --关闭防火墙
systemctl status firewalld

这时再次查看客户端连接后的共享目录情况:

showmount -e 192.168.73.129

创建客户端挂载点:

mount -t nfs 192.168.73.129:/data/nfs_share /mnt/nfs

128客户端尝试创建文件发现没权限保存,回到129服务器端修改权限:

cd /data/nfs_share
cd ..
chmod 777 nfs_sahre

然后回到128客户端进行创建文件:

回到129服务器端查看客户端创建的文件:

说明NFS共享文件系统搭建成功!

小补充:在修改这里时,需要退出共享的目录,等待服务器那边挂载上来,要不然就不显示文件:


网站公告

今日签到

点亮在社区的每一天
去签到