- 什么是nfs?
nfs是网络文件系统主要功能是通过网络(一般是局域网)让不同主机系统之间可以共享文件或目录
主要存储用户上传的视屏,音频,图片这些。
NFS网络文件系统使用于处理量级小的业务
用于中小企业网站集群机构后端常用nfs进行数据共享
说明:nfs服务只能用于在linux系统之上,如果windows系统和 linux系统共存的情况下用ftp服务、sambe服务均支持linux和windows
-
NFS网络文件的意义
nfs是一个共享存储服务,为什么要有共享存储?
1>实现数据信息的共享
2>实现数据信息的一致 - NFS的系统原理
1>在nfs服务端创建共享目录(服务端提供被挂载的磁盘空间)
2>通过mount网络挂载,将nfs客户端本地目录挂载到nfs服务端共享目录上
3>nfs客户端挂载目录上创建、删除、查看数据操作,等价于在服务端进行的创建、删除、查看操作
说明:mount -t (指定挂载的文件系统的类型) 挂在类型 源 目标
mount -t nfs10.0.0.7:/data /mnt
-
nfs工作流程:
1>先启动RPC服务
2>启动nfs服务
3>客户端请求nfs服务
4>rpc服务返回端口到客户端
5>客户端用地址端口请求传输数据 - NFS的服务端部署流程
1.检查服务器上是否已经安装了rpcbind和nfs-utils软件。
命令:rpm -qa rpcbind nfs-utils 或rpm -qa |egrep “rpcbind|nfs-utils”
2.安装nfs和rpcbindyum install -y rpcbind nfs-utils
3.编写NFS服务配置文件
NFS服务默认的配置文件为/etc/exports,并且里面初始没有内容,是个空文件,需要用户自行配置。
可以使用vim命令来编辑此文件,在其内添加如下内容:
格式:
#共享目录 允许连接的网段(参数)----中间加一个空格做分隔符/data/ 172.16.1.0/24(rw,sync)
也可以使用echo或cat命令来实现:
echo ‘/data/ 172.16.1.0/24(rw,sync)’ /etc/exports
或
cat > /etc/exports << EOF
##########config NFS server start by wang 2018-05-21##########
/data/ 172.16.1.0/24(rw,sync)
##########config NFS server end by wang 2018-05-21##########
EOF
4.创建服务端共享目录
服务端共享目录一定要确保存在,不存在的话务必要事先创建,否则在应用时会出错。
命令:mkdir -p /data/
5.设置服务端共享目录的属主和属组
NFS服务默认使用的用户和用户组是nfsnobody,所以需要将本地同步目录属主和属组为相应的用户。
命令:
grep NFS /etc/passwd ####----在/etc/passwd中查看NFS的用户和用户组
chown -R nfsnobody.nfsnobody /data/
6.启动及检查rpcbind服务
因为NFS及其辅助程序都是基于RPC协议的(端口为111),所以首先要确保系统中运行了rpcbind服务。
命令:/etc/init.d/rpcbind start
检查端口:lsof -i:111
检查rpcbind服务状态:/etc/init.d/rpcbind status
7.启动及检查nfs服务
注意,一定要确保rpcbind服务已经启动正常,再启动nfs服务。
命令:/etc/init.d/nfs start
检查nfs服务状态:/etc/init.d/nfs status
查看nfs服务向rpc服务注册的端口信息的命令:
rpcinfo -p localhost
或rpcinfo -p 127.0.0.1
8.重启nfs服务
如果修改了nfs的配置文件/etc/exports的话,需要重启服务才能使修改生效。
为了提供比较友好的用户体验,建议使用nfs服务平滑重启的参数reload,而不是直接使用restart参数。
命令:/etc/init.d/nfs reload===== exportfs -r
9.检查NFS服务端共享目录信息
可以使用showmount命令检查NFS服务端共享目录的信息。
命令:
showmount -e localhost
或showmount -e 127.0.0.1
或showmount -e 172.16.1.31
10.服务端设置开机自启动rpcbind和nfs
想要让rpcbind和nfs服务开机自启动,可以使用chkconfig命令来实现。
命令:
chkconfig rpcbind on
chkconfig nfs on
检查:
chkconfig --list | egrep -i “rpcbind|nfs”
11.服务端查看NFS默认自带的参数
配置并启动好NFS服务后,通过cat /var/lib/nfs/etab命令可以看到NFS配置的参数及默认自带的参数。
命令:cat /var/lib/nfs/etab
- NFS客户端部署流程
NFS所有客户端需要做的准备工作都是一样的。客户端需要安装rpcbind和nfs-utils,但只需要启动rpcbind即可,不需要启动nfs。
1.服务器环境检查
无论做什么操作,都应该养成一个好的习惯,那就是先进行检查,再上手操作。
所以第一步应该先检查服务器上是否已经安装了rpcbind和nfs-utils软件。
命令:
rpm -qa rpcbind nfs-utils
或
rpm -qa |egrep “rpcbind|nfs-utils”
2.安装NFS和rpcbind
命令:yum install -y rpcbind nfs-utils
3.启动及检查rpcbind服务
因为NFS及其辅助程序都是基于RPC协议的(端口为111),所以首先要确保系统中运行了rpcbind服务。
命令:/etc/init.d/rpcbind start
检查端口:lsof -i:111
检查rpcbind服务状态:/etc/init.d/rpcbind status
4.客户端设置开机自启动rpcbind
想要让rpcbind服务开机自启动,可以使用chkconfig命令来实现。
命令:chkconfig rpcbind on
检查:chkconfig --list | egrep -i rpcbind
5.创建客户端本地挂载目录
想要挂载NFS服务端的共享目录,在客户端必须要有一个用于挂载的目录。
创建一个目录的命令:mkdir -p /nfs_dir
6.客户端挂载NFS服务端共享目录
以上步骤全部操作完毕后,就可以在客户端挂载NFS服务端的共享目录了。
挂载命令:mount -t nfs 172.16.1.31:/data/ /nfs_dir/
可以使用df或mount命令结合grep来检查是否挂载成功。
命令:
df -h | grep '172.16.1.31'
或mount | grep '172.16.1.31'
7.客户端设置开机自动挂载NFS服务端的共享目录
如果需要让客户端开机自动挂载NFS服务端的共享目录,有两种方法。
方法一:将挂载命令放在/etc/rc.local文件里。
缺点:可能会出现偶尔开机挂载不上的情况,工作中如果使用这种方法,除了开启自启动的配置以外,还有对是否挂载成功做监控。
配置/etc/rc.local文件的命令:
echo ‘# mount NFS server by wang 2018-05-21 #’ >> /etc/rc.local
echo ‘mount -t nfs 172.16.1.31:/data/ /video/’ >> /etc/rc.local
方法二:将挂载信息放在/etc/fstab文件里。
这种方法有一个需要特殊注意的地方:fstab会优于网络被linux系统加载。
网络没启动时执行fstab里配置的远程挂载会导致连接不上NFS服务端,无法实现开机正常挂载NFS远程共享目录。
但是,这个问题是可以被解决的,解决方法就是,在客户端启动netfs服务,并且让这个服务开机自启动。
即:/etc/init.d/netfs start;chkconfig netfs on
配置/etc/fstab文件的命令:echo ’172.16.1.31:/data/ /nfs_dir nfs default 0 0’ >> /etc/fstab
8.客户端查看mount挂载NFS的参数
NFS客户端挂载好服务端的共享目录后,通过grep '172.16.1.31' /proc/mounts命令可以看到mount的详细参数。
命令:grep '172.16.11' /proc/mounts