NFS(Network File system)网络文件系统
基于内核的文件系统,利用RPC(Remote Procedure Call Protocol)远程过程调用实现访问远端系统的文件
提供NFS服务的软件包为nfs-utils(Linux系统默认安装),并且服务的启用还要依赖于rpcbind服务,实现端口映射,不可缺少。
NFS服务是由多个进程组合而成,主要服务启动项为nfs-server(CentOS 7),启动后的主端口:2049,还有一些额外随机端口
NFS配置文件
NFS服务共享资源的设定,是在配置文件/etc/exports以及/etc/exports.d/*.exports进行配置,每行代表一个共享资源,基本格式规则如下:
/DIR IP/NETMASK (填写共享文件夹/DIR的权限设定)
当IP/NETMASK为*时,是最简单共享方式,对所有主机用户开放,并且可同时指定多个远程主机以及对应的权限
()里可以设定的权限信息选项如下:
ro(默认),rw 只读,读写
sync(默认),async 同步,异步传输
root_squash(默认) 所有远程root用户会被压榨映射为nfsnobody用户,从而权限会受到限制,若使用no_ root_squash,则不进行压榨
all_squash 所有远程用户都会被压榨映射为nfsnobody用户,若使用no_ all_squash(默认)则会保留远程用户的UID和GID,此时若是NFS服务器上有相同UID和GID的用户,则远程用户就会有相同的权限
anonuid=UID,anongid=GID 可指定远程用户都被映射为特定的UID和GID,配合all_squash使用
当远程主机在NFS共享配置文件设定的可访问列表里,则可在自己的机器上对这些共享文件夹进行mount挂载:
mount NFS_SERVER_IP:/DIR 挂载点 (此时对这些文件夹的权限,则会根据NFS服务器设定的配置文件内容有关)
若是需要开机自动挂载,则可写入/etc/fstab文件中,文件系统为nfs
在NFS服务已经启动的情况下,修改配置文件后,可以使用如下命令执行一些相关操作:
exportfs –r 重新加载配置文件,使之生效
exportfs –v 查看已共享信息
exportfs –a 恢复共享服务
exportfs –au 暂停共享服务
若是远程主机需要查看NFS服务器的共享信息可通过命令 “showmount –e NFS_SERVER_IP ” 查看
NFS服务共享支持多主机同时挂载NFS服务器下的同一目录,同时进行各主机的数据操作
基于安全考虑,在客户端对NFS服务共享信息文件夹进行mount挂载时,建议使用如下选项:
nosuid 不使用有特殊权限的文件
fg,hard,intr 三者结合,可在挂载出现故障时,手动终断挂载请求
_netdev 在发现无网络时,则不进行挂载
远程主机实现NFS服务共享信息的自动挂载
依赖于autofs程序包,服务autofs默认开机启动
配置文件分为主配置文件/etc/auto.master和从配置文件/etc/auto.*(可自定义,不是必须为此路径)
自动挂载的方式有两种:
第一种是挂载目录的相对路径挂载法:
1.在主配置文件/etc/auto.master中,写入挂载目录的dirname,格式如下:
dirname 从配置文件路径
(需要注意的是dirname最后不能加“/”)
2.在从配置文件中写入挂载目录的basename和具体的挂载信息,格式如下:
basename 挂载选项信息 NFS_IP:共享的目录
其中dirname和basename都不需要手工创建,在配置文件写完,启动autofs服务后,可自动创建,但是需要注意的是,basename默认不会显示,需要在dirname目录下手动输入“cd basename”命令才会触发生成,实现挂载
第二种是挂载目录的绝对路径挂载法:
1.在主配置文件/etc/auto.master中设置如下:
/- 配置文件路径
2.在配置文件中设置如下:
完整路径 挂载选项信息 NFS_IP:共享的目录
(此方法不会影响挂载点目录下原有文件的查看)
注意在以上两种方法中,挂载选项信息中需要指定文件系统“ –fstype=文件系统”
若是希望NFS共享的文件夹下的子目录与远程主机挂载点目录的basename相同,则可使用相对路径方法进行挂载:
在主配置文件/etc/auto.master中,写入“dirname 从配置文件路径”
在从配置文件中写入 “* 挂载选项信息 NFS_IP:共享文件夹父目录/& ”