NFS原理介绍
1.NFS是network file sytem的缩写,他最大的特点就是可以通过网络,让不同的机器,不同的系统实现 文件共享。NFS客户端可以将NFS服务器共享的目录挂载在本地的文件系统中,访问目录就如同访问自 己本地目录一样。
NFS工作原理
- 首先NFS服务器端开启rpcbind;
- 然后服务端开启NFS服务,这时NFS的各项功能都需要向RPC服务注册,这时rpc会通知portmap模块将可用的端口分配给statd,rquotad等;
- 然后NFS客户端RPC服务就会通过网络向NFS服务端的RPC服务的111端口发出NFS文件存取功能的询问请求。
- NFS服务端的RPC服务找到对应的已注册的NFSdaemon端口后,通知NFS客户端的RPC服务。
- 此时NFS客户端就可获取到nfs服务端各个进程的正确端口,然后通过客户端rpc就直接与NFS服务
器的rpc进行存取数据了(rpc知道了nfs的具体端口,就可以实现远程调用,即传输)。
autofs原理介绍
autofs服务程序与mount命令不同之处在于它是一种守护进程只有检测到用户试图访问一个尚未挂载的文件系统时才会自动的检测并挂载该文件系统。
autofs非常方便,主要有两点:
1.设置不需要再开机就挂载的目录,当用的时候才实现自动挂载
2.用户不使用自动挂载的目录一段的时间,会自动卸载。(默认时间5分钟),可以在/etc/autofs.conf修改配置
实践操作
一、配置网络yum源
[root@localhost yum.repos.d]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim rhel.repo
[qinghua]
name=qinghua
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64/
enable=1
gpgcheck=0
二、首先安装并配置nfs
服务器端
1.安装nfs
[root@localhost yum.repos.d]# yum install -y nfs-utils
2.在/etc/exports中配置nfs共享目录及参数
[root@localhost yum.repos.d]# vim /etc/exports
共享/data/jfedu 让203段的IP都具有rw读写,和sync同步权限
/data/jfedu 192.168.203.0/24(rw,sync)
#重新共享目录
3.[root@localhost jfedu]# exportfs -r
客户端
1.挂载服务器端nfs目录
软连接挂载(当服务器端停止服务后不会一直请求,硬链接则会一直请求连接)
[root@localhost jfedu]# mount -t nfs -o nolock,nfsvers=3,vers=3 192.168.203.100:/dd/jfedu /dd/jfedu
nfsstat :
-m, --mounts 显示已经挂载的nfs文件系统的详细参数
-c, --client 显示NFS客户端的统计信息
-s, --server 显示NFS服务器端的统计信息
-2 显示nfsv2的统计信息
-3 显示nfsv3的统计信息
-4 显示nfsv4的统计信息
-o [facility] 显示指定类型的统计信息
nfs NFS协议信息
rpc 一般RPC信息
net 网络统计信息
all 显示以上所有信息
rpcinfo :
-p 显示注册的端口
-m 显示 rpcbind 操作的统计信息表
-s 显示所有已注册的 RPC 程序的简明列表
-T 显示有关使用特定传输或协议的服务的信息
-t 探测使用 TCP 的 RPC 程序
-u 探测使用 UDP 的 RPC 程序
三、客户端安装自动挂载autofs服务
1.安装服务
[root@localhost /]# yum install -y autofs
2.编辑autofs配置文件
#添加自动挂载路径上一级目录以及对应的描述文件
#/yu为总的访问目录(客户端目录)/etc/yu.misc是对总访问目录的描述,用于子目录的编辑。用户权限分离
[root@localhost /]# vim /etc/auto.master
/yu /etc/yu.misc
编辑描述文件将192.168.203.100:/aa/jfedu
文件夹挂载到/yu/jfedu下,类型为nfs权限为rw,sync
3.编辑autofs中设置的描述文件
[root@localhost /]# vim /etc/yu.misc
jfedu -fstype=nfs,rw,sync 192.168.203.100:/aa/jfedu
#如果nfs服务端exportfs,设置的权限为ro,那么即使这里写rw,也是不可写的。
#如果nfs服务端exportfs,设置的权限为rw,那么可以在这级设置rw或者ro。
附加:添加yum源的配置,注意/dev/cdrom前面是有:
[root@linuxprobe ~]# vim /etc/iso.misc
iso -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
4.重启autofs服务
[root@localhost /]# systemctl restart autofs
5.进入挂载目录(使用目录此时会自动挂载)
[root@localhost /]# cd /yu/jfedu
6.查看挂载,不使用后自动卸载,使用时自动挂载
[root@localhost jfedu]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 13G 4.4G 8.7G 34% /
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 13M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda1 1014M 166M 849M 17% /boot
/dev/mapper/centos-home 2.0G 37M 2.0G 2% /home
tmpfs 394M 32K 394M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /media/cdrom
192.168.203.100:/aa/jfedu 15G 4.7G 11G 32% /yu/jfedu
错误:
1.该错误注意防火墙和selinux,关闭后正常
[root@localhost jfedu]# showmount -e 192.168.203.100
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
2.注意配置文件的规格,IP和权限中间需要加空格(服务端/etc/exports)
[root@localhost data]# mount -t nfs -o nolock,nfsvers=3,vers=3 192.168.203.100:/aa/jfedu /aa/jfedu
mount.nfs: access denied by server while mounting 192.168.203.100:/aa/jfedu