nfs
nfs简介
nfs特点
- NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源
- 在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样
- nfs适用于Linux与Unix之间实现文件共享,不能实现Linux与Windows间的文件共享功能
- nfs是运行在应用层的协议,其监听于2049/tcp和2049/udp套接字上
- nfs服务只能基于IP进行认证
nfs的应用场景
nfs有很多实际应用场景,以下是一些常用的场景:
- 多个机器共享一台CDROM或其他设备。这对于在多台机器中安装软件来说更加便宜与方便
- 在大型网络中,配置一台中心NFS服务器用来放置所有用户的home目录可能会带来便利。这些目录能被输出到网络以便用户不管在哪台工作站上登录,总能得到相同的home目录
- 不同客户端可在NFS上观看影视文件,节省本地空间
- 在客户端完成的工作数据,可以备份保存到NFS服务器上用户自己的路径下
nfs的体系组成
nfs体系至少有两个主要部分:
- 一台nfs服务器
- 若干台客户机
nfs工作机制
nfs是基于rpc来实现网络文件系统共享的。所以我们先来说说rpc
//NFS服务器端运行着四个进程:
nfsd
mountd
idmapd
portmapper
idmapd //实现用户帐号的集中映射,把所有的帐号都映射为NFSNOBODY,但是在访问时却能以本地用户的身份去访问
mountd //用于验证客户端是否在允许访问此NFS文件系统的客户端列表中,在则允许访问(发放一个令牌,持令牌去找nfsd),否则拒绝访问
//mountd的服务端口是随机的,由rpc服务(portmapper)提供随机端口号
nfsd //nfs的守护进程,监听在2049/tcp和2049/udp端口上
//不负责文件存储(由NFS服务器本地内核负责调度存储),用于理解客户端发起的rpc请求,并将其转交给本地内核,而后存储在指定的文件系统上
portmapper //NFS服务器的rpc服务,其监听于111/TCP和111/UDP套接字上,用于管理远程过程调用(RPC)
nfs管理
//安装
yum -y install nfs-utils
//启动
systemctl start rpcbind nfs-server
使用shoumount命令测试NFS服务器的输出目录状态
//语法:showmount [选项] [NFS服务器名称或地址]
//常用的选项有:
-a //显示指定NFS服务器的所有客户端主机及其所连接的目录
-d //显示指定的NFS服务器中已被客户端连接的所有输出目录
-e //显示指定的NFS服务器上所有输出的共享目录
使用shoumount命令测试NFS服务器的输出目录状态
mount -t nfs SERVER:/path/to/sharedfs /path/to/mount_point
在客户端设置开机自动挂载nfs:编辑/etc/fstab文件,添加如下格式的内容
SERVER:/PATH/TO/EXPORTED_FS /mnt_point nfs defaults,_netdev 0 0
检查输出目录所使用的选项
在配置文件/etc/exports中,即使在命令行中只设置了一两个选项,但在真正输出目录时,实际上还带有很多默认的选项。通过查看/var/lib/nfs/etab文件,可以看到具体使用了何选项
[root@yc1 ~]# cat /var/lib/nfs/etab
NFS安装与使用
#yc1
//安装nfs rpcbind
[root@yc1 ~]# yum -y install nfs-utils rpcbind
//关闭防火墙
[root@yc1 ~]# systemctl stop firewalld
//创建需要共享的abc文件
[root@yc1 ~]# mkdir -p /yqh/file
[root@yc1 ~]# cd /yqh/file/
[root@yc1 file]# touch abc
//配置NFS服务端配置文件,此文件用于定义共享的目录及权限
[root@yc1 ~]# vim /etc/exports
/yc/file 192.168.23.141 *(rw)
//启动服务
[root@yc1 ~]# systemctl enable --now nfs-server
[root@yc1 ~]# systemctl enable --now rpcbind
#yc2
//安装showmount命令
[root@yc2 ~]# yum -y install showmount
//关闭防火墙
[root@yc2 ~]# systemctl stop firewalld
//显示NFS服务器列表
[root@yc2 ~]# showmount -e 192.168.23.140
Export list for 192.168.23.140:
/yc/file (everyone)
验证
[root@yc2 ~]# mount 192.168.100.1:/yqh /opt
//查看目录,挂载完成,共享文件成功
[root@yc2 ~]# cd /opt
[root@yc2 opt]# ls
file
[root@yc2 opt]# cd file/
[root@yc2 file]# ls
abc
[root@yc2 file]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 883M 0 883M 0% /dev
tmpfs 901M 0 901M 0% /dev/shm
tmpfs 901M 8.6M 892M 1% /run
tmpfs 901M 0 901M 0% /sys/fs/cgroup
/dev/mapper/rhel-root 17G 1.5G 16G 9% /
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 181M 0 181M 0% /run/user/0
/dev/sr0 7.9G 7.9G 0 100% /mnt
192.168.23.140:/yc 17G 2.1G 15G 13% /opt