Linux/centos上如何配置管理NFS服务器?
Linux/centos上如何配置管理NFS服务器?
- 1 NFS基础了解
- 1.1 NFS概述
- 1.2 NFS工作流程
- 2 安装和启动NFS服务
- 2.1 安装NFS服务器
- 2.2 启动NFS服务
- 3 配置NFS服务器和客户端
- 3.1 配置NFS服务器
- 3.2 配置NFS客户端
- 4 实际示例
- 4.1 基本要求
- 4.2 案例实现
1 NFS基础了解
NFS(Network File System)即文件操作系统;NFS允许网络中不同计算机相互之间共享资源。
1.1 NFS概述
- 1980年由
SUN发展出来的在UNIX&Linux系统间实现文件共享的一种方法; - 是一种文件系统协议,支持应用程序在客户端通过网络存取位于服务器磁盘中的数据;
NFS只提供网络文件共享,不提供数据传输功能;NFS客户端和服务端需借助RPC(Remote Procedure Calls)实现数据传输;NFS服务器目录被访问称为导出(export),客户机访问导出目录过程称为挂载(mount)或导入(import)。
1.2 NFS工作流程
第一步:访问NFS共享资源,NFS客户端发出询问请求,即客户端RPC服务通过网络向服务端RPC服务的111端口发出询问请求。
第二步: NFS服务端RPC找到对应已注册的NFSdaemon端口,通知客户端RPC;
第三步:NFS客户端获取端口,直接与NFSNFSdaemon联机存储数据。
第四步:NFS客户端吧数据存储成功后,告诉用户结果。
2 安装和启动NFS服务
2.1 安装NFS服务器
- 一般情况,系统均已安装NFS;
- 先检查下是否安装NFS,以下两个是相关的依赖包:
rpm -qa | grep nfs-utils
rpm -qa | grep rpcbind
- 经检查是已经安装了的:

- 如果系统没有安装NFS依赖包,则需要安装:
yum clean all
yum -y install nfs-utils rpcbind
2.2 启动NFS服务
- NFS状态查看:
systemctl status rpcbind.service
systemctl status nfs.service

- 启动NFS服务:
systemctl start rpcbind.service
systemctl start nfs.service
- 再次查看状态,都是启动的:

- 停止NFS服务:
systemctl stop nfs.service
- 重启NFS服务:
systemctl restart nfs.service
- 设置开机自启动NFS服务:
systemctl enable rpcbind.service
systemctl enable nfs.service
3 配置NFS服务器和客户端
3.1 配置NFS服务器
- 配置文件在
/etc/exports; - 格式为:
共享目录 [客户端1(参数)] [客户端2(参数)]
共享目录:NFS服务器需要共享的实际路径(绝对路径);
客户端:可以访问共享目录的计算机。
- 客户端常用形式:
| 客户端 | 说明 |
|---|---|
192.168.1.111 | 指定IP地址的主机 |
192.168.1.0/24 | 指定子网的所有主机 |
192.168.1.* | 指定子网的所有主机 |
www.xxx.com | 指定域名的主机 |
*.xxx.com | 指定域中的所有主机 |
* | 所有主机 |
访问权限参数:访问权限设置。
- 常用访问权限:
| 访问权限 | 说明 |
|---|---|
ro | 只读 |
rw | 读写 |
用户映射参数
- 用户映射参数表:
| 用户映射 | 说明 |
|---|---|
all_squash | 将远程访问的所有用户映射为匿名用户或用户组(nfsnobody) |
no_all_squash | 与上边相反(默认设置) |
root_squash | 将root用户… (默认设置) |
no_root_squash | 与上边相反 |
anonuid=xxx | 将该匿名账号为本地账号(UID=xxx) |
anongid=xxx | 将该匿名用户组为本地用户组(GID=xxx) |
其它参数:对输出目录进行控制。
- 常用其它参数:
| 其它参数 | 说明 |
|---|---|
secure | 限制客户端只能从小于1024的TCP/IP端口链接NFS |
insecure | 语序客户端大于1024的TCP/IP端口连接NFS |
sync | 将数据同步写入内存缓冲区与磁盘中 |
async | 将数据先保存在缓冲区中,必要时才写入磁盘 |
wdelay | 检查是否有相关的写操作 |
no_wdelay | 有写操作立即执行,与sync配合使用 |
subtree_check | 若输出目录为子目录,则NFS服务器将检查父目录的权限 |
no_subtree_check | 若输出目录为子目录,则NFS服务器不检查父目录的权限 |
- 比如将
/mnt/temp目录,只给IP为172.16.1.33的计算机进行读写权限:
/mnt/temp 172.16.1.33 (rw, sync)
- 比如将
/mnt/temp01目录,只给子网中为172.16.1.0/24的计算机进行读写权限,其他计算机制只读权限:
/mnt/temp0 172.16.1.0/24 (rw, async) * (ro)
3.2 配置NFS客户端
- 查看NFS服务器信息:
showmount [选项] (参数)
-d:仅显示已被NFS客户端加载的共享目录;
-e:显示NFS服务器上所有的共享目录。
showmount -e 192.168.0.190
在使用showmount时建议关闭防火墙,将SELinux设为为允许。
systemctl stop firewalld.service
setenforce 0
getenforce
- 挂在NFS服务器的共享目录:
将NFS的共享目录挂在到本地:
mount -t NFS服务器IP:输出目录 本地挂在目录
- 比如:
mkdir /mnt/mytemp
mount -t nfs 192.168.0.190:/mnt/mytemp /mnt/mytemp
- 卸载NFS服务器:
umount 挂载点
- 启动时自动挂在NFS共享目录:
192.168.0.190: /mnt/temp /mnt/mytemp nfs defaults 0 0
4 实际示例
4.1 基本要求
- NFS服务器192.168.0.190;
- 要求1:共享目录/mnt/temp,允许192.168.0.0/24网段内计算机访问;
- 要求2:共享目录/mnt/share, 允许用户zhang访问,IP为192.168.0.10;
- 要求3:共享目录/mnt/upload,允许192.168.0.0/24网段作为上传目录,所属组为nfsupload,UID和GID均为666;
- 要求4:共享目录/mnt/nfs,除192.168.0.0/24网段用户访问,只读,可向internet提供数据内容;
4.2 案例实现
- 安装NFS服务:
yum -y install rpcbind
yum -y install nfs-utils
- 创建目录和测试文件:
# 创建目录:
mkdir -p /mnt/temp
mkdir -p /mnt/share
mkdir -p /mnt/upload
mkdir -p /mnt/nfs# 创建测试文件
touch /mnt/temp/temp1.txt /mnt/temp/temp2.txt
touch /mnt/share/data1.txt /mnt/share/data2.txt
touch /mnt/upload/upload.txt
touch /mnt/nfs/nfs1.txt /mnt/nfs/nfs2.txt


- 设置共享目录权限属性:
# 要求1:
chmod 1777 /mnt/temp/
ll -d /mnt/temp/

# 要求2:
useradd zhang
passwd zhang
cat /etc/passwd | grep zhang
chmod 700 /mnt/share/
chown -R zhang:zhang /mnt/share/
ll -d /mnt/share/

# 要求3:
groupadd -g 666 nfsupload
useradd -g 666 -u 666 -M nfsupload
cat /etc/passwd | grep nfs
chown -R nfsupload:nfsupload /mnt/upload
ll -d /mnt/upload/

# 要求4:
ll -d /mnt/nfs/

- 编辑
/etc/exports:
/mnt/temp 192.168.0.0/24 (rw,no_root_squash)
/mnt/share 192.168.0.10 (rw)
/mnt/upload 192.168.0.0/24 (rw,all_squash,anonuid = 666,anongid = 666)
/mnt/nfs 192.168.0.0/24 (ro) * (rw,all_squash)
- 关闭防火墙,设置Selinux为允许,重启NFS服务:
systemctl stop firewalld.service
setenforce 0
getenforce
systemctl restart nfs
- NFS客户端安装客户端软件:
yum -y install nfs-utils
- 查看NFS服务器上共享的目录:
showmount -e 192.168.0.190

- 在客户机上创建目录,将NFS的目录挂在到该目录:
mkdir /mnt/ClientNFS
mount -t nfs 192.168.0.190:/mnt/nfs/ /mnt/ClientNFS/
- 同样方法去挂载其他的NFS目录即可;
- 并在客户机上创建组666:
groupaddd -g 666 nfsupload
useradd -g 666 -u 666 -M nfsupload
相关文章:
Linux/centos上如何配置管理NFS服务器?
Linux/centos上如何配置管理NFS服务器? 1 NFS基础了解1.1 NFS概述1.2 NFS工作流程 2 安装和启动NFS服务2.1 安装NFS服务器2.2 启动NFS服务 3 配置NFS服务器和客户端3.1 配置NFS服务器3.2 配置NFS客户端 4 实际示例4.1 基本要求4.2 案例实现 1 NFS基础了解 NFS&…...
Element组件浅尝辄止5:Empty 空状态组件
Empty空状态组件:空状态时的占位提示。 如第一次进入当前功能模块时,数据状态为空,则展示空状态,可用到Empty组件 1.How? <el-empty description"描述文字"></el-empty> 2.自定义图片 通过设置 image 属…...
【华为Datacom 综合拓扑案例—分享篇】
拓扑图 题目要求 实验要求: 1、PC1\PC2\PC3\PC4采用DHCP自动获取IP地址,SW5作为服务器,SW3和SW4作为中继 创建地址池ip pool huawei1和ip pool huawei2,租期都为2天 2、SW3与SW4做链路聚合,采用LACP模式。SW3作为主…...
springcloud3 使用openfegin实现getpost请求调用
一 项目介绍 1.1 工程介绍 1.consumer9008 2.provider9009 二 get请求 2.1 消费端 1.controller 2.service 2.2 提供者 1.提供者 2.3 测试请求 地址: http://localhost:9008/consumer/payment/nacos/2223 三 post请求 3.1 消费者 3.2 提供者 3.3 测试请求…...
【JVM】类装载的执行过程
文章目录 类装载的执行过程1.加载2.验证3.准备4.解析5.初始化6.使用7.卸载 类装载的执行过程 类装载总共分为7个过程,分别是 加载,验证,准备、解析、初始化、使用、卸载 1.加载 将类的字节码文件加载到内存(元空间)中。这一步会…...
FreeRTOS(独立看门狗监测任务执行与低功耗Tickless模式)
资料来源于硬件家园:资料汇总 - FreeRTOS实时操作系统课程(多任务管理) 目录 一、独立看门狗介绍 二、看门狗监测多任务执行思路 1、监测目标 2、监测方案 3、应用注意事项 三、看门狗监测多任务编程 1、STM32cubeMX配置 2、代码编写 四、低功耗Tickless模…...
预训练GNN:GPT-GNN Generative Pre-Training of Graph Neural Networks
一.文章概述 本文提出了一种自监督属性图生成任务来预训练GNN,使得其能捕图的结构和语义属性。作者将图的生成分为两个部分:属性生成和边生成,即给定观测到的边,生成节点属性;给定观测到的边和生成的节点属性…...
Python实现透明隧道爬虫ip:不影响现有网络结构
作为一名专业爬虫程序员,我们常常需要使用隧道代理来保护个人隐私和访问互联网资源。本文将分享如何使用Python实现透明隧道代理,以便在保护隐私的同时不影响现有网络结构。通过实际操作示例和专业的解析,我们将带您深入了解透明隧道代理的工…...
并发编程系列-CompletableFuture
利用多线程来提升性能,实质上是将顺序执行的操作转化为并行执行。仔细观察后,你还会发现在顺序转并行的过程中,一定会牵扯到异步化。举个例子,现在下面这段示例代码是按顺序执行的,为了优化性能,我们需要将…...
锁粒度的粗细与时空损耗互换
1 空间换时间的cases 1.1 redis的用户分组限流和用户定制的限流器 Redis 用户分组限流和用户定制的限流器:使用 Redis 进行用户分组限流或用户定制的限流意味着你使用 Redis 数据库来维护用户的访问限制。可以通过计数器、滑动窗口或令牌桶等算法来实现限流。用户…...
[Android 11]使用Android Studio调试系统应用之Settings移植(七):演示用AS编译错误问题
文章目录 1. 篇头语2. 系列文章3. AS IDE的配置3.1 AS版本3.2 Gradle JDK 版本4. JDK的下载5. AS演示工程地址6.其他版本JDK导致的错误1. 篇头语 距离2021年开始,系列文章发表已经有近两年了,依旧有网友反馈一些gitee上演示源码编译的一些问题,这里就记录一下。 2. 系列文章…...
MyBatis面试题
MyBatis面试题: 1、MyBatis是什么? Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,加载驱动、创建连接、创建statement等繁杂的过程,开发者开发时只需要关注如何编写SQL语句…...
Lorenz系统最大lyapunov exponent的求解
首先看下Lorenz混沌系统: 赋予初始值,例如: 当然,初始值可以根据需要设定。 看下他的吸引子,很美: 看下他的分叉图:...
c#实现策略模式
下面是一个使用C#实现策略模式的示例代码: using System;// 策略接口 public interface IStrategy {void Execute(); }// 具体策略类A public class ConcreteStrategyA : IStrategy {public void Execute(){Console.WriteLine("具体策略A的执行逻辑");} …...
家纺行业小程序商城搭建指南
家纺行业作为一个不可或缺的消费领域,近年来备受关注。随着互联网的发展,小程序商城成为家纺行业拓展市场的新利器。搭建一个家纺行业小程序商城并不是一件困难的事情,只需要按照以下几个步骤进行操作,就能轻松上手。 首先&#x…...
Python语法基础--条件选择
学习目标 使用比较运算符编写布尔表达式。使用random.randint(a,b)或者random.random()函数来生成随机数。编写布尔表达式(AdditionQuiz)。使用单向if语句实现选择控制。使用单向if语句编程。使用双向if-else语句实现选择控制。使用嵌套if和多向if-elif-else语句实现选择控制。…...
visual studio 2017 运行的程序关闭后不能再运行?(visual studio建立项目之后退出,如何再次完整打开项目?)
在你储存项目的文件夹里面应该是这样的 里面.vcxproj后缀名的就是原来创建的项目,直接打开这个头文件源文件就会一起出来了! 真的管用,亲测有效。...
亚马逊feedback和review有什么区别
在亚马逊上,"Feedback"(反馈)和"Review"(评论)是两个不同的概念,它们在购物体验中起着不同的作用。 Feedback(反馈): 亚马逊的"Feedback"…...
新疆大学841软件工程考研
1.软件生产的发展经历了三个阶段,分别是____、程序系统时代和软件工程时代时代。 2.可行性研究从以下三个方面研究每种解决方法的可行性:经济可行性、社会可行性和_____。 3.HIPO图的H图用于描述软件的层次关系&…...
Vue: el-form 自定义校验规则
Vue 的 el-form 组件可以使用自定义校验规则进行表单验证。自定义校验规则可以通过传递一个函数来实现,该函数接受要校验的字段的值作为参数,并返回一个布尔值或一个 Promise 对象。 下面是一个示例,演示如何在 el-form 中使用自定义校验规则…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
C++实现分布式网络通信框架RPC(2)——rpc发布端
有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...
AD学习(3)
1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分: (1)PCB焊盘:表层的铜 ,top层的铜 (2)管脚序号:用来关联原理图中的管脚的序号,原理图的序号需要和PCB封装一一…...
渗透实战PortSwigger Labs指南:自定义标签XSS和SVG XSS利用
阻止除自定义标签之外的所有标签 先输入一些标签测试,说是全部标签都被禁了 除了自定义的 自定义<my-tag onmouseoveralert(xss)> <my-tag idx onfocusalert(document.cookie) tabindex1> onfocus 当元素获得焦点时(如通过点击或键盘导航&…...
