22_NFS:网络文件系统详解

系列文章导航:01_Linux基础操作CentOS7学习笔记-CSDN博客

文章目录

    • 一、NFS 概述
      • 1. 概述
      • 2. 特点
    • 二、NFS 工作原理
      • 2.1 NFS 工作流程
      • 2.2 挂载原理
    • 三、NFS 服务部署
      • 3.1 常用命令
      • 3.2 服务器端配置
      • 3.3 客户端配置
      • 3.4 测试
    • 四、总结


一、NFS 概述

1. 概述

NFS(Network File System)是一种基于 TCP/IP 传输的网络文件系统协议。通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。NAS 存储:NFS 服务的实现依赖于 RPC (Remote Process Call,远端过程调用)机制,以完成远程到本地的映射过程。在 CentOS 7 系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS 共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持。手动加载 NFS 共享服务时,应该先启动 rpcbind,再启动 nfs。
NFS 端口:2049,RPC 端口:111。

2. 特点

  • 采用 TCP/IP 传输网络文件
  • 安全性低
  • 简单易操作
  • 适合局域网环境

二、NFS 工作原理

NFS 服务器可以让 PC 将网络中的 NFS 服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利。

2.1 NFS 工作流程

  1. 首先服务器端启动 RPC 服务,并开启 111 端口。
  2. 服务器端启动 NFS 服务,并向 RPC 注册端口信息。
  3. 客户端启动 RPC(portmap 服务),向服务端的 RPC(portmap)服务请求服务端的 NFS 端口。
  4. 服务端的 RPC(portmap)服务反馈 NFS 端口信息给客户端。
  5. 客户端通过获取的 NFS 端口来建立和服务端的 NFS 连接并进行数据的传输。

2.2 挂载原理

当我们在 NFS 服务器设置好一个共享目录 /opt 后,其他的有权访问 NFS 服务器的 NFS 客户端就可以将这个目录挂载到自己文件系统的某个挂载点,这个挂载点可以自己定义,如上图客户端 A 与客户端 B 挂载的目录就不相同。并且挂载好后我们在本地能够看到服务端 /opt 的所有数据。

三、NFS 服务部署

3.1 常用命令

常用选项描述
rw允许读写
ro只读
sync同步写入
async先写入缓冲区,必要时才写入磁盘,速度快,但会丢数据
subtree_check若输出一个子目录,则 NFS 服务将检查其父目录权限
no_subtree_check若输出一个字目录,不检查父目录,提高效率
no_root_squash客户端以 root 登录时,赋予其本地 root 权限
root_squash客户端以 root 登录时,将其映射为匿名用户
all_squash将所有用户映射为匿名用户
exportfs -v  // 查看详细的 NFS 信息
exportfs -r  // 重读配置文件
showmount -e // 查看本机发布的 NFS 共享目录
showmount -e +IP // 查看 IP 地址发布的 NFS 共享目录
mount -t nfs 192.168.48.6:/opt /mnt // 将 NFS 服务端 192.168.48.6 下的 /opt 挂载到 /mnt 下
rpcinfo -p localhost  // 查看 rpc 注册的端口信息

3.2 服务器端配置

1. 检查并安装软件
rpm -q rpcbind nfs-utils
yum install -y rpcbind nfs-utils
2. 创建共享目录
vim /etc/exports  // NFS 的配置文件,默认文件内容为空(无任何共享)
/opt         192.168.48.0/24(rw,sync,no_root_squash)
// 设置 /opt 为共享目录,允许 192.168.48.0 网段的 IP 地址主机访问
3. 启动服务或者 exportfs 加载配置
systemctl start rpcbind  // 一定要先开启 rpcbind 服务
systemctl start nfs      // 如服务已启动,更改完配置信息后需要重启服务
exportfs -ar      --- 重新读取 /etc/exports 配置文件,更改生效

3.3 客户端配置

  1. 检查并安装软件
rpm -q rpcbind nfs-utils
yum install -y rpcbind nfs-utils
systemctl start rpcbind
systemctl start nfs
  1. 将共享目录挂载到本地
# showmount -e IP 查看对应的 IP 的服务器共享列表
[root@centos8 ~]# showmount -e 192.168.100.133
Export list for 192.168.100.133:
/shell    *
/other   192.168.1000.0/24[root@centos8 ~]# mount -t nfs 192.168.100.133:/shell /mnt

3.4 测试

设置所有的用户都以特定的用户身份去操作 NFS 共享目录(示例配置以 nfs 用户身份)。

设置共享目录为 0755,除了 root 其他人没有 w 权限。

[root@localhost ~]# chmod 0755 /shell
[root@localhost ~]# ll -ld /shell/
drwxr-xr-x. 8 root root 143 88 11:07 /shell/

服务配置共享有 w 权限。

[root@localhost ~]# cat /etc/exports
/shell *(rw,sync)

给与 nfs 用户 nfs 组共享目录 /shell 的 rw 权限。

[root@localhost ~]# setfacl -m u:nfs:rwx /shell
[root@localhost ~]# setfacl -m g:nfs:rwx /shell

在 NFS 服务端创建程序账号 nfs。

[root@localhost ~]# useradd -M -s /sbin/nologin nfs
[root@localhost ~]# id nfs
uid=1030(nfs) gid=1031(nfs)=1031(nfs)

修改配置,使所有人都以 nfs 身份使用共享目录。

[root@localhost ~]# vim /etc/exports
/shell *(rw,sync,all_squash,anonuid=1030,anongid=1031)

重启 NFS 服务。

[root@localhost ~]# systemctl restart nfs

挂载测试。

# 测试 root 管理用户
[root@centos8 ~]# whoami
root
[root@centos8 ~]# mount 192.168.50.147:/shell /mnt
[root@centos8 ~]# touch /mnt/root.sh
[root@centos8 ~]# ls -l /mnt/root.sh --- 因为当前客户端没有 1030 的账号,因此文件用户显示 uid
-rw-r--r--. 1 1030 1031 0 87 23:48 /mnt/root.sh[root@localhost ~]# ls /shell/root.sh -l --- 在 NFS 服务端查看
-rw-r--r-- 1 nfs nfs 0 88 11:48 /shell/root.sh
[root@centos8 ~]# umount /mnt# 测试普通用户
[root@centos8 ~]# su - c8
上一次登录:一 87 23:06:10 EDT 2023 pts/2 上
[c8@centos8 ~]$ whoami
c8
[c8@centos8 ~]$ sudo mount 192.168.50.147:/shell /mnt/
[sudo] c8 的密码:
[c8@centos8 ~]$ [c8@centos8 ~]$
[c8@centos8 ~]$ touch /mnt/c88.sh
[c8@centos8 ~]$ ls -l /mnt/c88.sh
-rw-rw-r--. 1 1030 1031 0 87 23:51 /mnt/c88.sh[root@localhost ~]# ls -l /shell/c88.sh
-rw-rw-r-- 1 nfs nfs 0 88 11:51 /shell/c88.sh
[root@centos8 ~]# umount /mnt

四、总结

  1. NFS 服务多用于局域网内。
  2. 搭建服务时一定要先启动 rpc 后启动 nfs。
  3. 配置文件中的信息格式一定要对,否则报错。

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

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

相关文章

从0到1学习node.js(express模块)

文章目录 Express框架1、初体验express2、什么是路由3、路由的使用3、获取请求参数4、电商项目商品详情场景配置路由占位符规则5、小练习,根据id参数返回对应歌手信息6、express和原生http模块设置响应体的一些方法7、其他响应设置8、express中间件8.1、什么是中间件…

如何搭建直播美颜SDK平台的最佳实践?美颜API的实现与集成详解

本篇文章,将从技术实现、平台搭建、API集成以及性能优化四个方面,为开发者详解如何搭建一个直播美颜SDK平台。 一、直播美颜SDK平台的技术架构 一般的美颜效果包括磨皮、亮肤、瘦脸、大眼等,这些效果的实现需要依赖图像增强和滤镜算法。核心…

【51单片机】第一个小程序 —— 点亮LED灯

学习使用的开发板:STC89C52RC/LE52RC 编程软件:Keil5 烧录软件:stc-isp 开发板实图: 文章目录 单片机介绍LED灯介绍练习创建第一个项目点亮LED灯LED周期闪烁 单片机介绍 单片机,英文Micro Controller Unit&#xff0…

创建ODBC数据源SQLConfigDataSource函数的用法

网络上没有这个函数能实际落地的用法说明&#xff0c;我实践后整理一下&#xff1a; 1.头文件与额外依赖库&#xff1a; #include <odbcinst.h> #pragma comment(lib, "legacy_stdio_definitions.lib") 2.调用函数&#xff1a; if (!SQLConfigDataSourceW(…

阿里云镜像源无法访问?使用 DaoCloud 镜像源加速 Docker 下载(Linux 和 Windows 配置指南)

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f343; vue-uniapp-template &#x1f33a; 仓库主页&#xff1a; GitCode&#x1f4ab; Gitee &#x1f…

java :String 类

在我们之前的讲解中我们已经了解了很多的Java知识&#xff0c;这节我们讲Java中字符如何定义以及关于String如何使用还有常见的string函数。 【本节目标】 1. 认识 String 类 2. 了解 String 类的基本用法 3. 熟练掌握 String 类的常见操作 4. 认识字符串常量池 5. 认识 …

江协科技STM32学习- P21 ADC模数转换器

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

基于SpringCloud的WMS管理系统源码

商品管理&#xff1a;商品类型&#xff0c;规格&#xff0c;详情等设置。 采购管理&#xff1a;采购单录入。 销售管理&#xff1a;销售单录入。 库存管理&#xff1a;库存查询、库存日志 采用前后端分离的模式&#xff0c;微服务版本前端 后端采用Spring Boot、Spring Cl…

python实现放烟花效果庆祝元旦

马上就要2025年元旦啦&#xff0c;提前祝大家新年快乐 完整代码下载地址&#xff1a;https://download.csdn.net/download/ture_mydream/89926458

vLLM推理部署Qwen2.5

vLLM vLLM 是一个用于大模型推理的高效框架。它旨在提供高性能、低延迟的推理服务&#xff0c;并支持多种硬件加速器&#xff0c;如 GPU 和 CPU。 vLLM 适用于大批量Prompt输入&#xff0c;并对推理速度要求高的场景&#xff0c;吞吐量比HuggingFace Transformers高10多倍。 …

手指关节分割系统:视觉算法突破

手指关节分割系统源码&#xff06;数据集分享 [yolov8-seg-C2f-RFAConv&#xff06;yolov8-seg-fasternet-bifpn等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Glob…

灵动AI:艺术与科技的融合

灵动AI视频官网地址&#xff1a;https://aigc.genceai.com/ 灵动AI 科技与艺术的完美融合之作。它代表着当下最前沿的影像技术&#xff0c;为我们带来前所未有的视觉盛宴。 AI 视频以强大的人工智能算法为基石&#xff0c;能够自动分析和理解各种场景与主题。无论是壮丽的自然…

网络学习/复习2套接字

LinuxCode/code26 zc/C语言程序学习 - 码云 - 开源中国

c语言中整数在内存中的存储

整数的二进制表示有三种&#xff1a;原码&#xff0c;反码&#xff0c;补码 有符号的整数&#xff0c;三种表示方法均有符号位和数值位两部分&#xff0c;符号位都是用‘0’表示“正&#xff0c;用1表示‘负’ 最高位的以为被当作符号位&#xff0c;剩余的都是数值位。 整数…

python 制作 发货单 (生成 html, pdf)

起因&#xff0c; 目的: 某个小店&#xff0c;想做个发货单。 过程: 先写一个 html 模板。准备数据&#xff0c; 一般是从数据库读取&#xff0c;也可以是 json 格式&#xff0c;或是 python 字典。总之&#xff0c;是数据内容。使用 jinja2 来渲染模板。最终的结果可以是 h…

使用 telnet 连接 dubbo 服务调用暴露的 dubbo 接口

目录 前言 环境准备 Telnet客户端 zookeeper pom 配置文件 dubbo接口 telnet连接dubbo dubbo命令 ls invoke 前言 工作中的微服务项目远程调用使用的技术是 dubbo&#xff0c;当对外提供了一个 duboo 接口时&#xff0c;无论是开发阶段自测&#xff0c;还是上线了服…

【EndNote版】如何在Word中引用文献

1、在Word中&#xff0c;鼠标光标放在所需插入文献的位置 2、点击选项卡中的“EndNote X9”&#xff0c;直接在EndNote中选中对应的文献 3、选中文献&#xff0c;点击工具栏中的“引用” 4、最后就可在Word中看到所插入的文献

华为配置BFD状态与接口状态联动实验

组网图形 图1 配置BFD状态与接口状态联动组网图 BFD简介配置注意事项组网需求配置思路操作步骤配置文件 BFD简介 为了减小设备故障对业务的影响&#xff0c;提高网络的可靠性&#xff0c;网络设备需要能够尽快检测到与相邻设备间的通信故障&#xff0c;以便及时采取措施&…

技术成神之路:设计模式(二十三)解释器模式

相关文章&#xff1a;技术成神之路&#xff1a;二十三种设计模式(导航页) 介绍 解释器模式&#xff08;Interpreter Pattern&#xff09;是一种行为设计模式&#xff0c;用于定义一种语言的文法表示&#xff0c;并提供一个解释器来处理这种文法。它用于处理具有特定语法或表达…

【C++】继承与模板

继承 1.继承的概念 概念&#xff1a;继承(inheritace)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称之为派生类。继承呈现了面向对象程序设计的…