NFS服务小实验

news2025/5/25 2:13:54

实验1

  • 建立NFS服务器,使的客户端顺序共享数据

  • 第一步:服务端及客户端的准备工作

# 恢复快照
[root@server ~]# setenforce  0
​
[root@server ~]# systemctl stop  firewalld
​
[root@server ~]# yum  install  nfs-utils  -y  # 服务端及客户端都安装
  • 第二步:服务端建立共享文件目录,并设置权限

[root@server ~]# mkdir  /nfsfile
[root@server ~]# echo  "welcome to www.openlab.com" > /nfsfile/readme
[root@server ~]# chmod  -Rf  777  /nfsfile
  • 第三步:服务端编辑配置文件

[root@server ~]# vim  /etc/exports  # 添加以下内容
/nfsfile        192.168.48.131/24(rw,sync,all_squash)
  • 第四步:服务端先启动rpc服务,在启动nfs服务

[root@server ~]# systemctl start  rpcbind
[root@server ~]# systemctl start  nfs-server
[root@server ~]# systemctl enable  rpcbind
[root@server ~]# systemctl enable  nfs-server
Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.
# 注意:若systemctl start  rpcbind后报错,显示启动失败,应先停止服务,在重启服务
[root@server ~]# systemctl stop rpcbind
[root@server ~]# systemctl start  rpcbind
  • 第五步:客户端使用本地挂载方式访问远程共享目录

    • 先查询有哪些远程共享目录可用

    • [root@node1 ~]# showmount  -e  192.168.48.130  # 别忘了安装nfs-utils
      # -e 表示显示服务器共享信息列表
    • 新建本地挂载目录

    • [root@node1 ~]# mkdir  /nfs1  # 新建本地挂载目录
      ​
      # 使用mount远程挂载命令挂载服务器的目录到客户端本地目录,-t nfs 表示使用的文件系统类型
      [root@node1 ~]# mount -t nfs  192.168.48.130:/nfsfile  /nfs1
      [root@node1 ~]# cd  /nfs1   # 通过本地目录访问远程共享数据
      [root@node1 nfs1]# ls
      readme
      [root@node1 nfs1]# cat  readme 
      welcome to www.openlab.com
      [root@node1 nfs1]# cd   ~
  • 第六步:客户端使用开机挂载实现永久挂载

[root@node1 ~]# vim  /etc/fstab   # 编辑开机挂载配置文件,最后一行添加如下内容
192.168.48.130:/nfsfile /nfs1   nfs     defaults        0       0
​
[root@node1 ~]# mount  -a   # 测试
[root@node1 nfs1]# df  -h   # 查看挂载信息
文件系统                    容量  已用  可用 已用% 挂载点
devtmpfs                    4.0M     0  4.0M    0% /dev
tmpfs                       714M     0  714M    0% /dev/shm
tmpfs                       286M  4.2M  282M    2% /run
tmpfs                       4.0M     0  4.0M    0% /sys/fs/cgroup
/dev/mapper/openeuler-root   27G  1.6G   24G    7% /
tmpfs                       714M     0  714M    0% /tmp
/dev/sda1                   974M  151M  756M   17% /boot
192.168.48.130:/nfsfile      27G  1.6G   24G    7% /nfs1
​

NFS账户映射

实验2:
  • 基于上例,将/nfsfile权限修改后,查看客户端是否可以访问成功,是否可以修改数据

# 定位服务端
[root@server ~]# cat  /etc/exports   # 确认是否为rw可读可写的权限
[root@server ~]# cd /nfsfile
[root@server nfsfile]# ll     # 查看原有权限
总用量 4
-rwxrwxrwx 1 root   root   27  6月  1 14:43 readme
-rw-r--r-- 1 nobody nobody  0  6月  1 14:56 test1.txt
[root@server nfsfile]# cd  ~   
[root@server ~]# chmod  -Rf  444  /nfsfile  # 设置新权限,没有wx
[root@server ~]# ll  -d  /nfsfile/
dr--r--r-- 2 root root 37  6月  1 14:56 /nfsfile/
[root@server ~]# ll    /nfsfile/
总用量 4
-r--r--r-- 1 root   root   27  6月  1 14:43 readme
-r--r--r-- 1 nobody nobody  0  6月  1 14:56 test1.txt
​
​
# 定位客户端
[root@node1 ~]# cd  /nfs1   
-bash: cd: /nfs1: 权限不够
​
# 显示无权限,即使服务端exports中有rw权限最后还是以文件系统权限为准
实验3
  • 客户端访问服务端,默认使用服务端的账户映射为nobody,uid与gid均为65534,其值可以修改

# 定位服务端
[root@server ~]# chmod  -Rf  777  /nfsfile   # 先将上例的权限修改回原样
[root@server ~]# ll  -d  /nfsfile/
drwxrwxrwx 2 root root 37  6月  1 14:56 /nfsfile/
​
[root@server ~]# vim  /etc/exports   # 修改映射方式为
/nfsfile        192.168.48.131/24(rw,sync,root_squash)
​
[root@server ~]# systemctl restart  rpcbind  
[root@server ~]# systemctl restart  nfs-server
​
exporting 192.168.48.131/24:/nfsfile
​
# 定位客户端
[root@node1 ~]# cd  /nfs1
[root@node1 nfs1]# touch  test2.txt
[root@node1 nfs1]# ll
总用量 4
-rwxrwxrwx 1 root   root   27  6月  1 14:43 readme
-rwxrwxrwx 1 nobody nobody  0  6月  1 14:56 test1.txt
-rw-r--r-- 1 nobody nobody  0  6月  1 15:15 test2.txt  # root映射为nobody
[root@node1 nfs1]# su  fox
[fox@node1 nfs1]$ touch  test3.txt
[fox@node1 nfs1]$ ll
总用量 4
-rwxrwxrwx 1 root   root   27  6月  1 14:43 readme
-rwxrwxrwx 1 nobody nobody  0  6月  1 14:56 test1.txt
-rw-r--r-- 1 nobody nobody  0  6月  1 15:15 test2.txt
-rw-rw-r-- 1 fox    fox     0  6月  1 15:16 test3.txt  # fox映射为fox
[fox@node1 nfs1]$ su  root
密码: 
​
# 定位服务端
[root@server ~]# vim  /etc/exports
/nfsfile    192.168.48.131/24(rw,sync,all_squash,anonuid=2000,anongid=2000)
​
[root@server ~]# systemctl restart  rpcbind  
[root@server ~]# systemctl restart  nfs-server
​
# 定位客户端
[root@node1 nfs1]# touch  test4.txt
[root@node1 nfs1]# ll
总用量 4
-rwxrwxrwx 1 root   root   27  6月  1 14:43 readme
-rwxrwxrwx 1 nobody nobody  0  6月  1 14:56 test1.txt
-rw-r--r-- 1 nobody nobody  0  6月  1 15:15 test2.txt
-rw-rw-r-- 1 fox    fox     0  6月  1 15:16 test3.txt
-rw-r--r-- 1   2000   2000  0  6月  1 15:19 test4.txt  # 自定义udi及gid
[root@node1 nfs1]# cd  ~

autofs自动挂载服务

产生原因

  • 在一般NFS文件系统的使用过程中,如果客户端要使用服务端所提供的文件系统,可以在 /etc/fstab中设置开机时自动挂载,也可以在登录系统后手动利用mount来挂载。

  • 由于网络的问题,NFS服务器与客户端的连接不会一直存在,当我们挂载了NFS服务器之后,任何一方脱机都可能造成另外一方等待超时,如果在资源挂载后长期不使用,也会造成服务器硬件资源的浪费。

  • 为了解决这样的问题,就出现了下面的想法:

    • 当客户端在有使用NFS文件系统的需求时才让系统自动挂载。

    • 当NFS文件系统使用完毕后(autofs默认自动卸载时间为300s即5分钟),让NFS自动卸载。

  • autofs 自动挂载服务可以帮我们解决这一问题,该服务是运行在客户端的一种 Linux 系统守护进程,在用户需要使用该文件系统时才去动态挂载,从而节约了网络资源和服务器的硬件资源。

安装

[root@node1 ~]# yum install autofs -y   # 客户端安装

配置文件分析

  • 配置文件路径:/etc/auto.master

  • 作用:处于生产环境中的 Linux 服务器,一般会同时管理许多设备的挂载操作。如果把这些设备挂载信息都写入到 autofs 服务的主配置文件中,无疑会让主配置文件臃肿不堪,不利于服务执行效率,也不利于日后修改里面的配置内容,则需要将挂载的设备独立配置形成子文件,主配置文件只存储配置挂载设置的文件名

  • /etc/auto.master文件内容格式:挂载父目录 子配置文件

    • 挂载目录:不需要事先存在,因为autofs会主动建立该目录

    • 子配置文件:文件名可自定义

    • 例:/nfs /etc/auto.nfs

  • 子配置文件由自己创建,内容格式:

    • 本地挂载子目录 [-挂载参数] 服务器地址:目录

    • 例:testmnt 192.168.48.130:/data

    • 挂载参数:

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

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

相关文章

鸿蒙ArkTS-发请求第三方接口显示实时新闻列表页面

发请求展示新闻列表 鸿蒙ArkTS-发请求第三方接口显示实时新闻列表页面 1. 效果图 新闻首页: 点击某一新闻的详情页面(需要使用模拟器才能查看详情页面): 2. 代码 1. key准备 首先需求到聚合网申请一个key,网址如下…

【创造型模式】工厂方法模式

文章目录 工厂方法模式工厂方法模式当中的角色和职责工厂方法模式的实现工厂方法模式的优缺点 工厂方法模式 今天我们继续学习一例创造型设计模式——工厂方法模式。参考的主要资料是刘丹冰老师的《Easy 搞定 Golang 设计模式》。 工厂方法模式当中的角色和职责 简单来说&…

【MySQL】使用文件进行交互

目录 准备工作 1.从文本文件中读取数据(导入) 1.1.CSV 文件 1.2.设置导入导出的路径 1.3.导入文件 1.4.将数据写入文本文件(导出) 2.从文件中读取并执行SQL命令 2.1.通过mysql监视器执行编写在文件里面的SQL语句 2.2.通过…

# 大模型的本地部署与应用:从入门到实战

大模型的本地部署与应用:从入门到实战 在当今人工智能飞速发展的时代,大模型(尤其是大型语言模型,LLMs)已经成为自然语言处理(NLP)领域的核心力量。从文本生成、机器翻译到问答系统&#xff0c…

Java对象内存模型、如何判定对象已死亡?

一、Java对象内存模型 Java对象在内存中由三部分组成: 含类元数据指针(指向方法区的Class对象)和Mark Word(存储对象哈希码、锁状态、GC分代年龄等信息)。 若为数组对象,还包含数组长度数据。 1&#xff0c…

智慧化工园区安全风险管控平台建设方案(Word)

1 项目概况 1.1 园区概况 1.1.1 XX化工园区简况 1.1.2 企业现状 1.1.3 园区发展方向 1.1.4 园区信息化现状 1.2 项目建设背景 1.2.1 政策背景 1.3 项目建设需求分析 1.3.1 政策需求分析 1.3.2 安全生产监管需求分析 1.3.3 应急协同管理需求分析 1.3.4 工业互联网安…

【uniapp】 iosApp开发xcode原生配置项(iOS平台Capabilities配置)

如果你需要配置诸如:Access Wi-Fi Information 简单地说就是这个地址 ios平台capabilities配置 本来这种配置就是在Xcode的平台中选中即可,他们的信息会存储在XCode工程的.entitlements和Info.plist文件。 按照uniapp文档说的, HBuilderX4.…

MYSQL优化(1)

MYSQL调优强调的是如何提高MYSQL的整体性能,是一套整体方案。根据木桶原理,MYSQL的最终性能取决于系统中性能表现最差的组件。可以这样理解,即使MYSL拥有充足的内存资源,CPU资源,如果外存IO性能低下,那么系…

基于BERT预训练模型(bert_base_chinese)训练中文文本分类任务(AI老师协助编程)

新建项目 创建一个新的虚拟环境 创建新的虚拟环境(大多数时候都需要指定python的版本号才能顺利创建): conda create -n bert_classification python3.9激活虚拟环境: conda activate myenvPS:虚拟环境可以避免权限问题,并隔离…

从数据到智能:openGauss+openEuler Intelligence的RAG架构实战

随着人工智能和大规模语言模型技术的崛起,传统的搜索引擎由于其只能提供简单的关键字匹配结果,已经越来越无法满足用户对于复杂、多样化和上下文相关的知识检索需求。与此相对,RAG(Retrieval-Augmented Generation)技术…

【Linux】初见,基础指令

前言 本文将讲解Linux中最基础的东西-----指令,带大家了解一下Linux中有哪些基础指令,分别有什么作用。 本文中的指令和选项并不全,只介绍较为常用的 pwd指令 语法:pwd 功能:显示当前所在位置(路径&#xf…

什么是实时流数据?核心概念与应用场景解析

在当今数字经济时代,实时流数据正成为企业核心竞争力。金融机构需要实时风控系统在欺诈交易发生的瞬间进行拦截;电商平台需要根据用户实时行为提供个性化推荐;工业物联网需要监控设备状态预防故障。这些场景都要求系统能够“即时感知、即时分…

工业RTOS生态重构:从PLC到“端 - 边 - 云”协同调度

一、引言 在当今数字化浪潮席卷全球的背景下,工业领域正经历着深刻变革。工业自动化作为制造业发展的基石,其技术架构的演进直接关系到生产效率、产品质量以及企业的市场竞争力。传统的PLC(可编程逻辑控制器)架构虽然在工业控制领…

基于开源链动2+1模式AI智能名片S2B2C商城小程序的社群构建与新型消费迎合策略研究

摘要:随着个性化与小众化消费的崛起,消费者消费心理和模式发生巨大变化,社群构建对商家迎合新型消费特点、融入市场经济发展至关重要。开源链动21模式AI智能名片S2B2C商城小程序的出现,为社群构建提供了创新工具。本文探讨该小程序…

高性能RPC框架--Dubbo(五)

Filter: filter过滤器动态拦截请求(request)或响应(response)以转换或使用请求或响应中包含的信息。同时对于filter过滤器不仅适合消费端而且还适合服务提供端。我们可以自定义在什么情况下去使用filter过滤器 Activa…

搭建自己的语音对话系统:开源 S2S 流水线深度解析与实战

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…

feign调用指定服务ip端口

1 背景 在springcloud开发时候,同时修改了feign接口和调用方的代码,希望直接在某个环境调用修改的代码,而线上的服务又不希望被下线因为需要继续为其他访问页面的用户提供功能后端服务,有时候甚者包含你正在修改的功能。 2 修改…

【深尚想!爱普特APT32F1023H8S6单片机重构智能电机控制新标杆】

在智能家电与健康器械市场爆发的今天,核心驱动技术正成为产品突围的关键。传统电机控制方案面临集成度低、开发周期长、性能瓶颈三大痛点,而爱普特电子带来的APT32F1023H8S6单片机无感三合一方案,正在掀起一场智能电机控制的技术革命。 爆款基…

Unity EventCenter 消息中心的设计与实现

在开发过程中,想要传递信号和数据,就得在不同模块之间实现通信。直接通过单例调用虽然简单,但会导致代码高度耦合,难以维护。消息中心提供了一种松耦合的通信方式:发布者不需要知道谁接收事件,接收者不需要…

MySQL远程连接10060错误:防火墙端口设置指南

问题描述: 如果你通过本机服务器远程连接MySQL,出现10060错误,那可能是你的防火墙的问题 解决: 第一步:查看防火墙规则 通过以下命令查询,看ports是否开放了3306端口,目前只开放了22端口 f…