搭建nfs文件目录共享

搭建nfs文件目录共享

一、简介

NFS,英文全称是Network File System,中文全称是网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源,在NFS应用中,本地NFS的客户端应用可以透明的读写位于远端NFS服务器上,就像访问本地文件。

二、组成

NFS体系至少有两部分,
一台NFS服务器和若干客户机,如图所示:

在这里插入图片描述

客户机通过TCP/IP网络远程访问存放在NFS服务器上的数据

三、配置

【服务器端】

步骤如下:

1. 安装nfs

NFS可以被视为一个RPC服务,而要启动任何一个RPC服务之前,需要做好端口的对应(映射)的工作,这个工作其实就是RPCBIND这个服务所负责的。
也就是说,在启动任何一个RPC服务之前,我们都需要启动RPCBIND才行!(注意:在CentOS的5.x以前这个软体称为端口映射,在CentOS的6.x之后才称为RPCBIND)

执行命令:

查看系统是否安装nfs服务[root@test]# rpm -qa | grep nfs  / rpm -qa | grep rpcbindyum安装nfs   [root@test]# yum install nfs-utils -y
2. 设置nfs

配置文件:/etc/exports

这个文件就是NFS的主要配置文件,系统并没有预设值,所以这个档案不一定会存在,你可能必须要使用vim手动建立;

在这里插入图片描述

其中允许的网段,如果设置为*,则表示允许所有网段,至于权限设置有一些常用的参数,如下:

参数内容说明
rw
ro
该目录分享的权限是可读写(读写)或唯读(只读),但最终能不能读写,还是与档案系统的RWX及身份有关
sync
async
sync 表示资料会同步写入到buffer和磁盘中
async 则表示资料会先暂存于buffer中,而非直接写入磁盘!
no_root_squash
root_squash
预设的情况下,用户端 root 的身份会由 root_squash 的设定压缩成 nfsnobody,如此对伺服器的系统会较有保障。但如果你想要开放用户端使用 root 身份来操作伺服器的档案系统,那么这里就得要开 no_root_squash
all_squash不论登入NFS的使用者身份是什么,用户名都会被压缩成为匿名使用者,通常也就是没有人(nfsnobody)
anonuidanongid匿名意指匿名(匿名者)前面关于* _squash提到的匿名使用者的UID设定值,通常为没人(nfsnobody),但是你可以自行设定这个UID的值!当然,这个UID必需要存在于你的/etc/passwd文件当中,anonuid指的是UID而anongid则是群组的GID

用户端查询服务器端分享资源的指令:/usr/sbin/showmount

这是另一个重要的NFS指令, exportfs是用在NFS服务器端,而showmount显示则主要用在客户端,showmount显示可以用来察看NFS分享出来的目录资源。

3. 启动nfs

执行命令:

     [root@test]# /etc/init.d/rpcbind start[root@test]# /etc/init.d/nfs start[root@test]# /etc/init.d/nfslock start注意:千万记得要安装顺序启动,先启动rpcbind,再启动nfs,并建议添加到启动项,之后便可以用service启动nfs服务,执行命令:[root@test]# chkconfig rpcbind on[root@test]# chkconfig nfs on[root@test]# chkconfig nfslock on
4. 配置端口

该服务需要开启防火墙,那么到底要开启哪些端口呢,执行一条命令即可知道,执行命令:

     [root@test]# rpcinfo -p

在这里插入图片描述

由此可以看出需要开启的端口很多,稍稍整理之后,结论如下:

  • rpcbind启动的端口是111,同时启动在udp和tcp
  • nfs本身的服务启动在2049
  • 其他的服务是随机的,不过,建议固定端口,在/etc/sysconfig/nfs修改

执行命令:

     [root@test]# vim /etc/sysconfig/nfs需要修改的文本内容如下:       RQUOTAD_PORT=1001LOCKD_TCPPORT=30001LOCKD_UDPPORT=30001MOUNTD_PORT=1002
5. 检测nfs

在设定好nfs服务器端之后,我们可以在服务器端自我测试是否可以连线,这个时候便用到showmount命令,执行命令:

     [root@test]# showmount -e localhost

在这里插入图片描述

【用户端】

作为用户端只需要开启nfs服务,然后挂载服务器端共享出来的目录即可,

步骤如下:

1. 启动nfs

执行命令:

     [root@test]#  /etc/init.d/rpcbind start[root@test]# /etc/init.d/nfs start[root@test]# /etc/init.d/nfslock start注意:千万记得要安装顺序启动,先启动rpcbind,再启动nfs,并建议添加到启动项,之后便可以用service启动nfs服务,执行命令:[root@test]# chkconfig rpcbind on[root@test]# chkconfig nfs on[root@test]# chkconfig nfslock on
2. 挂载目录

执行命令:

     [root@test]# mount -t nfs 172.17.30.53:/userdata1/test /userdata1/test[root@test]# df -h

在这里插入图片描述

命令df -h,可以查看是否挂载成功,如上图,红框中是挂载成功的

【测试】

为了验证是否正确搭建nfs,我们先在服务器端共享目录新建一个文件,执行命令:

     [root@test]# vi test

写入一些文本,保存退出,

接着,去到用户端相应的目录查看是否已经有了同步过来的test文件,如果没有,说明未搭建成功,请自行检查问题

我们需要尝试在用户端修改test文件,保存退出,去到服务器端查看是否修改生效,如果已经生效,那么说明双向的共享已经完成,到此nfs搭建成功!

亲测搭建成功

服务器端
查看系统是否安装nfs服务
rpm -qa | grep nfs
rpm -qa | grep rpcbind
yum安装nfs
yum install nfs-utils -y
设置nfs
配置文件:/etc/exports
cat /etc/exports
/nfsdir/ 10.2.0.0/16(rw,no_root_squash,sync)
共享目录  允许访问的网段 权限设置可以配置多个共享目录。其中允许的网段,如果设置为*,则表示允许所有网段
配置端口

该服务需要开启防火墙,那么到底要开启哪些端口呢,执行一条命令即可知道,执行命令:rpcinfo -p
rpcbind启动的端口是111,同时启动在udp和tcp
nfs本身的服务启动在2049
其他的服务是随机的,不过,建议固定端口,在/etc/sysconfig/nfs修改

cat /etc/sysconfig/nfs  增加如下
RQUOTAD_PORT=1001LOCKD_TCPPORT=30001LOCKD_UDPPORT=30001MOUNTD_PORT=1002启动nfs
service rpcbind start
service nfs start
service nfslock start
注意:千万记得要顺序启动,先启动rpcbind,再启动nfs(不然会不能正常使用,我遇到的坑),并建议添加到启动项,之后便可以用service启动nfs服务
检测nfs
在设定好nfs服务器端之后,我们可以在服务器端自我测试是否可以连线,这个时候便用到showmount命令
showmount -e localhost
显示共享信息
/nfsdir 10.2.0.0/16
客户端
查看系统是否安装nfs服务
rpm -qa | grep nfs
rpm -qa | grep rpcbind
yum安装nfs
yum install nfs-utils -y
启动nfs
service rpcbind start
service nfs start
service nfslock start
注意:千万记得要顺序启动,先启动rpcbind,再启动nfs(不然会不能正常使用,我遇到的坑),并建议添加到启动项,之后便可以用service启动nfs服务

客户端查询服务器端分享资源的指令:/usr/sbin/showmount
这是另一个重要的NFS指令, exportfs是用在NFS服务器端,而showmount显示则主要用在客户端,showmount显示可以用来察看NFS分享出来的目录资源。
执行命令查看:showmount

挂载目录
mount -t nfs 10.2.229.181:/nfsdir /nfsdir
df -h

在服务器端,和客户端各创建一个文件测试,有没有达到共享效果

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

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

相关文章

如何选择 Facebook 代理?

Facebook上从事业务推广、广告或资料推广以及群组的用户需要高质量且可靠的代理。使用代理,用户可以在账号被封锁的情况下访问自己的资料,同时与多人进行即时通信,并能够: 自动发送邀请参加各种活动; 通过特殊的机器人…

2022年高校大数据挑战赛A题工业机械设备故障预测求解全过程论文及程序

2022年高校大数据挑战赛 A题 工业机械设备故障预测 原题再现: 制造业是国民经济的主体,近十年来,嫦娥探月、祝融探火、北斗组网,一大批重大标志性创新成果引领中国制造业不断攀上新高度。作为制造业的核心,机械设备在…

经典神经网络——VGGNet模型论文详解及代码复现

论文地址:1409.1556.pdf。 (arxiv.org);1409.1556.pdf (arxiv.org) 项目地址:Kaggle Code 一、背景 ImageNet Large Scale Visual Recognition Challenge 是李飞飞等人于2010年创办的图像识别挑战赛,自2010起连续举办8年&#xf…

C/C++ 内存管理(1)

文章目录 C/C 内存划分静态和动态内存C语言的动态内存分配函数mallocfreecallocrealloc 常见内存使用错误 C/C 内存划分 栈区(stack):在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结 束时这些存储…

【数据结构】初识排序 直接插入排序

初识排序 & 直接插入排序 🐟排序在现实中的应用🐟排序的概念🐟常见的排序算法🐟直接插入排序💦举例--直接插入排序在现实种的应用💦单趟直接插入排序讲解💦直接插入排序算法 🐟排…

【android开发-11】android中创建自定义布局并引入自定义布局的参考例子

1,以下是在Android中创建自定义布局并引入自定义布局的参考例子: 首先,创建一个自定义布局文件。在项目的res/layout目录下创建一个新的XML文件,例如custom_layout.xml。在该文件中,您可以定义自定义的视图元素和布局…

应用于智慧零售的AI边缘计算盒子+AI算法软硬一体化方案

中国是世界上最大的消费市场,零售行业拥有极大的发展潜力,阿里、腾讯两大互联网巨头正在加紧、加大布局; 信迈智慧零售方案可涵盖快消行业、服饰行业、餐饮行业、酒店行业、美家行业、消费电子行业、新零售商行业、服饰连锁、大卖场/商超、百…

fastmock如何判断头信息headers中的属性值

fastmock可以快速提供后端接口的ajax服务。 那么,如何判断头信息headers中的属性值呢? 可以通过function中的参数_req可以获得headers中的属性值,比如 User-Agent,由于User-Agent属性带有特殊符号,因此使用[]方式而不…

生成式 AI 与数据融合:亚马逊云科技的前沿探索与应用

目录 前言1 生成式AI和数据2 亚马逊云科技的AI创新2.1 数据与生成式 AI 的协同创新2.2 多模态融合与创新驱动2.3 构建创新平台与工作智能助手2.4 数据整合与安全保障 3 生成式AI结合企业数据的典型技术Amazon Q4 展望未来 授权声明:本篇文章授权活动官方亚马逊云科技…

经典神经网络——ResNet模型论文详解及代码复现

论文地址:Deep Residual Learning for Image Recognition (thecvf.com) PyTorch官方代码实现:vision/torchvision/models/resnet.py at main pytorch/vision (github.com) B站讲解: 【精读AI论文】ResNet深度残差网络_哔哩哔哩_bilibili …

NXP iMX8M Plus Qt5 双屏显示

By Toradex胡珊逢 简介 双屏显示在显示设备中有着广泛的应用,可以面向不同群体展示特定内容。文章接下来将使用 Verdin iMX8M Plus 的 Arm 计算机模块演示如何方便地在 Toradex 的 Linux BSP 上实现在两个屏幕上显示独立的 Qt 应用。 硬件介绍 Verdin iMX8M Plu…

Ubuntu18.04安装LVI-SAM保姆级教程

目录 1 LIO-SAM的安装前要求 1.1 ROS安装:参考我的另一篇博客 1.2 gtsam安装(参考LeGO-LOAM 1.2节) 2 安装

C++的explicit和隐式转换

隐式转换是指在某些情况下,编译器会自动进行类型转换,将一种类型的值转换为另一种类型,以满足表达式的要求。这种转换是隐式进行的,不需要显式地调用转换函数或构造函数。 int a 5; double b a; // int 到 double 的隐式转换上…

Doris 数据导入二:Stream Load 方式

Stream load 是一个同步的导入方式,用户通过发送 HTTP 协议发送请求将本地文件或数据流导入到 Doris 中。Stream load 同步执行导入并返回导入结果。用户可直接通过请求的返回体判断本次导入是否成功。 1 适用场景 Stream load 主要适用于导入本地文件,或通过程序导入数据流中…

深入理解Java对象

1. 对象一定分配在堆上吗? 在Java中,对象的分配通常发生在堆(Heap)上,这是Java内存管理的一部分。然而,这个说法需要一些细化和额外的说明: 对象通常分配在堆上 堆内存:在Java中&…

支持Upsert、Kafka Connector、集成Airbyte,Milvus助力高效数据流处理

Milvus 已支持 Upsert、 Kafka Connector、Airbyte! 在上周的文章中《登陆 Azure、发布新版本……Zilliz 昨夜今晨发生了什么?》,我们已经透露过 Milvus(Zilliz Cloud)为提高数据流处理效率, 先后支持了 Up…

【Redis】Redis高并发高可用(主从复制、哨兵机制)

Redis高并发高可用 复制 在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他机器,满足故障恢复和负载均衡等需求。Redis也是如此,它为我们提供了复制功能,实现了相同数据的多个Redis 副本。复制功能是高可用Redis的基础,后面章节的哨兵和集群都是在复制…

java类库的废弃API

java语言一直在进化,java类库也越来越庞大,给人的感觉是一直在做加法。 有没有做减法呢?当然也有,一些是设计失误需要撤回的,如可能引起线程安全问题的Thread.stop()等方法;还有是随着时代发展而被淘汰的&…

GameNetController网络控制器

好用的局域网内的网络控制器,稍作更改可连接互联网 using System; using System.Collections; using System.Collections.Generic; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using LitJson; using UnityEngine; u…

【数据结构】拆分详解 - 堆的应用

堆的应用 1. 堆排序 思路: 建大堆 向下调整建堆,根位置即选出的最大数 排序:交换头尾,向下调整,尾删 把大数移到尾部,调整堆,将排好的大数“删出”堆注意向下调整和尾删顺序不能对调&#xff0c…