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开启的端口所提供的程序有哪些