Linux访问NFS存储及自动挂载

news2025/1/22 12:51:34

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

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

1.1 访问NFS存储

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

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

首先在redhat8上启动nfs-server服务并设置开启自动启动

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

创建准备共享的目录/share

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

在/etc/exporets中把目录/share共享出去

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

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

让共享生效

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

在redhat8上配置防火墙放行NFS

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

在node1上访问这个共享文件夹,首先使用showmount命令查看服务器上共享的目录

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

把服务器上共享的目录挂载到本地/nfs目录上

[root@node1 ~]# mkdir /nfs
[root@node1 ~]# mount 192.168.161.16:/share /nfs/
[root@node1 ~]#

查看挂载情况

[root@node1 ~]# df -Th | grep nfs
192.168.161.16:/share   nfs4       38G  5.4G   33G   14% /nfs
[root@node1 ~]#

可以看到,已经挂载好了

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

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

1.2 自动挂载

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

安装软件包的步骤如下

(1)挂载光盘

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

这里准备把光盘作为yum源

(2)编写repo文件

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

开始安装autofs

[root@redhat8 ~]# yum -y install autofs

启动autofs并设置开机自动启动

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

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

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

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

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

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

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

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

这个文件的格式如下

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

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

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

 重启autofs服务,让我们刚做的配置生效

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

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

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

下面访问/zz/dvd

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

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

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

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

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

通过NFS把redhat8上的/rhome共享出去,在node1上配置 autofs,把redhat8上 的/rhome/mary关联到node1上的/rhome/mary中

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

在redhat8上创建/rhome目录,然后创建用户 mary,家目录设置为/rhome/mary,用户 的uid设置为3001

[root@redhat8 ~]# mkdir /rhome
[root@redhat8 ~]# useradd -u 3001 -d /rhome/mary mary
[root@redhat8 ~]# passwd mary
更改用户 mary 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@redhat8 ~]# ls /rhome/
mary
[root@redhat8 ~]# 

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

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

[root@node1 ~]# mkdir /rhome
[root@node1 ~]# useradd -u 3001 -d /rhome/mary -M mary
[root@node1 ~]# passwd mary
更改用户 mary 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 它没有包含足够的不同字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@node1 ~]# ls /rhome/
[root@node1 ~]#

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

[root@node1 ~]# su - mary
su: 警告:无法更改到 /rhome/mary 目录: 没有那个文件或目录
-bash-4.2$ exit
登出
[root@node1 ~]#

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

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

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

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

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

切换到node1上开始配置autofs,创建/etc/auto.master.d/bb.autofs

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

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

下面创建/etc/auto.bb

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

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

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

确认现在/rhome/mary是没有挂载任何东西的

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

下面在node1上切换到mary,记住通过su - mary而不是通过su mary

[root@node1 ~]# su - mary
上一次登录:三 12月  6 12:05:40 CST 2023pts/0 上
[mary@node1 ~]$ pwd
/rhome/mary
[mary@node1 ~]$ exit
登出
[root@node1 ~]#

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

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

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

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

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

相关文章

IDEA快速生成lambda表达式的方法

IDEA快速生成lambda表达式的方法-CSDN博客 建议修改成 shift/

Redis对象

Redis根据基本数据结构构建了自己的一套对象系统。主要包括字符串对象、列表对象、哈希对象、集合对象和有序集合对象 同时不同的对象都有属于自己的一些特定的redis指令集,而且每种对象也包括多种编码类型,和实现方式。 Redis对象结构 struct redisOb…

使用TouchSocket适配一个c++的自定义协议

这里写目录标题 说明一、新建项目二、创建适配器三、创建服务器和客户端3.1 服务器3.2 客户端3.3 客户端发送3.4 客户端接收3.5 服务器接收与发送 四、关于同步Send 说明 今天有小伙伴咨询我,他和同事(c端)协商了一个协议,如果使…

二叉树的右视图[中等]

优质博文:IT-BLOG-CN 一、题目 给定一个二叉树的 根节点root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4] 示例 2: 输入: [1,null,3] 输出…

强化学习第1天:强化学习概述

☁️主页 Nowl 🔥专栏《机器学习实战》 《机器学习》 📑君子坐而论道,少年起而行之 ​​ 文章目录 介绍 强化学习要素 强化学习任务示例 环境搭建:gym 基本用法 环境信息查看 创建智能体 过程可视化 完整代码 结语…

0基础学java-day15

一、泛型 1 泛型的理解和好处 1.1 看一个需求 【不小心加入其它类型,会导致出现类型转换异常】 package com.hspedu.generic;import java.util.ArrayList;/*** author 林然* version 1.0*/ public class Generic01 {SuppressWarnings("all")public st…

企业数字档案馆室建设指南

数字化时代,企业数字化转型已经成为当下各行业发展的必然趋势。企业数字化转型不仅仅是IT系统的升级,也包括企业内部各种文件、档案、合同等信息的数字化管理。因此,建设数字档案馆室也变得尤为重要。本篇文章将为您介绍企业数字档案馆室建设…

SpringMVC修炼之旅(2)基础入门

一、第一个程序 1.1环境配置 略 1.2代码实现 package com.itheima.controller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;//定义…

初识MQ——消息队列技术选型

文章目录 同步和异步通讯同步通讯异步通讯 技术对比 同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应。 异步通讯:就像发邮件,不需要马上回复。 两种方式各有优劣&#xff0c…

CCF编程能力等级认证GESP—C++1级—20230318

CCF编程能力等级认证GESP—C1级—20230318 单选题(每题 2 分,共 30 分)判断题(每题 2 分,共 20 分)编程题 (每题 25 分,共 50 分)每月天数长方形面积 答案及解析单选题判断题编程题1编程题2 单选…

SQL手工注入漏洞测试(Sql Server数据库)-墨者

———靶场专栏——— 声明:文章由作者weoptions学习或练习过程中的步骤及思路,非正式答案,仅供学习和参考。 靶场背景: 来源: 墨者学院 简介: 安全工程师"墨者"最近在练习SQL手工注入漏洞&#…

国内AI翘楚,看看有没有你心动的offer?

科技创新争占高地,AI领域各显神通。从一战成名的阿尔法狗到引起轩然大波的ChatGPT,我们早已卷入了一场没有硝烟的革命。前方世人看到的科技日新日异、岁月静好,后方是各大企业的绞尽脑汁、争先恐后。人工智能时代,AI是挡不住的时代…

Lebesgue积分及应用

Lebesgue积分及应用 文章目录 Lebesgue积分及应用一、Lebesgue测度和可测函数1.1 Riemann积分和Lebesgue积分1.2 直线上的Lebesgue测度【定义】外测度(Outer Measure)【定理】外测度的性质【定义】内测度【定义】可测、Lebesgue测度【定理】卡氏条件&…

Java注册并监听全局快捷键

背景 之前在博客中分享了SWT托盘功能, 随之带来一个问题, 当程序最小化后无法快速唤醒, 按照平时使用软件的思路, 自然想到了注册全局快捷键, 本文介绍使用java方式实现全局快捷键的注册. 方案 通过google,搜到一个现成的库: jintellitype, 使用maven可以直接引用, 非常方便…

C语言易错知识点八(整形与浮点型在内存中存储的实质)

整形与浮点型在内存中存储的实质 当我们在刷抖音或者其他短视频平台时,可能会时不时(总是,我相信大家肯定是不会被外表骗到的那一类人ヾ(●゜ⅴ゜)ノ)刷到各种帅哥美女的视频,或者我们在学校里看到帅哥美女时,如果我们只…

NFC和蓝牙在物联网中有什么意义?如何选择?

#NFC物联网# #蓝牙物联网# 在物联网中,NFC和蓝牙有什么意义? NFC在物联网中代表近场通信技术。它是一种短距离、高频的无线通信技术,可以在近距离内实现设备间的数据传输和识别。NFC技术主要用于移动支付、电子票务、门禁、移动身份识别、防…

Vue2中v-html引发的安全问题

前言:v-html指令 1.作用:向指定节点中渲染包含html结构的内容。 2.与插值语法的区别: (1).v-html会替换掉节点中所有的内容,{{xx}}则不会。 (2).v-html可以识别html结构。 3.严重注意:v-html有安全性问题&#xff0…

STM32串口接收数据包(自定义帧头帧尾)

1、基本概述 本实验基于stm32c8t6单片机,串口作为基础且重要的外设,具有广泛的应用。本文主要理解串口数据包的发送与接收是如何实现的,重要的是理解程序的实现思路。 2、关键程序 定义好需要用到的变量: uint8_t rxd_buf[4];//…

湖南麒麟下默认使用串口输出系统日志

有时候为了调试方便,需要将系统日志通过CPU的串口进行输出,以下是针对至强E5V4处理器上安装湖南麒麟操作系统后将日志通过串口输出的配置。 首先在bios中打开串口重定向功能,这里的BIOS是AMI的BIOS 内部配置如下,波特率115200配置…

ESP32网络开发实例-发送邮件

发送邮件 文章目录 发送邮件1、邮件发送配置2、软件准备3、硬件准备4、代码实现本文将详细介绍在ESP32中如何使用SMTP协议发送邮件。 1、邮件发送配置 在本次实例中,我们将通过QQ邮箱向指定邮件地址发送邮件。 第一步,注册QQ邮箱 第二步,开启QQ邮箱SMTP/IMAP 服务: 生成…