1.NFS:是属于RPC框架,简单来讲就是本地文件系统的API通过内核转换成可被远程调用的API接口,然后通过VFS进行管理
2.VFS:不同的文件系统有不同的API接口,VFS主要是把不同的文件系统的API接口虚拟成统一的一个对外API接口
3.在规模较大的网络共享存储时必须要有认证机制,可以调用nis或ldap 模块,规模较小时可以设置把远程用户都映射nfs服务器上的一个统一用户
4.nfsd端口:2049/TCP
5.辅助类服务:rpc,portmapper
rpc.mount:认证,通过检查来访问的IP,如果通过检查则授权
由于rpc.mount是远程调用,所以端口是半随机的,所以就有另一个服务rpc.server一直监听在111端口,等接受到请求后就会寻找到rpc.mount的正在用的端口号进行认证
rpc.lockd:加锁,如果NFS中有文件在写入,则不能读取此文件
rpc.statd:状态,可以保存当前状态,防止网络异常断开后可以继续从断开前的状态开始数据传输
6.安装包 nfs-util
7.配置文件: /etc/exports 、/etc/exports.d/*
配置语法:
/PATH/TO/SOME_DIR clients1(export_options, …) clients2(export_options, …)
语法中clients表示方法:
single host:ipv4, ipv6, FQDN;
network:address/netmask, 支持长短格式的掩码;
wildcards:主机名通配,例如:.magedu.com;
netgroups:NIS域内的主机组;@group_name;
anonymous:使用通配所有主机;
General Options:
ro:只读
rw:读写;
sync:同步;
async:异步;
secure:客户端端口小于1024,否则就要使用insecure选项;
User ID Mapping:
root_squash:压缩root用户,一般指将其映射为nfsnobody;
no_root_squash:不压缩root用户;
all_squash:压缩所有用户;
anonuid and anongid:将压缩的用户映射为此处指定的用户;
注意:服务端共享文件的属主属组ID号与客户端所用的用户的ID号一致(用户名可以不同),才能有写权限
root用户使用nfs时默认会被压缩权限,映射为来宾账号(nfsnobody),只有很有限的权限
可以通过配置文件来限制权限也可以通过mount挂载选项或者属主属组权限来限制权限,用户所拥有的权限是他们的交集
示例:
8.命令:showmount
-a NFS_SERVER_IP 显示指定NFS服务器输出目录列表
-e NFS_SERVER_IP 显示指定NFS服务器的客户端信息和共享目录
9.挂载命令:mount.nfs/mount -t nfs
语法:
mount.nfs servername:/path/to/share dir [-rvVwfnsh ] [-o options]
示例:
mount -y nfs 172.16.0.68:/data/mysql /mnt
10. exportfs -ar:挂载之后如果修改了相关权限,可以使用此命令重新导出文件
-r:重新导出;
-a:所有文件系统;
-v:详细信息;
-u:取消导出文件系统;
11.实现开机自动挂在:
配置文件:/etc/fstab
示例: