阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux NFS服务的初步了解

27次阅读
没有评论

共计 2068 个字符,预计需要花费 6 分钟才能阅读完成。

导读 RPC(远程过程调用,定义在 RFC1057),见名知意,就是客户端调用远程服务器上函数的一种方法。RPC 的目标就是要以下 2~8 这些步骤都封装起来,让用户对这些细节透明。

Linux NFS 服务的初步了解

RPC 简介

1)服务消费方(client)调用以本地调用方式调用服务;

2)client stub 接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体;

3)client stub 找到服务地址,并将消息发送到服务端;

4)server stub 收到消息后进行解码;

5)server stub 根据解码结果调用本地的服务;

6)本地服务执行并将结果返回给 server stub;

7)server stub 将返回结果打包成消息并发送至消费方;

8)client stub 接收到消息,并进行解码;

9)服务消费方得到最终结果。

NFS 简介

NFS(Network File System)即网络文件系统,是 FreeBSD 支持的文件系统中的一种,它允许网络中的计算机之间通过 TCP/IP 网络共享资源。在 NFS 的应用中,本地 NFS 的客户端应用可以透明地读写位于远端 NFS 服务器上的文件,就像访问本地文件一样。
目前 NFS 主要有两个版本(NFSv2,NFSv3)两个版本,而 NFSv2 和 NFSv3 除了 3 版本支持更多的新特性以外,最主要的区别应该就是 NFSv2 是使用 UDP 协议进行传输的,所以 NFSv2 的连接在复杂网络环境下可能没有那么可靠,而 NFSv3 同时支持 UDP 和 TCP 协议。

刚才看了一下,Centos7 已经支持 NFSv4 协议了,这里就不贴 NFSv4 了,有时间了再去看 v4 吧。

当 client 端要挂载 NFS 共享卷的时候,会发送 RPC 请求给服务端,而 NFS 服务端会在用户验证后将一个随机的 cookie 传送至客户端,以便客户端使用这个 cookie 来认证那些要访问的共享卷。

NFS 的验证支持内置的 IP/ 主机权限分配,同时也被 tcp wrappers 所限制。

Redhat 上的 NFS 服务

Redhat 内核中默认就开启了 NFS 支持,并且通过 NFS 的 Daemon 来控制 NFS 服务端的启动,而负责将网络套接字和 RPC 调用绑定起来,还需要一个 rpcbind 服务(在 redhat5 中名为 portmap),如果你在系统中找不到 nfs 服务,是因为没有安装 nfs-utils 这个包,这个包提供了一些工具和服务脚本等。

整个 NFS 服务大概包含以下几个(抄自红帽官方文档,但是有点老了好像):

  • nfs — 启动响应的 RPC 进程来响应 NFS
  • nfslock — 这是一个可选的服务,用来响应客户端对文件加锁的请求。
  • rpcbind(portmap) — 这个是 rpc 服务的守护进程,用来建立连接并且响应 rpc 请求。

NFS 服务提供了这几个 RPC 调用(函数):

  • rpc.mountd — 这个函数用来响应客户端的 mount 请求并且验证所请求的文件系统是否有权可用,这个进程由 nfs 服务来启动。
  • rpc.nfsd — nfs 服务的主进程(函数)。
  • rpc.lockd — 上面 nfslock 这个服务的主要调用(函数),主要用来响应客户的文件加锁请求。
  • rpc.statd — 这个调用(函数)主要是用来当 nfs server 重启或不正常关闭时通知 client 的,由 nfslock 服务启用。
  • rpc.rquotad — nfs 服务用于支持配额的调用(函数)。
配置 NFS 服务

NFS 的配置文件在 /etc/exports
默认是一个空文件,只需要按照如下格式配置即可,一行一个共享卷

host: 限定主机(域名)
1. 单个主机或 IP
2. 通配符 *(匹配任意字符)或?(匹配任意单个字符),用在域名或主机名中
3.IP/MASK, 例如 192.168.110.0/24

options: 挂载选项,用于限定前面主机的挂载权限。
常用选项:

  • ro,rw: 只读或可读写
  • sync: 同步,当 client 的写请求完成后,立即将内存中的数据写入到磁盘,这样做是安全的。
  • async:异步,当 client 的写请求完成后,server 不是立即将数据写入到磁盘,而是在某个时机(空闲或…. 鬼知道)写入到磁盘,这就造成了数据丢失的可能性。
  • wdelay(write delay):写入延迟,这是一个优化选项,允许服务器延迟将数据写入磁盘,这样如果第二次 client 的写请求到来,将两次数据使用一次 write 系统调用写入到磁盘。
  • nowdelay:与上相反,仅在 sync 模式下可使用。
  • root_squash:“压扁”root, 因为 client 将文件写入到 server 时,是使用 client 写入用户的 uid 直接映射为 server 同 uid 的用户,这样 root 用户存放到 nfs share volume 上的文件,在 server 端属主和属组还是 root,有一定的安全隐患,所以可用此选项将 root 压扁为 nfsnobody 用户。
  • all_squash:压扁所有用户,可使用 anonuid=,anongid= 来指定压扁为哪个用户。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计2068字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中