Linux访问NFS存储及自动挂载

本章主要介绍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.mzph.cn/news/213223.shtml

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

相关文章

通信:mqtt学习网址

看这个网址:讲的很详细,后面补实战例子 第一章 - MQTT介绍 MQTT协议中文版 (gitbooks.io)https://mcxiaoke.gitbooks.io/mqtt-cn/content/mqtt/01-Introduction.html

【论文极速读】LVM,视觉大模型的GPT时刻?

【论文极速读】LVM,视觉大模型的GPT时刻? FesianXu 20231210 at Baidu Search Team 前言 这一周,LVM在arxiv上刚挂出不久,就被众多自媒体宣传为『视觉大模型的GPT时刻』,笔者抱着强烈的好奇心,在繁忙工作之…

m.2固态硬盘怎么选择?

一、什么是固态硬盘 固态硬盘又称SSD,是Solid State Drive的简称,由于采用了闪存技术,其处理速度远远超过传统的机械硬盘,这主要是因为固态硬盘的数据以电子的方式存储在闪存芯片中,不需要像机械硬盘那样通过磁头读写磁…

【CiteSpace】引文可视化分析软件CiteSpace下载与安装

CiteSpace 译“引文空间”,是一款着眼于分析科学分析中蕴含的潜在知识,是在科学计量学、数据可视化背景下逐渐发展起来的引文可视化分析软件。由于是通过可视化的手段来呈现科学知识的结构、规律和分布情况,因此也将通过此类方法分析得到的可…

【Spring教程23】Spring框架实战:从零开始学习SpringMVC 之 SpringMVC简介与SpringMVC概述

目录 1,SpringMVC简介2、SpringMVC概述 欢迎大家回到《Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》&…

python使用vtk与mayavi三维可视化绘图

VTK(Visualization Toolkit)是3D计算机图形学、图像处理和可视化的强大工具。它可以通过Python绑定使用,适合于科学数据的复杂可视化。Mayavi 依赖于 VTK (Visualization Toolkit),一个用于 3D 计算机图形、图像处理和可视化的强大…

AS安装目录

编辑器: sdk: gradle: gradle使用的jdk目录:Gradle使用的jdk是android studio安装目录下的jbr 成功项目的android studio配置:

H264码流结构

视频编码的码流结构是指视频经过编码之后得到的二进制数据是怎么组织的,或者说,就是编码后的码流我们怎么将一帧帧编码后的图像数据分离出来,以及在二进制码流数据中,哪一块数据是一帧图像,哪一块数据是另外一帧图像。…

C++面试宝典第4题:合并链表

题目 有一个链表,其节点声明如下: struct TNode {int nData;struct TNode *pNext;TNode(int x) : nData(x), pNext(NULL) {} }; 现给定两个按升序排列的单链表pA和pB,请编写一个函数,实现这两个单链表的合并。合并后,…

Vuex快速上手

一、Vuex 概述 目标:明确Vuex是什么,应用场景以及优势 1.是什么 Vuex 是一个 Vue 的 状态管理工具,状态就是数据。 大白话:Vuex 是一个插件,可以帮我们管理 Vue 通用的数据 (多组件共享的数据)。例如:购…

VSCode SSH登录服务器 提示XHR failed

设置->搜索“代理” 把图中的√去掉 重启 即可

tidb安装 centos7单机集群

安装 [rootlocalhost ~]# curl --proto https --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh [rootlocalhost ~]# source .bash_profile [rootlocalhost ~]# which tiup [rootlocalhost ~]# tiup playground v6.1.0 --db 2 --pd 3 --kv 3 --host 192.168.1…

SQL自学通之函数 :对数据的进一步处理

目录 一、目标 二、汇总函数 COUNT SUM AVG MAX MIN VARIANCE STDDEV 三、日期/时间函数 ADD_MONTHS LAST_DAY MONTHS_BETWEEN NEW_TIME NEXT_DAY SYSDATE 四、数学函数 ABS CEIL 和FLOOR COS、 COSH 、SIN 、SINH、 TAN、 TANH EXP LN and LOG MOD POW…

【SpringBoot教程】SpringBoot 实现前后端分离的跨域访问(Nginx)

作者简介:大家好,我是撸代码的羊驼,前阿里巴巴架构师,现某互联网公司CTO 联系v:sulny_ann(17362204968),加我进群,大家一起学习,一起进步,一起对抗…

Mybatis之核心配置文件详解、默认类型别名、Mybatis获取参数值的两种方式

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

arm-none-eabi-gcc not find

解决办法:安装:gcc-arm-none-eabi sudo apt install gcc-arm-none-eabi; 如果上边解决问题了就不用管了,如果解决不了,加上下面这句试试运气: $ sudo apt-get install lsb-core看吧方正我是运气还不错,感…

SSL 数字证书的一些细节

参考:TLS/SSL 协议详解(6) SSL 数字证书的一些细节1 证书验证 地址:https://wonderful.blog.csdn.net/article/details/77867063 参考:TLS/SSL协议详解 (7) SSL 数字证书的一些细节2 地址:https://wonderful.blog.csdn.net/articl…

Python学习笔记-类

1 定义类 类是函数的集合,class来定义类 pass并没有实际含义,只是为了代码能执行通过,不报错而已,相当于在代码种占一个位置,后续完善 类是对象的加工厂 2.创建对象 carCar()即是创建对象的过程 3、类的成员 3.1 实例…

福德植保无人机:绿色农业的新篇章

今天,我们荣幸地向您介绍福德植保无人机,一种改变传统农业种植方式,引领绿色农业的新科技产品。福德植保无人机以其高效、环保、安全的特点,正逐渐成为植保行业的新宠。福德植保无人机是一种搭载了高性能发动机和精确喷洒系统的飞…

代码随想录算法训练营第四十六天 _ 动态规划_背包问题总结。

学习目标: 动态规划五部曲: ① 确定dp[i]的含义 ② 求递推公式 ③ dp数组如何初始化 ④ 确定遍历顺序 ⑤ 打印递归数组 ---- 调试 引用自代码随想录! 本文大多数内容引用自代码随想录 60天训练营打卡计划! 学习内容: …