实践NFS

nfs是网络文件系统(network file system),允许一个节点通过网络访问远程计算机的文件系统,远程文件系统可以被直接挂载到本地,文件操作和本地没有区别,如果是局域网的nfs,那么io的性能也可以保证,下面就以CentOS为例介绍nfs配置。

服务端配置

首先检查是否安装了nfs相关服务:

1
2
$ rpm -qa | grep nfs-utils
$ rpm -qa | grep rpcbind

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

1
2
3
$ yum -y install nfs-utils
# 貌似nfs-utils会自动安装rpcbind依赖
$ yum -y install rpcbind

启动服务

1
2
3
$ systemctl start rpcbind.service
# nfs服务依赖rpcbind服务
$ systemctl start nfs.service

安装完成之后配置nfs访问目录,配置文件位置/etc/exports,默认是空的这里添加一行:

1
2
3
4
/nfs_test 192.168.1.2(rw)
/nfs_dddd 192.168.1.2(rw) 192.168.1.3(rw)
/nfs_abcd 192.168.1.2(rw,no_root_squash,no_all_squash,async)
/nfs_test 192.168.1.0/24(rw)

这个配置表示开放本地存储目录/nfs_test 只允许192.168.1.2这个主机有访问权限,rw表示允许读写;no_root_squash表示root用户具有完全的管理权限;no_all_squash表示保留共享文件的UID和GID,此项是默认不写也可以;async表示数据可以先暂时在内存中,不是直接写入磁盘,可以提高性能,另外也可以配置sync表示数据直接同步到磁盘;就配置这些就可以,保存退出

  多个目录可以每行配置一个,如果想让这个网段的主机都可以访问,假如此时子网掩码是255.255.255.0,网关是192.168.1.0,那么ip那里可以写成192.168.1.0/24表示允许地址段的所有主机访问

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

1
$ exportfs -a

  刷新配置即可生效

客户端配置

环境配置跟服务端一样,需要rpcbind服务和nfs服务。

查看服务端nfs共享信息

1
2
3
$ showmount -e 192.168.1.1
Export list for 192.168.1.1:
/nfs_test 192.168.1.2

创建客户端挂载点  

1
$ mkdir /mnt/test1

挂载nfs

1
$ mount -t nfs 192.168.1.1:/nfs_test /mnt/test1 

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

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

如果需要设置开机挂载,可以在/etc/rc.local中添加挂载命令,也可以在/etc/fstab添加一行如下配置(不推荐):

1
2
3
192.168.1.1:/nfs_test /mnt/test1 nfs rw,tcp,intr 0 1
#或
192.168.1.1:/nfsdir      /nfsdir      nfs  defaults,_rnetdev  1  1

通过mount -a验证。

nfs和rpcbind服务需要开启自启动。

参考https://www.cnblogs.com/freeweb/p/6593861.html