文章目录
- 系列文章目录
- 前言
- 一、共享文件
- 1.建立共享文件
- 2.安装服务
- 3.防火墙添加服务
- 4.编写exports
- 5.其他虚拟机挂载访问
- 6.开机自动挂载
- 二、使用时自动挂载
- 1.安装工具
- 2.共享share2
- 3.编写配置文件
- 总结
前言
这次博客记录nfs文件系统,也可以理解为是一种服务,举个例子,在实际生产中,web服务和服务所产生的数据会分别存储在两台计算机中,因为数据远比服务重要,假设他们两个存储在同一台计算机中,一旦计算机崩溃,可能两个都丢了,如果分开存储,web服务崩溃重装就可以,可以将数据保全,但是这样需要两台服务器的文件共享,这就是nfs服务。
再说一个例子,百度可能很多的web服务器,如果每个服务器都存一份数据,冗余相当高,而且可能数据不一致,所以只需要多个服务器读取同一份数据文件即可。
这里给大家放一些概念性的东西,方便下面做实验。
NFS(Network Files System),网络文件系统是1980年由SUN发展出来在UNIX&Linux系统间实现磁盘文件共享的一种方法。它是一种文件系统协议:支持应用程序在客户端通过网络存取位于服务器磁盘中的数据。NFS的基本原则是让不同的客户端及服务器通过一组RPCs共享相同的文件系统,它独立于操作系统,允许不同硬件及操作系统的系统共同进行文件的共享。
虽然NFS可以在网络中进行文件共享,但NFS在设计时并没有提供数据传输的功能。需要借助RPC(Remote Procedure Calls,远程过程调用)。RPC定义了一种进程间通过网络进行交互通信的机制,它允许客户端进程通过网络向远程服务进程请求服务,而不需要了解服务器底层的通信协议详细信息。
RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。
当一个RPC连接建立开始阶段,客户端建立过程调用,将调用参数发送到远程服务器进程,并等待相应。请求到达时,服务器通过客户端请求的服务,调用指定的程序。并将结果返回客户端。当RPC调用结束,客户端程序将继续进行下一步的通信操作。
rpcinfo -p 192.168.100.1 #每次重启nfs服务,端口会随机变化
NFS依赖RPC与外部通信,为保证NFS服务正常工作,其需要在RPC注册相应的服务端口信息,这样客户端向服务器的RPC提交访问某个服务的请求时,服务器才能够正确作出相应。
注册NFS服务时,需要先开启RPC,才能保证NFS注册成功。并且如果RPC服务重新启动,其保存的信息将丢失,需重新启动NFS服务以注册端口信息,否则客户端将无法访问NFS服务器。
nfs-utils 包括基本的NFS命令与监控程序
rpcbind 支持安全NFS RPC服务的连接
NFS系统守护进程
nfsd:它是基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器;
mountd:它是RPC安装守护进程,主要功能是管理NFS的文件系统。当客户端顺利通过nfsd登录NFS服务器后,在使用NFS服务所提供的文件前,还必须通过文件使用权限的验证。它会读取NFS的配置文件/etc/exports来对比客户端权限。
rpcbind:主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,rpcbind会将所管理的与服务对应的端口提供给客户端,从而使客户可以通过该端口向服务器请求服务。
客户端常用的指定方式
指定ip地址的主机:192.168.0.200
指定子网中的所有主机:192.168.0.0/24 192.168.0.0/255.255.255.0
指定域名的主机:nfs.cnhzz.com
指定域中的所有主机:.cnhzz.com
所有主机:
选项:
选项用来设置输出目录的访问权限、用户映射等。
NFS主要有3类选项:
访问权限选项
设置输出目录只读:ro
设置输出目录读写:rw
用户映射选项
all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
no_all_squash:与all_squash取反(默认设置);
root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);
no_root_squash:与rootsquash取反;
anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);
其它选项
secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
no_wdelay:若有写操作则立即执行,应与sync配合使用;
subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
一、共享文件
1.建立共享文件
我现在在根目录下建立两个文件用作分享,并且随便写点文件,操作不解释。
2.安装服务
这个nfs需要安装两个包,但这两个包都是默认安装的,这里说一下就行。
3.防火墙添加服务
前边说过,防火墙要开着做以后的实验。
这里需要添加三个服务,每个服务的作用前边概念里都有,不解释了。
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=mountd
firewall-cmd --reload
4.编写exports
/share1 *(rw,no_root_squash,sync,no_wdelay)
共享share1 给所有连接过来的计算机 可读可写 不压制root,写操作立即执行,不等待。
重启服务。
systemctl restart nfs-server
5.其他虚拟机挂载访问
这条命令可以查看改IP所共享的文件夹
showmount -e 192.168.100.1
建立挂载点,然后挂载。
mkdir /mnt/nfs1
mount 192.168.100.1:/share1 /mnt/nfs1/
可读可写
6.开机自动挂载
向/etc/fstable增加一行
然后reboot测试
二、使用时自动挂载
1.安装工具
这里是在chao2安装
yum install autofs
2.共享share2
/share2 192.168.100.0/24(ro)
重启服务,查看效果
3.编写配置文件
现在在chao2编写文件
先创建挂载点
编写配置文件,这里要编写两个文件。
vim /etc/auto.master
在最后面加一行内容
/mnt/nfs2 /etc/auto.nfs2 --timeout=5
前边是挂载点,后边是挂载规则所在的路径,最后是超时限制,单位是秒,意思是5秒钟不使用自动断掉挂载。
编写第二个配置文件。
vim /etc/auto.nfs2
添加内容
重启服务
现在就自动挂载了,然后推出目录等待几秒,就会自动断开。
总结
这次的内容基本就这些,多说一点关机的时候建议先断掉连接在关机。