函数调用(过程调用)
函数向内核发起调用,并传递一些参数,内核在内核空间中执行函数,并将结果保存在磁盘上。
LDC:
local procedure call 本地过程调用
RPC:
remote procedure call 远程过程调用(框架)
RPC格式:
文本(XMLRPC)SOAP(Simple Object Access Protocol)
二进制
RPC服务器端
RPC客户端:
stub 存根调用
客户端程序 --> RPC客户端 --> RPC服务器端(完成相应) --> RPC客户端 --> 客户端程序
RPC实现了一个进程间通信的框架。
portmap(RPC实现):
TCP 111端口 UDP 111端口
NFS (Network File System) 网络文件系统,也是协议。基于IP认证。
nfs服务启动要以来portmap服务。nfs服务启动后,会向portmap注册端口启动进程。
工作过程:
nfsv3:
Client --> portmap(Server) --> Client(rpc.mountd监听端口号)
Client --> mountd(Server) -->Client(initial file handle) --> nfsd
服务器端:
nfs-utils
服务进程:
nfsd 主服务进程,负责文件传输。监听在TCP 2049端口,此端口固定不变。
mountd 客户端挂载管理进程,端口半随机。
rquotad 配额服务进程,端口半随机。
nlockmgr 文件锁定进程,端口半随机。
安装:
#vim nfs-utils
配置文件:
/etc/exprots 导出清单文件
每一行表示一个导出。#表示注释。多个客户端用空白字符分割。
格式如下:
DIR CLIENT1(PRIV1,PRIV2,...) CILENT2() ...
CLIENT:
单个主机:IP或FQDN
网络组:
通配符:*和?,例如*.test.com
IP网段:IP/MASK,例如 172.16.0.0/16或172.16.0.0 255.255.0.0
PRIV(导出属性)
各个属性之间用逗号分隔。
ro 只读
rw 读写
sync 同步,适用通信频繁且实时性较高的情况
async 异步,适用于零碎文件操作的情况
root_squash 将root用户映射为来宾账号。默认不写启用此权限。
no_root_squash 不将root映射为来宾账号。
all_squash 全部映射为来宾账号
anonuid 指定来宾账号的uid
anongid 指定来宾账号的gid
no_acl 关闭acl,某些指定的内核可能不支持ACL
例如:
/sqld/mdata 192.168.100.3(ro,rsync)
/etc/sysconfig/nfs 指定进程端口
MOUNTD_PORT=PORT mountd进程
RQUOTAD_PROT=PORT quotad进程
LOCKD_TCPPORT=PORT lockdtcp进程
LOCKD_UDPPORT=PORT lockdudp进程
开机挂载:
#vim /etc/fstab
IP:/DIR MOUNTPOINT TYPE PRIV 0 0
#rpcinfo -p localhost 查看本机上所有RPC监听的端口。
#showmount [OPTION] NFS_SERVER 显示NFS服务器挂载相关
[OPTION]
-a --all 显示服务器所有挂载的文件系统以及客户端对应列表。
-e --exports 显示服务器导出的文件系统。
-d --directories 显示服务器中导出的文件系统中被客户端挂载了的文件系统列表。没有被挂载的文件系统不显示。
例如:
#showmount -e 172.16.100.1
#mount -t nfs NFS_SERVER:/DIR MOUNTPOINT
挂载选项:_rnetdev 若无法连接则跳过
#exprotfs [OPTION] 不重启服务更新导出
[OPTION]
-a 跟-r或-u同时使用。导出或取消导出所有的文件系统。
-r 重新导出
-u 取消导出
-v 显示详细信息