Linux中的nfs

nfs安装与相关配置

安装

bash 复制代码
dnf install nfs-utils -y

防火墙放通

在nfs服务器中放通nfs、rpc-bind和mountd这三个软件和服务。

bash 复制代码
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=mountd
firewall-cmd --reload

放通后,记得重启防火墙服务

启动服务

bash 复制代码
systemctl enable --now nfs-server.service

测试是否能访问服务端

在主机2(134)上查看192.168.200.132上共享位置的有无挂载

bash 复制代码
showmount 192.168.200.132

共享

创建共享的目录并且赋予目录权限

bash 复制代码
mkdir /nfsdata
chmod 777 /nfsdata/

编写配置文件

如果不知道怎么写exports配置

可以用man来查询配置的模板

bash 复制代码
man 5 exports

然后我们用vim来编写/etc/exports这个文件

bash 复制代码
vim /etc/exports

橙框处为例子

按照例子模板来写自己的共享目录

在服务端(132)上编写配置/etc/exports这个文件

bash 复制代码
/nfsdata *(sync,ro) 192.168.200.134(sync,rw) 

配置解析

/nfsdata *(sync,ro) 192.168.200.134(sync,rw)

(1)共享目录
  • /nfsdata:这是要共享的目录路径,表示NFS服务器上名为/nfsdata的目录将被共享出去。
(2)客户端及权限
  • *(sync,ro)

    • *:表示所有客户端(即任何IP地址的主机)都可以访问这个共享目录。

    • sync:同步写入模式,表示数据会立即写入磁盘,而不是缓存在内存中,这可以保证数据的一致性,但可能会降低性能。

    • ro:只读权限,表示所有客户端只能读取共享目录中的内容,不能进行写操作。

  • 192.168.200.134(sync,rw)

    • 192.168.200.134:指定IP地址为192.168.200.134的客户端。

    • sync:同样表示同步写入模式。

    • rw:读写权限,表示该客户端可以读取和写入共享目录中的内容。

注:这是在服务端(132)上

刷新配置文件并重新启用服务

bash 复制代码
exportfs -rv

挂载目录到服务端(132)上

bash 复制代码
mount 192.168.200.132:/nfsdata /media

df查看挂载

在客户端(134) 使用df命令查看

bash 复制代码
df -h /media/

成功在服务端上生成文件

可选择参数

|----------------------------|----------------------------------------------------------------------------------------------------------------------------------------------|
| 参数值 | 说明 |
| rwro | 该目录共享的权限是可读写还是只读,但最终能否读写,还是与文件系统的rwx有关 |
| sync async | sync代表数据会同步写入到内存与硬盘中,async则代表数据会先暂存于内存当中,而非直接写入硬盘 |
| no_root_squash root_squash | 若客户端在共享目录里创建的文件的所属者和所属组是root用户和root组,那么显示文件的属主和属组时有以下两种情况: no_root_squash表示,文件的所属者和所属组是root用户和root 组; root_squash表示将root用户和组映射为匿名用户和组(默认设置)。 |
| all_squash no_all_squash | all_squash:客户端所有用户创建文件时,客户端会将文件的用户和组 映射为匿名用户和组no_all_squash:客户端普通用户创建的文件的 UID和GID是多少,服务端就显示为多少(默认设置) |
| anonuid= anongid= | 将文件的用户和组映射为指定的UID和GID,若不指定默认为65534(nfsnobody) |

自动挂载和卸载

在客户端(134)安装autofs

bash 复制代码
dnf install autofs-1:5.1.7-58.el9.x86_64 -y

启用服务

在客户端(134)上

bash 复制代码
systemctl enable autofs.service

卸载目录

bash 复制代码
umount /media
df

df查看挂载的目录,确保刚才挂载的目录已经卸载了

重启服务并测试

bash 复制代码
systemctl restart --now autofs.service    #重启
systemctl enable --now autofs.service     #启用
bash 复制代码
cd /net/192.168.200.132/nfsdata

我们可以直接在客户端直接访问到服务端

注:/net/IP address/共享目录,这个是默认的

更改挂载超时时间

我们用vim更改配置文件/etc/autofs.conf

默认timeout(挂载超时时间)是300秒

bash 复制代码
vim /etc/autofs.conf

在更改完配置文件后,需要重启服务来更新配置

bash 复制代码
systemctl restart --now autofs.service

更改自动挂载的目录

用vim在/etc/auto.conf里加上自己想共享的目录

bash 复制代码
vim /etc/autofs.conf

注:这一行是我们需要新起一行进行编写的

/share为你想要更改共享目录的上一层目录

即如果你想让其自动挂载到/aaa/nfsdata的话

你需要写的是/aaa/etc/auto.xxx(子配置文件)

/etc/auto.vb为子配置文件,待会我们要自己创建并编写

然后我们自己创建好刚刚后面跟着的那个路径下的文件

之后进行编写子配置文件

bash 复制代码
vim /etc/auto.vb

成功更改自动挂载的目录

直接使用我们刚刚写的路径访问

bash 复制代码
cd /share/nfs

/share(这是在/etc/auto.conf写的上层目录)/nfs(这是在/etc/auto.vb写的)

相关推荐
2301_783848653 分钟前
Go 中实现高效图最大团划分的实践与边界分析
jvm·数据库·python
2401_884454154 分钟前
C#怎么实现Socket心跳包 C#如何在TCP Socket通信中设计心跳机制检测连接状态【网络】
jvm·数据库·python
Jetev17 分钟前
不同品牌SSD对HTML函数工具加载速度影响大吗_存储测试汇总【汇总】
jvm·数据库·python
SelectDB技术团队17 分钟前
时间序列近邻关联性能实测:Doris ASOF JOIN 领先 ClickHouse、DuckDB
数据库·人工智能·selectdb
java_logo30 分钟前
轻量AI接口网关一键部署|calciumion/new-api Windows/Linux Docker 部署全教程
linux·人工智能·windows·one api·calciumion·ai网关部署·one api 部署
原来是猿32 分钟前
Linux - 【理解进程组、会话与作业控制】
linux·运维·服务器
2501_9458374333 分钟前
OpenClaw:重新定义 AI 智能体,从对话到执行的革命
服务器
Traving Yu35 分钟前
向量数据库Milvus
数据库·人工智能·milvus
2501_9010064739 分钟前
golang如何使用DTM分布式事务框架_golang DTM分布式事务框架使用方法
jvm·数据库·python
wearegogog12341 分钟前
Modbus TCP 通讯协议实现
服务器·网络·tcp/ip