网络服务--NFS服务

1.概述

NFS全称network file system 网络文件系统,是通过网络存储和组织文件的一种方法和机制;一般用来存储共享视频、图片等静态的数据

2.NFS和RPC的关系

NFS服务器是使用随机端口来进行数据传输,通过远程过程调用RPC协议,也就是说RPC服务会统一管理NFS服务地端口。
启动NFS之前,要先开启RPC服务(centos6之前叫portmap),否则NFS就无法向RPC进行注册,一般修改NFS服务后,可以直接使用reload重新加载

3.NFS Server和NFS Client的通讯过程

(1)首先服务器端开启RPC服务,并开启111端口
(2)启动NFS服务,并向RPC服务进行端口的注册
(3)客户端启动RPC服务,向服务端的RPC服务请求服务器的NFS端口
(4)服务端的RPC服务反馈NFS服务的端口信息给客户端
(5)客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据传输

4.NFS协议和软件

(1)协议:
RPC(remote procedure call protocol)--远程过程调用协议
(2)软件:
nfs-utils(包括NFS命令和监控程序)
(3)rpcbind:支持安全NFS--RPC服务的连接

5.NFS的守护进程

nfs:基本的NFS守护进程,主要功能是管理客户端能否登录服务器
rpcbind:主要功能是端口映射

6.NFS服务器的配置

/etc/exports文件内容格式:

共享目录 客户端(访问权限,用户映射,其他)

a.共享目录:服务器共享给客户端使用的目录
b.客户端常用指定方式:

指定ip地址:10.0.0.101
指定子网内所有主机:10.0.0.0
指定域名的主机:www.ccku.cn
指定域名中的所有主机:*.ccku.cn
所有主机:*

c.访问权限

只读:ro
读写:rw

用户映射选项:

root_squash:将root用户访问映射为匿名(nfsnobody)用户uid和gid,默认生效
no_root_squash:保留管理员的权限,以服务器管理员的权限管理
all_squash:将远程访问的用户及所属组都映射为指定uid、gid的匿名用户
anonuid:匿名用户的uid;anongid:匿名用户的gid
#例如:/data 10.0.0.0(rw,all_squash,anonuid=1024,anongid=1024)

其他选项:

sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性
async:将数据先保存在内存缓冲区中,必要时才写入磁盘
7.实验部署

(1)将NFS服务器的/data共享给10.0.0.0网段,rw权限

# vim /etc/exports 
/data 10.0.0.0/24(rw)

#重启rpcbind和nfs服务

service rpcbind restart
service nfs restart


#客户端查看共享状态

(2)客户端挂载nfs服务器共享目录
#mount NFS服务器IP:/共享目录 /本地挂载点

(3)nfs共享权限和访问控制
a.客户端使用root用户创建文件,所有者和所属组是nfsnobody

b.客户端使用普通用户创建文件,所有者和所属组是nobody或普通用户
如果明确设定了普通用户的映射用户身份,那么客户端用户的身份转换为映射用户
如果nfs server上面有同名用户,那么此时客户端登录账户的身份转换为nfs server上面的同名用户
(4)卸载和自动挂载
卸载:客户端卸载:umount /挂载点;
停止服务器端的共享:

exportfs -au

自动挂载:

vim /etc/fstab
#格式:	nfs服务器ip:/共享目录 /挂载点 nfs defaults 0 0

8.NFS相关命令

exportfs:

-a:全部挂载或卸载/etc/exports中的内容
-r:重新读取/etc/exports中的信息,并同步更新/etc/exports、/var/lib/nfs/xtab
-u:卸载单一目录(和-a一起使用:卸载所有/etc/exports文件中的目录)
-v:显示详细的信息

例子:
exportfs -au:卸载所有共享的目录
exportfs -ar:重新共享所有目录并输出详细信息

rpcinfo -p :可以查看出rpc开启的端口所提供的程序有哪些

作者:ccku
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题或建议,请多多赐教,非常感谢。
原文地址:https://www.cnblogs.com/ccku/p/13509500.html