[RHEL]-19-使用NFS服务共享文件

引言

在上一篇文章中介绍了Samba服务,它能够实现跨系统平台的文件共享,这篇文章将介绍Linux间通用的文件共享服务NFS。

文章目录

0×1.安装NFS

NFS(Network Files System)网络文件系统,它允许网络中的主机通过TCP/IP协议进行资源共享,NFS服务依赖于RPC服务,必需保证RPC服务在系统中也同样被安装才能够使用NFS服务,默认RHEL7中已经安装了NFS服务与RPC服务,如果没有安装NFS,可以通过下面的命令来安装:

					[root@qingsword.com ~]# yum -y install nfs-utils
					

0×2.NFS共享配置实例

实验环境:

RHEL7,NFS服务端,安装了nfs-utils,IP 192.168.1.233/24;
CentOS7,NFS客户端;
两台机器处于同一局域网且能够互相ping通;

1)首先设置服务端iptables

					#可以将NFS对应的服务端口加入iptables规则列表中,本例直接选择清空规则列表并保存
					[root@qingsword.com ~]# iptables -F
					[root@qingsword.com ~]# service iptables save
					

2)在服务端创建共享目录

					#创建目录并设置权限
					[root@qingsword.com ~]# mkdir /qingsword.com
					[root@qingsword.com ~]# chmod 777 /qingsword.com/

					#在共享目录中创建一个文件,让客户端读取
					[root@qingsword.com ~]# echo "welcome to my website www.qingsword.com" > /qingsword.com/hello.txt
					

3)修改NFS主配置文件

					[root@qingsword.com ~]# vim /etc/exports
					#参数格式如下
					# 共享的目录 允许访问这个共享目录的网段(可读写,数据即时同步,将NFS登录用户映射为NFS服务端匿名用户)
					/qingsword.com 192.168.1.0/24(rw,sync,all_squash)

					#在网段和括号之间不需要空格,括号中的参数用逗号分隔,详解如下
					# ro 只读默认
					# rw 读写模式
					# root_squash 客户端使用root用户访问时,映射为NFS服务端匿名用户
					# no_root_squash 客户端使用root用户访问时,映射为NFS服务端root用户
					# all_squash 不论客户端使用什么帐户,均映射为NFS服务端匿名用户
					# sync 	同时将数据写入到内存与硬盘中,保证不丢失数据
					# async 优先将数据保存到内存,然后再写入硬盘,效率更高,但可能造成数据丢失
					

4)重启NFS服务,使配置生效

					#首先确保系统的RPC服务处于运行状态
					[root@qingsword.com ~]# systemctl status rpcbind
					   Active: active (running)
					
					#重启NFS服务
					[root@qingsword.com ~]# systemctl restart nfs-server

					#如果需要开机自启动
					[root@qingsword.com ~]# systemctl enable nfs-server
					

5)配置客户端

					#Ubuntu系统可以使用下面的命令安装NFS
					qing@qingsword.com:~$ sudo apt install nfs-common

					#CentOS7默认也安装了NFS,通过下面的命令来探测服务器上有哪些共享目录
					[root@qingsword.com ~]# showmount -e 192.168.1.233
					Export list for 192.168.1.233:
					/qingsword.com 192.168.1.0/24
					
					#showmount有三个常用参数
					# -e 显示NFS服务端的共享列表
					# -a 显示本机挂载NFS资源的情况
					# -v 显示版本号

					#在本地创建挂载目录,挂载服务端共享目录
					[root@qingsword.com ~]# mkdir /nfs_dir
					[root@qingsword.com ~]# mount -t nfs 192.168.1.233:/qingsword.com /nfs_dir

					#能够读取服务端上创建的hello.txt文件内容,说明挂载成功了
					[root@qingsword.com ~]# cat /nfs_dir/hello.txt 
					welcome to my website www.qingsword.com

					#如果想要开机自动挂载,可以将下面的这一条加入fstab文件中
					[root@qingsword.com ~]# vim /etc/fstab

					192.168.1.233:/qingsword.com /nfs_dir nfs defaults 0 0
					

Ps:NFS相对于Samba配置要简单的多,而且不需要验证,但这种共享方式只能在Linux系统之间进行。

0×3.使用autofs实现自动挂载NFS共享目录

有时我们并不希望NFS共享目录一直挂载在我们的某个目录中,但又不想频繁的使用mount/umount去手动挂载卸载,这个时候就可以使用autofs服务,这个服务类似于一个守护进程,只有当我们试图去访问一个配置文件中设置的挂载点时,才自动将目标挂载到目录,我们退出挂载点后,目录又将自动卸载。

1)安装autofs服务

					[root@qingsword.com ~]# yum install -y autofs
					

2)修改主配置

					[root@qingsword.com ~]# vim /etc/auto.master
					#在其末尾添加一句,意思是将/etc/nfs.misc文件中指定的目标,挂载到/nmt目录下
					/nmt /etc/nfs.misc

					#创建挂载目标文件,nfs是挂载文件夹显示的名称,-rw指定挂载的权限为可读写,-ro为只读,后面是要挂载的目标,本例为NFS服务端的共享文件夹
					[root@qingsword.com ~]# vim /etc/nfs.misc
					nfs -rw 192.168.1.233:/qingsword.com

					#上面这两条设置,意思就是将NFS服务端的目录在访问时自动挂载到/mnt/nfs目录中(这个本地目录只有在访问时才会存在,稍后会演示到,这个nfs目录就是上面这一步中第一个参数的名称)
					

3)重启autofs服务

					[root@qingsword.com ~]# systemctl restart autofs

					#如果需要开机自启动
					[root@qingsword.com ~]# systemctl enable autofs
					

4)测试

					#进入/mnt目录,ls后并没有子目录
					[root@qingsword.com ~]# cd /mnt
					[root@qingsword mnt]# ls

					#使用cd切入nfs目录,就将执行autofs挂载操作,这个时候/mnt目录下就会自动创建出一个nfs目录,并且挂载到NFS服务端的共享目录上
					[root@qingsword mnt]# cd nfs
					[root@qingsword nfs]# ls
					hello.txt
					

Ps:使用autofs自动挂载时,每个父目录只能指定一个自动挂载的隐藏目录(例如:/etc/auto.master文件中如果第一条写了/nmt /etc/nfs.misc那么再在下面写一条/nmt /etc/smb.misc,下面这一条就不会生效,因为他们指向了同一个父目录/mnt)。