一、NFS 介绍
NFS(Network File System)是一种分布式文件系统协议,用于在网络上共享文件。它最初由 Sun Microsystems 开发,现在已成为许多操作系统的标准功能。 NFS允许多个计算机之间共享文件系统,使得文件在多个计算机之间移动和共享变得更加容易。通过NFS,一个计算机可以将其文件系统中的目录和文件共享给其他计算机,这些计算机可以像本地文件一样访问这些目录和文件。 NFS的工作原理是,将文件系统挂载到客户端计算机上,使得客户端计算机可以像访问本地文件系统一样访问远程文件系统。NFS客户端将文件访问请求发送到NFS服务器,NFS服务器将请求处理后将数据返回给客户端。 NFS的优点包括易于安装和使用,支持多种操作系统和文件系统类型,以及可扩展性和可靠性。它的缺点包括安全性问题和性能问题,尤其是在高负载环境中。
存储的种类三种存储方式:DAS(Direct Attach STorage)、SAN(Storage Area Network)、NAS(Network Attach Storage)三种存储类型:块存储、文件存储、对象存储
二、NFS 工作流程
NFS服务包含的内容:
1、NFS服务(有很多进程和端口),把自己的端口告诉RPC。
2、RPC服务(对外固定端口111)
- 启动RPC服务,这是NFS依赖的服务,必须先启动。
启动NFS服务。启动后会告诉RPC服务自己有哪些端口号可用。
客户端发起NFS服务请求。由于NFS服务的端口号不确定,所以NFS客户端需要先请求RPC服务(固定端口号111),RPC服务收到请求以后,会查询可用的端口号。
RPC查询到可用端口以后,会返回客户端一个可用的端口号。
客户端拿到端口号以后,就拿着这个端口号去请求NFS服务,实现数据读写。
三、搭建部署
1.实验环境
服务端:nfs-server 192.168.246.160 客户端:web1 192.168.246.161 # 永久关闭防火墙和SELinux systemctl stop firewalld systemctl disable firewalld sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config setenforce 0
2. nfs-server 操作
[root@nfs-server ~]# yum -y install rpcbind [root@nfs-server ~]# yum -y install nfs-utils [root@nfs-server ~]# systemctl start nfs [root@nfs-server ~]# systemctl start rpcbind [root@nfs-server ~]# mkdir /opt/nfs_dir [root@nfs-server ~]# echo "test" >> /opt/nfs_dir/test.txt [root@nfs-server ~]# vim /etc/exports /opt/nfs_dir 192.168.188.0/24(rw,no_root_squash,sync)
ro:共享目录只读; rw:共享目录可读可写; all_squash:所有访问用户都映射为匿名用户或用户组; no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组; root_squash(默认):将来访的root用户映射为匿名用户或用户组; no_root_squash:来访的root用户保持root帐号权限; anonuid=:指定匿名访问用户的本地用户UID,默认为nfsnobody(65534); anongid=:指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534); secure(默认):限制客户端只能从小于1024的tcp/ip端口连接服务器; insecure:允许客户端从大于1024的tcp/ip端口连接服务器; sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性; async:将数据先保存在内存缓冲区中,必要时才写入磁盘; wdelay(默认):检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率; no_wdelay:若有写操作则立即执行,应与sync配合使用; subtree_check(默认) :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限; no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率
[root@nfs-server ~]# systemctl restart nfs-server [root@nfs-server ~]# systemctl enable nfs-server
3.web1 客户端操作
[root@web1 ~]# yum -y install rpcbind [root@web1 ~]# yum -y install nfs-utils [root@web1 ~]# mkdir /opt/nfs_dir [root@web1 ~]# mount -t nfs 192.168.188.145:/opt/nfs_dir /opt/nfs_dir [root@web1 ~]# ls /opt/nfs_dir/ test.txt 制作开机挂载 [root@web1 ~]# vim /etc/fstab 192.168.188.145:/opt/nfs_dir /opt/nfs_dir nfs defaults 0 0 [root@web1 ~]# mount -a