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:共享文件夹父目录/& ”