一、nfs部署
step1 安装 nfs 和 rpc
[root@localhost ~]# yum -y install nfs-utils rpcbind
step2 启动服务和设置开机启动 {注意:先启动rpc服务,再启动nfs服务}
[root@localhost ~]# systemctl start rpcbind #启动rpc服务
[root@localhost ~]# systemctl start nfs-server #启动nfs服务
[root@localhost ~]# systemctl enable nfs-server #设置开机启动
[root@localhost ~]# systemctl enable rpcbind #设置开机启动
step3 配置共享文件目录,编辑配置文件
#首先创建共享目录,然后在/etc/exports配置文件中编辑配置即可。
[root@localhost /]# mkdir /public #创建共享目录
[root@localhost ~]# chown nfsnobody.nfsnobody /public #配置客户端访问时被squash的用户,默认为 nfsnobody
[root@localhost /]# vi /etc/exports #编辑配置文件
#[共享目录] [客户端地址1(权限)] [客户端地址2(权限)]
/public 192.168.245.0/24(rw) client-A.ctos.zu(rw,sync)
[root@localhost /]# systemctl reload nfs #重载NFS服务,使配置文件生效
二、进程
-
nfsd(由rpcbind提供)
最主要的NFS服务提供程序,这个daemon主要的功能就是管理客户端是否能够使用服务器文件系统挂载信息,其中还包含判断这个登录用户的ID。 -
rpc.mountd(由rpcbind提供)
这个daemon主要功能则是管理NFS的文件系统。当client端顺利通过rpc.nfsd登入主机后,在它可以使用NFS服务器提供规定文件之前,还会经过文件使用权限的认证程序。它会去读取NFS的配置 文件/etc/exports来对比客户端的权限,当通过这一关之后,client端也就取得使用NFS文件的权限。 -
rpc.lockd (非必要)
这个daemon用于管理文件的锁定方面,当多个客户端同时尝试写入某个文件时就可以对该文件造成一些问题。rpc.lockd则可以用来克服这此问题。但rpc.lockd必须要同时在客户端和服务器端都开 启才行。 -
rpc.statd(非必要)
这个daemon可以用来检查文件的一致性,若发生因为客户端同时使用同一个文件造成文件损坏时,rpc.statd可以用来检测并尝试恢复该文件
三、软件包
-
RPC主程序:rpcbind
NFS 其实可以被视为一个 RPC 服务,因为启动任何一个 RPC 服务之前,我们都需要做好 port 的对应 (mapping) 工作才行,这个工作其实就是『 rpcbind 』这个服务所负责的!也就是说, 在启动任何一个 RPC 服务之前,我们都需要启动 rpcbind 才行! (在 CentOS 5.x 以前这个软件称为 portmap,在 CentOS 6.x 之后才称为 rpcbind 的!)。 -
NFS主程序:nfs-utils
提供 rpc.nfsd 及 rpc.mountd 这两个 NFS daemons 与其他相关 documents 与说明文件、执行文件等的软件!这个就是 NFS 服务所需要的主要软件。
四、配置文件
-
主要配置文件:/etc/exports
这是 NFS 的主要配置文件了。该文件是空白的,有的系统可能不存在这个文件,主要手动建立。NFS的配置一般只在这个文件中配置即可。 -
NFS 文件系统维护指令:/usr/sbin/exportfs
这个是维护 NFS 分享资源的指令,可以利用这个指令重新分享 /etc/exports 变更的目录资源、将 NFS Server 分享的目录卸除或重新分享。 -
分享资源的登录档:/var/lib/nfs/*tab
在 NFS 服务器的登录文件都放置到 /var/lib/nfs/ 目录里面,在该目录下有两个比较重要的登录档, 一个是 etab ,主要记录了 NFS 所分享出来的目录的完整权限设定值;另一个 xtab 则记录曾经链接到此 * * NFS 服务器的相关客户端数据。 -
客户端查询服务器共享资源的指令:/usr/sbin/showmount
这是另一个重要的 NFS 指令。exportfs 是用在 NFS Server 端,而 showmount 则主要用在 Client 端。showmount 可以用来察看 NFS 分享出来的目录资源。
五、权限
参数 | 作用 |
---|---|
ro | 只读 |
rw | 读写 |
root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户(默认为nfsnobody) |
no_root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 |
all_squash | 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户(默认为nfsnobody) |
sync | 同时将数据写入到内存与硬盘中,保证不丢失数据 |
async | 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 |