0基础linux运维教程 共享存储之nfs介绍

原创
10/14 16:12
阅读数 12

1)NFS是什么

```bash

NFS全称Network File System,即网络文件系统,NFS同时也是一种网络协议,主要功能是通过网络让不同的主机系统之间可以共享文件或目录:在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

NFS最早由sun公司开发,是类unix系统间实现磁盘共享的一种方法。目前已经有5个版本,NFSv1是未公布出来的版本,v2和v3版本目前来说基本已经淘汰,v4版本是目前使用最多的版本,nfsv4.1是目前最新的版本。

V2以前只提供了对UDP协议的支持,主要用于局域网(LAN),丢包重传的概率很小。但是随着发展,NFS已经不只使用在局域网中,更广泛地使用在广域网(WAN)中,于是从V3开始增加了对TCP协议的支持。

缺点:

1:nfs属于本地文件系统,在高并发场景和大存储量下,需要使用分布式存储mfs,FastDFS, tfs(taobao)等。

2:客户端的数据都是通过明文传送。客户端没有用户认证机制,安全性能一般,所以建议一般在局域网内使用。

3:容易发生单点故障,即server服务器宕机所有的客户端都不能访问。

使用场景:web集群中NFS服务器主要用于存储用户上传的信息,方便集群中机器获取用户数据。如图片 附件 头像 视频 音频。

```

2)为何要用NFS

```bash

NFS网络文件系统一般被用来存储共享视频,图片,附件等静态资源(一般把网站用户上传的文件都放到NFS共享里, 例如BBS  产品的图片,附件,注意网站BBS程序不要放NFS共享里),NFS是当前互联网系统架构中最常用的数据存储服务之一,特别是对中小型企业来讲是非常合适的一个分布式文件系统,大公司或门户除了使用NFS外,还可能会使用MFS、GFS、FASTDFS、TFS、ceph等分布式文件系统。

```

3)NFS与RPC

NFS依赖RPC才能工作,可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输,

```bash

因为NFS是基于网络的应用,属于套接字程序,所以NFS服务端必须绑定端口,NFS服务端常用的端口为2049;

但是文件系统十分复杂,NFS有很多功能,每个不同的功能都需要不同的程序来完成,而每个程序都需要启动端口传输数据,这些端口都是随机产生并且小于1024的;

那么问题来了,既然是随机产生的端口,客户端该如何得知呢?

便引入了RPC服务

```

RPC(remote procedure call):远程过程调用。RPC最主要的功能就是指定每个NFS功能所对应的端口,并返回给客户端,使客户端可以连接到正确的端口上。

工作流程如下:

- 1、服务端:RPC要先于NFS启动,RPC对外的端口是111,随后NFS启动,NFS会像操作系统申请一些随机端口分配给各个功能,并向RPC去注册这些端口,RPC便将这些端口和所对应的功能记录下来;

- 2、客户端:当NFS客户端需要连接到服务器上时,先启动客户端的RPC服务,客户端的RPC向服务端的RPC 111端口索要功能对应的端口号;索要到端口号后,便连接到NFS服务对应功能的端口,随后传输数据。

- 3、注意:即使客户端已经获取了端口号,客户端仍会借助rpc做为中间人进行通信。也就是说,无论何时,客户端和rpc所管理的服务的通信都必须通过rpc来完成。之所以如此,是因为只有rpc才能封装和解封装数据

![image-20210420094046860](./img/nfs.png)

![image-20210420094046860](./img/nfs1.png)

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部