网络运营

NFS相关概念简介

RPC
NFS严重依赖RPC:远程过程调用

1. 调用一个函数,比如read(),write(),open(),close()

2. 该文件的数据流不是来自本地,而是另一台主机

3. 客户端启用一个stub,调用接口。基于该接口请求RPC,请求发送到远端服务器的端口

4. 请求到达后,服务器端启动能够给客户端返回结果的相应的服务,并启动相应的函数

5. RPC是一个框架,类似xinetd。它自身不提供任何过程,RPC帮忙监听某个套接字并将请求接收进来,然后启动相应服务。而服务执行后返回状态返回值,返回到RPC,然后RPC返回给客户端。

 

RPC机制是同步阻塞的:

1. 当挂载到服务器上时,比如发起一个copy命令,将服务器的数据通过网络写入本地

2. 在写入本地完成之前,该过程阻塞

 

Stub –> rpc server
基于NFS协议。

该服务器的本地文件系统为ext4,然后客户端通过网络访问该文件系统。

某个程序,请求RPC帮忙监听在某个套接字,这就表现为NFS服务器,而系统调用都是本地进行的。

 

客户端的内核有nfs模块,mount命令能基于该内核模块向对方服务器发起nfs请求,将对方共享的目录挂载到本地。客户端用户进程就能在该目录创建,修改文件。

但并不是在本地保存,调用的是NFS文件系统,向服务器发起远程过程调用,封装后由远程的主机进行读写。

 

NFS进程
命令:rpcinfo –p  探测rpc监听的地址端口等信息

RPC:portmapper实现,它自己必须监听在某个端口,而且使用随机端口,通常为111/tcp,111/udp。该端口是首次请求的端口,而2049是数据传输端口。

 

各基于rpc提供服务的进程,在启动时需要向rpc注册监听在某个端口。Rpc会从各未使用的端口中,选择给此进程使用【可能挑选到80端口】,即半随机。

 

NFS本身仅提供文件系统,不提供认证用户身份和映射客户ID到本地ID。故依赖nfs-utils,而NFS是内核的模块

 

安装配置
服务安装nfs-utils

三个关键进程:

1. nfsd:文件读写

2. mountd:挂载守护进程,客户端认证的进程

3. ldmapd:id映射进程

 

 

导出文件系统

/etc/exports

格式:

文件系统 客户端1(文件系统导出属性)

文件系统 客户端2(文件系统导出属性)

命令:exportfs

-a:导出所有文件系统

-ra:重新导出所有文件系统

-ua:取消导入所有文件系统

-v:显示详细信息

 

客户端命令:showmount

选项:

1.-e:探测指定某主机导出的NFS文件系统

2.-d:在服务器端执行,显示哪个导出的文件系统已经被至少一个客户挂载使用

3.-a:在服务器端执行,显示所有的挂载会话

 

文件系统挂载属性:

1. 客户端:

a) IP:172.16.100.8

b) Hostname:*.jaywin.com

c) Network:

2. Rw

3. Async

4. Sync:同步性能很差

5. No_root_squash: 不压缩管理员权限,相当不安全

6. Anonuid,anongid:指定匿名用户映射的UID和GID

7. Nohide:是否可以交叉使用nfs,如/nfshare/a挂载nfs,然后将/nfshare挂载到其他用户。此时其他用户能看到服务器端的/nfshare/a

 

可设置为开机自动挂载:

172.16.100.7 /nfsshared  /mnt/nfs   nfs  defaults,_netdev  0  0

 

Be the First to comment.

Leave a Comment

电子邮件地址不会被公开。 必填项已用*标注