Centos7部署NFS
搭建NFS存储服务器--基于CentOS7系统 - jianmuzi - 博客园
在CentOS中搭建NFS - 陌上荼靡 - 博客园
NFS简介
NFS 是 Network FileSystem
的缩写,顾名思义就是网络文件存储系统,它最早是由 Sun 公司发展出来的,也是 FreeBSD 支持的文件系统中的一个,它允许网络中的计算机之间通过 TCP/IP 网络共享资源。通过 NFS,我们本地 NFS 的客户端应用可以透明地读写位于服务端 NFS 服务器上的文件,就像访问本地文件一样方便。简单的理解,NFS 就是可以透过网络,让不同的主机、不同的操作系统可以共享存储的服务。NFS在文件传送或信息传送过程中依赖于RPC协议。RPC (Remote Procedure Call) ——远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。可以这么理解,NFS是一个文件存储系统,而RPC负责信息的传输。
环境准备
为了搭建并且检验NFS服务的配置,我们需要准备两台安装Linux系统(这里以Centos7为例)的服务器,一台充当NFS服务端,开放共享目录,提供NFS存储服务;一台充当NFS客户端,挂载服务端共享目录到本地,使用NFS存储服务。
表1 服务端和客户端IP配置
C/S类型 | eth0 ip |
服务端 | 192.168.203.10 |
客户端 | 192.168.203.20 |
环境搭建
(一)NFS服务端配置
安装软件
# nfs-utils依赖rpcbind, 因此, 执行 yum -y install nfs-utils 也会安装rpcbind
yum -y install nfs-utils rpcbind
创建需要共享的NFS目录,并赋予相关权限
mkdir /home/nfs
chmod 777 /home/nfs
配置
编辑nfs的配置文件,默认为空。
vi /etc/exports
在exports
文件里面填入内容(网段根据实际情况填写,地址与括号之间不能有空格,括号里面为权限属性)
/mnt/nfs_file 192.168.203.0/24(rw,no_root_squash,no_all_squash,async,anonuid=501,anongid=501)
这里我们挂载的NFS指定为可读写的目录,并且进行同步读写,将所有root用户都映射为匿名用户
/home/nfs 192.168.203.0/24(rw,sync,root_squash)
查看完整的配置参数介绍:
man exports
含义:
NFS服务端将/mnt/nfs_file
目录共享出来,给192.168.203.0
网段的客户端使用
权限属性说明:
rw
, 读写ro
, 只读no_root_squash
, 不将root用户转换为匿名,当NFS客户端以root访问时,则映射为NFS服务器的root管理员root_squash
, 将root用户转换为匿名,当NFS客户端以root访问时,则映射为NFS服务器对应的匿名用户no_all_squash
, 所有用户都不转换为匿名用户,无论NFS客户端使用什么账户访问,原样映射为对应用户身份all_squash
, 所有用户都转换为匿名用户,无论NFS客户端使用什么用户访问,均映射为NFS服务器的匿名用户sync
, 同步模式,将数据写入内存并同步写入磁盘;async
, 异步即不同步写入磁盘, 先将数据写入内存,然后再定期写入磁盘;anonuid=xxx
, 指定 nfs 服务器/etc/passwd
文件中匿名用户的 UID,要和root_squash
以及all_squash
一同使用并生效anongid=xxx
, 指定 nfs 服务器/etc/passwd
文件中匿名用户的 GID,要和root_squash
以及all_squash
一同使用并生效
tip:
如果有多个共享目录配置,则使用多行,一行一个配置。
编译配置
exportfs -r
启动nfs
(1)顺序启动
systemctl start rpcbindsystemctl start nfs
systemctl start nfs-server
(2)加入开机自启
systemctl enable rpcbind systemctl enable nfs
校验配置
$. showmount -e localhost
# 输出
Export list forlocalhost:
/mnt/nfs_file 192.168.203.0/24
编辑配置,指定NFS通信端口
vi /etc/sysconfig/nfs
在文末加入:
RQUOTAD_PORT=30001LOCKD_TCPPORT=30002LOCKD_UDPPORT=30002MOUNTD_PORT=30003STATD_PORT=30004STATD_OUTGOING_PORT=30005
指定NFS相关服务的端口,便于Firewall防火墙开放端口。
注:其实,这里也可以不用配置,即不指定端口,那么配置Firewalld防火墙时,需要放过特定IP。
重启服务
systemctl restart rpcbindsystemctl restart nfssystemctl restart nfslock
使用rpcinfo -p查看并验证
rpcinfo -p
会出现
program vers proto port service100000 4 tcp 111 portmapper100000 3 tcp 111 portmapper100000 2 tcp 111 portmapper100000 4 udp 111 portmapper100000 3 udp 111 portmapper100000 2 udp 111 portmapper100005 1 udp 30003 mountd100005 1 tcp 30003 mountd100005 2 udp 30003 mountd100005 2 tcp 30003 mountd100005 3 udp 30003 mountd100005 3 tcp 30003 mountd100003 3 tcp 2049 nfs100003 4 tcp 2049 nfs100227 3 tcp 2049 nfs_acl100003 3 udp 2049 nfs100003 4 udp 2049 nfs100227 3 udp 2049 nfs_acl100021 1 udp 30002 nlockmgr100021 3 udp 30002 nlockmgr100021 4 udp 30002 nlockmgr100021 1 tcp 30002 nlockmgr100021 3 tcp 30002 nlockmgr100021 4 tcp 30002 nlockmgr100024 1 udp 30004 status100024 1 tcp 30004 status
防火墙开放端口或IP
如果firewall防火墙开着,需要把111,2049,30001到30005的端口都开放出来
firewall-cmd --add-port={111,2049,30001,30002,30003,30004,30005}/tcp --permanent
firewall-cmd --add-port={111,2049,30001,30002,30003,30004,30005}/udp --permanent
firewall-cmd --reload
注:如果未指定NFS
端口,那么应配置firewall
防火墙,放过192.168.203.0/24
段的ip
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.203.0/24" accept"
firewall-cmd --reload
其它防护墙配置示例参考:
如果执行上述的mount
命令一直处于等待状态,可能是服务器上启用了防火墙或者是云服务器本身的防火墙限制了端口的访问,需要在NFS服务端
开放以下端口号的访问权限:111
、2049
、20048
。如果是云服务器可以到各自的网站后台去配置防火墙策略,如果是本地的机器可以使用以下命令开放指定的端口。
firewall-cmd --zone=public --add-port=111/tcp --permanent
firewall-cmd --zone=public --add-port=111/udp --permanent
firewall-cmd --zone=public --add-port=2049/tcp --permanent
firewall-cmd --zone=public --add-port=20048/tcp --permanent
firewall-cmd --zone=public --add-port=20048/udp --permanent
firewall-cmd --reload
上述端口信息都可以在以下文件中查找到
/usr/lib/firewalld/services/nfs.xml
/usr/lib/firewalld/services/rpc-bind.xml
/usr/lib/firewalld/services/mountd.xml
如果你不关心具体的端口号,也可以直接使用以下命令,直接根据配置文件放行相应的端口
firewall-cmd --zone=public --add-service=nfs --permanent
firewall-cmd --zone=public --add-service=rpc-bind --permanent
firewall-cmd --zone=public --add-service=mountd --permanent
firewall-cmd --reload
(二)NFS客户端配置
1. 安装nfs
云平台管理服务器也需要安nfs
但无需启动
yum -y install nfs-utils rpcbind
2. 查看服务端挂载的目录
showmount -e 192.168.203.10
# 可以看到
Export list for192.168.203.10:
/mnt/nfs_file 192.168.203.0/24
3. 挂载共享目录
mkdir /mnt/file_nfc
chmod 777 /mnt/file_nfc
mount -t nfs 192.168.203.10:/mnt/nfs_file /mnt/file_nfc -o proto=tcp -o nolock
# or
mount -t nfs 192.168.203.10:/mnt/nfs_file /mnt/file_nfc# 如若不再需要可以使用以下命令卸载NFS目录
umount /mnt/file_nfc
同时把这一行加到/etc/rc.local
文件的最后,即加入开机启动
或者 修改开机自动挂载文件/etc/fatsb,末行填入如下内容:
192.168.203.10:/mnt/nfs_file /mnt/file_nfc nfs defaults,tcp,nolock 0 0
4.查看挂载盘
# 最后一行显示192.168.203.10:/mnt/nfs_file /mnt/file_nfc,说明挂载成功了
$. df –h
# 输出
Filesystem Size Used Avail Use% Mounted on
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 1.4M 7.8G 1% /run
/dev/vda1 197G 53G 134G 29% /
192.168.203.10:/mnt/nfs_file 197G 66G 122G 35% /mnt/file_nfc
5. 验证
在客户端本地/mnt/file_nfc
目录中放入一个文件(如a.txt),然后去服务端的/mnt/nfs_file
目录中查看,若存在a.txt
,则说明配置成功
其他命令
# 在服务端执行,查看nfs状态信息
nfsstat -s# 在客户端执行,查看nfs挂载信息
nfsstat -m# 查看服务端的远程共享信息,此命令会调用服务端的20048端口
showmount -e 192.168.202.151# 查看rpcbind注册的所有端口号
rpcinfo -p# 在服务端执行,重新挂载/etc/exports中配置
exportfs -r
相关文章:
Centos7部署NFS
搭建NFS存储服务器--基于CentOS7系统 - jianmuzi - 博客园 在CentOS中搭建NFS - 陌上荼靡 - 博客园 NFS简介 NFS 是 Network FileSystem 的缩写,顾名思义就是网络文件存储系统,它最早是由 Sun 公司发展出来的,也是 FreeBSD 支持的文件系统…...

我已经开了一个融资融券的账户了,还可以再在别的券商开两融(信用账户)吗?
融资融券交易又称“证券信用交易”或保证金交易,是指投资者向具有融资融券业务资格的证券公司提供担保物,借入资金买入证券(融资交易)或借入证券并卖出(融券交易)的行为。 简单说就是融资做多,…...

Spring Cloud 版本升级记:OpenFeignClient与Gateway的爱恨交织
Spring Cloud 版本升级记:OpenFeignClient与Gateway的爱恨交织 近日,在负责的项目中,我对 Spring Boot、Spring Cloud 以及 Spring Cloud Alibaba 进行了版本升级。原以为会一切顺利,没想到却遭遇了 Spring Cloud Gateway 无法正…...
华为OD机试 - 最多购买宝石数目(Java JS Python C)
题目描述 橱窗里有一排宝石,不同的宝石对应不同的价格,宝石的价格标记为 gems[i] 0 ≤ i < nn = gems.length宝石可同时出售0个或多个,如果同时出售多个,则要求出售的宝石编号连续; 例如客户最大购买宝石个数为m,购买的宝石编号必须为:gems[i],gems[i+1],...,ge…...

【LeetCode】挑战100天 Day17(热题+面试经典150题)
【LeetCode】挑战100天 Day17(热题面试经典150题) 一、LeetCode介绍二、LeetCode 热题 HOT 100-192.1 题目2.2 题解 三、面试经典 150 题-193.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站,提供各种算法和数据结构的题目&…...
正则表达式的基本语法
1.正则表达式基本语法 两个特殊的符号^和$。他们的作用是分别指出一个字符串的开始和结束。例子如下: "^The":表示所有以"The"开始的字符串("There","The cat"等)࿱…...

使用visual Studio MFC 平台实现对灰度图添加椒盐噪声,并进行均值滤波与中值滤波
平滑处理–滤波 本文使用visual Studio MFC 平台实现对灰度图添加椒盐噪声,并进行均值滤波与中值滤波 关于其他MFC单文档工程可参考 01-Visual Studio 使用MFC 单文档工程绘制单一颜色直线和绘制渐变颜色的直线 02-visual Studio MFC 绘制单一颜色三角形、渐变颜色边…...

Django HMAC 请求签名校验与 Vue.js 实现安全通信
概要 在 Web 应用的开发过程中,确保数据传输的安全性和完整性是一个不容忽视的问题。使用 HMAC(Hash-based Message Authentication Code)算法对请求内容进行签名校验,是一种常见且有效的安全策略。本文将详细介绍如何在 Django …...

深度学习之循环神经网络
视频链接:6 循环神经网络_哔哩哔哩_bilibili 给神经网络增加记忆能力 对全连接层而言,输入输出的维数固定,因此无法处理序列信息 对卷积层而言,因为卷积核的参数是共享的,所以卷积操作与序列的长度无关。但是因为卷积…...

与原有视频会议系统对接
要实现与原有视频会议系统对接,需要确保通信协议的一致性。连通宝视频会议系统可与第三方视频会议系统对接。实现与第三方会议系统对接还可以使用会议室连接器,可以确保不同系统之间的数据传输和交互。 具体对接流程可能因不同品牌和类型的视频会议系统而…...

C# Serilog--可记录异常完整路径
1.Serilog安装 2.控制台代码 --设置日志记录器的最小级别为 Debug,即只记录 Debug 级别及以上的日志信息 --.WriteTo.File("logs\\log.txt", rollingInterval: RollingInterval.Day):将日志信息写入到指定路径的文件中(这里的路径…...

鉴源实验室 | 汽车网络安全攻击实例解析(三)
作者 | 张璇 上海控安可信软件创新研究院工控网络安全组 来源 | 鉴源实验室 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 引言:随着现代汽车技术的迅速发展,车辆的进入和启动方式经历了显著的演变。传统的物理钥匙逐渐被无钥匙进…...
php 中生成订单号
字母日期。。。。。。。 function setOrderNo($year 2011) {$yCode array(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z);$orderSn $yCode[intval(date(Y)) - $year] . strtoupper(dechex(date(m))) . date(d) . substr(time(), -5) . s…...

Jmeter工具+ant+jenkins实现持续集成
jmeterantjenkins持续集成 一、下载并配置jmeter 首先下载jmeter工具,并配置好环境变量;参考: jmeter默认保存的是.jtl格式的文件,要设置一下bin/jmeter.properties,文件内容,保存jmeter.save.saveservice.output_f…...

基于SSM的经典电影推荐网站设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…...
JavaScript中使用JSON的基本操作示例
简介 JSON(JavaScript Object Notation)是一种数据交换格式,也是JavaScript中处理数据的常见方式之一。JSON是一种轻量级的数据交换格式,易于阅读和编写,同时也易于解析和生成。在JavaScript中,可以使用内…...
上拉、下拉电阻的作用
上拉、下拉电阻的作用 (1)一般作为单键触发使用,如果芯片本身没有内接电阻,为了使单键维持在不被触发的状态或触发后回到原状态,必须在芯片外部接一个电阻,即保持芯片引脚高电平(或低电平)输入,这样单击按键…...

docker部署elasticsearch+kibana+head
前言 最近,项目需要使用elasticsearch,所以就想快速安装一个使用,最开始是docker安装了7.10.1版本。 后面计划使用Java开发,发现有 RestHighLevelClient 和 Elasticsearch Java API Client两种客户端连接方式。 然后网上查阅了一…...

Linux:vim的简单使用
个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C》《Linux》 文章目录 前言一、vim的基本概念二、vim的基本操作三、vim正常模式命令集四、vim底行模式命令集五、.xxx.swp的解决总结 前言 本文是对Linux中vim使用的总结 一、vim的基本概念 …...
Python---文件和文件夹操作
os模块 在Python中文件和文件夹的操作要借助os模块里面的相关功能,具体步骤如下: 第一步:导入os模块 import os 第二步:调用os模块中的相关方法 os.函数名() 与文件操作相关方法 编号函数功能1os.rename(目标文件名称&…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...