构建NFS远程共享存储

目录

一. NFS介绍

二. 网络附加存储(NAS)设备 

三. 远程过程调用

四. 实验测试

4.1 nfs-server操作

 4.1.1 新建一个目录作为共享

4.1.2 新增一个磁盘作为共享 

4.2 web1  客户端操作 


一. NFS介绍

NFS(Network File System)是一种分布式文件系统协议,允许网络中的计算机之间共享文件。它最初由Sun Microsystems开发,现在成为了许多操作系统的标准功能之一,包括Linux、UNIX和类UNIX系统。

NFS的主要特点和优势包括:

  1. 共享文件系统:NFS允许多台计算机通过网络共享文件,使得这些文件在网络中可以被多台计算机访问和操作。

  2. 透明性:对于用户来说,NFS提供了透明的文件访问体验,就好像文件存储在本地一样。用户不需要关心文件存储在哪台服务器上,只需要像操作本地文件一样操作共享文件。

  3. 跨平台兼容性:NFS在多种操作系统之间提供了文件共享功能,包括Linux、UNIX、macOS等,这使得不同平台之间可以无缝地共享文件。

  4. 简化管理:通过NFS,管理员可以将文件集中存储在一台或多台文件服务器上,而不是分散在每台计算机上,这样可以简化文件管理和备份。

  5. 性能:NFS可以在本地网络或广域网络(WAN)上实现高性能文件共享,使得远程访问文件的速度接近本地访问的速度。

尽管NFS有很多优点,但也有一些考虑因素,比如安全性、性能调优、网络延迟等。因此,在实际应用中,需要根据特定的需求和环境来评估是否使用NFS以及如何配置和管理NFS。

NFS 文件系统仅支持基于 IP 的用户访问控制,NFS 的客户端主要为Linux。

二. 网络附加存储(NAS)设备 

在文件系统级别进行共享,通常使用的是网络附加存储(NAS)设备。这种共享方法允许多个计算机通过网络访问共享存储设备上的文件。两种常见的文件系统级别共享方法是NFS(Network File System)和Samba。

  1. NFS(Network File System)

    • NFS是一种在UNIX和类UNIX系统之间共享文件的标准协议。
    • 它允许Linux和其他UNIX系统之间通过网络访问共享目录。
    • NFS速度快,适合局域网环境下的文件共享,但在广域网上可能速度较慢。
  2. Samba

    • Samba是一个开源的实现了SMB/CIFS协议的软件套件,它允许UNIX系统上的计算机与Windows系统共享文件和打印机。
    • Samba可以在Linux、UNIX和Windows之间提供文件共享服务。
    • 尽管Samba可以提供更广泛的操作系统兼容性,但在某些情况下,与NFS相比可能会有一些性能损失。

选择NFS还是Samba取决于你的环境和需求:

  • 如果你的网络中主要是UNIX/Linux系统,而且速度要求较高,可以选择NFS。
  • 如果你的网络中有Windows系统,并且需要与这些系统进行文件共享,可以选择Samba。
  • 如果需要跨平台兼容性,可能需要同时配置NFS和Samba,以满足不同操作系统的需求。

三. 远程过程调用

RPC(Remote Procedure Call,远程过程调用)是一种在计算机网络中进行进程间通信的协议,它允许一个计算机程序调用另一个位于远程计算机上的程序,就像调用本地程序一样。NFS(Network File System)就是通过RPC来实现客户端和服务器之间的通信。

下面是RPC和NFS之间的通信过程:

  1. RPC客户端调用

    • 当客户端需要访问NFS服务器上的文件时,它会通过RPC调用向NFS服务器发出请求。
    • RPC客户端会构建一个请求消息,其中包含了调用的远程过程的标识符、参数等信息。
  2. RPC服务器响应

    • NFS服务器收到客户端发来的RPC请求后,会解析请求消息,确定所需执行的操作。
    • NFS服务器执行相应的文件操作(如读取、写入等),并将结果返回给RPC客户端。
  3. RPC客户端接收响应

    • 客户端接收到来自服务器的响应消息,其中包含了所需的文件数据或执行结果。
  4. 通信过程中的端口信息传递

    • 在RPC通信的过程中,客户端和服务器之间会使用一系列动态分配的端口进行通信。这些端口的信息会在RPC调用的过程中通过RPC协议进行传递和记录。
    • RPC协议会确保客户端和服务器都能够正确地识别对方使用的端口,并确保通信的正确性和完整性。

总的来说,RPC提供了一种机制,使得NFS客户端和服务器之间能够通过网络进行通信,而不需要关心底层网络细节和具体的端口分配。RPC协议会处理通信中的细节,确保客户端和服务器之间能够有效地进行远程过程调用,并传递所需的端口信息。

四. 实验测试

 实验环境准备两台机器

服务端:nfs-server   192.168.226.100
客户端:web1           192.168.226.130

 #centos7(服务端和客户端都关闭防火墙和selinux内核防火墙)
systemctl stop firewalld
systemctl disable firewalld    
setenforce 0

4.1 nfs-server操作

 4.1.1 新建一个目录作为共享

[root@nfs-server ~]# yum -y install rpcbind  #安装rpc协议的包
[root@nfs-server ~]# yum -y install nfs-utils #安装nfs服务。
启动服务
[root@nfs-server ~]# systemctl start nfs
[root@nfs-server ~]# systemctl start rpcbind
[root@nfs-server ~]# mkdir /nfs-dir   #创建存储目录
[root@nfs-server ~]# echo "这是一个测试页面" >> /nfs-dir/index.html  #常见共享测试文件
[root@nfs-server ~]# vim /etc/exports   #编辑共享文件,新增如下内容
/nfs-dir        192.168.226.0/24(rw,no_root_squash,sync)[root@nfs-server ~]# systemctl restart nfs-server #重启服务。
[root@nfs-server ~]# systemctl enable nfs-server #开机自启动
可选参数注释:
ro:只读
rw:读写
*:表示共享给所有网段。
sync:所有数据在请求时写入共享
root_squash: 对于使用分享目录的使用者如果是root用户,那么这个使用者的权限将被压缩成为匿名使用者,只读权限。
no_root_squash:使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限。

4.1.2 新增一个磁盘作为共享 

前提下载包和关闭防火墙和seliunx不在赘述,看上方内容了解1.查看块设备,找到新增的磁盘名
lsblk2.格式化磁盘
方式一:
mkfs.ext4 /dev/sdb
方式二:
mkfs.xfs /dev/sdb3.新建一个目录用作挂载目录
mkdir /mnt/new_disk4.挂载磁盘
mount /dev/sdb /mnt/new_disk5.配置NFS共享
vim /etc/exports#新增如下,表示将/mnt/new_disk目录共享给所有主机
/mnt/new_disk *(rw,sync,no_root_squash)6.重启服务
systemctl restart nfs-server7.创建一个测试文件,看是否成功
echo "这是使用磁盘进行NFS共享" >> /mnt/new_disk/index.txt

4.2 web1  客户端操作 

[root@web1 ~]# yum -y install rpcbind
[root@web1 ~]# yum -y install nfs-utils
[root@web1 ~]# mkdir /ceshi                                    #创建目录共享的挂载点
[root@web1 ~]# mkdir /gongxiang                                #创建磁盘共享的挂载点
[root@web1 ~]# mount -t nfs 192.168.226.100:/nfs-dir /ceshi           #挂载
[root@web1 ~]# mount -t nfs 192.168.226.100:/mnt/new_disk /gongxiang  #挂载# -t:指定文件系统类型
[root@web1 ~]# df -Th
文件系统                        类型      容量  已用  可用 已用% 挂载点
devtmpfs                       devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                          tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                          tmpfs     1.9G   12M  1.9G    1% /run
tmpfs                          tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root        xfs        17G   13G  4.2G   76% /
/dev/sda1                      xfs      1014M  151M  864M   15% /boot
tmpfs                          tmpfs     378M     0  378M    0% /run/user/0
192.168.226.100:/nfs-dir       nfs4       17G  1.9G   16G   12% /ceshi
192.168.226.100:/mnt/new_disk  nfs4       20G   44M   19G    1% /gongxiang[root@web1 ~]# ls /ceshi
index.html
[root@web1 ~]# umount /ceshi     #取消挂载
[root@web1 ~]# umount /gongxiang #取消挂载制作开机挂载
[root@web1 ~]# vim /etc/fstab
192.168.226.100:/nfs-dir        /ceshi       nfs   rw,nofail,bg   0 0
192.168.226.100:/mnt/new_disk   /gongxiang   nfs   rw,nofail,bg   0 0[root@web1 ~]# mount -a对rw,nofail,bg 参数解释:
rw     表示文件系统以可读写(read-write)模式挂载,允许用户对文件系统进行读写操作
nofail 表示即使文件系统挂载失败,系统也不会因此启动失败。
bg     表示以后台(background)模式挂载文件系统。

现在就验证成功拉,实际应用也是一样的原理。 

当然,在客户端也可以进行修改,客户端与服务端会实时同步 。

扩展:

 在客户端操作时这个语句mount -t nfs 192.168.226.100:/nfs-dir /ceshi

其中的IP可以换成主机名,那么就要在/etc/hosts文件中新增如下格式的内容

IP地址 主机名

测试:

[root@web1 ~]# umount /ceshi #先取消之前的挂载
[root@web1 ~]# mount -t nfs server:/nfs-dir /ceshi     #使用主机名挂载
[root@web1 ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G   13G  4.2G   76% /
/dev/sda1               xfs      1014M  151M  864M   15% /boot
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
server:/nfs-dir         nfs4       17G  1.9G   16G   12% /ceshi

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

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

相关文章

UTONMOS探索元宇宙:开启未来数字世界的无限可能

在科技的浪潮中,元宇宙如同一颗璀璨的星辰,冉冉升起,吸引着无数人的目光。 元宇宙,一个超越现实的数字世界,它融合了虚拟现实、增强现实和互联网等多种技术,为人们打造了一个全新的沉浸式体验空间。在这里…

定时任务@Scheduled用法及其参数讲解

Scheduled是Spring框架中的一个注解,用于标记一个方法为定时任务。当使用Scheduled注解时,Spring会自动创建一个定时任务的执行器(Scheduler),并在指定的时间间隔内执行被标记的方法。 使用Scheduled注解时&#xff0c…

美易官方:野村公布最新增长计划 寻求到2030年实现利润翻番

野村公布了到本世纪末税前利润几乎翻一番的目标,首席执行官Okuda Kentaro希望在去年盈利复苏的基础上再接再厉。 Okuda周二在向投资者介绍情况时表示,作为“实现可持续增长”愿景的一部分,这家日本最大的券商计划到2030年实现超过5000亿日元…

数据结构--顺序表和链表的区别

顺序表和链表之间各有优劣,我们不能以偏概全,所以我们在使用时要关注任务的注重点,以此来确定我们要使用两者中的哪一个。 不同点: 存储空间上: 顺序表在物理结构上是一定连续的,而链表(这里以带头双向循环…

面 试 题

过滤器和拦截器的区别 都是 Aop 思想的一种体现,用来解决项目中 某一类 问题的两种接口(工具),都可以对请求做一些增强 出身 过滤器来自 servlet 拦截器来自 spring 使用范围 过滤器 Filter 实现了 iavax.servlet.Filter 接口,也就是说…

CSS实现渐变色

渐变色分为线性渐变和径向渐变。 线性渐变linear-gradient(方向, 颜色1, 颜色2, … ,颜色n)径向渐变radial-gradient(颜色1 覆盖区域大小, 颜色2 覆盖区域大小, … ) 线性渐变的方向可以为: ​ 1、一个方向值时: to bottom 表示从上边到下边渐变 ​ 2、…

vue实现列表上方的查询条件和表头等悬停在上方

目录 1、代码如下&#xff1a; 2、代码说明 2.1、对头部和表头标签等悬停在上方在cs中维护&#xff1b; 2.2、点击隐藏和收起在mounted中增加点击的监控事件 2.3、针对查询时增加高度的处理&#xff1a; 1、代码如下&#xff1a; <template ><div class"fra…

Java并发编程:解锁并发编程中的加锁技巧

1. 并发编程基础 并发编程是现代软件开发的核心之一&#xff0c;尤其在处理大规模用户访问的场景下。为了正确处理多线程编程的复杂性&#xff0c;理解基础概念至关重要。本章节将深入讨论并发编程的基础&#xff0c;包括并发与并行的区别&#xff0c;线程安全的基本概念&…

富格林:着重杜绝欺诈阻挠被骗

富格林认为&#xff0c;在现货黄金市场中&#xff0c;存在着激烈的波动和风险。尽管相应的盈利潜力也很大&#xff0c;但需要注意的是&#xff0c;我们要着重掌握经验杜绝欺诈阻挠被骗的情况发生&#xff0c;并利用行情的变化为自己扩大收益。因此&#xff0c;了解一些现货黄金…

c与c++用法区别剖析 迟早得用到

从C语言过渡到c&#xff0c;肯定要掌握这些吧 1.面向对象编程&#xff1a; C语言是过程化编程语言&#xff0c;它主要关注函数和过程。C支持面向对象编程&#xff0c;提供类、继承、多态等特性。 // C中的类和对象 class Rectangle { private:int width, height; public:Rec…

超越视觉极限:深度学习图像超分辨率算法清单【第三部分】

超越视觉极限&#xff1a;深度学习图像超分辨率算法清单【第三部分】 简介2018年 - DBPN (Deep Back-Projection Networks)2018年 - RDN (Residual Dense Network)2018年 - SRRGAN (Super-Resolution Reconstruction Generative Adversarial Network)2019年 - FSRGAN (Fast Sup…

Spring AI多模态接口开发

文章目录 项目地址创建项目配置项目接口开发结果测试测试接口测试在线图片接口测试本地图片接口测试 项目地址 Spring AI项目开发 创建项目 打开IDEA创建一个新的spring boot项目&#xff0c;填写项目名称和位置&#xff0c;类型选择maven&#xff0c;组、工件、软件包名称可…

Ubuntu apt-get install 失败

一般方法&#xff0c;执行如下指令 sudo apt-get update# 某些系统程序才需要&#xff0c;比如make sudo apt-get install build-essentialsudo apt-get install make这一步如何能成功&#xff0c;则说明是使用方式错误&#xff0c;问题比较简单 如果继续失败&#xff0c;提示…

实现vant的年月日时分秒组件

方法&#xff1a;van-datetime-picker&#xff08;type&#xff1a;datetime&#xff09;和 van-picker结合实现。 <template><div class"datetimesec-picker"><van-datetime-pickerref"timePickerRef"type"datetime" //年月日时…

【系统架构师】-案例篇(十一)质量属性、瘦客户端与Web系统架构

1、架构评估中的质量属性 ① 性能&#xff0c;是指系统的响应能力&#xff0c;即要经过多长时间才能对某个事件做出响应&#xff0c;或者在某段时间内系统所能处理的事件的个数。 ② 可靠性&#xff0c;是软件系统在应用或系统错误面前&#xff0c;在意外或错误使用的情况下维…

Android 11 输入系统之InputDispatcher和应用窗口建立联系

InputDispatcher把输入事件传给应用之前&#xff0c;需要和应用窗口建立联系&#xff0c;了解了这个过程&#xff0c;就清楚了APP进程和InputDispatcher线程也就是SystemServer进程之间是如何传输数据了 我们向窗口addView的时候&#xff0c;都会调用到ViewRootImpl的setView方…

Canvas简历编辑器-我的剪贴板里究竟有什么数据

Canvas简历编辑器-我的剪贴板里究竟有什么数据 在这里我们先来聊聊我们究竟应该如何操作剪贴板&#xff0c;也就是我们在浏览器的复制粘贴事件&#xff0c;并且在此基础上聊聊我们在Canvas图形编辑器中应该如何控制焦点以及如何实现复制粘贴行为。 在线编辑: https://windrun…

Docker 部署 Nginx 实现一个极简的 负载均衡

背景: Nginx是异步框架的网页服务器&#xff0c;其常用作反向代理(负载均衡器)。在一般的小项目中, 服务器不多, 如果不考虑使用服务注册与发现, 使用Nginx 可以容易实现负载均衡。 在特此写一个快速入门 Nginx 的技术贴, 使用 Docker 部署 Nginx, 实现一个极简的加权轮询负载均…

现在的原创内容博客 SEO 最好就选谷歌和必应!

当我们在国内讨论搜索引擎优化的时候&#xff0c;我们经常讨论的是百度 SEO&#xff0c;很少提及 Bing 搜索与 Google 搜索&#xff0c;但随着跨境电商的崛起&#xff0c;在国内做外贸 SEO 的小伙伴越来越多&#xff0c;有效的了解 Bing 搜索与 Google 搜索的优化规则是很有必要…

2024年武侯区建设企业科技创新平台申报范围条件、奖励标准和材料

一、申报对象 支持企业围绕数字健康、消费电子、新型材料等重点领域&#xff0c;布局建设一批重点实验室、创新中心、企业技术中心等高端研发平台&#xff0c;着力突破产业关键技术。实施产业链人才开源计划&#xff0c;支持链主企业为上下游关联配套企业提供技术与人才支持、…