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写的)

相关推荐
IT小馋猫2 分钟前
从源码到生产:Apache 2.4.57 自动化安装实战指南(附脚本)
linux·服务器·网络·网络安全
Rancemy20 分钟前
Redis02
运维·服务器·redis·腾讯云
conkl34 分钟前
Linux 并发编程:从线程池到单例模式的深度实践
linux·运维·服务器·阿里云·单例模式·云计算
王富贵QAQ35 分钟前
SSH带外管理和Rsync+sersync实现数据实时同步
linux·服务器·ssh
XINGLOO1 小时前
搭建Linux Socks5 Server解决方案
linux·服务器·网络协议
IU宝1 小时前
进程间通信2(命名管道)linux
linux·运维·服务器
听忆.1 小时前
Java修改接口 校验一个或多个字段不可重复(自定义注解)
java·开发语言·数据库
咖啡续命又一天1 小时前
Linux head 命令
linux
kingbal1 小时前
MySQL:要删除子查询所涉及表中的数据,直接使用原 SQL 会报错
数据库·sql·mysql
GGBondlctrl2 小时前
【Redis】Redis核心探秘:数据类型的编码实现与高速访问之道
数据结构·数据库·redis·缓存·编码方式·redis工作过程·单线程模型