NFS共享

article/2025/11/9 13:16:08

nfs 简介

nfs特点

  • NFS(Network File System)网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源
  • 在NFS的应用中的,本地的客户端应用可以透明的读写位于远端NFS服务器上的文件,就像访问本地文件一样 nfs 适用于Linux 与 Unix之间实现文件共享,不能实现Linux与windows 间的文件共享功能 nfs 是运行在应用层的协议,期监听在2049/TCP 和 2049/UDP 套接字上 nfs服务只能基于IP进行认证,这也是它的缺点之一

使用nfs的好处

  1. 节省本地的存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用
  2. 用户不需要在网络中的每个机器上都建立有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用
  3. 一些存储设备如软驱、CDROM和Zip(一种高存储密度的磁盘驱动与磁盘)等都可以在网络上被别的机器使用,可以减少整个网络上可移动介质设备的数量

nfs的体系组成

nfs体系至少有两个主要部分

  1. 一台nfs服务器
  2. 若干台客户机
  • 客户机通过TCP/IP网络远程访问存放在NFS服务器上的数据
  • 在NFS服务器正式启用前,需要根据实际环境和需求来配置NFS参数

nfs的应用场景

  • 不同的客户端可以在NFS上观看影视文件,节省本地空间,一台NFS服务器上可以存放所有用户的home目录,带来便利这些目录被输出到网络以便用户不管在哪台工作站上登录,总是能得到相同的home目录

  • 在客户端完成的工作数据,可以备份保存到NFS服务器上用户自己的路径下

    nfs 工作机制

  • nfs 是基于rpc来实现网络文件系统的共享的RPC

  • RPC,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议

  • RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据,在OSI网络模型中,RPC跨越了传输层和应用层

  • RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器

这里写图片描述

rpc 工作机制如上图所示,下面来描述

  • 客户端程序发起一个RPC系统调用基于TCP协议发送给另外一台主机(服务端)
  • 服务端监听在某个套接字上,当收到客户端的系统调用请求后,将收到的请求和其所传递的参数通过本地的系统调用执行一遍,并将结果返回给本地的服务进程
  • 服务端的服务进程收到返回的执行结果将其封装成响应报文,在通过rpc协议返回给客户端
  • 客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行

NFS 服务器端运行着四个进程:

  • nfsd

  • mountd

  • idmapd

  • portmapper

  • idmapd 实现用户账号的集中映射,把所有的账号都映射为NFSNOBODY,但是在访问时却能以本地用户的身份去访问

  • mountd 用于验证客户端是否在允许访问此NFS文件系统的客户端列表中(发放一个令牌,持令牌去找nfsd),否则拒绝

  • mountd 的服务端口是随机的由rpc 服务(portmapper)提供随机端口号 nfsd
    nfs的守护进程,监听在2049/TCP和2049/UDP端口上,不负责文件的存储(由NFS服务器本地内核负责调度存储),用于理解客户端发起的rpc 请求,并将其转交给本地内核,然后存储在指定的文件系统上

  • portmapper NFS服务器的rpc 服务,其监听与111/TCP和111/UDP套接字上,用于管理远程过程调用(RPC)

nfs 的主配置文件: /etc/exports

nfs 主配置文件中的常用选项

选项作用
secure这个选项是缺省项,它使用了1024以下的TCP/IP端口实现NFS的连接,指定insecure可以禁用这个选项
rw允许NFS客户机进行读/写访问,缺省项只是读的
async此选项可以改进性能,但如果没有完全关闭NFS守护进程就重启NFS服务器,这也可能造成数据丢失
no_wdelay此选项关闭写延时,如果设置了async,那么NFS就会忽略此选项
nohide若将一个目录挂载到另一个目录之上,则原来的目录通常就被隐藏起来,或看起来像空的一样,要禁用这种行为,需启用hide
no_subtree_check此选项关闭子树检查,子树检查会执行一些不想忽略的安全性检查,缺省选项是启用子树检查
no_auth_nlm此选项可作为insecure_locks指定,它告诉NFS守护进程不要对加锁请求进行认证。若关心安全性问题,就要避免使用此选项,缺省选项是auth_nlm或secure_kocks
mp(mountpoint=path)通过显示的声明此选项,NFS要求挂载所导出的目录fsid=num,此选项通常在NFS故障恢复时使用

用户映射:

  • 通过NFS中的用户映射,可以将伪或实际用户和组的标识赋给一个正在对NFS卷进行操作的用户。这个NFS用户具有映射所允许的用户和组的许可权限
  • 对NFS卷使用一个通用的用户/组可以提供一定的安全性灵活性,而不会带来很多管理负荷
  • 在使用NFS挂载的文件系统上的文件时,用户的访问通常都会受到限制,这就是说用户都是以匿名用户的身份来对文件进行访问的,这些用户缺省情况下对这些文件只有读权限
  • 这种行为对于root
    用户来说尤为重要。然而,实际上的确存在这种情况:希望用户以root用户或所定义的其他用户的身份访问远程文件系统上的文件
  • NFS 允许指定访问远程文件的用户–通过用户标识号(UID)和 组标识号(GID),可以禁用正常的squash行为

用户映射的选项

选项作用
root_squash此选项不允许root用户访问挂载上来的NFS卷
no_root_squash此选项允许root用户访问挂载上来的NFS卷
all_squash此选项对于公共访问的NFS卷来说非常有用,它会限制所有的UID和GID,只使用匿名用户。缺省设置是no_all_squash
anonuid和anongid这两个选项将匿名UID和GID修改成特定用户和组账号

客户端挂载时可以使用的特殊选项

选项作用
rsize其值是从服务器读取的字节数(缓冲)默认为1024。若使用比较高的值,如8192,可以提高传输速度
wsize其值是写入到服务器的字节数(缓冲)默认为1024若使用比较高的值,如8192,可以提高传输速度
exportfs    维护exports文件导出的文件系统表的专用工具
export  -ar    重新导出所有的文件系统
export  -au    关闭导出的所有文件系统
export  -u   FS  关闭指定的导出的文件系统

NFS 的详细配置

环境介绍

服务器IP
nfs-server192.168.169.10
nfs-client192.168.169.20

服务端的配置

  • 关闭防火墙、关闭selinux,并设置开机不启动
[root@nfs-server ~]# systemctl stop firewalld
[root@nfs-server ~]# systemctl disable  firewalld
[root@nfs-server ~]# setenforce 0
[root@nfs-server ~]# sed -ri 's/(^SELINUX=).*/\1disbaled/g' /etc/selinux/config 

2.配置yum 源

[root@nfs-server yum.repos.d]#  curl -o CentOS7-Base-163.repo  http://mirrors.163.com/.help/CentOS7-Base-163.repo
[root@nfs-server yum.repos.d]# sed -i 's/\$releasever/7/g' /etc/yum.repos.d/CentOS7-Base-163.repo 
[root@nfs-server yum.repos.d]# sed -i 's/^enabled=.*/enabled=1/g' /etc/yum.repos.d/CentOS7-Base-163.repo
[root@nfs-server yum.repos.d]# yum -y install epel-release

3.安装NFS-server

  • 安装nfs服务主程序
[root@nfs-server ~]# yum -y install nfs-utils rpcbind
  • 启动nfs-server 服务,查看rpc注册信息
[root@nfs-server ~]# systemctl start rpcbind
[root@nfs-server ~]# systemctl start nfs-server
[root@nfs-server ~]# systemctl enable rpcbind
[root@nfs-server ~]# systemctl enable nfs-server
[root@nfs-server ~]# rpcinfo -p localhostprogram 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  portmapper100024    1   udp  53070  status100024    1   tcp  44752  status100005    1   udp  20048  mountd100005    1   tcp  20048  mountd100005    2   udp  20048  mountd100005    2   tcp  20048  mountd100005    3   udp  20048  mountd100005    3   tcp  20048  mountd100003    3   tcp   2049  nfs100003    4   tcp   2049  nfs100227    3   tcp   2049  nfs_acl100003    3   udp   2049  nfs
......此处省略
  • 查看系统中运行的NFS相关进程
[root@nfs-server ~]# ps -aux |egrep "rpc|nfs"
rpc      17023  0.0  0.0  64956  1416 ?        Ss   18:47   0:00 /sbin/rpcbind -w
rpcuser  17048  0.0  0.0  42376  1752 ?        Ss   18:47   0:00 /usr/sbin/rpc.statd
root     17049  0.0  0.0      0     0 ?        S<   18:47   0:00 [rpciod]
root     17061  0.0  0.0  42564   944 ?        Ss   18:47   0:00 /usr/sbin/rpc.mountd
root     17062  0.0  0.0  43816   544 ?        Ss   18:47   0:00 /usr/sbin/rpc.idmapd
root     17072  0.0  0.0      0     0 ?        S<   18:47   0:00 [nfsd4_callbacks]
root     17078  0.0  0.0      0     0 ?        S    18:47   0:00 [nfsd]
root     17079  0.0  0.0      0     0 ?        S    18:47   0:00 [nfsd]
root     17080  0.0  0.0      0     0 ?        S    18:47   0:00 [nfsd]
root     17081  0.0  0.0      0     0 ?        S    18:47   0:00 [nfsd]
root     17082  0.0  0.0      0     0 ?        S    18:47   0:00 [nfsd]
root     17083  0.0  0.0      0     0 ?        S    18:47   0:00 [nfsd]
root     17084  0.0  0.0      0     0 ?        S    18:47   0:00 [nfsd]
root     17085  0.0  0.0      0     0 ?        S    18:47   0:00 [nfsd]
root     17133  0.0  0.0 112660   968 pts/0    R+   18:52   0:00 grep -E --color=auto rpc|nfs
  • nfs 服务端配置共享目录,编辑nfs 主配置文件,共享目录/opt/chens到192.168.169.20
[root@nfs-server ~]# vim /etc/exports
/opt/chens   192.168.169.20/24(rw,async,all_squash)
  • 创建需要共享的目录chens
[root@nfs-server ~]# mkdir /opt/chens
  • 重启nfs-server服务,查看文件是否存在
[root@nfs-server ~]# systemctl restart nfs-server
[root@nfs-server ~]# cat /var/lib/nfs/etab 
/opt/chens	192.168.169.20(rw,async,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,secure,root_squash,all_squash)
  • nfs统一给客户端为65534用户权限,查看65534属于哪个用户,修改/opt/chens目录的属主和属组为nfsnobody
[root@nfs-server ~]# grep '65534' /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@nfs-server ~]# chown -R nfsnobody.nfsnobody /opt/chens/
[root@nfs-server ~]# ls /opt/chens/ -dl
drwxr-xr-x. 2 nfsnobody nfsnobody 6 Sep  8 19:02 /opt/chens/
  • 重启nfs-server 服务生效
[root@nfs-server ~]# systemctl restart nfs-server
[root@nfs-server ~]# ss -anllt
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN     0      128              *:111                          *:*                  
LISTEN     0      128              *:20048                        *:*                  
LISTEN     0      128              *:44752                        *:*                  
LISTEN     0      128              *:22                           *:*                  
LISTEN     0      100      127.0.0.1:25                           *:*                  
LISTEN     0      64               *:33917                        *:*                  
LISTEN     0      64               *:2049                         *:*                  
LISTEN     0      128             :::111                         :::*                  
LISTEN     0      64              :::33392                       :::*                  
LISTEN     0      128             :::20048                       :::*                  
LISTEN     0      128             :::52752                       :::*                  
LISTEN     0      128             :::22                          :::*                  
LISTEN     0      100            ::1:25                          :::*                  
LISTEN     0      64              :::2049                        :::*     

客户端的配置

按照服务端前面的配置搭建yum 源、关闭防火墙、关闭selinux
此处省略步骤…

  • 安装相关的服务,仅启动rpcbind服务即可
[root@nfs-client ~]# yum -y install nfs-utils rpcbind
[root@nfs-client ~]# systemctl start  rpcbind
[root@nfs-client ~]# systemctl enable rpcbind
  • 客户端查看远程服务器提供可挂载信息
[root@nfs-client ~]# showmount -e 192.168.169.10
Export list for 192.168.169.10:
/opt/chens 192.168.169.20
  • 客户端挂载共享data
[root@nfs-client ~]# mount -t nfs 192.168.169.10:/opt/chens   /mnt
[root@nfs-client ~]# df 
Filesystem                1K-blocks    Used Available Use% Mounted on
/dev/mapper/centos-root     8374272 1749196   6625076  21% /
devtmpfs                    1013260       0   1013260   0% /dev
tmpfs                       1024304       0   1024304   0% /dev/shm
tmpfs                       1024304    8760   1015544   1% /run
tmpfs                       1024304       0   1024304   0% /sys/fs/cgroup
/dev/sda1                   6281216  127440   6153776   3% /boot
tmpfs                        204864       0    204864   0% /run/user/0
192.168.169.10:/opt/chens   9422848 1811968   7610880  20% /mnt
  • 验证是否可以共享资源,在服务端共享的目录下创建目录或者文件,在客户端挂载的目录下查看是否存在

在服务端创建目录,文件

[root@nfs-server chens]# mkdir test{1..3} ; touch  chen{1..3} 
[root@nfs-server chens]# ls
chen1  chen2  chen3  test1  test2  test3

在客户端验证结果,是否存在这些目录、文件

[root@nfs-client ~]# cd /mnt/
[root@nfs-client mnt]# ls
chen1  chen2  chen3  test1  test2  test3

结果存在,nfs-server 搭建完成!


http://chatgpt.dhexx.cn/article/0upayfqF.shtml

相关文章

ELO排名算法

在wow lol 11平台等游戏中&#xff0c;都采用了一种排名算法&#xff0c;这种算法叫ELO&#xff0c;是一个叫ELO的人发明的&#xff0c;最开始用于国际象棋比赛计分。 Ra Ra K(Sa-Ea) 对于A来说&#xff0c;初始Rank值为Ra&#xff0c;一局结束后为 Ra。这里关键是K&#xff…

天梯匹配规则ELO

ELO Rating System 是当今对弈水平评估的公认权威规则&#xff0c;已被广泛应于国际象棋、围棋、足球和篮球等体育运动以及游戏中。例如星际争霸天梯排行&#xff0c;魔兽世界竞技场&#xff0c;Dota天梯系统&#xff0c;LOL匹配等游戏的竞技比赛系统中。ELO是一套较为完善的评…

欧拉算法的实现

代码 from matplotlib import pyplot as plt import numpy as np h 0.01 yy [] xx [] yy.append(1) xx.append(0) def y1(m,n): return m - 2*n/m for i in range(100): k1 y1(yy[i],xx[i]) y yy[i] hy1(yy[i],xx[i]) xx.append(xx[i]h) k2 y1(y,xx[i1]) yy.append(…

《机器学习算法竞赛实战》整理 | 八、实战案例:Elo Merchant Category Recommendation

详情请参见原书 ​​​​​《机器学习算法竞赛实战&#xff08;图灵出品&#xff09;》(王贺&#xff0c;刘鹏&#xff0c;钱乾)【摘要 书评 试读】- 京东图书 前言 比赛链接&#xff1a; https://www.kaggle.com/competitions/elo-merchant-category-recommendation/overvi…

ELK日志分析系统之ELK原理

目录 引言 一、ELK简介 1、ELK日志分组组成 Elasticsearch&#xff08;es&#xff09; Logstash Kibana 2、日志处理步骤 二、Elasticsearch详解 1、Elasticsearch概述 2、Elasticsearch核心概念 三、Logstash详解 1、Logstash的主要组件 四、Kibana详解 1、Kiba…

大数据技术ELK实时检索

一 elasticsearch简介 ElasticSearch是一个高性能&#xff0c;基于Lucene的全文检索服务&#xff0c;是一个分布式的Restful风格的搜索和数据分析引擎&#xff0c;也可以作为NoSQL数据库使用。 对Lucene进行了扩展 原型环境和生产环境可无缝切换 能够水平扩展 支持结构化和非结…

调用链追踪:如何通过 ELK 实现日志检索?

调用链追踪&#xff1a;如何通过 ELK 实现日志检索&#xff1f; 上篇文章中&#xff0c;我们借助 Sleuth 和 Zikpin 的合力&#xff0c;搭建了一套调用链追踪系统&#xff0c;它可以帮助我们串联调用链中的上下游访问单元&#xff0c;快速定位线上异常出现在哪个环节。不过呢&…

【Algorithm】藏在Ranking中的ELo

写在前面的ELO 什么是ELO算法算法模型算法原理验证 总结 写在前面的 今天偶尔在BlueHole的HOT FIX&UPDATES的说明中看到了下面的一段话&#xff1a;Next Tuesday, August 1st, we will reset our leaderboard once again. Now that we are getting closer to launch, we wi…

欧拉路径:Hierholzer算法

Hierholzer 算法是一种用于求欧拉路径的算法。欧拉路径指的是&#xff0c;如果在一张图中&#xff0c;可以从一点出发遍历所有的边&#xff0c;每条边只能遍历一次&#xff0c;那么遍历过程中的这条路径就叫做欧拉路径。如果这条路径是闭合的&#xff0c;那就称为欧拉回路。简单…

ELO等级分制度

目录 前言ELO等级分制度 前言 近段重温了经典电影《社交网络》&#xff0c;在电影中 &#xff0c;Facebook创始人马克扎克伯格在和女友分手后&#xff0c;受到好友爱德华多对核心算法的指引 写下了哈佛女生“选美”网站Facemash&#xff0c;并一气之下黑了学校教务系统&#x…

ELO(埃洛匹配分制度)Java篇

1. ELO算法数学实现介绍 其中表达式各字母含义&#xff1a; EA&#xff1a;预期A玩家的胜负值 EB&#xff1a;预期B玩家的胜负值 RA&#xff1a;A玩家当前的积分 RB&#xff1a;B玩家当前的积分 SA&#xff1a;实际胜负值(A VS B)&#xff0c;胜1&#xff0c;平0.5&#xf…

ELK(Elasticsearch、Kibana、Logstash)以及向ES导入mysql数据库数据或CSV文件数据,创建索引和可视化数据

ELK下载 地址&#xff1a;Past Releases of Elastic Stack Software | Elastic 在Products和version处分别选择需要下载的产品和版本&#xff0c;E&#xff08;elasticsearch&#xff09;L&#xff08;logstash&#xff09;K&#xff08;kibana&#xff09;三者版本必须相同 …

浅析竞技游戏匹配机制-ELO算法

注&#xff1a;本文部分内容源自一位论坛大神&#xff0c;但具体的来源很抱歉笔者已经忘记&#xff0c;如侵即删。 文章目录 0 前言1 一般胜率预测算法2 添加特殊假设后的胜率预测算法3 基于不同分布的胜率预测算法4 最终的ELO算法5 相关改进5.1 从1v1到NvN5.2 收敛速度的改进5…

ELK 实现日志检索

什么是 ELK&#xff1f; ELK 并不是一个技术框架的名称&#xff0c;它其实是一个三位一体的技术名词&#xff0c;ELK 的每个字母都来自一个技术组件&#xff0c;它们分别是 Elasticsearch&#xff08;简称 ES&#xff09;、Logstash 和 Kibana。取这三个组件各自的首字母&…

Elo评分算法原理与实现

《社交网络》里的Mark Zackburg被女朋友甩后,在舍友的启发下,充分发挥了技术宅男自娱自乐的恶搞天分,做出了Facemash网站,对学校女生的相貌进行排名打分,结果网站访问流量过大,直接把学校网络搞瘫痪了。Facemask大受欢迎的关键就在于Zackburg基友Eduardo写在窗户上的排名…

ELO评分算法

ELO等级分制度是由匈牙利裔美国物理学家Elo创建的一个衡量各类对弈活动选手水平的评分方法&#xff0c;是当今对弈水平评估的公认的权威方法。被广泛应用于国际象棋、围棋、足球等运动&#xff0c;以及很多网游与电子竞技产业。游戏界比较著名的应用有&#xff1a; WOW&#xf…

ELMo算法介绍

这篇介绍一下ELMo算法(论文)。按道理应该加入前面的《关于句子embedding的一些工作简介》系列&#xff0c;但是严格来讲&#xff0c;只能说它通过自己产生的word embedding来影响了句子embedding, 所以干脆另写一篇吧。 IntroductionBidirectional language modelsELMoEvaluati…

ELO算法的JAVA实现

近期接手一个游戏项目&#xff0c;由于项目涉及得分计算&#xff0c;故研究了下ELO算法。关于ELO算法的程序实现&#xff0c;是少之又少&#xff0c;好不容易看到了一篇&#xff0c;最终不得不关闭该页面&#xff0c;故决定自己实现。 1. ELO算法数学实现介绍 其中表达式各字母…

数值 ELO算法教程

ELO是什么&#xff1f; 是指由匈牙利裔美国物理学家阿帕德埃洛创建的一个衡量各类对弈活动水平的评价方法&#xff0c;是当今对弈水平评估的公认的权威方法。被广泛用于国际象棋、围棋、足球、篮球等运动。 埃洛排名系统是基于统计学的一个评估棋手水平的方法。美国国际象棋协…

使用WaveOut API播放WAV音频文件(解决卡顿)

虽然waveout已经过时&#xff0c;但是其api简单&#xff0c;有些时候也还是需要用到。 其实还是自己上msdn查阅相应api最靠谱&#xff0c;waveout也有提供暂停、设置音量等接口的&#xff0c;这里给个链接&#xff0c;需要的可以自己查找&#xff1a; https://msdn.microsoft.c…