实验4:nfs自动挂载实验
原理:当客户端有使用 NFS 文件系统的需求时才让系统自动挂载,而当 NFS 文件系统使用完毕后,让 NFS 自动卸载。
使用服务:nfs、autofs
实验演示:
需要完成自动挂载,必须使用两台虚拟机,一台做客户端,一台做服务端。
这里新建了一张网卡,使用新的网卡去完成该实验,而不使用Linux默认的网卡。
1.配置新网卡ip地址
查看ip,新网卡ens224初始没有ip,需要先配置ip
[root@localhost ~]# ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:65:cd:60 brd ff:ff:ff:ff:ff:ff
altname enp3s0
inet 192.168.116.130/24 brd 192.168.116.255 scope global dynamic noprefixroute ens160
valid_lft 1108sec preferred_lft 1108sec
inet6 fe80::20c:29ff:fe65:cd60/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens224: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:65:cd:6a brd ff:ff:ff:ff:ff:ff
altname enp19s0
这里将ip配置为1.1.1.1/24,再次查看ip后发现ens224已经配置上了1.1.1.1/24的ip
[root@localhost ~]# ip a a dev ens224 1.1.1.1/24
[root@localhost ~]# ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:65:cd:60 brd ff:ff:ff:ff:ff:ff
altname enp3s0
inet 192.168.116.130/24 brd 192.168.116.255 scope global dynamic noprefixroute ens160
valid_lft 1033sec preferred_lft 1033sec
inet6 fe80::20c:29ff:fe65:cd60/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens224: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:65:cd:6a brd ff:ff:ff:ff:ff:ff
altname enp19s0
inet 1.1.1.1/24 scope global ens224
valid_lft forever preferred_lft forever
两台虚拟机进行相同操作,另一台ens224配置为1.1.1.2/24的ip
[root@localhost ~]# ip a a dev ens224 1.1.1.2/24
[root@localhost ~]# ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:e7:3b:82 brd ff:ff:ff:ff:ff:ff
altname enp3s0
inet 192.168.116.133/24 brd 192.168.116.255 scope global dynamic noprefixroute ens160
valid_lft 933sec preferred_lft 933sec
inet6 fe80::20c:29ff:fee7:3b82/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens224: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:e7:3b:8c brd ff:ff:ff:ff:ff:ff
altname enp19s0
inet 1.1.1.2/24 scope global ens224
valid_lft forever preferred_lft forever
2.磁盘挂载
[root@localhost ~]# mount /dev/sr0 /mnt/
mount: /mnt: WARNING: source write-protected, mounted read-only.
3.安装nfs
可以查看所有nfs有关的软件包,找到所需要的
[root@localhost ~]# yum list | grep nfs
libnfsidmap.i686 1:2.5.4-20.el9 suibian-1
libnfsidmap.x86_64 1:2.5.4-20.el9 suibian-1
libstoragemgmt-nfs-plugin.x86_64 1.9.7-2.el9 suibian-2
nfs-utils.x86_64 1:2.5.4-20.el9 suibian-1
nfs-utils-coreos.x86_64 1:2.5.4-20.el9 suibian-2
nfs4-acl-tools.x86_64 0.4.2-2.el9 suibian-1
nfsv4-client-utils.x86_64 1:2.5.4-20.el9 suibian-2
pcp-pmda-nfsclient.x86_64 6.0.5-4.el9 suibian-2
sssd-nfs-idmap.x86_64 2.9.1-2.el9 suibian-1
texlive-mfnfss.noarch 9:20200406-26.el9 suibian-2
texlive-psnfss.noarch 9:20200406-26.el9 suibian-2
下载nfs-utils
[root@localhost ~]# yum -y install nfs-utils
正在更新 Subscription Management 软件仓库。
无法读取客户身份
本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。
上次元数据过期检查:0:01:23 前,执行于 2025年01月18日 星期六 10时27分21秒。
依赖关系解决。
================================================================================
软件包 架构 版本 仓库 大小
================================================================================
安装:
nfs-utils x86_64 1:2.5.4-20.el9 suibian-1 458 k
安装依赖关系:
gssproxy x86_64 0.8.4-6.el9 suibian-1 114 k
keyutils x86_64 1.6.3-1.el9 suibian-1 78 k
libev x86_64 4.33-5.el9 suibian-1 56 k
libnfsidmap x86_64 1:2.5.4-20.el9 suibian-1 66 k
libverto-libev x86_64 0.3.2-3.el9 suibian-1 15 k
rpcbind x86_64 1.2.6-5.el9 suibian-1 62 k
sssd-nfs-idmap x86_64 2.9.1-2.el9 suibian-1 45 k
事务概要
================================================================================
安装 8 软件包
总计:893 k
安装大小:2.1 M
下载软件包:
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
准备中 : 1/1
安装 : libnfsidmap-1:2.5.4-20.el9.x86_64 1/8
运行脚本: rpcbind-1.2.6-5.el9.x86_64 2/8
安装 : rpcbind-1.2.6-5.el9.x86_64 2/8
运行脚本: rpcbind-1.2.6-5.el9.x86_64 2/8
Created symlink /etc/systemd/system/multi-user.target.wants/rpcbind.service → /usr/lib/systemd/system/rpcbind.service.
Created symlink /etc/systemd/system/sockets.target.wants/rpcbind.socket → /usr/lib/systemd/system/rpcbind.socket.
安装 : libev-4.33-5.el9.x86_64 3/8
安装 : libverto-libev-0.3.2-3.el9.x86_64 4/8
安装 : gssproxy-0.8.4-6.el9.x86_64 5/8
运行脚本: gssproxy-0.8.4-6.el9.x86_64 5/8
安装 : keyutils-1.6.3-1.el9.x86_64 6/8
运行脚本: nfs-utils-1:2.5.4-20.el9.x86_64 7/8
安装 : nfs-utils-1:2.5.4-20.el9.x86_64 7/8
运行脚本: nfs-utils-1:2.5.4-20.el9.x86_64 7/8
安装 : sssd-nfs-idmap-2.9.1-2.el9.x86_64 8/8
运行脚本: sssd-nfs-idmap-2.9.1-2.el9.x86_64 8/8
验证 : gssproxy-0.8.4-6.el9.x86_64 1/8
验证 : keyutils-1.6.3-1.el9.x86_64 2/8
验证 : libev-4.33-5.el9.x86_64 3/8
验证 : libnfsidmap-1:2.5.4-20.el9.x86_64 4/8
验证 : libverto-libev-0.3.2-3.el9.x86_64 5/8
验证 : nfs-utils-1:2.5.4-20.el9.x86_64 6/8
验证 : rpcbind-1.2.6-5.el9.x86_64 7/8
验证 : sssd-nfs-idmap-2.9.1-2.el9.x86_64 8/8
已更新安装的产品。
已安装:
gssproxy-0.8.4-6.el9.x86_64 keyutils-1.6.3-1.el9.x86_64
libev-4.33-5.el9.x86_64 libnfsidmap-1:2.5.4-20.el9.x86_64
libverto-libev-0.3.2-3.el9.x86_64 nfs-utils-1:2.5.4-20.el9.x86_64
rpcbind-1.2.6-5.el9.x86_64 sssd-nfs-idmap-2.9.1-2.el9.x86_64
完毕!
4.配置文件(服务端操作)
在 /目录下创建一个共享目录
[root@localhost ~]# cd /
[root@localhost /]# ls
afs boot etc lib media mnt nfs_share proc run srv tmp var
bin dev home lib64 misc net opt root sbin sys usr
[root@localhost /]# mkdir /rhel8test
[root@localhost /]# ls
afs boot etc lib media mnt nfs_share proc root sbin sys usr
bin dev home lib64 misc net opt rhel8test run srv tmp var
编写配置文件,在/etc/exports下,初始为空。
[root@localhost /]# vim /etc/exports
/rhel8test *(rw)
共享目录 共享给谁(共享参数)
[root@localhost /]# cat /etc/exports
/rhel8test *(rw)
启动服务并验证
[root@localhost /]# systemctl start nfs-server.service
[root@localhost /]# rpcinfo -p | grep nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
验证nfs是否设置成功
[root@localhost /]# showmount -e 1.1.1.1
Export list for 1.1.1.1:
/rhel8test *
关闭服务端防火墙和selinux
[root@localhost /]# systemctl stop firewalld.service
[root@localhost /]# setenforce 0
[root@localhost /]# getenforce
Permissive
5.客户端操作
下载nfs-utils并启动,关闭客户端防火墙和selinux,操作同上
在客户端进行挂载
[root@localhost ~]# showmount -e 1.1.1.1
Export list for 1.1.1.1:
/rhel8test *
[root@localhost ~]# mount 1.1.1.1:/rhel8test /mnt/
[root@localhost ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 4096 0 4096 0% /dev
tmpfs 886588 0 886588 0% /dev/shm
tmpfs 354636 7324 347312 3% /run
/dev/mapper/rhel-root 17141760 4402048 12739712 26% /
/dev/nvme0n1p2 983040 298280 684760 31% /boot
/dev/nvme0n1p1 613184 7140 606044 2% /boot/efi
tmpfs 177316 96 177220 1% /run/user/0
/dev/sr0 10281784 10281784 0 100% /run/media/root/RHEL-9-3-0-BaseOS-x86_64
1.1.1.1:/rhel8test 17141760 4402176 12739584 26% /mnt
服务端客户端之间相互验证
#服务端进到共享目录下,创建一个aa文件
[root@localhost /]# cd /rhel8test/
[root@localhost rhel8test]# touch aa
#客户端进到挂载的目录下,可以看到在服务端创建的aa目录
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
aa
#客户端由于权限原因无法直接创建目录,需要在服务端下修改成777的权限
[root@localhost rhel8test]# cd ..
[root@localhost /]# chmod 777 rhel8test/
#修改之后客户端再创建一个aaaa的目录,这时就可以成功创建
[root@localhost mnt]# touch aaaa
[root@localhost mnt]# ls
aa aaaa
#服务端查看可以查看到在客户端创建的aaaa目录
[root@localhost rhel8test]# ls
aa aaaa
6.客户端安装autofs
[root@localhost mnt]# yum -y install autofs.x86_64
正在更新 Subscription Management 软件仓库。
无法读取客户身份
本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。
上次元数据过期检查:11:26:26 前,执行于 2025年01月17日 星期五 23时26分28秒。
软件包 autofs-1:5.1.7-55.el9.x86_64 已安装。
依赖关系解决。
无需任何处理。
完毕!
7.修改autofs的配置文件
[root@localhost mnt]# vim /etc/auto.master
/rhel8test /etc/auto.rhel8test
[root@localhost mnt]# vim /etc/auto.rhel8test
root -rw 1.1.1.1:/rhel8test
[root@localhost root]# cat /etc/auto.rhel8test
root -rw 1.1.1.1:/rhel8test
8.解挂之前挂载的并重启autofs服务
[root@localhost mnt]# umount -l /mnt
[root@localhost mnt]# df
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 4096 0 4096 0% /dev
tmpfs 886588 0 886588 0% /dev/shm
tmpfs 354636 7332 347304 3% /run
/dev/mapper/rhel-root 17141760 4402172 12739588 26% /
/dev/nvme0n1p2 983040 298280 684760 31% /boot
/dev/nvme0n1p1 613184 7140 606044 2% /boot/efi
tmpfs 177316 96 177220 1% /run/user/0
/dev/sr0 10281784 10281784 0 100% /mnt
[root@localhost mnt]# systemctl restart autofs.service
9.实现自动挂载
本身rhel8test目录是空的,但在输入root之后是可以进去的,意味着已经成功执行挂载了
[root@localhost /]# cd rhel8test/
[root@localhost rhel8test]# ls
[root@localhost rhel8test]# root
bash: root: command not found...
[root@localhost rhel8test]# cd root
[root@localhost root]# ls
aa aaaa
[root@localhost root]# df
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 4096 0 4096 0% /dev
tmpfs 886588 0 886588 0% /dev/shm
tmpfs 354636 7328 347308 3% /run
/dev/mapper/rhel-root 17141760 4402176 12739584 26% /
/dev/nvme0n1p2 983040 298280 684760 31% /boot
/dev/nvme0n1p1 613184 7140 606044 2% /boot/efi
tmpfs 177316 96 177220 1% /run/user/0
/dev/sr0 10281784 10281784 0 100% /mnt
1.1.1.1:/rhel8test 17141760 4402176 12739584 26% /rhel8test/root
#最后一行是通过autofs进行挂载上的
以上操作完成实验,实现了nfs的自动挂载。