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

目录

NFS服务简介

什么是NFS?

NFS挂载原理:

RPC与NFS通讯原理:

NFS客户端和NFS服务器通讯过程:

Linux下NFS服务器部署

NFS服务所需软件及主要配置文件:

服务端安装NFS服务步骤:

NFS客户端挂载配置:

在Window上挂载NFS


NFS服务简介

什么是NFS?

NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。

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

NFS一般用来存储共享视频,图片等静态数据。

NFS挂载原理:

<在这里插入图片描述

图;服务器挂载结构图

如上图示:

当我们在NFS服务器设置好一个共享目录/home/public后,其他的有权访问NFS服务器的NFS客户端就可以将这个目录挂载到自己文件系统的某个挂载点,这个挂载点可以自己定义,如上图客户端A与客户端B挂载的目录就不相同。并且挂载好后我们在本地能够看到服务端/home/public的所有数据。如果服务器端配置的客户端只读,那么客户端就只能够只读。如果配置读写,客户端就能够进行读写。挂载后,NFS客户端查看磁盘信息命令:#df –h。

既然NFS是通过网络来进行服务器端和客户端之间的数据传输,那么两者之间要传输数据就要有想对应的网络端口,NFS服务器到底使用哪个端口来进行数据传输呢?基本上NFS这个服务器的端口开在2049,但由于文件系统非常复杂。因此NFS还有其他的程序去启动额外的端口,这些额外的用来传输数据的端口是随机选择的,是小于1024的端口;既然是随机的那么客户端又是如何知道NFS服务器端到底使用的是哪个端口呢?这时就需要通过远程过程调用(Remote Procedure Call,RPC)协议来实现了!

RPC与NFS通讯原理:

​ 因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能对应的端口并不固定,客户端要知道NFS服务器端的相关端口才能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的服务,并且统一对外的端口是111,RPC会记录NFS端口的信息,如此我们就能够通过RPC实现服务端和客户端沟通端口信息。PRC最主要的功能就是指定每个NFS功能所对应的port number,并且通知客户端,记客户端可以连接到正常端口上去。

那么RPC又是如何知道每个NFS功能的端口呢?

首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口,RPC就会记录下这些端口,并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那么服务器端的RPC就会将之前记录的NFS端口信息告知客户端。如此客户端就会获取NFS服务器端的端口信息,就会以实际端口进行数据的传输了。

注意:在启动NFS SERVER之前,首先要启动RPC服务(即portmap服务,下同)否则NFS SERVER就无法向RPC服务区注册,另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会全部丢失。因此此时RPC服务管理的NFS程序也要重新启动以重新向RPC注册。特别注意:一般修改NFS配置文档后,是不需要重启NFS的,直接在命令执行systemctl reload nfs或exportfs –rv即可使修改的/etc/exports生效

NFS客户端和NFS服务器通讯过程:

在这里插入图片描述

图:NFS工作原理图

  1. 首先服务器端启动RPC服务,并开启111端口

  2. 服务器端启动NFS服务,并向RPC注册端口信息

  3. 客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口

  4. 服务端的RPC(portmap)服务反馈NFS端口信息给客户端。

  5. 客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

Linux下NFS服务器部署

NFS服务所需软件及主要配置文件:

安装NFS服务,需要安装两个软件,分别是:

  • RPC主程序:rpcbind

    NFS 其实可以被视为一个 RPC 服务,因为启动任何一个 RPC 服务之前,我们都需要做好 port 的对应 (mapping) 的工作才行,这个工作其实就是『 rpcbind 』这个服务所负责的!也就是说, 在启动任何一个 RPC 服务之前,我们都需要启动 rpcbind 才行! (在 CentOS 5.x 以前这个软件称为 portmap,在 CentOS 6.x 之后才称为 rpcbind 的!)。

  • NFS主程序:nfs-utils

    就是提供 rpc.nfsd 及 rpc.mountd 这两个 NFS daemons 与其他相关 documents 与说明文件、执行文件等的软件!这个就是 NFS 服务所需要的主要软件。

NFS的相关文件:

  • 主要配置文件:/etc/exports
    这是 NFS 的主要配置文件了。该文件是空白的,有的系统可能不存在这个文件,主要手动建立。NFS的配置一般只在这个文件中配置即可。
  • NFS 文件系统维护指令:/usr/sbin/exportfs
    这个是维护 NFS 分享资源的指令,可以利用这个指令重新分享 /etc/exports 变更的目录资源、将 NFS Server 分享的目录卸除或重新分享。
  • 分享资源的登录档:/var/lib/nfs/*tab
    在 NFS 服务器的登录文件都放置到 /var/lib/nfs/ 目录里面,在该目录下有两个比较重要的登录档, 一个是 etab ,主要记录了 NFS 所分享出来的目录的完整权限设定值;另一个 xtab 则记录曾经链接到此 NFS 服务器的相关客户端数据。
  • 客户端查询服务器分享资源的指令:/usr/sbin/showmount
    这是另一个重要的 NFS 指令。exportfs 是用在 NFS Server 端,而 showmount 则主要用在 Client 端。showmount 可以用来察看 NFS 分享出来的目录资源。

服务端安装NFS服务步骤:

第一步:安装NFS和rpc。

[root@localhost ~]# yum install -y  nfs-utils   
#安装nfs服务
[root@localhost ~]# yum install -y rpcbind
#安装rpc服务

第二步:启动服务和设置开启启动:

注意:先启动rpc服务,再启动nfs服务。

[root@localhost ~]# systemctl start rpcbind    #先启动rpc服务
[root@localhost ~]# systemctl enable rpcbind   #设置开机启动
[root@localhost ~]# systemctl start nfs-server nfs-secure-server      
#启动nfs服务和nfs安全传输服务
[root@localhost ~]# systemctl enable nfs-server nfs-secure-server
[root@localhost /]# firewall-cmd --permanent --add-service=nfs
success   #配置防火墙放行nfs服务
[root@localhost /]# firewall-cmd  --reload 
success

第三步:配置共享文件目录,编辑配置文件:

首先创建共享目录,然后在/etc/exports配置文件中编辑配置即可。

[root@localhost /]# mkdir /public
#创建public共享目录
[root@localhost /]# vi /etc/exports/public 192.168.245.0/24(ro)/protected 192.168.245.0/24(rw)
[root@localhost /]# systemctl reload nfs 
#重新加载NFS服务,使配置文件生效

配置文件说明:

格式: 共享目录的路径 允许访问的NFS客户端(共享权限参数)

如上,共享目录为/public , 允许访问的客户端为192.168.245.0/24网络用户,权限为只读。

请注意,NFS客户端地址与权限之间没有空格。

NFS输出保护需要用到kerberos加密(none,sys,krb5,krb5i,krb5p),格式sec=XXX

none:以匿名身份访问,如果要允许写操作,要映射到nfsnobody用户,同时布尔值开关要打开,setsebool nfsd_anon_write 1

sys:文件的访问是基于标准的文件访问,如果没有指定,默认就是sys, 信任任何发送过来用户名

krb5:客户端必须提供标识,客户端的表示也必须是krb5,基于域环境的认证

krb5i:在krb5的基础上做了加密的操作,对用户的密码做了加密,但是传输的数据没有加密

krb5p:所有的数据都加密

用于配置NFS服务程序配置文件的参数:

参数作用
ro只读
rw读写
root_squash当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
no_root_squash当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
all_squash无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
sync同时将数据写入到内存与硬盘中,保证不丢失数据
async优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据

NFS客户端挂载配置:

**第一步:**使用showmount命令查看nfs服务器共享信息。输出格式为“共享的目录名称 允许使用客户端地址”。

[root@localhost ~]# showmount -e 192.168.245.128      
Export list for 192.168.245.128:
/protected 192.168.245.0/24
/public    192.168.245.0/24

showmount命令的用法;

参数作用
-e显示NFS服务器的共享列表
-a显示本机挂载的文件资源的情况NFS资源的情况
-v显示版本号

**第二步,**在客户端创建目录,并挂载共享目录。

[root@localhost ~]# mkdir /mnt/public
[root@localhost ~]# mkdir /mnt/data
[root@localhost ~]# vim /etc/fstab 
#在该文件中挂载,使系统每次启动时都能自动挂载192.168.245.128:/public  /mnt/public       nfs    defaults 0 0192.168.245.128:/protected /mnt/data     nfs    defaults  0 1
[root@localhost ~]# mount -a   #是文件/etc/fstab生效

第三步:检查:

[root@mail ~]# df -Th
Filesystem                 Type      Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root      xfs        17G  3.1G   14G  18% /
devtmpfs                   devtmpfs  1.4G     0  1.4G   0% /dev
tmpfs                      tmpfs     1.4G  140K  1.4G   1% /dev/shm
tmpfs                      tmpfs     1.4G  9.1M  1.4G   1% /run
tmpfs                      tmpfs     1.4G     0  1.4G   0% /sys/fs/cgroup
/dev/sda1                  xfs      1014M  173M  842M  18% /boot
tmpfs                      tmpfs     280M   32K  280M   1% /run/user/0
/dev/sr0                   iso9660   3.6G  3.6G     0 100% /mnt/cdrom
192.168.245.128:/public    nfs4       17G  3.7G   14G  22% /mnt/public
192.168.245.128:/protected nfs4       17G  3.7G   14G  22% /mnt/data

在Window上挂载NFS

第一步:在控制面板–>添加程序和功能–>添加NFS组件。
在这里插入图片描述

第二步:在此电脑,映射驱动器中添加nfs地址,和要共享的文件夹。

在这里插入图片描述

第三步:如果权限有问题,打开注册表:regedit, 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default 下新建两个OWORD(64)位值,添加值AnonymousGid,值默认为0,AnonymousUid,值默认为0。

 

 

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

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

相关文章

2021年03月-程序员薪资分布,看看你拖后腿了吗?

程序员工资是不确定的&#xff0c;要根据程序员的历、能力、工作经验、是否刚毕业、工种&#xff0c;工资是不一样的&#xff0c;还与地域和公司有关&#xff0c;但是总的来说&#xff0c;程序员工资都是很高的&#xff0c;是很多人都羡慕的职位。 那么程序员的薪资到底多高呢…

Science:领导决策的计算和神经生物学基础

来源&#xff1a;思影科技摘要&#xff1a;最近&#xff0c;来自苏黎世大学的Micah G. Edelson等人在SCIENCE上发文&#xff0c;他们将基于知觉和价值决策的模型结合起来&#xff0c;以评估被试对每一个决策行为的个人效用&#xff0c;从而梳理出选择领导或服从的潜在动机。最近…

tar命令集合(详解)

tar 命令可以将许多文件一起保存至一个单独的磁带或磁盘归档&#xff0c;并能从归档中单独还原所需文件。 示例 以test文件为例 压缩命令 tar -cvf test.tar test test1解压命令 tar -xvf test.tar主操作模式: -A, --catenate, --concatenate 追加 tar 文件至归档 -c, --…

美国韩国科学家纷纷开发出电子机器人“皮肤”,据称具有比人类更好的触觉...

来源&#xff1a;机器人创新生态摘要&#xff1a;我们已经听说过柔性电子“皮肤”可以让机器人或假肢具有类似人类的触觉。然而&#xff0c;现在德克萨斯大学阿灵顿分校的科学家们声称他们开发的“皮肤”比具有比人类更好的触觉敏感。由Zeynep ?elik-Butler教授领导的团队创建…

MySQL流浪记(三)—— Linux安装MySQL数据库5.7.30(亲测有效3分钟即可)

下载 下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/5.7.html#downloads 解压 tar -xf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gztar命令集合&#xff08;详解&#xff09; 将安装包进行移动并重命名&#xff08;需要在root权限下进行&#xff09;。 m…

ANSI/UTF-8/UCS2(UTF-16),以及回车换行

最近遇到一个linux 平台上invisible character (0x1d)引起的数据装载失败问题&#xff0c;正好借此机会整理一下字符编码的相关知识。 回车/换行&#xff1a; 顾名思义&#xff0c;回车和换行是两个不同的控制字符: -回车(Carriage Return)即\r&#xff0c;ascii码13(0x0d)&am…

自动驾驶的大脑——芯片简介

来源&#xff1a;智车科技汽车电子发展初期以分布式ECU架构为主流&#xff0c;芯片与传感器一一对应&#xff0c;后来&#xff0c;中心化架构DCU、MDC逐步成为了发展趋势&#xff1b;随着汽车辅助驾驶功能渗透率越来越高&#xff0c;传统CPU算力不足过去&#xff0c;在自动驾驶…

MySQL流浪记(四)—— DDL和DML区别与介绍

DDL与DML的区别 DDL&#xff1a;数据定义语言&#xff0c;对于数据库、表、图、索引等进行操作。 具体操作有&#xff1a;CREATE&#xff08;创建&#xff09;、ALTER&#xff08;修改&#xff09;、DROP/TRUNCATE&#xff08;删除&#xff09; DML&#xff1a;数据操纵语言&am…

数据仓库面试题集锦(附答案和数仓知识体系)

【数据仓库系列文章 - 传送门】 一篇文章搞懂数据仓库&#xff1a;三种事实表&#xff08;设计原则&#xff0c;设计方法&#xff09;一篇文章搞懂数据仓库&#xff1a;三种事实表&#xff08;设计原则&#xff0c;设计方法、对比&#xff09;_不吃西红柿-CSDN博客_事实表三种…

pidgin-qq可以使用QQ2012协议了

前几个月前还用过pidgin-qq登录过QQ&#xff0c;当时用的还是2010协议。可不久就发现2010协议已经变得不可用了&#xff0c;之后也尝试过各种webqq协议的方案&#xff0c;什么gtkqq,pidgin-lwqq,可能是webqq协议功能不完善吧&#xff0c;用起来总觉得跟我想要的qq功能相差太远。…

2018全球科技中心报告

来源&#xff1a;CB Insights、数据局摘要&#xff1a;CB Insights 近日发布的《全球科技中心报告》&#xff08; Global Tech Hubs report&#xff09;在全球范围一共遴选了25座城市作为「全球科技中心」&#xff0c;其中&#xff0c;中国仅有北京和上海入选&#xff0c;而热门…

还在为520礼物发愁吗?教你用python撩女朋友

用python撩女朋友&#xff0c;你要的温暖都在生活的细节中。学会制造惊喜&#xff0c;一起牵手走向更加美好的生活。 其实&#xff0c;大多数人的爱情都是有事没事的瞎扯&#xff0c;可对于我们该怎样瞎扯来表达自己的心意却又都摸不着头脑。 所以&#xff0c;情侣之间要学会一…

键盘上的反引号怎么打

今天在学习数据库的时候突然要用到反引号&#xff0c;反引号&#xff1f;第一次听说反引号这个符号 几经周折&#xff0c;找到这个反引号&#xff0c;分享给大家。 在英文状态下&#xff0c;数字1的左边&#xff0c;Esc的下面&#xff0c;也就是中文的省略号。

(转)用 Asterisk 搭建自己的免费 VoIP 服务器

原文链接&#xff1a;http://www.yaoblog.info/?p5021 1. 这里以 Debian 为例子&#xff0c;安装 Asterisk apt-get update apt-get install asterisk 2. 预设置 Asterisk&#xff0c;修改 sip.conf 和 extensions.conf 文件&#xff0c;是为了创建两个可供测试的 SIP 账号 na…

解密美国五角大楼人工智能中心

选自 I thebulletin 编译 I 网易智能 参与 I Rosie2016年10月&#xff0c;新成立的国防创新委员会首次提出了一系列建议&#xff08;该委员会是美国国防部高级领导的顾问机构&#xff0c;成员包括来自私营部门、学术界和非营利组织的代表&#xff09;。其中一项建议是&#xff…

一篇文章搞定一个大数据组件:kudu知识点全集

目录 1、kudu的定位 2、kudu基本概念 3、存储架构 3.1 储存架构&#xff1a;Tablet 3.2 储存架构&#xff1a;RowSets 3.3 储存架构&#xff1a;DiskRowSets 4、kudu工作原理 4.1 Compaction 4.2 Tablet切分规则 4.3 kudu写过程&#xff1a;insert 4.4 kudu写过程&a…

区分Activity的四种加载模式-activity

转载&#xff1a;http://marshal.easymorse.com/archives/2950 在多Activity开发中&#xff0c;有可能是自己应用之间的Activity跳转&#xff0c;或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例&#xff0c;而不是产生大量重复的Activity。 这需要为…

Nature:AI为什么总是歧视重重?

来源&#xff1a;网络大数据摘要&#xff1a;当使用谷歌翻译将西班牙语的新闻翻译为英语时&#xff0c;涉及到女性的短语通常都会翻译为“他说”或“他写道”。当使用谷歌翻译将西班牙语的新闻翻译为英语时&#xff0c;涉及到女性的短语通常都会翻译为“他说”或“他写道”。常…

※【python自学】7个Python生态系统核心库,你值得拥有

无论你是想快速入手Python&#xff0c;还是想成为数据分析大神或者机器学习大佬&#xff0c;亦或者对Python代码进行优化&#xff0c;本文的python库都能为你提供一些帮助。 一 概述 Python生态系统的一些核心基础数据分析库&#xff1a; NumPy&#xff1a;支持大量的维度数…

Eclipse编写Java程序

Eclipse的Java开发工具(JDT),允许用户使用它的环境进行编辑、调试及运行Java程序。1. Java运行环境设置 指定JRE的版本。Eclipse设置默认的运行环境的JRE设置成当前配置&#xff0c;用户可以修改多个JRE版本的运行环境&#xff0c;并选择符合其需求的运行环境。[窗口 Window]…