Linux NFS服务

article/2025/9/26 10:05:12

NFS服务

一、NFS简介

NFS(Network File System)即网络文件系统,它允许网络中的不同计算机相互之间共享资源。NFS客户端可以透明地读写远程NFS服务器上的文件,就像访问本地文件一样。

二、NFS服务概述

NFS是1980年由SUN发展出来在UNINX&Linux系统间实现文件共享的一种方法。它是一种文件系统协议,支持应用程序在客户端通过网络存取位于服务器磁盘中的数据。

NFS只提供网络文件共享功能,不提供数据传输的功能。因此NFS客户端和NFS服务器需要借助RPC(Remote Procedure Calls)远程过程调用协议实现数据传输。RPC定义了一种进程间通过网络进行交互通信的机制,它允许客户端进程通过网络向远程服务进程请求服务,而不需要了解服务器底层的通信协议详细信息。

NFS服务器自开启服务之后一直处于等待状态,由NFS客户端建立过程调用的请求,将调用参数发送到远程NFS服务器,并等待响应。当请求到达远程NFS服务器后,NFS服务器处理客户端的请求,调用指定的程序,并将结果返回NFS客户端。NFS服务器上的目录如果可以被过程用户访问,就称为导出(export);客户主机访问服务器导出目录的过程称为挂载(mount)或导入(import)。

三、NFS工作流程

当访问程序通过NFS客户端向NFS服务端存取文件时,其工作流程如下所述:

步骤1,首先用户访问NFS共享资源,由程序在NFS客户端上发出NFS文件存取功能的询问请求,这时NFS客户端(即执行程序的服务器)RPC服务(portmap 或 rpcbind 服务)就会通过网络向NFS服务端的RPC服务(即 portmap 或 rpcbind 服务)的111端口发出NFS文件存取功能的询问请求。

步骤2,NFS服务端的RPC服务(即 portmap 或 rpcbind 服务)找到对应的已注册的NFSdaemon端口后,通知NFS客户端的RPC服务(即 portmap 或 rpcbind 服务)。

步骤3,此时NFS客户端就可以获取到正确的端口,然后就直接与NFS daemon 联机存取数据。

步骤4,NFS客户端把数据存取成功后,告诉用户存取结果。

由于NFS的各项功能都需要向RPC服务注册,所以RPC服务能获取到NFS服务的各项对应的端口号、PID、NFS在主机监听的IP等,从而NFS客户端才能够通过RPC服务询问从而找到正确的端口。也就是说,NFS需要有RPC服务,NFS服务只需在服务端后于RPC启动,客户端无需启动NFS服务。

四、NFS服务实践

案例1:

某公司新购一台服务器,服务器上已安装Linux操作系统,现要求将服务器配置成NFS服务器,实现文件共享服务,公司网络的网段为192.168.X.0/24。具体共享要求如下:

(1)在服务器端创建目录/nfs<y>1,并在其中创建文件rodir.txt,再创建目录/nfs<y>2,并在其中创建文件rwdir.txt。

(2)共享/nfs<y>1目录,允许所有的客户端访问该目录,但只具有读取权限。

(3)共享/nfs<y>2目录,只允许192.168.x.0/24网段的客户端访问,并具有读写权限。

(4)在客户端查看NFS服务器上发布的共享目录。

(5)在客户端挂载NFS服务器上发布的/nfs<y>1目录到本地的/nfslocal1目录下,并查看文件列表。

(6)在客户端挂载NFS服务器上发布的/nfs<y>2目录到本地的/nfslocal2目录下,并在其中创建文件wtest.file

1、实验环境

角色主机名操作系统网卡IP地址备注
NFS服务器nfsserver.gc.comCentOS7.4vmnet18192.168.92.11虚拟机
NFS客户端nfsclient.gc.comCentOS7.4vmnet18192.168.92.101虚拟机

2、环境准备

  • NFS服务器

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.92.11
NETMASK=255.255.255.0
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens32
DEVICE=ens32
ONBOOT=yes
​
​
[root@localhost ~]# hostnamectl set-hostname nfsserver.gc.com
[root@localhost ~]# hostname
nfsserver.gc.com
​
[root@nfsserver ~]# systemctl stop firewalld
[root@nfsserver ~]# systemctl disable firewalld
[root@nfsserver ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: inactive (dead)Docs: man:firewalld(1)[root@nfsserver ~]# getenforce 
Disabled
​
​
[root@nfsserver ~]# yum repolist all
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                     repo name                 status
DVD                         gc                        enabled: 3,894
repolist: 3,894

  • NFS客户端

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.92.101
NETMASK=255.255.255.0
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens32
DEVICE=ens32
ONBOOT=yes
​
​
[root@localhost ~]# hostnamectl set-hostname nfsclient.gc.com
[root@localhost ~]# hostname
nfsclient.gc.com
​
​
[root@nfsclient ~]# systemctl stop firewalld
[root@nfsclient ~]# systemctl disable firewalld
[root@nfsclient ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: inactive (dead)Docs: man:firewalld(1)​
[root@nfsclient ~]# getenforce 
Disabled
​
​
[root@nfsclient ~]# yum repolist all
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                     repo name                 status
DVD                         gc                        enabled: 3,894
repolist: 3,894

3、配置文件解析

/etc/exports                            ###主配置文件
/usr/sbin/exports                       ###NFS服务自带管理命令
/usr/sbin/showmount                     ###客户端用来查看服务端分享的资源命令
/usr/lib/systemd/system/nfs.service     ###NFS服务管理脚本
/usr/lib/systemd/system/rpcbind.service ###rpc服务管理脚本

4、配置参数解析

参数内容说明
rw|ro该目录分享的权限是可读写 (read-write) 或只读 (read-only),但最终能不能读写,还是与文件系统的 rwx 及身份有关。
sync|asyncsync 代表数据会同步写入到内存与硬盘中,async 则代表数据会先暂存于内存当中,而非直接写入硬盘!
no_root_squash|root_squash客户端使用 NFS 文件系统的账号若为 root 时,系统该如何判断这个账号的身份?预设的情况下,客户端 root 的身份会由 root_squash 的设定压缩成 nfsnobody, 如此对服务器的系统会较有保障。但如果你想要开放客户端使用 root 身份来操作服务器的文件系统,那么这里就得要开 no_root_squash 才行!
all_squash不论登入 NFS 的使用者身份为何, 他的身份都会被压缩成为匿名用户,通常也就是 nobody(nfsnobody) 。
anonuid|anongidanon 意指 anonymous (匿名者) 前面关于 *_squash 提到的匿名用户的 UID 设定值,通常为 nobody(nfsnobody),但是你可以自行设定这个 UID 的值!当然,这个 UID 必需要存在于你的 /etc/passwd 当中! anonuid 指的是 UID 而 anongid 则是群组的 GID 。

5、服务配置

(1)安装软件包

[root@nfsserver ~]# rpm -q rpcbind nfs-utils || yum install rpcbind nfs-utils -y

(2)创建共享文件

[root@nfsserver ~]# mkdir /nfsgc{1,2}
[root@nfsserver ~]# touch /nfsgc1/rodir.txt /nfsgc2/rwdir.txt
[root@nfsserver ~]# chown -R nfsnobody:nfsnobody /nfsgc{1,2}
[root@nfsserver ~]# ls -l /nfsgc1 /nfsgc2
/nfsgc1:
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Mar 31 22:36 rodir.txt
​
/nfsgc2:
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Mar 31 22:36 rwdir.txt
[root@nfsserver ~]# echo "chige ok" > /nfsgc1/rodir.txt 
[root@nfsserver ~]# echo "chige no problem" > /nfsgc2/rwdir.txt 
[root@nfsserver ~]# cat /nfsgc1/rodir.txt /nfsgc2/rwdir.txt 
chige ok
chige no problem

(3)修改配置文件

[root@nfsserver ~]# cat /etc/exports
/nfsgc1     *(ro)
/nfsgc2     192.168.92.11/24(rw,async)

(4)启动服务并设置开机自启动

[root@nfsserver ~]# systemctl start rpcbind
[root@nfsserver ~]# systemctl enable rpcbind
[root@nfsserver ~]# systemctl status rpcbind
● rpcbind.service - RPC bind serviceLoaded: loaded (/usr/lib/systemd/system/rpcbind.service; indirect; vendor preset: enabled)Active: active (running) since Wed 2021-03-31 22:42:11 CST; 1min 32s agoMain PID: 1268 (rpcbind)CGroup: /system.slice/rpcbind.service└─1268 /sbin/rpcbind -w[root@nfsserver ~]# systemctl start nfs
[root@nfsserver ~]# systemctl enable nfs
[root@nfsserver ~]# systemctl status nfs
● nfs-server.service - NFS server and servicesLoaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)Drop-In: /run/systemd/generator/nfs-server.service.d└─order-with-mounts.confActive: active (exited) since Wed 2021-03-31 22:42:11 CST; 14s agoMain PID: 1290 (code=exited, status=0/SUCCESS)CGroup: /system.slice/nfs-server.service

6、客户端测试

(1)安装包客户端软件包

[root@nfsclient ~]# rpm -q rpcbind nfs-utils || yum install rpcbind nfs-utils -y

(2)访问测试

[root@nfsclient ~]# showmount -e 192.168.92.11
Export list for 192.168.92.11:
/nfsgc1 *
/nfsgc2 192.168.92.11/24

(3)挂载测试

[root@nfsclient ~]# mkdir /nfslocal{1,2}
[root@nfsclient ~]# mount -t nfs 192.168.92.11:/nfsgc1 /nfslocal1
[root@nfsclient ~]# mount -t nfs 192.168.92.11:/nfsgc2 /nfslocal2
[root@nfsclient ~]# df -Th | grep nfs
192.168.92.11:/nfsgc1   nfs4       17G  1.4G   16G   8% /nfslocal1
192.168.92.11:/nfsgc2   nfs4       17G  1.4G   16G   8% /nfslocal2
[root@nfsclient ~]# cat /nfslocal1/rodir.txt /nfslocal2/rwdir.txt 
chige ok
chige no problem
[root@nfsclient ~]# touch /nfslocal1/wtest.file
touch: cannot touch ‘/nfslocal1/wtest.file’: Read-only file system
[root@nfsclient ~]# touch /nfslocal2/wtest.file
[root@nfsclient ~]# ls -l /nfslocal2
total 4
-rw-r--r-- 1 nfsnobody nfsnobody 17 Mar 31 22:39 rwdir.txt
-rw-r--r-- 1 nfsnobody nfsnobody  0 Mar 31 22:50 wtest.file

案例2:(选做)

根据案例2进行扩展,经过一段时间的运营,公司发现,普通用户在NFS服务器上没有以匿名用户身份访问,但管理员root居然是以匿名(nfsnobody)身份访问的,因此需要做出调整。调整方案为当管理员root用户访问时,在服务器端需要映射为root用户。

1、修改服务器配置

[root@nfsserver ~]# cat /etc/exports
/nfsgc1     *(ro)
/nfsgc2     192.168.92.11/24(rw,async,no_root_squash)

2、客户端测试

[root@nfsclient ~]# touch /nfslocal2/wtest2.file
[root@nfsclient ~]# ls -l /nfslocal2
total 4
-rw-r--r-- 1 nfsnobody nfsnobody 17 Mar 31 22:39 rwdir.txt
-rw-r--r-- 1 root      root       0 Mar 31 22:52 wtest2.file
-rw-r--r-- 1 nfsnobody nfsnobody  0 Mar 31 22:50 wtest.file


http://chatgpt.dhexx.cn/article/CLs6opGu.shtml

相关文章

NFS服务

文章目录 一&#xff0c;NFS共享存储服务1.NFS网络文件系统2.NAS存储3.端口号4.特点 二&#xff0c;NFS配置实验步骤总结 三&#xff0c;ssh服务1.SSH远程登陆方式登陆方法一登录方法二 四&#xff0c;SSHD 服务支持两种验证方式1.密码验证2.密钥对验证3.公钥和私钥的关系4.构建…

NFS服务器原理、搭建、配置

目录 NFS服务简介 什么是NFS&#xff1f; NFS挂载原理&#xff1a; RPC与NFS通讯原理&#xff1a; NFS客户端和NFS服务器通讯过程&#xff1a; Linux下NFS服务器部署 NFS服务所需软件及主要配置文件&#xff1a; 服务端安装NFS服务步骤&#xff1a; NFS客户端挂载配置…

CentOS——nfs服务

一.在服务器端的操作&#xff08;IP地址&#xff1a;192.168.2.200&#xff09; 1.下载nfs服务 yum -y install rpcbind nfs-utils 2.关闭防火墙 systemctl stop firewalldc setenforce 0 &#xff1b; 3. 编辑配置文件 vim /etc/exports 添加内容为&#xff1a; /data/…

NFS服务的搭建

NFS 目的是让不同计算机不同操作系统之间可以彼此共享文件。 采用服务器/客户端工作模式 在NFS服务器上将目录设置为输出目录&#xff08;共享目录&#xff09;后&#xff0c;客户端就可以将这个目录挂载到自己系统中的某个目录下。 什么是RPC守护进程 使用NFS服务&#xf…

NFS服务配置

1. 服务器端 &#xff08;1&#xff09;查看ip地址为192.168.1.103。 &#xff08;2&#xff09;先查找一下系统是否安装了nfs的软件包&#xff0c;使用rpm-qa来查看。 rpm –qa |grep nfs &#xff08;3&#xff09;编辑/etc/exports文件来设置服务器端的共享目录&#xff0…

NFS服务介绍

1. NFS服务介绍 1.1什么是NFS服务 NFS&#xff08;Network File System&#xff09;即网络文件系统&#xff0c;它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中&#xff0c;本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件&#xff0c;就像访问…

【ubuntu】nfs服务搭建

一、开篇 在嵌入式linux开发过程中&#xff0c;由于目标平台的资源限制&#xff0c;开发环境一般都不会放到目标板卡上&#xff08;需要放在开发宿主机上&#xff09;&#xff0c;如果需要宿主机与目标板卡之间进行文件传输&#xff0c;该怎么办呢。这时候nfs就派生用场了。nf…

linux上搭建nfs服务

NFS&#xff08;Network File System&#xff09;&#xff1a;它最大的功能就是可以通过网络&#xff0c;让不同的机器、不同的操作系统可以共享彼此的文件。 NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中&#xff0c;而在本地端的系统中来看&…

Linux的nfs服务

目录 一、NFS 1、介绍NFS 2、NFS服务的实现 3、NFS服务的特点 4、NFS服务的作用 二、NFS案例 1、安装RPC依赖和nfs服务&#xff08;rpcbind、nfs-utils&#xff09; 2、修改配置文件&#xff08; /etc/exports &#xff09; 3、开启服务并查看端口 4、挂载查看共享 …

NFS服务详解

文章目录 一.NFS概述二.NFS工作原理2.1NFS工作流程2.2挂载原理 三.NFS服务部署3.1常用命令3.2服务器端配置3.3客户端配置3.4服务测试 四.总结 一.NFS概述 1.概述 NFS是一种基于TCP/IP 传输的网络文件系统协议。通过使用NFS协议&#xff0c;客户机可以像访问本地目录一样访问远…

格兰因果模型可以分析哪些东西_论文实证经验分享|VAR模型实操步骤(上)

VAR模型操作步骤指南 简单来说,VAR模型就是用模型刻画向量间的数量关系。它的适用前提可概括为以下两点:①能进行回归。②向量之间存在一定数量关系(统计意义上的因果关系-格兰杰因果检验)。而满足以上两点的条件则是数据平稳,否则会发生伪回归,且无法进行格兰杰因果检验。…

用神经网络修正系统误差笔记

用神经网络综合修正传感器静态误差的连接方法如下图所示&#xff1a; 即误差修正模型的输出z与被测非电量x成线性关系&#xff0c;且与各环境参数无关。 只要使误差修正模型&#xff0c; 即可实现传感器静态误差的综合修正。 通常传感器模型 f(x;t) 及其反函数是复杂的&…

多元线性回归与高斯误差模型的同源关系

机器学习的起点——线性回归 一、线性回归的地位 首先&#xff0c;线性回归中最基础的概念是一元线性回归模型。 在回归模型中&#xff0c;线性回归模型是最简单的。其具备两个优势&#xff1a;第一是线性回归模型适合于大数据。训练时消耗的计算资源较少。第二是模型本身具备…

用R语言做单方程的误差修正模型(ECM)

># 单方程误差修正模型案例分析 > ########################### > # 数据的生成 > set.seed(12345) > u<-rnorm(500) > x<-cumsum(u)#求累积和&#xff0c;返回一个变量&#xff0c;它的第i个元素是从U&#xff08;1&#xff09;到U&#xff08;i&…

单方程误差修正模型案例分析

单方程误差修正模型案例分析数据的生成set.seed(12345) u<-rnorm(500) x<-cumsum(u) y<-xu E-G协整估计及检验model.lm<-lm(y~x) summary(model.lm)Call: lm(formula y ~ x)Residuals:Min 1Q Median 3Q Max -2.65130 -0.65274 0.02012 0.60…

StataIC——协整检验与误差修正模型

一、简介 这篇博文是在博主写的上一篇《StataIC——数据描述性统计分析、平稳性检验、平稳化》的基础上的建立的传送门&#xff0c;这篇博文主要是做协整检验和误差修正模型。本篇博文是一篇关于线性回归的基本操作&#xff1b;时间序列的平稳性检验、协整检验和误差修正模型&…

误差修正ECM模型怎么分析?

在宏观计量经济研究中&#xff0c;通常会使用VAR模型研究多个时间经济变量之间的数量关系情况&#xff0c;当数据不平稳但满足同阶单整时&#xff0c;通常使用协整检验研究长期均衡关系。与此同时&#xff0c;还可使用误差修正模型ECM&#xff08;error correction model&#…

时间序列分析(13)| 误差修正模型、协整检验(完结篇)

本篇为「时间序列分析」系列推文的最后一篇。 1 协整的概念 「协整」&#xff08;cointegrated&#xff09;描述的是两个及以上时间序列变量之间的关系。 若一个时间序列变量的阶差分是平稳的&#xff0c;则称该变量为阶单整&#xff1b;若多个阶时间序列变量的线性组合的单整阶…

误差修正模型

误差修正模型通常作为协整模型的补充模型出现。协整模型度量解释的是序列间的长期关系,而误差修正模型解释的是序列之间的短期关系。 1.模型简介 误差修正模型,简称ECM模型,构造原理如下: 假设非平稳响应序列{yt}与非平稳输入序列{xt}之间具有协整关系,即: 则回归残差序…

时间序列研(part10)--误差修正模型

学习笔记&#xff0c;仅供参考&#xff0c;有错必纠 文章目录 时间序列误差修正模型F检验似然比&#xff08;LR&#xff09;检验W检验LM乘数检验LR, W和LM检验自相关的LM检验 时间序列 误差修正模型 在用“一般到特殊”方法建立模型时的&#xff0c;首先应对初始模型&#xff0…