centos7.9系统部署NFS详细流程—2023.04

news/2024/10/22 13:17:25/

文章目录

      • NFS与RPC关系
      • 前提
      • 关闭防火墙和selinux
      • 安装 NFS 和 RPC
      • 测试
      • 取消挂载

NFS与RPC关系

简单点可以这么理解,RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动。每启动一个功能就会启用一些端口来传输数据,因此NFS的功能所对应的端口才没有固定,而是采用随机取用一些未被使用的小于724的端口来作为传输之用。但如此一来又造成客户端要连接服务器时的困扰,因为客户端要知道服务器端的相关端口才能够联机,

此时我们需要远程过程调用(RPC)的服务。RPC最主要的功能就是指定每个NFS功能所对应的端口号,并且回报给客户端,让客户端可以连接到正确的端口上。当服务器在启动NFS时会随机选用数个端口,并主动地向RPC注册。因此RPC可以知道每个端口对应的NFS功能。然后RPC固定使用端口111来监听客户端的请求并回报客户端正确的端口,所以可以让NFS的启动更为容易。

正因如此,启动NFS之前,要先启动RPC;否则NFS会无法向RPC注册。另外,重新启动RPC时原本注册的数据会不见,因此RPC重新启动后它管理的所有程序都需要重新启动以重新向RPC注册。
在这里插入图片描述
当客户端有NFS文件要存取请求时,它如何向服务器端要求数据?

(1)客户端会向服务器端的RPC(port 111)发出NFS文件存取功能的询问请求。
(2)服务器端找到对应的已注册的NFS daemon端口后会回报给客户端。
(3)客户端了解正确的端口后,就可以直接与NFS守护进程来联机。

由于NFS的各项功能都必须要向RPC注册,因此RPC才能了解NFS服务的各项功能的port number、PID和NFS在主机所监听的IP等,而客户端才能够通过RPC的询问找到正确对应的端口。即NFS必须要有RPC存在时才能成功地提供服务,因此NFS实际上是RPC Server的一种。

前提

部署nfs需要提前准备好2台服务器,一台做为服务端,一台做为客户端
服务端:192.168.2.245
客户端:192.168.2.248

关闭防火墙和selinux

  1. 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
  1. 关闭SELinux
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config

安装 NFS 和 RPC

1. 所有主机操作

# 安装nfs与rpc
yum install -y nfs-utils rpcbind
# 查看是否安装成功
rpm -qa | grep nfs
rpm -qa | grep rpcbind
[root@k8s-nfs ~]# rpm -qa | grep nfs
libnfsidmap-0.25-19.el7.x86_64
nfs-utils-1.3.0-0.68.el7.2.x86_64
[root@k8s-nfs ~]# rpm -qa | grep rpcbind
rpcbind-0.2.0-49.el7.x86_64

2. 服务端配置操作——服务端192.168.2.245

# 创建共享存储文件夹
mkdir -p /nfs/data
#配置nfs
echo "/nfs/data *(rw,sync,no_root_squash)" >> /etc/exports  #表示所有客户端可挂载
#### 说明
# 输入以下内容,格式为:nfs共享目录 nfs客户端地址1(param1, param2,...) nfs客户端地址2(param1, param2,...)
# 如: /nfs/data 10.0.0.200/24(rw,async,no_root_squash)
# 固定网段所有IP可挂载
echo "/nfs/data 10.0.0.*(rw,sync,no_root_squash)" >> /etc/exports
# 固定网段固定IP区间可挂载
echo "/nfs/data 10.0.0.200/24(rw,sync,no_root_squash)" >> /etc/exports
# 所有客户端可挂载
echo "/nfs/data *(rw,sync,no_root_squash)" >> /etc/exports
# 1.使NFS配置生效
exportfs -r
# 2.设置开机自启动
systemctl enable rpcbind && systemctl start rpcbind
systemctl enable nfs && systemctl restart nfs
# 3.查看服务状态
systemctl status rpcbind
systemctl status nfs
# 4.服务器注册端口:111
rpcinfo -p   # 如果显示rpc 服务器注册的端口列表(端口:111),则启动成功
# 5.查看是否成功和可用的nfs地址:
[root@k8s-master1 ~]# showmount -e localhost
Export list for localhost:
/nfs/data *
# 6.看有哪些参数生效
[root@k8s-master1 ~]# cat /var/lib/nfs/etab
/nfs/data       *(rw,sync,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,no_root_squash,no_all_squash)

参数说明:
ro:只读设置,这样 NFS 客户端只能读、不能写(默认设置);
rw:读写设置,NFS 客户端可读写;
sync:将数据同步写入磁盘中,效率低,但可以保证数据的一致性(默认设置);
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;如果服务器重新启动,这种行为可能会导致数据损坏,但效率
root_squash:当客户端用 root 用户访问该共享文件夹时,将 root 用户映射成匿名用户(默认设置);
no_root_squash:客户端的 root 用户不映射。这样客户端的 root 用户与服务端的 root 用户具有相同的访问权限,这可能会带来严重的安全影响。没有充分的理由,不应该指定此选项;
all_squash:客户端所有普通用户及所属组都映射为匿名用户及匿名用户组;「推荐设置」
no_all_squash:客户端所有普通用户及所属组不映射(默认设置);
subtree_check:如果共享,如:/usr/bin之类的子目录时,强制NFS检查父目录的权限;
no_subtree_check:即使共享 NFS 服务端的子目录时,nfs服务端也不检查其父目录的权限,这样可以提高效率(默认设置)
secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
no_wdelay:若有写操作则立即执行,当使用async时,无需此设置;
anonuid=xxx:将远程访问的所有用户主都映射为匿名用户主账户,并指定该匿名用户主为本地用户主(UID=xxx);
anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组为本地用户组(GID=xxx);

3. 客户端操作——192.168.2.248

# 1.创建挂载的文件夹
mkdir -p /data/nfs
# 2.查看挂载ip
[root@k8s-node1 nfs]# showmount -e 192.168.2.245  # 服务端IP
Export list for 192.168.2.245:
/nfs/data *# 3.挂载
mount -t nfs 192.168.2.245:/nfs/data /data/nfs
# 其中:
# mount:表示挂载命令
# -t:表示挂载选项
# nfs:挂载的协议
# 10.0.0.200:nfs服务器的ip地址
# /nfs/data:nfs服务器的共享目录
# /data/nfs:本机客户端要挂载的目录# 4.查看磁盘
df -h
Filesystem                Size  Used Avail Use% Mounted on
devtmpfs                  471M     0  471M   0% /dev
tmpfs                     487M     0  487M   0% /dev/shm
tmpfs                     487M  8.4M  478M   2% /run
tmpfs                     487M     0  487M   0% /sys/fs/cgroup
/dev/sda3                  78G  5.1G   73G   7% /
/dev/sda1                 297M  152M  145M  52% /boot
tmpfs                      98M   12K   98M   1% /run/user/42
tmpfs                      98M     0   98M   0% /run/user/0
192.168.2.245:/nfs/data   50G  4.2G   46G   9% /root/data/nfs
# 查看是否挂载成功,客户端执行
[root@k8s-node1 nfs]# cat /etc/fstab
#192.168.2.245:/nfs/data /data/nfs nfs defaults 1 1

测试

测试挂载:
可以进入客户端的/data/nfs目录,创建一个文件,然后去nfs服务器(服务端)查看/nfs/data目录中是否有该文件,若有则共享成功。反之在nfs服务器操作/nfs目录,查看本机客户端的目录是否共享。

#客户端:
touch a.txt
echo "11111" >>a.txt
服务端查看是否同步#服务端
echo "222222" >>a.txt
客户端查看是否同步

数据同步说明挂载成功

取消挂载

  1. 查看挂载情况df -h
    在这里插入图片描述

  2. 取消挂载:
    注意:需要在客户端执行,并且需要退出挂载路径,回到根目录下,否则就会报错umount.nfs4: /root/data/nfs: device is busy

# 方法:
cd 
umount /root/data/nfs    #/root/data/nfs 为客户端挂载目录

在这里插入图片描述


http://www.ppmy.cn/news/46327.html

相关文章

EasyCVR平台基于GB28181协议的语音对讲配置操作

EasyCVR基于云边端协同,具有强大的数据接入、处理及分发能力,平台可支持海量视频的轻量化接入与汇聚管理,可提供视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联等功能…

C++中使用命名空间时的注意事项

C中的命名空间是一种将全局作用域分割成更小的区域的机制,可以用于避免名称冲突和提高代码的可读性。在C中,命名空间可以包含变量、函数、类和结构体等类型,可以在头文件中使用命名空间来组织代码。但是,在头文件中使用命名空间时…

线程安全的锁策略,你到底忽略了多少?

线程安全的锁策略,你到底忽略了多少? 文章目录 线程安全的锁策略,你到底忽略了多少?一,🔰乐观锁vs悲观锁二,📍轻量级锁 vs 重量级锁三,📍自旋锁 vs 挂起等待锁…

基因家族分析及SCI写作技巧

详情点击链接:基因家族分析及SCI写作技巧 一,文献研读和方法​ 1.基因家族分析文献; 2.基因组学分析技巧; 3.生物信息大数据分析二,基因家族注释文件​​​​​​​ 1.候选基因下载方式; 2.文件解读&a…

为什么老年人会经常性出现吃饭呛咳的情况 什么因素导致的

其实很多老年人在吃饭或是喝水的时候,都存在吞咽困难的问题,呛咳或者是忘了如何下咽。其实在老年人群体当中,这也是一种较为常见的现象,但是很多人都把这种现象当回事。 对于呛咳的现象是很好判断的,在家里老人喝水或是…

linux安装rabbitMq

一、安装Erlang 1、下载Erlang Erlang和RabbitMQ版本对照:RabbitMQ Erlang Version Requirements — RabbitMQ 下载地址:https://packagecloud.io/rabbitmq/erlang/packages/el/7 2、安装 Erlang 首先将下载好的文件上传到服务器,创建一…

Linux做代理服务器实现步骤

Linux做代理服务器 最简单的做法,用RedHat9.0为例 找一台能装上Linux的机器最少要有两块网卡 1.安装Linux,不管是在图形,还是文体下都可以,选择最小安装,在安装的时候可以先配置一下外网的IP和DNS(不设也行)&#xf…

GPT-3.5还没研究明白,GPT-4又来了,chatGPT会进化成什么样?

基于GPT-3.5的chatGPT热度才稍稍减退没多久,GPT-4又来了,文新一言的发布会也槽点满满,差距似乎越来越大了。 chatGPT到底厉害在哪?为什么突然就爆火了呢? 它的爆火,一方面,和它的出现形态有关…