关于RPC
RPC是一种编程技术或协议。简化分布式应用程序的开发。Client -->RPC Client -->RPC Server -->Server
RPC在linux上实现的程序是portmap (当然也可以用httpd的xml实现) 111/tcp 111/udp
数据报文一般有二进制形式和文本形式(XML RPC)
XML RPC太复杂,后来出现了SOAP(简单对象访问协议,轻量级的xml-rpc)
# rpcinfo -p localhost 查看本机rpc监听的端口号
NFS认证和权限:
NFS的认证是基于IP地址,不会验证用户名。
映射UID:假如客户端UID=1002的用户名是tom,服务器端UID=1002的用户名是jerry,那么客户端创建的文件在服务器端上显示的属主是tom。如果服务器上没有UID=1002的用户,那么在服务器上查看客户端新建的文件的属主是1002。但是客户端的root用户,默认压缩成anonymous用户。
NFS程序:
服务器端: nfs-utils
NFS启动的三个主要进程: nfsd(2049/tcp 2049/udp)、rquotad(端口不定) 和 mountd(端口不定) 其他进程有statd和lockd
注意 : mountd的端口会变,注意避免占用80端口
连接过程: client-->RPC-Server(portmap 111/tcp 111/udp) --把rpc.mountd端口告诉client ,client-->rpc.mountd-->rpc.mountd验证通过后给client访问文件的句柄或令牌, client-->nfsd(2049端口),通讯开始
为了避免rpc.mountd随机监听到80等端口,可以固定端口号
# vi /etc/sysconfig/nfs
MOUNTD_PORT=端口号
RQUOTAD_PORT=端口号
LOCKD_TCPPORT=端口号
LOCKD_UDPPORT=端口号
nfslock服务提供分布式文件锁。
配置文件 /etc/exports
每一行包行一个共享出去的文件系统 和 可以访问的ip地址。
/PATH/TO/DIRorPARTITION Client_List 每一个客户端用空格隔开,每个客户端后面用圆括号指定访问特性,比如访问权限(例如: /shared 10.0.0.3(rw,async) 10.0.0.5(rw,sync)。
客户端格式类型: 1-FQDN 2-IP 3-网络(例如10.0.0.0/8) 4-网络组(如NIS) 5-通配符(例如:*.example.com)
命令:
showmount -a NFS_SERVER # 列出所有已经被挂载的目录和客户端对应列表 eg: showmount -a localhost
-e NFS_SEVER #查看NFS服务器导出的文件系统 eg: showmount -e 192.168.56.40
-d NFS_SERVER # 查看服务器端已经被客户端挂载的目录(和-a有区别,-a会显示客户端列表,-d不显示)
客户端挂载:
mount -t nfs NFS_SEVER:/PATH/TO/EXPORT MOUNTPOINT
eg: mount -t nfs 192.168.1.43:/nfs /mnt
服务器端免重启让配置文件生效:
exportfs -a # 需要跟-r 或 -u同时使用 ,重新挂载或取消挂载 所有文件系统
-r #重新导出文件系统
-u # 取消挂载所有文件系统
-v # 显示详细过程 eg: exportfs -rav
文件系统导出属性:
ro / rw
sync / async
root_squash / no_root_squash # 是否将root用户压缩成nobody
all_squash
anonuid / anongid # 指定映射为服务器端本地的某UID/GID (配合all_squash)
默认选项:sync,ro,root_squash,no_delay