NFS是主流异构平台的共享文件系统之一,能够支持在不同类型的系统之间通过网络进行文件共享,允许一个系统在网络上与他人共享目录和文件 。NFS传输协议用于服务器和客户机之间的文件访问和共享通信,从而使客户机进程访问保存在存储设备上的数据,挂载成功的情况下,在客户机挂载的目录中操作,如增删改文件或目录,服务器也同样生效 。以下就是NFS的搭建方式和遇到的问题分享 。
一,环境准备VMware创建两台虚拟机,我选择的是centos7,如果需要新创建虚拟机,按照网上的教程 , 编辑/etc/sysconfig/network-scripts/ifcfg-ens33文件,设置虚拟机的ip固定 。我主备的环境是服务器端:192.168.229.129,客户机端:192.168.229.130 。尽量让两个版本一致,不一致的,比如服务器端是centos8,就出现了奇奇怪怪的问题,后面再详细说一下 。
文章插图
二,分别在两台机器安装rpcbind、nfs-utils因为centos7也算是比较老的版本了,而且我选择的镜像也比较简单,这两个服务都没有安装,通过yum命令来做 , 即 yum -y install rpcbind nfs-utils 。如果新环境yum有问题,ping www.baidu.com 等不行,也许是dns的解析文件没有配置,我做了如下配置 , 修改/etc/resolv.conf,两个地址是windows命令行使用ipconfig -all查询的本地电脑的dns解析地址 。
文章插图
文章插图
三,服务器端创建要共享的目录,并设置权限为777mkdir /data/share/chmod 755 -R /data/share/
四,配置NFS配置nfs的配置文件是 /etc/exports , vi /etc/exports后,在配置文件中加入一行:/data/share/ *(rw,no_root_squash,no_all_squash,sync)配置可以以ip/端口或者通配为*,ip和端口是客户端的,意思是允许共享的客户端,我为了避免更多的坑 , 就通配了*,()中的几个参数分别是:rw 表示设置目录可读写 。no_root_squash NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限 。no_all_squash 不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都不会拥有匿名用户权限 。sync 表示数据会同步写入到内存和硬盘中,相反 rsync 表示数据会先暂存于内存中,而非直接写入到硬盘中 。如果有多个共享目录配置,则使用多行,一行一个配置 。保存好配置文件后 , 需要执行 exportfs -r 使配置立即生效.
文章插图
五 , 防火墙相关配置配置文件是 /etc/sysconfig/nfs,编辑的话把以下几个插入,实际使用时,不用配置这几个,防火墙等等的关闭了或者放开的比较宽,也能正常互访 。RQUOTAD_PORT=1001LOCKD_TCPPORT=30001LOCKD_UDPPORT=30002MOUNTD_PORT=1002配置防火墙使用以下几个命令添加nfs相关端口:firewall-cmd --zone=public --add-port=111/tcp --add-port=111/udp --add-port=2049/tcp --add-port=2049/udp --add-port=1001/tcp --add-port=1001/udp --add-port=1002/tcp --add-port=1002/udp --add-port=30001/tcp --add-port=30002/udp --permanent重新加载防火墙配置:firewall-cmd --reload
六,启动服务按顺序启动rpcbind和nfs服务,(此顺序不能颠倒,否则后续可能会报错):systemctl start rpcbindsystemctl start nfs(centos7)systemctl start nfs-server(centos8)加入开机启动:systemctl enable rpcbindsystemctl enable nfs(centos7)systemctl enable nfs-server(centos8)nfs服务启动后,可以使用命令 rpcinfo -p 查看端口是否生效 。服务器启动后,我们可以使用 showmount 命令来查看服务端(本机)是否可连接:服务器端执行 showmount -e localhost
文章插图
客户机端执行showmount -e 192.168.229.129如果showmount 命令不可用,则可能是客户端忘记装nfs-utils了 , 用yum安装即可 。
七,客户机执行挂载命令客户机创建需要挂载的本地目录,并赋权777mkdir /mnt/sharechmod -R 777 /mnt/sharemount -t nfs 192.168.229.129:/data/share /mnt/share/ -o nolock,nfsvers=3,vers=3如果没有报错提示的话,执行df -h命令查看,如果显示文件系统是服务端ip:/目录 , 容量也对应上了服务器的用量 , 则表示挂载成功了,在本地目录/mnt/share执行ls -l 可以看到服务的/data/share中的目录和文件,前提是/data/share在挂载前已经有数据 。再用touch命令创建几个文件,服务器创建的,客户机会有,客户机创建的 , 服务器也有,表示一切顺利 。也可能出现挂载显示成功,数据不同步的情况,后面再详细分析可能性 。
推荐阅读
- 二、python基本数据类型
- FTP文本传输协议
- Go | 基本数据类型的相互转换
- 一 Redis数据结构-Redis的数据存储及String类型的实现
- Oracle数据库的两种授权收费方式介绍!
- python3使用mutagen进行音频元数据处理
- 利用inotify和rsync服务实现数据实时同步
- 使用LEFT JOIN 统计左右存在的数据
- Redis 01: 非关系型数据库 + 配置Redis
- Redis 02: redis基础知识 + 5种数据结构 + 基础操作命令