NFS共享文件系统(将文件目录挂载到别的机器上)

news2024/12/24 9:02:46

      我们创建的磁盘是否都必须挂载到本机上?并不是。在 Linux 和其他操作系统中,有一种叫做 NFS(网络文件系统)的工具,它允许跨网络共享文件系统资源。通过使用 NFS,我们可以将多个客户端服务器的数据目录挂载到一个专门的数据服务器上,从而降低客户端服务器的负载,并提高它们的工作效率,同时集中管理数据可以带来其他好处,如数据备份和集中维护。

目录

1.NFS简介

1.1NFS优缺点

1.2NFS特点

1.3NFS应用场景

2.NFS实战

2.1nfs服务器的配置

2.1.1安装nfs服务的软件包

​编辑

2.1.2创建共享目录

2.1.3更改共享目录的权限,让其他主机也可进行读写

2.1.4编辑nfs配置文件

2.1.4.1解释对应的部分:

2.1.4.2可替换的内容

 2.1.4.3举例

2.1.5应用配置文件的更改

2.1.5.1其他exports命令

2.1.6重启服务并设置开启自启

2.1.7配置防火墙(如果需要)

2.2nfs客户机的配置

2.2.1安装nfs服务的软件包

2.2.2创建挂载点目录

2.2.3设置nfs文件共享

2.2.4永久挂载(选做)

2.2.5验证挂载点


1.NFS简介

        NFS(Network File System)是一种分布式文件系统协议,它允许计算机系统通过网络访问彼此的文件系统。NFS 是由 Sun Microsystems 在 1980 年代开发的,并且随着时间的推移,它已经成为了 Unix 和 Linux 系统间共享文件的标准方法之一。

1.1NFS优缺点

优点

  1. 节约存储空间:常用数据可以集中存储在一台机器上,通过网络共享给多台计算机访问,避免数据重复存储 。
  2. 节约硬件资源:可以共享如软驱、CDROM和ZIP等存储设备,减少网络上的可移动设备数量 。
  3. 用户主目录设定:对于需要经常登录多台计算机的用户(如管理员),可以通过NFS设置主目录,实现数据一致性 。
  4. 跨平台支持:NFS可以在多种操作系统中使用,包括Linux、Unix、Windows和macOS等 。
  5. 高性能:对于中型或小型文件,NFS提供了极佳的性能,特别是在顺序读取情况下 。
  6. 配置简单:NFS的部署和配置相对简单,易于使用。

缺点

  1. 单点故障:如果NFS服务器宕机,所有客户端都无法访问共享文件 。
  2. 性能限制:在高并发情况下,NFS的效率和性能可能受限,需要优化才能提高性能 。
  3. 安全性问题:NFS在传输过程中没有加密机制,数据以明文形式传输,安全性较弱,通常建议在局域网内使用 。
  4. 数据完整性:NFS服务器传输数据时没有验证机制,对数据完整性要求较高的业务不建议使用 。
  5. 维护复杂性:多台客户端挂载到NFS服务器时,连接管理和维护可能变得复杂 。
  6. 网络依赖性:NFS的性能受到网络质量和稳定性的影响,如果网络连接不稳定,可能会影响文件访问速度和可靠性 。

        总的来说,NFS非常适合于需要高性能文件共享的场景,如数据中心、云计算和分布式存储系统等。但是,对于需要高安全性或者担心单点故障的环境,可能需要考虑其他文件共享协议或者增加额外的安全和冗余措施。

1.2NFS特点

  1. 跨平台:NFS 可以在多种操作系统中使用,包括各种 Unix 系统(如 Linux、BSD、Solaris 等)和非 Unix 系统(如 Windows、macOS 等,通常需要额外的软件支持)。

  2. 客户端-服务器模式:在 NFS 架构中,一个或多个系统作为服务器,提供文件系统的访问。其他系统则作为客户端,通过网络访问这些文件系统。

  3. 透明访问:对于客户端系统而言,访问 NFS 挂载的远程文件就像访问本地文件一样透明。用户和应用程序无需关心文件实际存储在远程服务器上。

  4. 数据缓存:NFS 客户端会缓存从服务器获取的数据,这样可以减少网络流量并提高访问速度。但这也意味着在某些情况下,客户端可能访问到过时的数据。

  5. 数据一致性:NFS 协议提供了数据一致性的保证,确保在多个客户端同时访问同一文件时,数据的完整性不会被破坏。

  6. 易于设置和使用:通过简单的配置,就可以在客户端挂载远程文件系统。这使得 NFS 成为共享文件的便捷方式。

  7. 版本:NFS 有几个版本,其中 NFSv3 和 NFSv4 是最常用的。NFSv4 提供了对 NFSv3 的多项改进,包括更好的性能、安全性和对 Windows 系统的支持。

  8. 安全性:早期版本的 NFS(如 NFSv2)在安全性方面较弱,但后续版本通过 Kerberos 认证等机制增强了安全性。

1.3NFS应用场景

  • 共享公共数据集,如配置文件、日志文件等。
  • 在多台服务器之间提供对同一数据集的访问,以便于数据备份、灾难恢复等。
  • 在虚拟化环境中,作为虚拟机的共享存储解决方案。

2.NFS实战

        现有一台ip为192.168.154.140的服务器,将它变成nfs服务器,并且让服务器下                   的/path/to/shared_directory目录挂载到客户机的/local/mount/point目录下从而实现跨机挂载。

/path/to/shared_directory

2.1nfs服务器的配置

2.1.1安装nfs服务的软件包

分系统进行安装,不同系统的安装命令不同。

sudo apt install nfs-common  # Debian/Ubuntu
sudo yum install nfs-utils   # CentOS/RHEL
sudo dnf install nfs-utils   # Fedora

2.1.2创建共享目录

sudo mkdir -p /path/to/shared_directory

        注意:上述的目录的名称和路径不一定必须是/path/to/shared_directory,我们可以根据需要进行自定义。

2.1.3更改共享目录的权限,让其他主机也可进行读写

sudo chmod -R 755 /path/to/shared_directory

2.1.4编辑nfs配置文件

sudo vi /etc/exports
/path/to/shared_directory *(rw,sync,no_root_squash,no_subtree_check)

        nfs的共享目录的位置位于nfs服务器的/etc/exports文件内,注意这是一个文件而不是一个目录,该文件需要书写的格式如下。

        我做了一个“母例”,通过该例子大家在自己操作的时候就结合自身情况进行删减,做填字游戏即可。

/path/to/shared_directory client_ip_or_netmask(rw,sync,no_root_squash,no_subtree_check)
2.1.4.1解释对应的部分:
  1. 共享目录

    /path/to/shared_directory:这是 NFS 服务器上你想要共享的目录的路径。
  2. 客户端指定

    client_ip_or_netmask:这是允许访问共享目录的客户端的 IP 地址或网络掩码。可以使用单个 IP 地址(如 192.168.1.100)、网络段(如 192.168.1.0/24)或通配符(如 * 表示所有客户端)。
  3. 选项

    • rw:表示客户端可以以读写模式访问共享目录。
    • sync:表示所有文件系统操作都将同步执行,确保数据立即写入磁盘。
    • no_root_squash:表示远程的 root 用户将具有与本地 root 用户相同的权限。默认情况下,root 用户会被 "squash"(降低权限),通常是变成匿名用户 nfsnobody
    • no_subtree_check:表示 NFS 服务器不会检查共享目录的父目录权限,这可以提高性能,但可能降低安全性。
2.1.4.2可替换的内容
  1. 共享目录

    • 可以替换为服务器上的任何有效目录路径。
  2. 客户端指定

    • 可以替换为其他单个 IP 地址、网络段或使用通配符 *。通配符*表示我们本网内的所有主机都可以对共享目录内的资源进行读写。
  3. 选项

    • ro:替换 rw 可以改为只读模式。
    • async:替换 sync 可以改为异步模式,先写入缓存再写入磁盘。
    • root_squash:替换 no_root_squash 可以启用 root 用户权限降低。
    • subtree_check:替换 no_subtree_check 可以启用父目录权限检查。
    • all_squash:替换 no_root_squash 可以将所有用户都映射为匿名用户。
    • anonuid=UID 和 anongid=GID:可以指定匿名用户的 UID 和 GID。
    • secure:限制客户端只能从小于1024 的 TCP 端口连接 NFS 服务器。
    • insecure:允许客户端从大于 1024 的 TCP 端口连接 NFS 服务器。
 2.1.4.3举例
# 共享目录 /data/share1 给整个 192.168.1.0/24 网络,只读模式
/data/share1 192.168.1.0/24(ro,sync,secure)

# 共享目录 /data/share2 给特定客户端 192.168.1.100,读写模式,并禁用 root 用户映射
/data/share2 192.168.1.100(rw,sync,no_root_squash)

# 共享目录 /data/share3 给所有客户端,读写模式,异步写入
/data/share3 *(rw,async,no_subtree_check)

2.1.5应用配置文件的更改

sudo exportfs -a

        这里的exports -a并不像vi文本编辑器一个":wq"就可以保存后退出了,而是需要nfs服务知道它的配置文件需要应用里面的内容了,这样nfs就会根据文件里面的内容重新对服务进行检查-->更新。

2.1.5.1其他exports命令
  1. showmount:用于查询 NFS 服务器的共享目录信息。

    • showmount -e <server>:显示服务器上的 NFS 共享目录。
    • showmount -a <server>:显示 NFS 服务器的客户端信息和共享目录。

        上图我仅作一个展示,我配置了两个共享目录,一个就是实验中的/path...另一个是/webapps,而webapps的共享目录仅192.168.154.0网段的主机可以读写。

  1. mount:用于挂载和卸载文件系统。

    • mount -t nfs <server>:<shared_directory> <local_mount_point>:将远程 NFS 共享目录挂载到本地挂载点。
    • umount <mount_point>:卸载已经挂载的文件系统。
  2. nfsstat:显示 NFS 的统计信息。

      3.rpcinfo:显示 RPC 服务的状态,NFS 服务依赖于 RPC。

    4.rpcbind:RPC 服务的守护进程,NFS 服务依赖于 RPC。

    5.nfs-utils:NFS 服务的主程序包,包括 rpc.nfsdrpc.mountd 等。

    6.idmapd:用户和组 ID 映射服务。

    7.exportfs:管理 NFS 服务器的当前导出表。

    8.unshare:与 share 命令相反,用于取消共享。

    9.smbclient:访问 Windows 或 Samba 服务器上的共享。

    10.autofs:自动挂载文件系统,可以配置自动挂载 NFS 共享。

    11.fstab:系统启动时挂载文件系统配置文件,可以配置 NFS 共享的自动挂载。

上述这些内容大家根据实验自己输入一下看一看结果即可,这里就不做展示了。

2.1.6重启服务并设置开启自启

        nfs这个机制有点像Windows的更新了,我们更新电脑系统的时候一般有“更新并关机”和“更新并重启”这两个选项,我们如果仅更新配置文件不对服务进行重启的话nfs还是会保留之前的配置,这样我们的配置是不生效的,所以我们还要进行重启的步骤。这样一是保证我们的配置可以更新二是保证我们nfs服务器开机可用。

sudo systemctl start nfs-server
sudo systemctl enable nfs-server

2.1.7配置防火墙(如果需要)

        允许nfs端口通过防火墙,这里我建议是配置上,万一以后文件共享失败可能防火墙也有一部分的原因。

yum -y install ufw

        UFW(Uncomplicated Firewall)是一个用户友好的前端界面,用于管理 Linux 系统上的 iptables 防火墙规则。它旨在使配置防火墙变得简单,特别是对于不熟悉复杂 iptables 命令的用户。UFW 提供了一个更易于理解和使用的命令行界面来控制进出你的系统的网络流量。

接下来我们开始添加防火墙规则并重载防火墙

sudo ufw allow 2049/tcp
sudo ufw allow 2049/udp
sudo ufw allow 111/tcp
sudo ufw allow 111/udp
sudo ufw reload

2.2nfs客户机的配置

2.2.1安装nfs服务的软件包

 分系统进行安装,每个系统的安装命令是不一样的

sudo apt install nfs-common  # Debian/Ubuntu
sudo yum install nfs-utils   # CentOS/RHEL
sudo dnf install nfs-utils   # Fedora

2.2.2创建挂载点目录

sudo mkdir -p /local/mount/point

        我们要把NFS服务器的数据挂载到客户机的共享目录/path/to/shared_directory挂载到客户机的挂载点/local/mount/point下,安装完nfs服务后马上根据路径创建目录。

2.2.3设置nfs文件共享

sudo mount -t nfs 192.168.154.140:/path/to/shared_directory /local/mount/point

        一句话解释就是使用nfs的挂载方法将ip地址为192.168.154.140的/path/to/shared_directory目录挂载到客户机的/local/mount/point挂载点上。里面除了mount -t nfs其余的所有内容都可以根据自己实验的情况进行修改。

2.2.4永久挂载(选做)

        想要实现开机就挂载可以这样做

sudo vi /etc/fstab

        进入该文件编写如下内容:

192.168.154.140:/path/to/shared_directory /local/mount/point nfs defaults 0 0

下面是对上述代码的解释:

  1. SERVER_IP:/path/to/shared_directory

    • SERVER_IP:NFS 服务器的 IP 地址。
    • /path/to/shared_directory:NFS 服务器上要挂载的共享目录的路径。
    • 这部分指定了远程 NFS 服务器的共享目录的位置。
  2. /local/mount/point

    • 这是本地系统上的一个目录路径,用作挂载点。当 NFS 共享挂载后,你可以通过这个本地路径访问远程服务器上的文件。
  3. nfs

    • 指定了文件系统类型为 NFS。
  4. defaults

    • 这是一个选项集,表示使用默认的挂载选项。这些选项包括:
      • rw:允许读写访问。
      • suid:允许执行 set-user-identifier 或 set-group-identifier。
      • dev:允许访问设备文件。
      • exec:允许执行文件。
      • auto:允许自动挂载。
      • nouser:限制只有 root 用户可以挂载。
      • async:所有 I/O 操作都应该是异步的。
    • 如果需要,可以在这里指定其他挂载选项,例如 ro(只读)或 soft(如果服务器不可用,客户端在重试一定次数后放弃)。
  5. 0

    • 这个数字代表 dump 程序是否需要备份该分区。通常设置为 0,表示不需要备份。
  6. 0

    • 这个数字代表 fsck 程序在系统启动时检查该分区的顺序。数字越小,优先级越高。NFS 分区通常设置为 0,因为它们通常不需要在启动时检查。

        使用下面的命令让挂载生效

sudo mount -a

2.2.5验证挂载点

df -hT来验证我们的挂载点是否正确。

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

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

相关文章

Java中常见的等待唤醒机制及实践

JDK自带的等待唤醒机制 在Java中&#xff0c;有一个JDK维度的等待唤醒机制。Object类的wait和notify,notifyAll 需要在synchronized同步代码块内并且对象必须获取到锁才能调用。否则会抛IllegalMonitorStateException异常。 当线程在尝试获取锁时失败&#xff0c;会被封装成节…

Mybatis-plus做了什么

Mybatis-plus做了什么 Mybatis回顾以前的方案Mybatis-plus 合集总览&#xff1a;Mybatis框架梳理 聊一下mybatis-plus。你是否有过疑问&#xff0c;Mybatis-plus中BaseMapper方法对应的SQL在哪里&#xff1f;它为啥会被越来越多人接受。在Mybatis已经足够灵活的情况下&…

《强烈推荐一个强大的书签管理工具》

在信息爆炸的时代&#xff0c;我们每天都会浏览大量的网页&#xff0c;收藏各种各样的书签。然而&#xff0c;随着书签数量的增加&#xff0c;管理起来也变得越来越困难。这时&#xff0c;一个强大的书签管理工具就显得尤为重要。今天&#xff0c;我要向大家推荐一款备受好评的…

EtherCAT学习笔记

文章目录 前言一、EtherCAT介绍二、EtherCA系统组成2.1 ESC(EtherCAT从站控制器)2.2 从站控制微处理器2.3 物理层器件2.4 其它应用层器件 三、EtherCAT数据帧结构3.1 寻址方式3.2 时钟3.3 通信模式 四、状态机和通信初始化五、应用层协议六、ESC概述6.1 EtherCAT从站控制芯片6.…

基于SpringBoot+Vue+MySQL的美食信息推荐系统

系统展示 用户前台界面 管理员后台界面 系统背景 在数字化时代&#xff0c;随着人们对美食文化的热爱与追求不断增长&#xff0c;美食信息推荐系统成为了连接食客与美食之间的重要桥梁。面对海量的美食信息&#xff0c;用户往往难以快速找到符合个人口味和需求的美食。因此&…

Java-数据结构-Lambda表达式 (✪ω✪)

文本目录&#xff1a; ❄️一、背景&#xff1a; ➷ 1、Lambda表达式的语法&#xff1a; ➷ 2、函数式接口&#xff1a; ❄️二、Lambda表达式的基本使用&#xff1a; ➷ 1、语法精简&#xff1a; ❄️三、变量捕获&#xff1a; ❄️四、Lambda在集合中的使用&#xff1a; …

Chromium 中js navigator对象c++实现分析

一、Navigator 对象 Navigator 对象包含有关浏览器的信息。 前端测试例子&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>接口测试</title> </head> <body><div id"example&q…

爱心表达公式

脚本公式 local r (math.sin(angle) * math.sqrt(math.abs(math.cos(angle)))) / (math.sin(angle) 1.4) - 2 * math.sin(angle) 2

IOT-Tree连接西门子PLC S7 200 Smart竟然如此简单

最近一个项目需要把用户现场控制柜接入到云端&#xff0c;控制柜使用西门子PLC Smart 200 SR40型号&#xff0c;已经运行多年&#xff0c;PLC通过以太网接口对接一个触摸屏。 按照我以往的经验&#xff0c;觉得触摸屏以太网接口已经被占用&#xff0c;那么只能通过剩余的RS485…

通过一个实际的例子,介绍 Java 的自动装箱与拆箱机制

Java 中 1000 1000 返回 false&#xff0c;但 100 100 返回 true&#xff0c;这一现象背后隐藏了 Java 对于对象和基本类型的内存管理机制。为了理解这个现象&#xff0c;我们需要从 Java 的自动装箱与拆箱机制、对象引用和数值缓存策略等角度深入探讨。让我们一步一步通过 J…

电脑怎么卸载软件?学会这6个卸载软件技巧就够了(精选)

电脑怎么卸载软件&#xff1f;在日常的办公生活中&#xff0c;我们需要下载一些工具来辅助工作&#xff0c;当不需要这些工具的时候&#xff0c;我们就需要卸载这些软件了。很多小伙伴表示卸载软件卸载不干净&#xff0c;还是回残留一些文件&#xff0c;或者是卸载不了&#xf…

Verilog开源项目——百兆以太网交换机(九)表项管理模块设计

Verilog开源项目——百兆以太网交换机&#xff08;九&#xff09;表项管理模块设计 &#x1f508;声明&#xff1a;未经作者允许&#xff0c;禁止转载 &#x1f603;博主主页&#xff1a;王_嘻嘻的CSDN主页 &#x1f511;全新原创以太网交换机项目&#xff0c;Blog内容将聚焦整…

新型僵尸网络针对 100 个国家发起 30 万次 DDoS 攻击

近日&#xff0c;网络安全研究人员发现了一个名为 Gorilla&#xff08;又名 GorillaBot&#xff09;的新僵尸网络恶意软件家族&#xff0c;它是已泄露的 Mirai 僵尸网络源代码的变种。 网络安全公司 NSFOCUS 在上个月发现了这一活动&#xff0c;并称该僵尸网络在今年 9 月 4 日…

【Java 循环控制实例详解【While do... while】】

Java 循环控制详解【While & do… while】 在 Java 中&#xff0c;循环控制是程序设计中非常重要的部分&#xff0c;主要包括 while 循环和 do...while 循环。本文将详细介绍这两种循环的基本语法、执行流程及相关示例。 1. while 循环控制 基本语法 循环变量初始化; wh…

在uniapp中实现长按聊天对话框可以弹出对话框然后可以删除该条对话,单击可以进入该条对话框的对话页面

效果展示 效果描述 长按【大于1s】某一条对话框会弹出一个对话框&#xff0c;点击确定按钮就可以将当前对话框从列表中进行删除&#xff0c;如果点击取消则不做额外操作。 如果只是点击了一下&#xff0c;时间【小于1s】的情况下会直接引入到与该用户的对话框详情页面。 代码…

ai绘画变现方式全解析,教你如何通过AI绘画赚钱

*AI绘画变现方式全解析&#xff0c;教你如何通过AI绘画赚钱* *为什么选择AI绘画&#xff1f;* 你是否曾经梦想过成为一名画家&#xff0c;但现实却让你无从下手? 或者你已经是一位艺术家&#xff0c;但苦于作品没能带来足够的收入&#xff1f;随着AI技术的飞速发展&#xff…

IDEA没有代码自动提示问题的解决

一、问题描述 如图&#xff0c;博主输入new Hash 没有提示出HashMap之类的api 原因在于&#xff1a;不小心打开了idea的省电模式&#xff0c;在这个模式下&#xff0c;idea是不会为我们提供自动提示的 二、问题解决 在File中找到 Power Save Mode选项&#xff0c;将它关闭即…

【西电电路实验】1. 仪器的使用(电子线路 III 电院)

文章目录 前言一、实验原理二、实验过程1. [高频信号源DSG3030 数据手册](https://www.rigol.com/Images/DSG3000_DataSheet_CN_tcm4-3558.pdf)2. [信号源 SDS 2320X 数据手册](https://www.siglent.com/u_file/download/24_05_29/SDS2000X%20HD_Datasheet_CN02A.pdf#:~:textSD…

MySQL多表查询:标量子查询

先看我的emp表结构 emp表 子查询基本语法 select * from t1 where column1 (select column1 from t2);例子1&#xff1a;查询"销售部" 的所有员工信息 这个可以先拆解为两个 a.查询"销售部"的部门ID select id from dept where name 销售部; b. 根…

2024重生之回溯数据结构与算法系列学习(11)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】

欢迎各位彦祖与热巴畅游本人专栏与博客 你的三连是我最大的动力 以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现] 专栏跑道一 ➡️ MYSQL REDIS Advance operation 专栏跑道二➡️ 24 Network Security -LJS ​ ​ ​ 专栏跑道三 ➡️HCIP&#xff1b;H3C-SE;CCIP——…