当前位置: 首页 > news >正文

RHCE NFS

RHCE NFS

  • 1.1
  • 1. 2 NFS 主机名格式
  • 1.3 NFS 服务器配置
    • 1.3.1 /etc/exports 配置文件
      • 1.3.1.1 导出条目
      • 1.3.1.2 默认选项
      • 1.3.1.3 默认和覆盖选项
  • 1.4 启动 NFS 服务器
  • 1.5 练习
    • 1.5.1 配置 NFS 服务器和客户端挂载
    • 1.5.2 配置autofs自动挂载(需要时才挂载)
  • 1.6 废弃实验

linux 到 linux 之间的东西
不需要安装软件包系统,系统自己支持
挂载 mount
vim 编辑文件

1.1

1. 2 NFS 主机名格式

在挂载或导出 NFS 共享时用来指定主机的不同格式

使用以下格式指定主机:

  1. 单台机器
    以下任意一种:完全限定域名(可由服务器解析)主机名(可由服务器解析)IP 地址。
  2. IP网络
    以下格式之一有效: a.b.c.d/z ,其中 a.b.c.d 是网络, z 是子网掩码中的位数,例如
    192.168.0.0/24 。 a.b.c.d/netmask ,其中 a.b.c.d 是网络, netmask 是子网掩码;例如
    192.168.100.8/255.255.255.0 。

1.3 NFS 服务器配置

在 NFS 服务器中配置导出的语法和选项:

  • 手动编辑 /etc/exports 配置文件
  • 在命令行上使用 exportfs 工具

1.3.1 /etc/exports 配置文件

/etc/exports 文件控制哪些文件系统被导出到远程主机,并指定选项

  • 空白行将被忽略。
  • 要添加注释,以井号(#)开始一行。
  • 可以使用反斜杠(\)换行长行。
  • 每个导出的文件系统都应该独立
  • 所有在导出的文件系统后放置的授权主机列表都必须用空格分开
  • 每个主机的选项必须在主机标识符后直接放在括号中,没有空格分离主机和第一个括号

1.3.1.1 导出条目

导出的文件系统的每个条目都有以下结构:export host(options) 没有空格
可以指定多个主机以及每个主机的特定选项。

主机之间空格分开

export host1(options1) host2(options2) host3(options3)

export:
导出的目录
主机:
导出要共享的主机或网络
选项:
用于主机的选项(共享的时候有些特殊的选项,自己写)

示例:一个简单的 /etc/exports 文件

/exported/directory bob.example.comexport					主机host 		(option)
目录/exported/directory,导出给bob.example.com主机,没有选项(按默认选项)

1.3.1.2 默认选项

导出条目的默认选项有:

  • ro
    导出的文件系统是只读的。远程主机无法更改文件系统中共享的数据。要允许主机更改文件系统
    (即读写),指定 rw 选项。
  • sync(同步的)
    在将之前的请求所做的更改写入磁盘前,NFS 服务器不会回复请求。要启用异步写,请指定 async
    选项。(异步),建议用同步
  • wdelay
    如果 NFS 服务器预期另外一个写入请求即将发生,则 NFS 服务器会延迟写入磁盘。这可以提高性能,因为它可减少不同的写命令访问磁盘的次数,从而减少写开销。要禁用此功能,请指定
    no_wdelay 选项,该选项仅在指定了默认 sync 选项时才可用。
  • root_squash
    这可以防止远程连接的 root 用户(与本地连接相反)具有 root 特权;相反,NFS 服务器为他们分
    配用户 ID nobody 。这可以有效地将远程 root 用户的权限"挤压"成最低的本地用户,从而防止在远程服务器上可能的未经授权的写操作。要禁用 root 挤压,请指定 no_root_squash 选项。要挤压每个远程用户(包括 root 用户),请使用 all_squash 选项。要指定 NFS 服务器应该分配给来自特定主机的远程用户的用户和组 ID,请分别使用 anonuid 和 anongid 选项,如下所示:export host(anonuid=uid,anongid=gid) 这里,uid 和 gid 分别是用户 ID 号和组 ID 号。 anonuid 和 anongid 选项允许您为要共享的远程 NFS 用户创建特殊的用户和组帐户。

一台主机host1(IP:192.168.74.128)

[root@host1 ~]# vim /etc/exports
[root@localhost ~]# cat /etc/exports
/nfs                      *(rw)
导出的文件系统          *表示任意主机  rw  读写  [root@host3 ~]# showmount -e 192.168.74.128 #查看主机1的导出
#没法收到对方RPC的消息
clnt_create: RPC: Unable to receive
#对方主机要放行防火墙[root@host1 ~]# systemctl status firewalld     #查看防火墙
[root@host1 ~]# systemctl stop firewalld #关闭防火墙[root@host3 ~]# showmount -e 192.168.74.128
clnt_create: RPC: Program not registered #程序未注册
(systemctl start nfs-server)#对方没有启动nfs服务[root@host3 ~]# systemctl status nfs-server #查看nfs服务状态
○ nfs-server.service - NFS server and servicesLoaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; preset: disabled)Active: inactive (dead)
[root@host1 ~]# systemctl start nfs-server #启动nfs服务[root@host3 ~]# showmount -e 192.168.74.128
Export list for 192.168.74.128:
/nfs *[root@host1 ~]# ll /nfs
ls: cannot access '/nfs': No such file or directory
[root@host1 ~]# mkdir /nfs
[root@host1 ~]# exportfs -r # 重新加载/etc/exports 文件[root@host3 ~]# showmount -e 192.168.74.另一台主机IP
Export list for 192.168.74.128:
/nfs 					 	   *
对面导出来的文件系统(host1)  匹配的客户端[root@host3 ~]# ll /mnt
total 0
drwxr-xr-x. 2 root root 6 Nov 27 22:57 hgfs
[root@host3 ~]# mount 192.168.74.128:/nfs /mnt
[root@host3 ~]# df -h /mnt
Filesystem           Size  Used Avail Use% Mounted on
192.168.74.128:/nfs   26G  4.5G   22G  18% /mnt[root@host3 ~]# ll /mnt
total 0
[root@host3 ~]# touch /mnt/roottest
touch: cannot touch '/mnt/roottest': Permission denied #无权限(作为root账号,权限被拒绝)[root@host1 ~]# ll /nfs -d
drwxr-xr-x. 2 root root 6 Nov 17 10:19 /nfs #root账户对这个目录有写的权限
在本地是有的,在网络上面的其他主机上面的root是没有权限写的
因为nfs自动的将其他主机的root用户换成了另外的账号,叫nobody
[root@host1 ~]# id nobody
uid=65534(nobody) gid=65534(nobody) groups=65534(nobody
#65534(nobody)很大,65535是最大值
#所以nobody对/nfs没有写的权限[root@host1 ~]# chmod o+w /nfs
[root@host1 ~]# ll /nfs -d
drwxr-xrwx. 2 root root 6 Nov 27 10:18 /nfs
#加的权限rw[root@host3 ~]# touch /mnt/roottest #成功创建[root@host1 ~]# ll /nfs
total 0
-rw-r--r--. 1 nobody nobody 0 Nov 27 10:30 roottest
#默认会把 root 用户创建的文件的所有者和所属组转换  nobody  (也就是uid、gid 为  65534的用户 ) 主机3的root账号在/mnt挂载底下写的东西,在主机1上会被自动转换成nobody,
为什么转换:
因为主机2是root账号,写的文件如果不转换的话,在主机1看的时候也是root
在主机1看主机2写的文件仍然是root(但此文件不是主机1写的)

另一台主机host3(IP:192.168.74.130)

[root@host3 ~]# showmount -e 192.168.74.128 #查看主机1的导出
#没法收到对方RPC的消息
clnt_create: RPC: Unable to receive
#对方主机要放行防火墙[root@host3 ~]# showmount -e 192.168.74.128
clnt_create: RPC: Program not registered #程序未注册
(systemctl start nfs-server)#对方没有启动nfs服务[root@host3 ~]# showmount 192.168.74.另一台主机IP
host on 192.168.74.另一台主机IP:无内容(无意义)(exportfs -r)
[root@host3 ~]# showmount -e 192.168.74.另一台主机IP
Export list for 192.168.74.128:
/nfs 					 	   *
对面导出来的文件系统(host1)  匹配的客户端[root@host3 ~]# ll /mnt
total 0
drwxr-xr-x. 2 root root 6 Nov 27 22:57 hgfs
[root@host3 ~]# mount 192.168.74.128:/nfs /mnt  #挂载主机1的nfs导出[root@host3 ~]# df -h /mnt
Filesystem           Size  Used Avail Use% Mounted on
192.168.74.128:/nfs   26G  4.5G   22G  18% /mnt[root@host3 ~]# ll /mnt
total 0
[root@host3 ~]# touch /mnt/roottest
touch: cannot touch '/mnt/roottest': Permission denied #无权限(作为root账号,权限被拒绝)
在本地是有的,在网络上面的其他主机上面的root是没有权限写的
因为nfs自动的将其他主机的root用户换成了另外的账号,叫nobody
# 原因:
#65534(nobody)很大,65535是最大值
#所以nobody对/nfs没有写的权限[root@host3 ~]# touch /mnt/roottest #成功创建

主机3的root账号在/mnt挂载底下写的东西,在主机1上会被自动转换成nobody,
为什么转换:
因为主机2是root账号,写的文件如果不转换的话,在主机1看的时候也是root
在主机1看主机2写的文件仍然是root(但此文件不是主机1写的)

主机1分享一个nfs的目录,在这个目录里面写文件的时候,由其他任意主机写
其他任意主机上面的root账号在/mnt这个目录底下写东西的时候,刚开始时没有权限(Permission denied)
因为主机1在写文件的时候,会被/nfs文件系统自动转换为nobody这个账号,nobody这个账号对于/nfs这个目录来讲,没有权限,所以需要赋予权限(chcon o+w /nfs),然后就可以写这个文件touch /mnt/roottest,roottest这个文件的所属者,所属组都是nobody

主机1

[root@host1 ~]# systemctl restart firewalld #启动防火墙[root@host1 ~]# firewall-cmd --permanent --add-service nfs #只需放行nfs即可查看内容(NFSv4版本)
[root@host1 ~]# firewall-cmd --reload #重新载入防火墙配置[root@host1 ~]# ll /nfs
total 0
-rw-r--r--. 1 nobody nobody 0 Nov 17 10:28 roottest
-rw-r--r--. 1 nobody nobody 0 Nov 17 10:58 xixitest

主机2

[root@host2 ~]# df -h /mnt 
命令输入后无输出[root@host2 ~]# df -h /mnt 
192.168.197.主机1IP:/nfs 44G 4.7G 39G 11% /mnt
能正常刷新出信息[root@host2 ~]# touch /mnt/xixitest
[root@host2 ~]# ll /mnt
total 0
-rw-r--r--. 1 nobody nobody 0 Nov 17 10:28 roottest
-rw-r--r--. 1 nobody nobody 0 Nov 17 10:58 xixitest

1.3.1.3 默认和覆盖选项

每个导出的文件系统的默认值都必须被显式覆盖。

例如,如果没有指定 rw 选项,则导出的文件系统将以只读形式共享。以下是 /etc/exports 中的示例行,其覆盖两个默认选项:

/another/exported/directory 192.168.0.3(rw,async)

在此示例中, 192.168.0.3 可以以读写形式挂载 /another/exported/directory/ ,并且所有对磁盘的写入都是异步的。

1.4 启动 NFS 服务器

启动 NFS 服务器,并使其在引导时自动启动

# systemctl enable --now nfs-server

配置 NFSv4 服务器以在防火墙后面运行

firewall-cmd --permanent --add-service nfs #配置防火墙
firewall-cmd --reload #重新载入防火墙配置
systemctl restart nfs-server # 重启 nfs-server 

主机1

[root@host1 ~]# systemctl restart firewalld #启动防火墙[root@host1 ~]# firewall-cmd --permanent --add-service nfs #只需放行nfs即可查看内容(NFSv4版本)
[root@host1 ~]# firewall-cmd --reload #重新载入防火墙配置[root@host1 ~]# ll /nfs
total 0
-rw-r--r--. 1 nobody nobody 0 Nov 17 10:28 roottest
-rw-r--r--. 1 nobody nobody 0 Nov 17 10:58 xixitest

主机2

[root@host2 ~]# df -h /mnt 
命令输入后无输出[root@host2 ~]# df -h /mnt 
192.168.197.主机1IP:/nfs 44G 4.7G 39G 11% /mnt
能正常刷新出信息[root@host2 ~]# touch /mnt/xixitest
[root@host2 ~]# ll /mnt
total 0
-rw-r--r--. 1 nobody nobody 0 Nov 17 10:28 roottest
-rw-r--r--. 1 nobody nobody 0 Nov 17 10:58 xixitest

NFSv3版本还要放行这两个命令

firewall-cmd --permanent --add-service=rpc-bind --add-service=mountd

1.5 练习

1.5.1 配置 NFS 服务器和客户端挂载

一台主机host1(IP:192.168.74.128)

[root@host1 ~]# vim /etc/exports
[root@localhost ~]# cat /etc/exports
/nfs                      *(rw)
导出的文件系统          *表示任意主机  rw  读写  [root@host3 ~]# showmount -e 192.168.74.128 #查看主机1的导出
#没法收到对方RPC的消息
clnt_create: RPC: Unable to receive
#对方主机要放行防火墙[root@host1 ~]# systemctl status firewalld     #查看防火墙
[root@host1 ~]# systemctl stop firewalld #关闭防火墙[root@host3 ~]# showmount -e 192.168.74.128
clnt_create: RPC: Program not registered #程序未注册
(systemctl start nfs-server)#对方没有启动nfs服务[root@host3 ~]# systemctl status nfs-server #查看nfs服务状态
○ nfs-server.service - NFS server and servicesLoaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; preset: disabled)Active: inactive (dead)
[root@host1 ~]# systemctl start nfs-server #启动nfs服务[root@host3 ~]# showmount -e 192.168.74.128
Export list for 192.168.74.128:
/nfs *[root@host1 ~]# ll /nfs
ls: cannot access '/nfs': No such file or directory
[root@host1 ~]# mkdir /nfs
[root@host1 ~]# exportfs -r # 重新加载/etc/exports 文件[root@host3 ~]# showmount -e 192.168.74.另一台主机IP
Export list for 192.168.74.128:
/nfs 					 	   *
对面导出来的文件系统(host1)  匹配的客户端[root@host3 ~]# ll /mnt
total 0
drwxr-xr-x. 2 root root 6 Nov 27 22:57 hgfs
[root@host3 ~]# mount 192.168.74.128:/nfs /mnt
[root@host3 ~]# df -h /mnt
Filesystem           Size  Used Avail Use% Mounted on
192.168.74.128:/nfs   26G  4.5G   22G  18% /mnt[root@host3 ~]# ll /mnt
total 0
[root@host3 ~]# touch /mnt/roottest
touch: cannot touch '/mnt/roottest': Permission denied #无权限(作为root账号,权限被拒绝)[root@host1 ~]# ll /nfs -d
drwxr-xr-x. 2 root root 6 Nov 17 10:19 /nfs #root账户对这个目录有写的权限
在本地是有的,在网络上面的其他主机上面的root是没有权限写的
因为nfs自动的将其他主机的root用户换成了另外的账号,叫nobody
[root@host1 ~]# id nobody
uid=65534(nobody) gid=65534(nobody) groups=65534(nobody
#65534(nobody)很大,65535是最大值
#所以nobody对/nfs没有写的权限[root@host1 ~]# chmod o+w /nfs
[root@host1 ~]# ll /nfs -d
drwxr-xrwx. 2 root root 6 Nov 27 10:18 /nfs
#加的权限rw[root@host3 ~]# touch /mnt/roottest #成功创建[root@host1 ~]# ll /nfs
total 0
-rw-r--r--. 1 nobody nobody 0 Nov 27 10:30 roottest
#默认会把 root 用户创建的文件的所有者和所属组转换  nobody  (也就是uid、gid 为  65534的用户 ) 主机3的root账号在/mnt挂载底下写的东西,在主机1上会被自动转换成nobody,
为什么转换:
因为主机2是root账号,写的文件如果不转换的话,在主机1看的时候也是root
在主机1看主机2写的文件仍然是root(但此文件不是主机1写的)

另一台主机host3(IP:192.168.74.130)

[root@host3 ~]# showmount -e 192.168.74.128 #查看主机1的导出
#没法收到对方RPC的消息
clnt_create: RPC: Unable to receive
#对方主机要放行防火墙[root@host3 ~]# showmount -e 192.168.74.128
clnt_create: RPC: Program not registered #程序未注册
(systemctl start nfs-server)#对方没有启动nfs服务[root@host3 ~]# showmount 192.168.74.另一台主机IP
host on 192.168.74.另一台主机IP:无内容(无意义)(exportfs -r)
[root@host3 ~]# showmount -e 192.168.74.另一台主机IP
Export list for 192.168.74.128:
/nfs 					 	   *
对面导出来的文件系统(host1)  匹配的客户端[root@host3 ~]# ll /mnt
total 0
drwxr-xr-x. 2 root root 6 Nov 27 22:57 hgfs
[root@host3 ~]# mount 192.168.74.128:/nfs /mnt  #挂载主机1的nfs导出[root@host3 ~]# df -h /mnt
Filesystem           Size  Used Avail Use% Mounted on
192.168.74.128:/nfs   26G  4.5G   22G  18% /mnt[root@host3 ~]# ll /mnt
total 0
[root@host3 ~]# touch /mnt/roottest
touch: cannot touch '/mnt/roottest': Permission denied #无权限(作为root账号,权限被拒绝)
在本地是有的,在网络上面的其他主机上面的root是没有权限写的
因为nfs自动的将其他主机的root用户换成了另外的账号,叫nobody
# 原因:
#65534(nobody)很大,65535是最大值
#所以nobody对/nfs没有写的权限[root@host3 ~]# touch /mnt/roottest #成功创建

主机3的root账号在/mnt挂载底下写的东西,在主机1上会被自动转换成nobody,
为什么转换:
因为主机2是root账号,写的文件如果不转换的话,在主机1看的时候也是root
在主机1看主机2写的文件仍然是root(但此文件不是主机1写的)

主机1分享一个nfs的目录,在这个目录里面写文件的时候,由其他任意主机写
其他任意主机上面的root账号在/mnt这个目录底下写东西的时候,刚开始时没有权限(Permission denied)
因为主机1在写文件的时候,会被/nfs文件系统自动转换为nobody这个账号,nobody这个账号对于/nfs这个目录来讲,没有权限,所以需要赋予权限(chcon o+w /nfs),然后就可以写这个文件touch /mnt/roottest,roottest这个文件的所属者,所属组都是nobody

主机1

[root@host1 ~]# systemctl restart firewalld #启动防火墙[root@host1 ~]# firewall-cmd --permanent --add-service nfs #只需放行nfs即可查看内容(NFSv4版本)
[root@host1 ~]# firewall-cmd --reload #重新载入防火墙配置[root@host1 ~]# ll /nfs
total 0
-rw-r--r--. 1 nobody nobody 0 Nov 17 10:28 roottest
-rw-r--r--. 1 nobody nobody 0 Nov 17 10:58 xixitest

主机2

[root@host2 ~]# df -h /mnt 
命令输入后无输出[root@host2 ~]# df -h /mnt 
192.168.197.主机1IP:/nfs 44G 4.7G 39G 11% /mnt
能正常刷新出信息[root@host2 ~]# touch /mnt/xixitest
[root@host2 ~]# ll /mnt
total 0
-rw-r--r--. 1 nobody nobody 0 Nov 17 10:28 roottest
-rw-r--r--. 1 nobody nobody 0 Nov 17 10:58 xixitest
  • 开机自动挂载
    /etc/fstab配置文件中自动挂载
[root@141 ~]# vim /etc/fstab
192.168.74.128:/nfs  /mnt/   nfs   defaults    0   0挂载路径		 挂载点 文件系统 挂载选项没有(defaults 0 0[root@141 ~]# reboot #保存配置后,重启主机
重启后挂载路径下面还有刚刚的两个文件,则说明自动挂载已成功
[root@host3 ~]# df -h /mnt
Filesystem           Size  Used Avail Use% Mounted on
192.168.74.128:/nfs   26G  4.5G   22G  18% /mnt
[root@host3 ~]# ll /mnt
total 0
-rw-r--r--. 1 nobody nobody 0 Nov 27 23:30 roottest
-rw-r--r--. 1 nobody nobody 0 Nov 28 12:37 xixitest

在这里插入图片描述

在这里插入图片描述

将刚刚的操作清理

删除自动挂载
[root@host3 ~]# vim /etc/fstab 
dd删除[root@host3 ~]# umount /mnt
[root@host3 ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               4.0M     0  4.0M   0% /dev
tmpfs                  1.7G     0  1.7G   0% /dev/shm
tmpfs                  682M   12M  671M   2% /run
/dev/mapper/rhel-root   17G  4.5G   12G  27% /
/dev/nvme0n1p2         960M  293M  668M  31% /boot
/dev/nvme0n1p1         599M  7.0M  592M   2% /boot/efi
tmpfs                  341M   56K  341M   1% /run/user/42
tmpfs                  341M   40K  341M   1% /run/user/0[root@host3 ~]# ll /mnt
total 0
drwxr-xr-x. 2 root root 6 Nov 27 22:57 hgfs

/etc/rc.d/rc.local配置文件中自动挂载(尽量不在这里面写)

/etc/rc.d/rc.local是遗留下来的方法

[root@host3 ~]# vim /etc/rc.d/rc.local 
[root@host3 ~]# chmod a+x /etc/rc.d/rc.local 
[root@host3 ~]# cat /etc/fstab  #fstab里面没有自动挂载#
# /etc/fstab
# Created by anaconda on Wed Nov 27 14:55:48 2024
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/rhel-root   /                       xfs     defaults        0 0
UUID=0e089631-01b3-4f03-8fa3-c1575ef255e5 /boot                   xfs     defaults        0 0
UUID=2F1B-C01E          /boot/efi               vfat    umask=0077,shortname=winnt 0 2
/dev/mapper/rhel-swap   none                    swap    defaults        0 0
[root@host3 ~]# reboot[root@host3 ~]# df -h /mnt
Filesystem           Size  Used Avail Use% Mounted on
192.168.74.128:/nfs   26G  4.5G   22G  18% /mnt
开机自动挂载成功
[root@host3 ~]# ll /etc/rc.d/rc.local 
-rwxr-xr-x. 1 root root 506 Nov 28 13:04 /etc/rc.d/rc.local

做完,删除自动挂载,权限也删除

[root@host3 ~]# chmod a-x /etc/rc.d/rc.local 
[root@host3 ~]# ll /etc/rc.d/rc.local 
-rw-r--r--. 1 root root 473 Nov 28 13:11 /etc/rc.d/rc.local

在这里插入图片描述
在这里插入图片描述
为了确保服务在开机后一定可以挂载,确定自动挂载在多个地方出现,则可以在fstab写了后,再到/etc/rc.d/rc.local中写挂载

1.5.2 配置autofs自动挂载(需要时才挂载)

在一般NFS文件系统的使用过程中,如果客户端要使用服务端所提供的文件系统,可以在
/etc/rc.d/rc.local 中设置开机时自动挂载/etc/rc.d/rc.local 文件中写入的命令,在每次启动系统用户登录之前都会执行一次);也可以在登录系统后手动利用mount来挂载。

当客户端在有使用NFS文件系统的需求时才让系统自动挂载。
当NFS文件系统使用完毕后,让NFS自动卸载。

客户端安装autofs软件
dnf install autofs -yautofs 主配置文件 
ll /etc/auto.master #软件包安装完成后,多了一个这个文件[root@host1 ~]# vim /etc/auto.master
/mnt/	  /etc/auto.nfs
挂载地方   怎么挂载(我们自己单独创建的一个文件,在这个文件中写具体挂载内容)
#要去把nfs服务上面导出的文件系统挂载到mnt目录#具体挂载内容
[root@host3 ~]# vim /etc/auto.nfs
[root@hehe ~]# cat /etc/auto.nfs 
guazai     192.168.197.136:/nfs
挂载点(目标)          挂载源(挂载什么东西)
#要去把nfs服务上面导出的文件系统挂载到mnt目录[root@host3 ~]# grep nfs /etc/auto.master
/mnt/   /etc/auto.nfs
#/nfs4  /usr/sbin/fedfs-map-nfs4 nobind
/mnt/  				 /etc/auto.nfs
检测挂载点(主挂载点)     具体挂载信息  [root@host3 ~]# systemctl restart autofs
[root@host3 ~]# ll /mnt
total 0
[root@host3 ~]# df -h 
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               4.0M     0  4.0M   0% /dev
tmpfs                  1.7G     0  1.7G   0% /dev/shm
tmpfs                  682M  9.6M  673M   2% /run
/dev/mapper/rhel-root   17G  4.5G   12G  28% /
/dev/nvme0n1p2         960M  293M  668M  31% /boot
/dev/nvme0n1p1         599M  7.0M  592M   2% /boot/efi
tmpfs                  341M   56K  341M   1% /run/user/42
tmpfs                  341M   40K  341M   1% /run/user/0[root@host3 ~]# cd /mnt/guazai
#再查看挂载的时候,就有 /mnt 了
[root@guazai ~]# df -h [root@guazai ~]# cd[root@host3 ~]# ll /mnt
total 0
drwxr-xrwx.2 rootroot 38 Nov 17 10:58 guazai
#按需要挂载(重启后自动消失,一般存在五分钟)

在这里插入图片描述

在这里插入图片描述

1.6 废弃实验

  • 配置导出目录
[root@128 ~]# mkdir /data #创建一个data文件
[root@128 ~]# chmod 777 /data/
[root@128 ~]# touch /data/testfile
[root@128 ~]# vim /etc/exports #设置导出
[root@128 ~]# cat /etc/exports
/data 192.168.115.141(rw)
指定导出到192.168.115.141
  • 配置防火墙放行规则
    放行几个服务:
[root@128 ~]# firewall-cmd --permanent --add-service=nfs
success
[root@128 ~]# firewall-cmd --permanent --add-service=mountd (NFSv3)
success
[root@128 ~]# firewall-cmd --permanent --add-service=rpc-bind (NFSv3)
success
[root@128 ~]# firewall-cmd --reload
success
[root@128 ~]# firewall-cmd --list-services
cockpit dhcpv6-client mountd nfs rpc-bind ssh
  • 在客户端查看导出的目录
[root@141 ~]# showmount -e 192.168.115.128
Export list for 192.168.115.128:
/data 192.168.115.141
[root@141 ~]# mkdir /nfsclient/client-data/ -p
[root@141 ~]# mount 192.168.115.128:/data /nfsclient/client-data/
[root@141 ~]# df -h /nfsclient/client-data/
Filesystem Size Used Avail Use% Mounted on
192.168.115.128:/data 45G 4.5G 41G 11% /nfsclient/client-data
[root@141 ~]# cd /nfsclient/client-data/
[root@141 client-data]# ll
total 0
-rw-r--r--. 1 root root 0 Mar 17 16:40 testfile
[root@141 client-data]# touch caicaikan
[root@141 client-data]# ll
total 0
-rw-r--r--. 1 nobody nobody 0 Mar 17 17:05 caicaikan #远程root
-rw-r--r--. 1 root root 0 Mar 17 16:40 testfile #本地root

相关文章:

RHCE NFS

RHCE NFS 1.11. 2 NFS 主机名格式1.3 NFS 服务器配置1.3.1 /etc/exports 配置文件1.3.1.1 导出条目1.3.1.2 默认选项1.3.1.3 默认和覆盖选项 1.4 启动 NFS 服务器1.5 练习1.5.1 配置 NFS 服务器和客户端挂载1.5.2 配置autofs自动挂载(需要时才挂载) 1.6 …...

【数据结构】ArrayList与顺序表

ArrayList与顺序表 1.线性表2.顺序表2.1 接口的实现 3. ArrayList简介4. ArrayList使用4.2 ArrayList常见操作4.3 ArrayList的遍历4.4 ArrayList的扩容机制 5. ArrayList的具体使用5.1 杨辉三角5.2 简单的洗牌算法 6. ArrayList的问题及思考 【本节目标】 线性表顺序表ArrayLis…...

互联网基础

TCP/IP协议(协议组) 分层名称TCP/IP协议应用层HTTP,FTP,mDNS,WebSocket,OSC...传输层TCP,UDP网络层IP链路层(网络接口层)Ethernet,Wi-Fi... 链路层(网络接口层) 链路层的主要作用…...

ffmpeg.js视频播放(转换)

chrome 临时设置SharedArrayBuffer "C:\Program Files\Google\Chrome\Application\chrome.exe" --enable-featuresSharedArrayBuffer 引用的js及相关文件 ffmpeg.min.js ffmpeg.min.js.map ffmpeg-core.js ffmpeg-core.wasm ffmpeg-core.worker.js 以上几个现…...

后端 Java发送邮件 JavaMail 模版 20241128测试可用

配置授权码 依赖 <dependency><groupId>javax.mail</groupId><artifactId>javax.mail-api</artifactId><version>1.5.5</version> </dependency> <dependency><groupId>com.sun.mail</groupId><artifa…...

电脑中的vcruntime140_1.dll文件有问题要怎么解决?一键修复vcruntime140_1.dll

遇到“vcruntime140_1.dll无法继续执行代码”的错误通常表明电脑中的vcruntime140_1.dll文件有问题。这个文件属于Visual C Redistributable&#xff0c;对很多程序的运行至关重要。本文将提供几个步骤&#xff0c;帮助你迅速修复这一错误&#xff0c;使电脑恢复正常工作状态。…...

探索 Vue 3.0中Treeshaking特性?

Vue 3.0 中的 Tree Shaking 特性 Tree Shaking 是一种优化技术,旨在通过静态分析代码,去除未使用的模块或函数,从而减小最终的打包文件大小。在 Vue 3.0 中,由于其模块化设计和代码按需引入的特性,Vue 的 Tree Shaking 特性得到了增强,能够有效地去除那些在生产环境中未…...

Paddle Inference部署推理(十)

十&#xff1a;Paddle Inference推理 &#xff08;python&#xff09;API详解 9. 启用内存优化 API定义如下&#xff1a; # 开启内存 / 显存复用&#xff0c;具体降低内存效果取决于模型结构 # 参数&#xff1a;None # 返回&#xff1a;None paddle.inference.Config.enable…...

万能门店小程序管理系统 doPageGetFormList SQL注入漏洞复现

0x01 产品简介 万能门店小程序管理系统是一款功能强大的工具,旨在为各行业商家提供线上线下融合的全方位解决方案。是一个集成了会员管理和会员营销两大核心功能的综合性平台。它支持多行业使用,通过后台一键切换版本,满足不同行业商家的个性化需求。该系统采用轻量后台,搭…...

全面+彻底解决VMware安装后没有VMnet1和VMnet8的问题

目录 1、摘要 &#xff08;1&#xff09;问题 &#xff08;2&#xff09;所用工具 ① Everything软件 ② CCleaner软件 2、问题的检查与确认 3、解决过程 &#xff08;1&#xff09;卸载已经安装的VMware &#xff08;2&#xff09;设置services.mcs&#xff1a;服务自…...

什么是堆?

堆&#xff08;Heap&#xff09;&#xff1a;堆可以看做是一颗用数组实现的二叉树&#xff0c;所以它没有使用父指针或者子指针。堆根据“堆属性”来排序&#xff0c;“堆属性”决定了树中节点的位置。 堆的特性 1.堆是完全二叉树&#xff0c;除了树的最后一层节点不需要是满的…...

微距动物和植物摄影后期森系风格Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色教程 微距动物和植物摄影后期采用森系风格的 Lightroom 调色&#xff0c;将微距下的动植物世界打造成充满自然气息和梦幻感的画面。这种调色风格旨在突出动植物的细腻之美&#xff0c;同时营造出宁静、清新的森林氛围。 预设信息 调色风格&#xff1a;森系风格预设适合类…...

Qt6.8安卓Android开发环境配置

时隔多年&#xff0c;重拾QtCreator下Android开发。发现Qt6下安卓开发环境配置变简单不少&#xff01;只需三步即可在QtCreator下进行Android开发&#xff1a; 一、使用Qt Mantenance Tool进行Android模块的安装&#xff1a; 如果感觉安装网速较慢&#xff0c;可以查看本人另外…...

RK3568部署yolo8记录

本教程记录自己一下在RK3568上部署yolo8的步骤 板端驱动 在板端&#xff0c;首先查看rknpu驱动是否安装、存在。若键入下面的命令有返回则&#xff0c;证明驱动已安装。 dmesg | grep -i rknpu 瑞芯微官方说&#xff0c;驱动版本最好大于0.9.2。但是我看有的博主说&#xff…...

数据可视化复习2-绘制折线图+条形图(叠加条形图,并列条形图,水平条形图)+ 饼状图 + 直方图

目录 目录 一、绘制折线图 1.使用pyplot 2.使用numpy ​编辑 3.使用DataFrame ​编辑 二、绘制条形图&#xff08;柱状图&#xff09; 1.简单条形图 2.绘制叠加条形图 3.绘制并列条形图 4.水平条形图 ​编辑 三、绘制饼状图 四、绘制散点图和直方图 1.散点图 2…...

JavaScript原生深拷贝方法 structuredClone使用

structuredClone 简介 structuredClone 是现代浏览器提供的原生 JavaScript 方法&#xff0c;用于深拷贝对象。它可以处理各种复杂数据结构&#xff0c;包括嵌套对象、数组、Date、Map、Set 等&#xff0c;且支持循环引用。 语法 const clone structuredClone(value);value:…...

SpringBoot无法使用jkd8问题

1. 解决SpringBoot无法使用jdk8问题 创建一个高 jkd 版本&#xff0c;如 jkd21 在创建项目后&#xff0c;将 pom.xml中的 jdk 版本改为8&#xff0c;找到下图所在位置修改即可。 此外将 SpringBoot 的版本修改为 2 开头的 如2.7.4 &#xff0c;然后 刷新 Maven 项目即可。 在 …...

使用 Jina Embeddings v2 在 Elasticsearch 中进行后期分块

作者&#xff1a;来自 Elastic Gustavo Llermaly 在 Elasticsearch 中使用 Jina Embeddings v2 模型并探索长上下文嵌入模型的优缺点。 在本文中&#xff0c;我们将配置和使用 jina-embeddings-v2&#xff0c;这是第一个开源 8K 上下文长度嵌入模型&#xff0c;首先使用 semant…...

QT简易项目 数据库可视化界面 数据库编程SQLITE QT5.12.3环境 C++实现

案例需求&#xff1a; 完成数据库插入&#xff0c;删除&#xff0c;修改&#xff0c;查看操作。 分为 插入&#xff0c;删除&#xff0c;修改&#xff0c;查看&#xff0c;查询 几个模块。 代码&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget…...

python json.dump()和json.dumps()的区别

用人话总结一下 json.dump()是针对文件的json和python的转换 json.dumps()主要是针对内容数据 json.dumps(obj, skipkeysFalse, ensure_asciiTrue, check_circularTrue, allow_nanTrue, clsNone, indentNone, separatorsNone, encoding“utf-8”, defaultNone, sort_keysFalse…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统&#xff1a;AI驱动的职业规划平台技术解析 引言&#xff1a;数字时代的职业革命 在当今瞬息万变的就业市场中&#xff0c;传统的职业规划方法已无法满足个人和企业的需求。据统计&#xff0c;全球每年有超过2亿人面临职业转型困境&#xff0c;而企业也因此遭…...

React核心概念:State是什么?如何用useState管理组件自己的数据?

系列回顾&#xff1a; 在上一篇《React入门第一步》中&#xff0c;我们已经成功创建并运行了第一个React项目。我们学会了用Vite初始化项目&#xff0c;并修改了App.jsx组件&#xff0c;让页面显示出我们想要的文字。但是&#xff0c;那个页面是“死”的&#xff0c;它只是静态…...

FTXUI::Dom 模块

DOM 模块定义了分层的 FTXUI::Element 树&#xff0c;可用于构建复杂的终端界面&#xff0c;支持响应终端尺寸变化。 namespace ftxui {...// 定义文档 定义布局盒子 Element document vbox({// 设置文本 设置加粗 设置文本颜色text("The window") | bold | color(…...