什么是NFS

最近想为毕设搭个云服务器,所以想使用nginx+tomcat+nfs的方式搭建一下这个云服务器。所以有了这篇配置的文章。
NFS是网络文件系统,允许一个节点通过网络访问远程计算机的文件系统,远程文件系统可以被直接挂载到本地,文件操作和本地没有区别,如果是局域网的nfs那么io的性能也可以保证。下面就以CentOS 7.x为例,配置NFS。

服务器端配置

首先是服务端配置,服务端提供文件系统供客户端来挂载使用,配置过程如下:

首先检查是否缺少基础环境:
rpm -qa | grep nfs-utilsrpm -qa | grep rpcbind

如果这两个包存在那么可以直接使用,一般服务器安装的时候都会存在,如果没有的话执行下面命令安装:
yum -y install nfs-utilsyum -y install rpcbind

打开需要的端口:
一次正常的挂载操作中,会涉及这些端口。

  • nfs tcp 2049 这个很明显到处都是
  • sunrpc tcp 111 这个很明显到处都是
  • sunrpc udp 111 其中这个很难发现,仔细排查才看到
  • acp-proto udp 4046 其中仔细看udp的会找到

安装完成之后配置nfs访问目录,配置文件位置/etc/exports,默认是空的这里添加一行:
/nfs_test 192.168.1.8(rw,no_root_squash,no_all_squash,async) 共享的文件夹位置 允许访问的ip(该地址可执行的操作)
这个配置表示开放本地存储目录/nfs_test 只允许192.168.1.8这个主机有访问权限,rw表示允许读写;no_root_squash表示root用户具有完全的管理权限;no_all_squash表示保留共享文件的UID和GID,此项是默认不写也可以;async表示数据可以先暂时在内存中,不是直接写入磁盘,可以提高性能,另外也可以配置sync表示数据直接同步到磁盘;就配置这些就可以,保存退出。

现在配置完这些配置,启动相关服务:
systemctl start rpcbind.servicesystemctl start nfs.service

启动之后可以通过status来查看状态,如果下次修改了配置,可以重启服务来使配置生效,也可以直接执行如下命令刷新配置:
exportfs -a

从机配置

现在服务端配置完毕,可以在对应的主机上来配置从机了,需要的环境和服务端一样,要保证安装nfs-utils和rpcbind。

保证环境没问题和上面一样启动rpcbind服务和nfs服务。不再赘述。

首先创建挂载点: mkdir /mnt/test1

然后挂载nfs:mount -t nfs 192.168.1.3:/nfs_test /mnt/test1 注意这里的ip是主机ip,主机挂载位置/nfs_test,从机挂载位置/mnt/test1

挂载成功之后通过 df -h 可以查看挂载的情况,nfs可用空间就是服务端/nfs_test目录所能使用的最大空间。

现在就可以往nfs写入数据了,服务端往/nfs_test读写数据和客户端往/mnt/test1读写数据是一样的,这样就实现了文件同步和共享。

卸载nfs和普通文件系统一样,使用:umount /mnt/test1

如果需要设置开机挂载,在/etc/fstab添加一行配置即可: 192.168.1.3:/nfs_test /mnt/test1 nfs rw,tcp,intr 0 1 然后服务端和客户端都要用enable设置nfs和rpcbind服务开机启动,然后才可以正常挂载。