Linux---访问NFS存储及自动挂载

本章主要介绍NFS客户端的使用

  • 创建NFS服务器并通过NFS共享一个目录
  • 在客户端上访问NFS共享的目录
  • 自动挂载的配置和使用

访问NFS存储 

  前面介绍了本地存储,本章就来介绍如何使用网络上的存储设备。NFS即网络文件系统, 所实现的是 Linux 和 Linux 之间的共享。

  下面的练习我们将会在rhel03上创建一个文件夹/share,然后通过NFS把它共享,再在rhel04上把这个共享文件夹挂载到/nfs上,如下图所示。 

首先在rhel03上启动nfs-server 服务并设置开启自动启动,命令如下。 

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

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

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

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

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

这里*的意思是表示任何客户端都可以访问/share目录。 

让共享生效,命令如下。 

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

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

[root@rhel03 ~]# firewall-cmd --add-service=nfs --permanent 
success
[root@rhel03 ~]# firewall-cmd --add-service=rpc-bind --permanent 
success
[root@rhel03 ~]# firewall-cmd --add-service=mountd --permanent 
success
[root@rhel03 ~]# firewall-cmd --reload 
success
[root@rhel03 ~]# firewall-cmd --list-services 
cockpit dhcpv6-client mountd nfs rpc-bind ssh
[root@rhel03 ~]#

关于防火墙的配置,后续会有专门章节讲解。 

  在rhel04上访问这个共享文件夹,首先使用show mount命令查看服务器上共享的目录,命今如下。 

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

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

[root@rhel04 ~]# mkdir /nfs
[root@rhel04 ~]# mount 192.168.23.33:/share /nfs
[root@rhel04 ~]# 

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

[root@rhel04 ~]# df -Th | grep nfs
192.168.23.33:/share nfs4       98G   12G   87G   12% /nfs
[root@rhel04 ~]# 

可以看到,已经挂载好了。

如果希望开机能够自动挂载,则写入/etc/fstab中,命令如下。 

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

自动挂载 

  自动挂载的意思是,把一个外部设备/dev/xx和某个目录/dir/yy关联起来。平时/dev/xx 是否挂载到了/dir/yy 上不需要考虑,但访问 /dir/yy时,系统就知道要访问 /dev/xx中的数据,这个时候系统会自动将/dev/xx挂载到/dir/yy上。

安装软件包的步骤如下。

  • 挂载光盘,命令如下。 
[root@rhel03 ~]# mount /dev/cdrom /mnt/
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@rhel03 ~]# 

这里准备把光盘作为yum源。 

  • 编写repo文件,命令如下。 
[root@rhel03 ~]# 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@rhel03 ~]# 
  • 开始安装autofs,命令如下。 
[root@rhel03 ~]# yum -y install autofs
正在更新 Subscription Management 软件仓库。
无法读取客户身份本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。上次元数据过期检查:0:02:16 前,执行于 2023年12月07日 星期四 06时16分07秒。
依赖关系解决。
======================================================================================================================================软件包                        架构                          版本                                     仓库                       大小
======================================================================================================================================
安装:autofs                        x86_64                        1:5.1.4-74.el8                           bb                        706 k事务概要
======================================================================================================================================
安装  1 软件包总计:706 k
安装大小:2.8 M
下载软件包:
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务准备中  :                                                                                                                       1/1 安装    : autofs-1:5.1.4-74.el8.x86_64                                                                                          1/1 运行脚本: autofs-1:5.1.4-74.el8.x86_64                                                                                          1/1 验证    : autofs-1:5.1.4-74.el8.x86_64                                                                                          1/1 
已更新安装的产品。已安装:autofs-1:5.1.4-74.el8.x86_64                                                                                                        完毕!
[root@rhel03 ~]# 

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

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

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

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

记住,这里不需要创建目录/zz/dvd,这个目录会自动创建。 

  在/etc/auto.master.d目录中创建一个后缀为 autofs的文件,后缀必须是autofs,这里创建的是aa.autofs,命令如下。 

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

  这里的意思是把哪个外部设备挂载到/zz的哪个子目录上由/etc/auto.aa决定,内容使用 【Tab】键进行分隔。下面创建/etc/auto.aa,命令如下。 

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

注意:上面的命令中,dvd和-fstype之间有一个【Tab】键,ro和后面的冒号之间有一个【Tab】键。 

这个文件的格式如下。

  • 子目录 ‐fstype= 文件系统,选项1,选项2 :外部设备 

  这里外部设备如果是本地磁盘或光盘,冒号前面保持为空,但是冒号不能省略。如果是其他机器上共享的目录,则写远端的IP。 

  结合/etc/auto.master.d/aa.autofs整体的意思是,当访问/zz/dvd时,系统会自动把/dev/cdrom挂载到/zz/dvd 上。 

重启autofs服务,让我们刚做的配置生效,命令如下。 

[root@rhel03 ~]# systemctl restart autofs.service 
[root@rhel03 ~]#

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

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

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

[root@rhel03 ~]# 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@rhel03 ~]# 

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

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

可以看到,现在已经挂载上去了。 

练习:下面练习自动挂载NFS共享文件夹,整个实验思路如下。 

在rhel03上创建一个用户mary,家目录指定为/rhome/mary。在rhel04上也创建一个 用户mary,家目录也指定为/rhome/mary,但是rhel04上的mary并不把这个家目录创建出来,如下图所示。

 左边是rhel03-192.168.23.33,右边是rhel04-192.168.23.34

  通过NFS把rhel03上的/rhome共享出去,在rhel04上配置 autofs,把192.168.23.33上 的/rhome/mary关联到rhel04上的/rhome/mary中。 

  当在rhel04上使用mary登录时会自动登录到/rhome/mary,就会触发autofs自动把 192.168.23.33:/rhome/mary挂载到rhel04上的/rhome/mary目录上,这样rhel04的mary也就有了家目录。 

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

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

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

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

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

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

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

在rhel04上因为mary没有家目录,所以会出现上述警告信息,输入“exit”退回到root 用户。 

在rhel03上通过NFS把/rhome共享出去,编辑/etc/exports内容如下。 

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

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

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

切换到rhel04上开始配置autofs,创建/etc/auto.master.d/bb.autofs,内容如下。 (rhel04安装autofs根据前面内容安装即可)

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

到底把哪个外部设备挂载到/rhome的哪个子目录上由/etc/auto.bb决定。 

下面创建/etc/auto.bb,内容如下。 

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

结合/etc/auto.master.d/bb.autofs整体的意思是,当访问/rhome/mary时,系统会自动把192.168.23.33:/rhome/mary挂载到rhel04的/rhome/mary目录上。

重启autofs,命令如下。 

[root@rhel04 ~]# systemctl restart autofs.service 
[root@rhel04 ~]# 

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

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

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

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

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

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

 可以看到,已经成功挂载了。 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

易点易动:颠覆固定资产用量管理,实现高效精准的企业固定资产管理

固定资产用量管理是企业日常运营中不可或缺的一环。然而,传统的人工管理方式面临着时间成本高、数据不准确、难以监控等问题。为了解决这些挑战,易点易动应运而生,它是一款先进的资产管理系统,能够帮助企业实现高效精准的固定资产…

案例054:基于微信的追星小程序

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

linux的权限741

741权限 在 Linux 中,文件和目录的权限由三组权限来定义,分别是所有者(Owner)、所属组(Group)和其他用户(Others)。每一组权限又分为读(Read)、写&#xff0…

c++函数模板STL详解

函数模板 函数模板语法 所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。 凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数&#xf…

Java安全之Commons Collections5

CC5分析 import org.apache.commons.collections.Transformer; import org.apache.commons.collections.functors.ChainedTransformer; import org.apache.commons.collections.functors.ConstantTransformer; import org.apache.commons.collections.functors.InvokerTransfo…

基于ssm绿色农产品推广应用网站论文

摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存…

Cloudways和SiteGround哪个更好?

当提及WordPress托管服务提供商时,人们常常会拿Cloudways和SiteGround做比较。Cloudways作为备受欢迎的品牌,而SiteGround则是业界的老牌巨头。它们之间主要的区别在于服务范围。SiteGround提供广泛的托管服务,包括Web托管、WordPress托管、W…

『VUE3后台—硅谷甄选』

一、准备前期 pnpm create vite

【【RGB LCD 彩条显示实验 ---1】】

RGB LCD 彩条显示实验 —1 TFT-LCD 的全称是 Thin Film Transistor-Liquid Crystal Display,即薄膜晶体管液晶显示屏,它显示的每个像素点都是由集成在液晶后面的薄膜晶体管独立驱动,因此 TFT-LCD 具有较高的响应速度以及较好的图像质量。 我…

一对一单聊

服务端 package 一对一用户;import java.awt.BorderLayout; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Vector;…

19、XSS——HTTP协议安全

文章目录 一、Weak Session IDs(弱会话IDs)二、HTTP协议存在的安全问题三、HTTPS协议3.1 HTTP和HTTPS的区别3.2 SSL协议组成 一、Weak Session IDs(弱会话IDs) 当用户登录后,在服务器就会创建一个会话(Session),叫做会话控制&…

【JavaScript手撕代码】flat、push、filter、map、repeat

flat 借助上面递归concat扁平化即可 Array.prototype.myflat function(deep1) {let res []deep--for(const element of this) {if(Array.isArray(element) && deep) {res res.concat(element.myflat(deep))}else{res.push(element)}}return res }push 根据我们对…

urllib爬虫 应用实例(三)

目录 一、 ajax的get请求豆瓣电影第一页 二、ajax的get请求豆瓣电影前十页 三、ajax的post请求肯德基官网 一、 ajax的get请求豆瓣电影第一页 目标:获取豆瓣电影第一页的数据,并保存为json文件 设置url,检查 --> 网络 --> 全部 -…

zedbox 实现配置 yolov5

Stereolabs 的 ZED Box 是一款由 NVIDIA Jetson™ 提供支持的紧凑型网关,用于在移动和现场情况下挑战 AIoT(物联网)。它旨在将空间感知和理解带到边缘,并聚合、处理和分析来自 3D 传感器和设备的数据。 相关内容 1.win10下 cud…

下载加速器steam++

解决auto-py-to-exe打包文件时无法访问浏览器界面的问题。 下载地址:瓦特工具箱(Steam官网) - Watt Toolkit (steampp.net) 进入gitee后需要注册账号 3.0.0-rc.3 RMBGAME/SteamTools - Gitee.com 下载后安装即可 打开安装好的文件 成功打开

跨境电商危机公关:应对负面舆情的策略优化

随着跨境电商的快速发展,企业在全球市场中面临的竞争与挑战也日益复杂。在这个数字时代,负面舆情一旦爆发,可能对企业形象和经营造成深远影响。 因此,跨境电商企业需要建立有效的危机公关策略,以迅速、果断、有效地应…

R语言手册30分钟上手

文章目录 1. 环境&安装1.1. rstudio保存工作空间 2. 创建数据集2.1. 数据集概念2.2. 向量、矩阵2.3. 数据框2.3.1. 创建数据框2.3.2. 创建新变量2.3.3. 变量的重编码2.3.4. 列重命名2.3.5. 缺失值2.3.6. 日期值2.3.7. 数据框排序2.3.8. 数据框合并(合并沪深300和中证500收盘…

如何衡量和提高测试覆盖率?

衡量和提高测试覆盖率,对于尽早发现软件缺陷、提高软件质量和用户满意度,都具有重要意义。如果测试覆盖率低,意味着用例未覆盖到产品的所有代码路径和场景,这可能导致未及时发现潜在缺陷,代码中可能存在逻辑错误、边界…

短剧分销系统开发:短剧分销推广

近两年内,随着短剧的发展,节奏快、剧情紧凑的短剧逐渐成为了大众的“新宠”。短剧行业也凭着成本低、投资低、周期短的优势成为了众多创业者的首要选择,越来越多的专业团队加入到短剧的赛道中。 根据数据显示,我国短剧市场规模有…

马尔科夫决策过程(Markov Decision Process)揭秘

RL基本框架、MDP概念 MDP是强化学习的基础。MDP能建模一系列真实世界的问题,它在形式上描述了强化学习的框架。RL的交互过程就是通过MDP表示的。RL中Agent对Environment做出一个动作(Action),Environment给Agent一个反馈&#xff…