文档章节

NFS

是江山
 是江山
发布于 2017/08/24 10:36
字数 1542
阅读 10
收藏 0

##一、NFS服务简介

NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。

NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。

NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。

##二、挂载结构图 输入图片说明 ##三、NFS挂载原理介绍 如上图,当我们在nfs服务器设置好一个共享目录/data后,其他的有权访问NFS服务器的NFS客户端就可以将这个目录挂载到本地。并且能够看到服务端/data的所有数据。因为挂载在本地的/data目录,其实就是服务器端的/data目录。如果服务器端配置的客户端只读,那么客户端就只能够只读。如果配置读写,客户端就能够进行读写。挂载后,NFS客户端查看磁盘信息命令:#df –h NFS是通过网络来进行服务端和客户端之间的数据传输。两者之间要传输数据就要有想对应的网络端口来进行传输。NFS服务器到底使用什么网络端口来传输数据的,NFS服务器端其实是随机选择端口来进行数据传输。那NFS客户端又是如何知道NFS服务器端到底使用的是哪个端口呢?其实NFS服务器时通过远程过程调用(remote procedure call 简称RPC)协议/服务来实现的。也就是说RPC服务会统一管理NFS的端口,客户端和服务端通过RPC来先沟通NFS使用了哪些端口,之后再利用这些端口(小于1024)来进行数据的传输。 PS:哦,原来是RPC管理服务端的NFS端口分配,客户端要传数据,那客户端的RPC会先跟服务端的RPC去要服务器的端口,要到端口后再建立连接,然后传输数据。 ##四、客户端NFS和服务端NFS通讯过程

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

输入图片说明

NFS的原理结构其实还是挺简单啊哦,NFS就是网络共享目录,就是共享文件.服务端共享,客户端挂载使用。挂载流程原理,就是上面提到的5个流程。并且为什么是这个流程也讲了。因为NFS要向RPC去注册端口信息。因为NFS的端口是随机获取的。

##五丶安装 ###服务端 ####安装NFS工具:

[root@localhost ~]# yum install -y nfs-utils rpcbind

####编辑配置文件

vim /etc/exports
#加入以下内容
/home/nfstestdir   192.168.205.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
  • rw 允许读写
  • ro 只允许读
  • sync 同步模式,内存数据实时写入磁盘,影响性能
  • async 非同步模式,数据有丢失风险
  • no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大。(相当于该共享目录已经是客户端的了)
  • root_squash 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户
  • all_squash 客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户
  • anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid

####创建共享目录

mkdir  /home/nfstestdir
chmod 777 /home/nfstestdir
/var/lib/nfs/rmtab记录共享目录被挂载情况
/var/lib/nfs/etab记录设置了那些目录共享以及配置参数

####启动服务

#先启动rpcbind,再启动nfs
# rpcinfo  -p可以查看rpcbind启动信息
systemctl  start rpcbind
systemctl  start nfs

####设置服务开启不启动

systemctl  enable rpcbind
systemctl  enable nfs

###客户端 ####安装nfs-utils

yum install  -y nfs-utils

####查看服务端是否共享成功

showmount -e 192.168.205.137

####无法连接到服务端机器

clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

解决办法:

检查服务端NFS服务是否开启(监听111端口) 如果确认服务端NFS服务已经开启,那么检查防火墙状态,关闭服务端和客户端firewalld和SELinux防火墙 ####挂载

mount -t nfs 192.168.205.137:/home/nfstestdir /mnt

###测试

在客户机挂载目录创建文件:

[root@localhost ~]# cd /mnt/
[root@localhost ~]# ll
总用量 0
-rw-r--r-- 1 mysql mysql 0 8月  23 19:50 test123

查看服务端共享目录:

[root@localhost ~]# ll /home/nfstestdir/
总用量 0
-rw-r--r--. 1 mysql mysql 0 8月  23 19:50 test123

© 著作权归作者所有

共有 人打赏支持
是江山
粉丝 4
博文 44
码字总数 24060
作品 0
苏州
运维

暂无文章

mysql 数据类型及占用字节数

数字类型 TINYINT                           1 字节 SMALLINT                          2 个字节 MEDIUMINT                         3 个字节...

会游泳的鱼_
今天
3
0
高性能mysql:创建高性能的索引

性能优化简介 MySQL性能定义为完成某件任务所需要的时间量度,换句话说,性能即响应时间,这是一个非常重要的原则。我们通过任务和时间而不是资源来测量性能。数据库服务器的目的是执行SQL语...

背后的辛酸
今天
6
0
HTTP get、post 中请求json与map传参格式

import java.io.IOException;import java.net.URI;import java.net.URISyntaxException;import java.nio.charset.Charset;import java.util.ArrayList;import java.util.List;im......

寒风中的独狼
今天
3
0
IDEA中tomcat启动慢 耗时10分钟

用idea中的tomcat以debug模式启动,会非常的慢,而正常启动没啥问题;原因是debug模式中View Breakpoints断点代码,断点的是jar包,而现在启动由于jar包发生变化,导致启动时一直处于等待中。...

GoodMarver
今天
5
0
Linux学习-10月18(awk)

9.6/9.7 awk 一、awk简介   1. awk是一种编程语言,用于对文本和数据进行处理的   2. 具有强大的文本格式化能力   3. 利用命令awk,可以将一些文本整理成为我们想要的样子   4. 命令awk...

wxy丶
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部