NFS文件共享以及auto自动挂载

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

NFS文件共享以及auto自动挂载_第1张图片

一、nfs工作原理流程

NFS文件共享以及auto自动挂载_第2张图片


1、首先用户访问网站程序,由程序在NFS客户端上发出NFS文件存取功能的询问请求,这时NFS客户端RPC服务(portmap 或rpcbind服务)就会通过网络向NFS服务端的RPC服务的111端口发出NFS文件存取功能的询问请求。
2、NFS服务端的RPC服务找到对应的已注册的NFSdaemon端口后,通知NFS客户端的RPC服务(即portmap或rpcbind服务)。
3、此时NFS客户端就可获取到正确的端口,然后就直接与NFS daemon联机存取数据了。
4、NFS客户端把数据存取成功后,返回给前端程序,告诉用户存取结果,作为网站用户,我们就完成了一次存取操作。
由于NFS的各项功能都需要向RPC服务(即portmap或rpcbind)注册,所以RPC服务(即portmap或rpcbind服务)才能获取到NFS服务的各项对应的端口号(portnumber)、PID、NFS在主机所监听的IP等,而NFS客户端才能够通过向RPC服务(即portmap或rpcbind服务)询问从而找到正确的端口。也就是说,NFS需要有RPC服务(即portmap或rpc服务),NFS服务只需在服务端后于RPC服务启动,客户端无需启动NFS服务。
NFS的rpc服务,在CentOS5.X下名称为portmap,在CentOS6.x下名称为rpcbind。

服务端:
查看系统内核版本

[root@localhost /]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.0 (Maipo)

安装rpcbind,和nfs

[root@localhost /]# yum install nfs-utils rpcbind -y

二、NFS配置

配置NFS服务
NFS配置文件的路径

/etc/exports 是nfs的配置文件,内容默认为空。

格式:NFS共享目录 客户端地址(参数)

客户端地址 具体地址例子
授权单一客户端访问NFS 172.25.254.141
授权整个网段可访问NFS 172.25.254.0/24
授权整个网段 172.25.254.*
客户端地址选项说明:

NFS权限设置

NFS配置权限设置,即/etc/exports文件配置的参数集。

参数命令 参数用途
rw 表示可读写
Sync 请求或者写入数据时,数据同步写入到NFS server的硬盘中后才会返回
no_root_squas 访问nfs server共享目录的用户如果是root的话,它对该目录具有root权限。这个配置原本为无盘用户准备的。用户应避免使用!
root_squash 对于访问NFS server共享目录的用户,如果是root的话会被压缩成为nobody用户身份。
all_squash 不管访问nfs server共享目录的用户身份如何包括root,它的权限都将被压缩成为匿名用户,同时他们的udi和gid都会变成nobody或nfsnobody账户的uid,gid。在多个nfs客户端同时读写nfs server数据时,这个参数可以确保大家写入的数据的权限是一样的。但不同系统有可能匿名用户的uid,gid不同。因为此处我们需要服务端和客户端之间的用户是一样的。比如说:服务端指定匿名用户的UID为2000,那么客户端也一定要存在2000这个账号才可以
anonuid anonuid就是匿名的uid和gid。说明客户端以什么权限来访问服务端,在默认情况下是nfsnobody。Uid65534.
anongid 同anongid,就是把uid换成gid

举例:
*代表任何ip地址

[root@localhost /]# echo "/ftp *(rw,no_root_squash)" >> /etc/exports
[root@localhost /]# mkdir /ftp

刷新nfs配置

[root@localhost /]# exportfs -rv
exporting *:/ftp

重启服务

[root@localhost /]# systemctl restart nfs
[root@localhost /]# systemctl restart rpcbind

三、客户端访问挂载

客户端:
挂载

[root@server ~]# mount -t nfs -o rw 172.25.254.141:/ftp /mnt/
[root@server ~]# df
Filesystem          1K-blocks    Used Available Use% Mounted on
/dev/vda1            10473900 3189236   7284664  31% /
devtmpfs               469344       0    469344   0% /dev
tmpfs                  484932      80    484852   1% /dev/shm
tmpfs                  484932   12748    472184   3% /run
tmpfs                  484932       0    484932   0% /sys/fs/cgroup
172.25.254.141:/ftp  10473984 3519232   6954752  34% /mnt

识别是否被服务端文件是否共享

[root@server ftp]# showmount -e 172.25.254.141
Export list for 172.25.254.141:
/ftp *

并且客户端和服务端实现文件共享,相当于一个文件系统两端都可以访问,读写。

访问成功
[root@server mnt]# ls
file

四、开机自动挂载

/etc/fstab 开机挂载配置文件
开机自动挂载:

[root@server ~]# echo "172.25.254.141:/ftp /ftp nfs defaults 0 0" >> /etc/fstab
[root@server mnt]# reboot
Connection to 172.25.254.241 closed by remote host.
Connection to 172.25.254.241 closed.
[root@foundation79 Desktop]# ssh [email protected]
root@172.25.254.241's password: 
Last login: Wed Jun  6 01:59:12 2018 from 172.25.254.79
[root@server ~]# df
Filesystem          1K-blocks    Used Available Use% Mounted on
/dev/vda1            10473900 3188264   7285636  31% /
devtmpfs               469344       0    469344   0% /dev
tmpfs                  484932      80    484852   1% /dev/shm
tmpfs                  484932   12748    472184   3% /run
tmpfs                  484932       0    484932   0% /sys/fs/cgroup
172.25.254.141:/ftp  10473984 3519232   6954752  34% /ftp

五、自动挂载控制服务(autofs)

mount 是用来挂载文件系统的,可以在系统启动时挂载(/etc/fstab),也可以在系统启动后挂载(使用 mount 命令)。而光盘、软盘、NFS、SMB 等文件系统具有动态性,即需要的时候才有必要挂载。光驱和软盘一般知道什么时候需要挂载,但是 NFS 和 SMB 就不一定能确定挂载时间。而且 NFS 、 SMB 是基于网络的,不管使用或者不使用,都会造成资源浪费(多少情况下,不用到这些的时候,这些挂载其实是不需要一直存在的)。
而autofs恰好提供了一种功能:如果长时间不用一个文件系统,autofs会把这个文件系统卸载;当你需要用到的时候,只需要cd到挂载点或者ls下挂载点,autofs自动挂接。

服务端:

安装服务

[root@server ftp]# yum install autofs -y

安装后自动生成/net目录,目录下有可访问的文件系统。

[root@server ftp]# systemctl start autofs
[root@server ftp]# cd /net/
[root@server net]# ls
[root@server net]# cd 172.25.254.141
[root@server 172.25.254.141]# ls
ftp
[root@server 172.25.254.141]# pwd
/net/172.25.254.141
开始实现autofs自动挂载:

第一步:

编辑主配置文件

[root@server ~]# vim /etc/auto.master
  7 /misc   /etc/auto.misc
  8 /ftp    /etc/auto.mnt     关联挂载目录与子配置文件

第二步:
配置子配置文件
子配置文件是自己新建的

[root@server /]# echo "* 172.25.254.141:ftp/&" > /etc/auto.mnt

&代表任意可指定目录挂载

其中,在autofs配置文件/etc/sysconfig/autofs中有许多默认选择
例如:
默认更新挂载的时间为300秒,这里更改为6秒。

[root@server ~]# vim /etc/sysconfig/autofs
 13 TIMEOUT=6
[root@server ftp]# df | grep ftp
172.25.254.141:/ftp  10473984 3519232   6954752  34% /net/172.25.254.141/ftp
[root@server ftp]# cd ~
[root@server ~]# df | grep ftp         ##6秒后取消挂载

你可能感兴趣的:(运维学习)