RHCE9学习指南 第16章 访问NFS存储及自动挂载

16.1 访问NFS存储

前面介绍了使用本地存储,本章介绍使用网络上的存储设备。NFS全称是网络文件系统,所实现的是Linux和Linux之间的共享。
下面的练习我们将会在server上创建一个文件夹/share,然后通过NFS把它共享,然后在server2上把这个共享文件夹挂载到/nfs上,如图16-1所示。
file
图16-1 本实验拓扑图
首先在srever上启动nfs-server服务并设置开启自动启动,命令如下。

[root@server ~]# systemctl enable nfs-server --now
Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.
[root@server ~]#

创建准备共享的目录/share,命令如下。

[root@server ~]# mkdir /share
[root@server ~]#

在/etc/exports中把目录/share共享出去,命令如下。

[root@server ~]# cat /etc/exports
/share	*(rw,no_root_squash)
[root@server ~]#

这里*的意思是表示任何客户端都可以访问/share目录。
让共享生效,命令如下。

[root@server ~]# exportfs -arv
exporting *:/share
[root@server ~]# 

在server上配置防火墙放行nfs,命令如下。

[root@server ~]# firewall-cmd --add-service=nfs --permanent 
success
[root@server ~]# firewall-cmd --add-service=rpc-bind --permanent 
success
[root@server ~]# firewall-cmd --add-service=mountd --permanent 
success
[root@server ~]# firewall-cmd  --reload
success
[root@server ~]# 

关于防火墙的配置在后续会有专门章节讲解。
在server2上访问这个共享文件夹,首先使用showmount查看服务器上共享的目录,命令如下。

[root@server2 ~]# showmount -e 192.168.26.101
Export list for 192.168.26.101:
/share *
[root@server2 ~]#

把服务器上共享的目录挂载到本地/nfs目录上,命令如下。

[root@server2 ~]# mount 192.168.26.101:/share /nfs
[root@server2 ~]#

查看挂载情况,命令如下。

[root@server2 ~]# df -hT | grep nfs
192.168.26.101:/share nfs4       50G  5.0G   46G   10% /nfs
[root@server2 ~]#

这里可以看到,已经挂载好了。
如果希望开机能够自动挂载,则写入/etc/fstab中,命令如下。

[root@server2 ~]# tail -1 /etc/fstab
192.168.26.101:/share	/nfs	nfs	 defaults	0 0
[root@server2 ~]#

16.2 自动挂载

自动挂载的意思是,把一个外部设备/dev/xx和某个目录/dir/yy关联起来。平时/dev/xx是否挂载到了/dir/yy上不需要考虑,但访问/dir/yy时,系统就知道要访问设置/dev/xx中的数据,这个时候系统会自动地将/dev/xx挂载到/dir/yy上。
安装软件包的步骤如下。
步骤1:挂载光盘,命令如下。

[root@server2 ~]# mount /dev/cdrom /mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@server ~]#

这里准备把光盘作为yum源。
步骤2:编写repo文件,命令如下。

[root@server2 ~]# cat /etc/yum.repos.d/aa.repo 
[aa]
name=aa
baseurl=file:///mnt/AppStream
enabled=1
gpgcheck=0

[bb]
name=bb
baseurl=file:///mnt/BaseOS
enabled=1
gpgcheck=0
[root@server ~]#

开始安装autofs,命令如下。

[root@server2 ~]# yum install autofs -y
Updating Subscription Management repositories.
	...输出...
已安装:
  autofs-1:5.1.7-27.el9.x86_64 
完毕!
[root@server2 ~]#

启动autofs并设置开机自动启动,命令如下。

[root@server2 ~]# systemctl enable autofs --now
Created symlink /etc/systemd/system/multi-user.target.wants/autofs.service → /usr/lib/systemd/system/autofs.service.
[root@server2 ~]#

下面练习把光盘自动挂载到/zz/dvd上,先把/zz创建出来,命令如下。

[root@server2 ~]# mkdir /zz
[root@server2 ~]#

记住这里不需要创建目录/zz/dvd,这个目录会自动创建。
在/etc/auto.master.d/目录中创建一个后缀为autofs的文件,后缀必须是autofs,这里创建的是aa.autofs,命令如下。

[root@server2 ~]# cat /etc/auto.master.d/aa.autofs
/zz	/etc/auto.aa
[root@server2 ~]# 

这里的意思是把哪个外部设备挂载到/zz的哪个子目录中由/etc/auto.aa决定,注意:内容使用tab进行分隔,一个或者多个tab键都可以,但不要使用空格。下面创建/etc/auto.aa,命令如下。

[root@server2 ~]# cat /etc/auto.aa 
dvd	-fstype=iso9660,ro	:/dev/cdrom
[root@server2 ~]#

这个文件的格式如下。
子目录 -fstype=文件系统,选项1,选项2 :外部设备
这里外部设备如果是本地磁盘或光盘,冒号前面保持为空,但是冒号不能省略。如果是其他机器上共享的目录,则写远端的IP。
结合/etc/auto.master.d/aa.autofs整体的意思是,当访问/zz/dvd时,系统会自动把/dev/cdrom挂载到/zz/dvd上。
重启autofs服务,让我们刚做的配置生效,命令如下。

[root@server2 ~]# systemctl restart autofs
[root@server2 ~]# 

确认现在光盘是没有挂载到/zz/dvd上的,而且/zz目录中也没有dvd目录,命令如下。

[root@server2 ~]# mount | grep -v auto | grep zz 
[root@server2 ~]# ls /zz
[root@server2 ~]#

下面我们访问/zz/dvd,命令如下。

[root@server2 ~]# ls /zz/dvd
AppStream  EFI  extra_files.json  images  media.repo  RPM-GPG-KEY-redhat-release           
BaseOS     EULA  GPL    isolinux  RPM-GPG-KEY-redhat-beta  TRANS.TBL
[root@server2 ~]#

因为访问这个目录时能触发自动挂载,系统自动创建/zz/dvd并把/dev/cdrom挂载到这个目录,再次验证挂载情况,命令如下。

[root@server2 ~]# mount | grep -v auto | grep zz 
/dev/sr0 on /zz/dvd type iso9660 (ro,relatime,nojoliet,check=s,map=n,blocksize=2048)
[root@server2 ~]#

可以看到,现在已经挂载上去了。
练习:
下面练习自动挂载NFS共享文件夹。整个实验思路如下。
在server上创建一个用户mary,家目录指定为/rhome/mary。在server2上也创建一个用户mary,家目录也指定为/rhome/mary,但是server2上mary并不把这个家目录创建出来,如图16-2所示。
file
图16-2 自动挂载实验拓扑图
通过NFS把server上的/rhome共享出去,在server2上配置autofs,把192.168.26.101上的/rhome/mary关联到server2上的/rhome/mary中。
这样当server2上使用mary登录时会自动登录到/rhome/mary,这样就会触发autofs自动把192.168.26.101:/rhome/mary挂载到server2的/rhome/mary目录上,这样server2上的mary也就有了家目录。

在server上创建/rhome目录,然后创建用户mary,家目录设置为/rhome/mary,用户的uid设置为3001,命令如下。

[root@server ~]# mkdir /rhome
[root@server ~]# useradd -u 3001 -d /rhome/mary mary
[root@server ~]# echo haha001 | passwd --stdin mary
更改用户 mary 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@server ~]# 
[root@server ~]# ls /rhome/
mary
[root@server ~]#

此时在server上mary用户就创建好了,且mary的家目录也是存在的。

在server2上创建/rhome目录,然后创建用户mary,家目录设置为/rhome/mary。因为指定了-M选项,这个目录并没有被创建,用户的uid设置为3001,记住必须要保持和server上的mary具有相同的uid,命令如下。

[root@server2 ~]# mkdir /rhome
[root@server2 ~]# useradd -u 3001 -d /rhome/mary -M  mary
[root@server2 ~]# echo haha001 | passwd --stdin mary
更改用户 mary 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@server2 ~]# ls /rhome/
[root@server2 ~]# 

这里可以看到,mary的家目录/rhome/mary并没有被创建出来。
在server2上切换到mary用户,命令如下。

[root@server2 ~]# su - mary
su: 警告:无法更改到 /rhome/mary 目录: 没有那个文件或目录
[mary@server2 root]$ exit
注销
[root@server2 ~]#

在server2上因为没有mary没有家目录,所以会出现上述警告信息,exit退回到root用户。
在server上通过NFS把/rhome共享出去,编辑/etc/exports内容如下。

[root@server ~]# cat /etc/exports
/share	*(rw,no_root_squash)
/rhome	*(rw,no_root_squash)
[root@server ~]#

这样就把/rhome共享出去了,然后让此共享生效。

[root@server ~]# exportfs -arv
exporting *:/rhome
exporting *:/share
[root@server ~]# 

切换到server2上开始配置autofs,创建/etc/auto.master.d/bb.autofs,内容如下。

[root@server2 ~]# cat /etc/auto.master.d/bb.autofs 
/rhome	/etc/auto.bb
[root@server2 ~]#

到底把哪个外部设备挂载到/rhome下的哪个子目录中由/etc/auto.bb决定。
下面创建/etc/auto.bb,内容如下。

[root@server2 ~]# cat /etc/auto.bb
mary	-fstype=nfs,rw	192.168.26.101:/rhome/mary
[root@server2 ~]#

结合/etc/auto.master.d/bb.autofs整体的意思是,当访问/rhome/mary时,会自动的把192.168.26.101:/rhome/mary挂载到server2上的/rhome/mary目录上。
重启autofs,命令如下。

[root@server2 ~]# systemctl restart autofs
[root@server2 ~]# 

确认现在/rhome/mary是没有挂载任何东西的,命令如下。

[root@server2 ~]# mount | grep -v auto | grep rhome
[root@server2 ~]# 

下面在server2上切换到mary上,记住通过su - mary不是通过su mary,命令如下。

[root@server2 ~]# su - mary
[mary@server2 ~]$ pwd
/rhome/mary
[mary@server2 ~]$ exit
注销
[root@server2 ~]# 

我们知道 su - mary,用户切换到mary的同时也会切换到mary的家目录,这样会触发autofs,再次查看挂载情况,命令如下。

[root@server2 ~]# mount | grep -v auto | grep rhome
192.168.26.101:/rhome/mary on /rhome/mary type nfs4 (rw,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.26.102,local_lock=none,addr=192.168.26.101)
[root@server2 ~]#

这里可以看到,已经顺利挂载了。

作业:

作业1.在server上创建三个用户用户,满足如下要求:
1.user1,家目录为/rhome/user1,uid为4001。
2.user2,家目录为/rhome/user2,uid为4002。
3.user3,家目录为/rhome/user3,uid为4003。
密码分别设置为haha001。
答案:
先按题目要求把这三个用户创建出来,命令如下。

[root@server ~]# useradd -d /rhome/user1 -u 4001 user1
[root@server ~]# useradd -d /rhome/user2 -u 4002 user2
[root@server ~]# useradd -d /rhome/user3 -u 4003 user3
[root@server ~]# 

为这三个用户分别设置为密码为haha001。

[root@server ~]# echo "user1:haha001" | chpasswd
[root@server ~]# echo "user2:haha001" | chpasswd
[root@server ~]# echo "user3:haha001" | chpasswd
[root@server ~]#

检测这三个用户的家目录也是创建出来了的,命令如下。

[root@server ~]# ls /rhome/
mary  user1  user2  user3
[root@server ~]#

作业2.在server2上创建三个用户用户,满足如下要求:
1.user1,家目录为/rhome/user1,uid为4001。
2.user2,家目录为/rhome/user2,uid为4002。
3.user3,家目录为/rhome/user3,uid为4003。
密码分别设置为haha001,但是在server2上并不把这3个用户的家目录创建出来。

答案:
按题目要求把三个用户创建出来,命令如下。

[root@server2 ~]# useradd -d /rhome/user1 -u 4001 -M user1
[root@server2 ~]# useradd -d /rhome/user2 -u 4002 -M user2
[root@server2 ~]# useradd -d /rhome/user3 -u 4003 -M user3
[root@server2 ~]#

这里加上-M选项指的是不创建家目录。
为这3个用户设置密码为haha001。

[root@server2 ~]# echo "user1:haha001" | chpasswd
[root@server2 ~]# echo "user2:haha001" | chpasswd
[root@server2 ~]# echo "user3:haha001" | chpasswd
[root@server2 ~]#

测试这3个用户现在是没有家目录的,命令如下。

[root@server2 ~]# ls /rhome/
mary
[root@server2 ~]#

在/rhome下并没有user1、user2、user3这3个目录。

[root@server2 ~]# su - user1
su: 警告:无法更改到 /rhome/user1 目录: 没有那个文件或目录
[user1@server2 root]$ exit
注销
[root@server2 ~]#

因为user1并不存在家目录/rhome/user1所以通过su - user1切换到user1的时候会有警告信息。
作业3.在server2上配置自动挂载autofs,使得在server2上执行下面命令时:
执行su - user1时自动创建把server上的/rhome/user1挂载到/rhome/user1上
执行su - user2时自动创建把server上的/rhome/user2挂载到/rhome/user2上
执行su - user3时自动创建把server上的/rhome/user3挂载到/rhome/user3上

答案:
在章节16.2里server2已经安装过软件包autofs了,如果没有请自行安装。

创建/etc/auto.master.d/bb.autofs内容如下。
[root@server2 ~]# cat /etc/auto.master.d/bb.autofs
/rhome		/etc/auto.bb
[root@server2 ~]#

注意,此文件的后缀要为autofs,内容以隔开。
创建文件/etc/auto.bb内容如下。

[root@server2 ~]# cat /etc/auto.bb
user1              -fstype=nfs,rw	192.168.26.101:/rhome/user1
user2              -fstype=nfs,rw	192.168.26.101:/rhome/user2
user3              -fstype=nfs,rw	192.168.26.101:/rhome/user3
[root@server2 ~]#

注意此文件的内容不必以作为分隔符。看这个文件的结构,每行第一部分如果是user1,则最后也是user1,第一部分是user2则最后也是user2。可以看出每行的最后一部分是和第一部分是一样的,所以/etc/auto.bb的内容也可以写成如下内容。

cat /etc/auto.bb
*              -fstype=nfs,rw	192.168.26.101:/rhome/&

这里第一列的符号匹配任何字符,不管是user1、user2、user3都能匹配,最后的符号&表示和第一列的符号保持相同的内容,即*匹配了user1,则&就是user1的意思。
然后重启autofs,命令如下。

[root@server2 ~]# systemctl restart autofs
[root@server2 ~]#

再次执行命令su - user1,结果如下。

[root@server2 ~]# su - user1
[user1@server2 ~]$ pwd
/rhome/user1
[user1@server2 ~]$ exit
注销
[root@server2 ~]#

可以看到此时没有出现刚才的警告信息了,说明已经正确的挂载了,使用如下命令检查。

[root@server2 ~]# mount | grep -v auto | grep user1
192.168.26.101:/rhome/user1 on /rhome/user1 type nfs4 (rw,relatime,vers=4.2,...输出...)
[root@server2 ~]#

也可能看到此时已经正确的挂载了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/303606.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LUT预设.cube格式PR/达芬奇/FCP/剪映等视频电影调色预设LUTs

对于将标准镜头转换为让人想起高端电影的视觉冲击场景至关重要。这些LUT经过专业设计,以模仿电影行业中的电影质量、深度和情感,使其成为电影制作人、摄像师和内容创作者的理想选择,希望为你的作品带来专业的电影色彩。 电影LUT的类别&#…

鸿蒙系统应用开发之开发准备

今天我们来聊一聊鸿蒙系统应用开发之前,要做什么准备工作,如下图所示,我们要做的就是安装DevEco Studio,然后配置开发环境。 老规矩,拍拍手👏,上菜。 安装DevEco Studio 首先我们打开链接HUAWEI…

学习笔记 | Activiti7

什么是工作流? 业务流程。 举个例子: 假设有一个在线博客平台,我们要让一篇新的文章从作者的头脑里发表出来。整个过程可以分为以下几个步骤: 创建文章草稿 :作者登录博客平台,点击“写新文章”的按钮&#xff0c…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)HttpResponse的定义和初始化 以及组织 HttpResponse 响应消息

一、HttpResponse的定义 1.定义状态码枚举 // 定义状态码枚举 enum HttpStatusCode {Unknown 0,OK 200,MovedPermanently 301,MovedTemporarily 302,BadRequest 400,NotFound 404 }; 2.HTTP 响应报文格式 这个数据块主要是分为四部分 第一部分是状态行第二部分是响应…

docker swarm 常用命令简介以及使用案例

docker swarm Docker Swarm 是Docker官⽅的跨节点的容器编排⼯具。⽤户只需要在单⼀的管理节点上操作,即可管理集群下的所有节点和容器 解决的问题 解决docker server的集群化管理和部署Swarm通过对Docker宿主机上添加的标签信息来将宿主机资源进⾏细粒度分区&am…

vue-cli项目优化gzip实践

背景:某天测试小妹气冲冲跑过来说你的网站首次打开平均16秒,慢得不行啊,空白时间太久,这样客户是不收货的,必须优化。谁叫我们是以测试驱动开发的,测试妹子的话等同与老板的命令。 空白是吧,我…

[Kubernetes]4. 借助腾讯云TKE快速创建Pod、Deployment、Service部署k8s项目

前面讲解了通过命令行方式来部署k8s项目,下面来讲讲通过腾讯云TKE来快速创建Pod、Deployment、Service部署k8s项目,云平台搭建Kubernetes可参考[Kubernetes]1.Kubernetes(K8S)介绍,基于腾讯云的K8S环境搭建集群以及裸机搭建K8S集群 一.通过腾讯云TKE创建集群 1.创建集群 参考上…

群辉安装gitea

群辉安装gitea 安装giteagitea容器配置 安装gitea gitea容器配置

【Internal Server Error】pycharm解决关闭flask端口依然占用问题

Internal Server Error The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application. 起因: 我们在运行flask后,断开服务依然保持运行&#xff0…

Meta的Fairy:快速并行化指令引导的视频到视频合成

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

vue3 封装一个Tooltip 文字提示组件

效果图 默认展示icon图标&#xff0c;悬浮展示文字 如果slot有内容则展示对应内容 实现 用的是El-Tooltip组件 Element - The worlds most popular Vue UI framework 组件代码 <script setup lang"ts"> import { Icon } from /components/Icon import { ElTo…

python统计分析——直方图(sns.histplot)

使用seanborn.histplot()函数绘制直方图 from matplotlib.pyplot as plt import seaborn as snsdata_setnp.array([2,3,3,4,4,4,4,5,5,6]) plt.hist(fish_data) &#xff08;1&#xff09;dataNone, 表示数据源。 &#xff08;2&#xff09;xNone, 表示直方图的分布垂直与x轴…

Java开发+Intellij-idea+Maven+工程构建

Java开发Intellij-ideaMaven工程构建 Intellij-idea是一款流行的Java集成开发环境&#xff0c;它支持Maven作为项目管理和构建工具。Maven可以帮助开发者自动下载项目依赖的jar包&#xff0c;执行编译、测试、打包等生命周期任务。本资源将介绍如何在Intellij-idea中创建、导入…

web提示框属性的运用

效果展示&#xff1a; 注意事项&#xff1a; 引用JQuery文件地址和图片地址要更换一下。提示框属性的宽应该和图片的宽保持一致。 html/css/javascript页面代码&#xff1a; <!doctype html> <html> <head> <meta charset"utf-8"> <tit…

【Python学习】Python学习8-Number

目录 【Python学习】Python学习8-Number 前言在变量赋值时被创建Python支持四种不同的数据类型整型(Int)长整型(long integers&#xff09;浮点型(loating point real values)复数(complex numbers) Python Number 类型转换Python math 模块、cmath 模块Python数学函数Python随…

【现代密码学】笔记2 -- 完善保密性《introduction to modern cryphtography》现代密码学原理与协议

【现代密码学】笔记2--完善保密性《introduction to modern cryphtography》 写在最前面2 完善保密性的介绍2.1 定义和基本属性加密方案的组成密钥产生算法 (Gen)加密算法 (Enc)解密算法 (Dec)概率分布独立性 完美保密加密3. 回顾加密词法4. 完美保密&#xff08;**Perfect Sec…

芯课堂 | 如何配置SWM系列系统时钟?

如何配置SWM系列 系统时钟&#xff1f; 华芯微特科技有限公司SWM系列芯片可通过软件配置改变时钟的速度&#xff0c;可以让我们的设计更加灵活,频率可选空间也更加广泛&#xff0c;用户可以根据自己的实际需求配置需要的系统时钟。为了让用户能够更简单的使用这一功能&#xf…

进阶分布式链路追踪

另外我的新书RocketMQ消息中间件实战派上下册&#xff0c;在京东已经上架啦&#xff0c;目前都是5折&#xff0c;非常的实惠。 https://item.jd.com/14337086.html​编辑https://item.jd.com/14337086.html “RocketMQ消息中间件实战派上下册”是我既“Spring Cloud Alibaba微…

Linux:进程的通信

目录 进程间的通信 管道 1.概念 2.匿名管道 3.命名管道 4.匿名管道与命名管道的区别 5.总结管道的特点 共享内存 1.原理 2.共享内存的建立 3.代码 1.相关函数 2.总结 进程间的通信 1.进程间通信目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程…

服务器宕机怎么办?怎么预防宕机?

相信不少用户会听到或者在文章中提到电脑宕机或者服务器宕机&#xff0c;不少用户对宕机的意思不太理解。那么服务器宕机是什么意思&#xff1f; 宕机属于计算机的术语&#xff0c;指电脑或者服务器不能正常工作。口语中我们简单的把停掉机器叫做down机&#xff0c;转换为汉字是…