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服务端开放以下端口号的访问权限:111204920048。如果是云服务器可以到各自的网站后台去配置防火墙策略,如果是本地的机器可以使用以下命令开放指定的端口。

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

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

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

相关文章

Shell循环:expect(一)

一、名词解释: 我们通过Shell可以实现简单的控制流功能,如:循环、判断等。但是对于需要交互的场合则必须通过人工来干预,有时候我们可能会需要实现和交互程序如ssh服务器等进行交互的功能。而Expect就使用来实现这种功能的工具。E…

qt-C++笔记之addItem(), addWidget(), addLayout()

qt-C笔记之addItem(), addWidget(), addLayout() code review! 文章目录 qt-C笔记之addItem(), addWidget(), addLayout()0.《官方文档》相关示例截图1.ChatGPT解释2.《Qt 5.12实战》相关示例截图《Qt 5.12实战》:5.6 组合框 3.addWidget()4.addWidget()和addChil…

洛谷 P1656 炸铁路 - SPFA

文章目录 炸铁路题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 题意解析思路CODE 炸铁路 题目描述 A 国派出将军 uim,对 B 国进行战略性措施,以解救涂炭的生灵。 B 国有 n n n 个城市,这些城市以铁路相连。任意两个城市都可以通…

矢量图形设计软件CorelDRAW 2023 mac界面说明

CorelDRAW 2023 mac是一款专业的矢量图形设计软件,由Corel公司开发。它提供了广泛的创意工具和功能,旨在满足设计师、艺术家和创意专业人士的需求。 CorelDRAW 2023具有直观的用户界面和工作流程,使用户能够轻松创建各种类型的图形设计&#…

XSS漏洞原理

XSS漏洞介绍: 跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页面时,嵌入We…

C语言第四十二弹---使用多种方法实现字符串左旋转

使用多种方法实现字符串左旋转 一、 左移法 思路:每一次通过移动第一个字符,然后把后面的字符前移,然后再进行移动第一个字符再前移。故需要使用嵌套循环,外层循环控制移动第一个字符的次数,第二个循环进行字符前移 …

基于Java SSM框架+Vue实现企业公寓后勤管理系统项目【项目源码+论文说明】

基于java的SSM框架Vue实现企业宿舍后勤管理网站演示 摘要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所…

汽车电子芯片介绍之Aurix TC系列

Infineon的AURIX TC系列芯片是专为汽车电子系统设计的,采用了32位TriCore处理器架构。该系列芯片具有高性能、低功耗和丰富的外设接口,适用于广泛的汽车电子应用。以下是AURIX TC系列芯片的主要特性: 1. 高性能处理器 AURIX TC芯片采用了高…

【Linux】进程控制-进程终止

目录 一、进程终止,OS做了什么? 二、进程终止的常见方式 1、代码跑完,结果正确 2、代码跑完,结果不正确 补充 (1)、main函数的返回值的意义是什么? (2)、return 0的含义是什么? (3)、退出码是什么和…

基于OpenCV和改进深度学习网络的香菇分级图像分割系统

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义 近年来,随着计算机视觉和深度学习的快速发展,图像分割技术在各个领域中得到了广泛应用。图像分割是将图像划分为不同的区域或对象的过程&…

Visual Studio 2022+Python3.11实现C++调用python接口

大家好!我是编码小哥,欢迎关注,持续分享更多实用的编程经验和开发技巧,共同进步。 查了一些资料,不是报这个错,就是报哪个错,没有找到和我安装的环境的一致的案例,于是将自己的摸索分…

SQL错题集1

1.找出选修课程成绩最差的选课记录 注: 聚合函数只能用在group by和()括号中 找最值可用排序order bylimit 1 2. 查询选修成绩 合格的课程 超过2门的 学生编号 3.删除姓名为"LiMing"的学生信息 注: 删除一整行信息&…

Google Guava 集合工具使用详解

文章目录 集合集合分类- MultisetHashMultisetTreeMultisetLinkedHashMultisetConcurrentHashMultisetEnumMultisetImmutableMultiset - MultimapArrayListMultimapHashMultimapLinkedListMultimapLinkedHashMultimapTreeMultimapImmutableListMultimapImmutableSetMultimap - …

CnosDB有主复制演进历程

分布式存储系统的复杂性涉及数据容灾备份、一致性、高并发请求和大容量存储等问题。本文结合CnosDB在分布式环境下的演化历程,分享如何将分布式理论应用于实际生产,以及不同实现方式的优缺点和应用场景。 分布式系统架构模式 分布式存储系统下按照数据复…

Android Audio实战——音频属性设置(二十二)

在 Android 中,使用音频属性(AudioAttributes)可以控制音频的行为。AudioAttributes 已经定义了一些常见的属性,比如音频用途、音频内容类型、音频标志等。 一、音频属性简介 1、常见属性 音量(volume):使用 setParameters("volume=5") 将音量设置为 5(范围…

java消息中间件简介

一、为什么要使用消息中间件 消息中间件就是可以省去繁琐的步骤,直达目的,怎么讲呢,就是比如你想很多人,知道你的动态,而知道的人可能手机没电,可能手机信号不好,可能手机不在服务区&#xff0c…

智能优化算法应用:基于狮群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于狮群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于狮群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.狮群算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

Maven的安装与配置本地仓库,镜像源,环境变量详细步骤

参考视频: 黑马程序员2023新版JavaWeb开发教程,实现javaweb企业开发全流程 【小飞非系列】最新Maven实战教程-项目实战构建利器 文章目录 一.下载Maven安装包二.配置Maven的本地仓库(本机仓库)三.配置镜像源(加速jar包的下载)四.配置Maven的环…

Zookeeper 安装与部署

Zookeeper官网 目录 1 配置文件参数解读2 Zookeeper 单点安装3 Zookeeper 分布式安装 1 配置文件参数解读 Zookeeper 中的配置文件 zoo.cfg 中参数含义解读如下: (1)tickTime 2000:通信心跳数,Zookeeper 服务器与客户…

IdleStateHandler 心跳机制源码详解

优质博文:IT-BLOG-CN 一、心跳机制 Netty支持心跳机制,可以检测远程服务端是否存活或者活跃。心跳是在TCP长连接中,客户端和服务端定时向对方发送数据包通知对方自己还在线,保证连接的有效性的一种机制。在服务器和客户端之间一…