RHEL8_Linux访问NFS存储及自动挂载

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

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

1.访问NFS存储

        前面介绍了本地存储,本章就来介绍如何使用网络上的存储设备。NFS即网络文件系统,所实现的是 Linux 和 Linux 之间的共享。
        下面的练习我们将会在node01上创建一个文件夹/share,然后通过NFS把它共享,再在node02上把这个共享文件夹挂载到/nfs上,如图所示。
实战:
1)首先在node01上启动nfs-server 服务并设置开启自动启动,命令如下。
[root@node01 ~]# 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@node01 ~]# 
2)创建准备共享的目录/share,命令如下。
[root@node01 ~]# mkdir /share
3)在/etc/exports中把目录/share共享出去,命令如下。
[root@node01 ~]# vim /etc/exports
[root@node01 ~]# cat /etc/exports
/share 192.168.182.0/24(rw,no_root_squash)
[root@node01 ~]# 
  1. 这里可以用通配符 “*” 表示任何客户端都可以访问目录
  2. 可以使用网段例如:192.168.182.0/24
  3. 也可以使用IP地址,例如:192.168.182.210/24
4)让共享生效,命令如下
[root@node01 ~]# exportfs -arv
exporting 192.168.182.0/24:/share
[root@node01 ~]# 
5)在server上配置防火墙放行NFS,命令如下。
[root@node01 ~]# firewall-cmd --add-service=nfs
success
[root@node01 ~]# firewall-cmd --add-service=nfs --permanent 
success
[root@node01 ~]# firewall-cmd --add-service=rpc-bind 
success
[root@node01 ~]# firewall-cmd --add-service=rpc-bind --permanent 
success
[root@node01 ~]# firewall-cmd --add-service=mountd 
success
[root@node01 ~]# firewall-cmd --add-service=mountd --permanent 
success
[root@node01 ~]#
6)查看防火墙是否成功添加服务
[root@node01 ~]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens160sources: services: cockpit dhcpv6-client mountd nfs rpc-bind sshports: protocols: forward: nomasquerade: noforward-ports: source-ports: icmp-blocks: rich rules: 
[root@node01 ~]#
关于防火墙的配置,后续会有专门章节讲解。
7)在node02上访问这个共享文件夹,首先使用show mount命令查看服务器上共享的目录,命今如下。
[root@node02 ~]# showmount -e 192.168.182.200
Export list for 192.168.182.200:
/share 192.168.182.0/24
[root@node02 ~]# 
8)把服务器上共享的目录挂载到本地/nfs目录上,命令如下。
[root@node02 ~]# mount 192.168.182.200:/share /nfs/
[root@node02 ~]# 
9)查看挂载情况,命令如下。可以看到已经挂载好了
[root@node02 ~]# df -Th | grep nfs
192.168.182.200:/share      nfs4       44G  5.4G   39G   13% /nfs
[root@node02 ~]#
10)如果希望开机能够自动挂载,则写入/etc/fstab中,命令如下
[root@node02 ~]# vim /etc/fstab         //编辑文件
[root@node02 ~]# cat /etc/fstab | grep nfs    //查看并过滤内容
192.168.182.200:/share	    /nfs              nfs      defaults     0 0
[root@node02 ~]# 

2.自动挂载

        自动挂载的意思是,把一个外部设备/dev/xx和某个目录/dir/yy关联起来。平时/dev/xx 是否挂载到了/dir/yy 上不需要考虑,但访问 /dir/yy时,系统就知道要访问 /dev/xx中的数据,这个时候系统会自动将/dev/xx挂载到/dir/yy 上。
安装软件包的步骤如下。
1)挂载光盘,命令如下
[root@node01 ~]# mount /dev/cdrom /mnt/
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@node01 ~]# 

这里准备发光盘作为本地YUM源

2)编写repo文件,命令如下
[root@node01 ~]# cat /etc/yum.repos.d/aa.repo 
[aa]
name=aa
baseurl=file:///mnt/AppStream
enabled=1
gpgcheck=0[bb]
name=bb
baseurl=///mnt/BaseOS
enabled=1
gpgcheck=0
[root@node01 ~]#
3)更新yum仓库
[root@node01 ~]# updatedb
4)开始安装autofs,命令如下。
[root@node01 ~]# yum -y install autofs
5)启动autofs并设置开机自动启动,命令如下。
[root@node01 ~]# systemctl enable autofs.service --now
Created symlink /etc/systemd/system/multi-user.target.wants/autofs.service → /usr/lib/systemd/system/autofs.service.
[root@node01 ~]# 
6)下面练习把光盘自动挂载到/zz/dvd 上。先把/zz创建出来,命令如下。
[root@node01 ~]# mkdir /zz

注意:这里不需要创建目录/zz/dvd,这个目录会自动创建。

7)在/etc/auto.master.d目录中创建一个后缀为 autofs的文件,后缀必须是autofs,这里创建的是aa.autofs,命令如下。
[root@node01 ~]# cat /etc/auto.master.d/aa.autofs 
/zz	/etc/auto.aa
[root@node01 ~]# 
8)这里的意思是把哪个外部设备挂载到/zz的哪个子目录上由/etc/auto.aa决定,内容使用【Tab】键进行分隔。下面创建/etc/auto.aa,命令如下。
[root@node01 ~]# df -Th | grep iso    //查看文件系统
/dev/sr0              iso9660    11G   11G     0  100% /mnt
[root@node01 ~]#
[root@node01 ~]# vim /etc/auto.aa    //编辑文件内容
[root@node01 ~]# cat /etc/auto.aa     //添加以下内容
dvd	-fstype=iso9660,ro	:/dev/cdrom
[root@node01 ~]# 

这个文件的格式如下。
子目录    -fstype=    文件系统,选项1,选项2    :外部设备
        这里外部设备如果是本地磁盘或光盘,冒号前面保持为空,但是冒号不能省略。如果是其他机器上共享的目录,则写远端的IP。
        结合/etc/auto.master.d/aa.autofs整体的意思是,当访问/zz/dvd时,系统会自动把/dev/cdrom挂载到/zz/dvd 上。
9)重启autofs服务,让我们刚做的配置生效,命令如下。
[root@node01 ~]# systemctl restart autofs.service 
10)确认现在光盘是没有挂载到/zz/dvd 上的,而且/zz目录中也没有dvd目录,命令如下。
[root@node01 ~]# mount | grep -v auto | grep zz
[root@node01 ~]# ls /zz
[root@node01 ~]# 
11)下面访问/zz/dvd,命令如下。
[root@node01 ~]# 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@node01 ~]# 
12)因为访问这个目录时能触发自动挂载,系统自动创建/zz/dvd并把 /devcdrom挂载到这个目录上,再次验证挂载情况,命令如下。
[root@node01 ~]# mount | grep -v auto | grep zz
/dev/sr0 on /zz/dvd type iso9660 (ro,relatime,nojoliet,check=s,map=n,blocksize=2048)
可以看到,现在已经挂载上去了。

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

        在node01上创建一个用户 bob,家目录指定为/rhome/mary。在node02上也创建一个用户bob,家目录也指定为/rhome/mary,但是node02上的 bob并不把这个家目录创建出来,如图所示。
        通过NFS把node01上的/rhome共享出去,在node02上配置 autofs,把192.168.26.11上 的/rhome/mary关联到node02上的/rhome/mary中。
        当在node02上使用mary登录时会自动登录到/rhome/bob,就会触发autofs自动把 192.168.26.11:/rhome/bob挂载到node02的/rhome/bob目录上,这样node02上的bob也就有了家目录。
1)在node01上创建/bhome目录,然后创建用户 bob,家目录设置为/rhome/bob,用户的uid设置为2023,命令如下。
[root@node01 /]# mkdir /bhome
[root@node01 /]# useradd -u 2023 -d /bhome/bob bob
[root@node01 /]# echo 123456 | passwd --stdin bob 
更改用户 bob 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@node01 /]# 
此时在server 上mary用户就创建好了,且 mary的家目录也是存在的。
2)在node02上创建/bhome目录,然后创建用户bob,家目录设置为/bhome/bob。因为指定了-M选项,这个目录并没有被创建,用户的uid设置为2023,记住必须和 node01上的bob具有相同的uid,命令如下。
[root@node02 ~]# mkdir /bhome
[root@node02 ~]# useradd -u 2023 -d /bhome/bob -M bob
[root@node02 ~]# echo 123456 | passwd --stdin bob 
更改用户 bob 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@node02 ~]# 
[root@node02 ~]# ls /bhome/
[root@node02 ~]# 
3)可以看到,bob的家目录/bhome/bob并没有被创建出来。在node02上切换到mary用户,命令如下。
[root@node02 ~]# su - bob 
su: 警告:无法更改到 /bhome/bob 目录: 没有那个文件或目录
-bash-4.2$ exit
登出
[root@node02 ~]# 
        在node02上因为bob没有家目录,所以会出现上述警告信息,输入“exit”退回到root用户。
3)在node01上通过NFS把/bhome共享出去,编辑/etc/exports内容如下。
[root@node01 /]# cat /etc/exports
/share 192.168.182.0/24(rw,no_root_squash)
/bhome	192,168,182,0/24(rw,no_root_squash)
[root@node01 /]# 
4)这样就把/bhome共享出去了,然后让此共享生效。
[root@node01 /]# exportfs -arv
exportfs: Invalid IP address 192,168,182,0/24
exportfs: Invalid IP address 192,168,182,0/24
exporting 192.168.182.0/24:/share
[root@node01 /]# 
5)切换到node02上开始配置autofs,创建/etc/auto.master.d/bb.autofs,内容如下。
[root@node02 ~]# cat /etc/auto.master.d/bb.autofs 
/bhome	/etc/auto.bb
[root@node02 ~]# 
到底把哪个外部设备挂载到/bhome的哪个子目录上由/etc/auto.bb决定。

6)下面创建/etc/auto.bb,内容如下。
[root@node02 ~]# cat /etc/auto.bb 
bob	-fstype=nfs,rw 192.168.182.200:/bhome/bob
[root@node02 ~]# 
        结合/etc/auto.master.d/bb.autofs整体的意思是,当访问/bhome/bob时,系统会自动把192.168.182.200:/bhome/bob挂载到node02的/bhome/bob目录上。
7)重启autofs,命令如下。
[root@node02 ~]# systemctl restart autofs.service
8)确认现在/bhome/bob是没有挂载任何东西的,命令如下。
[root@node02 ~]# mount | grep -v auto | grep bhome
[root@node02 ~]# 
9)下面在node02上切换到bob,记住通过su - mary而不是通过su mary,命令如下。
[root@node02 /]# su - bob 
[bob@node02 ~]$ pwd
/bhome/bob
[bob@node02 ~]$ 

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

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

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

相关文章

新手搭建知识付费平台必备攻略:如何以低成本实现高转化?

我有才知识付费平台 一、引言 随着知识经济的崛起,越来越多的知识提供者希望搭建自己的知识付费平台。然而,对于新手来说,如何以低成本、高效率地实现这一目标,同时满足自身需求并提高客户转化率,是一大挑战。本文将…

SPA, SEO, SSR总结

SPA单页面Web应用 SPA(Single page web application) 单页面Web应用 Web不再是一张张页面,而是一个整体的应用,一个由路由系统,数据系统,页面(组件)系统等等,组成的应用程序, 让用户不需要每次与服务器进行页面刷新来获得新的内容, 从而提供了更快,跟流畅的用户体验, 在SPA中…

参与创作①周年啦~

写在前面 今天看了消息才知道,原来开始创作已经一年了。此篇无干货,纯白话,纯记录。 机缘 参与CSDN创作已经一年有余,犹记得第一篇博文是为了整理好所学内容,方便自己复习。没想到后面也陆陆续续发了些其他内容&…

关于read函数阻塞的问题

关于read函数阻塞的问题 上一篇文章IO多路转接之select 末尾提到了一点,服务端读取每次是读取10个字节的,如果超过10个字节,需要读取多次,但是客户端只会read一次,第二次read的时候,直接阻塞了。 那么如何…

Windows server flask

1、Windows server 通过python的flask执行命令 from flask import Flask, request, abort import subprocess from flask_basicauth import BasicAuth app Flask(__name__) # 获取url是进行账号密码认证,设置url的账号密码 app.config[BASIC_AUTH_USERNAME] 账号…

12.8作业

1.头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QDebug> #include <QMovie>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nul…

spring-boot-starter-validation是什么Validation参数校验使用概要

spring-boot-starter-validation是什么&Validation参数校验使用概要 来源Valid和Validated的用法(区别)引入依赖Valid和Validated的用法 在日常的项目开发中&#xff0c;为了防止非法参数对业务造成的影响&#xff0c;需要对接口的参数做合法性校验&#xff0c;例如在创建用…

基于Docker安装Mysql:5.5

一、拉取镜像 sudo docker pull mysql:5.5二、启动mysql镜像 1. 创建MySQL的conf目录和data目录 mkdir -p /home/docker/mysql/conf /home/docker/mysql/data2. 利用镜像创建容器 sudo docker run --restartalways -d --name mysql -v /home/docker/mysql/conf/my.cnf:/etc…

系统设计-微服务架构

典型的微服务架构图 下图展示了一个典型的微服务架构。 负载均衡器&#xff1a;它将传入流量分配到多个后端服务。CDN&#xff08;内容交付网络&#xff09;&#xff1a;CDN 是一组地理上分布的服务器&#xff0c;用于保存静态内容以实现更快的交付。客户端首先在 CDN 中查找内…

methods

类型&#xff1a;{ [key: string]: Function } 详细&#xff1a; methods 将被混入到 Vue 实例中。可以直接通过 VM 实例访问这些方法&#xff0c;或者在指令表达式中使用。方法中的 this 自动绑定为 Vue 实例。 注意&#xff0c;不应该使用箭头函数来定义 method 函数 (例如…

临床骨科常用的肩关节疾病量表,医生必备!

根据骨科医生的量表使用情况&#xff0c;常笑医学整理了临床骨科常用的肩关节疾病量表&#xff0c;为大家分享临床常见的肩关节疾病量表评估内容&#xff0c;均支持量表下载和在线使用&#xff0c;建议收藏&#xff01; 1.臂、肩、手功能障碍&#xff08;disabilites of the ar…

useradd 在Linux原生应用开发过程中的简单应用

useradd命令是用于在Linux系统中创建新用户的命令。它可以创建一个新用户&#xff0c;并设置该用户的属性、家目录、默认shell等。useradd命令实际上是一个包装了一系列系统调用的高级命令。 在Linux系统中&#xff0c;用户信息存储在/etc/passwd文件中。当执行useradd命令时&…

flstudio21破解汉化版2024最新水果编曲使用教程

​ 如果你一直梦想制作自己的音乐(无论是作为一名制作人还是艺术家)&#xff0c;你可能会想你出生在这个时代是你的幸运星。这个水果圈工作室和上一版之间的改进水平确实令人钦佩。这仅仅是FL Studio 21所提供的皮毛。你的音乐项目的选择真的会让你大吃一惊。你以前从未有过这…

ChatGPT的常识

什么是ChatGPT&#xff1f; ChatGPT是一个基于GPT模型的聊天机器人&#xff0c;GPT即“Generative Pre-training Transformer”&#xff0c;是一种预训练的语言模型。ChatGPT使用GPT-2和GPT-3两种模型来生成自然语言响应&#xff0c;从而与人类进行真实的对话。 ChatGPT的设计…

2023年全球软件开发大会(QCon广州站2023)-核心PPT资料下载

一、峰会简介 本次峰会包含&#xff1a;泛娱乐时代的边缘计算与通讯、稳定性即生命线、下一代软件架构、出海的思考、现代数据架构、AGI 与 AIGC 落地、大前端技术探索、编程语言实战、DevOps vs 平台工程、新型数据库、AIGC 浪潮下的企业出海、AIGC 浪潮下的效能智能化、数据…

【池式组件】线程池的原理与实现

线程池的原理与实现 线程池简介1.线程池1.线程池2.数量固定的原因3.线程数量如何确定4.为什么需要线程池5.线程池结构 线程池的实现数据结构设计1.任务结构2.任务队列结构3.线程池结构 接口设计 线程池的应用reactorredis 中线程池skynet 中线程池 线程池简介 1.线程池 1.线程…

第7课 SQL入门之创建计算字段

文章目录 7.1 计算字段7.2 拼接字段使用别名 7.3 执行算术计算 这一课介绍什么是计算字段&#xff0c;如何创建计算字段&#xff0c;以及如何从应用程序中使用别名引用它们。 7.1 计算字段 存储在数据库表中的数据一般不是应用程序所需要的格式&#xff0c;下面举几个例子。 …

前端Excel导出实用方案(完整源码,可直接应用)

目录 前言&#xff1a; 技术选型&#xff1a; 主要功能点&#xff1a; 核心代码&#xff1a; 完整代码&#xff1a; 开发文档 前言&#xff1a; 在前后端分离开发为主流的时代&#xff0c;很多时候&#xff0c;excel导出已不再由后端主导&#xff0c;而是把导出的操作移…

关于锁的粒度问题——面试

锁的粒度划分主要有三种&#xff1a;表级锁、页级锁和行锁 1.表级锁&#xff1a; 对整张表加锁&#xff0c;粒度最大&#xff0c;加锁的并发度最低&#xff0c;会导致其他事务无法访问该表&#xff0c;只有当前事务提交或者回滚后才能释放锁。表级锁适用于对表进行全表操作的场…

DeepIn,UOS统信专业版安装运行Java,JavaFx程序

因为要适配国产统信UOS系统&#xff0c;要求JavaFx程序能简便双击运行&#xff0c;由于网上UOS开发相关文章少&#xff0c;多数文章没用&#xff0c;因此花了不少时间&#xff0c;踩了不少坑&#xff0c;下面记录一些遇到的问题&#xff0c;我的程序环境是jdk1.8&#xff0c;为…