网络文件共享服务之 NFS

发布于 2021-12-24  38700 次阅读


内容纲要

什么是nfs?

nfs(network file system ):网络文件系统

简述:是一项能够分享服务器端的存储空间并在客户端通过本地挂载方式使用的一项网络存储技术

具体:NFS是一种典型的C/S架构的服务,但它并不直接与客户端建立连接,而是通过使用RPC(远程过程调用)协议全权代理与客户端的连接,实际上nfs只负责提供了文件处理功能。NFS被使用与类unix服务器上。

NFS是属于NAS网络附加存储的一种服务

NAS网络附加存储 是存储方式的一种 它以数据为中心,将存储设备与服务器彻底分离,集中管理数据。是一个文件级的存储方式。

-----------------------------------------------------------------------------------------------------------------------------------

什么是PRC?

RPC和LPC是IPC inter-process communication 进程间通信的两种分类

LPC:本地过程调用

适用于本地进程间的通信的一种方式

在多任务操作系统中,LPC使本地同时运行的不同进程间能互相通信,它们之间通过共享内存空间实现任务同步和传递信息

PRC:远程过程调用

RPC协议位于OSI七层网络模型的协议层

是一种通过网络从远程主机进程上请求过程(程序),就如同在使用本地调用而不需要了解底层网络技术的协议。

RPC使用C/S模型,它实现了服务的解耦,在当年服务器架构向分布式转化的过程中实现了服务间的解耦,从而以更加简便的方式被进程调用。

rpc提供了一种忽视底层设施(包括硬件,操作系统,低层数据协议)而且更方便的远程调用方式 (进程不需要直接处理Socket对象或Http通讯)。

一般来说,网络中跨主机间的进程通信需要通过系统的套接字函数并通过 一套完整的网络通信协议建立连接

但如果使用了 RPC,比如说在NFS服务中,那么服务器和客户端之间只需要相互调用对方提供的 RPC 接口函数即可实现相互通信,函数的参数和返回值就是要传递的信息,而 RPC 将全权负责网络通信。

这样一来,网络程序的设计就变得简单许多,跟建立本地调用一样的使用网络调用,通信效率也会有所提高。

-----------------------------------------------------------------------------------------------------------------------------------

为什么使用nfs?

内核直接支持,部署简单、运行稳定,协议简单、传输效率高

部署简单,挂载方便

可以使用本地文件处理命令进程对NFS文件的编辑

nfs的缺点

安全:使用明文的方式进行数据传输,且无数据校验功能,安全性差

解决方式:通过 Kerberos 对 NFS 进行认证及加密

管理:无用户注册功能 管理复杂

运维:可靠性低,存在单点失败风险 并发性低

其他的网络共享服务

samba

samba则是通过对SMB协议的逆向工程解析并构建出来的通用于多平台(Linux/Windows/MacOS)的一个服务,可以实现多平台通用的网络文件存储服务。

SMB (Server Message Block)服务器消息块协议是微软开发的一种用于自身microsoft网络的一种c/s架构的通信协议

samba的主要功能是实现了linux和windows直接共享文件的功能。

另外 SMB 提供端到端加密、安全性高,配置选项丰富,支持 ACL 并支持多种用户认证模式。

但是它的传输效率稍低,速度不太稳定。

软件包

nfs-utils

进程及端口

nfs服务启动后的固定端口:

111(tcp/udp): rpcbind RPC服务
2049(tcp/udp): nfsd nfs的守护进程,负责接收到用户的调用请求后与内核发出请求并得到调用结果响应给用户

其他进程:随机端口


rpc.nfsd 最主要的NFS进程,管理客户端是否可登录
rpc.mountd 挂载和卸载NFS文件系统,包括权限管理
rpc.lockd 非必要,管理文件锁,避免同时写出错
rpc.statd 非必要,检查文件一致性,可修复文件

ss -ntlp

启动

简单来说:通过RPC获取NFS端口,使用端口建立连接

NFS启动后会随机的使用一些端口并向RPC去注册这些端口

RPC就会记录下这些端口并开启111端口,等待客户端RPC的请求

收到客户端的请求后,那么服务器端的RPC就会将之前记录的NFS端口信息告知客户端

如此客户端就会获取NFS服务器端的端口信息,直接与NFS daemon联机存取数据

配置文件/etc/exports

用来定义被共享的本地目录及相关权限信息

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


允许访问的NFS客户端 :
IP+掩码(两种)
使用通配符的主机名 *.wang.com


共享权限参数:
身份映射
root_squash 默认 将root访问,映射为NFS服务器的匿名用户nfsnobody
no_root_squash 将root访问,映射为NFS服务器的root用户
all_squash 所有客户端访问账户都映射为NFS服务器的匿名用户
UID GID
no_all_squash 保留共享文件的UID GID
anonuid anongid 将匿名用户映射为指定UID GID 配合all_squash使用为佳
权限
ro readonly 只读
rw readwrite 读写
存储
sync 默认 同步 同时将数据写入到缓存与磁盘中,保证不丢失数据
async 异步 先将数据写入缓存 一段时间后写入磁盘 速度快 不安全

相关工具

exportfs NFS的文件系统维护指令

维护 NFS 分享资源的指令,可以利用这个指令重新分享 /etc/exports 变更的目录资源、将 NFS Server 分享的目录卸除或重新分享。
-v #查看本机所有NFS共享
-r #重读配置文件,并共享目录
-a #输出本机所有共享
-au #停止本机所有共享


showmount 客户端查询服务器分享资源
-e 查看指定主机的nfs信息

挂载方式

1.临时挂载mount

mount IP:/DIR /LOCAL_DIR

2.开机自动挂载

vim /etc/fstab

添加 IP/DIR /LOCAL_DIR nfs defaults,_netdev 0 0

3.通过autofs自动挂载

AUTOFS

一个自动挂载工具 按需要挂载外围设备,NFS共享等,并在空闲5分钟后后自动卸载

软件包:autofs

配置文件:/etc/auto.master

vim /etc/auto.master



相对路径法:将mount point 路径分成 dirname 和 basename 分别配置,可能会影响现有的目录结构

主配置文件 /etc/auto.master 中定义的格式:

父目录 子配置文件路径

子配置文件格式

格式:挂载目录名 -fstype[挂载文件类型及权限(用,隔开)] 要挂载的设备名称

-fstype:

nfs nfs格式

iso9660 光盘 cd 格式

如何进入挂载目录?

在挂载点父目录中使用cd 挂载目录名

绝对路径法:直接匹配全部的绝对路径名称,都写入到指定的配置文件里,不会影响本地目录结构

主配置文件 /etc/auto.master

格式:/- 子配置文件路径

子配置文件 格式

挂载点完整的绝对路径 -fstype挂载选项 选项设备

10.0.0.135:

10.0.0.134:





最后更新于 2021-12-24