目录
注意:一台机器不要同时做 NFS 的服务端和 NFS 的客户端。如果同时作了 NFS 的服务端和客户端,那么在关机的时候,会一直夯住,可能十分钟之后甚至更久才能关闭成功。
1、NFS的工作原理:
启动NFS SERVER之前,首先要启动RPC服务(CentOS 5.x下为 portmap服务,CentOS 6.x和CentOS 7.x下为 rpcbind 服务,下同),否则NFS SERVER就无法向RPC服务注册了。
另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会丢失,因此,此时 RPC 服务管理的NFS程序也需要重新启动以重新向RPC注册。
要特别注意的是:一般修改NFS配置文件后,是不需要重启NFS的,直接在命令行执行:/etc/init.d/nfs reload【针对CentOS 5.x 或 CentOS 6.x】或systemctl reload nfs.service【针对CentOS 7.x】或exportfs -rv,即可使修改的/etc/exports 生效。
2、服务器配置:
本次搭建采用2台虚拟机,操作系统采用centos7。
角色 |
主机名称 |
IP地址 |
server |
nfs-server |
192.168.137.190 |
client |
nfs-client |
192.168.137.191 |
3、服务端安装:
(1)安装NFS和RPC依赖:
执行命令:yum install -y nfs-utils rpcbind
(2)配置exports:
① 创建共享文件夹:
执行命令:mkdir -p /nfs/data
说明:该步骤是创建共享文件夹,文件夹的路径自定义。
② 修改共享文件夹所属用户及组:
执行命令:chown -R nfsnobody.nfsnobody /nfs/data
③ 修改/etc/exports配置:
修改配置文件:/etc/exports,增加配置参数,配置共享文件夹、服务器IP范围,以及对该文件夹的读写权限。
测试配置值:/nfs/data 192.168.137.0/24(rw,sync)
推荐配置值:/nfs/data 192.168.137.0/24(rw,sync,root_squash,all_squash,anonuid=XXXX,anongid=XXXX)
④ 文件读写权限参数说明:
参数说明:
ro:只读设置,这样 NFS 客户端只能读、不能写(默认设置);
rw:读写设置,NFS 客户端可读写;
sync:将数据同步写入磁盘中,效率低,但可以保证数据的一致性(默认设置);
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;如果服务器重新启动,这种行为可能会导致数据损坏,但效率高;
root_squash:当客户端用 root 用户访问该共享文件夹时,将 root 用户映射成匿名用户(默认设置);
no_root_squash:客户端的 root 用户不映射。这样客户端的 root 用户与服务端的 root 用户具有相同的访问权限,这可能会带来严重的安全影响。没有充分的理由,不应该指定此选项;
all_squash:客户端所有普通用户及所属组都映射为匿名用户及匿名用户组;「推荐设置」
no_all_squash:客户端所有普通用户及所属组不映射(默认设置);
subtree_check:如果共享,如:/usr/bin之类的子目录时,强制NFS检查父目录的权限;
no_subtree_check:即使共享 NFS 服务端的子目录时,nfs服务端也不检查其父目录的权限,这样可以提高效率(默认设置);
secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
no_wdelay:若有写操作则立即执行,当使用async时,无需此设置;
anonuid=xxx:将远程访问的所有用户主都映射为匿名用户主账户,并指定该匿名用户主为本地用户主(UID=xxx);
anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组为本地用户组(GID=xxx);
(3)启动rpcbin服务:
执行命令:systemctl start rpcbind.service
(4)将rpcbin服务加入开机自启:
执行命令:systemctl enable rpcbind.service
(5)启动nfs服务:
执行命令:systemctl start nfs.service
(6)将nfs服务加入开机自启:
执行命令:systemctl enable nfs.service
(7)检查是否成功:
执行命令:showmount -e 192.168.137.190
说明:其中IP为NFS的服务器地址。
4、客户端安装:
(1)安装NFS和RPC依赖:
执行命令:yum install -y nfs-utils rpcbind
(2)启动rpcbin服务:
执行命令:systemctl start rpcbind.service
(3)是否将rpcbin服务加入开机自启:
加入了开机自启动,当重启NFS客户端机器时,如果此时NFS服务端机器已关机,或者网络存在问题等等。使NFS客户端连接NFS服务端失败,那么此时会造成NFS客户端机器起不来的情况。
因此为了避免该情况发生,不建议机器开机自启动就挂载NFS。
(4)查看共享盘:
执行命令:showmount -e 192.168.137.190
(5)挂载NFS:
创建本地文件夹,执行命令:mkdir -p /nfs/test
挂载NFS命令:mount -t nfs 192.168.137.190:/nfs/data /nfs/test
(6)查看挂载信息:
① 查看方式一:
执行命令:df -h
② 查看方式二:
执行命令:cat /proc/mounts
5、查看NFS版本:
(1)查看NFS服务端版本:
执行命令:nfsstat -s
(2)查看NFS客户端版本:
执行命令:nfsstat -c
6、测试NFS:
在客户端和服务端之间测试,本次有1个客户端,1个服务端。
在客户端创建文件夹或创建文件并且输入数据,在服务端是否可以查看;
在服务端创建文件夹或创建文件并且输入数据,在客户端是否可以查看;